@gravity-ui/aikit 2.25.0 → 2.25.1-beta.878aea7e24fa31cfa067fc42048ca0be5fcbaca9.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/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"2.25.0","type":"commonjs","sideEffects":["*.css","*.scss"]}
|
|
1
|
+
{"version":"2.25.1-beta.878aea7e24fa31cfa067fc42048ca0be5fcbaca9.0","type":"commonjs","sideEffects":["*.css","*.scss"]}
|
|
@@ -16,6 +16,9 @@ function normalizeContent(content) {
|
|
|
16
16
|
return [];
|
|
17
17
|
}
|
|
18
18
|
if (typeof content === 'string') {
|
|
19
|
+
if (!content.trim()) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
19
22
|
return [
|
|
20
23
|
{
|
|
21
24
|
type: 'text',
|
|
@@ -25,10 +28,18 @@ function normalizeContent(content) {
|
|
|
25
28
|
},
|
|
26
29
|
];
|
|
27
30
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const parts = Array.isArray(content) ? content : [content];
|
|
32
|
+
return parts.filter((part) => {
|
|
33
|
+
const data = part.data;
|
|
34
|
+
if (part.type !== 'text' ||
|
|
35
|
+
typeof data !== 'object' ||
|
|
36
|
+
data === null ||
|
|
37
|
+
!('text' in data) ||
|
|
38
|
+
typeof data.text !== 'string') {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return data.text.trim().length > 0;
|
|
42
|
+
});
|
|
32
43
|
}
|
|
33
44
|
/**
|
|
34
45
|
* Check if message content contains ONLY thinking content (no other content types).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageUtils.js","sourceRoot":"../../../src","sources":["utils/messageUtils.ts"],"names":[],"mappings":";;AAaA,sCAKC;AAED,gDAOC;AAED,
|
|
1
|
+
{"version":3,"file":"messageUtils.js","sourceRoot":"../../../src","sources":["utils/messageUtils.ts"],"names":[],"mappings":";;AAaA,sCAKC;AAED,gDAOC;AAED,4CAsCC;AAOD,wDAQC;AAKD,sDA4BC;AAtGD,SAAgB,aAAa,CAG3B,OAAsD;IACpD,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;AACnC,CAAC;AAED,SAAgB,kBAAkB,CAI9B,OAAsD;IAEtD,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AACxC,CAAC;AAED,SAAgB,gBAAgB,CAC5B,OAA8E;IAE9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO;YACH;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACF,IAAI,EAAE,OAAO;iBAChB;aACJ;SACJ,CAAC;IACN,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,IACI,IAAI,CAAC,IAAI,KAAK,MAAM;YACpB,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,KAAK,IAAI;YACb,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC/B,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAClC,OAA8E;IAE9E,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAC3D,CAAC;AAKD,SAAgB,qBAAqB,CAGjC,OAAiB,EACjB,cAAiD;IAEjD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,GAAG,CACrB,CAAC,MAAM,EAA2B,EAAE,CAAC,CAAC;YAClC,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EACJ,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU;gBACjC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,KAAK,EAAE,MAAM,CAAC,KAAmC;SACpD,CAAC,CACL,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC","sourcesContent":["import type {\n ActionPopupConfig,\n BaseMessageAction,\n BaseMessageActionConfig,\n DefaultMessageAction,\n TAssistantMessage,\n TChatMessage,\n TMessageContent,\n TMessageContentUnion,\n TMessageMetadata,\n TUserMessage,\n} from '../types';\n\nexport function isUserMessage<\n Metadata = TMessageMetadata,\n TCustomMessageContent extends TMessageContent = never,\n>(message: TChatMessage<TCustomMessageContent, Metadata>): message is TUserMessage<Metadata> {\n return message.role === 'user';\n}\n\nexport function isAssistantMessage<\n Metadata = TMessageMetadata,\n TCustomMessageContent extends TMessageContent = never,\n>(\n message: TChatMessage<TCustomMessageContent, Metadata>,\n): message is TAssistantMessage<TCustomMessageContent, Metadata> {\n return message.role === 'assistant';\n}\n\nexport function normalizeContent<TCustomMessageContent extends TMessageContent = never>(\n content: TAssistantMessage<TCustomMessageContent, TMessageMetadata>['content'],\n): TMessageContentUnion<TCustomMessageContent>[] {\n if (!content) {\n return [];\n }\n\n if (typeof content === 'string') {\n if (!content.trim()) {\n return [];\n }\n\n return [\n {\n type: 'text',\n data: {\n text: content,\n },\n },\n ];\n }\n\n const parts = Array.isArray(content) ? content : [content];\n return parts.filter((part) => {\n const data = part.data;\n\n if (\n part.type !== 'text' ||\n typeof data !== 'object' ||\n data === null ||\n !('text' in data) ||\n typeof data.text !== 'string'\n ) {\n return true;\n }\n\n return data.text.trim().length > 0;\n });\n}\n\n/**\n * Check if message content contains ONLY thinking content (no other content types).\n * @param content - Message content to check\n * @returns true if content contains only thinking parts and nothing else\n */\nexport function hasOnlyThinkingContent<TCustomMessageContent extends TMessageContent = never>(\n content: TAssistantMessage<TCustomMessageContent, TMessageMetadata>['content'],\n): boolean {\n const parts = normalizeContent(content);\n if (parts.length === 0) {\n return false;\n }\n return parts.every((part) => part.type === 'thinking');\n}\n\n// Re-export ActionPopup types for convenience\nexport type {ActionPopupContext, ActionPopupConfig} from '../types';\n\nexport function resolveMessageActions<\n TMessage extends TChatMessage<TMessageContent, TMessageMetadata>,\n>(\n message: TMessage,\n defaultActions?: DefaultMessageAction<TMessage>[],\n): BaseMessageAction[] | undefined {\n if (message.actions) {\n return message.actions;\n }\n\n if (defaultActions) {\n return defaultActions.map(\n (action): BaseMessageActionConfig => ({\n actionType: action.type,\n icon: action.icon,\n children:\n typeof action.children === 'function'\n ? action.children(message)\n : action.children,\n label: action.label,\n view: action.view,\n onClick: () => action.onClick(message),\n popup: action.popup as ActionPopupConfig<unknown>,\n }),\n );\n }\n\n return undefined;\n}\n"]}
|
package/build/esm/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"2.25.0","type":"module","sideEffects":["*.css","*.scss"]}
|
|
1
|
+
{"version":"2.25.1-beta.878aea7e24fa31cfa067fc42048ca0be5fcbaca9.0","type":"module","sideEffects":["*.css","*.scss"]}
|
|
@@ -9,6 +9,9 @@ export function normalizeContent(content) {
|
|
|
9
9
|
return [];
|
|
10
10
|
}
|
|
11
11
|
if (typeof content === 'string') {
|
|
12
|
+
if (!content.trim()) {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
12
15
|
return [
|
|
13
16
|
{
|
|
14
17
|
type: 'text',
|
|
@@ -18,10 +21,18 @@ export function normalizeContent(content) {
|
|
|
18
21
|
},
|
|
19
22
|
];
|
|
20
23
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
const parts = Array.isArray(content) ? content : [content];
|
|
25
|
+
return parts.filter((part) => {
|
|
26
|
+
const data = part.data;
|
|
27
|
+
if (part.type !== 'text' ||
|
|
28
|
+
typeof data !== 'object' ||
|
|
29
|
+
data === null ||
|
|
30
|
+
!('text' in data) ||
|
|
31
|
+
typeof data.text !== 'string') {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return data.text.trim().length > 0;
|
|
35
|
+
});
|
|
25
36
|
}
|
|
26
37
|
/**
|
|
27
38
|
* Check if message content contains ONLY thinking content (no other content types).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageUtils.js","sourceRoot":"../../../src","sources":["utils/messageUtils.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,aAAa,CAG3B,OAAsD;IACpD,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAI9B,OAAsD;IAEtD,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,OAA8E;IAE9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACH;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACF,IAAI,EAAE,OAAO;iBAChB;aACJ;SACJ,CAAC;IACN,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"messageUtils.js","sourceRoot":"../../../src","sources":["utils/messageUtils.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,aAAa,CAG3B,OAAsD;IACpD,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAI9B,OAAsD;IAEtD,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC5B,OAA8E;IAE9E,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO;YACH;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACF,IAAI,EAAE,OAAO;iBAChB;aACJ;SACJ,CAAC;IACN,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvB,IACI,IAAI,CAAC,IAAI,KAAK,MAAM;YACpB,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,KAAK,IAAI;YACb,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YACjB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC/B,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAClC,OAA8E;IAE9E,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AAC3D,CAAC;AAKD,MAAM,UAAU,qBAAqB,CAGjC,OAAiB,EACjB,cAAiD;IAEjD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACjB,OAAO,cAAc,CAAC,GAAG,CACrB,CAAC,MAAM,EAA2B,EAAE,CAAC,CAAC;YAClC,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EACJ,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU;gBACjC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACtC,KAAK,EAAE,MAAM,CAAC,KAAmC;SACpD,CAAC,CACL,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC","sourcesContent":["import type {\n ActionPopupConfig,\n BaseMessageAction,\n BaseMessageActionConfig,\n DefaultMessageAction,\n TAssistantMessage,\n TChatMessage,\n TMessageContent,\n TMessageContentUnion,\n TMessageMetadata,\n TUserMessage,\n} from '../types';\n\nexport function isUserMessage<\n Metadata = TMessageMetadata,\n TCustomMessageContent extends TMessageContent = never,\n>(message: TChatMessage<TCustomMessageContent, Metadata>): message is TUserMessage<Metadata> {\n return message.role === 'user';\n}\n\nexport function isAssistantMessage<\n Metadata = TMessageMetadata,\n TCustomMessageContent extends TMessageContent = never,\n>(\n message: TChatMessage<TCustomMessageContent, Metadata>,\n): message is TAssistantMessage<TCustomMessageContent, Metadata> {\n return message.role === 'assistant';\n}\n\nexport function normalizeContent<TCustomMessageContent extends TMessageContent = never>(\n content: TAssistantMessage<TCustomMessageContent, TMessageMetadata>['content'],\n): TMessageContentUnion<TCustomMessageContent>[] {\n if (!content) {\n return [];\n }\n\n if (typeof content === 'string') {\n if (!content.trim()) {\n return [];\n }\n\n return [\n {\n type: 'text',\n data: {\n text: content,\n },\n },\n ];\n }\n\n const parts = Array.isArray(content) ? content : [content];\n return parts.filter((part) => {\n const data = part.data;\n\n if (\n part.type !== 'text' ||\n typeof data !== 'object' ||\n data === null ||\n !('text' in data) ||\n typeof data.text !== 'string'\n ) {\n return true;\n }\n\n return data.text.trim().length > 0;\n });\n}\n\n/**\n * Check if message content contains ONLY thinking content (no other content types).\n * @param content - Message content to check\n * @returns true if content contains only thinking parts and nothing else\n */\nexport function hasOnlyThinkingContent<TCustomMessageContent extends TMessageContent = never>(\n content: TAssistantMessage<TCustomMessageContent, TMessageMetadata>['content'],\n): boolean {\n const parts = normalizeContent(content);\n if (parts.length === 0) {\n return false;\n }\n return parts.every((part) => part.type === 'thinking');\n}\n\n// Re-export ActionPopup types for convenience\nexport type {ActionPopupContext, ActionPopupConfig} from '../types';\n\nexport function resolveMessageActions<\n TMessage extends TChatMessage<TMessageContent, TMessageMetadata>,\n>(\n message: TMessage,\n defaultActions?: DefaultMessageAction<TMessage>[],\n): BaseMessageAction[] | undefined {\n if (message.actions) {\n return message.actions;\n }\n\n if (defaultActions) {\n return defaultActions.map(\n (action): BaseMessageActionConfig => ({\n actionType: action.type,\n icon: action.icon,\n children:\n typeof action.children === 'function'\n ? action.children(message)\n : action.children,\n label: action.label,\n view: action.view,\n onClick: () => action.onClick(message),\n popup: action.popup as ActionPopupConfig<unknown>,\n }),\n );\n }\n\n return undefined;\n}\n"]}
|
package/package.json
CHANGED