openclaw-openagent 1.0.7 → 1.0.8

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.
@@ -197,7 +197,7 @@ export function createCallRemoteAgentTool() {
197
197
  // listUnsettledInvocations() 续轮询,避免重复扣费
198
198
  const requestId = generateRequestId();
199
199
  const TIMEOUT_MS = 15 * 60 * 1000; // 15 分钟:远程 agent 可能跑长工具
200
- const OASN_INVOCATION_TIMEOUT_MS = 60_000; // compute02 REL 当前允许的 ServiceAgent 执行预算
200
+ const OASN_INVOCATION_TIMEOUT_MS = 24 * 60 * 60 * 1000; // 24 小时
201
201
  logger.info(`[remote-tool] Calling remote agent: agentId=${agentId} requestId=${requestId} ` +
202
202
  `mode=${mode} transport=${rt.transportType}`);
203
203
  // 进度回调适配器:两条路径共用一套桥接逻辑,统一把字符串内容包装成 ToolResult
@@ -2,7 +2,7 @@
2
2
  * OpenAgent UI Override — Auto-generated, do not edit directly!
3
3
  *
4
4
  * Source: src/plugin-ui/modules/
5
- * Built: 2026-06-25T09:33:52.490Z
5
+ * Built: 2026-06-25T12:46:20.004Z
6
6
  *
7
7
  * To modify, edit the source modules and run:
8
8
  * npm run build:override
@@ -288,35 +288,56 @@ const toolcardRender = {
288
288
  }
289
289
  }
290
290
  if (toolMessageOk) {
291
+ // 双模式匹配单卡 guard:
292
+ // Shape A (2026.4.x): ,Z=X.length===1?X[0]:null,Y=Z&&!A&&!B?
293
+ // Shape B (2026.5.x): ,N=u.length===1?u[0]:null,...ae=P?`Tool error`:ne&&!C&&!h?ne:...
291
294
  const singleCardMatch = toolMessageFn.body.match(/(?:let\s+|,)([a-zA-Z_$]\w*)=([a-zA-Z_$]\w*)\.length===1\?\2\[0\]:null,\w+=\1&&!([a-zA-Z_$]\w*)&&!([a-zA-Z_$]\w*)\?/);
292
- if (!singleCardMatch) {
293
- logger.warn('[ui-ext:regex] toolcard-render: tool message single-card guard not found');
295
+ let cardsVar = '';
296
+ let mediaVar = '';
297
+ if (singleCardMatch) {
298
+ // Shape A: old bundle
299
+ cardsVar = singleCardMatch[2];
300
+ mediaVar = singleCardMatch[4];
301
+ }
302
+ else {
303
+ // Shape B: 2026.5.x bundle
304
+ const shapeB = toolMessageFn.body.match(/,(?:let\s+)?([a-zA-Z_$]\w*)=([a-zA-Z_$]\w*)\.length===1\?\2\[0\]:null/);
305
+ if (!shapeB) {
306
+ logger.warn('[ui-ext:regex] toolcard-render: tool message single-card guard not found');
307
+ toolMessageOk = false;
308
+ }
309
+ else {
310
+ cardsVar = shapeB[2];
311
+ // 从 ae=P?`Tool error`:ne&&!C&&!h 中提取排除变量 C, h
312
+ const aeMatch = toolMessageFn.body.match(/,\w+=\w+\?`Tool error`:(\w+)&&!(\w+)&&!(\w+)\?/);
313
+ if (aeMatch) {
314
+ mediaVar = `(${aeMatch[2]}||${aeMatch[3]})`;
315
+ }
316
+ else {
317
+ mediaVar = 'false';
318
+ }
319
+ }
320
+ }
321
+ const chatBubbleClassMatch = toolMessageFn.body.match(/[,;]([a-zA-Z_$]\w*)=\[`chat-bubble`,/);
322
+ if (!chatBubbleClassMatch) {
323
+ logger.warn('[ui-ext:regex] toolcard-render: tool message chat-bubble class var not found');
294
324
  toolMessageOk = false;
295
325
  }
296
326
  if (toolMessageOk) {
297
- const cardsVar = singleCardMatch[2];
298
- const mediaVar = singleCardMatch[4];
299
- const chatBubbleClassMatch = toolMessageFn.body.match(/[,;]([a-zA-Z_$]\w*)=\[`chat-bubble`,/);
300
- if (!chatBubbleClassMatch) {
301
- logger.warn('[ui-ext:regex] toolcard-render: tool message chat-bubble class var not found');
327
+ const chatBubbleClassVar = chatBubbleClassMatch[1];
328
+ const toolMessageParams = toolMessageFn.params.split(',').map((s) => s.trim());
329
+ const toolMessageSidebarArg = toolMessageParams[3] || 'undefined';
330
+ const toolMessageReturnIdx = toolMessageFn.body.indexOf(`return ${toolMessageHtmlVar}\``);
331
+ if (toolMessageReturnIdx < 0) {
332
+ logger.warn('[ui-ext:regex] toolcard-render: tool message return anchor not found');
302
333
  toolMessageOk = false;
303
334
  }
304
335
  if (toolMessageOk) {
305
- const chatBubbleClassVar = chatBubbleClassMatch[1];
306
- const toolMessageParams = toolMessageFn.params.split(',').map((s) => s.trim());
307
- const toolMessageSidebarArg = toolMessageParams[3] || 'undefined';
308
- const toolMessageReturnIdx = toolMessageFn.body.indexOf(`return ${toolMessageHtmlVar}\``);
309
- if (toolMessageReturnIdx < 0) {
310
- logger.warn('[ui-ext:regex] toolcard-render: tool message return anchor not found');
311
- toolMessageOk = false;
312
- }
313
- if (toolMessageOk) {
314
- const toolMessageHook = `${marker}let __openagentToolMsgCard=null;if(!${mediaVar}&&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>\`;`;
315
- const toolMessageInsertAt = toolMessageFn.bodyStart + toolMessageReturnIdx;
316
- content = content.substring(0, toolMessageInsertAt) + toolMessageHook + content.substring(toolMessageInsertAt);
317
- patchedToolMessageWrapper = true;
318
- logger.info(`[ui-ext:regex] toolcard-render: patched tool message wrapper ${toolMessageFn.funcName}(${toolMessageFn.params.substring(0, 20)}) html=${toolMessageHtmlVar}`);
319
- }
336
+ const toolMessageHook = `${marker}let __openagentToolMsgCard=null;console.log('[openagent] toolMsg hook: cards='+${cardsVar}.length+' mediaVar='+${mediaVar});if(!${mediaVar}&&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>\`;`;
337
+ const toolMessageInsertAt = toolMessageFn.bodyStart + toolMessageReturnIdx;
338
+ content = content.substring(0, toolMessageInsertAt) + toolMessageHook + content.substring(toolMessageInsertAt);
339
+ patchedToolMessageWrapper = true;
340
+ logger.info(`[ui-ext:regex] toolcard-render: patched tool message wrapper ${toolMessageFn.funcName}(${toolMessageFn.params.substring(0, 20)}) html=${toolMessageHtmlVar}`);
320
341
  }
321
342
  }
322
343
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-openagent",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "type": "module",
5
5
  "description": "OpenAgent channel plugin for OpenClaw",
6
6
  "license": "MIT",
@@ -242,7 +242,7 @@ export function createCallRemoteAgentTool(): ToolDescriptor {
242
242
  // listUnsettledInvocations() 续轮询,避免重复扣费
243
243
  const requestId = generateRequestId();
244
244
  const TIMEOUT_MS = 15 * 60 * 1000; // 15 分钟:远程 agent 可能跑长工具
245
- const OASN_INVOCATION_TIMEOUT_MS = 60_000; // compute02 REL 当前允许的 ServiceAgent 执行预算
245
+ const OASN_INVOCATION_TIMEOUT_MS = 24 * 60 * 60 * 1000; // 24 小时
246
246
 
247
247
  logger.info(
248
248
  `[remote-tool] Calling remote agent: agentId=${agentId} requestId=${requestId} ` +
@@ -2,7 +2,7 @@
2
2
  * OpenAgent UI Override — Auto-generated, do not edit directly!
3
3
  *
4
4
  * Source: src/plugin-ui/modules/
5
- * Built: 2026-06-25T09:33:52.490Z
5
+ * Built: 2026-06-25T12:46:20.004Z
6
6
  *
7
7
  * To modify, edit the source modules and run:
8
8
  * npm run build:override
@@ -311,14 +311,33 @@ const toolcardRender: UIExtension = {
311
311
  }
312
312
 
313
313
  if (toolMessageOk) {
314
+ // 双模式匹配单卡 guard:
315
+ // Shape A (2026.4.x): ,Z=X.length===1?X[0]:null,Y=Z&&!A&&!B?
316
+ // Shape B (2026.5.x): ,N=u.length===1?u[0]:null,...ae=P?`Tool error`:ne&&!C&&!h?ne:...
314
317
  const singleCardMatch = toolMessageFn!.body.match(/(?:let\s+|,)([a-zA-Z_$]\w*)=([a-zA-Z_$]\w*)\.length===1\?\2\[0\]:null,\w+=\1&&!([a-zA-Z_$]\w*)&&!([a-zA-Z_$]\w*)\?/);
315
- if (!singleCardMatch) {
316
- logger.warn('[ui-ext:regex] toolcard-render: tool message single-card guard not found');
317
- toolMessageOk = false;
318
+ let cardsVar = '';
319
+ let mediaVar = '';
320
+ if (singleCardMatch) {
321
+ // Shape A: old bundle
322
+ cardsVar = singleCardMatch[2];
323
+ mediaVar = singleCardMatch[4];
324
+ } else {
325
+ // Shape B: 2026.5.x bundle
326
+ const shapeB = toolMessageFn!.body.match(/,(?:let\s+)?([a-zA-Z_$]\w*)=([a-zA-Z_$]\w*)\.length===1\?\2\[0\]:null/);
327
+ if (!shapeB) {
328
+ logger.warn('[ui-ext:regex] toolcard-render: tool message single-card guard not found');
329
+ toolMessageOk = false;
330
+ } else {
331
+ cardsVar = shapeB[2];
332
+ // 从 ae=P?`Tool error`:ne&&!C&&!h 中提取排除变量 C, h
333
+ const aeMatch = toolMessageFn!.body.match(/,\w+=\w+\?`Tool error`:(\w+)&&!(\w+)&&!(\w+)\?/);
334
+ if (aeMatch) {
335
+ mediaVar = `(${aeMatch[2]}||${aeMatch[3]})`;
336
+ } else {
337
+ mediaVar = 'false';
338
+ }
339
+ }
318
340
  }
319
- if (toolMessageOk) {
320
- const cardsVar = singleCardMatch![2];
321
- const mediaVar = singleCardMatch![4];
322
341
  const chatBubbleClassMatch = toolMessageFn!.body.match(/[,;]([a-zA-Z_$]\w*)=\[`chat-bubble`,/);
323
342
  if (!chatBubbleClassMatch) {
324
343
  logger.warn('[ui-ext:regex] toolcard-render: tool message chat-bubble class var not found');
@@ -335,7 +354,7 @@ const toolcardRender: UIExtension = {
335
354
  }
336
355
  if (toolMessageOk) {
337
356
  const toolMessageHook =
338
- `${marker}let __openagentToolMsgCard=null;if(!${mediaVar}&&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>\`;`;
357
+ `${marker}let __openagentToolMsgCard=null;console.log('[openagent] toolMsg hook: cards='+${cardsVar}.length+' mediaVar='+${mediaVar});if(!${mediaVar}&&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>\`;`;
339
358
  const toolMessageInsertAt = toolMessageFn!.bodyStart + toolMessageReturnIdx;
340
359
  content = content.substring(0, toolMessageInsertAt) + toolMessageHook + content.substring(toolMessageInsertAt);
341
360
  patchedToolMessageWrapper = true;
@@ -344,9 +363,8 @@ const toolcardRender: UIExtension = {
344
363
  }
345
364
  }
346
365
  }
347
- }
348
366
 
349
- writeFileSync(bundlePath, content, 'utf-8');
367
+ writeFileSync(bundlePath, content, 'utf-8');
350
368
  logger.info(`[ui-ext:regex] toolcard-render: patched ${funcName}(${params.substring(0, 20)}) html=${litHtmlVar}${patchedWrapper ? ' + wrapper' : ''}${patchedToolMessageWrapper ? ' + tool-message' : ''}`);
351
369
  return true;
352
370
  },