myagent-ai 1.15.95 → 1.15.97
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/package.json
CHANGED
package/skills/chromedev_mcp.py
CHANGED
|
@@ -382,7 +382,7 @@ async def get_mcp_client() -> MCPClient:
|
|
|
382
382
|
return _mcp_client
|
|
383
383
|
|
|
384
384
|
|
|
385
|
-
|
|
385
|
+
def _ensure_node_deps() -> Optional[str]:
|
|
386
386
|
"""检查 Node.js 依赖是否就绪,返回错误信息或 None"""
|
|
387
387
|
if not shutil.which("node"):
|
|
388
388
|
return "需要 Node.js (>= 20.19)。请安装: https://nodejs.org/"
|
|
@@ -981,8 +981,23 @@ function renderInlineExecEvent(data, msgIdx) {
|
|
|
981
981
|
|
|
982
982
|
function showExecResultModal(msgIndex, eventId) {
|
|
983
983
|
const msg = state.messages[msgIndex];
|
|
984
|
-
if (!msg
|
|
985
|
-
|
|
984
|
+
if (!msg) return;
|
|
985
|
+
|
|
986
|
+
// 先尝试从 exec_events 查找(旧格式)
|
|
987
|
+
let evt = null;
|
|
988
|
+
if (msg.exec_events) {
|
|
989
|
+
evt = msg.exec_events.find(e => String(e.id) === String(eventId));
|
|
990
|
+
}
|
|
991
|
+
// 再从 parts 查找(V2 格式)
|
|
992
|
+
if (!evt && msg.parts) {
|
|
993
|
+
for (const part of msg.parts) {
|
|
994
|
+
const inner = (part.type === 'v2_tool') ? part.data : (part.type === 'exec') ? part.data : null;
|
|
995
|
+
if (inner && String(inner.id) === String(eventId)) {
|
|
996
|
+
evt = inner;
|
|
997
|
+
break;
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
986
1001
|
if (!evt) return;
|
|
987
1002
|
|
|
988
1003
|
const lang = evt.language || 'unknown';
|
|
@@ -1070,8 +1085,22 @@ function switchExecResultTab(tabId) {
|
|
|
1070
1085
|
|
|
1071
1086
|
function showToolResultModal(msgIndex, eventId) {
|
|
1072
1087
|
const msg = state.messages[msgIndex];
|
|
1073
|
-
if (!msg
|
|
1074
|
-
|
|
1088
|
+
if (!msg) return;
|
|
1089
|
+
|
|
1090
|
+
// 先尝试从 exec_events 查找(旧格式)
|
|
1091
|
+
let evt = null;
|
|
1092
|
+
if (msg.exec_events) {
|
|
1093
|
+
evt = msg.exec_events.find(e => String(e.id) === String(eventId));
|
|
1094
|
+
}
|
|
1095
|
+
// 再从 parts 查找(V2 格式:{type:'v2_tool', data:{id, tool_name, ...}})
|
|
1096
|
+
if (!evt && msg.parts) {
|
|
1097
|
+
for (const part of msg.parts) {
|
|
1098
|
+
if (part.type === 'v2_tool' && part.data && String(part.data.id) === String(eventId)) {
|
|
1099
|
+
evt = part.data;
|
|
1100
|
+
break;
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1075
1104
|
if (!evt) return;
|
|
1076
1105
|
|
|
1077
1106
|
const title = evt.title || (evt.tool_name || evt.skill_name || '工具调用');
|