{"version":3,"sources":["../../src/cloud/auiV0.ts"],"sourcesContent":["import { JSONObject } from \"@ai-sdk/provider\";\nimport { ThreadMessage } from \"../types\";\nimport { MessageStatus } from \"../types/AssistantTypes\";\nimport { fromThreadMessageLike } from \"../runtimes/external-store/ThreadMessageLike\";\nimport { CloudMessage } from \"./AssistantCloudThreadMessages\";\nimport { isJSONValue } from \"../utils/json/is-json\";\nimport {\n  ReadonlyJSONObject,\n  ReadonlyJSONValue,\n} from \"../utils/json/json-value\";\nimport { ExportedMessageRepositoryItem } from \"../runtimes/utils/MessageRepository\";\n\ntype AuiV0MessageContentPart =\n  | {\n      readonly type: \"text\";\n      readonly text: string;\n    }\n  | {\n      readonly type: \"reasoning\";\n      readonly text: string;\n    }\n  | {\n      readonly type: \"source\";\n      readonly sourceType: \"url\";\n      readonly id: string;\n      readonly url: string;\n      readonly title?: string;\n    }\n  | {\n      readonly type: \"tool-call\";\n      readonly toolCallId: string;\n      readonly toolName: string;\n      readonly args: ReadonlyJSONObject;\n      readonly result?: ReadonlyJSONValue;\n      readonly isError?: true;\n    }\n  | {\n      readonly type: \"tool-call\";\n      readonly toolCallId: string;\n      readonly toolName: string;\n      readonly argsText: string;\n      readonly result?: ReadonlyJSONValue;\n      readonly isError?: true;\n    };\n\ntype AuiV0Message = {\n  readonly role: \"assistant\" | \"user\" | \"system\";\n  readonly status?: MessageStatus;\n  readonly content: readonly AuiV0MessageContentPart[];\n  readonly metadata: {\n    readonly unstable_annotations: readonly ReadonlyJSONValue[];\n    readonly unstable_data: readonly ReadonlyJSONValue[];\n    readonly steps: readonly {\n      readonly usage?: {\n        readonly promptTokens: number;\n        readonly completionTokens: number;\n      };\n    }[];\n    readonly custom: Readonly<JSONObject>;\n  };\n};\n\nexport const auiV0Encode = (message: ThreadMessage): AuiV0Message => {\n  // TODO attachments are currently intentionally ignored\n  // info: ID and createdAt are ignored (we use the server value instead)\n  return {\n    role: message.role,\n    content: message.content.map((part) => {\n      const type = part.type;\n      switch (type) {\n        case \"text\": {\n          return {\n            type: \"text\",\n            text: part.text,\n          };\n        }\n\n        case \"reasoning\": {\n          return {\n            type: \"reasoning\",\n            text: part.text,\n          };\n        }\n\n        case \"source\": {\n          return {\n            type: \"source\",\n            sourceType: part.sourceType,\n            id: part.id,\n            url: part.url,\n            ...(part.title ? { title: part.title } : undefined),\n          };\n        }\n\n        case \"tool-call\": {\n          if (!isJSONValue(part.result)) {\n            console.warn(\n              \"tool-call result is not JSON! \" + JSON.stringify(part),\n            );\n          }\n          return {\n            type: \"tool-call\",\n            toolCallId: part.toolCallId,\n            toolName: part.toolName,\n            ...(JSON.stringify(part.args) === part.argsText\n              ? {\n                  args: part.args,\n                }\n              : { argsText: part.argsText }),\n            ...(part.result\n              ? { result: part.result as ReadonlyJSONValue }\n              : {}),\n            ...(part.isError ? { isError: true } : {}),\n          };\n        }\n\n        default: {\n          const unhandledType: \"image\" | \"file\" | \"audio\" = type;\n          throw new Error(\n            `Content part type not supported by aui/v0: ${unhandledType}`,\n          );\n        }\n      }\n    }),\n    metadata: message.metadata as AuiV0Message[\"metadata\"],\n    ...(message.status\n      ? {\n          status:\n            message.status?.type === \"running\"\n              ? {\n                  type: \"incomplete\",\n                  reason: \"cancelled\",\n                }\n              : message.status,\n        }\n      : undefined),\n  };\n};\n\nexport const auiV0Decode = (\n  cloudMessage: CloudMessage & { format: \"aui/v0\" },\n): ExportedMessageRepositoryItem => {\n  const payload = cloudMessage.content as unknown as AuiV0Message;\n  const message = fromThreadMessageLike(\n    {\n      id: cloudMessage.id,\n      createdAt: cloudMessage.created_at,\n      ...payload,\n    },\n    cloudMessage.id,\n    {\n      type: \"complete\",\n      reason: \"unknown\",\n    },\n  );\n\n  return {\n    parentId: cloudMessage.parent_id,\n    message,\n  };\n};\n"],"mappings":";AAGA,SAAS,6BAA6B;AAEtC,SAAS,mBAAmB;AAyDrB,IAAM,cAAc,CAAC,YAAyC;AAGnE,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,SAAS,QAAQ,QAAQ,IAAI,CAAC,SAAS;AACrC,YAAM,OAAO,KAAK;AAClB,cAAQ,MAAM;AAAA,QACZ,KAAK,QAAQ;AACX,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM,KAAK;AAAA,UACb;AAAA,QACF;AAAA,QAEA,KAAK,aAAa;AAChB,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,MAAM,KAAK;AAAA,UACb;AAAA,QACF;AAAA,QAEA,KAAK,UAAU;AACb,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,IAAI,KAAK;AAAA,YACT,KAAK,KAAK;AAAA,YACV,GAAI,KAAK,QAAQ,EAAE,OAAO,KAAK,MAAM,IAAI;AAAA,UAC3C;AAAA,QACF;AAAA,QAEA,KAAK,aAAa;AAChB,cAAI,CAAC,YAAY,KAAK,MAAM,GAAG;AAC7B,oBAAQ;AAAA,cACN,mCAAmC,KAAK,UAAU,IAAI;AAAA,YACxD;AAAA,UACF;AACA,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY,KAAK;AAAA,YACjB,UAAU,KAAK;AAAA,YACf,GAAI,KAAK,UAAU,KAAK,IAAI,MAAM,KAAK,WACnC;AAAA,cACE,MAAM,KAAK;AAAA,YACb,IACA,EAAE,UAAU,KAAK,SAAS;AAAA,YAC9B,GAAI,KAAK,SACL,EAAE,QAAQ,KAAK,OAA4B,IAC3C,CAAC;AAAA,YACL,GAAI,KAAK,UAAU,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,UAC1C;AAAA,QACF;AAAA,QAEA,SAAS;AACP,gBAAM,gBAA4C;AAClD,gBAAM,IAAI;AAAA,YACR,8CAA8C,aAAa;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,UAAU,QAAQ;AAAA,IAClB,GAAI,QAAQ,SACR;AAAA,MACE,QACE,QAAQ,QAAQ,SAAS,YACrB;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,IACA,QAAQ;AAAA,IAChB,IACA;AAAA,EACN;AACF;AAEO,IAAM,cAAc,CACzB,iBACkC;AAClC,QAAM,UAAU,aAAa;AAC7B,QAAM,UAAU;AAAA,IACd;AAAA,MACE,IAAI,aAAa;AAAA,MACjB,WAAW,aAAa;AAAA,MACxB,GAAG;AAAA,IACL;AAAA,IACA,aAAa;AAAA,IACb;AAAA,MACE,MAAM;AAAA,MACN,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,aAAa;AAAA,IACvB;AAAA,EACF;AACF;","names":[]}