@mastra/server 1.80.0-alpha.1 → 1.80.0-alpha.3
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/dist/{a2a-qQkFvE8f.cjs → a2a-BKtK_s5o.cjs} +2 -2
- package/dist/{a2a-qQkFvE8f.cjs.map → a2a-BKtK_s5o.cjs.map} +1 -1
- package/dist/{a2a-wv2WQ3IG.js → a2a-DKGBctKT.js} +2 -2
- package/dist/{a2a-wv2WQ3IG.js.map → a2a-DKGBctKT.js.map} +1 -1
- package/dist/{agent-builder-DFZjeOkA.js → agent-builder-C-U5USc5.js} +4 -4
- package/dist/{agent-builder-DFZjeOkA.js.map → agent-builder-C-U5USc5.js.map} +1 -1
- package/dist/{agent-builder-C8F4tCwd.cjs → agent-builder-us2nwcWc.cjs} +4 -4
- package/dist/{agent-builder-C8F4tCwd.cjs.map → agent-builder-us2nwcWc.cjs.map} +1 -1
- package/dist/{agents-CcY0JTDF.cjs → agents-AyHEkc2F.cjs} +4 -3
- package/dist/agents-AyHEkc2F.cjs.map +1 -0
- package/dist/{agents-CPYFVJak.cjs → agents-B1EiIdRs.cjs} +3 -2
- package/dist/agents-B1EiIdRs.cjs.map +1 -0
- package/dist/{agents-DaLwtv9x.js → agents-BYE5Dmfk.js} +4 -3
- package/dist/agents-BYE5Dmfk.js.map +1 -0
- package/dist/{agents-BjdJ-Tyf.js → agents-D1-fgNeb.js} +3 -2
- package/dist/agents-D1-fgNeb.js.map +1 -0
- package/dist/{api-schema-manifest-B1WyInlF.js → api-schema-manifest-A066IsPX.js} +2 -2
- package/dist/{api-schema-manifest-B1WyInlF.js.map → api-schema-manifest-A066IsPX.js.map} +1 -1
- package/dist/{api-schema-manifest-CxrGchcx.cjs → api-schema-manifest-BaF6TE9d.cjs} +2 -2
- package/dist/{api-schema-manifest-CxrGchcx.cjs.map → api-schema-manifest-BaF6TE9d.cjs.map} +1 -1
- package/dist/{conversations-B5RJ2jcO.js → conversations-D-ew5IXn.js} +2 -2
- package/dist/{conversations-B5RJ2jcO.js.map → conversations-D-ew5IXn.js.map} +1 -1
- package/dist/{conversations-B16oVu_1.cjs → conversations-DzuWI3w-.cjs} +2 -2
- package/dist/{conversations-B16oVu_1.cjs.map → conversations-DzuWI3w-.cjs.map} +1 -1
- package/dist/{dist-6ZwWUUBQ.js → dist-5TAg2f91.js} +97 -33
- package/dist/{dist-6ZwWUUBQ.js.map → dist-5TAg2f91.js.map} +1 -1
- package/dist/{dist-bT2343kX.cjs → dist-C9Jwt1f0.cjs} +1 -1
- package/dist/{dist-U8ZBR8z5.cjs → dist-CukR8zi9.cjs} +97 -33
- package/dist/{dist-U8ZBR8z5.cjs.map → dist-CukR8zi9.cjs.map} +1 -1
- package/dist/dist-Dgae8Imb.js +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{editor-builder-Bt26tVKI.cjs → editor-builder-BSBHrTzY.cjs} +2 -2
- package/dist/{editor-builder-Bt26tVKI.cjs.map → editor-builder-BSBHrTzY.cjs.map} +1 -1
- package/dist/{editor-builder-D_OUA9P6.cjs → editor-builder-Bibw1X4q.cjs} +3 -3
- package/dist/{editor-builder-D_OUA9P6.cjs.map → editor-builder-Bibw1X4q.cjs.map} +1 -1
- package/dist/{editor-builder-DWMgkYK-.js → editor-builder-DCrTMwA4.js} +2 -2
- package/dist/{editor-builder-DWMgkYK-.js.map → editor-builder-DCrTMwA4.js.map} +1 -1
- package/dist/{editor-builder-DzGLnYcJ.js → editor-builder-Dq03QZzH.js} +3 -3
- package/dist/{editor-builder-DzGLnYcJ.js.map → editor-builder-Dq03QZzH.js.map} +1 -1
- package/dist/{helpers-DvzrUzqY.cjs → helpers-CewFtCva.cjs} +3 -3
- package/dist/helpers-CewFtCva.cjs.map +1 -0
- package/dist/{helpers-gCkmhB9x.js → helpers-CxSa9O3X.js} +3 -3
- package/dist/helpers-CxSa9O3X.js.map +1 -0
- package/dist/{plans-TpICqvFU.js → plans-CKbStbWl.js} +3 -3
- package/dist/{plans-TpICqvFU.js.map → plans-CKbStbWl.js.map} +1 -1
- package/dist/{plans-DVzqRj-i.cjs → plans-DZAJG1Et.cjs} +3 -3
- package/dist/{plans-DVzqRj-i.cjs.map → plans-DZAJG1Et.cjs.map} +1 -1
- package/dist/{probe-image-size-BYv_-JV7.js → probe-image-size-DBmo2MAe.js} +2 -2
- package/dist/{probe-image-size-BYv_-JV7.js.map → probe-image-size-DBmo2MAe.js.map} +1 -1
- package/dist/{probe-image-size-mZ2ldE98.cjs → probe-image-size-l1uuhbob.cjs} +2 -2
- package/dist/{probe-image-size-mZ2ldE98.cjs.map → probe-image-size-l1uuhbob.cjs.map} +1 -1
- package/dist/{responses-CP2UYT8z.cjs → responses-BubMB79l.cjs} +2 -2
- package/dist/{responses-CP2UYT8z.cjs.map → responses-BubMB79l.cjs.map} +1 -1
- package/dist/{responses-CnQoSpBc.js → responses-jiVC-1lx.js} +2 -2
- package/dist/{responses-CnQoSpBc.js.map → responses-jiVC-1lx.js.map} +1 -1
- package/dist/{routes-OsQV338J.cjs → routes-D6bDACPd.cjs} +12 -12
- package/dist/{routes-OsQV338J.cjs.map → routes-D6bDACPd.cjs.map} +1 -1
- package/dist/{routes-DZ2QfTnF.js → routes-DKV9oxFW.js} +12 -12
- package/dist/{routes-DZ2QfTnF.js.map → routes-DKV9oxFW.js.map} +1 -1
- package/dist/{scores-DFFS3Zxo.js → scores-BWTo-_L5.js} +2 -2
- package/dist/{scores-DFFS3Zxo.js.map → scores-BWTo-_L5.js.map} +1 -1
- package/dist/{scores-DwiL1Nk8.cjs → scores-C8XPZcwt.cjs} +2 -2
- package/dist/{scores-DwiL1Nk8.cjs.map → scores-C8XPZcwt.cjs.map} +1 -1
- package/dist/server/auth/index.cjs +1 -1
- package/dist/server/auth/index.js +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-controller.cjs +2 -0
- package/dist/server/handlers/agent-controller.cjs.map +1 -1
- package/dist/server/handlers/agent-controller.d.ts +2 -0
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +2 -0
- package/dist/server/handlers/agent-controller.js.map +1 -1
- package/dist/server/handlers/agents.cjs +1 -1
- package/dist/server/handlers/agents.d.ts +2 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/conversations.cjs +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.d.ts +2 -0
- package/dist/server/handlers/editor-builder.d.ts.map +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +1 -1
- package/dist/server/handlers/stored-agent-favorites.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +1 -1
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +1 -1
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/system.cjs +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +9 -9
- package/dist/server/handlers.js +9 -9
- package/dist/server/schemas/agents.d.ts +2 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/editor-builder.d.ts +1 -0
- package/dist/server/schemas/editor-builder.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +2 -2
- package/dist/server/schemas/index.js +2 -2
- package/dist/server/server-adapter/index.cjs +2 -2
- package/dist/server/server-adapter/index.js +2 -2
- package/dist/server/server-adapter/routes/editor-builder.d.ts +2 -0
- package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
- package/dist/{tools-BrO42c5i.js → tools--oMljfqq.js} +3 -3
- package/dist/{tools-BrO42c5i.js.map → tools--oMljfqq.js.map} +1 -1
- package/dist/{tools-B2fMQuwp.cjs → tools-Ci71xxGP.cjs} +3 -3
- package/dist/{tools-B2fMQuwp.cjs.map → tools-Ci71xxGP.cjs.map} +1 -1
- package/dist/{workflow-builder-D-YMkDHC.js → workflow-builder-BoI-XXsT.js} +3 -3
- package/dist/{workflow-builder-D-YMkDHC.js.map → workflow-builder-BoI-XXsT.js.map} +1 -1
- package/dist/{workflow-builder-DtXcLQoG.cjs → workflow-builder-Dguv4rc0.cjs} +3 -3
- package/dist/{workflow-builder-DtXcLQoG.cjs.map → workflow-builder-Dguv4rc0.cjs.map} +1 -1
- package/dist/{workflows-DN2axrmq.cjs → workflows-5AytZqK_.cjs} +2 -2
- package/dist/{workflows-DN2axrmq.cjs.map → workflows-5AytZqK_.cjs.map} +1 -1
- package/dist/{workflows-CF7e2ST9.js → workflows-D7Oq5On9.js} +2 -2
- package/dist/{workflows-CF7e2ST9.js.map → workflows-D7Oq5On9.js.map} +1 -1
- package/package.json +6 -6
- package/dist/agents-BjdJ-Tyf.js.map +0 -1
- package/dist/agents-CPYFVJak.cjs.map +0 -1
- package/dist/agents-CcY0JTDF.cjs.map +0 -1
- package/dist/agents-DaLwtv9x.js.map +0 -1
- package/dist/dist-qYC51DiT.js +0 -1
- package/dist/helpers-DvzrUzqY.cjs.map +0 -1
- package/dist/helpers-gCkmhB9x.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-D1-fgNeb.js","names":[],"sources":["../src/server/schemas/agents.ts"],"sourcesContent":["import type {\n AgentExecutionOptions,\n PublicStructuredOutputOptions,\n ToolsetsInput,\n ToolsInput,\n} from '@mastra/core/agent';\nimport type { CoreMessageV4 } from '@mastra/core/agent/message-list';\nimport type { ScoringSamplingConfig } from '@mastra/core/evals';\nimport type { OutputType, SystemMessage } from '@mastra/core/llm';\nimport type { ReasoningLevel } from '@mastra/core/loop';\nimport { z } from 'zod/v4';\n\n/**\n * Structural mirror of LoopOptions['modelSettings'] (ai-sdk CallSettings minus\n * abortSignal, plus reasoning). CallSettings is not publicly exported from\n * @mastra/core, so its fields are restated here to keep declaration emit portable.\n */\n/**\n * Structural mirror of LoopOptions['stopWhen'] entries. The ai-sdk StopCondition\n * type is not publicly exported from @mastra/core, so an assignable function\n * shape is used to keep declaration emit portable.\n */\ntype StopConditionArg = (event: unknown) => boolean | PromiseLike<boolean>;\n\ntype ModelSettings = {\n maxOutputTokens?: number;\n temperature?: number;\n topP?: number;\n topK?: number;\n presencePenalty?: number;\n frequencyPenalty?: number;\n stopSequences?: string[];\n seed?: number;\n maxRetries?: number;\n headers?: Record<string, string | undefined>;\n reasoning?: ReasoningLevel;\n};\nimport { tracingOptionsSchema, coreMessageSchema, messageResponseSchema, typedPermissive } from './common';\nimport { defaultOptionsSchema } from './default-options';\n\nexport {\n generateSpeechBodySchema,\n getListenerResponseSchema,\n speakResponseSchema,\n transcribeSpeechBodySchema,\n transcribeSpeechResponseSchema,\n voiceSpeakersResponseSchema,\n} from '@internal/voice/routes';\n\ntype JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\n\nconst jsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ]),\n);\nconst jsonRecordSchema = z.record(z.string(), jsonValueSchema);\n\nconst signalAttributesSchema = z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean(), z.null(), z.undefined()]),\n);\n\nconst baseSignalSchema = z.object({\n id: z.string().optional(),\n createdAt: z.union([z.string(), z.date()]).optional(),\n metadata: jsonRecordSchema.optional(),\n attributes: signalAttributesSchema.optional(),\n});\n\nconst partProviderOptionsSchema = z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional();\n\nconst signalTextPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n providerOptions: partProviderOptionsSchema,\n});\n\nconst signalFilePartSchema = z.object({\n type: z.literal('file'),\n data: z.string(),\n mediaType: z.string(),\n filename: z.string().optional(),\n providerOptions: partProviderOptionsSchema,\n});\n\nconst userMessageSignalContentsSchema = z.union([\n z.string(),\n z.array(z.union([signalTextPartSchema, signalFilePartSchema])),\n]);\n\nconst agentMessageInputObjectSchema = z.object({\n contents: userMessageSignalContentsSchema,\n attributes: signalAttributesSchema.optional(),\n metadata: jsonRecordSchema.optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n});\n\nconst agentMessageInputSchema = z.union([userMessageSignalContentsSchema, agentMessageInputObjectSchema]);\n\nconst agentSignalBaseSchema = baseSignalSchema.extend({\n tagName: z.string().optional(),\n contents: userMessageSignalContentsSchema,\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n});\n\nconst agentSignalSchema = z.discriminatedUnion('type', [\n agentSignalBaseSchema.extend({\n type: z.literal('state'),\n transient: z.never().optional(),\n }),\n agentSignalBaseSchema.extend({\n type: z.enum(['user', 'reactive', 'notification', 'user-message', 'system-reminder']),\n transient: z.boolean().optional(),\n }),\n]);\n\n// Path parameter schemas\nexport const agentIdPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the agent'),\n});\n\n/**\n * Query params for GET /agents/:agentId — controls which stored config version is used for overrides.\n * When `status` and `versionId` are both provided, `versionId` takes precedence.\n * - `status` — 'draft' (latest version) or 'published' (active published version, default).\n * - `versionId` — Resolve with a specific version ID.\n */\nexport const agentVersionQuerySchema = z.object({\n status: z\n .enum(['draft', 'published'])\n .optional()\n .describe(\n 'Which stored config version to resolve: draft (latest version) or published (active version, default). When both status and versionId are provided, versionId takes precedence.',\n ),\n versionId: z\n .string()\n .optional()\n .describe('Specific version ID to resolve. Takes precedence over status when both are provided.'),\n});\n\nexport const agentPlanQuerySchema = agentVersionQuerySchema.extend({\n path: z.string().describe('Relative path to a markdown plan under .mastracode/plans/'),\n});\n\nexport const agentPlanResponseSchema = z.object({\n path: z.string(),\n content: z.string(),\n});\n\nexport const toolIdPathParams = z.object({\n toolId: z.string().describe('Unique identifier for the tool'),\n});\n\nexport const agentRunPathParams = agentIdPathParams.extend({\n runId: z.string().min(1).describe('Unique identifier for the agent run'),\n});\n\nexport const agentToolPathParams = agentIdPathParams.extend({\n toolId: z.string().describe('Unique identifier for the tool'),\n});\n\nexport const agentSkillPathParams = agentIdPathParams.extend({\n skillName: z.string().describe('Name of the skill'),\n});\n\nexport const modelConfigIdPathParams = agentIdPathParams.extend({\n modelConfigId: z.string().describe('Unique identifier for the model configuration'),\n});\n\n/**\n * Schema for serialized processor metadata\n */\nexport const serializedProcessorSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n});\n\n/**\n * Schema for serialized tool with JSON schemas\n */\nexport const serializedToolSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n description: z.string().optional(),\n inputSchema: z.string().optional(),\n outputSchema: z.string().optional(),\n requestContextSchema: z.string().optional(),\n requireApproval: z.boolean().optional(),\n});\n\n/**\n * Schema for serialized workflow with steps\n */\nexport const serializedWorkflowSchema = z.object({\n name: z.string(),\n steps: z\n .record(\n z.string(),\n z.object({\n id: z.string(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n});\n\n/**\n * Schema for serialized agent definition (referenced by other agents)\n */\nexport const serializedAgentDefinitionSchema = z.object({\n id: z.string(),\n name: z.string(),\n});\n\n/**\n * Schema for SystemMessage type\n * Can be string, string[], or various message objects\n */\nconst systemMessageSchema = typedPermissive<SystemMessage>(\n z.union([\n z.string(),\n z.array(z.string()),\n z.unknown(), // CoreSystemMessage or SystemModelMessage\n z.array(z.unknown()),\n ]),\n);\n\n/**\n * Schema for model configuration in model list\n */\nconst modelConfigSchema = z.object({\n id: z.string(),\n enabled: z.boolean(),\n maxRetries: z.number(),\n model: z.object({\n modelId: z.string(),\n provider: z.string(),\n modelVersion: z.string(),\n }),\n});\n\nconst serializedSkillSchema = z.object({\n name: z.string(),\n description: z.string(),\n license: z.string().optional(),\n path: z.string(),\n});\n\nconst agentEditorConfigSchema = z.union([\n z.literal(false),\n z.object({\n instructions: z.boolean().optional(),\n tools: z.union([z.boolean(), z.object({ description: z.boolean().optional() })]).optional(),\n }),\n]);\n\n/**\n * Main schema for serialized agent representation\n */\nexport const serializedAgentSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n instructions: systemMessageSchema.optional(),\n tools: z.record(z.string(), serializedToolSchema),\n agents: z.record(z.string(), serializedAgentDefinitionSchema),\n workflows: z.record(z.string(), serializedWorkflowSchema),\n skills: z.array(serializedSkillSchema),\n workspaceTools: z.array(z.string()),\n browserTools: z.array(z.string()),\n hasBrowser: z.boolean(),\n workspaceId: z.string().optional(),\n inputProcessors: z.array(serializedProcessorSchema),\n outputProcessors: z.array(serializedProcessorSchema),\n provider: z.string().optional(),\n modelId: z.string().optional(),\n modelVersion: z.string().optional(),\n supportsMemory: z.boolean().optional(),\n modelList: z.array(modelConfigSchema).optional(),\n modelListEditable: z\n .boolean()\n .optional()\n .describe('False when the model list comes from a function and cannot be reordered or edited'),\n defaultOptions: defaultOptionsSchema.optional(),\n defaultGenerateOptionsLegacy: z.record(z.string(), z.unknown()).optional(),\n defaultStreamOptionsLegacy: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.string().optional(),\n source: z.enum(['code', 'stored', 'fs']).optional(),\n status: z.enum(['draft', 'published', 'archived']).optional(),\n activeVersionId: z.string().optional(),\n hasDraft: z.boolean().optional(),\n editor: agentEditorConfigSchema.optional(),\n});\n\n/**\n * Schema for agent with ID\n */\nexport const serializedAgentWithIdSchema = serializedAgentSchema.extend({\n id: z.string(),\n});\n\n/**\n * Schema for individual provider information\n */\nexport const providerSchema = z.object({\n id: z.string(),\n name: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n envVar: z.union([z.string(), z.array(z.string())]),\n connected: z.boolean(),\n docUrl: z.string().optional(),\n models: z.array(z.string()),\n modelReleaseDates: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Schema for providers endpoint response\n */\nexport const providersResponseSchema = z.object({\n providers: z.array(providerSchema),\n});\n\nexport type ProviderListItem = z.infer<typeof providerSchema>;\n\n/**\n * Schema for list agents endpoint response\n * Returns a record of agent ID to serialized agent\n */\nexport const listAgentsResponseSchema = z.record(z.string(), serializedAgentSchema);\n\n/**\n * Schema for list tools endpoint response\n * Returns a record of tool ID to serialized tool\n */\nexport const listToolsResponseSchema = z.record(z.string(), serializedToolSchema);\n\n// ============================================================================\n// Agent Execution Body Schemas\n// ============================================================================\n\n/**\n * Schema for agent memory option\n */\nconst agentMemoryOptionSchema = z.object({\n thread: z.union([z.string(), z.object({ id: z.string() }).passthrough()]),\n /**\n * Optional so authenticated setups can rely on the server-derived resource ID\n * (`mapUserToResourceId` sets MASTRA_RESOURCE_ID_KEY in the request context, which\n * takes precedence over this value). Handlers return a 400 when neither the body\n * nor the request context provides a resource ID.\n */\n resource: z.string().optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n readOnly: z.boolean().optional(),\n});\n\n/**\n * Schema for tool choice configuration\n */\nconst toolChoiceSchema = z.union([\n z.enum(['auto', 'none', 'required']),\n z.object({ type: z.literal('tool'), toolName: z.string() }),\n]);\n\n/**\n * Comprehensive body schema for agent generate and stream endpoints\n * Validates common fields while using passthrough for complex nested objects\n *\n * EXCLUDED FIELDS (not serializable):\n * - Callbacks: onStepFinish, onFinish, onChunk, onError, onAbort, prepareStep\n * - Class instances: inputProcessors, outputProcessors\n * - Non-serializable: abortSignal, tracingContext\n */\nexport const agentExecutionBodySchema = z\n .object({\n // REQUIRED\n messages: z.union([\n z.array(coreMessageSchema), // Array of messages\n z.string(), // Single user message shorthand\n ]),\n\n // Message Configuration\n instructions: systemMessageSchema.optional(),\n system: systemMessageSchema.optional(),\n // ModelMessage[] at runtime; handlers cast since the AI SDK ModelMessage\n // type is not portable for declaration emit.\n context: z.array(coreMessageSchema).optional(),\n\n // Memory & Persistence\n memory: agentMemoryOptionSchema.optional(),\n runId: z.string().optional(),\n savePerStep: z.boolean().optional(),\n\n // Request Context (handler-specific field - merged with server's requestContext)\n requestContext: z.record(z.string(), z.unknown()).optional(),\n\n // Version overrides for sub-agents (and future primitives)\n versions: z\n .object({\n agents: z\n .record(\n z.string(),\n z.union([z.object({ versionId: z.string() }), z.object({ status: z.enum(['draft', 'published']) })]),\n )\n .optional(),\n defaultStatus: z.enum(['draft', 'published']).optional(),\n })\n .optional(),\n\n // Execution Control\n maxSteps: z.number().optional(),\n // Stop conditions are functions and cannot be validated by zod.\n stopWhen: typedPermissive<StopConditionArg | StopConditionArg[]>(z.unknown()).optional(),\n\n // Model Configuration\n model: z.string().optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n modelSettings: typedPermissive<ModelSettings>(z.unknown()).optional(),\n\n // Tool Configuration\n activeTools: z.array(z.string()).optional(),\n // Tool entries contain execute functions and cannot be validated by zod.\n toolsets: typedPermissive<ToolsetsInput>(z.record(z.string(), z.unknown())).optional(),\n clientTools: typedPermissive<ToolsInput>(z.record(z.string(), z.unknown())).optional(),\n toolChoice: toolChoiceSchema.optional(),\n requireToolApproval: z.boolean().optional(),\n\n // Evaluation\n scorers: typedPermissive<Record<string, { scorer: string; sampling?: ScoringSamplingConfig }>>(\n z.union([\n z.record(z.string(), z.unknown()),\n z.record(\n z.string(),\n z.object({\n scorer: z.string(),\n sampling: z.unknown().optional(),\n }),\n ),\n ]),\n ).optional(),\n returnScorerData: z.boolean().optional(),\n\n // Observability\n tracingOptions: tracingOptionsSchema.optional(),\n\n // Structured Output\n // Zod schema, JSON schema, or structured output object — cannot be validated by zod.\n output: typedPermissive<OutputType>(z.unknown()).optional(),\n // The concrete options type cannot be expressed field-by-field because of\n // the fallback discriminated union.\n structuredOutput: typedPermissive<PublicStructuredOutputOptions<Record<string, unknown>>>(\n z.object({\n schema: z.object({}).passthrough(),\n model: z.union([z.string(), z.unknown()]).optional(),\n instructions: z.string().optional(),\n jsonPromptInjection: z.boolean().optional(),\n errorStrategy: z.enum(['strict', 'warn', 'fallback']).optional(),\n fallbackValue: z.unknown().optional(),\n }),\n ).optional(),\n\n // Idle-loop streaming (collapses streamUntilIdle into stream)\n untilIdle: z.union([z.boolean(), z.object({ maxIdleMs: z.number().int().positive().optional() })]).optional(),\n })\n .passthrough(); // Allow additional fields for forward compatibility\n\n/**\n * Legacy body schema for deprecated endpoints that still use threadId/resourceId\n * Used by /agents/:agentId/generate-legacy and /agents/:agentId/stream-legacy\n */\nexport const agentExecutionLegacyBodySchema = agentExecutionBodySchema.extend({\n resourceId: z.string().optional(),\n resourceid: z.string().optional(), // lowercase variant\n threadId: z.string().optional(),\n // Legacy generate/stream expect AI SDK v4 CoreMessage context and a string system message.\n context: typedPermissive<CoreMessageV4[]>(z.array(coreMessageSchema)).optional(),\n system: typedPermissive<string>(systemMessageSchema).optional(),\n});\n\nexport const streamUntilIdleBodySchema = agentExecutionBodySchema.extend({\n maxIdleMs: z.number().int().positive().optional(),\n untilIdle: z.union([z.boolean(), z.object({ maxIdleMs: z.number().int().positive().optional() })]).optional(),\n});\n\nexport const resumeStreamUntilIdleBodySchema = agentExecutionBodySchema.omit({ messages: true }).extend({\n runId: z.string(),\n resumeData: z.unknown().refine(x => x !== undefined, { message: 'resumeData is required' }),\n toolCallId: z.string().optional(),\n maxIdleMs: z.number().int().positive().optional(),\n});\n/**\n * Body schema for tool execute endpoint\n * Simple schema - tool validates its own input data\n * Note: The .refine() ensures data is required\n * (bare z.unknown() is treated as optional by Zod)\n */\nconst executeToolDataBodySchema = z.object({\n data: z.unknown().refine(x => x !== undefined, { message: 'data is required' }),\n});\n\nexport const executeToolBodySchema = executeToolDataBodySchema.extend({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const executeToolContextBodySchema = executeToolDataBodySchema.extend({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n});\n\n// ============================================================================\n// Tool Approval Schemas\n// ============================================================================\n\n/**\n * Base schema for tool approval/decline operations\n * Both approve and decline use the same parameters\n */\nconst toolCallActionBodySchema = z.object({\n runId: z.string(),\n model: z.string().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n toolCallId: z.string(),\n format: z.string().optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n modelSettings: typedPermissive<ModelSettings>(z.unknown()).optional(),\n // Client tools must be re-sent on resume so the model can call them after the approval decision.\n clientTools: typedPermissive<ToolsInput>(z.record(z.string(), z.unknown())).optional(),\n});\nconst networkToolCallActionBodySchema = z.object({\n runId: z.string(),\n model: z.string().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n format: z.string().optional(),\n});\n\n/**\n * Body schema for approving tool call\n */\nexport const approveToolCallBodySchema = toolCallActionBodySchema;\n\n/**\n * Body schema for declining tool call\n */\nexport const declineToolCallBodySchema = toolCallActionBodySchema.extend({\n /** Optional explanation surfaced to the model in place of the default decline message. */\n reason: z.string().optional(),\n});\n\n/**\n * Body schema for approving network tool call\n */\nexport const approveNetworkToolCallBodySchema = networkToolCallActionBodySchema;\n\n/**\n * Body schema for declining network tool call\n */\nexport const declineNetworkToolCallBodySchema = networkToolCallActionBodySchema.extend({\n /** Optional explanation surfaced in place of the default decline message. */\n reason: z.string().optional(),\n});\n\n/**\n * Response schema for tool approval/decline\n */\nexport const toolCallResponseSchema = z.object({\n fullStream: z.unknown(), // ReadableStream\n});\n\nexport const sendToolApprovalResponseSchema = z.object({\n accepted: z.literal(true),\n runId: z.string(),\n toolCallId: z.string().optional(),\n});\n\n/**\n * Query schema for listing suspended agent runs\n */\nexport const listSuspendedRunsQuerySchema = z\n .object({\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n perPage: z.coerce.number().int().positive().optional(),\n // page is zero-indexed, so 0 is valid\n page: z.coerce.number().int().nonnegative().optional(),\n })\n .refine(data => !data.fromDate || !data.toDate || data.fromDate <= data.toDate, {\n message: 'fromDate must be less than or equal to toDate',\n path: ['fromDate'],\n });\n\n/**\n * Response schema for listing suspended agent runs\n */\nexport const listSuspendedRunsResponseSchema = z.object({\n runs: z.array(\n z.object({\n runId: z.string(),\n status: z.literal('suspended'),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n suspendedAt: z.date(),\n toolCalls: z.array(\n z.object({\n toolCallId: z.string().optional(),\n toolName: z.string().optional(),\n args: z.unknown().optional(),\n requiresApproval: z.boolean(),\n suspendPayload: z.unknown().optional(),\n }),\n ),\n }),\n ),\n total: z.number().int().nonnegative(),\n});\n\n// ============================================================================\n// Resume Stream Schema\n// ============================================================================\n\n/**\n * Body schema for resuming a suspended agent stream with custom data.\n * Extends the agent execution body without messages, since resume\n * continues from a prior suspension point rather than starting fresh.\n */\nexport const resumeStreamBodySchema = agentExecutionBodySchema.omit({ messages: true }).extend({\n runId: z.string(),\n resumeData: z.unknown().refine(x => x !== undefined, { message: 'resumeData is required' }),\n toolCallId: z.string().optional(),\n});\n\n// ============================================================================\n// Recover Schema\n// ============================================================================\n\n/**\n * Body schema for recovering an orphaned RUNNING durable-agent run.\n * Thread and resource are read from the persisted snapshot, so we only accept\n * the runId plus request-context / version overrides needed for auth and\n * routing.\n */\nexport const recoverBodySchema = z.object({\n runId: z.string(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n versions: z\n .object({\n agents: z\n .record(\n z.string(),\n z.union([z.object({ versionId: z.string() }), z.object({ status: z.enum(['draft', 'published']) })]),\n )\n .optional(),\n defaultStatus: z.enum(['draft', 'published']).optional(),\n })\n .optional(),\n});\n\n// ============================================================================\n// Model Management Schemas\n// ============================================================================\n\n/**\n * Body schema for updating agent model\n */\nexport const updateAgentModelBodySchema = z.object({\n modelId: z.string(),\n provider: z.string(),\n});\n\n/**\n * Body schema for reordering agent model list\n */\nexport const reorderAgentModelListBodySchema = z.object({\n reorderedModelIds: z.array(z.string()),\n});\n\n/**\n * Body schema for updating model in model list\n */\nexport const updateAgentModelInModelListBodySchema = z.object({\n model: z\n .object({\n modelId: z.string(),\n provider: z.string(),\n })\n .optional(),\n maxRetries: z.number().optional(),\n enabled: z.boolean().optional(),\n});\n\n/**\n * Response schema for model management operations\n */\nexport const modelManagementResponseSchema = messageResponseSchema;\n\n// ============================================================================\n// Response schemas for agent generation endpoints\n// These return AI SDK types which have complex structures\n// ============================================================================\n\nexport const generateResponseSchema = z.unknown(); // AI SDK GenerateResult type\nexport const streamResponseSchema = z.unknown(); // AI SDK StreamResult type\nexport const executeToolResponseSchema = z.unknown(); // Tool execution result varies by tool\n\n// ============================================================================\n// Instruction Enhancement Schemas\n// ============================================================================\n\n/**\n * Body schema for enhancing agent instructions\n */\nexport const enhanceInstructionsBodySchema = z.object({\n instructions: z.string().describe('The current agent instructions to enhance'),\n comment: z.string().describe('User comment describing how to enhance the instructions'),\n});\n\n/**\n * Response schema for enhanced instructions\n */\nexport const enhanceInstructionsResponseSchema = z.object({\n explanation: z.string().describe('Explanation of the changes made'),\n new_prompt: z.string().describe('The enhanced instructions'),\n});\n\n// ============================================================================\n// Observe (Resumable Streams) Schemas\n// ============================================================================\n\n/**\n * Body schema for observing an agent stream\n * Used to reconnect to an existing stream and receive missed events\n */\nexport const observeAgentBodySchema = z.object({\n runId: z.string().describe('The run ID to observe/reconnect to'),\n offset: z.number().optional().describe('Resume from this event index (0-based). If omitted, replays all events.'),\n});\n\nconst signalActiveBehaviorSchema = z.enum(['deliver', 'persist', 'discard']);\nconst signalIdleBehaviorSchema = z.enum(['wake', 'persist', 'discard']);\n\nconst signalTargetBaseBodySchema = z.object({\n ifActive: z\n .object({\n behavior: signalActiveBehaviorSchema.optional(),\n attributes: signalAttributesSchema.optional(),\n })\n .optional(),\n});\n\nconst signalTargetBodySchema = z.union([\n signalTargetBaseBodySchema.extend({\n runId: z.string(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n ifIdle: z.undefined().optional(),\n }),\n signalTargetBaseBodySchema.extend({\n runId: z.undefined().optional(),\n resourceId: z.string(),\n threadId: z.string(),\n ifIdle: z\n .object({\n behavior: signalIdleBehaviorSchema.optional(),\n streamOptions: agentExecutionBodySchema.omit({ messages: true }).optional(),\n attributes: signalAttributesSchema.optional(),\n })\n .optional(),\n }),\n]);\n\nexport const sendAgentSignalBodySchema = z.union([\n signalTargetBodySchema.options[0].extend({ signal: agentSignalSchema }),\n signalTargetBodySchema.options[1].extend({ signal: agentSignalSchema }),\n]);\n\nexport const sendAgentMessageBodySchema = z.union([\n signalTargetBodySchema.options[0].extend({ message: agentMessageInputSchema }),\n signalTargetBodySchema.options[1].extend({ message: agentMessageInputSchema }),\n]);\n\nexport const queueAgentMessageBodySchema = sendAgentMessageBodySchema;\nexport const queueAgentSignalBodySchema = sendAgentSignalBodySchema;\n\nconst agentThreadBodySchema = z.object({\n resourceId: z.string().optional(),\n threadId: z.string(),\n});\n\nexport const subscribeAgentThreadBodySchema = agentThreadBodySchema.extend({\n withInitialHistory: z\n .union([z.boolean(), z.object({ perPage: z.number().int().positive().optional() })])\n .optional()\n .describe('Emit one thread-history chunk with stored messages before live parts'),\n});\n\nexport const abortAgentThreadBodySchema = agentThreadBodySchema.extend({\n threadId: z.string().min(1),\n clearPendingSignals: z.boolean().optional(),\n expectedRunId: z.string().optional(),\n});\n\nexport const cancelPendingAgentSignalsBodySchema = agentThreadBodySchema.extend({\n threadId: z.string().min(1),\n signalIds: z.array(z.string().min(1)).min(1).max(1000),\n});\n\nexport const cancelPendingAgentSignalsResponseSchema = z.object({\n cancelledSignalIds: z.array(z.string()),\n});\n\nexport const sendToolApprovalBodySchema = z.object({\n resourceId: z.string(),\n threadId: z.string(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n toolCallId: z.string(),\n approved: z.boolean(),\n resumeData: z.unknown().optional(),\n format: z.string().optional(),\n messages: z.array(coreMessageSchema).optional(),\n streamOptions: typedPermissive<AgentExecutionOptions<undefined>>(z.unknown()).optional(),\n});\n\nexport const abortAgentThreadResponseSchema = z.object({\n aborted: z.boolean(),\n});\n\n/**\n * Response schema for observe endpoint (streaming response)\n */\nexport const observeAgentResponseSchema = z.unknown(); // Streaming response\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as schemaToJsonSchema } from "./route-builder-CjkWxv4E.js";
|
|
2
|
-
import { t as SERVER_ROUTES } from "./routes-
|
|
2
|
+
import { t as SERVER_ROUTES } from "./routes-DKV9oxFW.js";
|
|
3
3
|
//#region src/server/server-adapter/api-schema-manifest.ts
|
|
4
4
|
function convertSchema(schema) {
|
|
5
5
|
return schema ? schemaToJsonSchema(schema) : void 0;
|
|
@@ -58,4 +58,4 @@ function buildApiSchemaManifest(routes = SERVER_ROUTES) {
|
|
|
58
58
|
//#endregion
|
|
59
59
|
export { buildApiSchemaManifest };
|
|
60
60
|
|
|
61
|
-
//# sourceMappingURL=api-schema-manifest-
|
|
61
|
+
//# sourceMappingURL=api-schema-manifest-A066IsPX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-schema-manifest-
|
|
1
|
+
{"version":3,"file":"api-schema-manifest-A066IsPX.js","names":[],"sources":["../src/server/server-adapter/api-schema-manifest.ts"],"sourcesContent":["import type { JSONSchema7 } from '@mastra/schema-compat';\nimport { schemaToJsonSchema } from './openapi-utils';\nimport { SERVER_ROUTES } from './routes/index';\nimport type { ServerRoute } from './routes/index';\n\nexport interface ApiSchemaResponseShape {\n kind: 'array' | 'record' | 'object-property' | 'single' | 'unknown';\n listProperty?: string;\n paginationProperty?: string;\n}\n\nexport interface ApiSchemaManifestRoute {\n method: string;\n path: string;\n responseType: string;\n pathParamSchema?: JSONSchema7;\n queryParamSchema?: JSONSchema7;\n bodySchema?: JSONSchema7;\n responseSchema?: JSONSchema7;\n responseShape: ApiSchemaResponseShape;\n}\n\nexport interface ApiSchemaManifest {\n version: 1;\n routes: ApiSchemaManifestRoute[];\n}\n\nfunction convertSchema(schema: ServerRoute['bodySchema']): JSONSchema7 | undefined {\n return schema ? schemaToJsonSchema(schema) : undefined;\n}\n\nfunction asJsonSchema(value: unknown): JSONSchema7 | undefined {\n return value && typeof value === 'object' && !Array.isArray(value) ? (value as JSONSchema7) : undefined;\n}\n\nfunction schemaType(schema: JSONSchema7 | undefined): JSONSchema7['type'] | undefined {\n const type = schema?.type;\n return Array.isArray(type) ? type.find(Boolean) : type;\n}\n\nfunction inferResponseShape(responseSchema: JSONSchema7 | undefined): ApiSchemaResponseShape {\n if (!responseSchema) return { kind: 'unknown' };\n\n const alternatives: unknown[] | undefined = responseSchema.anyOf ?? responseSchema.oneOf;\n if (alternatives?.length) {\n const shapes = alternatives.map(schema => inferResponseShape(asJsonSchema(schema)));\n const first = shapes[0]!;\n return shapes.every(\n shape =>\n shape.kind === first.kind &&\n shape.listProperty === first.listProperty &&\n shape.paginationProperty === first.paginationProperty,\n )\n ? first\n : { kind: 'single' };\n }\n\n const type = schemaType(responseSchema);\n if (type === 'array') return { kind: 'array' };\n if (type !== 'object') return { kind: 'single' };\n\n const properties =\n responseSchema.properties && !Array.isArray(responseSchema.properties) ? responseSchema.properties : {};\n const propertyNames = Object.keys(properties);\n const paginationProperty = 'page' in properties ? 'page' : 'pagination' in properties ? 'pagination' : undefined;\n const listProperty = Object.entries(properties).find(\n ([, property]) => schemaType(asJsonSchema(property)) === 'array',\n )?.[0];\n\n if (listProperty && (paginationProperty || propertyNames.length <= 2)) {\n return { kind: 'object-property', listProperty, paginationProperty };\n }\n if (responseSchema.additionalProperties && propertyNames.length === 0) return { kind: 'record' };\n return { kind: 'single' };\n}\n\n/** CLI flags cover all request variants; the endpoint still validates the selected variant. */\nexport function getApiSchemaPropertyNames(schema: JSONSchema7 | undefined): string[] {\n if (!schema) return [];\n const names = Object.keys(schema.properties ?? {});\n for (const branch of schema.anyOf ?? schema.oneOf ?? [])\n names.push(...getApiSchemaPropertyNames(asJsonSchema(branch)));\n return [...new Set(names)].sort();\n}\n\nfunction isManifestRoute(route: ServerRoute): boolean {\n return route.responseType === 'json' && !route.deprecated;\n}\n\nexport function buildApiSchemaManifest(routes: readonly ServerRoute[] = SERVER_ROUTES): ApiSchemaManifest {\n return {\n version: 1,\n routes: routes.filter(isManifestRoute).map(route => {\n const responseSchema = convertSchema(route.responseSchema);\n return {\n method: route.method,\n path: route.path,\n responseType: route.responseType,\n pathParamSchema: convertSchema(route.pathParamSchema),\n queryParamSchema: convertSchema(route.queryParamSchema),\n bodySchema: convertSchema(route.bodySchema),\n responseSchema,\n responseShape: inferResponseShape(responseSchema),\n };\n }),\n };\n}\n"],"mappings":";;;AA2BA,SAAS,cAAc,QAA4D;CACjF,OAAO,SAAS,mBAAmB,MAAM,IAAI,KAAA;AAC/C;AAEA,SAAS,aAAa,OAAyC;CAC7D,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAAK,QAAwB,KAAA;AAChG;AAEA,SAAS,WAAW,QAAkE;CACpF,MAAM,OAAO,QAAQ;CACrB,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,OAAO,IAAI;AACpD;AAEA,SAAS,mBAAmB,gBAAiE;CAC3F,IAAI,CAAC,gBAAgB,OAAO,EAAE,MAAM,UAAU;CAE9C,MAAM,eAAsC,eAAe,SAAS,eAAe;CACnF,IAAI,cAAc,QAAQ;EACxB,MAAM,SAAS,aAAa,KAAI,WAAU,mBAAmB,aAAa,MAAM,CAAC,CAAC;EAClF,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,OACZ,UACE,MAAM,SAAS,MAAM,QACrB,MAAM,iBAAiB,MAAM,gBAC7B,MAAM,uBAAuB,MAAM,kBACvC,IACI,QACA,EAAE,MAAM,SAAS;CACvB;CAEA,MAAM,OAAO,WAAW,cAAc;CACtC,IAAI,SAAS,SAAS,OAAO,EAAE,MAAM,QAAQ;CAC7C,IAAI,SAAS,UAAU,OAAO,EAAE,MAAM,SAAS;CAE/C,MAAM,aACJ,eAAe,cAAc,CAAC,MAAM,QAAQ,eAAe,UAAU,IAAI,eAAe,aAAa,CAAC;CACxG,MAAM,gBAAgB,OAAO,KAAK,UAAU;CAC5C,MAAM,qBAAqB,UAAU,aAAa,SAAS,gBAAgB,aAAa,eAAe,KAAA;CACvG,MAAM,eAAe,OAAO,QAAQ,UAAU,CAAC,CAAC,MAC7C,GAAG,cAAc,WAAW,aAAa,QAAQ,CAAC,MAAM,OAC3D,CAAC,GAAG;CAEJ,IAAI,iBAAiB,sBAAsB,cAAc,UAAU,IACjE,OAAO;EAAE,MAAM;EAAmB;EAAc;CAAmB;CAErE,IAAI,eAAe,wBAAwB,cAAc,WAAW,GAAG,OAAO,EAAE,MAAM,SAAS;CAC/F,OAAO,EAAE,MAAM,SAAS;AAC1B;AAWA,SAAS,gBAAgB,OAA6B;CACpD,OAAO,MAAM,iBAAiB,UAAU,CAAC,MAAM;AACjD;AAEA,SAAgB,uBAAuB,SAAiC,eAAkC;CACxG,OAAO;EACL,SAAS;EACT,QAAQ,OAAO,OAAO,eAAe,CAAC,CAAC,KAAI,UAAS;GAClD,MAAM,iBAAiB,cAAc,MAAM,cAAc;GACzD,OAAO;IACL,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,cAAc,MAAM;IACpB,iBAAiB,cAAc,MAAM,eAAe;IACpD,kBAAkB,cAAc,MAAM,gBAAgB;IACtD,YAAY,cAAc,MAAM,UAAU;IAC1C;IACA,eAAe,mBAAmB,cAAc;GAClD;EACF,CAAC;CACH;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("./rolldown-runtime-BwC_XMyb.cjs");
|
|
2
2
|
const require_route_builder = require("./route-builder-B2Qhhd7C.cjs");
|
|
3
|
-
const require_routes = require("./routes-
|
|
3
|
+
const require_routes = require("./routes-D6bDACPd.cjs");
|
|
4
4
|
//#region src/server/server-adapter/api-schema-manifest.ts
|
|
5
5
|
function convertSchema(schema) {
|
|
6
6
|
return schema ? require_route_builder.schemaToJsonSchema(schema) : void 0;
|
|
@@ -59,4 +59,4 @@ function buildApiSchemaManifest(routes = require_routes.SERVER_ROUTES) {
|
|
|
59
59
|
//#endregion
|
|
60
60
|
exports.buildApiSchemaManifest = buildApiSchemaManifest;
|
|
61
61
|
|
|
62
|
-
//# sourceMappingURL=api-schema-manifest-
|
|
62
|
+
//# sourceMappingURL=api-schema-manifest-BaF6TE9d.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-schema-manifest-
|
|
1
|
+
{"version":3,"file":"api-schema-manifest-BaF6TE9d.cjs","names":["schemaToJsonSchema","SERVER_ROUTES"],"sources":["../src/server/server-adapter/api-schema-manifest.ts"],"sourcesContent":["import type { JSONSchema7 } from '@mastra/schema-compat';\nimport { schemaToJsonSchema } from './openapi-utils';\nimport { SERVER_ROUTES } from './routes/index';\nimport type { ServerRoute } from './routes/index';\n\nexport interface ApiSchemaResponseShape {\n kind: 'array' | 'record' | 'object-property' | 'single' | 'unknown';\n listProperty?: string;\n paginationProperty?: string;\n}\n\nexport interface ApiSchemaManifestRoute {\n method: string;\n path: string;\n responseType: string;\n pathParamSchema?: JSONSchema7;\n queryParamSchema?: JSONSchema7;\n bodySchema?: JSONSchema7;\n responseSchema?: JSONSchema7;\n responseShape: ApiSchemaResponseShape;\n}\n\nexport interface ApiSchemaManifest {\n version: 1;\n routes: ApiSchemaManifestRoute[];\n}\n\nfunction convertSchema(schema: ServerRoute['bodySchema']): JSONSchema7 | undefined {\n return schema ? schemaToJsonSchema(schema) : undefined;\n}\n\nfunction asJsonSchema(value: unknown): JSONSchema7 | undefined {\n return value && typeof value === 'object' && !Array.isArray(value) ? (value as JSONSchema7) : undefined;\n}\n\nfunction schemaType(schema: JSONSchema7 | undefined): JSONSchema7['type'] | undefined {\n const type = schema?.type;\n return Array.isArray(type) ? type.find(Boolean) : type;\n}\n\nfunction inferResponseShape(responseSchema: JSONSchema7 | undefined): ApiSchemaResponseShape {\n if (!responseSchema) return { kind: 'unknown' };\n\n const alternatives: unknown[] | undefined = responseSchema.anyOf ?? responseSchema.oneOf;\n if (alternatives?.length) {\n const shapes = alternatives.map(schema => inferResponseShape(asJsonSchema(schema)));\n const first = shapes[0]!;\n return shapes.every(\n shape =>\n shape.kind === first.kind &&\n shape.listProperty === first.listProperty &&\n shape.paginationProperty === first.paginationProperty,\n )\n ? first\n : { kind: 'single' };\n }\n\n const type = schemaType(responseSchema);\n if (type === 'array') return { kind: 'array' };\n if (type !== 'object') return { kind: 'single' };\n\n const properties =\n responseSchema.properties && !Array.isArray(responseSchema.properties) ? responseSchema.properties : {};\n const propertyNames = Object.keys(properties);\n const paginationProperty = 'page' in properties ? 'page' : 'pagination' in properties ? 'pagination' : undefined;\n const listProperty = Object.entries(properties).find(\n ([, property]) => schemaType(asJsonSchema(property)) === 'array',\n )?.[0];\n\n if (listProperty && (paginationProperty || propertyNames.length <= 2)) {\n return { kind: 'object-property', listProperty, paginationProperty };\n }\n if (responseSchema.additionalProperties && propertyNames.length === 0) return { kind: 'record' };\n return { kind: 'single' };\n}\n\n/** CLI flags cover all request variants; the endpoint still validates the selected variant. */\nexport function getApiSchemaPropertyNames(schema: JSONSchema7 | undefined): string[] {\n if (!schema) return [];\n const names = Object.keys(schema.properties ?? {});\n for (const branch of schema.anyOf ?? schema.oneOf ?? [])\n names.push(...getApiSchemaPropertyNames(asJsonSchema(branch)));\n return [...new Set(names)].sort();\n}\n\nfunction isManifestRoute(route: ServerRoute): boolean {\n return route.responseType === 'json' && !route.deprecated;\n}\n\nexport function buildApiSchemaManifest(routes: readonly ServerRoute[] = SERVER_ROUTES): ApiSchemaManifest {\n return {\n version: 1,\n routes: routes.filter(isManifestRoute).map(route => {\n const responseSchema = convertSchema(route.responseSchema);\n return {\n method: route.method,\n path: route.path,\n responseType: route.responseType,\n pathParamSchema: convertSchema(route.pathParamSchema),\n queryParamSchema: convertSchema(route.queryParamSchema),\n bodySchema: convertSchema(route.bodySchema),\n responseSchema,\n responseShape: inferResponseShape(responseSchema),\n };\n }),\n };\n}\n"],"mappings":";;;;AA2BA,SAAS,cAAc,QAA4D;CACjF,OAAO,SAASA,sBAAAA,mBAAmB,MAAM,IAAI,KAAA;AAC/C;AAEA,SAAS,aAAa,OAAyC;CAC7D,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAAK,QAAwB,KAAA;AAChG;AAEA,SAAS,WAAW,QAAkE;CACpF,MAAM,OAAO,QAAQ;CACrB,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,OAAO,IAAI;AACpD;AAEA,SAAS,mBAAmB,gBAAiE;CAC3F,IAAI,CAAC,gBAAgB,OAAO,EAAE,MAAM,UAAU;CAE9C,MAAM,eAAsC,eAAe,SAAS,eAAe;CACnF,IAAI,cAAc,QAAQ;EACxB,MAAM,SAAS,aAAa,KAAI,WAAU,mBAAmB,aAAa,MAAM,CAAC,CAAC;EAClF,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,OACZ,UACE,MAAM,SAAS,MAAM,QACrB,MAAM,iBAAiB,MAAM,gBAC7B,MAAM,uBAAuB,MAAM,kBACvC,IACI,QACA,EAAE,MAAM,SAAS;CACvB;CAEA,MAAM,OAAO,WAAW,cAAc;CACtC,IAAI,SAAS,SAAS,OAAO,EAAE,MAAM,QAAQ;CAC7C,IAAI,SAAS,UAAU,OAAO,EAAE,MAAM,SAAS;CAE/C,MAAM,aACJ,eAAe,cAAc,CAAC,MAAM,QAAQ,eAAe,UAAU,IAAI,eAAe,aAAa,CAAC;CACxG,MAAM,gBAAgB,OAAO,KAAK,UAAU;CAC5C,MAAM,qBAAqB,UAAU,aAAa,SAAS,gBAAgB,aAAa,eAAe,KAAA;CACvG,MAAM,eAAe,OAAO,QAAQ,UAAU,CAAC,CAAC,MAC7C,GAAG,cAAc,WAAW,aAAa,QAAQ,CAAC,MAAM,OAC3D,CAAC,GAAG;CAEJ,IAAI,iBAAiB,sBAAsB,cAAc,UAAU,IACjE,OAAO;EAAE,MAAM;EAAmB;EAAc;CAAmB;CAErE,IAAI,eAAe,wBAAwB,cAAc,WAAW,GAAG,OAAO,EAAE,MAAM,SAAS;CAC/F,OAAO,EAAE,MAAM,SAAS;AAC1B;AAWA,SAAS,gBAAgB,OAA6B;CACpD,OAAO,MAAM,iBAAiB,UAAU,CAAC,MAAM;AACjD;AAEA,SAAgB,uBAAuB,SAAiCC,eAAAA,eAAkC;CACxG,OAAO;EACL,SAAS;EACT,QAAQ,OAAO,OAAO,eAAe,CAAC,CAAC,KAAI,UAAS;GAClD,MAAM,iBAAiB,cAAc,MAAM,cAAc;GACzD,OAAO;IACL,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,cAAc,MAAM;IACpB,iBAAiB,cAAc,MAAM,eAAe;IACpD,kBAAkB,cAAc,MAAM,gBAAgB;IACtD,YAAY,cAAc,MAAM,UAAU;IAC1C;IACA,eAAe,mBAAmB,cAAc;GAClD;EACF,CAAC;CACH;AACF"}
|
|
@@ -3,7 +3,7 @@ import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
|
|
|
3
3
|
import { n as createRoute } from "./route-builder-CjkWxv4E.js";
|
|
4
4
|
import { handleError } from "./server/handlers/error.js";
|
|
5
5
|
import { g as MastraFGAPermissions, h as validateThreadOwnership, i as getEffectiveResourceId } from "./utils-BBJlS81s.js";
|
|
6
|
-
import { G as getAgentFromSystem } from "./agents-
|
|
6
|
+
import { G as getAgentFromSystem } from "./agents-BYE5Dmfk.js";
|
|
7
7
|
import { a as createConversationBodySchema, i as conversationObjectSchema, n as conversationIdPathParams, r as conversationItemsListSchema, t as conversationDeletedSchema } from "./conversations-BzBHVFYe.js";
|
|
8
8
|
import { mapMastraMessagesToConversationItems } from "./server/handlers/responses.adapter.js";
|
|
9
9
|
import { findConversationThreadAcrossAgents, getAgentMemoryStore } from "./server/handlers/responses.storage.js";
|
|
@@ -162,4 +162,4 @@ const DELETE_CONVERSATION_ROUTE = createRoute({
|
|
|
162
162
|
//#endregion
|
|
163
163
|
export { conversations_exports as a, GET_CONVERSATION_ROUTE as i, DELETE_CONVERSATION_ROUTE as n, GET_CONVERSATION_ITEMS_ROUTE as r, CREATE_CONVERSATION_ROUTE as t };
|
|
164
164
|
|
|
165
|
-
//# sourceMappingURL=conversations-
|
|
165
|
+
//# sourceMappingURL=conversations-D-ew5IXn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-
|
|
1
|
+
{"version":3,"file":"conversations-D-ew5IXn.js","names":[],"sources":["../src/server/handlers/conversations.ts"],"sourcesContent":["import { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? globalThis.crypto.randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n\n // Creating with an existing id upserts the thread, so validate ownership of any existing thread first\n if (conversation_id) {\n const existing = await memory.getThreadById({ threadId });\n await validateThreadOwnership(existing, getEffectiveResourceId(requestContext, undefined));\n }\n\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ const require_http_exception = require("./http-exception-CKDHupKw.cjs");
|
|
|
3
3
|
const require_route_builder = require("./route-builder-B2Qhhd7C.cjs");
|
|
4
4
|
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
5
|
const require_utils = require("./utils-dDLIDg8O.cjs");
|
|
6
|
-
const require_agents = require("./agents-
|
|
6
|
+
const require_agents = require("./agents-AyHEkc2F.cjs");
|
|
7
7
|
const require_conversations = require("./conversations-DasqEDCF.cjs");
|
|
8
8
|
const require_server_handlers_responses_adapter = require("./server/handlers/responses.adapter.cjs");
|
|
9
9
|
const require_server_handlers_responses_storage = require("./server/handlers/responses.storage.cjs");
|
|
@@ -191,4 +191,4 @@ Object.defineProperty(exports, "conversations_exports", {
|
|
|
191
191
|
}
|
|
192
192
|
});
|
|
193
193
|
|
|
194
|
-
//# sourceMappingURL=conversations-
|
|
194
|
+
//# sourceMappingURL=conversations-DzuWI3w-.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-B16oVu_1.cjs","names":["createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","getEffectiveResourceId","validateThreadOwnership","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"sources":["../src/server/handlers/conversations.ts"],"sourcesContent":["import { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? globalThis.crypto.randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n\n // Creating with an existing id upserts the thread, so validate ownership of any existing thread first\n if (conversation_id) {\n const existing = await memory.getThreadById({ threadId });\n await validateThreadOwnership(existing, getEffectiveResourceId(requestContext, undefined));\n }\n\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversations-DzuWI3w-.cjs","names":["createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","getEffectiveResourceId","validateThreadOwnership","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"sources":["../src/server/handlers/conversations.ts"],"sourcesContent":["import { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? globalThis.crypto.randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n\n // Creating with an existing id upserts the thread, so validate ownership of any existing thread first\n if (conversation_id) {\n const existing = await memory.getThreadById({ threadId });\n await validateThreadOwnership(existing, getEffectiveResourceId(requestContext, undefined));\n }\n\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -8619,7 +8619,7 @@ function splitLines(text) {
|
|
|
8619
8619
|
return result;
|
|
8620
8620
|
}
|
|
8621
8621
|
//#endregion
|
|
8622
|
-
//#region ../memory/dist/src-
|
|
8622
|
+
//#region ../memory/dist/src-BUWL69LT.js
|
|
8623
8623
|
var __defProp$3 = Object.defineProperty;
|
|
8624
8624
|
var __exportAll = (all, no_symbols) => {
|
|
8625
8625
|
let target = {};
|
|
@@ -38944,7 +38944,7 @@ async function resolveImageDimensionsAsync(part) {
|
|
|
38944
38944
|
const url = resolveHttpAssetUrl(getObjectValue(part, "image") ?? getObjectValue(part, "data"));
|
|
38945
38945
|
if (!url) return existing;
|
|
38946
38946
|
try {
|
|
38947
|
-
const probeImageSize = (await import("./probe-image-size-
|
|
38947
|
+
const probeImageSize = (await import("./probe-image-size-DBmo2MAe.js").then((m) => /* @__PURE__ */ __toESM$1(m.default, 1))).default;
|
|
38948
38948
|
const probed = await probeImageSize(url, {
|
|
38949
38949
|
open_timeout: REMOTE_IMAGE_PROBE_TIMEOUT_MS,
|
|
38950
38950
|
response_timeout: REMOTE_IMAGE_PROBE_TIMEOUT_MS,
|
|
@@ -45086,7 +45086,6 @@ var ObservationStep = class {
|
|
|
45086
45086
|
let observerExchange;
|
|
45087
45087
|
const step0Messages = this.stepNumber === 0 ? getObservableMessages(messageList) : [];
|
|
45088
45088
|
if (this.stepNumber === 0) {
|
|
45089
|
-
this.turn.inputMessageIds = messageList.get.input.db().map((msg) => msg.id);
|
|
45090
45089
|
const activation = await om.activate({
|
|
45091
45090
|
threadId,
|
|
45092
45091
|
resourceId,
|
|
@@ -45217,7 +45216,7 @@ var ObservationStep = class {
|
|
|
45217
45216
|
drainedKeys.set(msg.id, /* @__PURE__ */ new Set([...seen ?? [], ...keys]));
|
|
45218
45217
|
return !seen || keys.some((key) => !seen.has(key));
|
|
45219
45218
|
}).map((msg) => msg.id);
|
|
45220
|
-
inFlightIds = [
|
|
45219
|
+
inFlightIds = [...new Set(unreadIds)];
|
|
45221
45220
|
if (messagesToSave.length > 0) {
|
|
45222
45221
|
for (const msg of messagesToSave) messageList.add(msg, "memory");
|
|
45223
45222
|
try {
|
|
@@ -45294,7 +45293,7 @@ var ObservationStep = class {
|
|
|
45294
45293
|
});
|
|
45295
45294
|
if (!didThresholdCleanup) {
|
|
45296
45295
|
const fallbackCursor = this.turn.record.threadId ? getThreadOMMetadata((await om.getStorage().getThreadById({ threadId: this.turn.record.threadId }))?.metadata)?.lastObservedMessageCursor : void 0;
|
|
45297
|
-
const pendingMessageIds = new Set([...messageList.get.input.db(), ...messageList.get.response.db()].map((msg) => msg.id).concat(inFlightIds ?? [], this.
|
|
45296
|
+
const pendingMessageIds = new Set([...messageList.get.input.db(), ...messageList.get.response.db()].map((msg) => msg.id).concat(inFlightIds ?? [], this.changedSinceDrain(messageList)).filter(Boolean));
|
|
45298
45297
|
filterObservedMessages({
|
|
45299
45298
|
messageList,
|
|
45300
45299
|
record: this.turn.record,
|
|
@@ -45578,12 +45577,6 @@ var ObservationTurn = class {
|
|
|
45578
45577
|
/** Generation count at turn start — used to detect if reflection happened during the turn. */
|
|
45579
45578
|
_generationCountAtStart = -1;
|
|
45580
45579
|
/**
|
|
45581
|
-
* Ids of the messages this turn was started with (the user's request). Mid-turn
|
|
45582
|
-
* observation may record them, but they stay in the live prompt until the turn ends.
|
|
45583
|
-
* @internal Set by step 0.
|
|
45584
|
-
*/
|
|
45585
|
-
inputMessageIds = [];
|
|
45586
|
-
/**
|
|
45587
45580
|
* Fingerprints of the non-marker parts each message had when a step last drained it. A message
|
|
45588
45581
|
* is unread step output only if it gained a part the model has not seen — including a tool result
|
|
45589
45582
|
* merged in place into an existing tool-invocation part — not when it only gained OM markers.
|
|
@@ -50340,7 +50333,6 @@ var ObservationalMemoryProcessor = class {
|
|
|
50340
50333
|
this.turn.requestContext = requestContext;
|
|
50341
50334
|
await this.turn.start(this.memory, runState);
|
|
50342
50335
|
if (stepNumber > 0) {
|
|
50343
|
-
this.turn.inputMessageIds = messageList.getPersisted.input.db().map((message) => message.id);
|
|
50344
50336
|
if (this.memory?.getPersistedMessages) {
|
|
50345
50337
|
const responseIds = messageList.getPersisted.response.db().map((message) => message.id);
|
|
50346
50338
|
const snapshotMessages = new Map(messageList.get.all.db().map((message) => [message.id, message]));
|
|
@@ -50507,6 +50499,7 @@ var ObservationalMemoryProcessor = class {
|
|
|
50507
50499
|
writer: args.writer,
|
|
50508
50500
|
observabilityContext: getOmObservabilityContext(args)
|
|
50509
50501
|
}));
|
|
50502
|
+
if (observed) args.rotateResponseMessageId?.();
|
|
50510
50503
|
return { retry: activated || observed };
|
|
50511
50504
|
}
|
|
50512
50505
|
get config() {
|
|
@@ -51571,9 +51564,7 @@ ${workingMemory}`;
|
|
|
51571
51564
|
async saveMessages({ messages, memoryConfig, observabilityContext }) {
|
|
51572
51565
|
const span = this.createMemorySpan("save", observabilityContext, void 0, { messageCount: messages.length });
|
|
51573
51566
|
try {
|
|
51574
|
-
const updatedMessages =
|
|
51575
|
-
return this.updateMessageToHideWorkingMemoryV2(m);
|
|
51576
|
-
}).filter((m) => Boolean(m));
|
|
51567
|
+
const updatedMessages = this.prepareMessagesForPersistence(messages);
|
|
51577
51568
|
const config = this.getMergedThreadConfig(memoryConfig);
|
|
51578
51569
|
const dbMessages = new MessageList({ generateMessageId: () => this.generateId() }).add(updatedMessages, "memory").get.all.db();
|
|
51579
51570
|
const memoryStore = await this.getMemoryStore();
|
|
@@ -51679,12 +51670,17 @@ ${workingMemory}`;
|
|
|
51679
51670
|
throw error;
|
|
51680
51671
|
}
|
|
51681
51672
|
}
|
|
51673
|
+
prepareMessagesForPersistence(messages) {
|
|
51674
|
+
return messages.filter((m) => m.role !== "system" && !isTransientSignalMessage(m)).map((m) => this.updateMessageToHideWorkingMemoryV2(m)).filter((m) => m !== null);
|
|
51675
|
+
}
|
|
51682
51676
|
updateMessageToHideWorkingMemoryV2(message) {
|
|
51683
51677
|
const newMessage = { ...message };
|
|
51684
51678
|
if (message.content && typeof message.content === "object" && !Array.isArray(message.content)) newMessage.content = { ...message.content };
|
|
51685
51679
|
if (typeof newMessage.content?.content === "string" && newMessage.content.content.length > 0) newMessage.content.content = removeWorkingMemoryTags(newMessage.content.content).trim();
|
|
51686
51680
|
if (Array.isArray(newMessage.content?.parts)) {
|
|
51687
51681
|
if (Array.isArray(newMessage.content.toolInvocations)) newMessage.content.toolInvocations = removeWorkingMemoryToolInvocations(newMessage.content.toolInvocations);
|
|
51682
|
+
const lastOriginalPart = newMessage.content.parts.at(-1);
|
|
51683
|
+
const sealMetadata = lastOriginalPart && "metadata" in lastOriginalPart ? lastOriginalPart.metadata : void 0;
|
|
51688
51684
|
newMessage.content.parts = removeWorkingMemoryToolInvocationParts(newMessage.content.parts).map((part) => {
|
|
51689
51685
|
if (part?.type === "text") {
|
|
51690
51686
|
const text = typeof part.text === "string" ? part.text : "";
|
|
@@ -51695,6 +51691,26 @@ ${workingMemory}`;
|
|
|
51695
51691
|
}
|
|
51696
51692
|
return part;
|
|
51697
51693
|
});
|
|
51694
|
+
const lastIndex = newMessage.content.parts.length - 1;
|
|
51695
|
+
const lastPart = newMessage.content.parts[lastIndex];
|
|
51696
|
+
if (lastPart && sealMetadata && typeof sealMetadata === "object" && "mastra" in sealMetadata) {
|
|
51697
|
+
const mastra = sealMetadata.mastra;
|
|
51698
|
+
if (mastra && typeof mastra === "object" && "sealedAt" in mastra && typeof mastra.sealedAt === "number") {
|
|
51699
|
+
const existingMetadata = "metadata" in lastPart ? lastPart.metadata : void 0;
|
|
51700
|
+
const metadata = existingMetadata && typeof existingMetadata === "object" ? existingMetadata : {};
|
|
51701
|
+
const existingMastra = "mastra" in metadata && metadata.mastra && typeof metadata.mastra === "object" ? metadata.mastra : {};
|
|
51702
|
+
newMessage.content.parts[lastIndex] = {
|
|
51703
|
+
...lastPart,
|
|
51704
|
+
metadata: {
|
|
51705
|
+
...metadata,
|
|
51706
|
+
mastra: {
|
|
51707
|
+
...existingMastra,
|
|
51708
|
+
sealedAt: mastra.sealedAt
|
|
51709
|
+
}
|
|
51710
|
+
}
|
|
51711
|
+
};
|
|
51712
|
+
}
|
|
51713
|
+
}
|
|
51698
51714
|
if (newMessage.content.parts.length === 0) {
|
|
51699
51715
|
if (!(typeof newMessage.content.content === "string" && newMessage.content.content.trim().length > 0)) return null;
|
|
51700
51716
|
}
|
|
@@ -51944,12 +51960,12 @@ ${workingMemory}`;
|
|
|
51944
51960
|
};
|
|
51945
51961
|
}
|
|
51946
51962
|
/**
|
|
51947
|
-
* Raw message upsert —
|
|
51963
|
+
* Raw message upsert — apply the persistence projection without embedding or extracting working memory.
|
|
51948
51964
|
* Used by the processor to save sealed messages before firing a background buffer operation.
|
|
51949
51965
|
*/
|
|
51950
51966
|
async persistMessages(messages) {
|
|
51951
51967
|
if (messages.length === 0) return;
|
|
51952
|
-
const persistableMessages =
|
|
51968
|
+
const persistableMessages = this.prepareMessagesForPersistence(messages);
|
|
51953
51969
|
if (persistableMessages.length === 0) return;
|
|
51954
51970
|
await (await this.getMemoryStore()).saveMessages({ messages: persistableMessages });
|
|
51955
51971
|
}
|
|
@@ -52431,27 +52447,75 @@ Notes:
|
|
|
52431
52447
|
if (messages.length === 0) return [];
|
|
52432
52448
|
const memoryStore = await this.getMemoryStore();
|
|
52433
52449
|
const config = this.getMergedThreadConfig(memoryConfig);
|
|
52450
|
+
const existing = await memoryStore.listMessagesById({ messageIds: messages.map((m) => m.id) });
|
|
52451
|
+
const existingById = new Map(existing.messages.map((m) => [m.id, m]));
|
|
52452
|
+
const textForEmbeddingById = /* @__PURE__ */ new Map();
|
|
52453
|
+
const textFields = ["content", "parts"];
|
|
52454
|
+
const textOf = (content, fields) => {
|
|
52455
|
+
for (const field of fields) {
|
|
52456
|
+
const text = field === "content" ? content.content?.trim() ? content.content : null : (content.parts ?? []).filter((part) => part?.type === "text").map((part) => part.text).join(" ").trim();
|
|
52457
|
+
if (text) return text;
|
|
52458
|
+
}
|
|
52459
|
+
return null;
|
|
52460
|
+
};
|
|
52461
|
+
messages = messages.flatMap((update) => {
|
|
52462
|
+
const stored = existingById.get(update.id);
|
|
52463
|
+
if (!stored) return [];
|
|
52464
|
+
const effective = {
|
|
52465
|
+
...stored,
|
|
52466
|
+
...update,
|
|
52467
|
+
content: update.content === void 0 ? stored.content : {
|
|
52468
|
+
...stored.content,
|
|
52469
|
+
...update.content,
|
|
52470
|
+
metadata: {
|
|
52471
|
+
...stored.content.metadata,
|
|
52472
|
+
...update.content.metadata
|
|
52473
|
+
}
|
|
52474
|
+
}
|
|
52475
|
+
};
|
|
52476
|
+
const [projected] = this.prepareMessagesForPersistence([effective]);
|
|
52477
|
+
if (!projected) return [];
|
|
52478
|
+
if (update.content === void 0) {
|
|
52479
|
+
existingById.set(update.id, effective);
|
|
52480
|
+
return [update];
|
|
52481
|
+
}
|
|
52482
|
+
const content = {
|
|
52483
|
+
...update.content,
|
|
52484
|
+
...update.content.parts !== void 0 ? { parts: projected.content.parts } : {},
|
|
52485
|
+
...update.content.content !== void 0 ? { content: projected.content.content } : {},
|
|
52486
|
+
...update.content.toolInvocations !== void 0 ? { toolInvocations: projected.content.toolInvocations } : {}
|
|
52487
|
+
};
|
|
52488
|
+
existingById.set(update.id, {
|
|
52489
|
+
...effective,
|
|
52490
|
+
content: {
|
|
52491
|
+
...effective.content,
|
|
52492
|
+
...content
|
|
52493
|
+
}
|
|
52494
|
+
});
|
|
52495
|
+
const patched = textFields.filter((field) => update.content?.[field] !== void 0);
|
|
52496
|
+
if (patched.length > 0) {
|
|
52497
|
+
const omitted = textFields.filter((field) => !patched.includes(field));
|
|
52498
|
+
const text = textOf(projected.content, patched) ?? (textOf(update.content, patched) ? textOf(projected.content, omitted) : null);
|
|
52499
|
+
textForEmbeddingById.set(update.id, text);
|
|
52500
|
+
}
|
|
52501
|
+
return [{
|
|
52502
|
+
...update,
|
|
52503
|
+
content
|
|
52504
|
+
}];
|
|
52505
|
+
});
|
|
52506
|
+
if (messages.length === 0) return [];
|
|
52434
52507
|
if (this.vector && config.semanticRecall) {
|
|
52435
|
-
const
|
|
52436
|
-
if (
|
|
52437
|
-
const
|
|
52438
|
-
const existingMessagesMap = new Map(existingMessagesResult.messages.map((m) => [m.id, m]));
|
|
52508
|
+
const messagesWithTextUpdates = [...textForEmbeddingById.keys()].map((id) => ({ id }));
|
|
52509
|
+
if (messagesWithTextUpdates.length > 0) {
|
|
52510
|
+
const existingMessagesMap = new Map(existing.messages.map((m) => [m.id, m]));
|
|
52439
52511
|
const embeddingData = [];
|
|
52440
52512
|
let dimension;
|
|
52441
52513
|
const messageIdsWithNewEmbeddings = /* @__PURE__ */ new Set();
|
|
52442
52514
|
const messageIdsWithClearedContent = /* @__PURE__ */ new Set();
|
|
52443
|
-
await Promise.all(
|
|
52515
|
+
await Promise.all(messagesWithTextUpdates.map(async (message) => {
|
|
52444
52516
|
const existingMessage = existingMessagesMap.get(message.id);
|
|
52445
52517
|
if (!existingMessage) return;
|
|
52446
|
-
|
|
52447
|
-
const content = message.content;
|
|
52448
|
-
if (content) {
|
|
52449
|
-
if ("content" in content && content.content && typeof content.content === "string" && content.content.trim() !== "") textForEmbedding = content.content;
|
|
52450
|
-
else if ("parts" in content && content.parts && Array.isArray(content.parts) && content.parts.length > 0) {
|
|
52451
|
-
const joined = content.parts.filter((part) => part?.type === "text").map((part) => part.text).join(" ").trim();
|
|
52452
|
-
if (joined) textForEmbedding = joined;
|
|
52453
|
-
}
|
|
52454
|
-
}
|
|
52518
|
+
const textForEmbedding = textForEmbeddingById.get(message.id) ?? null;
|
|
52455
52519
|
if (textForEmbedding) {
|
|
52456
52520
|
let embeddings = [];
|
|
52457
52521
|
let documents;
|
|
@@ -53985,7 +54049,7 @@ const createModelInstance = async (provider, modelId, version = "v2") => {
|
|
|
53985
54049
|
try {
|
|
53986
54050
|
const providerFn = version === `v1` ? { v1: {
|
|
53987
54051
|
openai: async () => {
|
|
53988
|
-
const { openai } = await import("./dist-
|
|
54052
|
+
const { openai } = await import("./dist-Dgae8Imb.js");
|
|
53989
54053
|
return openai(modelId);
|
|
53990
54054
|
},
|
|
53991
54055
|
anthropic: async () => {
|
|
@@ -61690,4 +61754,4 @@ const agentBuilderWorkflows = {
|
|
|
61690
61754
|
//#endregion
|
|
61691
61755
|
export { require_exif_utils as a, agentBuilderWorkflows, require_svg_header as i, openai as n, require_miaf_utils as o, require_sync as r, require_common as s, createOpenAI as t };
|
|
61692
61756
|
|
|
61693
|
-
//# sourceMappingURL=dist-
|
|
61757
|
+
//# sourceMappingURL=dist-5TAg2f91.js.map
|