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.
- package/dist/src/plugin-ui/assets/bg.png +0 -0
- package/dist/src/plugin-ui/assets/icon.png +0 -0
- package/dist/src/plugin-ui/assets/openagent-override.js +1553 -826
- package/dist/src/plugin-ui/ui-extension-loader/registry-regex.js +53 -5
- package/openclaw.plugin.json +1 -1
- package/package.json +3 -3
- package/src/plugin-ui/assets/bg.png +0 -0
- package/src/plugin-ui/assets/icon.png +0 -0
- package/src/plugin-ui/assets/openagent-override.js +1553 -826
- package/src/plugin-ui/build.cjs +79 -4
- package/src/plugin-ui/modules/agent-book/panel/agent-book.js +92 -9
- package/src/plugin-ui/modules/agent-book/panel/agent-card.js +26 -10
- package/src/plugin-ui/modules/agent-book/panel/agent-data.js +1 -1
- package/src/plugin-ui/modules/agent-book/panel/inject-ui.js +46 -0
- package/src/plugin-ui/modules/agent-book/panel/styles.js +313 -178
- package/src/plugin-ui/modules/loader/bootstrap.js +1 -1
- package/src/plugin-ui/modules/loader/shared-state.js +54 -0
- package/src/plugin-ui/modules/remote-agent/execution-card.js +347 -124
- package/src/plugin-ui/modules/remote-agent/output-card.js +91 -31
- package/src/plugin-ui/modules/remote-agent/render-hooks.js +97 -18
- package/src/plugin-ui/modules/remote-agent/styles.js +482 -457
- package/src/plugin-ui/modules/remote-agent/tool-card-model.js +6 -0
- package/src/plugin-ui/ui-extension-loader/registry-regex.ts +50 -5
|
@@ -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:
|
|
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 (
|
|
158
|
-
|
|
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;
|
|
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;
|