{"version":3,"sources":["../src/tools/payload-transform.ts"],"names":[],"mappings":"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","file":"chunk-VPZGHUNF.cjs","sourcesContent":["import type { IMastraLogger } from '../logger';\nimport type {\n  ToolPayloadTransform,\n  ToolPayloadTransformContext,\n  ToolPayloadTransformFunction,\n  ToolPayloadTransformPhase,\n  ToolPayloadTransformPolicy,\n  ToolPayloadTransformTarget,\n} from './types';\n\nexport type TransformedToolPayloadState = {\n  transformed?: unknown;\n  suppress?: boolean;\n  failed?: boolean;\n};\n\nexport type ToolPayloadTransformMetadata = Partial<\n  Record<ToolPayloadTransformTarget, Partial<Record<ToolPayloadTransformPhase, TransformedToolPayloadState>>>\n>;\n\nexport type ToolPayloadTransformSource = {\n  policy?: ToolPayloadTransformPolicy;\n  toolTransform?: ToolPayloadTransform;\n};\n\ntype LegacyToolPayloadProjectionPolicy = {\n  projectToolPayload?: ToolPayloadTransformFunction;\n  targets?: ToolPayloadTransformTarget[];\n};\n\nexport function normalizeToolPayloadTransformPolicy(\n  policy: ToolPayloadTransformPolicy | LegacyToolPayloadProjectionPolicy | undefined,\n): ToolPayloadTransformPolicy | undefined {\n  if (!policy) {\n    return undefined;\n  }\n\n  if ('transformToolPayload' in policy) {\n    return policy;\n  }\n\n  if ('projectToolPayload' in policy && policy.projectToolPayload) {\n    return {\n      transformToolPayload: policy.projectToolPayload,\n      targets: policy.targets,\n    };\n  }\n\n  return undefined;\n}\n\nconst PHASE_TO_TOOL_TRANSFORMER: Record<ToolPayloadTransformPhase, keyof NonNullable<ToolPayloadTransform['display']>> =\n  {\n    'input-delta': 'inputDelta',\n    'input-available': 'input',\n    'output-available': 'output',\n    error: 'error',\n    approval: 'approval',\n    suspend: 'suspend',\n    resume: 'resume',\n  };\n\nfunction isPolicyConfiguredForTarget(\n  policy: ToolPayloadTransformPolicy | undefined,\n  target: ToolPayloadTransformTarget,\n) {\n  return Boolean(policy?.transformToolPayload && (!policy.targets || policy.targets.includes(target)));\n}\n\nfunction isTransformConfigured(source: ToolPayloadTransformSource | undefined, target: ToolPayloadTransformTarget) {\n  return Boolean(isPolicyConfiguredForTarget(source?.policy, target) || source?.toolTransform?.[target]);\n}\n\nfunction getToolTransformer(\n  source: ToolPayloadTransformSource | undefined,\n  target: ToolPayloadTransformTarget,\n  phase: ToolPayloadTransformPhase,\n): ToolPayloadTransformFunction | undefined {\n  return source?.toolTransform?.[target]?.[PHASE_TO_TOOL_TRANSFORMER[phase]];\n}\n\nfunction safePlaceholder(context: ToolPayloadTransformContext) {\n  return {\n    message: `Tool ${context.phase} payload unavailable`,\n  };\n}\n\nasync function transformOneTarget(\n  context: ToolPayloadTransformContext,\n  source: ToolPayloadTransformSource | undefined,\n  logger?: IMastraLogger,\n): Promise<TransformedToolPayloadState | undefined> {\n  const configured = isTransformConfigured(source, context.target);\n  if (!configured) {\n    return undefined;\n  }\n\n  const transformers = [\n    isPolicyConfiguredForTarget(source?.policy, context.target) ? source?.policy?.transformToolPayload : undefined,\n    getToolTransformer(source, context.target, context.phase),\n  ].filter(Boolean) as ToolPayloadTransformFunction[];\n\n  if (transformers.length === 0) {\n    return context.phase === 'input-delta' ? { suppress: true } : { transformed: safePlaceholder(context) };\n  }\n\n  for (const transformer of transformers) {\n    try {\n      const transformed = await transformer(context);\n      if (transformed !== undefined) {\n        return { transformed };\n      }\n    } catch (error) {\n      logger?.warn?.('Tool payload transform failed', {\n        toolName: context.toolName,\n        toolCallId: context.toolCallId,\n        target: context.target,\n        phase: context.phase,\n        error,\n      });\n      return context.phase === 'input-delta'\n        ? { suppress: true, failed: true }\n        : { transformed: safePlaceholder(context), failed: true };\n    }\n  }\n\n  return context.phase === 'input-delta' ? { suppress: true } : { transformed: safePlaceholder(context) };\n}\n\nexport async function transformToolPayloadForTargets(\n  context: Omit<ToolPayloadTransformContext, 'target'>,\n  source: ToolPayloadTransformSource | undefined,\n  logger?: IMastraLogger,\n): Promise<ToolPayloadTransformMetadata | undefined> {\n  const display = await transformOneTarget({ ...context, target: 'display' }, source, logger);\n  const transcript = await transformOneTarget({ ...context, target: 'transcript' }, source, logger);\n\n  if (!display && !transcript) {\n    return undefined;\n  }\n\n  return {\n    ...(display ? { display: { [context.phase]: display } } : {}),\n    ...(transcript ? { transcript: { [context.phase]: transcript } } : {}),\n  };\n}\n\nexport function getTransformedToolPayload(\n  metadata: unknown,\n  target: ToolPayloadTransformTarget,\n  phase: ToolPayloadTransformPhase,\n): TransformedToolPayloadState | undefined {\n  const mastraMetadata = (metadata as { mastra?: Record<string, any> } | undefined)?.mastra;\n  const state =\n    mastraMetadata?.toolPayloadTransform?.[target]?.[phase] ?? mastraMetadata?.toolPayloadProjection?.[target]?.[phase];\n\n  if (\n    state &&\n    Object.prototype.hasOwnProperty.call(state, 'projected') &&\n    !Object.prototype.hasOwnProperty.call(state, 'transformed')\n  ) {\n    const { projected, ...rest } = state;\n    return { ...rest, transformed: projected };\n  }\n\n  return state;\n}\n\nexport function hasTransformedToolPayload(\n  transform: TransformedToolPayloadState | undefined,\n): transform is TransformedToolPayloadState & { transformed: unknown } {\n  return Boolean(transform && Object.prototype.hasOwnProperty.call(transform, 'transformed'));\n}\n\nfunction mergeTransformMetadata(\n  existing: ToolPayloadTransformMetadata | undefined,\n  next: ToolPayloadTransformMetadata | undefined,\n): ToolPayloadTransformMetadata | undefined {\n  if (!existing) {\n    return next;\n  }\n  if (!next) {\n    return existing;\n  }\n\n  return {\n    display: {\n      ...(existing.display ?? {}),\n      ...(next.display ?? {}),\n    },\n    transcript: {\n      ...(existing.transcript ?? {}),\n      ...(next.transcript ?? {}),\n    },\n  };\n}\n\nexport function withToolPayloadTransformProviderMetadata<T extends Record<string, any> | undefined>(\n  providerMetadata: T,\n  transformMetadata: { mastra?: { toolPayloadTransform?: ToolPayloadTransformMetadata } } | undefined,\n): T | Record<string, any> | undefined {\n  const transform = transformMetadata?.mastra?.toolPayloadTransform;\n  if (!transform) {\n    return providerMetadata;\n  }\n\n  return {\n    ...(providerMetadata ?? {}),\n    mastra: {\n      ...(providerMetadata?.mastra ?? {}),\n      toolPayloadTransform: mergeTransformMetadata(providerMetadata?.mastra?.toolPayloadTransform, transform),\n    },\n  };\n}\n\nexport function withToolPayloadTransformMetadata<T extends { metadata?: Record<string, any> }>(\n  chunk: T,\n  transform: ToolPayloadTransformMetadata | undefined,\n): T {\n  if (!transform) {\n    return chunk;\n  }\n\n  return {\n    ...chunk,\n    metadata: {\n      ...(chunk.metadata ?? {}),\n      mastra: {\n        ...(chunk.metadata?.mastra ?? {}),\n        toolPayloadTransform: mergeTransformMetadata(chunk.metadata?.mastra?.toolPayloadTransform, transform),\n      },\n    },\n  };\n}\n"]}