{"version":3,"sources":["../src/agent/message-list/prompt/data-content.ts","../src/agent/signals.ts"],"names":["convertUint8ArrayToBase64","decoded","part"],"mappings":"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","file":"chunk-S52WZUDZ.cjs","sourcesContent":["import type { DataContent } from '@ai-sdk/provider-utils-v5';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils-v5';\n\n/**\nConverts data content to a base64-encoded string.\n\n@param content - Data content to convert.\n@returns Base64-encoded string.\n*/\nexport function convertDataContentToBase64String(content: DataContent): string {\n  if (typeof content === 'string') {\n    return content;\n  }\n\n  if (content instanceof ArrayBuffer) {\n    return convertUint8ArrayToBase64(new Uint8Array(content));\n  }\n\n  return convertUint8ArrayToBase64(content);\n}\n","import type { FilePart, TextPart, UserModelMessage } from '@internal/ai-sdk-v5';\n\nimport { convertDataContentToBase64String } from './message-list/prompt/data-content';\nimport type { MastraDBMessage, MastraMessagePart, MastraProviderMetadata } from './message-list/state/types';\n\n/**\n * @experimental Agent signals are experimental and may change in a future release.\n */\nexport type AgentSignalCategory = 'user' | 'state' | 'reactive' | 'notification';\n\n/**\n * @experimental Agent signals are experimental and may change in a future release.\n */\nexport type AgentLegacySignalType = 'user-message' | 'system-reminder';\nexport type AgentSignalType = AgentSignalCategory | AgentLegacySignalType;\n\nexport type AgentSignalTagName = string;\n\nexport type SignalPart = TextPart | SignalFilePart;\ntype SignalFilePart = {\n  type: 'file';\n  data: string;\n  mediaType: string;\n  filename?: string;\n  providerOptions?: MastraProviderMetadata;\n};\n\n/**\n * @experimental Agent signals are experimental and may change in a future release.\n */\nexport type AgentSignalContents = string | Array<TextPart | FilePart>;\nexport type AgentSignalAttributes = Record<string, string | number | boolean | null | undefined>;\nexport type AgentStateSignalMode = 'snapshot' | 'delta';\n\nexport type AgentStateSignalInput = {\n  id: string;\n  cacheKey: string;\n  contents: AgentSignalContents;\n  mode?: AgentStateSignalMode;\n  value?: unknown;\n  delta?: unknown;\n  attributes?: AgentSignalAttributes;\n  metadata?: Record<string, unknown>;\n  providerOptions?: MastraProviderMetadata;\n  tagName?: AgentSignalTagName;\n};\n\nexport type AgentMessageInput =\n  | AgentSignalContents\n  | {\n      contents: AgentSignalContents;\n      attributes?: AgentSignalAttributes;\n      metadata?: Record<string, unknown>;\n      providerOptions?: MastraProviderMetadata;\n    };\n\nexport type AgentSignalInput = {\n  id?: string;\n  createdAt?: Date | string;\n  acceptedAt?: Date | string;\n  type: AgentSignalType;\n  tagName?: AgentSignalTagName;\n  contents: AgentSignalContents;\n  attributes?: AgentSignalAttributes;\n  metadata?: Record<string, unknown>;\n  /**\n   * Provider options attached to the resulting prompt turn. Surfaces as `providerOptions` on the\n   * `UserModelMessage` sent to the model and as `content.providerMetadata` on the persisted DB\n   * message (also visible to UI consumers via `useChat` message metadata).\n   */\n  providerOptions?: MastraProviderMetadata;\n};\n\n/**\n * @experimental Agent signals are experimental and may change in a future release.\n */\nexport type AgentSignalDataPart = {\n  type: 'data-user-message' | 'data-signal';\n  data: {\n    id: string;\n    type: AgentSignalCategory;\n    tagName?: AgentSignalTagName;\n    contents: AgentSignalContents;\n    createdAt: string;\n    acceptedAt?: string;\n    attributes?: AgentSignalAttributes;\n    metadata?: Record<string, unknown>;\n  };\n  transient: true;\n};\n\n/**\n * @experimental Agent signals are experimental and may change in a future release.\n */\nexport type CreatedAgentSignal = AgentSignalInput & {\n  __isCreatedSignal: true;\n  id: string;\n  createdAt: Date;\n  acceptedAt?: Date;\n  toDBMessage: (options?: { threadId?: string; resourceId?: string }) => MastraDBMessage;\n  toLLMMessage: () => UserModelMessage;\n  toDataPart: () => AgentSignalDataPart;\n};\n\nexport function isMastraSignalMessage(message: MastraDBMessage): message is MastraDBMessage & { role: 'signal' } {\n  return message.role === 'signal';\n}\n\nfunction normalizeSignalType(input: Pick<AgentSignalInput, 'type' | 'tagName'>): {\n  type: AgentSignalCategory;\n  tagName: AgentSignalTagName;\n} {\n  if (input.type === 'user-message') {\n    return { type: 'user', tagName: input.tagName ?? 'user' };\n  }\n\n  if (input.type === 'system-reminder') {\n    return { type: 'reactive', tagName: input.tagName ?? 'system-reminder' };\n  }\n\n  if (input.type === 'user' || input.type === 'state' || input.type === 'notification') {\n    return { type: input.type, tagName: input.tagName ?? input.type };\n  }\n\n  if (input.type === 'reactive') {\n    return { type: 'reactive', tagName: input.tagName ?? 'system-reminder' };\n  }\n\n  throw new Error(\n    `Invalid signal type: ${input.type}. Use a supported signal type and set tagName for custom XML tags.`,\n  );\n}\n\nfunction normalizeSignal(signal: AgentSignalInput | CreatedAgentSignal) {\n  const { type, tagName } = normalizeSignalType(signal);\n  return {\n    ...signal,\n    type,\n    tagName,\n    id: signal.id ?? crypto.randomUUID(),\n    createdAt:\n      signal.createdAt instanceof Date ? signal.createdAt : signal.createdAt ? new Date(signal.createdAt) : new Date(),\n    acceptedAt:\n      signal.acceptedAt instanceof Date\n        ? signal.acceptedAt\n        : signal.acceptedAt\n          ? new Date(signal.acceptedAt)\n          : undefined,\n  };\n}\n\nfunction escapeXml(value: string): string {\n  return value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');\n}\n\nfunction escapeXmlAttribute(value: string): string {\n  return escapeXml(value).replaceAll('\"', '&quot;');\n}\n\nconst XML_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_.-]*$/;\n\nfunction assertXmlName(name: string, label: string): void {\n  if (!XML_NAME_PATTERN.test(name)) {\n    throw new Error(`Invalid signal XML ${label}: ${name}`);\n  }\n}\n\nfunction signalAttributesToXml(attributes?: AgentSignalAttributes): string {\n  if (!attributes) {\n    return '';\n  }\n\n  const serialized = Object.entries(attributes)\n    .filter((entry): entry is [string, string | number | boolean] => entry[1] !== null && entry[1] !== undefined)\n    .map(([key, value]) => {\n      assertXmlName(key, 'attribute name');\n      return `${key}=\"${escapeXmlAttribute(String(value))}\"`;\n    })\n    .join(' ');\n\n  return serialized ? ` ${serialized}` : '';\n}\n\nexport function signalToXmlMarkup(\n  signal: Pick<AgentSignalInput, 'type' | 'tagName' | 'attributes'> & { contents?: string },\n): string {\n  const tagName = signal.tagName ?? normalizeSignalType(signal).tagName;\n  assertXmlName(tagName, 'tag name');\n  const attributesXml = signalAttributesToXml(signal.attributes);\n  if (!signal.contents) return `<${tagName}${attributesXml} />`;\n  return `<${tagName}${attributesXml}>${escapeXml(signal.contents)}</${tagName}>`;\n}\n\n// Recover legacy metadata.signal.contents shapes (pre-narrowing) into the current\n// AgentSignalContents. Older rows could stash any of:\n//   - string                                          (most signals)\n//   - Array<TextPart | FilePart> with mediaType       (TUI image messages)\n//   - { role: 'user', content: string | Array<...> } (TUI createUserSignalContent)\n//   - CoreUserMessage[] / string[]                    (React hook BaseMessageListInput)\n// Anything that doesn't decode cleanly returns undefined so the caller can fall back to\n// the canonical content.parts projection.\nfunction legacyContentsToSignalContents(value: unknown): AgentSignalContents | undefined {\n  if (typeof value === 'string') return value;\n\n  if (Array.isArray(value)) {\n    const parts: Array<TextPart | FilePart> = [];\n    for (const entry of value) {\n      if (typeof entry === 'string') {\n        parts.push({ type: 'text', text: entry });\n        continue;\n      }\n      const decoded = legacyEntryToParts(entry);\n      if (!decoded) return undefined;\n      parts.push(...decoded);\n    }\n    return collapseLegacyParts(parts);\n  }\n\n  const decoded = legacyEntryToParts(value);\n  return decoded ? collapseLegacyParts(decoded) : undefined;\n}\n\nfunction legacyEntryToParts(entry: unknown): Array<TextPart | FilePart> | undefined {\n  if (!entry || typeof entry !== 'object') return undefined;\n  const record = entry as Record<string, unknown>;\n\n  // CoreUserMessage wrapper: { role: 'user', content: string | Array<...> }.\n  if (record.role === 'user' && 'content' in record) {\n    const content = record.content;\n    if (typeof content === 'string') return [{ type: 'text', text: content }];\n    if (Array.isArray(content)) {\n      const inner: Array<TextPart | FilePart> = [];\n      for (const part of content) {\n        const decoded = legacyPartToSignalPart(part);\n        if (!decoded) return undefined;\n        inner.push(decoded);\n      }\n      return inner;\n    }\n    return undefined;\n  }\n\n  // Bare TextPart / FilePart / ImagePart.\n  const part = legacyPartToSignalPart(record);\n  return part ? [part] : undefined;\n}\n\nfunction legacyPartToSignalPart(part: unknown): TextPart | FilePart | undefined {\n  if (!part || typeof part !== 'object') return undefined;\n  const record = part as Record<string, unknown>;\n  const providerOptions =\n    record.providerOptions && typeof record.providerOptions === 'object' && !Array.isArray(record.providerOptions)\n      ? (record.providerOptions as MastraProviderMetadata)\n      : undefined;\n\n  if (record.type === 'text' && typeof record.text === 'string') {\n    return { type: 'text', text: record.text, ...(providerOptions ? { providerOptions } : {}) };\n  }\n\n  // Accept both shapes here: rows written by main + the v4-shaped narrowed branch used\n  // `mimeType`; rows that came in as v5 user input (and current canonical) use `mediaType`.\n  if (record.type === 'file' || record.type === 'image') {\n    const data = record.type === 'image' ? (record.image ?? record.data) : record.data;\n    if (typeof data !== 'string') return undefined;\n    const mediaType =\n      typeof record.mediaType === 'string'\n        ? record.mediaType\n        : typeof record.mimeType === 'string'\n          ? record.mimeType\n          : record.type === 'image'\n            ? 'image/png'\n            : '';\n    if (!mediaType) return undefined;\n    return {\n      type: 'file',\n      data,\n      mediaType,\n      ...(typeof record.filename === 'string' ? { filename: record.filename } : {}),\n      ...(providerOptions ? { providerOptions } : {}),\n    };\n  }\n\n  return undefined;\n}\n\nfunction collapseLegacyParts(parts: Array<TextPart | FilePart>): AgentSignalContents | undefined {\n  if (parts.length === 0) return undefined;\n  const first = parts[0];\n  if (parts.length === 1 && first?.type === 'text') return first.text;\n  return parts;\n}\n\nfunction contentsToSignalParts(contents: AgentSignalContents): SignalPart[] {\n  if (typeof contents === 'string') return [{ type: 'text', text: contents }];\n  return contents.map(part => {\n    if (part.type === 'file') {\n      const data = part.data instanceof URL ? part.data.toString() : convertDataContentToBase64String(part.data);\n      return {\n        type: 'file',\n        data,\n        mediaType: part.mediaType,\n        ...(part.filename ? { filename: part.filename } : {}),\n        ...(part.providerOptions ? { providerOptions: part.providerOptions as MastraProviderMetadata } : {}),\n      };\n    }\n    return {\n      type: 'text',\n      text: part.text,\n      ...(part.providerOptions ? { providerOptions: part.providerOptions as MastraProviderMetadata } : {}),\n    };\n  });\n}\n\n// Narrow a storage parts array down to SignalPart. Signal rows should only ever contain text/file\n// parts (that's what contentsToSignalParts produces), but the storage type permits richer parts —\n// so the read boundary filters defensively.\nfunction storagePartsToSignalParts(parts: MastraMessagePart[]): SignalPart[] {\n  const out: SignalPart[] = [];\n  for (const part of parts) {\n    const providerOptions = (part as { providerMetadata?: MastraProviderMetadata }).providerMetadata;\n    if (part.type === 'text') {\n      out.push({\n        type: 'text',\n        text: part.text,\n        ...(providerOptions ? { providerOptions } : {}),\n      });\n    } else if (part.type === 'file' && typeof (part as { data?: unknown }).data === 'string') {\n      const file = part as { data: string; mimeType?: string; filename?: string };\n      out.push({\n        type: 'file',\n        data: file.data,\n        mediaType: typeof file.mimeType === 'string' ? file.mimeType : '',\n        ...(typeof file.filename === 'string' ? { filename: file.filename } : {}),\n        ...(providerOptions ? { providerOptions } : {}),\n      });\n    }\n  }\n  return out;\n}\n\n// Project canonical signal parts back into the public AgentSignalContents shape. Collapses a\n// single text part to a bare string; otherwise returns the parts unchanged (both internal\n// SignalPart and the public v5 FilePart use `mediaType`).\nfunction partsToSignalContents(parts: SignalPart[]): AgentSignalContents {\n  if (parts.length === 1 && parts[0]?.type === 'text' && !parts[0].providerOptions) return parts[0].text;\n  return parts.map<TextPart | FilePart>(part =>\n    part.type === 'file'\n      ? {\n          type: 'file',\n          data: part.data,\n          mediaType: part.mediaType,\n          ...(part.filename ? { filename: part.filename } : {}),\n          ...(part.providerOptions ? { providerOptions: part.providerOptions } : {}),\n        }\n      : {\n          type: 'text',\n          text: part.text,\n          ...(part.providerOptions ? { providerOptions: part.providerOptions } : {}),\n        },\n  );\n}\n\nfunction hasMeaningfulAttributes(attributes?: AgentSignalAttributes): boolean {\n  if (!attributes) return false;\n  return Object.keys(attributes).some(key => {\n    const value = attributes[key];\n    return value !== null && value !== undefined;\n  });\n}\n\n// Inline-wrap the first text part with the signal's XML tag. If there's no text part, prepend\n// a self-closing marker as a synthetic first part so attributes still surface alongside the\n// file/image payload on the same turn.\nfunction injectMarkerInline(\n  signal: Pick<AgentSignalInput, 'type' | 'tagName' | 'attributes'>,\n  parts: SignalPart[],\n): SignalPart[] {\n  let wrapped = false;\n  const out: SignalPart[] = [];\n  for (const part of parts) {\n    if (!wrapped && part.type === 'text') {\n      wrapped = true;\n      out.push({ ...part, text: signalToXmlMarkup({ ...signal, contents: part.text }) });\n    } else {\n      out.push(part);\n    }\n  }\n  if (!wrapped) {\n    const markerText = signalToXmlMarkup({ type: signal.type, tagName: signal.tagName, attributes: signal.attributes });\n    out.unshift({ type: 'text', text: markerText });\n  }\n  return out;\n}\n\n// Build the LLM-facing projection from the canonical parts. Returns a v5 UserModelMessage\n// (a prompt turn the model sees, not a signal row). The XML wrapper carries the attributes\n// inline so there's no metadata.signal here.\nfunction signalToLLMMessage(\n  signal: Pick<AgentSignalInput, 'type' | 'tagName' | 'attributes' | 'providerOptions'>,\n  parts: SignalPart[],\n): UserModelMessage {\n  const isUserMessage = signal.type === 'user';\n  const hasAttrs = hasMeaningfulAttributes(signal.attributes);\n\n  const anyPartProviderOptions = parts.some(part => part.providerOptions);\n\n  let content: UserModelMessage['content'];\n  if (isUserMessage && !hasAttrs) {\n    // user-message with no attributes — pass parts through unchanged. Collapse a single text\n    // part to a bare string so providers get their natural prompt shape (unless the part\n    // carries providerOptions, in which case we keep the parts array to preserve them).\n    content = parts.length === 1 && parts[0]?.type === 'text' && !parts[0].providerOptions ? parts[0].text : parts;\n  } else if (parts.every(part => part.type === 'text') && !anyPartProviderOptions) {\n    // Text-only with no per-part providerOptions: flatten to one wrapped string.\n    content = signalToXmlMarkup({ ...signal, contents: parts.map(part => part.text).join('\\n') });\n  } else {\n    // Multimodal or per-part providerOptions present: inline-wrap the marker alongside the\n    // payload so each part (and its providerOptions) is preserved.\n    content = injectMarkerInline(signal, parts);\n  }\n\n  return {\n    role: 'user',\n    content,\n    ...(signal.providerOptions ? { providerOptions: signal.providerOptions } : {}),\n  };\n}\n\nfunction signalToDataPart(signal: ReturnType<typeof normalizeSignal>, parts: SignalPart[]): AgentSignalDataPart {\n  return {\n    type: signal.type === 'user' ? 'data-user-message' : 'data-signal',\n    data: {\n      id: signal.id,\n      type: signal.type,\n      tagName: signal.tagName,\n      contents: partsToSignalContents(parts),\n      createdAt: signal.createdAt.toISOString(),\n      ...(signal.acceptedAt ? { acceptedAt: signal.acceptedAt.toISOString() } : {}),\n      ...(signal.attributes ? { attributes: signal.attributes } : {}),\n      ...(signal.metadata ? { metadata: signal.metadata } : {}),\n    },\n    transient: true,\n  };\n}\n\nfunction signalToDBMessage(\n  signal: ReturnType<typeof normalizeSignal>,\n  parts: SignalPart[],\n  options?: { threadId?: string; resourceId?: string },\n): MastraDBMessage {\n  const storageParts: MastraMessagePart[] =\n    parts.length > 0\n      ? parts.map(part =>\n          part.type === 'file'\n            ? {\n                type: 'file',\n                data: part.data,\n                mimeType: part.mediaType,\n                ...(part.filename ? { filename: part.filename } : {}),\n                ...(part.providerOptions ? { providerMetadata: part.providerOptions } : {}),\n              }\n            : {\n                type: 'text',\n                text: part.text,\n                ...(part.providerOptions ? { providerMetadata: part.providerOptions } : {}),\n              },\n        )\n      : [{ type: 'text', text: '' }];\n  return {\n    id: signal.id,\n    role: 'signal',\n    createdAt: signal.createdAt,\n    threadId: options?.threadId,\n    resourceId: options?.resourceId,\n    type: signal.tagName,\n    content: {\n      format: 2,\n      parts: storageParts,\n      ...(signal.providerOptions ? { providerMetadata: signal.providerOptions } : {}),\n      metadata: {\n        signal: {\n          id: signal.id,\n          type: signal.type,\n          tagName: signal.tagName,\n          createdAt: signal.createdAt.toISOString(),\n          ...(signal.acceptedAt ? { acceptedAt: signal.acceptedAt.toISOString() } : {}),\n          ...(signal.attributes ? { attributes: signal.attributes } : {}),\n          ...(signal.metadata ? { metadata: signal.metadata } : {}),\n        },\n      },\n    },\n  };\n}\n\nexport function isCreatedAgentSignal(input: unknown): input is CreatedAgentSignal {\n  if (!input || typeof input !== 'object' || Array.isArray(input)) return false;\n\n  const candidate = input as Partial<CreatedAgentSignal>;\n  return candidate.__isCreatedSignal === true;\n}\n\nexport function createSignal(input: AgentSignalInput): CreatedAgentSignal {\n  const signal = normalizeSignal(input);\n  const parts = contentsToSignalParts(signal.contents);\n\n  return {\n    ...signal,\n    __isCreatedSignal: true as const,\n    toDBMessage: options => signalToDBMessage(signal, parts, options),\n    toLLMMessage: () => signalToLLMMessage(signal, parts),\n    toDataPart: () => signalToDataPart(signal, parts),\n  };\n}\n\n/**\n * Resolve delivery option attributes into concrete `attributes` on a signal.\n * Returns a new signal with the selected branch's `attributes` merged into\n * top-level `attributes`.\n *\n * @experimental\n */\nexport function resolveDeliveryAttributes(\n  signal: CreatedAgentSignal,\n  attributes: AgentSignalAttributes | undefined,\n): CreatedAgentSignal {\n  if (!attributes || Object.keys(attributes).length === 0) return signal;\n\n  return createSignal({\n    ...signal,\n    attributes: { ...signal.attributes, ...attributes },\n  });\n}\n\nexport function signalToMessage(signal: AgentSignalInput | CreatedAgentSignal): UserModelMessage {\n  return createSignal(signal).toLLMMessage();\n}\n\nexport function signalToMastraDBMessage(\n  signal: AgentSignalInput | CreatedAgentSignal,\n  options?: { threadId?: string; resourceId?: string },\n): MastraDBMessage {\n  return createSignal(signal).toDBMessage(options);\n}\n\nexport function signalToDataPartFormat(signal: AgentSignalInput | CreatedAgentSignal): AgentSignalDataPart {\n  return createSignal(signal).toDataPart();\n}\n\nexport function mastraDBMessageToSignal(message: MastraDBMessage): CreatedAgentSignal {\n  const metadataSignal = message.content.metadata?.signal;\n  const signalMetadata =\n    metadataSignal && typeof metadataSignal === 'object' && !Array.isArray(metadataSignal)\n      ? (metadataSignal as Record<string, unknown>)\n      : undefined;\n\n  const rawType = typeof signalMetadata?.type === 'string' ? signalMetadata.type : (message.type ?? 'user-message');\n  const type = rawType as AgentSignalType;\n  const tagName = typeof signalMetadata?.tagName === 'string' ? signalMetadata.tagName : undefined;\n  // Reconstruct contents from content.parts — the canonical source. Legacy rows (pre stash\n  // removal) preserved the original input shape on metadata.signal.contents; recover whatever\n  // we can from it (string, parts array, CoreUserMessage wrapper, CoreUserMessage[]) so files\n  // and other non-text payloads keep loading. If the stash is unrecognisable, fall back to the\n  // canonical parts projection.\n  const rawLegacyContents = signalMetadata && 'contents' in signalMetadata ? signalMetadata.contents : undefined;\n  const legacyContents = legacyContentsToSignalContents(rawLegacyContents);\n  const partsContents = partsToSignalContents(storagePartsToSignalParts(message.content.parts));\n  const contents = legacyContents ?? partsContents;\n  const providerMetadata = message.content.providerMetadata;\n  const base = {\n    id: typeof signalMetadata?.id === 'string' ? signalMetadata.id : message.id,\n    createdAt: typeof signalMetadata?.createdAt === 'string' ? signalMetadata.createdAt : message.createdAt,\n    acceptedAt: typeof signalMetadata?.acceptedAt === 'string' ? signalMetadata.acceptedAt : undefined,\n    attributes:\n      signalMetadata?.attributes &&\n      typeof signalMetadata.attributes === 'object' &&\n      !Array.isArray(signalMetadata.attributes)\n        ? (signalMetadata.attributes as AgentSignalAttributes)\n        : undefined,\n    metadata:\n      signalMetadata?.metadata && typeof signalMetadata.metadata === 'object' && !Array.isArray(signalMetadata.metadata)\n        ? (signalMetadata.metadata as AgentSignalInput['metadata'])\n        : undefined,\n    providerOptions:\n      providerMetadata && typeof providerMetadata === 'object' && !Array.isArray(providerMetadata)\n        ? (providerMetadata as MastraProviderMetadata)\n        : undefined,\n  };\n\n  return createSignal({ ...base, type, tagName, contents });\n}\n\nexport function createMessageSignal(\n  input: AgentMessageInput,\n  options?: Pick<AgentSignalInput, 'id' | 'createdAt' | 'acceptedAt'>,\n): CreatedAgentSignal {\n  const message = typeof input === 'string' || Array.isArray(input) ? { contents: input } : input;\n  return createSignal({\n    ...message,\n    ...options,\n    type: 'user',\n    tagName: 'user',\n  });\n}\n\nexport function dataPartToSignal(part: AgentSignalDataPart): CreatedAgentSignal {\n  return createSignal(part.data);\n}\n"]}