@gravity-ui/aikit 2.1.1-beta.fdcc105931e205d3f8df81bbb9e9d06df211abcd.0 → 2.2.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.
- package/build/cjs/adapters/openai/helpers/applyContentUpdate.js +6 -1
- package/build/cjs/adapters/openai/helpers/applyContentUpdate.js.map +1 -1
- package/build/cjs/adapters/openai/helpers/getStreamEventContentUpdate.d.ts +6 -0
- package/build/cjs/adapters/openai/helpers/getStreamEventContentUpdate.js +9 -14
- package/build/cjs/adapters/openai/helpers/getStreamEventContentUpdate.js.map +1 -1
- package/build/cjs/adapters/openai/helpers/mapOutputToContent.js +4 -1
- package/build/cjs/adapters/openai/helpers/mapOutputToContent.js.map +1 -1
- package/build/cjs/adapters/openai/helpers/prettyPrintJson.d.ts +5 -0
- package/build/cjs/adapters/openai/helpers/prettyPrintJson.js +18 -0
- package/build/cjs/adapters/openai/helpers/prettyPrintJson.js.map +1 -0
- package/build/cjs/components/atoms/MarkdownRenderer/MarkdownRenderer.css +80 -1
- package/build/cjs/components/pages/AIStudioChat/AIStudioChat.js +19 -6
- package/build/cjs/components/pages/AIStudioChat/AIStudioChat.js.map +1 -1
- package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.css +14 -0
- package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.d.ts +5 -0
- package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.js +21 -0
- package/build/cjs/components/pages/AIStudioChat/McpToolRenderer.js.map +1 -0
- package/build/cjs/components/pages/AIStudioChat/i18n/en.json +4 -0
- package/build/cjs/components/pages/AIStudioChat/i18n/index.d.ts +13 -0
- package/build/cjs/components/pages/AIStudioChat/i18n/index.js +10 -0
- package/build/cjs/components/pages/AIStudioChat/i18n/index.js.map +1 -0
- package/build/cjs/components/pages/AIStudioChat/i18n/ru.json +4 -0
- package/build/cjs/package.json +1 -1
- package/build/cjs/types/messages.d.ts +6 -1
- package/build/cjs/types/messages.js.map +1 -1
- package/build/esm/adapters/openai/helpers/applyContentUpdate.js +6 -1
- package/build/esm/adapters/openai/helpers/applyContentUpdate.js.map +1 -1
- package/build/esm/adapters/openai/helpers/getStreamEventContentUpdate.d.ts +6 -0
- package/build/esm/adapters/openai/helpers/getStreamEventContentUpdate.js +9 -14
- package/build/esm/adapters/openai/helpers/getStreamEventContentUpdate.js.map +1 -1
- package/build/esm/adapters/openai/helpers/mapOutputToContent.js +4 -1
- package/build/esm/adapters/openai/helpers/mapOutputToContent.js.map +1 -1
- package/build/esm/adapters/openai/helpers/prettyPrintJson.d.ts +5 -0
- package/build/esm/adapters/openai/helpers/prettyPrintJson.js +15 -0
- package/build/esm/adapters/openai/helpers/prettyPrintJson.js.map +1 -0
- package/build/esm/components/atoms/MarkdownRenderer/MarkdownRenderer.css +80 -1
- package/build/esm/components/pages/AIStudioChat/AIStudioChat.js +19 -6
- package/build/esm/components/pages/AIStudioChat/AIStudioChat.js.map +1 -1
- package/build/esm/components/pages/AIStudioChat/McpToolRenderer.css +14 -0
- package/build/esm/components/pages/AIStudioChat/McpToolRenderer.d.ts +5 -0
- package/build/esm/components/pages/AIStudioChat/McpToolRenderer.js +18 -0
- package/build/esm/components/pages/AIStudioChat/McpToolRenderer.js.map +1 -0
- package/build/esm/components/pages/AIStudioChat/i18n/en.json +4 -0
- package/build/esm/components/pages/AIStudioChat/i18n/index.d.ts +13 -0
- package/build/esm/components/pages/AIStudioChat/i18n/index.js +6 -0
- package/build/esm/components/pages/AIStudioChat/i18n/index.js.map +1 -0
- package/build/esm/components/pages/AIStudioChat/i18n/ru.json +4 -0
- package/build/esm/package.json +1 -1
- package/build/esm/types/messages.d.ts +6 -1
- package/build/esm/types/messages.js.map +1 -1
- package/package.json +1 -1
|
@@ -42,6 +42,9 @@ 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
|
+
}
|
|
45
48
|
return [
|
|
46
49
|
...parts,
|
|
47
50
|
{
|
|
@@ -69,7 +72,9 @@ function applyToolUpdate(parts, update) {
|
|
|
69
72
|
return partsToUpdate;
|
|
70
73
|
const bodyText = update.error || update.output || undefined;
|
|
71
74
|
return partsToUpdate.map((p, i) => i === idx
|
|
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 } : {})) }
|
|
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);
|
|
73
78
|
}
|
|
74
79
|
function applyThinkingAdd(parts, update) {
|
|
75
80
|
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: {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"]}
|
|
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"]}
|
|
@@ -13,6 +13,8 @@ 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;
|
|
16
18
|
};
|
|
17
19
|
export type StreamEventToolUpdate = {
|
|
18
20
|
kind: 'tool_update';
|
|
@@ -21,6 +23,10 @@ export type StreamEventToolUpdate = {
|
|
|
21
23
|
toolName?: string;
|
|
22
24
|
output?: string;
|
|
23
25
|
error?: string;
|
|
26
|
+
/** MCP request arguments, pretty-printed JSON. */
|
|
27
|
+
mcpRequest?: string;
|
|
28
|
+
/** MCP response or error, pretty-printed JSON. */
|
|
29
|
+
mcpResponse?: string;
|
|
24
30
|
};
|
|
25
31
|
export type StreamEventThinkingAdd = {
|
|
26
32
|
kind: 'thinking_add';
|
|
@@ -2,6 +2,7 @@
|
|
|
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");
|
|
5
6
|
const TOOL_PROGRESS_EVENTS = [
|
|
6
7
|
['response.file_search_call.completed', 'success'],
|
|
7
8
|
['response.file_search_call.in_progress', 'loading'],
|
|
@@ -40,12 +41,9 @@ function addUpdateForMcpCall(item, id) {
|
|
|
40
41
|
var _a;
|
|
41
42
|
const name = typeof item.name === 'string' ? item.name : undefined;
|
|
42
43
|
const serverLabel = typeof item.server_label === 'string' ? item.server_label : undefined;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
toolName: (_a = name !== null && name !== void 0 ? name : serverLabel) !== null && _a !== void 0 ? _a : 'MCP',
|
|
47
|
-
serverLabel,
|
|
48
|
-
};
|
|
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 } : {}));
|
|
49
47
|
}
|
|
50
48
|
function addUpdateForFunctionCall(item) {
|
|
51
49
|
var _a;
|
|
@@ -126,6 +124,7 @@ function getMcpCallDoneUpdate(item) {
|
|
|
126
124
|
const st = (_a = mcp.status) !== null && _a !== void 0 ? _a : '';
|
|
127
125
|
const outputStr = typeof mcp.output === 'string' ? mcp.output : undefined;
|
|
128
126
|
const errStr = typeof mcp.error === 'string' ? mcp.error : undefined;
|
|
127
|
+
const argsStr = typeof mcp.arguments === 'string' ? mcp.arguments : undefined;
|
|
129
128
|
let status = 'loading';
|
|
130
129
|
if (st === 'failed' || st === 'incomplete') {
|
|
131
130
|
status = 'error';
|
|
@@ -146,14 +145,10 @@ function getMcpCallDoneUpdate(item) {
|
|
|
146
145
|
toolName = mcp.server_label;
|
|
147
146
|
else
|
|
148
147
|
toolName = undefined;
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
toolName,
|
|
154
|
-
output: outputStr,
|
|
155
|
-
error: errStr,
|
|
156
|
-
};
|
|
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 } : {}));
|
|
157
152
|
}
|
|
158
153
|
function getFunctionCallDoneUpdate(item) {
|
|
159
154
|
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';\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
|
+
{"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,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mapOutputToContent = mapOutputToContent;
|
|
4
|
+
const prettyPrintJson_1 = require("./prettyPrintJson.js");
|
|
4
5
|
function pushBlocksForMessage(msg, blocks) {
|
|
5
6
|
var _a;
|
|
6
7
|
for (const part of (_a = msg.content) !== null && _a !== void 0 ? _a : []) {
|
|
@@ -42,10 +43,12 @@ function pushBlocksForMcpCall(mcp, blocks) {
|
|
|
42
43
|
else if (typeof mcp.output === 'string' && mcp.output.length > 0) {
|
|
43
44
|
bodyText = mcp.output;
|
|
44
45
|
}
|
|
46
|
+
const mcpRequest = (0, prettyPrintJson_1.prettyPrintJson)(mcp.arguments);
|
|
47
|
+
const mcpResponse = (0, prettyPrintJson_1.prettyPrintJson)(bodyText);
|
|
45
48
|
blocks.push({
|
|
46
49
|
type: 'tool',
|
|
47
50
|
id: mcp.id,
|
|
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 } : {})),
|
|
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 } : {})),
|
|
49
52
|
});
|
|
50
53
|
}
|
|
51
54
|
function pushBlocksForItem(item, blocks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapOutputToContent.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/mapOutputToContent.ts"],"names":[],"mappings":";;
|
|
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"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prettyPrintJson = prettyPrintJson;
|
|
4
|
+
/**
|
|
5
|
+
* Pretty-print a string that may contain JSON. Falls back to the original string
|
|
6
|
+
* if it doesn't parse as JSON, so non-JSON payloads render unchanged.
|
|
7
|
+
*/
|
|
8
|
+
function prettyPrintJson(s) {
|
|
9
|
+
if (!s)
|
|
10
|
+
return undefined;
|
|
11
|
+
try {
|
|
12
|
+
return JSON.stringify(JSON.parse(s), null, 2);
|
|
13
|
+
}
|
|
14
|
+
catch (_a) {
|
|
15
|
+
return s;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=prettyPrintJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prettyPrintJson.js","sourceRoot":"../../../../../src","sources":["adapters/openai/helpers/prettyPrintJson.ts"],"names":[],"mappings":";;AAIA,0CAOC;AAXD;;;GAGG;AACH,SAAgB,eAAe,CAAC,CAAqB;IACjD,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,WAAM,CAAC;QACL,OAAO,CAAC,CAAC;IACb,CAAC;AACL,CAAC","sourcesContent":["/**\n * Pretty-print a string that may contain JSON. Falls back to the original string\n * if it doesn't parse as JSON, so non-JSON payloads render unchanged.\n */\nexport function prettyPrintJson(s: string | undefined): string | undefined {\n if (!s) return undefined;\n try {\n return JSON.stringify(JSON.parse(s), null, 2);\n } catch {\n return s;\n }\n}\n"]}
|
|
@@ -1,8 +1,87 @@
|
|
|
1
|
+
@charset "UTF-8";
|
|
1
2
|
@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
|
+
|
|
2
82
|
.g-aikit-markdown-renderer {
|
|
3
83
|
max-width: 100%;
|
|
4
84
|
overflow-x: auto;
|
|
5
|
-
color: var(--g-color-text-primary);
|
|
6
85
|
/* Tables inside message wrappers: reset inherited word-break; scroll on this root when wide */
|
|
7
86
|
}
|
|
8
87
|
.g-aikit-markdown-renderer table {
|
|
@@ -7,8 +7,10 @@ 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");
|
|
10
11
|
const InputContext_1 = require("../../molecules/InputContext/index.js");
|
|
11
12
|
const ChatContainer_1 = require("../ChatContainer/index.js");
|
|
13
|
+
const McpToolRenderer_1 = require("./McpToolRenderer.js");
|
|
12
14
|
const transforms_1 = require("./transforms/index.js");
|
|
13
15
|
function isFileAttachment(value) {
|
|
14
16
|
if (!value || typeof value !== 'object')
|
|
@@ -315,15 +317,26 @@ function AIStudioChatInner(props) {
|
|
|
315
317
|
}
|
|
316
318
|
}, []);
|
|
317
319
|
/**
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
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.
|
|
321
327
|
*/
|
|
322
328
|
const messageListConfig = (0, react_1.useMemo)(() => {
|
|
329
|
+
var _a;
|
|
323
330
|
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 : {});
|
|
324
336
|
const originalAssistantActions = original === null || original === void 0 ? void 0 : original.assistantActions;
|
|
325
|
-
if (!originalAssistantActions)
|
|
326
|
-
return original;
|
|
337
|
+
if (!originalAssistantActions) {
|
|
338
|
+
return Object.assign(Object.assign({}, original), { messageRendererRegistry });
|
|
339
|
+
}
|
|
327
340
|
const wrappedAssistantActions = originalAssistantActions.map((action) => {
|
|
328
341
|
const typed = action;
|
|
329
342
|
const isLike = typed.type === types_1.BaseMessageActionType.Like;
|
|
@@ -340,7 +353,7 @@ function AIStudioChatInner(props) {
|
|
|
340
353
|
originalOnClick(message);
|
|
341
354
|
} });
|
|
342
355
|
});
|
|
343
|
-
return Object.assign(Object.assign({}, original), { assistantActions: wrappedAssistantActions });
|
|
356
|
+
return Object.assign(Object.assign({}, original), { assistantActions: wrappedAssistantActions, messageRendererRegistry });
|
|
344
357
|
}, [chatContainerProps.messageListConfig, setUserRating]);
|
|
345
358
|
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 }) }) })));
|
|
346
359
|
}
|