@mastra/server 1.57.0 → 1.58.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/{a2a-uPi5sPwb.js → a2a-CHi9AJ0n.js} +598 -178
  3. package/dist/a2a-CHi9AJ0n.js.map +1 -0
  4. package/dist/{a2a-DKnwIgiw.cjs → a2a-D3ZYeXIx.cjs} +598 -178
  5. package/dist/a2a-D3ZYeXIx.cjs.map +1 -0
  6. package/dist/{api-schema-manifest-7-NC9Dyc.cjs → api-schema-manifest-J5hfk5ZZ.cjs} +2 -2
  7. package/dist/{api-schema-manifest-7-NC9Dyc.cjs.map → api-schema-manifest-J5hfk5ZZ.cjs.map} +1 -1
  8. package/dist/{api-schema-manifest-C5hpdIE_.js → api-schema-manifest-R8CsF6RX.js} +2 -2
  9. package/dist/{api-schema-manifest-C5hpdIE_.js.map → api-schema-manifest-R8CsF6RX.js.map} +1 -1
  10. package/dist/{datasets-Cvix7Rms.cjs → datasets-BMeFvFwT.cjs} +43 -1
  11. package/dist/datasets-BMeFvFwT.cjs.map +1 -0
  12. package/dist/{datasets-dhXnHLAL.js → datasets-BeBH9Seg.js} +38 -2
  13. package/dist/datasets-BeBH9Seg.js.map +1 -0
  14. package/dist/{dist-COHIL6fR.cjs → dist-DgY0llRv.cjs} +116 -28
  15. package/dist/dist-DgY0llRv.cjs.map +1 -0
  16. package/dist/{dist-DGqlUp0b.js → dist-IUXZtNBY.js} +116 -28
  17. package/dist/dist-IUXZtNBY.js.map +1 -0
  18. package/dist/docs/SKILL.md +1 -1
  19. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  20. package/dist/docs/references/docs-agents-a2a.md +36 -2
  21. package/dist/route-builder-CIk5k35M.js.map +1 -1
  22. package/dist/route-builder-CgLVYL1c.cjs.map +1 -1
  23. package/dist/{routes-hSY4wTeS.cjs → routes-BzR8iVj4.cjs} +2 -2
  24. package/dist/{routes-hSY4wTeS.cjs.map → routes-BzR8iVj4.cjs.map} +1 -1
  25. package/dist/{routes-CRoTKPvQ.js → routes-C7iRCN_l.js} +2 -2
  26. package/dist/{routes-CRoTKPvQ.js.map → routes-C7iRCN_l.js.map} +1 -1
  27. package/dist/server/a2a/store.cjs +26 -2
  28. package/dist/server/a2a/store.cjs.map +1 -1
  29. package/dist/server/a2a/store.d.ts +18 -2
  30. package/dist/server/a2a/store.d.ts.map +1 -1
  31. package/dist/server/a2a/store.js +26 -3
  32. package/dist/server/a2a/store.js.map +1 -1
  33. package/dist/server/a2a/task-state.d.ts +4 -0
  34. package/dist/server/a2a/task-state.d.ts.map +1 -0
  35. package/dist/server/a2a/tasks.d.ts +1 -1
  36. package/dist/server/a2a/tasks.d.ts.map +1 -1
  37. package/dist/server/handlers/a2a.cjs +1 -1
  38. package/dist/server/handlers/a2a.d.ts +3 -2
  39. package/dist/server/handlers/a2a.d.ts.map +1 -1
  40. package/dist/server/handlers/a2a.js +1 -1
  41. package/dist/server/handlers/agent-builder.cjs +1 -1
  42. package/dist/server/handlers/agent-builder.js +1 -1
  43. package/dist/server/handlers/agent-versions.cjs +6 -0
  44. package/dist/server/handlers/agent-versions.cjs.map +1 -1
  45. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  46. package/dist/server/handlers/agent-versions.js +6 -0
  47. package/dist/server/handlers/agent-versions.js.map +1 -1
  48. package/dist/server/handlers/datasets.cjs +26 -11
  49. package/dist/server/handlers/datasets.cjs.map +1 -1
  50. package/dist/server/handlers/datasets.d.ts +136 -0
  51. package/dist/server/handlers/datasets.d.ts.map +1 -1
  52. package/dist/server/handlers/datasets.js +26 -11
  53. package/dist/server/handlers/datasets.js.map +1 -1
  54. package/dist/server/handlers/mcp-client-versions.cjs +1 -1
  55. package/dist/server/handlers/mcp-client-versions.js +1 -1
  56. package/dist/server/handlers/observability.cjs +20 -9
  57. package/dist/server/handlers/observability.cjs.map +1 -1
  58. package/dist/server/handlers/observability.d.ts.map +1 -1
  59. package/dist/server/handlers/observability.js +20 -9
  60. package/dist/server/handlers/observability.js.map +1 -1
  61. package/dist/server/handlers/prompt-block-versions.cjs +1 -1
  62. package/dist/server/handlers/prompt-block-versions.js +1 -1
  63. package/dist/server/handlers/scorer-versions.cjs +1 -1
  64. package/dist/server/handlers/scorer-versions.js +1 -1
  65. package/dist/server/handlers/stored-agents.cjs +16 -1
  66. package/dist/server/handlers/stored-agents.cjs.map +1 -1
  67. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  68. package/dist/server/handlers/stored-agents.js +16 -1
  69. package/dist/server/handlers/stored-agents.js.map +1 -1
  70. package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
  71. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  72. package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
  73. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  74. package/dist/server/handlers/stored-scorers.cjs +1 -1
  75. package/dist/server/handlers/stored-scorers.js +1 -1
  76. package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
  77. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  78. package/dist/server/handlers/stored-skills.cjs +1 -1
  79. package/dist/server/handlers/stored-skills.js +1 -1
  80. package/dist/server/handlers/system.cjs +1 -1
  81. package/dist/server/handlers/system.js +1 -1
  82. package/dist/server/handlers/validate-agent-instructions.cjs +52 -0
  83. package/dist/server/handlers/validate-agent-instructions.cjs.map +1 -0
  84. package/dist/server/handlers/validate-agent-instructions.d.ts +13 -0
  85. package/dist/server/handlers/validate-agent-instructions.d.ts.map +1 -0
  86. package/dist/server/handlers/validate-agent-instructions.js +51 -0
  87. package/dist/server/handlers/validate-agent-instructions.js.map +1 -0
  88. package/dist/server/handlers/workflows.cjs +12 -0
  89. package/dist/server/handlers/workflows.cjs.map +1 -1
  90. package/dist/server/handlers/workflows.d.ts.map +1 -1
  91. package/dist/server/handlers/workflows.js +12 -0
  92. package/dist/server/handlers/workflows.js.map +1 -1
  93. package/dist/server/handlers.cjs +1 -1
  94. package/dist/server/handlers.js +1 -1
  95. package/dist/server/schemas/datasets.d.ts +53 -0
  96. package/dist/server/schemas/datasets.d.ts.map +1 -1
  97. package/dist/server/schemas/index.cjs +3 -2
  98. package/dist/server/schemas/index.js +3 -3
  99. package/dist/server/server-adapter/index.cjs +1 -1
  100. package/dist/server/server-adapter/index.js +1 -1
  101. package/dist/server/server-adapter/routes/datasets.d.ts +136 -0
  102. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  103. package/package.json +5 -5
  104. package/dist/a2a-DKnwIgiw.cjs.map +0 -1
  105. package/dist/a2a-uPi5sPwb.js.map +0 -1
  106. package/dist/datasets-Cvix7Rms.cjs.map +0 -1
  107. package/dist/datasets-dhXnHLAL.js.map +0 -1
  108. package/dist/dist-COHIL6fR.cjs.map +0 -1
  109. package/dist/dist-DGqlUp0b.js.map +0 -1
@@ -183,6 +183,12 @@ const paginationQuerySchema = z.object({
183
183
  page: z.coerce.number().optional().default(0),
184
184
  perPage: z.coerce.number().optional().default(10)
185
185
  });
186
+ const listExperimentsQuerySchema = paginationQuerySchema.extend({
187
+ experimentSetId: z.string().optional(),
188
+ comparisonId: z.string().optional(),
189
+ variantId: z.string().optional(),
190
+ trialIndex: z.coerce.number().int().min(0).optional()
191
+ });
186
192
  const tenancyQuerySchema = z.object({
187
193
  organizationId: z.string().optional().describe("Restrict lookup to the given organization"),
188
194
  projectId: z.string().optional().describe("Restrict lookup to the given project")
@@ -246,10 +252,25 @@ const triggerExperimentBodySchema = z.object({
246
252
  "scorer"
247
253
  ]).describe("Type of target to run against"),
248
254
  targetId: z.string().describe("ID of the target"),
255
+ name: z.string().optional().describe("Name of the experiment"),
256
+ description: z.string().optional().describe("Description of the experiment"),
257
+ metadata: z.record(z.string(), z.unknown()).optional().describe("Additional metadata"),
249
258
  scorerIds: z.array(z.string()).optional().describe("IDs of scorers to apply"),
250
259
  version: z.coerce.number().int().optional().describe("Pin to specific dataset version"),
251
260
  agentVersion: z.string().optional().describe("Agent version ID to use for experiment"),
252
261
  maxConcurrency: z.number().optional().describe("Maximum concurrent executions"),
262
+ provenance: z.object({
263
+ source: z.string().optional(),
264
+ sourceId: z.string().optional(),
265
+ sourceVersion: z.string().optional(),
266
+ metadata: z.record(z.string(), z.unknown()).optional()
267
+ }).optional().describe("Caller-provided provenance claims for the experiment execution"),
268
+ grouping: z.object({
269
+ experimentSetId: z.string().optional(),
270
+ comparisonId: z.string().optional(),
271
+ variantId: z.string().optional(),
272
+ trialIndex: z.number().int().min(0).optional()
273
+ }).optional().describe("Stable grouping dimensions for comparisons and repeated trials"),
253
274
  requestContext: z.record(z.string(), z.unknown()).optional().describe("Global request context passed to the target"),
254
275
  versions: z.object({
255
276
  agents: z.record(z.string(), z.union([z.object({ versionId: z.string() }), z.object({ status: z.enum(["draft", "published"]) })])).optional(),
@@ -308,6 +329,21 @@ const experimentResponseSchema = z.object({
308
329
  name: z.string().optional(),
309
330
  description: z.string().optional(),
310
331
  metadata: z.record(z.string(), z.unknown()).optional(),
332
+ provenance: z.object({
333
+ source: z.string().optional(),
334
+ sourceId: z.string().optional(),
335
+ sourceVersion: z.string().optional(),
336
+ metadata: z.record(z.string(), z.unknown()).optional()
337
+ }).nullable().optional(),
338
+ runnerAttestation: z.object({
339
+ runnerId: z.string(),
340
+ invocationId: z.string(),
341
+ runnerVersion: z.string().optional()
342
+ }).nullable().optional(),
343
+ experimentSetId: z.string().nullable().optional(),
344
+ comparisonId: z.string().nullable().optional(),
345
+ variantId: z.string().nullable().optional(),
346
+ trialIndex: z.number().int().nullable().optional(),
311
347
  status: z.enum([
312
348
  "pending",
313
349
  "running",
@@ -534,6 +570,6 @@ const clusterFailuresResponseSchema = z.object({
534
570
  })).optional()
535
571
  });
536
572
  //#endregion
537
- export { listExperimentResultsResponseSchema as A, updateDatasetBodySchema as B, experimentSummaryResponseSchema as C, itemVersionResponseSchema as D, itemIdPathParams as E, paginationQuerySchema as F, updateItemBodySchema as H, reviewSummaryResponseSchema as I, scorerResultSchema as L, listItemVersionsResponseSchema as M, listItemsQuerySchema as N, listDatasetVersionsResponseSchema as O, listItemsResponseSchema as P, tenancyQuerySchema as R, experimentReviewCountsSchema as S, generateItemsResponseSchema as T, updateExperimentResultBodySchema as V, datasetVersionResponseSchema as _, batchInsertItemsResponseSchema as a, experimentResultIdPathParams as b, compareExperimentsBodySchema as c, datasetAndExperimentIdPathParams as d, datasetAndItemIdPathParams as f, datasetResponseSchema as g, datasetItemVersionPathParams as h, batchInsertItemsBodySchema as i, listExperimentsResponseSchema as j, listDatasetsResponseSchema as k, comparisonResponseSchema as l, datasetItemResponseSchema as m, batchDeleteItemsBodySchema as n, clusterFailuresBodySchema as o, datasetIdPathParams as p, batchDeleteItemsResponseSchema as r, clusterFailuresResponseSchema as s, addItemBodySchema as t, createDatasetBodySchema as u, experimentIdPathParams as v, generateItemsBodySchema as w, experimentResultResponseSchema as x, experimentResponseSchema as y, triggerExperimentBodySchema as z };
573
+ export { listExperimentResultsResponseSchema as A, triggerExperimentBodySchema as B, experimentSummaryResponseSchema as C, itemVersionResponseSchema as D, itemIdPathParams as E, listItemsResponseSchema as F, updateExperimentResultBodySchema as H, paginationQuerySchema as I, reviewSummaryResponseSchema as L, listExperimentsResponseSchema as M, listItemVersionsResponseSchema as N, listDatasetVersionsResponseSchema as O, listItemsQuerySchema as P, scorerResultSchema as R, experimentReviewCountsSchema as S, generateItemsResponseSchema as T, updateItemBodySchema as U, updateDatasetBodySchema as V, datasetVersionResponseSchema as _, batchInsertItemsResponseSchema as a, experimentResultIdPathParams as b, compareExperimentsBodySchema as c, datasetAndExperimentIdPathParams as d, datasetAndItemIdPathParams as f, datasetResponseSchema as g, datasetItemVersionPathParams as h, batchInsertItemsBodySchema as i, listExperimentsQuerySchema as j, listDatasetsResponseSchema as k, comparisonResponseSchema as l, datasetItemResponseSchema as m, batchDeleteItemsBodySchema as n, clusterFailuresBodySchema as o, datasetIdPathParams as p, batchDeleteItemsResponseSchema as r, clusterFailuresResponseSchema as s, addItemBodySchema as t, createDatasetBodySchema as u, experimentIdPathParams as v, generateItemsBodySchema as w, experimentResultResponseSchema as x, experimentResponseSchema as y, tenancyQuerySchema as z };
538
574
 
539
- //# sourceMappingURL=datasets-dhXnHLAL.js.map
575
+ //# sourceMappingURL=datasets-BeBH9Seg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datasets-BeBH9Seg.js","names":[],"sources":["../src/server/schemas/datasets.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { paginationInfoSchema } from './common';\n\n// ============================================================================\n// JSON Schema Types (for inputSchema/groundTruthSchema fields)\n// ============================================================================\n\n// JSON Schema type (simplified for storage - full spec too complex)\nconst jsonSchemaObject: z.ZodType<Record<string, unknown>> = z.lazy(() => z.record(z.string(), z.unknown()));\n\n// JSON Schema field (object or null to disable)\nconst jsonSchemaField = z.union([jsonSchemaObject, z.null()]).optional();\n\n// ============================================================================\n// Trajectory Expectation Schema (2 levels deep, children at level 2 use z.unknown())\n// ============================================================================\n\n// Shared base fields for expected steps (level 2 — children typed as z.unknown())\nconst expectedStepBase = {\n name: z.string().describe('Step name to match'),\n durationMs: z.number().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n children: z.unknown().optional().describe('Nested trajectory expectation (untyped at this depth)'),\n};\n\n// Typed step variants keyed by stepType\nconst expectedToolCallStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('tool_call'),\n toolArgs: z.record(z.string(), z.unknown()).optional(),\n toolResult: z.record(z.string(), z.unknown()).optional(),\n success: z.boolean().optional(),\n});\n\nconst expectedMcpToolCallStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('mcp_tool_call'),\n toolArgs: z.record(z.string(), z.unknown()).optional(),\n toolResult: z.record(z.string(), z.unknown()).optional(),\n mcpServer: z.string().optional(),\n success: z.boolean().optional(),\n});\n\nconst expectedModelGenerationStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('model_generation'),\n modelId: z.string().optional(),\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n finishReason: z.string().optional(),\n});\n\nconst expectedAgentRunStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('agent_run'),\n agentId: z.string().optional(),\n});\n\nconst expectedWorkflowStepStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_step'),\n stepId: z.string().optional(),\n status: z.string().optional(),\n output: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst expectedWorkflowRunStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_run'),\n workflowId: z.string().optional(),\n status: z.string().optional(),\n});\n\nconst expectedWorkflowConditionalStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_conditional'),\n conditionCount: z.number().optional(),\n selectedSteps: z.array(z.string()).optional(),\n});\n\nconst expectedWorkflowParallelStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_parallel'),\n branchCount: z.number().optional(),\n parallelSteps: z.array(z.string()).optional(),\n});\n\nconst expectedWorkflowLoopStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_loop'),\n loopType: z.string().optional(),\n totalIterations: z.number().optional(),\n});\n\nconst expectedWorkflowSleepStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_sleep'),\n sleepDurationMs: z.number().optional(),\n sleepType: z.string().optional(),\n});\n\nconst expectedWorkflowWaitEventStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('workflow_wait_event'),\n eventName: z.string().optional(),\n eventReceived: z.boolean().optional(),\n});\n\nconst expectedProcessorRunStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.literal('processor_run'),\n processorId: z.string().optional(),\n});\n\n// Generic step (no stepType — matches by name only)\nconst expectedGenericStepSchema = z.object({\n ...expectedStepBase,\n stepType: z.undefined().optional(),\n});\n\n// Union of all expected step types\nconst expectedStepSchema = z.union([\n z.discriminatedUnion('stepType', [\n expectedToolCallStepSchema,\n expectedMcpToolCallStepSchema,\n expectedModelGenerationStepSchema,\n expectedAgentRunStepSchema,\n expectedWorkflowStepStepSchema,\n expectedWorkflowRunStepSchema,\n expectedWorkflowConditionalStepSchema,\n expectedWorkflowParallelStepSchema,\n expectedWorkflowLoopStepSchema,\n expectedWorkflowSleepStepSchema,\n expectedWorkflowWaitEventStepSchema,\n expectedProcessorRunStepSchema,\n ]),\n expectedGenericStepSchema,\n]);\n\n// Full TrajectoryExpectation schema\nconst trajectoryExpectationSchema = z\n .object({\n // Accuracy\n steps: z.array(expectedStepSchema).optional().describe('Expected steps for accuracy checking'),\n ordering: z\n .enum(['strict', 'relaxed', 'unordered'])\n .optional()\n .describe('How to compare step ordering (default: relaxed)'),\n allowRepeatedSteps: z.boolean().optional().describe('Whether to allow repeated steps (default: true)'),\n\n // Efficiency\n maxSteps: z.number().int().optional().describe('Maximum number of steps allowed'),\n maxTotalTokens: z.number().int().optional().describe('Maximum total tokens across all model_generation steps'),\n maxTotalDurationMs: z.number().optional().describe('Maximum total duration in milliseconds'),\n noRedundantCalls: z\n .boolean()\n .optional()\n .describe('Whether to penalize redundant calls (same tool + same args consecutively, default: true)'),\n\n // Blacklist\n blacklistedTools: z.array(z.string()).optional().describe('Tool names that should never appear'),\n blacklistedSequences: z\n .array(z.array(z.string()))\n .optional()\n .describe('Tool name sequences that should never appear'),\n\n // Tool failure tolerance\n maxRetriesPerTool: z.number().int().optional().describe('Maximum retries per tool before penalizing (default: 2)'),\n })\n .optional()\n .nullable()\n .describe('Expected trajectory configuration for trajectory scoring');\n\n// Dataset item source tracking\nconst datasetItemSourceSchema = z\n .object({\n type: z\n .enum(['csv', 'json', 'trace', 'llm', 'experiment-result', 'candidate-screener'])\n .describe('How this item was created'),\n referenceId: z.string().optional().describe('Reference identifier (e.g., trace id, csv filename)'),\n })\n .optional()\n .describe('Source/provenance of this dataset item');\n\n// Item-level static tool mocks (agent targets only).\nconst itemToolMockSchema = z.object({\n toolName: z.string().describe('Name of the tool this mock applies to'),\n args: z.record(z.string(), z.unknown()).describe('Arguments to match against the tool call'),\n output: z.unknown().describe('Output served to the agent when matched'),\n matchArgs: z\n .enum(['strict', 'ignore'])\n .optional()\n .describe(\"Argument matching mode. 'strict' (default) deep-equals args; 'ignore' matches on toolName only\"),\n});\n\nconst toolMocksSchema = z\n .array(itemToolMockSchema)\n .optional()\n .describe('Ordered item-level static tool mocks served in place of executing the real tool');\n\nconst unmockedToolPolicySchema = z\n .enum(['allow', 'deny'])\n .optional()\n .describe(\"Policy for undeclared tool calls. 'allow' runs them live; 'deny' fails the experiment item\");\n\n// Diagnostic receipt for item-level tool mocks, persisted on experiment results.\nconst toolMockReportSchema = z\n .object({\n served: z.array(z.object({ mockIndex: z.number().int(), toolName: z.string(), args: z.unknown() })),\n unconsumed: z.array(z.object({ mockIndex: z.number().int(), toolName: z.string(), args: z.unknown() })),\n liveCalls: z.array(z.object({ toolName: z.string(), args: z.unknown() })),\n failure: z\n .object({\n code: z.enum(['TOOL_MOCK_MISMATCH', 'TOOL_MOCK_EXHAUSTED', 'TOOL_MOCK_NOT_DECLARED']),\n toolName: z.string(),\n args: z.unknown(),\n })\n .optional(),\n })\n .optional()\n .describe('Diagnostic receipt for item-level tool mocks');\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const datasetIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n});\n\nexport const experimentIdPathParams = z.object({\n experimentId: z.string().describe('Unique identifier for the experiment'),\n});\n\nexport const itemIdPathParams = z.object({\n itemId: z.string().describe('Unique identifier for the dataset item'),\n});\n\nexport const datasetAndExperimentIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n experimentId: z.string().describe('Unique identifier for the experiment'),\n});\n\nexport const experimentResultIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n experimentId: z.string().describe('Unique identifier for the experiment'),\n resultId: z.string().describe('Unique identifier for the experiment result'),\n});\n\nexport const datasetAndItemIdPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n itemId: z.string().describe('Unique identifier for the dataset item'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\nexport const paginationQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n});\n\nexport const listExperimentsQuerySchema = paginationQuerySchema.extend({\n experimentSetId: z.string().optional(),\n comparisonId: z.string().optional(),\n variantId: z.string().optional(),\n trialIndex: z.coerce.number().int().min(0).optional(),\n});\n\nexport const tenancyQuerySchema = z.object({\n organizationId: z.string().optional().describe('Restrict lookup to the given organization'),\n projectId: z.string().optional().describe('Restrict lookup to the given project'),\n});\n\nexport const listItemsQuerySchema = z.object({\n page: z.coerce.number().optional().default(0),\n perPage: z.coerce.number().optional().default(10),\n version: z.coerce.number().int().optional(), // Optional version filter for snapshot semantics\n search: z.string().optional(),\n});\n\n// ============================================================================\n// Request Body Schemas\n// ============================================================================\n\nexport const createDatasetBodySchema = z.object({\n name: z.string().describe('Name of the dataset'),\n description: z.string().optional().describe('Description of the dataset'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n inputSchema: jsonSchemaField.describe('JSON Schema for validating item input'),\n groundTruthSchema: jsonSchemaField.describe('JSON Schema for validating item groundTruth'),\n requestContextSchema: jsonSchemaField.describe('JSON Schema describing expected request context shape'),\n targetType: z.string().optional().describe('Target entity type (e.g. agent, workflow, scorer)'),\n targetIds: z.array(z.string()).optional().describe('IDs of target entities this dataset is attached to'),\n scorerIds: z.array(z.string()).optional().describe('IDs of scorers attached to this dataset'),\n});\n\nexport const updateDatasetBodySchema = z.object({\n name: z.string().optional().describe('Name of the dataset'),\n description: z.string().optional().describe('Description of the dataset'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n inputSchema: jsonSchemaField.describe('JSON Schema for validating item input'),\n groundTruthSchema: jsonSchemaField.describe('JSON Schema for validating item groundTruth'),\n requestContextSchema: jsonSchemaField.describe('JSON Schema describing expected request context shape'),\n tags: z.array(z.string()).optional().describe('Tag definitions for categorizing experiment results'),\n targetType: z.string().optional().describe('Target entity type (e.g. agent, workflow, scorer)'),\n targetIds: z.array(z.string()).optional().describe('IDs of target entities this dataset is attached to'),\n scorerIds: z.array(z.string()).optional().nullable().describe('IDs of scorers attached to this dataset'),\n});\n\nexport const addItemBodySchema = z.object({\n externalId: z.string().optional().nullable().describe('Caller-defined, dataset-local item identity'),\n input: z.unknown().describe('Input data for the dataset item'),\n groundTruth: z.unknown().optional().describe('Expected output for comparison'),\n expectedTrajectory: trajectoryExpectationSchema,\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional().describe('IDs of scorers selected for this item'),\n requestContext: z.record(z.string(), z.unknown()).optional().describe('Request context preset for this item'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n source: datasetItemSourceSchema,\n});\n\nexport const updateItemBodySchema = z.object({\n input: z.unknown().optional().describe('Input data for the dataset item'),\n groundTruth: z.unknown().optional().describe('Expected output for comparison'),\n expectedTrajectory: trajectoryExpectationSchema,\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional().nullable().describe('IDs of scorers selected for this item'),\n requestContext: z.record(z.string(), z.unknown()).optional().describe('Request context preset for this item'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n source: datasetItemSourceSchema,\n});\n\nexport const triggerExperimentBodySchema = z.object({\n targetType: z.enum(['agent', 'workflow', 'scorer']).describe('Type of target to run against'),\n targetId: z.string().describe('ID of the target'),\n name: z.string().optional().describe('Name of the experiment'),\n description: z.string().optional().describe('Description of the experiment'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n scorerIds: z.array(z.string()).optional().describe('IDs of scorers to apply'),\n version: z.coerce.number().int().optional().describe('Pin to specific dataset version'),\n agentVersion: z.string().optional().describe('Agent version ID to use for experiment'),\n maxConcurrency: z.number().optional().describe('Maximum concurrent executions'),\n provenance: z\n .object({\n source: z.string().optional(),\n sourceId: z.string().optional(),\n sourceVersion: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .optional()\n .describe('Caller-provided provenance claims for the experiment execution'),\n grouping: z\n .object({\n experimentSetId: z.string().optional(),\n comparisonId: z.string().optional(),\n variantId: z.string().optional(),\n trialIndex: z.number().int().min(0).optional(),\n })\n .optional()\n .describe('Stable grouping dimensions for comparisons and repeated trials'),\n requestContext: z.record(z.string(), z.unknown()).optional().describe('Global request context passed to the target'),\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 .describe('Version overrides for sub-agent delegation during experiment execution'),\n});\n\nexport const compareExperimentsBodySchema = z.object({\n experimentIdA: z.string().describe('ID of baseline experiment'),\n experimentIdB: z.string().describe('ID of candidate experiment'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n// Dataset entity schema\nexport const datasetResponseSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional().nullable(),\n metadata: z.record(z.string(), z.unknown()).optional().nullable(),\n inputSchema: z.record(z.string(), z.unknown()).optional(),\n groundTruthSchema: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.record(z.string(), z.unknown()).optional(),\n tags: z.array(z.string()).optional().nullable(),\n targetType: z.string().optional().nullable(),\n targetIds: z.array(z.string()).optional().nullable(),\n scorerIds: z.array(z.string()).optional().nullable(),\n version: z.number().int(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\n// Dataset item entity schema\nexport const datasetItemResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string(),\n datasetVersion: z.number().int(),\n externalId: z.string().optional().nullable(),\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n expectedTrajectory: z.unknown().optional(),\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n source: datasetItemSourceSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\n// Experiment entity schema\nexport const experimentResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string().nullable(),\n datasetVersion: z.number().int().nullable(),\n agentVersion: z.string().nullable().optional(),\n targetType: z.enum(['agent', 'workflow', 'scorer', 'processor']),\n targetId: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n provenance: z\n .object({\n source: z.string().optional(),\n sourceId: z.string().optional(),\n sourceVersion: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .nullable()\n .optional(),\n runnerAttestation: z\n .object({\n runnerId: z.string(),\n invocationId: z.string(),\n runnerVersion: z.string().optional(),\n })\n .nullable()\n .optional(),\n experimentSetId: z.string().nullable().optional(),\n comparisonId: z.string().nullable().optional(),\n variantId: z.string().nullable().optional(),\n trialIndex: z.number().int().nullable().optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed']),\n totalItems: z.number(),\n succeededCount: z.number(),\n failedCount: z.number(),\n skippedCount: z.number(),\n startedAt: z.coerce.date().nullable(),\n completedAt: z.coerce.date().nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\n// Scorer result schema\nexport const scorerResultSchema = z.object({\n scorerId: z.string(),\n scorerName: z.string(),\n score: z.number().nullable(),\n reason: z.string().nullable(),\n error: z.string().nullable(),\n});\n\n// Experiment result entity schema\nexport const experimentResultResponseSchema = z.object({\n id: z.string(),\n experimentId: z.string(),\n itemId: z.string(),\n itemDatasetVersion: z.number().int().nullable(),\n input: z.unknown(),\n output: z.unknown().nullable(),\n groundTruth: z.unknown().nullable(),\n expectedTrajectory: z.unknown().optional(),\n error: z\n .object({\n message: z.string(),\n stack: z.string().optional(),\n code: z.string().optional(),\n })\n .nullable(),\n startedAt: z.coerce.date(),\n completedAt: z.coerce.date(),\n retryCount: z.number(),\n traceId: z.string().nullable(),\n status: z.enum(['needs-review', 'reviewed', 'complete']).nullable().optional(),\n tags: z.array(z.string()).nullable().optional(),\n comment: z.string().nullable().optional(),\n toolMockReport: toolMockReportSchema.nullable(),\n createdAt: z.coerce.date(),\n});\n\nexport const updateExperimentResultBodySchema = z.object({\n status: z.enum(['needs-review', 'reviewed', 'complete']).nullable().optional(),\n tags: z.array(z.string()).optional(),\n comment: z.string().nullable().optional(),\n});\n\n// Comparison item schema (MVP shape)\nconst comparisonItemSchema = z.object({\n itemId: z.string(),\n input: z.unknown().nullable(),\n groundTruth: z.unknown().nullable(),\n results: z.record(\n z.string(),\n z\n .object({\n output: z.unknown().nullable(),\n scores: z.record(z.string(), z.number().nullable()),\n })\n .nullable(),\n ),\n});\n\n// Comparison result schema\nexport const comparisonResponseSchema = z.object({\n baselineId: z.string(),\n items: z.array(comparisonItemSchema),\n});\n\n// Experiment summary schema (returned by trigger experiment)\n// Note: completedAt is nullable for pending/running experiments (async trigger)\nexport const experimentSummaryResponseSchema = z.object({\n experimentId: z.string(),\n status: z.enum(['pending', 'running', 'completed', 'failed']),\n totalItems: z.number(),\n succeededCount: z.number(),\n failedCount: z.number(),\n startedAt: z.coerce.date(),\n completedAt: z.coerce.date().nullable(),\n results: z.array(\n z.object({\n itemId: z.string(),\n itemDatasetVersion: z.number().int().nullable(),\n input: z.unknown(),\n output: z.unknown().nullable(),\n groundTruth: z.unknown().nullable(),\n error: z.string().nullable(),\n startedAt: z.coerce.date(),\n completedAt: z.coerce.date(),\n retryCount: z.number(),\n toolMockReport: toolMockReportSchema.nullable(),\n scores: z.array(\n z.object({\n scorerId: z.string(),\n scorerName: z.string(),\n score: z.number().nullable(),\n reason: z.string().nullable(),\n error: z.string().nullable(),\n }),\n ),\n }),\n ),\n});\n\n// ============================================================================\n// List Response Schemas\n// ============================================================================\n\nexport const listDatasetsResponseSchema = z.object({\n datasets: z.array(datasetResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const listItemsResponseSchema = z.object({\n items: z.array(datasetItemResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const listExperimentsResponseSchema = z.object({\n experiments: z.array(experimentResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const listExperimentResultsResponseSchema = z.object({\n results: z.array(experimentResultResponseSchema),\n pagination: paginationInfoSchema,\n});\n\nexport const experimentReviewCountsSchema = z.object({\n experimentId: z.string(),\n total: z.number().int(),\n needsReview: z.number().int(),\n reviewed: z.number().int(),\n complete: z.number().int(),\n});\n\nexport const reviewSummaryResponseSchema = z.object({\n counts: z.array(experimentReviewCountsSchema),\n});\n\n// ============================================================================\n// Version Schemas\n// ============================================================================\n\n// Path params for item version routes\nexport const datasetItemVersionPathParams = z.object({\n datasetId: z.string().describe('Unique identifier for the dataset'),\n itemId: z.string().describe('Unique identifier for the dataset item'),\n datasetVersion: z.coerce.number().int().describe('Dataset version number'),\n});\n\n// Item history row response schema (SCD-2 DatasetItemRow shape)\nexport const itemVersionResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string(),\n datasetVersion: z.number().int(),\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n expectedTrajectory: z.unknown().optional(),\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n validTo: z.number().int().nullable(),\n isDeleted: z.boolean(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n});\n\nexport const listItemVersionsResponseSchema = z.object({\n history: z.array(itemVersionResponseSchema),\n});\n\n// Dataset version response schema\nexport const datasetVersionResponseSchema = z.object({\n id: z.string(),\n datasetId: z.string(),\n version: z.number().int(),\n createdAt: z.coerce.date(),\n});\n\nexport const listDatasetVersionsResponseSchema = z.object({\n versions: z.array(datasetVersionResponseSchema),\n pagination: paginationInfoSchema,\n});\n\n// ============================================================================\n// Batch Operation Schemas\n// ============================================================================\n\nexport const batchInsertItemsBodySchema = z.object({\n items: z.array(\n z.object({\n externalId: z.string().optional().nullable(),\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n expectedTrajectory: trajectoryExpectationSchema,\n toolMocks: toolMocksSchema,\n unmockedToolPolicy: unmockedToolPolicySchema,\n scorerIds: z.array(z.string()).optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n source: datasetItemSourceSchema,\n }),\n ),\n});\n\nexport const batchInsertItemsResponseSchema = z.object({\n items: z.array(datasetItemResponseSchema),\n count: z.number(),\n});\n\nexport const batchDeleteItemsBodySchema = z.object({\n itemIds: z.array(z.string()),\n});\n\nexport const batchDeleteItemsResponseSchema = z.object({\n success: z.boolean(),\n deletedCount: z.number(),\n});\n\n// ============================================================================\n// AI Generation Schemas\n// ============================================================================\n\nexport const generateItemsBodySchema = z.object({\n modelId: z.string().describe('Model identifier in \"provider/model\" format (e.g., \"openai/gpt-4o\")'),\n prompt: z.string().describe('Description of the kind of test data to generate'),\n count: z.number().int().min(1).max(50).default(5).describe('Number of items to generate'),\n agentContext: z\n .object({\n description: z.string().optional(),\n instructions: z.string().optional(),\n tools: z.array(z.string()).optional(),\n })\n .optional()\n .describe('Context about the agent to generate relevant test data'),\n});\n\nconst generatedItemSchema = z.object({\n input: z.unknown(),\n groundTruth: z.unknown().optional(),\n});\n\nexport const generateItemsResponseSchema = z.object({\n items: z.array(generatedItemSchema),\n});\n\n// ============================================================================\n// Cluster Failures\n// ============================================================================\n\nexport const clusterFailuresBodySchema = z.object({\n modelId: z.string().describe('Model identifier in \"provider/model\" format (e.g., \"openai/gpt-4o\")'),\n items: z\n .array(\n z.object({\n id: z.string(),\n input: z.unknown(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n scores: z.record(z.string(), z.number()).optional(),\n existingTags: z.array(z.string()).optional().describe('Tags already applied to this item'),\n }),\n )\n .min(1)\n .max(200)\n .describe('Failure items to cluster'),\n availableTags: z\n .array(z.string())\n .optional()\n .describe('Existing tag vocabulary from the dataset. The LLM should prefer reusing these tags when applicable.'),\n prompt: z\n .string()\n .optional()\n .describe('Optional user instructions to guide the analysis (e.g., \"focus on tool usage failures\")'),\n});\n\nconst failureClusterSchema = z.object({\n id: z.string().describe('A unique cluster identifier'),\n label: z.string().describe('Short label for this failure pattern'),\n description: z.string().describe('Description of the common pattern'),\n itemIds: z.array(z.string()).describe('IDs of items belonging to this cluster'),\n});\n\nexport const clusterFailuresResponseSchema = z.object({\n clusters: z.array(failureClusterSchema),\n /** Per-item proposed tag assignments. Each entry maps an item ID to the tags the LLM suggests adding. */\n proposedTags: z\n .array(\n z.object({\n itemId: z.string(),\n tags: z.array(z.string()),\n reason: z.string().describe('Brief explanation of why these tags were assigned to this item'),\n }),\n )\n .optional(),\n});\n"],"mappings":"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"}
@@ -5962,7 +5962,7 @@ function splitLines(text) {
5962
5962
  return result;
5963
5963
  }
5964
5964
  //#endregion
5965
- //#region ../memory/dist/src-Cwt9gefz.js
5965
+ //#region ../memory/dist/src-Iw-V5CfD.js
5966
5966
  var __defProp$3 = Object.defineProperty;
5967
5967
  var __exportAll = (all, no_symbols) => {
5968
5968
  let target = {};
@@ -20725,6 +20725,7 @@ var Extractor = class Extractor {
20725
20725
  includePreviousExtraction;
20726
20726
  metadataKeyPath;
20727
20727
  onExtracted;
20728
+ retryStructuredExtractionOnEmptyObject;
20728
20729
  /** @internal */
20729
20730
  internal;
20730
20731
  instructionsConfig;
@@ -20747,6 +20748,7 @@ var Extractor = class Extractor {
20747
20748
  this.includePreviousExtraction = config.includePreviousExtraction ?? true;
20748
20749
  this.metadataKeyPath = config.metadataKeyPath ?? `extracted.${slug}`;
20749
20750
  this.onExtracted = config.onExtracted;
20751
+ this.retryStructuredExtractionOnEmptyObject = config.retryStructuredExtractionOnEmptyObject ?? false;
20750
20752
  this.internal = internal;
20751
20753
  }
20752
20754
  async resolve(context) {
@@ -20759,7 +20761,8 @@ var Extractor = class Extractor {
20759
20761
  ...schema ? { schema } : {},
20760
20762
  includePreviousExtraction: this.includePreviousExtraction,
20761
20763
  metadataKeyPath: this.metadataKeyPath,
20762
- onExtracted: this.onExtracted
20764
+ onExtracted: this.onExtracted,
20765
+ retryStructuredExtractionOnEmptyObject: this.retryStructuredExtractionOnEmptyObject
20763
20766
  }, this.internal);
20764
20767
  }
20765
20768
  };
@@ -21078,6 +21081,9 @@ if (OM_DEBUG_LOG) {
21078
21081
  function isAbortError$1(error, abortSignal) {
21079
21082
  return abortSignal?.aborted === true || error instanceof DOMException && error.name === "AbortError" || error instanceof Error && error.name === "AbortError";
21080
21083
  }
21084
+ function shouldRetryEmptyStructuredObject(object, extractors) {
21085
+ return Object.keys(object).length === 0 && extractors.some((extractor) => extractor.retryStructuredExtractionOnEmptyObject);
21086
+ }
21081
21087
  async function extractStructuredValues(opts) {
21082
21088
  const structuredExtractors = (opts.extractors ?? []).filter((extractor) => extractor.mode === "structured");
21083
21089
  if (structuredExtractors.length === 0) return {
@@ -21114,8 +21120,10 @@ ${extractorInstructions}${priorLines.length > 0 ? `\n\n## Prior Extracted Values
21114
21120
  return output.object;
21115
21121
  };
21116
21122
  let object;
21123
+ let retryEmptyObject = false;
21117
21124
  try {
21118
21125
  object = await generateWithStructuredOutput();
21126
+ retryEmptyObject = shouldRetryEmptyStructuredObject(object, structuredExtractors);
21119
21127
  } catch (error) {
21120
21128
  if (isAbortError$1(error, opts.abortSignal)) throw error;
21121
21129
  try {
@@ -21132,6 +21140,19 @@ ${extractorInstructions}${priorLines.length > 0 ? `\n\n## Prior Extracted Values
21132
21140
  };
21133
21141
  }
21134
21142
  }
21143
+ if (retryEmptyObject) try {
21144
+ object = await generateWithStructuredOutput(_mastra_core_features.coreFeatures.has("json-prompt-injection:inline") ? "inline" : true);
21145
+ } catch (fallbackError) {
21146
+ if (isAbortError$1(fallbackError, opts.abortSignal)) throw fallbackError;
21147
+ const message = fallbackError instanceof Error ? fallbackError.message : String(fallbackError);
21148
+ return {
21149
+ values,
21150
+ failures: structuredExtractors.map((extractor) => ({
21151
+ slug: extractor.slug,
21152
+ error: message
21153
+ }))
21154
+ };
21155
+ }
21135
21156
  for (const extractor of structuredExtractors) {
21136
21157
  const value = object[extractor.slug];
21137
21158
  if (value === void 0 || value === null || value === "") continue;
@@ -24415,6 +24436,17 @@ var TokenCounter = class TokenCounter {
24415
24436
  toolResultDelta
24416
24437
  };
24417
24438
  }
24439
+ if (invocation.state === "output-error") {
24440
+ toolResultDelta++;
24441
+ const errorText = invocation.errorText;
24442
+ const errorMessage = typeof errorText === "string" ? errorText : "Tool execution failed";
24443
+ tokens += this.readOrPersistPartEstimate(part, "tool-result-error", errorMessage);
24444
+ return {
24445
+ tokens,
24446
+ overheadDelta,
24447
+ toolResultDelta
24448
+ };
24449
+ }
24418
24450
  throw new Error(`Unhandled tool-invocation state '${part.toolInvocation?.state}' in token counting for part type '${part.type}'`);
24419
24451
  }
24420
24452
  if (typeof part.type === "string" && part.type.startsWith("data-")) return {
@@ -24636,6 +24668,7 @@ var WorkingMemoryExtractor = class extends Extractor {
24636
24668
  name: "Working Memory",
24637
24669
  includePreviousExtraction: false,
24638
24670
  metadataKeyPath: false,
24671
+ retryStructuredExtractionOnEmptyObject: true,
24639
24672
  instructions: async (context) => buildWorkingMemoryInstructions(await getWorkingMemoryDetails(context)),
24640
24673
  schema: async (context) => {
24641
24674
  return (await getWorkingMemoryDetails(context)).usesSchema ? zod.z.union([zod.z.record(zod.z.string(), zod.z.unknown()), zod.z.null()]) : void 0;
@@ -26801,7 +26834,7 @@ var ObservationStrategy = class ObservationStrategy {
26801
26834
  transient: true
26802
26835
  }).catch(() => {});
26803
26836
  const markerThreadId = marker.data?.threadId ?? this.opts.threadId;
26804
- await this.persistMarkerToStorage(marker, markerThreadId, this.opts.resourceId);
26837
+ if (!await this.persistMarkerToMessage(marker, this.opts.messageList, markerThreadId, this.opts.resourceId)) await this.persistMarkerToStorage(marker, markerThreadId, this.opts.resourceId);
26805
26838
  }
26806
26839
  getObservationMarkerConfig() {
26807
26840
  return {
@@ -26929,9 +26962,13 @@ var ObservationStrategy = class ObservationStrategy {
26929
26962
  /**
26930
26963
  * Persist a marker part on the last assistant message in a MessageList
26931
26964
  * AND save the updated message to the DB.
26965
+ *
26966
+ * @returns true when a marker was placed on an assistant message, false when
26967
+ * no list was provided or the list contains no assistant message (caller
26968
+ * should fall back to `persistMarkerToStorage`).
26932
26969
  */
26933
26970
  async persistMarkerToMessage(marker, messageList, threadId, resourceId) {
26934
- if (!messageList) return;
26971
+ if (!messageList) return false;
26935
26972
  const allMsgs = messageList.get.all.db();
26936
26973
  for (let i = allMsgs.length - 1; i >= 0; i--) {
26937
26974
  const msg = allMsgs[i];
@@ -26947,9 +26984,10 @@ var ObservationStrategy = class ObservationStrategy {
26947
26984
  } catch (e) {
26948
26985
  omDebug(`[OM:persistMarker] failed to save marker to DB: ${e}`);
26949
26986
  }
26950
- return;
26987
+ return true;
26951
26988
  }
26952
26989
  }
26990
+ return false;
26953
26991
  }
26954
26992
  };
26955
26993
  var SyncObservationStrategy = class extends ObservationStrategy {
@@ -27746,6 +27784,12 @@ var ObservationStep = class {
27746
27784
  stepNumber;
27747
27785
  _prepared = false;
27748
27786
  _context;
27787
+ /**
27788
+ * True when this step seeded an empty assistant response message for a step-0
27789
+ * observation. While set, the response-id rotation hook must NOT run — rotating
27790
+ * would orphan the seed (markers would sit on a message the agent never streams into).
27791
+ */
27792
+ seededResponseMessage = false;
27749
27793
  constructor(turn, stepNumber) {
27750
27794
  this.turn = turn;
27751
27795
  this.stepNumber = stepNumber;
@@ -27874,15 +27918,41 @@ var ObservationStep = class {
27874
27918
  });
27875
27919
  buffered = true;
27876
27920
  }
27877
- if (this.stepNumber > 0) {
27878
- const newInput = messageList.clear.input.db();
27879
- const newOutput = messageList.clear.response.db();
27880
- const messagesToSave = [...newInput, ...newOutput];
27881
- if (messagesToSave.length > 0) {
27882
- await om.persistMessages(messagesToSave, threadId, resourceId);
27883
- for (const msg of messagesToSave) messageList.add(msg, "memory");
27921
+ const willObserveNow = statusSnapshot.shouldObserve && !hasIncompleteToolCalls;
27922
+ /** In-flight message ids the step-0 cleanup must never remove from live context. */
27923
+ let step0PreserveIds;
27924
+ if (this.stepNumber > 0 || willObserveNow) {
27925
+ if (this.stepNumber > 0) {
27926
+ const newInput = messageList.clear.input.db();
27927
+ const newOutput = messageList.clear.response.db();
27928
+ const messagesToSave = [...newInput, ...newOutput];
27929
+ if (messagesToSave.length > 0) {
27930
+ await om.persistMessages(messagesToSave, threadId, resourceId);
27931
+ for (const msg of messagesToSave) messageList.add(msg, "memory");
27932
+ }
27933
+ } else {
27934
+ const pending = [...messageList.get.input.db(), ...messageList.get.response.db()];
27935
+ if (pending.length > 0) await om.persistMessages(pending, threadId, resourceId);
27936
+ step0PreserveIds = pending.map((msg) => msg.id);
27937
+ }
27938
+ if (this.stepNumber === 0 && willObserveNow && this.turn.responseMessageId) {
27939
+ const seed = {
27940
+ id: this.turn.responseMessageId,
27941
+ role: "assistant",
27942
+ content: {
27943
+ format: 2,
27944
+ parts: []
27945
+ },
27946
+ type: "text",
27947
+ createdAt: /* @__PURE__ */ new Date(),
27948
+ threadId,
27949
+ resourceId
27950
+ };
27951
+ messageList.add(seed, "response");
27952
+ this.seededResponseMessage = true;
27953
+ omDebug(`[OM:step0] seeded response message ${seed.id} for step-0 observation markers`);
27884
27954
  }
27885
- if (statusSnapshot.shouldObserve && !hasIncompleteToolCalls) {
27955
+ if (willObserveNow) {
27886
27956
  const preObsGeneration = this.turn.record.generationCount;
27887
27957
  const obsResult = await this.runThresholdObservation();
27888
27958
  observerExchange = obsResult.observerExchange;
@@ -27896,7 +27966,8 @@ var ObservationStep = class {
27896
27966
  resourceId,
27897
27967
  messages: messageList,
27898
27968
  observedMessageIds: observedIds,
27899
- retentionFloor: minRemaining
27969
+ retentionFloor: minRemaining,
27970
+ preserveMessageIds: step0PreserveIds
27900
27971
  });
27901
27972
  if (statusSnapshot.asyncObservationEnabled) await om.resetBufferingState({
27902
27973
  threadId,
@@ -27960,10 +28031,11 @@ var ObservationStep = class {
27960
28031
  const { threadId, resourceId, messageList } = this.turn;
27961
28032
  const om = this.turn.om;
27962
28033
  await om.waitForBuffering(threadId, resourceId);
28034
+ const observableMessages = this.seededResponseMessage ? messageList.get.all.db().filter((msg) => msg.id !== this.turn.responseMessageId) : messageList.get.all.db();
27963
28035
  const freshStatus = await om.getStatus({
27964
28036
  threadId,
27965
28037
  resourceId,
27966
- messages: messageList.get.all.db()
28038
+ messages: observableMessages
27967
28039
  });
27968
28040
  if (!freshStatus.shouldObserve) return {
27969
28041
  succeeded: false,
@@ -27973,7 +28045,7 @@ var ObservationStep = class {
27973
28045
  const activation = await om.activate({
27974
28046
  threadId,
27975
28047
  resourceId,
27976
- messages: messageList.get.all.db(),
28048
+ messages: observableMessages,
27977
28049
  currentModel: this.turn.actorModelContext,
27978
28050
  writer: this.turn.writer,
27979
28051
  messageList
@@ -28006,7 +28078,8 @@ var ObservationStep = class {
28006
28078
  const obsResult = await om.observe({
28007
28079
  threadId,
28008
28080
  resourceId,
28009
- messages: messageList.get.all.db(),
28081
+ messages: observableMessages,
28082
+ messageList,
28010
28083
  trigger: "turn-sync",
28011
28084
  requestContext: this.turn.requestContext,
28012
28085
  writer: this.turn.writer,
@@ -28023,10 +28096,12 @@ var ObservationStep = class {
28023
28096
  break;
28024
28097
  }
28025
28098
  }
28026
- const messageToSeal = latestObservedIndex >= 0 ? liveMessages[latestObservedIndex] : void 0;
28099
+ let messageToSeal = latestObservedIndex >= 0 ? liveMessages[latestObservedIndex] : void 0;
28100
+ if (this.stepNumber === 0 && messageToSeal?.role !== "assistant") messageToSeal = void 0;
28027
28101
  const messagesToSeal = messageToSeal ? [messageToSeal] : [];
28028
28102
  om.sealMessagesForBuffering(messagesToSeal);
28029
- try {
28103
+ if (this.seededResponseMessage) omDebug("[OM:observe] skipping response-id rotation — step-0 seeded response message holds the active id");
28104
+ else try {
28030
28105
  await this.turn.hooks?.onSyncObservationComplete?.();
28031
28106
  } catch (error) {
28032
28107
  omDebug(`[OM:observe] onSyncObservationComplete hook failed: ${error instanceof Error ? error.message : String(error)}`);
@@ -28085,6 +28160,8 @@ var ObservationTurn = class {
28085
28160
  sendSignal;
28086
28161
  /** Current actor model for this step. Updated by the processor before prepare(). */
28087
28162
  actorModelContext;
28163
+ /** The active assistant response message ID for this step. Updated by the processor before prepare(). */
28164
+ responseMessageId;
28088
28165
  /** Processor-provided hooks for turn/step lifecycle integration. */
28089
28166
  hooks;
28090
28167
  constructor(opts) {
@@ -30745,6 +30822,7 @@ ${formattedMessages}
30745
30822
  */
30746
30823
  async getObservedMessageIdsForCleanup(opts) {
30747
30824
  const { threadId, resourceId, messages, observedMessageIds, retentionFloor } = opts;
30825
+ const preserveSet = opts.preserveMessageIds?.length ? new Set(opts.preserveMessageIds) : null;
30748
30826
  const record = await this.getOrCreateRecord(threadId, resourceId);
30749
30827
  const effectiveObservedIds = observedMessageIds && observedMessageIds.length > 0 ? observedMessageIds : Array.isArray(record.observedMessageIds) ? record.observedMessageIds : [];
30750
30828
  if (effectiveObservedIds.length === 0) return [];
@@ -30756,6 +30834,10 @@ ${formattedMessages}
30756
30834
  const retentionCounter = typeof retentionFloor === "number" ? new TokenCounter() : null;
30757
30835
  for (const msg of messages) {
30758
30836
  if (!msg?.id || msg.id === "om-continuation" || !observedSet.has(msg.id)) continue;
30837
+ if (preserveSet?.has(msg.id)) {
30838
+ skipped += 1;
30839
+ continue;
30840
+ }
30759
30841
  const unobservedParts = getUnobservedParts(msg);
30760
30842
  const totalParts = msg.content?.parts?.length ?? 0;
30761
30843
  if (unobservedParts.length > 0 && unobservedParts.length < totalParts) {
@@ -30800,7 +30882,7 @@ ${formattedMessages}
30800
30882
  */
30801
30883
  /** @internal Used by ObservationStep. */
30802
30884
  async cleanupMessages(opts) {
30803
- const { threadId, resourceId, observedMessageIds, retentionFloor } = opts;
30885
+ const { threadId, resourceId, observedMessageIds, retentionFloor, preserveMessageIds } = opts;
30804
30886
  const messageList = this.isMessageList(opts.messages) ? opts.messages : void 0;
30805
30887
  const allMsgs = messageList ? messageList.get.all.db() : opts.messages;
30806
30888
  let markerIdx = -1;
@@ -30821,7 +30903,8 @@ ${formattedMessages}
30821
30903
  resourceId,
30822
30904
  messages: allMsgs,
30823
30905
  observedMessageIds,
30824
- retentionFloor
30906
+ retentionFloor,
30907
+ preserveMessageIds
30825
30908
  });
30826
30909
  if (messageList) {
30827
30910
  if (idsToRemoveList.length > 0) messageList.removeByIds(idsToRemoveList);
@@ -30833,18 +30916,21 @@ ${formattedMessages}
30833
30916
  if (markerMsg && markerIdx !== -1) {
30834
30917
  const idsToRemove = [];
30835
30918
  const messagesToSave = [];
30919
+ const preserveSet = preserveMessageIds?.length ? new Set(preserveMessageIds) : null;
30836
30920
  for (let i = 0; i < markerIdx; i++) {
30837
30921
  const msg = allMsgs[i];
30838
- if (msg?.id && msg.id !== "om-continuation") {
30922
+ if (msg?.id && msg.id !== "om-continuation" && !preserveSet?.has(msg.id)) {
30839
30923
  idsToRemove.push(msg.id);
30840
30924
  messagesToSave.push(msg);
30841
30925
  }
30842
30926
  }
30843
30927
  messagesToSave.push(markerMsg);
30844
- const unobservedParts = getUnobservedParts(markerMsg);
30845
- if (unobservedParts.length === 0) {
30846
- if (markerMsg.id) idsToRemove.push(markerMsg.id);
30847
- } else if (unobservedParts.length < (markerMsg.content?.parts?.length ?? 0)) markerMsg.content.parts = unobservedParts;
30928
+ if (!Boolean(markerMsg.id && preserveSet?.has(markerMsg.id))) {
30929
+ const unobservedParts = getUnobservedParts(markerMsg);
30930
+ if (unobservedParts.length === 0) {
30931
+ if (markerMsg.id) idsToRemove.push(markerMsg.id);
30932
+ } else if (unobservedParts.length < (markerMsg.content?.parts?.length ?? 0)) markerMsg.content.parts = unobservedParts;
30933
+ }
30848
30934
  if (messageList) {
30849
30935
  if (idsToRemove.length > 0) messageList.removeByIds(idsToRemove);
30850
30936
  if (messagesToSave.length > 0) await this.persistMessages(messagesToSave, threadId, resourceId);
@@ -31631,6 +31717,7 @@ ${formattedMessages}
31631
31717
  threadId,
31632
31718
  resourceId,
31633
31719
  messages: unobservedMessages,
31720
+ messageList: opts.messageList,
31634
31721
  reflectionHooks,
31635
31722
  agent: opts.agent,
31636
31723
  requestContext,
@@ -32016,7 +32103,7 @@ var ObservationalMemoryProcessor = class {
32016
32103
  this.temporalMarkers = options?.temporalMarkers ?? false;
32017
32104
  }
32018
32105
  async processInputStep(args) {
32019
- const { messageList, requestContext, stepNumber, state: _state, writer, model, abortSignal, abort, rotateResponseMessageId } = args;
32106
+ const { messageList, requestContext, stepNumber, state: _state, writer, model, abortSignal, abort, messageId, rotateResponseMessageId } = args;
32020
32107
  const state = _state ?? {};
32021
32108
  omDebug(`[OM:processInputStep:ENTER] step=${stepNumber}, hasMastraMemory=${!!requestContext?.get("MastraMemory")}, hasMemoryInfo=${!!messageList?.serialize()?.memoryInfo?.threadId}`);
32022
32109
  const context = this.engine.getThreadContext(requestContext, messageList);
@@ -32102,6 +32189,7 @@ var ObservationalMemoryProcessor = class {
32102
32189
  state.__omObservabilityContext = observabilityContext;
32103
32190
  this.turn.observabilityContext = observabilityContext;
32104
32191
  this.turn.actorModelContext = actorModelContext;
32192
+ this.turn.responseMessageId = messageId;
32105
32193
  {
32106
32194
  const step = this.turn.step(stepNumber);
32107
32195
  let ctx;
@@ -44608,4 +44696,4 @@ const agentBuilderWorkflows = {
44608
44696
  //#endregion
44609
44697
  exports.agentBuilderWorkflows = agentBuilderWorkflows;
44610
44698
 
44611
- //# sourceMappingURL=dist-COHIL6fR.cjs.map
44699
+ //# sourceMappingURL=dist-DgY0llRv.cjs.map