openclaw-openagent 1.0.9 → 1.0.11

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.
@@ -23,6 +23,8 @@ function _clParseToolCardModel(card) {
23
23
  var agentId = args.agent_id || args.agentId || null;
24
24
  var agentName = args.agent_name || args.agentName || agentId || 'Remote Agent';
25
25
  var agentAvatar = args.agent_avatar || args.agentAvatar || args.avatar || args.avatar_url || args.avatarUrl || null;
26
+ var agentBio = args.agent_bio || args.agentBio || args.description || args.agent_description || args.MOM || '';
27
+ var agentStars = args.agent_stars || args.agentStars || args.stars || args.claws || '3.2万';
26
28
  var taskText = args.task || args.message || args.instruction || '';
27
29
 
28
30
  // 从 text 解析思考步骤 / 最终文本
@@ -38,10 +40,14 @@ function _clParseToolCardModel(card) {
38
40
  agentId: agentId,
39
41
  agentName: agentName,
40
42
  agentAvatar: agentAvatar,
43
+ agentBio: agentBio,
44
+ agentStars: agentStars,
41
45
  taskText: taskText,
42
46
  toolCallId: card.toolCallId || '',
43
47
  status: hasOutput ? 'completed' : 'executing',
44
48
  rawText: rawText,
49
+ text: rawText,
50
+ outputText: rawText,
45
51
  chunks: chunks,
46
52
  isError: isError,
47
53
  inferredKind: inferredKind,
@@ -18,6 +18,8 @@ import type { UIExtension } from './types.js';
18
18
  // ── 常量 ──────────────────────────────────────────────────────────────────
19
19
 
20
20
  const OVERRIDE_ASSET_URL = new URL('../assets/openagent-override.js', import.meta.url);
21
+ const ICON_ASSET_URL = new URL('../assets/icon.png', import.meta.url);
22
+ const BG_ASSET_URL = new URL('../assets/bg.png', import.meta.url);
21
23
 
22
24
  function getOverrideAssetHash(): string {
23
25
  return createHash('sha256')
@@ -123,6 +125,27 @@ const overrideScript: UIExtension = {
123
125
  }
124
126
  copyFileSync(OVERRIDE_ASSET_URL, dest);
125
127
  logger.info('[ui-ext:regex] override-script: deployed openagent-override.js');
128
+
129
+ // Deploy icon.png alongside
130
+ if (existsSync(ICON_ASSET_URL)) {
131
+ const iconDest = join(controlUiDir, 'icon.png');
132
+ try {
133
+ copyFileSync(ICON_ASSET_URL, iconDest);
134
+ logger.info('[ui-ext:regex] override-script: deployed icon.png');
135
+ } catch (err) {
136
+ logger.warn('[ui-ext:regex] override-script: failed to deploy icon.png');
137
+ }
138
+ }
139
+ if (existsSync(BG_ASSET_URL)) {
140
+ const bgDest = join(controlUiDir, 'bg.png');
141
+ try {
142
+ copyFileSync(BG_ASSET_URL, bgDest);
143
+ logger.info('[ui-ext:regex] override-script: deployed bg.png');
144
+ } catch (err) {
145
+ logger.warn('[ui-ext:regex] override-script: failed to deploy bg.png');
146
+ }
147
+ }
148
+
126
149
  return true;
127
150
  },
128
151
 
@@ -132,6 +155,20 @@ const overrideScript: UIExtension = {
132
155
  unlinkSync(dest);
133
156
  logger.info('[ui-ext:regex] override-script: removed');
134
157
  }
158
+ const iconDest = join(controlUiDir, 'icon.png');
159
+ if (existsSync(iconDest)) {
160
+ try {
161
+ unlinkSync(iconDest);
162
+ logger.info('[ui-ext:regex] override-script: removed icon.png');
163
+ } catch {}
164
+ }
165
+ const bgDest = join(controlUiDir, 'bg.png');
166
+ if (existsSync(bgDest)) {
167
+ try {
168
+ unlinkSync(bgDest);
169
+ logger.info('[ui-ext:regex] override-script: removed bg.png');
170
+ } catch {}
171
+ }
135
172
  },
136
173
  };
137
174
 
@@ -139,7 +176,7 @@ const overrideScript: UIExtension = {
139
176
 
140
177
  const htmlScriptTag: UIExtension = {
141
178
  id: 'html-script-tag',
142
- version: 4,
179
+ version: 5,
143
180
  alwaysApply: true,
144
181
 
145
182
  apply(controlUiDir: string): boolean {
@@ -150,12 +187,21 @@ const htmlScriptTag: UIExtension = {
150
187
  }
151
188
  let html = readFileSync(indexPath, 'utf-8');
152
189
  const htmlMarker = `<!--openagent:${this.id}-->`;
190
+ const markerPattern = /(?:\/\*openagent:html-script-tag\*\/|<!--openagent:html-script-tag-->)/;
153
191
  const overrideHash = getOverrideAssetHash();
154
192
  const scriptTag = `${htmlMarker}<script src="./openagent-override.js?v=${overrideHash}"></script>`;
155
193
  const markedScriptPattern = /(?:\/\*openagent:html-script-tag\*\/|<!--openagent:html-script-tag-->)<script[^>]*openagent-override[^>]*><\/script>\n?\s*/g;
194
+ const oldScriptPattern = /<script[^>]*openagent-override[^>]*><\/script>\n?\s*/g;
156
195
 
157
- if (html.includes(htmlMarker) || hasMarker(html, this.id)) {
158
- const nextHtml = html.replace(markedScriptPattern, `${scriptTag}\n `);
196
+ if (markerPattern.test(html)) {
197
+ let nextHtml = html.replace(markedScriptPattern, `${scriptTag}\n `);
198
+ if (nextHtml === html && !nextHtml.includes('openagent-override.js')) {
199
+ nextHtml = nextHtml.replace(markerPattern, `${scriptTag}\n `);
200
+ } else if (nextHtml === html && nextHtml.includes('openagent-override.js')) {
201
+ nextHtml = nextHtml
202
+ .replace(oldScriptPattern, '')
203
+ .replace(markerPattern, `${scriptTag}\n `);
204
+ }
159
205
  if (nextHtml === html) {
160
206
  logger.debug('[ui-ext:regex] html-script-tag: already applied');
161
207
  } else {
@@ -164,7 +210,6 @@ const htmlScriptTag: UIExtension = {
164
210
  }
165
211
  return true;
166
212
  }
167
- const oldScriptPattern = /<script[^>]*openagent-override[^>]*><\/script>\n?\s*/g;
168
213
  if (oldScriptPattern.test(html)) {
169
214
  html = html.replace(oldScriptPattern, '');
170
215
  }
@@ -354,7 +399,7 @@ const toolcardRender: UIExtension = {
354
399
  }
355
400
  if (toolMessageOk) {
356
401
  const toolMessageHook =
357
- `${marker}/* openagent-media-aware-tool-message */let __openagentToolMsgCard=null;console.log('[openagent] toolMsg hook: cards='+${cardsVar}.length+' mediaVar='+${mediaVar});if(window.__openagentRenderToolCard){for(let __openagentI=${cardsVar}.length-1;__openagentI>=0&&!__openagentToolMsgCard;__openagentI--){let __openagentCandidate=${cardsVar}[__openagentI];if(__openagentCandidate&&(__openagentCandidate.outputText||__openagentCandidate.text))__openagentToolMsgCard=window.__openagentRenderToolCard(__openagentCandidate,${toolMessageSidebarArg})}for(let __openagentI=0;__openagentI<${cardsVar}.length&&!__openagentToolMsgCard;__openagentI++){__openagentToolMsgCard=window.__openagentRenderToolCard(${cardsVar}[__openagentI],${toolMessageSidebarArg})}}if(__openagentToolMsgCard)return ${toolMessageHtmlVar}\`<div class="\${${chatBubbleClassVar}}">\${__openagentToolMsgCard}</div>\`;`;
402
+ `${marker}/* openagent-media-aware-tool-message */let __openagentToolMsgCard=null;if(window.__openagentRenderToolCard){for(let __openagentI=${cardsVar}.length-1;__openagentI>=0&&!__openagentToolMsgCard;__openagentI--){let __openagentCandidate=${cardsVar}[__openagentI];if(__openagentCandidate&&(__openagentCandidate.outputText||__openagentCandidate.text))__openagentToolMsgCard=window.__openagentRenderToolCard(__openagentCandidate,${toolMessageSidebarArg})}for(let __openagentI=0;__openagentI<${cardsVar}.length&&!__openagentToolMsgCard;__openagentI++){__openagentToolMsgCard=window.__openagentRenderToolCard(${cardsVar}[__openagentI],${toolMessageSidebarArg})}}if(__openagentToolMsgCard)return ${toolMessageHtmlVar}\`<div class="\${${chatBubbleClassVar}}">\${__openagentToolMsgCard}</div>\`;`;
358
403
  const toolMessageInsertAt = toolMessageFn!.bodyStart + toolMessageReturnIdx;
359
404
  content = content.substring(0, toolMessageInsertAt) + toolMessageHook + content.substring(toolMessageInsertAt);
360
405
  patchedToolMessageWrapper = true;