@gravity-ui/aikit 2.0.6-beta.d43f809bc71f63b908b926497e3bb35855efd8dd.0 → 2.1.0

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 (54) hide show
  1. package/build/cjs/adapters/openai/helpers/applyContentUpdate.js +1 -6
  2. package/build/cjs/adapters/openai/helpers/applyContentUpdate.js.map +1 -1
  3. package/build/cjs/adapters/openai/helpers/getStreamEventContentUpdate.d.ts +0 -6
  4. package/build/cjs/adapters/openai/helpers/getStreamEventContentUpdate.js +14 -9
  5. package/build/cjs/adapters/openai/helpers/getStreamEventContentUpdate.js.map +1 -1
  6. package/build/cjs/adapters/openai/helpers/mapOutputToContent.js +1 -4
  7. package/build/cjs/adapters/openai/helpers/mapOutputToContent.js.map +1 -1
  8. package/build/cjs/components/atoms/MarkdownRenderer/MarkdownRenderer.css +1 -80
  9. package/build/cjs/components/pages/AIStudioChat/AIStudioChat.js +6 -19
  10. package/build/cjs/components/pages/AIStudioChat/AIStudioChat.js.map +1 -1
  11. package/build/cjs/package.json +1 -1
  12. package/build/cjs/themes/common.css +0 -1
  13. package/build/cjs/types/messages.d.ts +1 -6
  14. package/build/cjs/types/messages.js.map +1 -1
  15. package/build/esm/adapters/openai/helpers/applyContentUpdate.js +1 -6
  16. package/build/esm/adapters/openai/helpers/applyContentUpdate.js.map +1 -1
  17. package/build/esm/adapters/openai/helpers/getStreamEventContentUpdate.d.ts +0 -6
  18. package/build/esm/adapters/openai/helpers/getStreamEventContentUpdate.js +14 -9
  19. package/build/esm/adapters/openai/helpers/getStreamEventContentUpdate.js.map +1 -1
  20. package/build/esm/adapters/openai/helpers/mapOutputToContent.js +1 -4
  21. package/build/esm/adapters/openai/helpers/mapOutputToContent.js.map +1 -1
  22. package/build/esm/components/atoms/MarkdownRenderer/MarkdownRenderer.css +1 -80
  23. package/build/esm/components/pages/AIStudioChat/AIStudioChat.js +6 -19
  24. package/build/esm/components/pages/AIStudioChat/AIStudioChat.js.map +1 -1
  25. package/build/esm/package.json +1 -1
  26. package/build/esm/themes/common.css +0 -1
  27. package/build/esm/types/messages.d.ts +1 -6
  28. package/build/esm/types/messages.js.map +1 -1
  29. package/docs/THEMING.md +6 -7
  30. package/package.json +1 -1
  31. package/build/cjs/adapters/openai/helpers/prettyPrintJson.d.ts +0 -5
  32. package/build/cjs/adapters/openai/helpers/prettyPrintJson.js +0 -18
  33. package/build/cjs/adapters/openai/helpers/prettyPrintJson.js.map +0 -1
  34. package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.css +0 -14
  35. package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.d.ts +0 -5
  36. package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.js +0 -21
  37. package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.js.map +0 -1
  38. package/build/cjs/components/pages/AIStudioChat/i18n/en.json +0 -4
  39. package/build/cjs/components/pages/AIStudioChat/i18n/index.d.ts +0 -13
  40. package/build/cjs/components/pages/AIStudioChat/i18n/index.js +0 -10
  41. package/build/cjs/components/pages/AIStudioChat/i18n/index.js.map +0 -1
  42. package/build/cjs/components/pages/AIStudioChat/i18n/ru.json +0 -4
  43. package/build/esm/adapters/openai/helpers/prettyPrintJson.d.ts +0 -5
  44. package/build/esm/adapters/openai/helpers/prettyPrintJson.js +0 -15
  45. package/build/esm/adapters/openai/helpers/prettyPrintJson.js.map +0 -1
  46. package/build/esm/components/pages/AIStudioChat/McpToolRenderer.css +0 -14
  47. package/build/esm/components/pages/AIStudioChat/McpToolRenderer.d.ts +0 -5
  48. package/build/esm/components/pages/AIStudioChat/McpToolRenderer.js +0 -18
  49. package/build/esm/components/pages/AIStudioChat/McpToolRenderer.js.map +0 -1
  50. package/build/esm/components/pages/AIStudioChat/i18n/en.json +0 -4
  51. package/build/esm/components/pages/AIStudioChat/i18n/index.d.ts +0 -13
  52. package/build/esm/components/pages/AIStudioChat/i18n/index.js +0 -6
  53. package/build/esm/components/pages/AIStudioChat/i18n/index.js.map +0 -1
  54. package/build/esm/components/pages/AIStudioChat/i18n/ru.json +0 -4
@@ -42,9 +42,6 @@ function applyToolAdd(parts, update) {
42
42
  if (update.headerContent !== undefined) {
43
43
  data.headerContent = update.headerContent;
44
44
  }
45
- if (update.mcpRequest !== undefined) {
46
- data.mcpRequest = update.mcpRequest;
47
- }
48
45
  return [
49
46
  ...parts,
50
47
  {
@@ -72,9 +69,7 @@ function applyToolUpdate(parts, update) {
72
69
  return partsToUpdate;
73
70
  const bodyText = update.error || update.output || undefined;
74
71
  return partsToUpdate.map((p, i) => i === idx
75
- ? Object.assign(Object.assign({}, prev), { data: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, prev.data), (update.toolName && { toolName: update.toolName })), { status: update.status }), (bodyText ? { bodyContent: bodyText } : {})), (update.mcpRequest === undefined ? {} : { mcpRequest: update.mcpRequest })), (update.mcpResponse === undefined
76
- ? {}
77
- : { mcpResponse: update.mcpResponse })) }) : p);
72
+ ? Object.assign(Object.assign({}, prev), { data: Object.assign(Object.assign(Object.assign(Object.assign({}, prev.data), (update.toolName && { toolName: update.toolName })), { status: update.status }), (bodyText ? { bodyContent: bodyText } : {})) }) : p);
78
73
  }
79
74
  function applyThinkingAdd(parts, update) {
80
75
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"applyContentUpdate.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/applyContentUpdate.ts"],"names":[],"mappings":"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","sourcesContent":["import type {TMessageContentUnion} from '../../../types';\n\nimport type {\n StreamEventContentUpdate,\n StreamEventTextDelta,\n StreamEventThinkingDelta,\n StreamEventThinkingDone,\n StreamEventToolAdd,\n StreamEventToolUpdate,\n} from './getStreamEventContentUpdate';\n\nfunction findContentPartIndex(\n parts: TMessageContentUnion[],\n partType: 'tool' | 'thinking',\n id: string,\n): number {\n return parts.findIndex((p) => p.type === partType && (p as {id?: string}).id === id);\n}\n\nexport function applyContentUpdate(\n parts: TMessageContentUnion[],\n update: StreamEventContentUpdate,\n): TMessageContentUnion[] | null {\n switch (update.kind) {\n case 'text_delta':\n return applyTextDelta(parts, update);\n case 'tool_add':\n return applyToolAdd(parts, update);\n case 'tool_update':\n return applyToolUpdate(parts, update);\n case 'thinking_add':\n return applyThinkingAdd(parts, update);\n case 'thinking_delta':\n return applyThinkingDelta(parts, update);\n case 'thinking_done':\n return applyThinkingDone(parts, update);\n default:\n return null;\n }\n}\n\nfunction applyTextDelta(\n parts: TMessageContentUnion[],\n update: StreamEventTextDelta,\n): TMessageContentUnion[] {\n const last = parts[parts.length - 1];\n if (last?.type === 'text') {\n return [\n ...parts.slice(0, -1),\n {type: 'text' as const, data: {text: last.data.text + update.delta}},\n ];\n }\n return [...parts, {type: 'text' as const, data: {text: update.delta}}];\n}\n\nfunction applyToolAdd(\n parts: TMessageContentUnion[],\n update: StreamEventToolAdd,\n): TMessageContentUnion[] {\n const status = update.status ?? 'loading';\n const data: {\n toolName: string;\n status: typeof status;\n headerContent?: string;\n mcpRequest?: string;\n } = {\n toolName: update.toolName,\n status,\n };\n if (update.headerContent !== undefined) {\n data.headerContent = update.headerContent;\n }\n if (update.mcpRequest !== undefined) {\n data.mcpRequest = update.mcpRequest;\n }\n return [\n ...parts,\n {\n type: 'tool' as const,\n id: update.id,\n data,\n },\n ];\n}\n\nfunction applyToolUpdate(\n parts: TMessageContentUnion[],\n update: StreamEventToolUpdate,\n): TMessageContentUnion[] {\n let idx = findContentPartIndex(parts, 'tool', update.item_id);\n let partsToUpdate = parts;\n if (idx < 0) {\n partsToUpdate = applyToolAdd(parts, {\n kind: 'tool_add',\n id: update.item_id,\n toolName: update.toolName ?? '',\n status: update.status,\n });\n idx = partsToUpdate.length - 1;\n }\n const prev = partsToUpdate[idx];\n if (prev.type !== 'tool') return partsToUpdate;\n\n const bodyText = update.error || update.output || undefined;\n\n return partsToUpdate.map((p, i) =>\n i === idx\n ? {\n ...prev,\n data: {\n ...prev.data,\n ...(update.toolName && {toolName: update.toolName}),\n status: update.status,\n ...(bodyText ? {bodyContent: bodyText} : {}),\n ...(update.mcpRequest === undefined ? {} : {mcpRequest: update.mcpRequest}),\n ...(update.mcpResponse === undefined\n ? {}\n : {mcpResponse: update.mcpResponse}),\n },\n }\n : p,\n );\n}\n\nfunction applyThinkingAdd(\n parts: TMessageContentUnion[],\n update: {kind: 'thinking_add'; item_id: string},\n): TMessageContentUnion[] {\n return [\n ...parts,\n {\n type: 'thinking' as const,\n id: update.item_id,\n data: {\n content: '',\n status: 'thinking' as const,\n defaultExpanded: false,\n },\n },\n ];\n}\n\nfunction applyThinkingDelta(\n parts: TMessageContentUnion[],\n update: StreamEventThinkingDelta,\n): TMessageContentUnion[] | null {\n const idx = findContentPartIndex(parts, 'thinking', update.item_id);\n if (idx < 0 || parts[idx].type !== 'thinking') {\n return null;\n }\n const prev = parts[idx];\n const prevContent = prev.data.content;\n let prevText = '';\n if (typeof prevContent === 'string') {\n prevText = prevContent;\n } else if (Array.isArray(prevContent)) {\n prevText = prevContent.join('');\n }\n const newContent = prevText + update.delta;\n return parts.map((p, i) =>\n i === idx ? {...prev, data: {...prev.data, content: newContent}} : p,\n );\n}\n\nfunction applyThinkingDone(\n parts: TMessageContentUnion[],\n update: StreamEventThinkingDone,\n): TMessageContentUnion[] | null {\n const idx = findContentPartIndex(parts, 'thinking', update.item_id);\n if (idx < 0 || parts[idx].type !== 'thinking') {\n return null;\n }\n const prev = parts[idx];\n return parts.map((p, i) =>\n i === idx\n ? {\n ...prev,\n data: {\n ...prev.data,\n content: update.text,\n status: 'thought' as const,\n },\n }\n : p,\n );\n}\n"]}
1
+ {"version":3,"file":"applyContentUpdate.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/applyContentUpdate.ts"],"names":[],"mappings":";;AAmBA,gDAoBC;AA5BD,SAAS,oBAAoB,CACzB,KAA6B,EAC7B,QAA6B,EAC7B,EAAU;IAEV,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAK,CAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,SAAgB,kBAAkB,CAC9B,KAA6B,EAC7B,MAAgC;IAEhC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,YAAY;YACb,OAAO,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzC,KAAK,UAAU;YACX,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,KAAK,aAAa;YACd,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,cAAc;YACf,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,gBAAgB;YACjB,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,KAAK,eAAe;YAChB,OAAO,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5C;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACnB,KAA6B,EAC7B,MAA4B;IAE5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,MAAM,EAAE,CAAC;QACxB,OAAO;YACH,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,EAAC,EAAC;SACvE,CAAC;IACN,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,EAAE,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAC,EAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CACjB,KAA6B,EAC7B,MAA0B;;IAE1B,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,SAAS,CAAC;IAC1C,MAAM,IAAI,GAAsE;QAC5E,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM;KACT,CAAC;IACF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC9C,CAAC;IACD,OAAO;QACH,GAAG,KAAK;QACR;YACI,IAAI,EAAE,MAAe;YACrB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI;SACP;KACJ,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CACpB,KAA6B,EAC7B,MAA6B;;IAE7B,IAAI,GAAG,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACV,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE;YAChC,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,MAAM,CAAC,OAAO;YAClB,QAAQ,EAAE,MAAA,MAAM,CAAC,QAAQ,mCAAI,EAAE;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC;IAE/C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;IAE5D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9B,CAAC,KAAK,GAAG;QACL,CAAC,iCACQ,IAAI,KACP,IAAI,8DACG,IAAI,CAAC,IAAI,GACT,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAC,CAAC,KACnD,MAAM,EAAE,MAAM,CAAC,MAAM,KAClB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAGtD,CAAC,CAAC,CAAC,CACV,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CACrB,KAA6B,EAC7B,MAA+C;IAE/C,OAAO;QACH,GAAG,KAAK;QACR;YACI,IAAI,EAAE,UAAmB;YACzB,EAAE,EAAE,MAAM,CAAC,OAAO;YAClB,IAAI,EAAE;gBACF,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,UAAmB;gBAC3B,eAAe,EAAE,KAAK;aACzB;SACJ;KACJ,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CACvB,KAA6B,EAC7B,MAAgC;IAEhC,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QAClC,QAAQ,GAAG,WAAW,CAAC;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtB,CAAC,KAAK,GAAG,CAAC,CAAC,iCAAK,IAAI,KAAE,IAAI,kCAAM,IAAI,CAAC,IAAI,KAAE,OAAO,EAAE,UAAU,OAAG,CAAC,CAAC,CAAC,CACvE,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CACtB,KAA6B,EAC7B,MAA+B;IAE/B,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtB,CAAC,KAAK,GAAG;QACL,CAAC,iCACQ,IAAI,KACP,IAAI,kCACG,IAAI,CAAC,IAAI,KACZ,OAAO,EAAE,MAAM,CAAC,IAAI,EACpB,MAAM,EAAE,SAAkB,OAGpC,CAAC,CAAC,CAAC,CACV,CAAC;AACN,CAAC","sourcesContent":["import type {TMessageContentUnion} from '../../../types';\n\nimport type {\n StreamEventContentUpdate,\n StreamEventTextDelta,\n StreamEventThinkingDelta,\n StreamEventThinkingDone,\n StreamEventToolAdd,\n StreamEventToolUpdate,\n} from './getStreamEventContentUpdate';\n\nfunction findContentPartIndex(\n parts: TMessageContentUnion[],\n partType: 'tool' | 'thinking',\n id: string,\n): number {\n return parts.findIndex((p) => p.type === partType && (p as {id?: string}).id === id);\n}\n\nexport function applyContentUpdate(\n parts: TMessageContentUnion[],\n update: StreamEventContentUpdate,\n): TMessageContentUnion[] | null {\n switch (update.kind) {\n case 'text_delta':\n return applyTextDelta(parts, update);\n case 'tool_add':\n return applyToolAdd(parts, update);\n case 'tool_update':\n return applyToolUpdate(parts, update);\n case 'thinking_add':\n return applyThinkingAdd(parts, update);\n case 'thinking_delta':\n return applyThinkingDelta(parts, update);\n case 'thinking_done':\n return applyThinkingDone(parts, update);\n default:\n return null;\n }\n}\n\nfunction applyTextDelta(\n parts: TMessageContentUnion[],\n update: StreamEventTextDelta,\n): TMessageContentUnion[] {\n const last = parts[parts.length - 1];\n if (last?.type === 'text') {\n return [\n ...parts.slice(0, -1),\n {type: 'text' as const, data: {text: last.data.text + update.delta}},\n ];\n }\n return [...parts, {type: 'text' as const, data: {text: update.delta}}];\n}\n\nfunction applyToolAdd(\n parts: TMessageContentUnion[],\n update: StreamEventToolAdd,\n): TMessageContentUnion[] {\n const status = update.status ?? 'loading';\n const data: {toolName: string; status: typeof status; headerContent?: string} = {\n toolName: update.toolName,\n status,\n };\n if (update.headerContent !== undefined) {\n data.headerContent = update.headerContent;\n }\n return [\n ...parts,\n {\n type: 'tool' as const,\n id: update.id,\n data,\n },\n ];\n}\n\nfunction applyToolUpdate(\n parts: TMessageContentUnion[],\n update: StreamEventToolUpdate,\n): TMessageContentUnion[] {\n let idx = findContentPartIndex(parts, 'tool', update.item_id);\n let partsToUpdate = parts;\n if (idx < 0) {\n partsToUpdate = applyToolAdd(parts, {\n kind: 'tool_add',\n id: update.item_id,\n toolName: update.toolName ?? '',\n status: update.status,\n });\n idx = partsToUpdate.length - 1;\n }\n const prev = partsToUpdate[idx];\n if (prev.type !== 'tool') return partsToUpdate;\n\n const bodyText = update.error || update.output || undefined;\n\n return partsToUpdate.map((p, i) =>\n i === idx\n ? {\n ...prev,\n data: {\n ...prev.data,\n ...(update.toolName && {toolName: update.toolName}),\n status: update.status,\n ...(bodyText ? {bodyContent: bodyText} : {}),\n },\n }\n : p,\n );\n}\n\nfunction applyThinkingAdd(\n parts: TMessageContentUnion[],\n update: {kind: 'thinking_add'; item_id: string},\n): TMessageContentUnion[] {\n return [\n ...parts,\n {\n type: 'thinking' as const,\n id: update.item_id,\n data: {\n content: '',\n status: 'thinking' as const,\n defaultExpanded: false,\n },\n },\n ];\n}\n\nfunction applyThinkingDelta(\n parts: TMessageContentUnion[],\n update: StreamEventThinkingDelta,\n): TMessageContentUnion[] | null {\n const idx = findContentPartIndex(parts, 'thinking', update.item_id);\n if (idx < 0 || parts[idx].type !== 'thinking') {\n return null;\n }\n const prev = parts[idx];\n const prevContent = prev.data.content;\n let prevText = '';\n if (typeof prevContent === 'string') {\n prevText = prevContent;\n } else if (Array.isArray(prevContent)) {\n prevText = prevContent.join('');\n }\n const newContent = prevText + update.delta;\n return parts.map((p, i) =>\n i === idx ? {...prev, data: {...prev.data, content: newContent}} : p,\n );\n}\n\nfunction applyThinkingDone(\n parts: TMessageContentUnion[],\n update: StreamEventThinkingDone,\n): TMessageContentUnion[] | null {\n const idx = findContentPartIndex(parts, 'thinking', update.item_id);\n if (idx < 0 || parts[idx].type !== 'thinking') {\n return null;\n }\n const prev = parts[idx];\n return parts.map((p, i) =>\n i === idx\n ? {\n ...prev,\n data: {\n ...prev.data,\n content: update.text,\n status: 'thought' as const,\n },\n }\n : p,\n );\n}\n"]}
@@ -13,8 +13,6 @@ export type StreamEventToolAdd = {
13
13
  status?: TToolStatus;
14
14
  /** Optional payload to show in tool card (e.g. approval request arguments). */
15
15
  headerContent?: string;
16
- /** MCP request arguments, pretty-printed JSON. Surfaced for AIStudioChat's tool renderer. */
17
- mcpRequest?: string;
18
16
  };
19
17
  export type StreamEventToolUpdate = {
20
18
  kind: 'tool_update';
@@ -23,10 +21,6 @@ export type StreamEventToolUpdate = {
23
21
  toolName?: string;
24
22
  output?: string;
25
23
  error?: string;
26
- /** MCP request arguments, pretty-printed JSON. */
27
- mcpRequest?: string;
28
- /** MCP response or error, pretty-printed JSON. */
29
- mcpResponse?: string;
30
24
  };
31
25
  export type StreamEventThinkingAdd = {
32
26
  kind: 'thinking_add';
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getStreamEventContentUpdate = getStreamEventContentUpdate;
4
4
  const getTextDeltaFromStreamEvent_1 = require("./getTextDeltaFromStreamEvent.js");
5
- const prettyPrintJson_1 = require("./prettyPrintJson.js");
6
5
  const TOOL_PROGRESS_EVENTS = [
7
6
  ['response.file_search_call.completed', 'success'],
8
7
  ['response.file_search_call.in_progress', 'loading'],
@@ -41,9 +40,12 @@ function addUpdateForMcpCall(item, id) {
41
40
  var _a;
42
41
  const name = typeof item.name === 'string' ? item.name : undefined;
43
42
  const serverLabel = typeof item.server_label === 'string' ? item.server_label : undefined;
44
- const args = typeof item.arguments === 'string' ? item.arguments : undefined;
45
- const mcpRequest = (0, prettyPrintJson_1.prettyPrintJson)(args);
46
- return Object.assign({ kind: 'tool_add', id, toolName: (_a = name !== null && name !== void 0 ? name : serverLabel) !== null && _a !== void 0 ? _a : 'MCP', serverLabel }, (mcpRequest ? { mcpRequest } : {}));
43
+ return {
44
+ kind: 'tool_add',
45
+ id,
46
+ toolName: (_a = name !== null && name !== void 0 ? name : serverLabel) !== null && _a !== void 0 ? _a : 'MCP',
47
+ serverLabel,
48
+ };
47
49
  }
48
50
  function addUpdateForFunctionCall(item) {
49
51
  var _a;
@@ -124,7 +126,6 @@ function getMcpCallDoneUpdate(item) {
124
126
  const st = (_a = mcp.status) !== null && _a !== void 0 ? _a : '';
125
127
  const outputStr = typeof mcp.output === 'string' ? mcp.output : undefined;
126
128
  const errStr = typeof mcp.error === 'string' ? mcp.error : undefined;
127
- const argsStr = typeof mcp.arguments === 'string' ? mcp.arguments : undefined;
128
129
  let status = 'loading';
129
130
  if (st === 'failed' || st === 'incomplete') {
130
131
  status = 'error';
@@ -145,10 +146,14 @@ function getMcpCallDoneUpdate(item) {
145
146
  toolName = mcp.server_label;
146
147
  else
147
148
  toolName = undefined;
148
- const mcpRequest = (0, prettyPrintJson_1.prettyPrintJson)(argsStr);
149
- const mcpResponse = (0, prettyPrintJson_1.prettyPrintJson)(errStr !== null && errStr !== void 0 ? errStr : outputStr);
150
- return Object.assign(Object.assign({ kind: 'tool_update', item_id: mcp.id, status,
151
- toolName, output: outputStr, error: errStr }, (mcpRequest ? { mcpRequest } : {})), (mcpResponse ? { mcpResponse } : {}));
149
+ return {
150
+ kind: 'tool_update',
151
+ item_id: mcp.id,
152
+ status,
153
+ toolName,
154
+ output: outputStr,
155
+ error: errStr,
156
+ };
152
157
  }
153
158
  function getFunctionCallDoneUpdate(item) {
154
159
  if (item.type !== 'function_call')
@@ -1 +1 @@
1
- {"version":3,"file":"getStreamEventContentUpdate.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/getStreamEventContentUpdate.ts"],"names":[],"mappings":"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","sourcesContent":["import type {TToolStatus} from '../../../types';\nimport {OpenAIStreamEventLike, OpenAIStreamOutputItemLike} from '../types/openAiTypes';\n\nimport {getTextDeltaFromStreamEvent} from './getTextDeltaFromStreamEvent';\nimport {prettyPrintJson} from './prettyPrintJson';\n\ntype EventRecord = Record<string, unknown>;\n\nexport type StreamEventTextDelta = {kind: 'text_delta'; delta: string};\nexport type StreamEventToolAdd = {\n kind: 'tool_add';\n id: string;\n toolName: string;\n serverLabel?: string;\n /** Initial status; use 'waitingConfirmation' for mcp_approval_request, 'waitingSubmission' if API defines such. Default 'loading'. */\n status?: TToolStatus;\n /** Optional payload to show in tool card (e.g. approval request arguments). */\n headerContent?: string;\n /** MCP request arguments, pretty-printed JSON. Surfaced for AIStudioChat's tool renderer. */\n mcpRequest?: string;\n};\nexport type StreamEventToolUpdate = {\n kind: 'tool_update';\n item_id: string;\n status: TToolStatus;\n toolName?: string;\n output?: string;\n error?: string;\n /** MCP request arguments, pretty-printed JSON. */\n mcpRequest?: string;\n /** MCP response or error, pretty-printed JSON. */\n mcpResponse?: string;\n};\nexport type StreamEventThinkingAdd = {kind: 'thinking_add'; item_id: string};\nexport type StreamEventThinkingDelta = {kind: 'thinking_delta'; item_id: string; delta: string};\nexport type StreamEventThinkingDone = {kind: 'thinking_done'; item_id: string; text: string};\nexport type StreamEventContentUpdate =\n | StreamEventTextDelta\n | StreamEventToolAdd\n | StreamEventToolUpdate\n | StreamEventThinkingAdd\n | StreamEventThinkingDelta\n | StreamEventThinkingDone;\n\nconst TOOL_PROGRESS_EVENTS: Array<[string, TToolStatus]> = [\n ['response.file_search_call.completed', 'success'],\n ['response.file_search_call.in_progress', 'loading'],\n ['response.file_search_call.searching', 'loading'],\n ['response.web_search_call.completed', 'success'],\n ['response.web_search_call.in_progress', 'loading'],\n ['response.web_search_call.searching', 'loading'],\n ['response.code_interpreter_call.completed', 'success'],\n ['response.code_interpreter_call.in_progress', 'loading'],\n ['response.code_interpreter_call.interpreting', 'loading'],\n ['response.image_generation_call.completed', 'success'],\n ['response.image_generation_call.in_progress', 'loading'],\n ['response.image_generation_call.generating', 'loading'],\n ['response.mcp_list_tools.completed', 'success'],\n ['response.mcp_list_tools.in_progress', 'loading'],\n];\n\nfunction getReasoningUpdate(\n e: EventRecord,\n data: EventRecord | undefined,\n type: unknown,\n itemId: string,\n): StreamEventContentUpdate | null {\n if (\n type === 'response.reasoning_text.delta' ||\n type === 'response.reasoning_summary_text.delta'\n ) {\n const d = (e.delta ?? data?.delta) as string | undefined;\n return typeof d === 'string' ? {kind: 'thinking_delta', item_id: itemId, delta: d} : null;\n }\n if (\n type === 'response.reasoning_text.done' ||\n type === 'response.reasoning_summary_text.done'\n ) {\n const text = (e.text ?? data?.text) as string | undefined;\n return typeof text === 'string' ? {kind: 'thinking_done', item_id: itemId, text} : null;\n }\n return null;\n}\n\nfunction addUpdateForReasoning(\n id: string,\n itemId: string | undefined,\n): StreamEventContentUpdate | null {\n const effectiveId = id || (itemId ?? '');\n return effectiveId ? {kind: 'thinking_add', item_id: effectiveId} : null;\n}\n\nfunction addUpdateForMcpCall(\n item: OpenAIStreamOutputItemLike,\n id: string,\n): StreamEventContentUpdate | null {\n const name = typeof item.name === 'string' ? item.name : undefined;\n const serverLabel = typeof item.server_label === 'string' ? item.server_label : undefined;\n const args = typeof item.arguments === 'string' ? item.arguments : undefined;\n const mcpRequest = prettyPrintJson(args);\n return {\n kind: 'tool_add',\n id,\n toolName: name ?? serverLabel ?? 'MCP',\n serverLabel,\n ...(mcpRequest ? {mcpRequest} : {}),\n };\n}\n\nfunction addUpdateForFunctionCall(\n item: OpenAIStreamOutputItemLike,\n): StreamEventContentUpdate | null {\n const callId = typeof item.call_id === 'string' ? item.call_id : ((item.id as string) ?? '');\n const name = typeof item.name === 'string' ? item.name : 'Tool';\n return {kind: 'tool_add', id: callId, toolName: name};\n}\n\nfunction addUpdateForMcpRequest(\n item: OpenAIStreamOutputItemLike,\n id: string,\n status: 'waitingConfirmation' | 'waitingSubmission',\n): StreamEventContentUpdate | null {\n const name = typeof item.name === 'string' ? item.name : undefined;\n const serverLabel = typeof item.server_label === 'string' ? item.server_label : undefined;\n const args = typeof item.arguments === 'string' ? item.arguments : undefined;\n return {\n kind: 'tool_add',\n id,\n toolName: name ?? serverLabel ?? 'MCP',\n serverLabel,\n status,\n headerContent: args,\n };\n}\n\nfunction addUpdateForSimpleTool(id: string, toolName: string): StreamEventContentUpdate | null {\n return id ? {kind: 'tool_add', id, toolName} : null;\n}\n\nconst OUTPUT_ITEM_TYPE_TO_TOOL_NAME: Record<string, string> = {\n file_search_call: 'File Search',\n web_search_call: 'Web Search',\n code_interpreter_call: 'Code Interpreter',\n image_generation_call: 'Image Generation',\n mcp_list_tools: 'MCP List Tools',\n};\n\nfunction getUpdateFromOutputItemAdded(\n e: EventRecord,\n data: EventRecord | undefined,\n itemId: string | undefined,\n): StreamEventContentUpdate | null {\n const item = (e.item ?? (data?.item as OpenAIStreamOutputItemLike)) as\n | OpenAIStreamOutputItemLike\n | undefined;\n if (!item) return null;\n const id = typeof item.id === 'string' ? item.id : '';\n\n if (item.type === 'reasoning') return addUpdateForReasoning(id, itemId);\n if (item.type === 'mcp_call') return addUpdateForMcpCall(item, id);\n if (item.type === 'function_call') return addUpdateForFunctionCall(item);\n if (item.type === 'mcp_approval_request')\n return addUpdateForMcpRequest(item, id, 'waitingConfirmation');\n if (item.type === 'mcp_submission_request')\n return addUpdateForMcpRequest(item, id, 'waitingSubmission');\n\n const toolName = item.type ? OUTPUT_ITEM_TYPE_TO_TOOL_NAME[item.type] : undefined;\n if (toolName) return addUpdateForSimpleTool(id, toolName);\n\n return null;\n}\n\nfunction getReasoningDoneUpdate(item: OpenAIStreamOutputItemLike): StreamEventContentUpdate | null {\n if (item.type !== 'reasoning' || typeof item.id !== 'string') return null;\n const reasoning = item as {\n id: string;\n content?: Array<{type: string; text?: string}>;\n summary?: Array<{type: string; text?: string}>;\n };\n const texts =\n reasoning.content?.map((c) => c.text).filter((t): t is string => typeof t === 'string') ??\n reasoning.summary?.map((s) => s.text).filter((t): t is string => typeof t === 'string') ??\n [];\n const text = texts.length <= 1 ? (texts[0] ?? '') : texts.join('\\n\\n');\n return {kind: 'thinking_done', item_id: reasoning.id, text};\n}\n\nfunction mcpOutputIndicatesApplicationError(output: string | undefined): boolean {\n if (!output) return false;\n return /\\berror\\s*=\\s*[\"']true[\"']/.test(output);\n}\n\nfunction mcpTerminalToolStatus(\n errStr: string | undefined,\n outputStr: string | undefined,\n): 'success' | 'error' {\n if (errStr || mcpOutputIndicatesApplicationError(outputStr)) {\n return 'error';\n }\n return 'success';\n}\n\nfunction getMcpCallDoneUpdate(item: OpenAIStreamOutputItemLike): StreamEventContentUpdate | null {\n if (item.type !== 'mcp_call' || typeof item.id !== 'string') return null;\n const mcp = item as {\n id: string;\n name?: string;\n server_label?: string;\n status?: string;\n arguments?: string;\n output?: string;\n error?: string;\n };\n const st = mcp.status ?? '';\n const outputStr = typeof mcp.output === 'string' ? mcp.output : undefined;\n const errStr = typeof mcp.error === 'string' ? mcp.error : undefined;\n const argsStr = typeof mcp.arguments === 'string' ? mcp.arguments : undefined;\n\n let status: TToolStatus = 'loading';\n if (st === 'failed' || st === 'incomplete') {\n status = 'error';\n } else if (st === 'completed' || st === 'complete') {\n status = mcpTerminalToolStatus(errStr, outputStr);\n } else if (errStr) {\n status = 'error';\n } else if (outputStr !== undefined) {\n status = mcpTerminalToolStatus(errStr, outputStr);\n }\n let toolName: string | undefined;\n if (typeof mcp.name === 'string') toolName = mcp.name;\n else if (typeof mcp.server_label === 'string') toolName = mcp.server_label;\n else toolName = undefined;\n\n const mcpRequest = prettyPrintJson(argsStr);\n const mcpResponse = prettyPrintJson(errStr ?? outputStr);\n\n return {\n kind: 'tool_update',\n item_id: mcp.id,\n status,\n toolName,\n output: outputStr,\n error: errStr,\n ...(mcpRequest ? {mcpRequest} : {}),\n ...(mcpResponse ? {mcpResponse} : {}),\n };\n}\n\nfunction getFunctionCallDoneUpdate(\n item: OpenAIStreamOutputItemLike,\n): StreamEventContentUpdate | null {\n if (item.type !== 'function_call') return null;\n const fn = item as {\n call_id: string;\n name?: string;\n output?: string;\n result?: string;\n status?: string;\n error?: string;\n };\n const fnCallId = fn.call_id ? fn.call_id : '';\n\n if (!fnCallId) return null;\n\n let fnStatus: TToolStatus = 'loading';\n if (fn.status === 'completed') {\n fnStatus = 'success';\n } else if (fn.status === 'failed') {\n fnStatus = 'error';\n }\n\n let output: string | undefined;\n if (typeof fn.output === 'string') {\n output = fn.output;\n } else if (typeof fn.result === 'string') {\n output = fn.result;\n } else {\n output = undefined;\n }\n\n return {\n kind: 'tool_update',\n item_id: fnCallId,\n status: fnStatus,\n toolName: typeof fn.name === 'string' ? fn.name : undefined,\n output,\n error: typeof fn.error === 'string' ? fn.error : undefined,\n };\n}\n\nfunction getToolCallDoneUpdate(\n item: OpenAIStreamOutputItemLike,\n toolName: string,\n): StreamEventContentUpdate | null {\n if (typeof item.id !== 'string') return null;\n const t = item as {\n id: string;\n status?: string;\n error?: string;\n output?: string;\n results?: unknown;\n };\n let status: TToolStatus = 'loading';\n if (t.status === 'completed') status = 'success';\n else if (t.status === 'failed' || t.status === 'incomplete') status = 'error';\n\n let output: string | undefined;\n if (typeof t.output === 'string') {\n output = t.output;\n } else if (typeof t.results === 'string') {\n output = t.results;\n } else if (Array.isArray(t.results)) {\n output = JSON.stringify(t.results);\n } else {\n output = undefined;\n }\n return {\n kind: 'tool_update',\n item_id: t.id,\n status,\n toolName,\n output,\n error: typeof t.error === 'string' ? t.error : undefined,\n };\n}\n\nfunction getUpdateFromOutputItemDone(\n e: EventRecord,\n data: EventRecord | undefined,\n): StreamEventContentUpdate | null {\n const item = (e.item ?? (data?.item as OpenAIStreamOutputItemLike)) as\n | OpenAIStreamOutputItemLike\n | undefined;\n if (!item) return null;\n return (\n getReasoningDoneUpdate(item) ??\n getMcpCallDoneUpdate(item) ??\n getFunctionCallDoneUpdate(item) ??\n (item.type === 'file_search_call' ? getToolCallDoneUpdate(item, 'File Search') : null) ??\n (item.type === 'web_search_call' ? getToolCallDoneUpdate(item, 'Web Search') : null) ??\n (item.type === 'code_interpreter_call'\n ? getToolCallDoneUpdate(item, 'Code Interpreter')\n : null) ??\n (item.type === 'image_generation_call'\n ? getToolCallDoneUpdate(item, 'Image Generation')\n : null) ??\n (item.type === 'mcp_list_tools' ? getToolCallDoneUpdate(item, 'MCP List Tools') : null)\n );\n}\n\n/** Stream event → content update (text delta, tool add/update, thinking add/delta/done) or null. */\n\nexport function getStreamEventContentUpdate(\n event: OpenAIStreamEventLike | null | undefined,\n): StreamEventContentUpdate | null {\n if (!event) return null;\n const e = event as EventRecord;\n const type = e.type ?? (e.data as {type?: string})?.type ?? e.event;\n const data = e.data as EventRecord | undefined;\n const itemId =\n typeof e.item_id === 'string' ? e.item_id : (data?.item_id as string | undefined);\n\n const delta = getTextDeltaFromStreamEvent(event);\n if (delta) return {kind: 'text_delta', delta};\n\n if (itemId) {\n const reasoningUpdate = getReasoningUpdate(e, data, type, itemId);\n if (reasoningUpdate) return reasoningUpdate;\n }\n\n if (type === 'response.output_item.added') {\n return getUpdateFromOutputItemAdded(e, data, itemId);\n }\n if (type === 'response.mcp_call.completed' && itemId) {\n return {kind: 'tool_update', item_id: itemId, status: 'success'};\n }\n if (type === 'response.mcp_call.failed' && itemId) {\n const err = typeof e.error === 'string' ? e.error : undefined;\n return {kind: 'tool_update', item_id: itemId, status: 'error', error: err};\n }\n\n const progressMatch = TOOL_PROGRESS_EVENTS.find(([t]) => t === type);\n if (progressMatch && itemId) {\n return {kind: 'tool_update', item_id: itemId, status: progressMatch[1]};\n }\n if (type === 'response.mcp_list_tools.failed' && itemId) {\n const err = typeof e.error === 'string' ? e.error : undefined;\n return {kind: 'tool_update', item_id: itemId, status: 'error', error: err};\n }\n\n if (type === 'response.output_item.done') {\n return getUpdateFromOutputItemDone(e, data);\n }\n return null;\n}\n"]}
1
+ {"version":3,"file":"getStreamEventContentUpdate.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/getStreamEventContentUpdate.ts"],"names":[],"mappings":";;AA8UA,kEA0CC;AArXD,kFAA0E;AAkC1E,MAAM,oBAAoB,GAAiC;IACvD,CAAC,qCAAqC,EAAE,SAAS,CAAC;IAClD,CAAC,uCAAuC,EAAE,SAAS,CAAC;IACpD,CAAC,qCAAqC,EAAE,SAAS,CAAC;IAClD,CAAC,oCAAoC,EAAE,SAAS,CAAC;IACjD,CAAC,sCAAsC,EAAE,SAAS,CAAC;IACnD,CAAC,oCAAoC,EAAE,SAAS,CAAC;IACjD,CAAC,0CAA0C,EAAE,SAAS,CAAC;IACvD,CAAC,4CAA4C,EAAE,SAAS,CAAC;IACzD,CAAC,6CAA6C,EAAE,SAAS,CAAC;IAC1D,CAAC,0CAA0C,EAAE,SAAS,CAAC;IACvD,CAAC,4CAA4C,EAAE,SAAS,CAAC;IACzD,CAAC,2CAA2C,EAAE,SAAS,CAAC;IACxD,CAAC,mCAAmC,EAAE,SAAS,CAAC;IAChD,CAAC,qCAAqC,EAAE,SAAS,CAAC;CACrD,CAAC;AAEF,SAAS,kBAAkB,CACvB,CAAc,EACd,IAA6B,EAC7B,IAAa,EACb,MAAc;;IAEd,IACI,IAAI,KAAK,+BAA+B;QACxC,IAAI,KAAK,uCAAuC,EAClD,CAAC;QACC,MAAM,CAAC,GAAG,CAAC,MAAA,CAAC,CAAC,KAAK,mCAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAuB,CAAC;QACzD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,CAAC;IACD,IACI,IAAI,KAAK,8BAA8B;QACvC,IAAI,KAAK,sCAAsC,EACjD,CAAC;QACC,MAAM,IAAI,GAAG,CAAC,MAAA,CAAC,CAAC,IAAI,mCAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAuB,CAAC;QAC1D,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC1B,EAAU,EACV,MAA0B;IAE1B,MAAM,WAAW,GAAG,EAAE,IAAI,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,CAAC;IACzC,OAAO,WAAW,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,SAAS,mBAAmB,CACxB,IAAgC,EAChC,EAAU;;IAEV,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,EAAE;QACF,QAAQ,EAAE,MAAA,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,mCAAI,KAAK;QACtC,WAAW;KACd,CAAC;AACN,CAAC;AAED,SAAS,wBAAwB,CAC7B,IAAgC;;IAEhC,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAC,IAAI,CAAC,EAAa,mCAAI,EAAE,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC1D,CAAC;AAED,SAAS,sBAAsB,CAC3B,IAAgC,EAChC,EAAU,EACV,MAAmD;;IAEnD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,EAAE;QACF,QAAQ,EAAE,MAAA,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,mCAAI,KAAK;QACtC,WAAW;QACX,MAAM;QACN,aAAa,EAAE,IAAI;KACtB,CAAC;AACN,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAU,EAAE,QAAgB;IACxD,OAAO,EAAE,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,6BAA6B,GAA2B;IAC1D,gBAAgB,EAAE,aAAa;IAC/B,eAAe,EAAE,YAAY;IAC7B,qBAAqB,EAAE,kBAAkB;IACzC,qBAAqB,EAAE,kBAAkB;IACzC,cAAc,EAAE,gBAAgB;CACnC,CAAC;AAEF,SAAS,4BAA4B,CACjC,CAAc,EACd,IAA6B,EAC7B,MAA0B;;IAE1B,MAAM,IAAI,GAAG,CAAC,MAAA,CAAC,CAAC,IAAI,mCAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAmC,CAEnD,CAAC;IAChB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB;QACpC,OAAO,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB;QACtC,OAAO,sBAAsB,CAAC,IAAI,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,IAAI,QAAQ;QAAE,OAAO,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE1D,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAgC;;IAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,SAAS,GAAG,IAIjB,CAAC;IACF,MAAM,KAAK,GACP,MAAA,MAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,mCACvF,MAAA,SAAS,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,mCACvF,EAAE,CAAC;IACP,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO,EAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAC,CAAC;AAChE,CAAC;AAED,SAAS,kCAAkC,CAAC,MAA0B;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,qBAAqB,CAC1B,MAA0B,EAC1B,SAA6B;IAE7B,IAAI,MAAM,IAAI,kCAAkC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAgC;;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzE,MAAM,GAAG,GAAG,IAOX,CAAC;IACF,MAAM,EAAE,GAAG,MAAA,GAAG,CAAC,MAAM,mCAAI,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAErE,IAAI,MAAM,GAAgB,SAAS,CAAC;IACpC,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,YAAY,EAAE,CAAC;QACzC,MAAM,GAAG,OAAO,CAAC;IACrB,CAAC;SAAM,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,OAAO,CAAC;IACrB,CAAC;SAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,QAA4B,CAAC;IACjC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;SACjD,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC;;QACtE,QAAQ,GAAG,SAAS,CAAC;IAC1B,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,GAAG,CAAC,EAAE;QACf,MAAM;QACN,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,MAAM;KAChB,CAAC;AACN,CAAC;AAED,SAAS,yBAAyB,CAC9B,IAAgC;IAEhC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,EAAE,GAAG,IAOV,CAAC;IACF,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,QAAQ,GAAgB,SAAS,CAAC;IACtC,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5B,QAAQ,GAAG,SAAS,CAAC;IACzB,CAAC;SAAM,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,QAAQ,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,IAAI,MAA0B,CAAC;IAC/B,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACvB,CAAC;SAAM,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,SAAS,CAAC;IACvB,CAAC;IAED,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,MAAM;QACN,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC7D,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAC1B,IAAgC,EAChC,QAAgB;IAEhB,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,IAMT,CAAC;IACF,IAAI,MAAM,GAAgB,SAAS,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;QAAE,MAAM,GAAG,SAAS,CAAC;SAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;QAAE,MAAM,GAAG,OAAO,CAAC;IAE9E,IAAI,MAA0B,CAAC;IAC/B,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;IACvB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,SAAS,CAAC;IACvB,CAAC;IACD,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE;QACb,MAAM;QACN,QAAQ;QACR,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC;AACN,CAAC;AAED,SAAS,2BAA2B,CAChC,CAAc,EACd,IAA6B;;IAE7B,MAAM,IAAI,GAAG,CAAC,MAAA,CAAC,CAAC,IAAI,mCAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAmC,CAEnD,CAAC;IAChB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,CACH,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,sBAAsB,CAAC,IAAI,CAAC,mCAC5B,oBAAoB,CAAC,IAAI,CAAC,mCAC1B,yBAAyB,CAAC,IAAI,CAAC,mCAC/B,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mCACtF,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mCACpF,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB;QAClC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,mCACX,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB;QAClC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,mCACX,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC1F,CAAC;AACN,CAAC;AAED,oGAAoG;AAEpG,SAAgB,2BAA2B,CACvC,KAA+C;;IAE/C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,GAAG,KAAoB,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAA,MAAA,CAAC,CAAC,IAAI,mCAAI,MAAC,CAAC,CAAC,IAAwB,0CAAE,IAAI,mCAAI,CAAC,CAAC,KAAK,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,CAAC,IAA+B,CAAC;IAC/C,MAAM,MAAM,GACR,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAA8B,CAAC;IAEtF,MAAM,KAAK,GAAG,IAAA,yDAA2B,EAAC,KAAK,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,OAAO,EAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAC,CAAC;IAE9C,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,eAAe,GAAG,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;IAChD,CAAC;IAED,IAAI,IAAI,KAAK,4BAA4B,EAAE,CAAC;QACxC,OAAO,4BAA4B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,KAAK,6BAA6B,IAAI,MAAM,EAAE,CAAC;QACnD,OAAO,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC;IACrE,CAAC;IACD,IAAI,IAAI,KAAK,0BAA0B,IAAI,MAAM,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,OAAO,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC;IAC/E,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACrE,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAC,CAAC;IAC5E,CAAC;IACD,IAAI,IAAI,KAAK,gCAAgC,IAAI,MAAM,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,OAAO,EAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC;IAC/E,CAAC;IAED,IAAI,IAAI,KAAK,2BAA2B,EAAE,CAAC;QACvC,OAAO,2BAA2B,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC","sourcesContent":["import type {TToolStatus} from '../../../types';\nimport {OpenAIStreamEventLike, OpenAIStreamOutputItemLike} from '../types/openAiTypes';\n\nimport {getTextDeltaFromStreamEvent} from './getTextDeltaFromStreamEvent';\n\ntype EventRecord = Record<string, unknown>;\n\nexport type StreamEventTextDelta = {kind: 'text_delta'; delta: string};\nexport type StreamEventToolAdd = {\n kind: 'tool_add';\n id: string;\n toolName: string;\n serverLabel?: string;\n /** Initial status; use 'waitingConfirmation' for mcp_approval_request, 'waitingSubmission' if API defines such. Default 'loading'. */\n status?: TToolStatus;\n /** Optional payload to show in tool card (e.g. approval request arguments). */\n headerContent?: string;\n};\nexport type StreamEventToolUpdate = {\n kind: 'tool_update';\n item_id: string;\n status: TToolStatus;\n toolName?: string;\n output?: string;\n error?: string;\n};\nexport type StreamEventThinkingAdd = {kind: 'thinking_add'; item_id: string};\nexport type StreamEventThinkingDelta = {kind: 'thinking_delta'; item_id: string; delta: string};\nexport type StreamEventThinkingDone = {kind: 'thinking_done'; item_id: string; text: string};\nexport type StreamEventContentUpdate =\n | StreamEventTextDelta\n | StreamEventToolAdd\n | StreamEventToolUpdate\n | StreamEventThinkingAdd\n | StreamEventThinkingDelta\n | StreamEventThinkingDone;\n\nconst TOOL_PROGRESS_EVENTS: Array<[string, TToolStatus]> = [\n ['response.file_search_call.completed', 'success'],\n ['response.file_search_call.in_progress', 'loading'],\n ['response.file_search_call.searching', 'loading'],\n ['response.web_search_call.completed', 'success'],\n ['response.web_search_call.in_progress', 'loading'],\n ['response.web_search_call.searching', 'loading'],\n ['response.code_interpreter_call.completed', 'success'],\n ['response.code_interpreter_call.in_progress', 'loading'],\n ['response.code_interpreter_call.interpreting', 'loading'],\n ['response.image_generation_call.completed', 'success'],\n ['response.image_generation_call.in_progress', 'loading'],\n ['response.image_generation_call.generating', 'loading'],\n ['response.mcp_list_tools.completed', 'success'],\n ['response.mcp_list_tools.in_progress', 'loading'],\n];\n\nfunction getReasoningUpdate(\n e: EventRecord,\n data: EventRecord | undefined,\n type: unknown,\n itemId: string,\n): StreamEventContentUpdate | null {\n if (\n type === 'response.reasoning_text.delta' ||\n type === 'response.reasoning_summary_text.delta'\n ) {\n const d = (e.delta ?? data?.delta) as string | undefined;\n return typeof d === 'string' ? {kind: 'thinking_delta', item_id: itemId, delta: d} : null;\n }\n if (\n type === 'response.reasoning_text.done' ||\n type === 'response.reasoning_summary_text.done'\n ) {\n const text = (e.text ?? data?.text) as string | undefined;\n return typeof text === 'string' ? {kind: 'thinking_done', item_id: itemId, text} : null;\n }\n return null;\n}\n\nfunction addUpdateForReasoning(\n id: string,\n itemId: string | undefined,\n): StreamEventContentUpdate | null {\n const effectiveId = id || (itemId ?? '');\n return effectiveId ? {kind: 'thinking_add', item_id: effectiveId} : null;\n}\n\nfunction addUpdateForMcpCall(\n item: OpenAIStreamOutputItemLike,\n id: string,\n): StreamEventContentUpdate | null {\n const name = typeof item.name === 'string' ? item.name : undefined;\n const serverLabel = typeof item.server_label === 'string' ? item.server_label : undefined;\n return {\n kind: 'tool_add',\n id,\n toolName: name ?? serverLabel ?? 'MCP',\n serverLabel,\n };\n}\n\nfunction addUpdateForFunctionCall(\n item: OpenAIStreamOutputItemLike,\n): StreamEventContentUpdate | null {\n const callId = typeof item.call_id === 'string' ? item.call_id : ((item.id as string) ?? '');\n const name = typeof item.name === 'string' ? item.name : 'Tool';\n return {kind: 'tool_add', id: callId, toolName: name};\n}\n\nfunction addUpdateForMcpRequest(\n item: OpenAIStreamOutputItemLike,\n id: string,\n status: 'waitingConfirmation' | 'waitingSubmission',\n): StreamEventContentUpdate | null {\n const name = typeof item.name === 'string' ? item.name : undefined;\n const serverLabel = typeof item.server_label === 'string' ? item.server_label : undefined;\n const args = typeof item.arguments === 'string' ? item.arguments : undefined;\n return {\n kind: 'tool_add',\n id,\n toolName: name ?? serverLabel ?? 'MCP',\n serverLabel,\n status,\n headerContent: args,\n };\n}\n\nfunction addUpdateForSimpleTool(id: string, toolName: string): StreamEventContentUpdate | null {\n return id ? {kind: 'tool_add', id, toolName} : null;\n}\n\nconst OUTPUT_ITEM_TYPE_TO_TOOL_NAME: Record<string, string> = {\n file_search_call: 'File Search',\n web_search_call: 'Web Search',\n code_interpreter_call: 'Code Interpreter',\n image_generation_call: 'Image Generation',\n mcp_list_tools: 'MCP List Tools',\n};\n\nfunction getUpdateFromOutputItemAdded(\n e: EventRecord,\n data: EventRecord | undefined,\n itemId: string | undefined,\n): StreamEventContentUpdate | null {\n const item = (e.item ?? (data?.item as OpenAIStreamOutputItemLike)) as\n | OpenAIStreamOutputItemLike\n | undefined;\n if (!item) return null;\n const id = typeof item.id === 'string' ? item.id : '';\n\n if (item.type === 'reasoning') return addUpdateForReasoning(id, itemId);\n if (item.type === 'mcp_call') return addUpdateForMcpCall(item, id);\n if (item.type === 'function_call') return addUpdateForFunctionCall(item);\n if (item.type === 'mcp_approval_request')\n return addUpdateForMcpRequest(item, id, 'waitingConfirmation');\n if (item.type === 'mcp_submission_request')\n return addUpdateForMcpRequest(item, id, 'waitingSubmission');\n\n const toolName = item.type ? OUTPUT_ITEM_TYPE_TO_TOOL_NAME[item.type] : undefined;\n if (toolName) return addUpdateForSimpleTool(id, toolName);\n\n return null;\n}\n\nfunction getReasoningDoneUpdate(item: OpenAIStreamOutputItemLike): StreamEventContentUpdate | null {\n if (item.type !== 'reasoning' || typeof item.id !== 'string') return null;\n const reasoning = item as {\n id: string;\n content?: Array<{type: string; text?: string}>;\n summary?: Array<{type: string; text?: string}>;\n };\n const texts =\n reasoning.content?.map((c) => c.text).filter((t): t is string => typeof t === 'string') ??\n reasoning.summary?.map((s) => s.text).filter((t): t is string => typeof t === 'string') ??\n [];\n const text = texts.length <= 1 ? (texts[0] ?? '') : texts.join('\\n\\n');\n return {kind: 'thinking_done', item_id: reasoning.id, text};\n}\n\nfunction mcpOutputIndicatesApplicationError(output: string | undefined): boolean {\n if (!output) return false;\n return /\\berror\\s*=\\s*[\"']true[\"']/.test(output);\n}\n\nfunction mcpTerminalToolStatus(\n errStr: string | undefined,\n outputStr: string | undefined,\n): 'success' | 'error' {\n if (errStr || mcpOutputIndicatesApplicationError(outputStr)) {\n return 'error';\n }\n return 'success';\n}\n\nfunction getMcpCallDoneUpdate(item: OpenAIStreamOutputItemLike): StreamEventContentUpdate | null {\n if (item.type !== 'mcp_call' || typeof item.id !== 'string') return null;\n const mcp = item as {\n id: string;\n name?: string;\n server_label?: string;\n status?: string;\n output?: string;\n error?: string;\n };\n const st = mcp.status ?? '';\n const outputStr = typeof mcp.output === 'string' ? mcp.output : undefined;\n const errStr = typeof mcp.error === 'string' ? mcp.error : undefined;\n\n let status: TToolStatus = 'loading';\n if (st === 'failed' || st === 'incomplete') {\n status = 'error';\n } else if (st === 'completed' || st === 'complete') {\n status = mcpTerminalToolStatus(errStr, outputStr);\n } else if (errStr) {\n status = 'error';\n } else if (outputStr !== undefined) {\n status = mcpTerminalToolStatus(errStr, outputStr);\n }\n let toolName: string | undefined;\n if (typeof mcp.name === 'string') toolName = mcp.name;\n else if (typeof mcp.server_label === 'string') toolName = mcp.server_label;\n else toolName = undefined;\n return {\n kind: 'tool_update',\n item_id: mcp.id,\n status,\n toolName,\n output: outputStr,\n error: errStr,\n };\n}\n\nfunction getFunctionCallDoneUpdate(\n item: OpenAIStreamOutputItemLike,\n): StreamEventContentUpdate | null {\n if (item.type !== 'function_call') return null;\n const fn = item as {\n call_id: string;\n name?: string;\n output?: string;\n result?: string;\n status?: string;\n error?: string;\n };\n const fnCallId = fn.call_id ? fn.call_id : '';\n\n if (!fnCallId) return null;\n\n let fnStatus: TToolStatus = 'loading';\n if (fn.status === 'completed') {\n fnStatus = 'success';\n } else if (fn.status === 'failed') {\n fnStatus = 'error';\n }\n\n let output: string | undefined;\n if (typeof fn.output === 'string') {\n output = fn.output;\n } else if (typeof fn.result === 'string') {\n output = fn.result;\n } else {\n output = undefined;\n }\n\n return {\n kind: 'tool_update',\n item_id: fnCallId,\n status: fnStatus,\n toolName: typeof fn.name === 'string' ? fn.name : undefined,\n output,\n error: typeof fn.error === 'string' ? fn.error : undefined,\n };\n}\n\nfunction getToolCallDoneUpdate(\n item: OpenAIStreamOutputItemLike,\n toolName: string,\n): StreamEventContentUpdate | null {\n if (typeof item.id !== 'string') return null;\n const t = item as {\n id: string;\n status?: string;\n error?: string;\n output?: string;\n results?: unknown;\n };\n let status: TToolStatus = 'loading';\n if (t.status === 'completed') status = 'success';\n else if (t.status === 'failed' || t.status === 'incomplete') status = 'error';\n\n let output: string | undefined;\n if (typeof t.output === 'string') {\n output = t.output;\n } else if (typeof t.results === 'string') {\n output = t.results;\n } else if (Array.isArray(t.results)) {\n output = JSON.stringify(t.results);\n } else {\n output = undefined;\n }\n return {\n kind: 'tool_update',\n item_id: t.id,\n status,\n toolName,\n output,\n error: typeof t.error === 'string' ? t.error : undefined,\n };\n}\n\nfunction getUpdateFromOutputItemDone(\n e: EventRecord,\n data: EventRecord | undefined,\n): StreamEventContentUpdate | null {\n const item = (e.item ?? (data?.item as OpenAIStreamOutputItemLike)) as\n | OpenAIStreamOutputItemLike\n | undefined;\n if (!item) return null;\n return (\n getReasoningDoneUpdate(item) ??\n getMcpCallDoneUpdate(item) ??\n getFunctionCallDoneUpdate(item) ??\n (item.type === 'file_search_call' ? getToolCallDoneUpdate(item, 'File Search') : null) ??\n (item.type === 'web_search_call' ? getToolCallDoneUpdate(item, 'Web Search') : null) ??\n (item.type === 'code_interpreter_call'\n ? getToolCallDoneUpdate(item, 'Code Interpreter')\n : null) ??\n (item.type === 'image_generation_call'\n ? getToolCallDoneUpdate(item, 'Image Generation')\n : null) ??\n (item.type === 'mcp_list_tools' ? getToolCallDoneUpdate(item, 'MCP List Tools') : null)\n );\n}\n\n/** Stream event → content update (text delta, tool add/update, thinking add/delta/done) or null. */\n\nexport function getStreamEventContentUpdate(\n event: OpenAIStreamEventLike | null | undefined,\n): StreamEventContentUpdate | null {\n if (!event) return null;\n const e = event as EventRecord;\n const type = e.type ?? (e.data as {type?: string})?.type ?? e.event;\n const data = e.data as EventRecord | undefined;\n const itemId =\n typeof e.item_id === 'string' ? e.item_id : (data?.item_id as string | undefined);\n\n const delta = getTextDeltaFromStreamEvent(event);\n if (delta) return {kind: 'text_delta', delta};\n\n if (itemId) {\n const reasoningUpdate = getReasoningUpdate(e, data, type, itemId);\n if (reasoningUpdate) return reasoningUpdate;\n }\n\n if (type === 'response.output_item.added') {\n return getUpdateFromOutputItemAdded(e, data, itemId);\n }\n if (type === 'response.mcp_call.completed' && itemId) {\n return {kind: 'tool_update', item_id: itemId, status: 'success'};\n }\n if (type === 'response.mcp_call.failed' && itemId) {\n const err = typeof e.error === 'string' ? e.error : undefined;\n return {kind: 'tool_update', item_id: itemId, status: 'error', error: err};\n }\n\n const progressMatch = TOOL_PROGRESS_EVENTS.find(([t]) => t === type);\n if (progressMatch && itemId) {\n return {kind: 'tool_update', item_id: itemId, status: progressMatch[1]};\n }\n if (type === 'response.mcp_list_tools.failed' && itemId) {\n const err = typeof e.error === 'string' ? e.error : undefined;\n return {kind: 'tool_update', item_id: itemId, status: 'error', error: err};\n }\n\n if (type === 'response.output_item.done') {\n return getUpdateFromOutputItemDone(e, data);\n }\n return null;\n}\n"]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapOutputToContent = mapOutputToContent;
4
- const prettyPrintJson_1 = require("./prettyPrintJson.js");
5
4
  function pushBlocksForMessage(msg, blocks) {
6
5
  var _a;
7
6
  for (const part of (_a = msg.content) !== null && _a !== void 0 ? _a : []) {
@@ -43,12 +42,10 @@ function pushBlocksForMcpCall(mcp, blocks) {
43
42
  else if (typeof mcp.output === 'string' && mcp.output.length > 0) {
44
43
  bodyText = mcp.output;
45
44
  }
46
- const mcpRequest = (0, prettyPrintJson_1.prettyPrintJson)(mcp.arguments);
47
- const mcpResponse = (0, prettyPrintJson_1.prettyPrintJson)(bodyText);
48
45
  blocks.push({
49
46
  type: 'tool',
50
47
  id: mcp.id,
51
- data: Object.assign(Object.assign(Object.assign({ toolName: (_d = (_c = mcp.name) !== null && _c !== void 0 ? _c : mcp.server_label) !== null && _d !== void 0 ? _d : 'MCP', status }, (bodyText ? { bodyContent: bodyText } : {})), (mcpRequest ? { mcpRequest } : {})), (mcpResponse ? { mcpResponse } : {})),
48
+ data: Object.assign({ toolName: (_d = (_c = mcp.name) !== null && _c !== void 0 ? _c : mcp.server_label) !== null && _d !== void 0 ? _d : 'MCP', status }, (bodyText ? { bodyContent: bodyText } : {})),
52
49
  });
53
50
  }
54
51
  function pushBlocksForItem(item, blocks) {
@@ -1 +1 @@
1
- {"version":3,"file":"mapOutputToContent.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/mapOutputToContent.ts"],"names":[],"mappings":"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","sourcesContent":["import type {TAssistantMessage, TMessageContentUnion} from '../../../types';\nimport {\n OpenAIResponseFunctionToolCall,\n OpenAIResponseMcpCallLike,\n OpenAIResponseOutputItem,\n OpenAIResponseOutputMessage,\n OpenAIResponseReasoningItem,\n} from '../types/openAiTypes';\n\nimport {prettyPrintJson} from './prettyPrintJson';\n\nfunction pushBlocksForMessage(\n msg: OpenAIResponseOutputMessage,\n blocks: TMessageContentUnion[],\n): void {\n for (const part of msg.content ?? []) {\n if (part.type === 'output_text') {\n blocks.push({type: 'text', data: {text: part.text}});\n }\n if (part.type === 'refusal') {\n blocks.push({type: 'text', data: {text: part.refusal}});\n }\n }\n}\n\nfunction pushBlocksForReasoning(\n reasoning: OpenAIResponseReasoningItem,\n blocks: TMessageContentUnion[],\n): void {\n const content =\n reasoning.content?.map((c) => c.text) ?? reasoning.summary?.map((s) => s.text) ?? [];\n blocks.push({\n ...(Boolean(reasoning.id) && {id: reasoning.id}),\n type: 'thinking',\n data: {\n content: content.length <= 1 ? (content[0] ?? '') : content,\n status: 'thought',\n defaultExpanded: false,\n },\n });\n}\n\nfunction pushBlocksForFunctionCall(\n fn: OpenAIResponseFunctionToolCall,\n blocks: TMessageContentUnion[],\n): void {\n blocks.push({\n type: 'tool',\n id: fn.call_id,\n data: {toolName: fn.name, status: 'loading'},\n });\n}\n\nfunction pushBlocksForMcpCall(\n mcp: OpenAIResponseMcpCallLike,\n blocks: TMessageContentUnion[],\n): void {\n const statusByMcpStatus: Record<string, 'success' | 'error' | 'loading'> = {\n completed: 'success',\n failed: 'error',\n };\n const status = statusByMcpStatus[mcp.status ?? ''] ?? 'loading';\n let bodyText: string | undefined;\n if (typeof mcp.error === 'string' && mcp.error.length > 0) {\n bodyText = mcp.error;\n } else if (typeof mcp.output === 'string' && mcp.output.length > 0) {\n bodyText = mcp.output;\n }\n const mcpRequest = prettyPrintJson(mcp.arguments);\n const mcpResponse = prettyPrintJson(bodyText);\n blocks.push({\n type: 'tool',\n id: mcp.id,\n data: {\n toolName: mcp.name ?? mcp.server_label ?? 'MCP',\n status,\n ...(bodyText ? {bodyContent: bodyText} : {}),\n ...(mcpRequest ? {mcpRequest} : {}),\n ...(mcpResponse ? {mcpResponse} : {}),\n },\n });\n}\n\nfunction pushBlocksForItem(item: OpenAIResponseOutputItem, blocks: TMessageContentUnion[]): void {\n if (item.type === 'message' && 'role' in item && item.role === 'assistant') {\n pushBlocksForMessage(item as OpenAIResponseOutputMessage, blocks);\n return;\n }\n if (item.type === 'reasoning') {\n pushBlocksForReasoning(item as OpenAIResponseReasoningItem, blocks);\n return;\n }\n if (item.type === 'function_call') {\n pushBlocksForFunctionCall(item as OpenAIResponseFunctionToolCall, blocks);\n return;\n }\n if (item.type === 'mcp_call') {\n pushBlocksForMcpCall(item as OpenAIResponseMcpCallLike, blocks);\n }\n}\n\n/** OpenAI response output (flat array of message/reasoning/function_call) → TAssistantMessage content. */\n\nexport function mapOutputToContent(\n output: OpenAIResponseOutputItem[] | null | undefined,\n): TAssistantMessage['content'] {\n const blocks: TMessageContentUnion[] = [];\n for (const item of output ?? []) {\n pushBlocksForItem(item, blocks);\n }\n if (blocks.length === 0) return '';\n if (blocks.length === 1 && blocks[0].type === 'text') return blocks[0].data.text;\n return blocks;\n}\n"]}
1
+ {"version":3,"file":"mapOutputToContent.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/mapOutputToContent.ts"],"names":[],"mappings":"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","sourcesContent":["import type {TAssistantMessage, TMessageContentUnion} from '../../../types';\nimport {\n OpenAIResponseFunctionToolCall,\n OpenAIResponseMcpCallLike,\n OpenAIResponseOutputItem,\n OpenAIResponseOutputMessage,\n OpenAIResponseReasoningItem,\n} from '../types/openAiTypes';\n\nfunction pushBlocksForMessage(\n msg: OpenAIResponseOutputMessage,\n blocks: TMessageContentUnion[],\n): void {\n for (const part of msg.content ?? []) {\n if (part.type === 'output_text') {\n blocks.push({type: 'text', data: {text: part.text}});\n }\n if (part.type === 'refusal') {\n blocks.push({type: 'text', data: {text: part.refusal}});\n }\n }\n}\n\nfunction pushBlocksForReasoning(\n reasoning: OpenAIResponseReasoningItem,\n blocks: TMessageContentUnion[],\n): void {\n const content =\n reasoning.content?.map((c) => c.text) ?? reasoning.summary?.map((s) => s.text) ?? [];\n blocks.push({\n ...(Boolean(reasoning.id) && {id: reasoning.id}),\n type: 'thinking',\n data: {\n content: content.length <= 1 ? (content[0] ?? '') : content,\n status: 'thought',\n defaultExpanded: false,\n },\n });\n}\n\nfunction pushBlocksForFunctionCall(\n fn: OpenAIResponseFunctionToolCall,\n blocks: TMessageContentUnion[],\n): void {\n blocks.push({\n type: 'tool',\n id: fn.call_id,\n data: {toolName: fn.name, status: 'loading'},\n });\n}\n\nfunction pushBlocksForMcpCall(\n mcp: OpenAIResponseMcpCallLike,\n blocks: TMessageContentUnion[],\n): void {\n const statusByMcpStatus: Record<string, 'success' | 'error' | 'loading'> = {\n completed: 'success',\n failed: 'error',\n };\n const status = statusByMcpStatus[mcp.status ?? ''] ?? 'loading';\n let bodyText: string | undefined;\n if (typeof mcp.error === 'string' && mcp.error.length > 0) {\n bodyText = mcp.error;\n } else if (typeof mcp.output === 'string' && mcp.output.length > 0) {\n bodyText = mcp.output;\n }\n blocks.push({\n type: 'tool',\n id: mcp.id,\n data: {\n toolName: mcp.name ?? mcp.server_label ?? 'MCP',\n status,\n ...(bodyText ? {bodyContent: bodyText} : {}),\n },\n });\n}\n\nfunction pushBlocksForItem(item: OpenAIResponseOutputItem, blocks: TMessageContentUnion[]): void {\n if (item.type === 'message' && 'role' in item && item.role === 'assistant') {\n pushBlocksForMessage(item as OpenAIResponseOutputMessage, blocks);\n return;\n }\n if (item.type === 'reasoning') {\n pushBlocksForReasoning(item as OpenAIResponseReasoningItem, blocks);\n return;\n }\n if (item.type === 'function_call') {\n pushBlocksForFunctionCall(item as OpenAIResponseFunctionToolCall, blocks);\n return;\n }\n if (item.type === 'mcp_call') {\n pushBlocksForMcpCall(item as OpenAIResponseMcpCallLike, blocks);\n }\n}\n\n/** OpenAI response output (flat array of message/reasoning/function_call) → TAssistantMessage content. */\n\nexport function mapOutputToContent(\n output: OpenAIResponseOutputItem[] | null | undefined,\n): TAssistantMessage['content'] {\n const blocks: TMessageContentUnion[] = [];\n for (const item of output ?? []) {\n pushBlocksForItem(item, blocks);\n }\n if (blocks.length === 0) return '';\n if (blocks.length === 1 && blocks[0].type === 'text') return blocks[0].data.text;\n return blocks;\n}\n"]}
@@ -1,87 +1,8 @@
1
- @charset "UTF-8";
2
1
  @import '@diplodoc/transform/dist/css/yfm.css';
3
- /**
4
- * YFM theming.
5
- *
6
- * @diplodoc/transform ships a single (light) set of `--yfm-color-*` values.
7
- * Here we re-map them onto Gravity UI tokens (`--g-color-*`) so the markdown
8
- * content follows the active Gravity theme (`.g-root_theme_light` /
9
- * `.g-root_theme_dark`) automatically — no dedicated dark-theme block needed.
10
- */
11
- .yfm {
12
- --yfm-color-base: var(--g-color-base-background);
13
- --yfm-color-text: var(--g-color-text-primary);
14
- --yfm-color-link: var(--g-color-text-link);
15
- --yfm-color-link-hover: var(--g-color-text-link-hover);
16
- --yfm-color-border: var(--g-color-line-generic);
17
- --yfm-color-accent: var(--g-color-base-brand);
18
- --yfm-color-inline-code: var(--g-color-text-misc);
19
- --yfm-color-inline-code-background: var(--g-color-base-misc-light);
20
- --yfm-color-code-background: var(--g-color-base-misc-light);
21
- --yfm-color-code-hovered-background: var(--g-color-base-misc-light-hover);
22
- --yfm-color-hljs-background: var(--g-color-base-generic);
23
- --yfm-color-hljs-subst: var(--g-color-text-primary);
24
- --yfm-color-hljs-comment: var(--g-color-text-hint);
25
- --yfm-color-hljs-section: var(--g-color-text-info-heavy);
26
- --yfm-color-hljs-deletion: var(--g-color-text-positive);
27
- --yfm-color-hljs-addition: var(--g-color-text-positive);
28
- --yfm-color-hljs-literal: var(--g-color-text-warning);
29
- --yfm-color-hljs-pseudo: var(--g-color-text-utility);
30
- --yfm-color-hljs-meta: var(--g-color-text-info);
31
- --yfm-color-hljs-meta-string: var(--g-color-text-positive);
32
- --yfm-color-note-tip: var(--g-color-text-positive);
33
- --yfm-color-note-tip-background: var(--g-color-base-positive-light);
34
- --yfm-color-note-info: var(--g-color-text-info);
35
- --yfm-color-note-info-background: var(--g-color-base-info-light);
36
- --yfm-color-note-warning: var(--g-color-text-warning);
37
- --yfm-color-note-warning-background: var(--g-color-base-warning-light);
38
- --yfm-color-note-important: var(--g-color-text-danger);
39
- --yfm-color-note-important-background: var(--g-color-base-danger-light);
40
- --yfm-color-table: var(--g-color-text-primary);
41
- --yfm-color-table-border: var(--g-color-line-generic);
42
- --yfm-color-table-background: var(--g-color-base-background);
43
- --yfm-color-table-row-background: var(--g-color-base-generic);
44
- color: var(--g-color-text-primary);
45
- }
46
- .yfm a {
47
- color: var(--g-color-text-link);
48
- text-decoration: none;
49
- border-radius: var(--g-focus-border-radius);
50
- }
51
- .yfm a:hover {
52
- color: var(--g-color-text-link-hover);
53
- }
54
- .yfm a:focus-visible {
55
- outline: 2px solid var(--g-color-line-focus);
56
- }
57
- .yfm b,
58
- .yfm strong {
59
- font-weight: var(--g-text-accent-font-weight);
60
- }
61
- .yfm hr {
62
- background-color: var(--g-color-base-background);
63
- }
64
- .yfm blockquote {
65
- border-left-color: var(--g-color-base-brand);
66
- }
67
- .yfm code {
68
- background: var(--g-color-base-misc-light);
69
- color: var(--g-color-text-misc);
70
- }
71
- .yfm .yfm-note {
72
- background-color: var(--g-color-base-float);
73
- border-color: var(--g-color-line-generic);
74
- }
75
- .yfm .yfm-tab.active {
76
- border-bottom-color: var(--g-color-base-brand);
77
- }
78
- .yfm a.yfm-anchor {
79
- display: none;
80
- }
81
-
82
2
  .g-aikit-markdown-renderer {
83
3
  max-width: 100%;
84
4
  overflow-x: auto;
5
+ color: var(--g-color-text-primary);
85
6
  /* Tables inside message wrappers: reset inherited word-break; scroll on this root when wide */
86
7
  }
87
8
  .g-aikit-markdown-renderer table {
@@ -7,10 +7,8 @@ const react_1 = require("react");
7
7
  const uuid_1 = require("uuid");
8
8
  const openai_1 = require("../../../adapters/openai/index.js");
9
9
  const types_1 = require("../../../types/index.js");
10
- const messageTypeRegistry_1 = require("../../../utils/messageTypeRegistry.js");
11
10
  const InputContext_1 = require("../../molecules/InputContext/index.js");
12
11
  const ChatContainer_1 = require("../ChatContainer/index.js");
13
- const McpToolRenderer_1 = require("./McpToolRenderer.js");
14
12
  const transforms_1 = require("./transforms/index.js");
15
13
  function isFileAttachment(value) {
16
14
  if (!value || typeof value !== 'object')
@@ -317,26 +315,15 @@ function AIStudioChatInner(props) {
317
315
  }
318
316
  }, []);
319
317
  /**
320
- * Build the final messageListConfig:
321
- * - Wrap consumer-provided Like/Dislike actions so the library toggles `userRating`
322
- * automatically before delegating to the original `onClick`. Other actions and
323
- * non-default (ReactNode) entries pass through unchanged.
324
- * - Inject a custom 'tool' renderer that renders MCP request/response sections when
325
- * `mcpRequest`/`mcpResponse` are present in the tool content. A consumer-provided
326
- * `messageRendererRegistry` wins on overlap.
318
+ * Wrap consumer-provided Like/Unlike actions so the library toggles `userRating`
319
+ * automatically before delegating to the original `onClick`. Other actions and
320
+ * non-default (ReactNode) entries pass through unchanged.
327
321
  */
328
322
  const messageListConfig = (0, react_1.useMemo)(() => {
329
- var _a;
330
323
  const original = chatContainerProps.messageListConfig;
331
- const baseRegistry = (0, messageTypeRegistry_1.createMessageRendererRegistry)();
332
- (0, messageTypeRegistry_1.registerMessageRenderer)(baseRegistry, 'tool', {
333
- component: McpToolRenderer_1.McpToolRenderer,
334
- });
335
- const messageRendererRegistry = (0, messageTypeRegistry_1.mergeMessageRendererRegistries)(baseRegistry, (_a = original === null || original === void 0 ? void 0 : original.messageRendererRegistry) !== null && _a !== void 0 ? _a : {});
336
324
  const originalAssistantActions = original === null || original === void 0 ? void 0 : original.assistantActions;
337
- if (!originalAssistantActions) {
338
- return Object.assign(Object.assign({}, original), { messageRendererRegistry });
339
- }
325
+ if (!originalAssistantActions)
326
+ return original;
340
327
  const wrappedAssistantActions = originalAssistantActions.map((action) => {
341
328
  const typed = action;
342
329
  const isLike = typed.type === types_1.BaseMessageActionType.Like;
@@ -353,7 +340,7 @@ function AIStudioChatInner(props) {
353
340
  originalOnClick(message);
354
341
  } });
355
342
  });
356
- return Object.assign(Object.assign({}, original), { assistantActions: wrappedAssistantActions, messageRendererRegistry });
343
+ return Object.assign(Object.assign({}, original), { assistantActions: wrappedAssistantActions });
357
344
  }, [chatContainerProps.messageListConfig, setUserRating]);
358
345
  return ((0, jsx_runtime_1.jsx)(ChatContainer_1.ChatContainer, Object.assign({}, chatContainerProps, { messageListConfig: messageListConfig, messages: displayMessages, status: status, error: streamResult.error, onSendMessage: handleSendMessage, onCancel: handleCancel, onRetry: handleRetry, chats: showHistory ? chats : undefined, activeChat: showHistory ? activeChat : undefined, onSelectChat: showHistory ? handleSelectChat : undefined, onCreateChat: showHistory ? handleCreateChat : undefined, onDeleteChat: showHistory ? handleDeleteChat : undefined, showHistory: showHistory, showNewChat: showNewChat, promptInputProps: Object.assign(Object.assign({}, chatContainerProps.promptInputProps), { view: 'full', headerProps: Object.assign(Object.assign({}, (_c = chatContainerProps.promptInputProps) === null || _c === void 0 ? void 0 : _c.headerProps), { contextItems: (_f = (_e = (_d = chatContainerProps.promptInputProps) === null || _d === void 0 ? void 0 : _d.headerProps) === null || _e === void 0 ? void 0 : _e.contextItems) !== null && _f !== void 0 ? _f : contextItems }), footerProps: Object.assign(Object.assign({}, (_g = chatContainerProps.promptInputProps) === null || _g === void 0 ? void 0 : _g.footerProps), { attachmentContent: (_k = (_j = (_h = chatContainerProps.promptInputProps) === null || _h === void 0 ? void 0 : _h.footerProps) === null || _j === void 0 ? void 0 : _j.attachmentContent) !== null && _k !== void 0 ? _k : attachmentContent }) }) })));
359
346
  }