@ant-design/agentic-ui 2.30.20 → 2.30.22

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 (66) hide show
  1. package/dist/Bubble/MessagesContent/MarkdownPreview.js +6 -5
  2. package/dist/Bubble/OpenAIMessageBubble/index.d.ts +11 -0
  3. package/dist/Bubble/OpenAIMessageBubble/index.js +8 -0
  4. package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.d.ts +7 -0
  5. package/dist/Bubble/OpenAIMessageBubble/mapOllamaMessages.js +136 -0
  6. package/dist/Bubble/OpenAIMessageBubble/mapOpenAIMessages.d.ts +8 -0
  7. package/dist/Bubble/OpenAIMessageBubble/mapOpenAIMessages.js +156 -0
  8. package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.d.ts +8 -0
  9. package/dist/Bubble/OpenAIMessageBubble/mapOpenClawMessages.js +127 -0
  10. package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.d.ts +16 -0
  11. package/dist/Bubble/OpenAIMessageBubble/normalizeOllamaMessages.js +110 -0
  12. package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.d.ts +10 -0
  13. package/dist/Bubble/OpenAIMessageBubble/normalizeOpenClawMessages.js +61 -0
  14. package/dist/Bubble/OpenAIMessageBubble/ollamaTypes.d.ts +48 -0
  15. package/dist/Bubble/OpenAIMessageBubble/ollamaTypes.js +1 -0
  16. package/dist/Bubble/OpenAIMessageBubble/openClawTypes.d.ts +27 -0
  17. package/dist/Bubble/OpenAIMessageBubble/openClawTypes.js +1 -0
  18. package/dist/Bubble/OpenAIMessageBubble/types.d.ts +71 -0
  19. package/dist/Bubble/OpenAIMessageBubble/types.js +1 -0
  20. package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.d.ts +7 -0
  21. package/dist/Bubble/OpenAIMessageBubble/useOllamaMessageBubbleData.js +23 -0
  22. package/dist/Bubble/OpenAIMessageBubble/useOpenAIMessageBubbleData.d.ts +6 -0
  23. package/dist/Bubble/OpenAIMessageBubble/useOpenAIMessageBubbleData.js +20 -0
  24. package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.d.ts +7 -0
  25. package/dist/Bubble/OpenAIMessageBubble/useOpenClawMessageBubbleData.js +22 -0
  26. package/dist/Bubble/index.d.ts +2 -0
  27. package/dist/Bubble/index.js +1 -0
  28. package/dist/MarkdownEditor/editor/Editor.js +24 -12
  29. package/dist/MarkdownEditor/editor/elements/Table/SimpleTable.js +5 -1
  30. package/dist/MarkdownEditor/editor/elements/Table/commands/tableCommands.js +24 -8
  31. package/dist/MarkdownEditor/editor/elements/index.js +18 -14
  32. package/dist/MarkdownEditor/editor/plugins/useKeyboard.js +17 -5
  33. package/dist/MarkdownEditor/editor/store.d.ts +12 -0
  34. package/dist/MarkdownEditor/editor/store.js +30 -5
  35. package/dist/MarkdownEditor/editor/tools/InsertAutocomplete.js +15 -11
  36. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.d.ts +1 -1
  37. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/AttachmentFileListItem.js +4 -5
  38. package/dist/MarkdownInputField/AttachmentButton/AttachmentFileList/index.d.ts +1 -1
  39. package/dist/MarkdownInputField/AttachmentButton/index.d.ts +1 -1
  40. package/dist/MarkdownInputField/MarkdownInputField.js +6 -1
  41. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldHandlers.js +6 -2
  42. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.d.ts +1 -0
  43. package/dist/MarkdownInputField/hooks/useMarkdownInputFieldRefs.js +36 -5
  44. package/dist/MarkdownInputField/utils/renderHelpers.js +5 -0
  45. package/dist/MarkdownRenderer/FncRefForMarkdown.d.ts +24 -0
  46. package/dist/MarkdownRenderer/FncRefForMarkdown.js +65 -0
  47. package/dist/MarkdownRenderer/MarkdownRenderer.js +24 -9
  48. package/dist/MarkdownRenderer/extractFootnoteDefinitions.d.ts +13 -0
  49. package/dist/MarkdownRenderer/extractFootnoteDefinitions.js +40 -0
  50. package/dist/MarkdownRenderer/markdownReactShared.d.ts +4 -1
  51. package/dist/MarkdownRenderer/markdownReactShared.js +20 -10
  52. package/dist/MarkdownRenderer/renderers/CodeRenderer.d.ts +4 -1
  53. package/dist/MarkdownRenderer/renderers/CodeRenderer.js +27 -3
  54. package/dist/MarkdownRenderer/renderers/SchemaRenderer.d.ts +2 -0
  55. package/dist/MarkdownRenderer/renderers/SchemaRenderer.js +33 -5
  56. package/dist/MarkdownRenderer/streaming/useStreamingMarkdownReact.js +2 -1
  57. package/dist/MarkdownRenderer/types.d.ts +5 -9
  58. package/dist/MarkdownRenderer/useMarkdownToReact.js +1 -1
  59. package/dist/Plugins/mermaid/MermaidRendererImpl.js +481 -7
  60. package/dist/Plugins/mermaid/style.js +71 -22
  61. package/dist/Plugins/mermaid/useMermaidRender.d.ts +2 -1
  62. package/dist/Plugins/mermaid/useMermaidRender.js +41 -13
  63. package/dist/Plugins/mermaid/utils.d.ts +16 -0
  64. package/dist/Plugins/mermaid/utils.js +197 -5
  65. package/dist/Workspace/Browser/index.js +19 -1
  66. package/package.json +8 -7
@@ -126,7 +126,7 @@ import { MessagesContext } from "./BubbleContext";
126
126
  var _content_includes, _htmlRef_current, _htmlRef_current1, _props_markdownRenderConfig, _props_originData, _props_originData1, _props_originData2, _props_markdownRenderConfig1, _props_markdownRenderConfig2, _props_originData3, _props_markdownRenderConfig3;
127
127
  // MarkdownRenderer 渲染路径——轻量,不创建 Slate 实例
128
128
  if (renderMode === 'markdown') {
129
- var _props_originData4, _props_markdownRenderConfig4, _props_markdownRenderConfig5, _props_markdownRenderConfig6, _props_markdownRenderConfig7, _props_markdownRenderConfig8, _props_markdownRenderConfig9, _props_markdownRenderConfig10;
129
+ var _props_originData4, _props_markdownRenderConfig4, _props_markdownRenderConfig5, _props_markdownRenderConfig6, _props_markdownRenderConfig7, _props_markdownRenderConfig8, _props_markdownRenderConfig9, _props_markdownRenderConfig10, _props_markdownRenderConfig11;
130
130
  return /*#__PURE__*/ React.createElement(MarkdownRenderer, {
131
131
  content: content,
132
132
  streaming: shouldAnimateMarkdown,
@@ -135,14 +135,15 @@ import { MessagesContext } from "./BubbleContext";
135
135
  queueOptions: (_props_markdownRenderConfig5 = props.markdownRenderConfig) === null || _props_markdownRenderConfig5 === void 0 ? void 0 : _props_markdownRenderConfig5.queueOptions,
136
136
  streamingParagraphAnimation: (_props_markdownRenderConfig6 = props.markdownRenderConfig) === null || _props_markdownRenderConfig6 === void 0 ? void 0 : _props_markdownRenderConfig6.streamingParagraphAnimation,
137
137
  fncProps: fncProps,
138
+ linkConfig: (_props_markdownRenderConfig7 = props.markdownRenderConfig) === null || _props_markdownRenderConfig7 === void 0 ? void 0 : _props_markdownRenderConfig7.linkConfig,
138
139
  style: _object_spread({
139
140
  maxWidth: standalone ? '100%' : undefined,
140
141
  padding: isPaddingHidden ? 0 : undefined,
141
142
  margin: isPaddingHidden ? 0 : undefined
142
- }, ((_props_markdownRenderConfig7 = props.markdownRenderConfig) === null || _props_markdownRenderConfig7 === void 0 ? void 0 : _props_markdownRenderConfig7.style) || {}),
143
- codeProps: (_props_markdownRenderConfig8 = props.markdownRenderConfig) === null || _props_markdownRenderConfig8 === void 0 ? void 0 : _props_markdownRenderConfig8.codeProps,
144
- apaasify: (_props_markdownRenderConfig9 = props.markdownRenderConfig) === null || _props_markdownRenderConfig9 === void 0 ? void 0 : _props_markdownRenderConfig9.apaasify,
145
- fileMapConfig: (_props_markdownRenderConfig10 = props.markdownRenderConfig) === null || _props_markdownRenderConfig10 === void 0 ? void 0 : _props_markdownRenderConfig10.fileMapConfig
143
+ }, ((_props_markdownRenderConfig8 = props.markdownRenderConfig) === null || _props_markdownRenderConfig8 === void 0 ? void 0 : _props_markdownRenderConfig8.style) || {}),
144
+ codeProps: (_props_markdownRenderConfig9 = props.markdownRenderConfig) === null || _props_markdownRenderConfig9 === void 0 ? void 0 : _props_markdownRenderConfig9.codeProps,
145
+ apaasify: (_props_markdownRenderConfig10 = props.markdownRenderConfig) === null || _props_markdownRenderConfig10 === void 0 ? void 0 : _props_markdownRenderConfig10.apaasify,
146
+ fileMapConfig: (_props_markdownRenderConfig11 = props.markdownRenderConfig) === null || _props_markdownRenderConfig11 === void 0 ? void 0 : _props_markdownRenderConfig11.fileMapConfig
146
147
  });
147
148
  }
148
149
  // Slate 渲染路径——保持向后兼容
@@ -0,0 +1,11 @@
1
+ export { mapOpenAIMessagesToMessageBubbleData } from './mapOpenAIMessages';
2
+ export { mapOpenClawMessagesToMessageBubbleData } from './mapOpenClawMessages';
3
+ export { mapOllamaMessagesToMessageBubbleData } from './mapOllamaMessages';
4
+ export { normalizeOpenClawMessageToOpenAI, normalizeOpenClawMessagesToOpenAI, } from './normalizeOpenClawMessages';
5
+ export { normalizeOllamaMessageToOpenAI, normalizeOllamaMessagesToOpenAI, } from './normalizeOllamaMessages';
6
+ export { useOpenAIMessageBubbleData } from './useOpenAIMessageBubbleData';
7
+ export { useOpenClawMessageBubbleData } from './useOpenClawMessageBubbleData';
8
+ export { useOllamaMessageBubbleData } from './useOllamaMessageBubbleData';
9
+ export type { OpenAIChatContentPart, OpenAIChatContentPartFallback, OpenAIChatMessage, OpenAIChatMessageAssistant, OpenAIChatMessageFunction, OpenAIChatMessageSystem, OpenAIChatMessageTool, OpenAIChatMessageUser, OpenAIChatRefusalPart, OpenAIChatTextPart, OpenAIMessagesMapMessage, OpenAIMessagesMapOptions, } from './types';
10
+ export type { OpenClawChatMessage, OpenClawChatMessageToolResult, OpenClawChatMeta, OpenClawMessagesMapOptions, } from './openClawTypes';
11
+ export type { OllamaChatMessage, OllamaMessagesMapOptions, OllamaToolCall, } from './ollamaTypes';
@@ -0,0 +1,8 @@
1
+ export { mapOpenAIMessagesToMessageBubbleData } from "./mapOpenAIMessages";
2
+ export { mapOpenClawMessagesToMessageBubbleData } from "./mapOpenClawMessages";
3
+ export { mapOllamaMessagesToMessageBubbleData } from "./mapOllamaMessages";
4
+ export { normalizeOpenClawMessageToOpenAI, normalizeOpenClawMessagesToOpenAI } from "./normalizeOpenClawMessages";
5
+ export { normalizeOllamaMessageToOpenAI, normalizeOllamaMessagesToOpenAI } from "./normalizeOllamaMessages";
6
+ export { useOpenAIMessageBubbleData } from "./useOpenAIMessageBubbleData";
7
+ export { useOpenClawMessageBubbleData } from "./useOpenClawMessageBubbleData";
8
+ export { useOllamaMessageBubbleData } from "./useOllamaMessageBubbleData";
@@ -0,0 +1,7 @@
1
+ import type { MessageBubbleData } from '../../Types/message';
2
+ import type { OpenAIMessagesMapMessage } from './types';
3
+ import type { OllamaChatMessage, OllamaMessagesMapOptions } from './ollamaTypes';
4
+ /**
5
+ * 将 Ollama `/api/chat` 的 `messages` 转为 `MessageBubbleData[]`
6
+ */
7
+ export declare function mapOllamaMessagesToMessageBubbleData(messages: OllamaChatMessage[], options?: OllamaMessagesMapOptions, mapMessage?: OpenAIMessagesMapMessage): MessageBubbleData[];
@@ -0,0 +1,136 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ function ownKeys(object, enumerableOnly) {
30
+ var keys = Object.keys(object);
31
+ if (Object.getOwnPropertySymbols) {
32
+ var symbols = Object.getOwnPropertySymbols(object);
33
+ if (enumerableOnly) {
34
+ symbols = symbols.filter(function(sym) {
35
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
+ });
37
+ }
38
+ keys.push.apply(keys, symbols);
39
+ }
40
+ return keys;
41
+ }
42
+ function _object_spread_props(target, source) {
43
+ source = source != null ? source : {};
44
+ if (Object.getOwnPropertyDescriptors) {
45
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
+ } else {
47
+ ownKeys(Object(source)).forEach(function(key) {
48
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ function _object_without_properties(source, excluded) {
54
+ if (source == null) return {};
55
+ var target = {}, sourceKeys, key, i;
56
+ if (typeof Reflect !== "undefined" && Reflect.ownKeys) {
57
+ sourceKeys = Reflect.ownKeys(source);
58
+ for(i = 0; i < sourceKeys.length; i++){
59
+ key = sourceKeys[i];
60
+ if (excluded.indexOf(key) >= 0) continue;
61
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
62
+ target[key] = source[key];
63
+ }
64
+ return target;
65
+ }
66
+ target = _object_without_properties_loose(source, excluded);
67
+ if (Object.getOwnPropertySymbols) {
68
+ sourceKeys = Object.getOwnPropertySymbols(source);
69
+ for(i = 0; i < sourceKeys.length; i++){
70
+ key = sourceKeys[i];
71
+ if (excluded.indexOf(key) >= 0) continue;
72
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
73
+ target[key] = source[key];
74
+ }
75
+ }
76
+ return target;
77
+ }
78
+ function _object_without_properties_loose(source, excluded) {
79
+ if (source == null) return {};
80
+ var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
81
+ for(i = 0; i < sourceKeys.length; i++){
82
+ key = sourceKeys[i];
83
+ if (excluded.indexOf(key) >= 0) continue;
84
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
85
+ target[key] = source[key];
86
+ }
87
+ return target;
88
+ }
89
+ import { mapOpenAIMessagesToMessageBubbleData } from "./mapOpenAIMessages";
90
+ import { normalizeOllamaMessagesToOpenAI } from "./normalizeOllamaMessages";
91
+ function defaultOllamaGetMessageId(msg, index, originals) {
92
+ var _ref, _ref1;
93
+ var _originals_index;
94
+ return (_ref = (_ref1 = (_originals_index = originals[index]) === null || _originals_index === void 0 ? void 0 : _originals_index.id) !== null && _ref1 !== void 0 ? _ref1 : msg.id) !== null && _ref !== void 0 ? _ref : "ollama-msg-".concat(index);
95
+ }
96
+ /**
97
+ * 将 Ollama `/api/chat` 的 `messages` 转为 `MessageBubbleData[]`
98
+ */ export function mapOllamaMessagesToMessageBubbleData(messages, options, mapMessage) {
99
+ var _ref = options !== null && options !== void 0 ? options : {}, _ref_appendThinkingToContent = _ref.appendThinkingToContent, appendThinkingToContent = _ref_appendThinkingToContent === void 0 ? true : _ref_appendThinkingToContent, _ref_appendImagesPlaceholder = _ref.appendImagesPlaceholder, appendImagesPlaceholder = _ref_appendImagesPlaceholder === void 0 ? true : _ref_appendImagesPlaceholder, _ref_preserveOllamaRawInExtra = _ref.preserveOllamaRawInExtra, preserveOllamaRawInExtra = _ref_preserveOllamaRawInExtra === void 0 ? true : _ref_preserveOllamaRawInExtra, userGetMessageId = _ref.getMessageId, rest = _object_without_properties(_ref, [
100
+ "appendThinkingToContent",
101
+ "appendImagesPlaceholder",
102
+ "preserveOllamaRawInExtra",
103
+ "getMessageId"
104
+ ]);
105
+ var openai = normalizeOllamaMessagesToOpenAI(messages, {
106
+ appendThinkingToContent: appendThinkingToContent,
107
+ appendImagesPlaceholder: appendImagesPlaceholder
108
+ });
109
+ var getMessageId = userGetMessageId !== null && userGetMessageId !== void 0 ? userGetMessageId : function(msg, index) {
110
+ return defaultOllamaGetMessageId(msg, index, messages);
111
+ };
112
+ if (!preserveOllamaRawInExtra && !mapMessage) {
113
+ return mapOpenAIMessagesToMessageBubbleData(openai, _object_spread_props(_object_spread({}, rest), {
114
+ getMessageId: getMessageId
115
+ }));
116
+ }
117
+ var innerMap = function innerMap(msg, index, draft) {
118
+ var d = draft;
119
+ if (preserveOllamaRawInExtra && messages[index]) {
120
+ d = _object_spread_props(_object_spread({}, d), {
121
+ extra: _object_spread_props(_object_spread({}, d.extra), {
122
+ ollama: {
123
+ raw: messages[index]
124
+ }
125
+ })
126
+ });
127
+ }
128
+ if (mapMessage) {
129
+ d = mapMessage(msg, index, d);
130
+ }
131
+ return d;
132
+ };
133
+ return mapOpenAIMessagesToMessageBubbleData(openai, _object_spread_props(_object_spread({}, rest), {
134
+ getMessageId: getMessageId
135
+ }), innerMap);
136
+ }
@@ -0,0 +1,8 @@
1
+ import type { MessageBubbleData } from '../../Types/message';
2
+ import type { OpenAIChatContentPart, OpenAIChatMessage, OpenAIMessagesMapMessage, OpenAIMessagesMapOptions } from './types';
3
+ /** @internal exported for OpenClaw 归一化复用 */
4
+ export declare function extractTextFromContent(content: string | OpenAIChatContentPart[] | null | undefined): string;
5
+ /**
6
+ * 将 OpenAI Chat Completions 风格的 messages 转为 MessageBubbleData[]
7
+ */
8
+ export declare function mapOpenAIMessagesToMessageBubbleData(messages: OpenAIChatMessage[], options?: OpenAIMessagesMapOptions, mapMessage?: OpenAIMessagesMapMessage): MessageBubbleData[];
@@ -0,0 +1,156 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ var DEFAULT_TOOL_ROLE = 'assistant';
30
+ /** @internal exported for OpenClaw 归一化复用 */ export function extractTextFromContent(content) {
31
+ if (content === undefined || content === null) {
32
+ return '';
33
+ }
34
+ if (typeof content === 'string') {
35
+ return content;
36
+ }
37
+ var parts = [];
38
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
39
+ try {
40
+ for(var _iterator = content[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
41
+ var part = _step.value;
42
+ if (part.type === 'text' && typeof part.text === 'string') {
43
+ parts.push(part.text);
44
+ continue;
45
+ }
46
+ if ('refusal' in part && typeof part.refusal === 'string') {
47
+ parts.push(part.refusal);
48
+ continue;
49
+ }
50
+ if (part.type === 'image_url') {
51
+ parts.push('[image]');
52
+ continue;
53
+ }
54
+ parts.push("[".concat(part.type, "]"));
55
+ }
56
+ } catch (err) {
57
+ _didIteratorError = true;
58
+ _iteratorError = err;
59
+ } finally{
60
+ try {
61
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
62
+ _iterator.return();
63
+ }
64
+ } finally{
65
+ if (_didIteratorError) {
66
+ throw _iteratorError;
67
+ }
68
+ }
69
+ }
70
+ return parts.join('\n');
71
+ }
72
+ function mapOpenAIRoleToRoleType(msg, toolRoleAs) {
73
+ switch(msg.role){
74
+ case 'user':
75
+ return 'user';
76
+ case 'system':
77
+ return 'system';
78
+ case 'assistant':
79
+ return 'assistant';
80
+ case 'tool':
81
+ case 'function':
82
+ return toolRoleAs;
83
+ default:
84
+ return 'assistant';
85
+ }
86
+ }
87
+ function appendAssistantExtras(msg, base, appendToolCalls) {
88
+ var _msg_tool_calls;
89
+ if (!appendToolCalls) {
90
+ return base;
91
+ }
92
+ var out = base;
93
+ if ((_msg_tool_calls = msg.tool_calls) === null || _msg_tool_calls === void 0 ? void 0 : _msg_tool_calls.length) {
94
+ out += "\n\n[tool_calls]\n".concat(JSON.stringify(msg.tool_calls, null, 2));
95
+ }
96
+ if (msg.function_call) {
97
+ out += "\n\n[function_call]\n".concat(JSON.stringify(msg.function_call, null, 2));
98
+ }
99
+ return out;
100
+ }
101
+ function defaultGetMessageId(msg, index) {
102
+ var _msg_id;
103
+ return (_msg_id = msg.id) !== null && _msg_id !== void 0 ? _msg_id : "openai-msg-".concat(index);
104
+ }
105
+ /**
106
+ * 将 OpenAI Chat Completions 风格的 messages 转为 MessageBubbleData[]
107
+ */ export function mapOpenAIMessagesToMessageBubbleData(messages, options, mapMessage) {
108
+ var _ref = options !== null && options !== void 0 ? options : {}, _ref_baseTime = _ref.baseTime, baseTime = _ref_baseTime === void 0 ? Date.now() : _ref_baseTime, _ref_timeStepMs = _ref.timeStepMs, timeStepMs = _ref_timeStepMs === void 0 ? 1 : _ref_timeStepMs, _ref_bumpUpdateAtOnLastMessage = _ref.bumpUpdateAtOnLastMessage, bumpUpdateAtOnLastMessage = _ref_bumpUpdateAtOnLastMessage === void 0 ? false : _ref_bumpUpdateAtOnLastMessage, _ref_getMessageId = _ref.getMessageId, getMessageId = _ref_getMessageId === void 0 ? defaultGetMessageId : _ref_getMessageId, _ref_toolRoleAs = _ref.toolRoleAs, toolRoleAs = _ref_toolRoleAs === void 0 ? DEFAULT_TOOL_ROLE : _ref_toolRoleAs, _ref_appendToolCallsToContent = _ref.appendToolCallsToContent, appendToolCallsToContent = _ref_appendToolCallsToContent === void 0 ? true : _ref_appendToolCallsToContent, _ref_preserveRawInExtra = _ref.preserveRawInExtra, preserveRawInExtra = _ref_preserveRawInExtra === void 0 ? true : _ref_preserveRawInExtra;
109
+ var lastIndex = messages.length - 1;
110
+ return messages.map(function(msg, index) {
111
+ var id = getMessageId(msg, index);
112
+ var role = mapOpenAIRoleToRoleType(msg, toolRoleAs);
113
+ var createAt = baseTime + index * timeStepMs;
114
+ var updateAt = createAt;
115
+ if (bumpUpdateAtOnLastMessage && index === lastIndex) {
116
+ updateAt = Date.now();
117
+ }
118
+ var text = '';
119
+ if (msg.role === 'assistant') {
120
+ var a = msg;
121
+ text = extractTextFromContent(a.content);
122
+ text = appendAssistantExtras(a, text, appendToolCallsToContent);
123
+ } else if (msg.role === 'user' || msg.role === 'system') {
124
+ text = extractTextFromContent(msg.content);
125
+ } else if (msg.role === 'tool') {
126
+ var _msg_content;
127
+ var prefix = msg.tool_call_id ? "[tool_call_id: ".concat(msg.tool_call_id, "]\n") : '';
128
+ text = prefix + ((_msg_content = msg.content) !== null && _msg_content !== void 0 ? _msg_content : '');
129
+ } else if (msg.role === 'function') {
130
+ var _msg_content1;
131
+ var prefix1 = msg.name ? "[function: ".concat(msg.name, "]\n") : '';
132
+ text = prefix1 + ((_msg_content1 = msg.content) !== null && _msg_content1 !== void 0 ? _msg_content1 : '');
133
+ }
134
+ var originContent = text;
135
+ var extra = preserveRawInExtra ? {
136
+ openai: {
137
+ role: msg.role,
138
+ raw: msg
139
+ }
140
+ } : {};
141
+ var draft = _object_spread({
142
+ id: id,
143
+ role: role,
144
+ content: text,
145
+ originContent: originContent,
146
+ createAt: createAt,
147
+ updateAt: updateAt
148
+ }, Object.keys(extra).length ? {
149
+ extra: extra
150
+ } : {});
151
+ if (mapMessage) {
152
+ draft = mapMessage(msg, index, draft);
153
+ }
154
+ return draft;
155
+ });
156
+ }
@@ -0,0 +1,8 @@
1
+ import type { MessageBubbleData } from '../../Types/message';
2
+ import type { OpenAIMessagesMapMessage } from './types';
3
+ import type { OpenClawChatMessage, OpenClawMessagesMapOptions } from './openClawTypes';
4
+ /**
5
+ * 将 OpenClaw 会话 / transcript 风格的 `messages` 转为 `MessageBubbleData[]`
6
+ *(内部先归一化为 OpenAI 形状再复用 {@link mapOpenAIMessagesToMessageBubbleData})。
7
+ */
8
+ export declare function mapOpenClawMessagesToMessageBubbleData(messages: OpenClawChatMessage[], options?: OpenClawMessagesMapOptions, mapMessage?: OpenAIMessagesMapMessage): MessageBubbleData[];
@@ -0,0 +1,127 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ function ownKeys(object, enumerableOnly) {
30
+ var keys = Object.keys(object);
31
+ if (Object.getOwnPropertySymbols) {
32
+ var symbols = Object.getOwnPropertySymbols(object);
33
+ if (enumerableOnly) {
34
+ symbols = symbols.filter(function(sym) {
35
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
+ });
37
+ }
38
+ keys.push.apply(keys, symbols);
39
+ }
40
+ return keys;
41
+ }
42
+ function _object_spread_props(target, source) {
43
+ source = source != null ? source : {};
44
+ if (Object.getOwnPropertyDescriptors) {
45
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
+ } else {
47
+ ownKeys(Object(source)).forEach(function(key) {
48
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ function _object_without_properties(source, excluded) {
54
+ if (source == null) return {};
55
+ var target = {}, sourceKeys, key, i;
56
+ if (typeof Reflect !== "undefined" && Reflect.ownKeys) {
57
+ sourceKeys = Reflect.ownKeys(source);
58
+ for(i = 0; i < sourceKeys.length; i++){
59
+ key = sourceKeys[i];
60
+ if (excluded.indexOf(key) >= 0) continue;
61
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
62
+ target[key] = source[key];
63
+ }
64
+ return target;
65
+ }
66
+ target = _object_without_properties_loose(source, excluded);
67
+ if (Object.getOwnPropertySymbols) {
68
+ sourceKeys = Object.getOwnPropertySymbols(source);
69
+ for(i = 0; i < sourceKeys.length; i++){
70
+ key = sourceKeys[i];
71
+ if (excluded.indexOf(key) >= 0) continue;
72
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
73
+ target[key] = source[key];
74
+ }
75
+ }
76
+ return target;
77
+ }
78
+ function _object_without_properties_loose(source, excluded) {
79
+ if (source == null) return {};
80
+ var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;
81
+ for(i = 0; i < sourceKeys.length; i++){
82
+ key = sourceKeys[i];
83
+ if (excluded.indexOf(key) >= 0) continue;
84
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
85
+ target[key] = source[key];
86
+ }
87
+ return target;
88
+ }
89
+ import { mapOpenAIMessagesToMessageBubbleData } from "./mapOpenAIMessages";
90
+ import { normalizeOpenClawMessagesToOpenAI } from "./normalizeOpenClawMessages";
91
+ /**
92
+ * 将 OpenClaw 会话 / transcript 风格的 `messages` 转为 `MessageBubbleData[]`
93
+ *(内部先归一化为 OpenAI 形状再复用 {@link mapOpenAIMessagesToMessageBubbleData})。
94
+ */ export function mapOpenClawMessagesToMessageBubbleData(messages, options, mapMessage) {
95
+ var openai = normalizeOpenClawMessagesToOpenAI(messages);
96
+ var _ref = options !== null && options !== void 0 ? options : {}, _ref_useOpenClawTimestamps = _ref.useOpenClawTimestamps, useOpenClawTimestamps = _ref_useOpenClawTimestamps === void 0 ? true : _ref_useOpenClawTimestamps, _ref_preserveOpenClawRawInExtra = _ref.preserveOpenClawRawInExtra, preserveOpenClawRawInExtra = _ref_preserveOpenClawRawInExtra === void 0 ? true : _ref_preserveOpenClawRawInExtra, rest = _object_without_properties(_ref, [
97
+ "useOpenClawTimestamps",
98
+ "preserveOpenClawRawInExtra"
99
+ ]);
100
+ if (!useOpenClawTimestamps && !preserveOpenClawRawInExtra && !mapMessage) {
101
+ return mapOpenAIMessagesToMessageBubbleData(openai, rest);
102
+ }
103
+ var innerMap = function innerMap(msg, index, draft) {
104
+ var d = draft;
105
+ var rawClaw = messages[index];
106
+ if (useOpenClawTimestamps && rawClaw && typeof rawClaw.timestamp === 'number' && Number.isFinite(rawClaw.timestamp)) {
107
+ d = _object_spread_props(_object_spread({}, d), {
108
+ createAt: rawClaw.timestamp,
109
+ updateAt: rawClaw.timestamp
110
+ });
111
+ }
112
+ if (preserveOpenClawRawInExtra && rawClaw) {
113
+ d = _object_spread_props(_object_spread({}, d), {
114
+ extra: _object_spread_props(_object_spread({}, d.extra), {
115
+ openclaw: {
116
+ raw: rawClaw
117
+ }
118
+ })
119
+ });
120
+ }
121
+ if (mapMessage) {
122
+ d = mapMessage(msg, index, d);
123
+ }
124
+ return d;
125
+ };
126
+ return mapOpenAIMessagesToMessageBubbleData(openai, rest, innerMap);
127
+ }
@@ -0,0 +1,16 @@
1
+ import type { OpenAIChatMessage } from './types';
2
+ import type { OllamaChatMessage } from './ollamaTypes';
3
+ /**
4
+ * 将单条 Ollama `ChatMessage` 转为 {@link OpenAIChatMessage},供统一映射层使用。
5
+ */
6
+ export declare function normalizeOllamaMessageToOpenAI(msg: OllamaChatMessage, options?: {
7
+ appendThinkingToContent?: boolean;
8
+ appendImagesPlaceholder?: boolean;
9
+ }): OpenAIChatMessage;
10
+ /**
11
+ * 批量将 Ollama `messages` 转为 OpenAI 形状
12
+ */
13
+ export declare function normalizeOllamaMessagesToOpenAI(messages: OllamaChatMessage[], options?: {
14
+ appendThinkingToContent?: boolean;
15
+ appendImagesPlaceholder?: boolean;
16
+ }): OpenAIChatMessage[];
@@ -0,0 +1,110 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _object_spread(target) {
15
+ for(var i = 1; i < arguments.length; i++){
16
+ var source = arguments[i] != null ? arguments[i] : {};
17
+ var ownKeys = Object.keys(source);
18
+ if (typeof Object.getOwnPropertySymbols === "function") {
19
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
20
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
21
+ }));
22
+ }
23
+ ownKeys.forEach(function(key) {
24
+ _define_property(target, key, source[key]);
25
+ });
26
+ }
27
+ return target;
28
+ }
29
+ function ownKeys(object, enumerableOnly) {
30
+ var keys = Object.keys(object);
31
+ if (Object.getOwnPropertySymbols) {
32
+ var symbols = Object.getOwnPropertySymbols(object);
33
+ if (enumerableOnly) {
34
+ symbols = symbols.filter(function(sym) {
35
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
36
+ });
37
+ }
38
+ keys.push.apply(keys, symbols);
39
+ }
40
+ return keys;
41
+ }
42
+ function _object_spread_props(target, source) {
43
+ source = source != null ? source : {};
44
+ if (Object.getOwnPropertyDescriptors) {
45
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
46
+ } else {
47
+ ownKeys(Object(source)).forEach(function(key) {
48
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
49
+ });
50
+ }
51
+ return target;
52
+ }
53
+ function buildDisplayContent(msg, appendThinking, appendImagesPlaceholder) {
54
+ var _msg_content;
55
+ var text = (_msg_content = msg.content) !== null && _msg_content !== void 0 ? _msg_content : '';
56
+ if (appendThinking && msg.thinking) {
57
+ text += "".concat(text ? '\n\n' : '', "[thinking]\n").concat(msg.thinking);
58
+ }
59
+ if (appendImagesPlaceholder && msg.images && msg.images.length > 0) {
60
+ text += "".concat(text ? '\n\n' : '', "[images: ").concat(msg.images.length, " attached]");
61
+ }
62
+ return text;
63
+ }
64
+ /**
65
+ * 将单条 Ollama `ChatMessage` 转为 {@link OpenAIChatMessage},供统一映射层使用。
66
+ */ export function normalizeOllamaMessageToOpenAI(msg, options) {
67
+ var appendThinking = (options === null || options === void 0 ? void 0 : options.appendThinkingToContent) !== false;
68
+ var appendImages = (options === null || options === void 0 ? void 0 : options.appendImagesPlaceholder) !== false;
69
+ var content = buildDisplayContent(msg, appendThinking, appendImages);
70
+ var base = {
71
+ id: msg.id
72
+ };
73
+ if (msg.role === 'assistant') {
74
+ var _msg_tool_calls;
75
+ return _object_spread(_object_spread_props(_object_spread({}, base), {
76
+ role: 'assistant',
77
+ content: content
78
+ }), ((_msg_tool_calls = msg.tool_calls) === null || _msg_tool_calls === void 0 ? void 0 : _msg_tool_calls.length) ? {
79
+ tool_calls: msg.tool_calls
80
+ } : {});
81
+ }
82
+ if (msg.role === 'tool') {
83
+ var prefix = msg.tool_name ? "[tool_name: ".concat(msg.tool_name, "]\n") : '';
84
+ return _object_spread(_object_spread_props(_object_spread({}, base), {
85
+ role: 'tool',
86
+ content: prefix + content
87
+ }), msg.tool_call_id ? {
88
+ tool_call_id: msg.tool_call_id
89
+ } : {}, msg.tool_name ? {
90
+ name: msg.tool_name
91
+ } : {});
92
+ }
93
+ if (msg.role === 'system') {
94
+ return _object_spread_props(_object_spread({}, base), {
95
+ role: 'system',
96
+ content: content
97
+ });
98
+ }
99
+ return _object_spread_props(_object_spread({}, base), {
100
+ role: 'user',
101
+ content: content
102
+ });
103
+ }
104
+ /**
105
+ * 批量将 Ollama `messages` 转为 OpenAI 形状
106
+ */ export function normalizeOllamaMessagesToOpenAI(messages, options) {
107
+ return messages.map(function(m) {
108
+ return normalizeOllamaMessageToOpenAI(m, options);
109
+ });
110
+ }
@@ -0,0 +1,10 @@
1
+ import type { OpenAIChatMessage } from './types';
2
+ import type { OpenClawChatMessage } from './openClawTypes';
3
+ /**
4
+ * 将单条 OpenClaw 风格消息转为可与 {@link mapOpenAIMessagesToMessageBubbleData} 兼容的 OpenAI 形状(`toolResult` → `tool`)。
5
+ */
6
+ export declare function normalizeOpenClawMessageToOpenAI(msg: OpenClawChatMessage): OpenAIChatMessage;
7
+ /**
8
+ * 批量将 OpenClaw transcript 消息转为 OpenAI Chat Completions 兼容结构
9
+ */
10
+ export declare function normalizeOpenClawMessagesToOpenAI(messages: OpenClawChatMessage[]): OpenAIChatMessage[];