mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-16 00:47:29 +02:00
Add files via upload
This commit is contained in:
@@ -97,7 +97,7 @@
|
||||
"agentsManagement": "Agent management",
|
||||
"roles": "Roles",
|
||||
"rolesManagement": "Roles Management",
|
||||
"workflows": "Graph Orchestration",
|
||||
"workflows": "Workflows",
|
||||
"settings": "System settings",
|
||||
"hitl": "Human-in-the-loop",
|
||||
"c2": "C2",
|
||||
@@ -3101,8 +3101,8 @@
|
||||
"roleFilterOnBanner": "These tools are checked and linked to this role (independent of MCP-wide enable).",
|
||||
"roleFilterOffBanner": "These tools are unchecked and not linked to this role.",
|
||||
"checkboxLinkTitle": "Check to link this tool to this role",
|
||||
"bindWorkflow": "Bind graph workflow",
|
||||
"bindWorkflowHint": "When a workflow is selected, conversations with this role automatically run the bound graph; workflow fields are configured freely in the graph JSON.",
|
||||
"bindWorkflow": "Bind workflow",
|
||||
"bindWorkflowHint": "When a workflow is selected, conversations with this role run it automatically; workflow fields are configured freely in the graph JSON.",
|
||||
"workflowPolicy": "Workflow trigger policy",
|
||||
"workflowPolicyAuto": "Auto trigger",
|
||||
"workflowPolicyOff": "Off",
|
||||
@@ -3110,11 +3110,11 @@
|
||||
"workflowDisabledSuffix": " (disabled)"
|
||||
},
|
||||
"workflows": {
|
||||
"title": "Graph Orchestration",
|
||||
"newGraph": "New graph",
|
||||
"processLibrary": "Process library",
|
||||
"title": "Workflows",
|
||||
"newGraph": "New workflow",
|
||||
"processLibrary": "Workflows",
|
||||
"nodeLibrary": "Node library",
|
||||
"emptyList": "No graph workflows yet",
|
||||
"emptyList": "No workflows yet",
|
||||
"statusEnabled": "Enabled",
|
||||
"statusDisabled": "Disabled",
|
||||
"metaId": "ID",
|
||||
|
||||
+14
-14
@@ -97,7 +97,7 @@
|
||||
"agentsManagement": "Agent管理",
|
||||
"roles": "角色",
|
||||
"rolesManagement": "角色管理",
|
||||
"workflows": "图编排",
|
||||
"workflows": "工作流",
|
||||
"settings": "系统设置",
|
||||
"hitl": "人机协同",
|
||||
"c2": "C2",
|
||||
@@ -3089,20 +3089,20 @@
|
||||
"roleFilterOnBanner": "以下为「已勾选、关联到本角色」的工具(与 MCP 管理里全局开/关无关)。",
|
||||
"roleFilterOffBanner": "以下为「未勾选、未关联到本角色」的工具。",
|
||||
"checkboxLinkTitle": "勾选表示本角色关联使用该工具",
|
||||
"bindWorkflow": "绑定图编排流程",
|
||||
"bindWorkflowHint": "选中流程后,对话页使用该角色会自动触发绑定图;流程字段由图定义 JSON 自由配置。",
|
||||
"workflowPolicy": "流程触发策略",
|
||||
"bindWorkflow": "绑定工作流",
|
||||
"bindWorkflowHint": "选中工作流后,对话页使用该角色会自动触发;工作流字段由图定义 JSON 自由配置。",
|
||||
"workflowPolicy": "工作流触发策略",
|
||||
"workflowPolicyAuto": "自动触发",
|
||||
"workflowPolicyOff": "关闭",
|
||||
"noWorkflowBind": "不绑定流程",
|
||||
"noWorkflowBind": "不绑定工作流",
|
||||
"workflowDisabledSuffix": "(已禁用)"
|
||||
},
|
||||
"workflows": {
|
||||
"title": "图编排",
|
||||
"newGraph": "新建图",
|
||||
"processLibrary": "流程库",
|
||||
"title": "工作流",
|
||||
"newGraph": "新建工作流",
|
||||
"processLibrary": "工作流列表",
|
||||
"nodeLibrary": "节点库",
|
||||
"emptyList": "暂无图编排流程",
|
||||
"emptyList": "暂无工作流",
|
||||
"statusEnabled": "启用",
|
||||
"statusDisabled": "禁用",
|
||||
"metaId": "ID",
|
||||
@@ -3110,19 +3110,19 @@
|
||||
"metaDescription": "描述",
|
||||
"metaEnabled": "启用",
|
||||
"metaIdHint": "创建后不可修改,用于 API 与角色绑定",
|
||||
"metaModalTitle": "流程信息",
|
||||
"metaModalTitle": "工作流信息",
|
||||
"editMeta": "编辑",
|
||||
"untitled": "未命名流程",
|
||||
"untitled": "未命名工作流",
|
||||
"toggleEnabled": "启用/禁用",
|
||||
"metaEnabledHint": "禁用后无法被角色自动触发",
|
||||
"enabledUpdated": "启用状态已更新",
|
||||
"enabledUpdateFailed": "更新启用状态失败",
|
||||
"namePlaceholder": "基础 Web 扫描",
|
||||
"descriptionPlaceholder": "可选",
|
||||
"toolbarLabel": "流程编辑工具",
|
||||
"toolbarLabel": "工作流编辑工具",
|
||||
"canvasTools": "画布工具",
|
||||
"moreActions": "更多",
|
||||
"deleteWorkflow": "删除流程",
|
||||
"deleteWorkflow": "删除工作流",
|
||||
"package": {
|
||||
"importLocal": "导入本地包",
|
||||
"export": "导出",
|
||||
@@ -3155,7 +3155,7 @@
|
||||
"overwriteCheck": "我已确认覆盖当前本地工作流",
|
||||
"overwriteConfirm": "确认覆盖并导入",
|
||||
"errors": {
|
||||
"fileRequired": "请选择本地图编排包后再预检。",
|
||||
"fileRequired": "请选择本地工作流包后再预检。",
|
||||
"fileTooLarge": "文件超过 10 MiB 限制,请选择更小的本地包。",
|
||||
"invalidArchive": "本地包不是有效的 Zip 文件,无法完成预检。",
|
||||
"unsupportedFormat": "本地包格式或版本不受支持。",
|
||||
|
||||
@@ -332,7 +332,7 @@ const responseStreamStateByProgressId = new Map();
|
||||
// 主通道当前迭代轮次缓存:progressId -> { iteration, orchestration }
|
||||
const mainIterationStateByProgressId = new Map();
|
||||
|
||||
/** 图编排多 Agent 节点切换时清空流式聚合,避免推理/输出条目覆盖上一节点内容 */
|
||||
/** 工作流多 Agent 节点切换时清空流式聚合,避免推理/输出条目覆盖上一节点内容 */
|
||||
function clearTimelineStreamStates(progressId) {
|
||||
responseStreamStateByProgressId.delete(progressId);
|
||||
thinkingStreamStateByProgressId.delete(progressId);
|
||||
@@ -1886,7 +1886,7 @@ function handleStreamEvent(event, progressElement, progressId,
|
||||
workflowNodeId: curNode,
|
||||
einoAgent: curAgent
|
||||
});
|
||||
// 主通道进入新轮次或图编排切换到新 Agent 节点后,不复用上一段的流式时间线条目
|
||||
// 主通道进入新轮次或工作流切换到新 Agent 节点后,不复用上一段的流式时间线条目
|
||||
if (prevN != null && (n < prevN || prevN !== n || (curNode && prevNode && curNode !== prevNode))) {
|
||||
clearTimelineStreamStates(progressId);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
}
|
||||
|
||||
async function createInspection(apiFetch, file) {
|
||||
if (!file) throw new WorkflowPackageError('WFPKG_FILE_REQUIRED', '请选择本地图编排包');
|
||||
if (!file) throw new WorkflowPackageError('WFPKG_FILE_REQUIRED', '请选择本地工作流包');
|
||||
const body = new FormData();
|
||||
body.append('file', file, file.name || 'workflow.csapkg.zip');
|
||||
const response = await apiFetch('/api/workflow-package-inspections', { method: 'POST', body: body });
|
||||
|
||||
@@ -2,11 +2,11 @@ const fs = require('node:fs');
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
|
||||
test('图编排提供导入、导出和覆盖确认容器', () => {
|
||||
test('工作流提供导入、导出和覆盖确认容器', () => {
|
||||
const html = fs.readFileSync('web/templates/index.html', 'utf8');
|
||||
const zh = JSON.parse(fs.readFileSync('web/static/i18n/zh-CN.json', 'utf8'));
|
||||
assert.match(html, /onclick="openWorkflowPackageImportModal\(\)"/);
|
||||
assert.match(html, /onclick="exportCurrentWorkflowPackage\(\)"/);
|
||||
assert.match(html, /onclick="[^"]*exportCurrentWorkflowPackage\(\)"/);
|
||||
assert.match(html, /id="workflow-package-import-modal"/);
|
||||
assert.match(html, /id="workflow-package-overwrite-modal"/);
|
||||
assert.equal(zh.workflows.package.importLocal, '导入本地包');
|
||||
|
||||
+15
-15
@@ -227,13 +227,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item" data-page="workflows">
|
||||
<div class="nav-item-content" data-title="图编排" onclick="switchPage('workflows')" data-i18n="nav.workflows" data-i18n-attr="data-title" data-i18n-skip-text="true">
|
||||
<div class="nav-item-content" data-title="工作流" onclick="switchPage('workflows')" data-i18n="nav.workflows" data-i18n-attr="data-title" data-i18n-skip-text="true">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="3" y="3" width="8" height="8" rx="2"/>
|
||||
<path d="M7 11v4a2 2 0 0 0 2 2h4"/>
|
||||
<rect x="13" y="13" width="8" height="8" rx="2"/>
|
||||
</svg>
|
||||
<span data-i18n="nav.workflows">图编排</span>
|
||||
<span data-i18n="nav.workflows">工作流</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-item" data-page="projects">
|
||||
@@ -2614,21 +2614,21 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 图编排页面 -->
|
||||
<!-- 工作流页面 -->
|
||||
<div id="page-workflows" class="page">
|
||||
<div class="page-header">
|
||||
<h2 data-i18n="workflows.title">图编排</h2>
|
||||
<h2 data-i18n="workflows.title">工作流</h2>
|
||||
<div class="page-header-actions">
|
||||
<button class="btn-secondary" onclick="refreshWorkflows()" data-i18n="common.refresh">刷新</button>
|
||||
<button class="btn-secondary" data-require-permission="workflow:write" type="button" onclick="openWorkflowPackageImportModal()" data-i18n="workflows.package.importLocal">导入本地包</button>
|
||||
<button class="btn-primary" onclick="newWorkflowDraft()" data-i18n="workflows.newGraph">新建图</button>
|
||||
<button class="btn-primary" onclick="newWorkflowDraft()" data-i18n="workflows.newGraph">新建工作流</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-content workflow-page-content">
|
||||
<aside class="workflow-sidebar">
|
||||
<div class="workflow-panel">
|
||||
<div class="workflow-panel-header">
|
||||
<h3 data-i18n="workflows.processLibrary">流程库</h3>
|
||||
<h3 data-i18n="workflows.processLibrary">工作流列表</h3>
|
||||
</div>
|
||||
<div id="workflow-list" class="workflow-list">
|
||||
<div class="loading-spinner" data-i18n="common.loading">加载中...</div>
|
||||
@@ -2653,11 +2653,11 @@
|
||||
<section class="workflow-meta-bar">
|
||||
<div class="workflow-canvas-header">
|
||||
<div class="workflow-canvas-heading">
|
||||
<h3 id="workflow-canvas-title" class="workflow-canvas-title" data-i18n="workflows.untitled">未命名流程</h3>
|
||||
<h3 id="workflow-canvas-title" class="workflow-canvas-title" data-i18n="workflows.untitled">未命名工作流</h3>
|
||||
<span id="workflow-canvas-subtitle" class="workflow-canvas-subtitle" hidden></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="workflow-toolbar" role="toolbar" aria-label="流程编辑工具" data-i18n="workflows.toolbarLabel" data-i18n-attr="aria-label" data-i18n-skip-text="true">
|
||||
<div class="workflow-toolbar" role="toolbar" aria-label="工作流编辑工具" data-i18n="workflows.toolbarLabel" data-i18n-attr="aria-label" data-i18n-skip-text="true">
|
||||
<div class="workflow-toolbar-group" role="group" aria-label="画布工具" data-i18n="workflows.canvasTools" data-i18n-attr="aria-label" data-i18n-skip-text="true">
|
||||
<button class="btn-secondary btn-small workflow-toolbar-button" data-require-permission="workflow:write" type="button" onclick="toggleWorkflowConnectMode()" id="workflow-connect-btn" aria-pressed="false">
|
||||
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="2.5"/><circle cx="18" cy="18" r="2.5"/><path d="M8 8l8 8"/></svg>
|
||||
@@ -2685,7 +2685,7 @@
|
||||
<div class="workflow-more-actions-divider" role="separator"></div>
|
||||
<button class="workflow-more-actions-danger" data-require-permission="workflow:delete" type="button" role="menuitem" onclick="closeWorkflowMoreActions(); deleteCurrentWorkflow()">
|
||||
<svg aria-hidden="true" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M9 7V4h6v3m3 0-1 13H7L6 7"/><path d="M10 11v5m4-5v5"/></svg>
|
||||
<span data-i18n="workflows.deleteWorkflow">删除流程</span>
|
||||
<span data-i18n="workflows.deleteWorkflow">删除工作流</span>
|
||||
</button>
|
||||
</div>
|
||||
</details>
|
||||
@@ -4882,11 +4882,11 @@
|
||||
window.ELK = elk;
|
||||
}
|
||||
</script>
|
||||
<!-- 图编排流程信息 -->
|
||||
<!-- 工作流信息 -->
|
||||
<div id="workflow-meta-modal" class="modal" style="display: none;">
|
||||
<div class="modal-content workflow-meta-modal-content">
|
||||
<div class="modal-header workflow-meta-modal-header">
|
||||
<h2 data-i18n="workflows.metaModalTitle">流程信息</h2>
|
||||
<h2 data-i18n="workflows.metaModalTitle">工作流信息</h2>
|
||||
<span class="modal-close" onclick="closeWorkflowMetaModal()">×</span>
|
||||
</div>
|
||||
<div class="modal-body workflow-meta-modal-body">
|
||||
@@ -5670,14 +5670,14 @@
|
||||
<small class="form-hint" data-i18n="roleModal.userPromptHint">此提示词会追加到用户消息前,用于指导AI的行为。注意:这不会修改系统提示词。</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="role-workflow-id" data-i18n="roleModal.bindWorkflow">绑定图编排流程</label>
|
||||
<label for="role-workflow-id" data-i18n="roleModal.bindWorkflow">绑定工作流</label>
|
||||
<select id="role-workflow-id" class="role-form-select-native">
|
||||
<option value="" data-i18n="roleModal.noWorkflowBind">不绑定流程</option>
|
||||
<option value="" data-i18n="roleModal.noWorkflowBind">不绑定工作流</option>
|
||||
</select>
|
||||
<small class="form-hint" data-i18n="roleModal.bindWorkflowHint">选中流程后,对话页使用该角色会自动触发绑定图;流程字段由图定义 JSON 自由配置。</small>
|
||||
<small class="form-hint" data-i18n="roleModal.bindWorkflowHint">选中工作流后,对话页使用该角色会自动触发;工作流字段由图定义 JSON 自由配置。</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="role-workflow-policy" data-i18n="roleModal.workflowPolicy">流程触发策略</label>
|
||||
<label for="role-workflow-policy" data-i18n="roleModal.workflowPolicy">工作流触发策略</label>
|
||||
<select id="role-workflow-policy" class="role-form-select-native">
|
||||
<option value="auto" data-i18n="roleModal.workflowPolicyAuto">自动触发</option>
|
||||
<option value="off" data-i18n="roleModal.workflowPolicyOff">关闭</option>
|
||||
|
||||
Reference in New Issue
Block a user