mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-05-15 04:51:01 +02:00
Add files via upload
This commit is contained in:
@@ -9264,9 +9264,8 @@ header {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.webshell-col-owner,
|
||||
.webshell-col-group {
|
||||
width: 110px;
|
||||
.webshell-col-owner {
|
||||
width: 150px;
|
||||
color: var(--text-secondary);
|
||||
font-size: 0.82rem;
|
||||
white-space: nowrap;
|
||||
|
||||
@@ -402,7 +402,10 @@
|
||||
"dbRows": "rows",
|
||||
"dbColumns": "columns",
|
||||
"dbSchemaFailed": "Failed to load schema",
|
||||
"dbSchemaLoaded": "Schema loaded successfully",
|
||||
"dbAddProfile": "Add connection",
|
||||
"dbExecSuccess": "SQL executed successfully",
|
||||
"dbNoOutput": "Execution completed (no output)",
|
||||
"dbRenameProfile": "Rename",
|
||||
"dbDeleteProfile": "Delete connection",
|
||||
"dbDeleteProfileConfirm": "Delete this database connection profile?",
|
||||
@@ -458,6 +461,7 @@
|
||||
"searchPlaceholder": "Search connections...",
|
||||
"noMatchConnections": "No matching connections",
|
||||
"breadcrumbHome": "Root",
|
||||
"dirTree": "Directory tree",
|
||||
"back": "Back",
|
||||
"moreActions": "More actions",
|
||||
"batchProbe": "Batch probe",
|
||||
@@ -1231,6 +1235,15 @@
|
||||
"fofaApiKeyHint": "Stored in server config (config.yaml) only.",
|
||||
"maxIterations": "Max iterations",
|
||||
"iterationsPlaceholder": "30",
|
||||
"enableMultiAgent": "Enable Eino multi-agent (DeepAgent)",
|
||||
"enableMultiAgentHint": "After enabling, the chat page can use multi-agent mode; sub-agents are configured in config.yaml under multi_agent.sub_agents.",
|
||||
"multiAgentDefaultMode": "Default mode on chat page",
|
||||
"multiAgentModeSingle": "Single-agent (ReAct)",
|
||||
"multiAgentModeMulti": "Multi-agent (Eino)",
|
||||
"multiAgentRobotUse": "Use multi-agent for WeCom / DingTalk / Lark bots",
|
||||
"multiAgentRobotUseHint": "Requires 'Enable multi-agent' to be checked; usage and cost will be higher.",
|
||||
"multiAgentBatchUse": "Use multi-agent for batch task queues",
|
||||
"multiAgentBatchUseHint": "When enabled, each sub-task executed by queue in Task Management will run through Eino DeepAgent (requires multi-agent).",
|
||||
"enableKnowledge": "Enable knowledge retrieval",
|
||||
"knowledgeBasePath": "Knowledge base path",
|
||||
"knowledgeBasePathPlaceholder": "knowledge_base",
|
||||
|
||||
@@ -402,7 +402,10 @@
|
||||
"dbRows": "行",
|
||||
"dbColumns": "列",
|
||||
"dbSchemaFailed": "加载数据库结构失败",
|
||||
"dbSchemaLoaded": "结构加载完成",
|
||||
"dbAddProfile": "新增连接",
|
||||
"dbExecSuccess": "SQL 执行成功",
|
||||
"dbNoOutput": "执行完成(无输出)",
|
||||
"dbRenameProfile": "重命名",
|
||||
"dbDeleteProfile": "删除连接",
|
||||
"dbDeleteProfileConfirm": "确定删除该数据库连接配置吗?",
|
||||
@@ -1232,6 +1235,15 @@
|
||||
"fofaApiKeyHint": "仅保存在服务器配置中(`config.yaml`)。",
|
||||
"maxIterations": "最大迭代次数",
|
||||
"iterationsPlaceholder": "30",
|
||||
"enableMultiAgent": "启用 Eino 多代理(DeepAgent)",
|
||||
"enableMultiAgentHint": "开启后对话页可选「多代理」模式;子代理在 config.yaml 的 multi_agent.sub_agents 中配置。",
|
||||
"multiAgentDefaultMode": "对话页默认模式",
|
||||
"multiAgentModeSingle": "单代理(ReAct)",
|
||||
"multiAgentModeMulti": "多代理(Eino)",
|
||||
"multiAgentRobotUse": "企业微信 / 钉钉 / 飞书机器人也使用多代理",
|
||||
"multiAgentRobotUseHint": "需同时勾选「启用多代理」;调用量与成本更高。",
|
||||
"multiAgentBatchUse": "批量任务队列也使用多代理",
|
||||
"multiAgentBatchUseHint": "开启后,任务管理中按队列执行的每个子任务将走 Eino DeepAgent(需启用多代理)。",
|
||||
"enableKnowledge": "启用知识检索功能",
|
||||
"knowledgeBasePath": "知识库路径",
|
||||
"knowledgeBasePathPlaceholder": "knowledge_base",
|
||||
|
||||
@@ -127,7 +127,10 @@ function wsT(key) {
|
||||
'webshell.dbRows': '行',
|
||||
'webshell.dbColumns': '列',
|
||||
'webshell.dbSchemaFailed': '加载数据库结构失败',
|
||||
'webshell.dbSchemaLoaded': '结构加载完成',
|
||||
'webshell.dbAddProfile': '新增连接',
|
||||
'webshell.dbExecSuccess': 'SQL 执行成功',
|
||||
'webshell.dbNoOutput': '执行完成(无输出)',
|
||||
'webshell.dbRenameProfile': '重命名',
|
||||
'webshell.dbDeleteProfile': '删除连接',
|
||||
'webshell.dbDeleteProfileConfirm': '确定删除该数据库连接配置吗?',
|
||||
@@ -2116,11 +2119,11 @@ function selectWebshell(id, stateReady) {
|
||||
return;
|
||||
}
|
||||
cfg.schema = parseWebshellDbSchema(parsed.output);
|
||||
cfg.output = '结构加载完成';
|
||||
cfg.output = wsT('webshell.dbSchemaLoaded') || '结构加载完成';
|
||||
cfg.outputIsError = false;
|
||||
saveWebshellDbConfig(conn, cfg);
|
||||
renderDbSchemaTree();
|
||||
webshellDbSetOutput('结构加载完成', false);
|
||||
webshellDbSetOutput(wsT('webshell.dbSchemaLoaded') || '结构加载完成', false);
|
||||
}).catch(function (err) {
|
||||
webshellDbSetOutput((wsT('webshell.dbSchemaFailed') || '加载数据库结构失败') + ': ' + (err && err.message ? err.message : String(err)), true);
|
||||
}).finally(function () {
|
||||
@@ -2175,12 +2178,12 @@ function selectWebshell(id, stateReady) {
|
||||
}
|
||||
var hasTable = webshellDbRenderTable(content);
|
||||
if (hasTable) {
|
||||
cfg.output = 'SQL 执行成功';
|
||||
cfg.output = wsT('webshell.dbExecSuccess') || 'SQL 执行成功';
|
||||
cfg.outputIsError = false;
|
||||
saveWebshellDbConfig(conn, cfg);
|
||||
webshellDbSetOutput(cfg.output, false);
|
||||
} else {
|
||||
cfg.output = content || '执行完成(无输出)';
|
||||
cfg.output = content || (wsT('webshell.dbNoOutput') || '执行完成(无输出)');
|
||||
cfg.outputIsError = false;
|
||||
saveWebshellDbConfig(conn, cfg);
|
||||
webshellDbSetOutput(cfg.output, false);
|
||||
@@ -3107,14 +3110,14 @@ function renderFileList(listEl, currentPath, rawOutput, conn, nameFilter) {
|
||||
if (rawOutput.trim() && !nameFilter) {
|
||||
html = '<pre class="webshell-file-raw">' + escapeHtml(rawOutput) + '</pre>';
|
||||
} else {
|
||||
html = '<table class="webshell-file-table"><thead><tr><th class="webshell-col-check"><input type="checkbox" id="webshell-file-select-all" title="' + (wsT('webshell.selectAll') || '全选') + '" /></th><th>' + wsT('webshell.filePath') + '</th><th class="webshell-col-size">大小</th><th class="webshell-col-mtime">' + (wsT('webshell.colModifiedAt') || '修改时间') + '</th><th class="webshell-col-owner">' + (wsT('webshell.colOwner') || '所有者') + '</th><th class="webshell-col-group">' + (wsT('webshell.colGroup') || '用户组') + '</th><th class="webshell-col-perms">' + (wsT('webshell.colPerms') || '权限') + '</th><th class="webshell-col-actions"></th></tr></thead><tbody>' +
|
||||
'<tr><td colspan="8" class="webshell-file-empty-state">' + (wsT('common.noData') || '暂无文件') + '</td></tr>' +
|
||||
html = '<table class="webshell-file-table"><thead><tr><th class="webshell-col-check"><input type="checkbox" id="webshell-file-select-all" title="' + (wsT('webshell.selectAll') || '全选') + '" /></th><th>' + wsT('webshell.filePath') + '</th><th class="webshell-col-size">大小</th><th class="webshell-col-mtime">' + (wsT('webshell.colModifiedAt') || '修改时间') + '</th><th class="webshell-col-owner">' + (wsT('webshell.colOwner') || '所有者') + '</th><th class="webshell-col-perms">' + (wsT('webshell.colPerms') || '权限') + '</th><th class="webshell-col-actions"></th></tr></thead><tbody>' +
|
||||
'<tr><td colspan="7" class="webshell-file-empty-state">' + (wsT('common.noData') || '暂无文件') + '</td></tr>' +
|
||||
'</tbody></table>';
|
||||
}
|
||||
} else {
|
||||
html = '<table class="webshell-file-table"><thead><tr><th class="webshell-col-check"><input type="checkbox" id="webshell-file-select-all" title="' + (wsT('webshell.selectAll') || '全选') + '" /></th><th>' + wsT('webshell.filePath') + '</th><th class="webshell-col-size">大小</th><th class="webshell-col-mtime">' + (wsT('webshell.colModifiedAt') || '修改时间') + '</th><th class="webshell-col-owner">' + (wsT('webshell.colOwner') || '所有者') + '</th><th class="webshell-col-group">' + (wsT('webshell.colGroup') || '用户组') + '</th><th class="webshell-col-perms">' + (wsT('webshell.colPerms') || '权限') + '</th><th class="webshell-col-actions"></th></tr></thead><tbody>';
|
||||
html = '<table class="webshell-file-table"><thead><tr><th class="webshell-col-check"><input type="checkbox" id="webshell-file-select-all" title="' + (wsT('webshell.selectAll') || '全选') + '" /></th><th>' + wsT('webshell.filePath') + '</th><th class="webshell-col-size">大小</th><th class="webshell-col-mtime">' + (wsT('webshell.colModifiedAt') || '修改时间') + '</th><th class="webshell-col-owner">' + (wsT('webshell.colOwner') || '所有者') + '</th><th class="webshell-col-perms">' + (wsT('webshell.colPerms') || '权限') + '</th><th class="webshell-col-actions"></th></tr></thead><tbody>';
|
||||
if (currentPath !== '.' && currentPath !== '') {
|
||||
html += '<tr><td></td><td><a href="#" class="webshell-file-link" data-path="' + escapeHtml(currentPath.replace(/\/[^/]+$/, '') || '.') + '" data-isdir="1">..</a></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>';
|
||||
html += '<tr><td></td><td><a href="#" class="webshell-file-link" data-path="' + escapeHtml(currentPath.replace(/\/[^/]+$/, '') || '.') + '" data-isdir="1">..</a></td><td></td><td></td><td></td><td></td><td></td></tr>';
|
||||
}
|
||||
items.forEach(function (item) {
|
||||
var pathNext = currentPath === '.' ? item.name : currentPath + '/' + item.name;
|
||||
@@ -3125,7 +3128,6 @@ function renderFileList(listEl, currentPath, rawOutput, conn, nameFilter) {
|
||||
html += '<td class="webshell-col-size">' + escapeHtml(item.size) + '</td>';
|
||||
html += '<td class="webshell-col-mtime">' + escapeHtml(item.mtime || '') + '</td>';
|
||||
html += '<td class="webshell-col-owner">' + escapeHtml(item.owner || '') + '</td>';
|
||||
html += '<td class="webshell-col-group">' + escapeHtml(item.group || '') + '</td>';
|
||||
html += '<td class="webshell-col-perms">' + escapeHtml(item.mode || '') + '</td>';
|
||||
html += '<td class="webshell-col-actions">';
|
||||
if (item.isDir) {
|
||||
@@ -3705,9 +3707,13 @@ function refreshWebshellUIOnLanguageChange() {
|
||||
setWebshellTerminalStatus(webshellTerminalRunning);
|
||||
if (webshellCurrentConn) renderWebshellTerminalSessions(webshellCurrentConn);
|
||||
var pathLabel = workspace.querySelector('.webshell-file-toolbar label span');
|
||||
var fileSidebarTitle = workspace.querySelector('.webshell-file-sidebar-title');
|
||||
var fileMoreActionsBtn = workspace.querySelector('.webshell-toolbar-actions-btn');
|
||||
var listDirBtn = document.getElementById('webshell-list-dir');
|
||||
var parentDirBtn = document.getElementById('webshell-parent-dir');
|
||||
if (pathLabel) pathLabel.textContent = wsT('webshell.filePath');
|
||||
if (fileSidebarTitle) fileSidebarTitle.textContent = wsT('webshell.dirTree') || '目录列表';
|
||||
if (fileMoreActionsBtn) fileMoreActionsBtn.textContent = wsT('webshell.moreActions') || '更多操作';
|
||||
if (listDirBtn) listDirBtn.textContent = wsT('webshell.listDir');
|
||||
if (parentDirBtn) parentDirBtn.textContent = wsT('webshell.parentDir');
|
||||
// 文件管理工具栏按钮(红框区域):切换语言时立即更新
|
||||
|
||||
@@ -1399,32 +1399,32 @@
|
||||
<label class="checkbox-label">
|
||||
<input type="checkbox" id="multi-agent-enabled" class="modern-checkbox" />
|
||||
<span class="checkbox-custom"></span>
|
||||
<span class="checkbox-text">启用 Eino 多代理(DeepAgent)</span>
|
||||
<span class="checkbox-text" data-i18n="settingsBasic.enableMultiAgent">启用 Eino 多代理(DeepAgent)</span>
|
||||
</label>
|
||||
<small class="form-hint">开启后对话页可选「多代理」模式;子代理在 config.yaml 的 multi_agent.sub_agents 中配置。</small>
|
||||
<small class="form-hint" data-i18n="settingsBasic.enableMultiAgentHint">开启后对话页可选「多代理」模式;子代理在 config.yaml 的 multi_agent.sub_agents 中配置。</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="multi-agent-default-mode">对话页默认模式</label>
|
||||
<label for="multi-agent-default-mode" data-i18n="settingsBasic.multiAgentDefaultMode">对话页默认模式</label>
|
||||
<select id="multi-agent-default-mode">
|
||||
<option value="single">单代理(ReAct)</option>
|
||||
<option value="multi">多代理(Eino)</option>
|
||||
<option value="single" data-i18n="settingsBasic.multiAgentModeSingle">单代理(ReAct)</option>
|
||||
<option value="multi" data-i18n="settingsBasic.multiAgentModeMulti">多代理(Eino)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="checkbox-label">
|
||||
<input type="checkbox" id="multi-agent-robot-use" class="modern-checkbox" />
|
||||
<span class="checkbox-custom"></span>
|
||||
<span class="checkbox-text">企业微信 / 钉钉 / 飞书机器人也使用多代理</span>
|
||||
<span class="checkbox-text" data-i18n="settingsBasic.multiAgentRobotUse">企业微信 / 钉钉 / 飞书机器人也使用多代理</span>
|
||||
</label>
|
||||
<small class="form-hint">需同时勾选「启用多代理」;调用量与成本更高。</small>
|
||||
<small class="form-hint" data-i18n="settingsBasic.multiAgentRobotUseHint">需同时勾选「启用多代理」;调用量与成本更高。</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="checkbox-label">
|
||||
<input type="checkbox" id="multi-agent-batch-use" class="modern-checkbox" />
|
||||
<span class="checkbox-custom"></span>
|
||||
<span class="checkbox-text">批量任务队列也使用多代理</span>
|
||||
<span class="checkbox-text" data-i18n="settingsBasic.multiAgentBatchUse">批量任务队列也使用多代理</span>
|
||||
</label>
|
||||
<small class="form-hint">开启后,任务管理中按队列执行的每个子任务将走 Eino DeepAgent(需启用多代理)。</small>
|
||||
<small class="form-hint" data-i18n="settingsBasic.multiAgentBatchUseHint">开启后,任务管理中按队列执行的每个子任务将走 Eino DeepAgent(需启用多代理)。</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user