{ "lang": { "zhCN": "中文", "enUS": "English" }, "common": { "ok": "OK", "cancel": "Cancel", "refresh": "Refresh", "close": "Close", "edit": "Edit", "delete": "Delete", "save": "Save", "loading": "Loading…", "search": "Search", "clearSearch": "Clear search", "noData": "No data", "confirm": "Confirm", "copy": "Copy", "copied": "Copied", "copyFailed": "Copy failed", "view": "View", "actions": "Actions" }, "header": { "title": "CyberStrikeAI", "apiDocs": "API Docs", "github": "GitHub", "logout": "Sign out", "language": "Interface language", "backToDashboard": "Back to dashboard", "userMenu": "User menu", "version": "Current version", "toggleSidebar": "Collapse/expand sidebar" }, "login": { "title": "Sign in to CyberStrikeAI", "subtitle": "Enter the access password from config", "passwordLabel": "Password", "passwordPlaceholder": "Enter password", "submit": "Sign in" }, "nav": { "dashboard": "Dashboard", "chat": "Chat", "infoCollect": "Recon", "tasks": "Tasks", "vulnerabilities": "Vulnerabilities", "webshell": "WebShell Management", "chatFiles": "File Management", "mcp": "MCP", "mcpMonitor": "MCP Monitor", "mcpManagement": "MCP Management", "knowledge": "Knowledge", "knowledgeRetrievalLogs": "Retrieval history", "knowledgeManagement": "Knowledge Management", "skills": "Skills", "skillsMonitor": "Skills monitor", "skillsManagement": "Skills Management", "agents": "Agents", "agentsManagement": "Agent management", "roles": "Roles", "rolesManagement": "Roles Management", "settings": "System settings" }, "dashboard": { "title": "Dashboard", "refresh": "Refresh", "refreshData": "Refresh data", "runningTasks": "Running tasks", "vulnTotal": "Total vulnerabilities", "toolCalls": "Tool invocations", "successRate": "Tool success rate", "clickToViewTasks": "Click to view tasks", "clickToViewVuln": "Click to view vulnerabilities", "clickToViewMCP": "Click to view MCP monitor", "severityDistribution": "Vulnerability severity distribution", "severityCritical": "Critical", "severityHigh": "High", "severityMedium": "Medium", "severityLow": "Low", "severityInfo": "Info", "runOverview": "Run overview", "batchQueues": "Batch task queues", "pending": "Pending", "executing": "Running", "completed": "Completed", "toolInvocations": "Tool invocations", "callsUnit": "calls", "toolsUnit": "tools", "knowledgeLabel": "Knowledge", "knowledgeItems": "items", "categoriesUnit": "categories", "skillsLabel": "Skills", "skillUnit": "Skills", "quickLinks": "Quick links", "toolsExecCount": "Tool execution count", "ctaTitle": "Start your security journey", "ctaSub": "Describe your target in chat, AI will assist with scanning and vulnerability analysis", "goToChat": "Go to chat", "noTasks": "No tasks", "totalCount": "{{count}} total", "notEnabled": "Disabled", "enabled": "Enabled", "toConfigure": "To configure", "toUse": "To use", "active": "Active", "highFreq": "High frequency", "noCallData": "No call data" }, "chat": { "newChat": "New chat", "toggleConversationPanel": "Collapse/expand conversation list", "searchHistory": "Search history...", "conversationGroups": "Conversation groups", "addGroup": "New group", "recentConversations": "Recent conversations", "batchManage": "Batch manage", "attackChain": "Attack chain", "viewAttackChain": "View attack chain", "selectRole": "Select role", "defaultRole": "Default", "inputPlaceholder": "Enter target or command... (type @ to select tools | Shift+Enter newline, Enter send)", "selectFile": "Select file", "uploadFile": "Upload file (multi-select or drag & drop)", "readingAttachmentsDetail": "Reading attachment {{current}}/{{total}} · {{name}} · {{percent}}%", "uploadingAttachmentsDetail": "Uploading attachments · {{done}}/{{total}} done · {{percent}}% overall", "waitingAttachmentsUpload": "Waiting for attachments to finish uploading…", "attachmentsUploadIncomplete": "Some attachments failed to upload. Remove the failed items or pick files again before sending.", "attachmentUploading": "Uploading…", "attachmentUploadFailed": "Failed", "attachmentUploadAlert": "Upload failed: {{name}}", "send": "Send", "searchInGroup": "Search in group...", "loadingTools": "Loading tools...", "noMatchTools": "No matching tools", "penetrationTestDetail": "Penetration test details", "expandDetail": "Expand details", "noProcessDetail": "No process details (execution may be too fast or no detailed events)", "copyMessageTitle": "Copy message", "deleteTurnTitle": "Delete this turn", "deleteTurnConfirm": "Delete this entire turn (user message and assistant reply)? This cannot be undone. The next reply will use only the remaining messages; saved context snapshots will be cleared.", "deleteTurnFailed": "Failed to delete turn", "emptyGroupConversations": "This group has no conversations yet.", "noMatchingConversationsInGroup": "No matching conversations found.", "noHistoryConversations": "No conversation history yet", "renameGroupPrompt": "Please enter new name:", "deleteGroupConfirm": "Are you sure you want to delete this group? Conversations in the group will not be deleted, but will be removed from the group.", "deleteConversationConfirm": "Are you sure you want to delete this conversation?", "renameFailed": "Rename failed", "downloadConversationFailed": "Failed to download conversation", "viewAttackChainSelectConv": "Please select a conversation to view attack chain", "viewAttackChainCurrentConv": "View attack chain of current conversation", "executeFailed": "Execution failed", "callOpenAIFailed": "Call OpenAI failed", "systemReadyMessage": "System is ready. Please enter your test requirements, and the system will automatically perform the corresponding security tests.", "addNewGroup": "+ New group", "callNumber": "Call #{{n}}", "iterationRound": "Iteration {{n}}", "einoOrchestratorRound": "Orchestrator · round {{n}}", "einoSubAgentStep": "Sub-agent {{agent}} · step {{n}}", "aiThinking": "AI thinking", "planning": "Planning", "toolCallsDetected": "Detected {{count}} tool call(s)", "callTool": "Call tool: {{name}} ({{index}}/{{total}})", "toolExecComplete": "Tool {{name}} completed", "toolExecFailed": "Tool {{name}} failed", "knowledgeRetrieval": "Knowledge retrieval", "knowledgeRetrievalTag": "Knowledge retrieval", "error": "Error", "streamNetworkErrorHint": "Connection lost ({{detail}}). A long task may still be running on the server; check running tasks at the top or refresh this conversation later.", "taskCancelled": "Task cancelled", "unknownTool": "Unknown tool", "einoAgentReplyTitle": "Sub-agent reply", "einoRecoveryTitle": "🔄 Invalid tool JSON · run {{n}}/{{max}} (hint appended)", "noDescription": "No description", "noResponseData": "No response data", "loading": "Loading...", "loadFailed": "Load failed: {{message}}", "noAttackChainData": "No attack chain data", "copyFailedManual": "Copy failed, please select and copy manually", "searching": "Searching...", "loadFailedRetry": "Load failed, please retry", "dataFormatError": "Data format error", "progressInProgress": "Penetration test in progress...", "executionFailed": "Execution failed", "penetrationTestComplete": "Penetration test complete", "yesterday": "Yesterday", "agentModeSelectAria": "Choose single-agent or multi-agent", "agentModePanelTitle": "Conversation mode", "agentModeSingle": "Single-agent", "agentModeMulti": "Multi-agent", "agentModeSingleHint": "Single-model ReAct loop for chat and tool use", "agentModeMultiHint": "Eino DeepAgent with sub-agents for complex tasks" }, "progress": { "callingAI": "Calling AI model...", "callingTool": "Calling tool: {{name}}", "lastIterSummary": "Last iteration: generating summary and next steps...", "summaryDone": "Summary complete", "generatingFinalReply": "Generating final reply...", "maxIterSummary": "Max iterations reached, generating summary...", "analyzingRequestShort": "Analyzing your request...", "analyzingRequestPlanning": "Analyzing your request and planning test strategy...", "startingEinoDeepAgent": "Starting Eino DeepAgent...", "einoAgent": "Eino agent: {{name}}" }, "timeline": { "params": "Parameters:", "executionResult": "Execution result:", "executionId": "Execution ID:", "noResult": "No result", "running": "Running...", "completed": "Completed", "execFailed": "Execution failed" }, "tasks": { "title": "Task Management", "stopTask": "Stop task", "collapseDetail": "Collapse details", "newTask": "New task", "autoRefresh": "Auto refresh", "historyHint": "Tip: Completed task history available. Check \"Show history\" to view.", "statusRunning": "Running", "statusCancelling": "Cancelling", "statusFailed": "Failed", "statusTimeout": "Timeout", "statusCancelled": "Cancelled", "statusCompleted": "Completed", "historyBadge": "History", "duration": "Duration", "completedAt": "Completed at", "startedAt": "Started at", "clickToCopy": "Click to copy", "unnamedTask": "Unnamed task", "unknown": "Unknown", "unknownTime": "Unknown time", "clearHistoryConfirm": "Clear all task history?", "cancelTaskFailed": "Cancel task failed", "cancelFailed": "Cancel failed", "taskInfoNotSynced": "Task info not synced yet, please try again later.", "loadActiveTasksFailed": "Failed to load active tasks", "cannotGetTaskStatus": "Cannot get task status", "copiedToast": "Copied!", "cancelling": "Cancelling...", "enterTaskPrompt": "Enter at least one task", "noValidTask": "No valid tasks", "createBatchQueueFailed": "Failed to create batch task queue", "noBatchQueues": "Currently there are no batch task queues", "recentCompletedTasks": "Recently completed tasks (last 24 hours)", "clearHistory": "Clear history", "cancelTask": "Cancel task", "viewConversation": "View conversation", "conversationIdLabel": "Conversation ID", "statusPending": "Pending", "statusPaused": "Paused", "statusCronCycleIdle": "Round done · scheduled loop", "statusCronRunning": "Running · cron queue", "cronNextRunLine": "Next run: {{time}}", "cronRoundDoneProgressHint": "Cron queue: subtasks finished; next round starts on schedule", "cronRunningProgressHint": "This round is running; the next full cycle follows Cron / next run time", "cronPendingScheduled": "Cron scheduled · next {{time}}", "cronPendingProgressNote": "Will start on schedule, or click Start to run a round now", "cronRecurringCallout": "Cron queues start a new round at each scheduled time. Turn off \"Allow Cron auto-run\" to stop looping.", "confirmCancelTasks": "Cancel {{n}} selected task(s)?", "batchCancelResultPartial": "Batch cancel: {{success}} succeeded, {{fail}} failed", "batchCancelResultSuccess": "Successfully cancelled {{n}} task(s)", "taskCount": "{{count}} task(s)", "queueIdLabel": "Queue ID", "createdTimeLabel": "Created at", "totalLabel": "Total", "pendingLabel": "Pending", "runningLabel": "Running", "completedLabel": "Completed", "failedLabel": "Failed", "cancelledLabel": "Cancelled", "loadingTasks": "Loading...", "loadFailedRetry": "Load failed", "loadTaskListFailed": "Failed to load task list", "getQueueDetailFailed": "Failed to load queue details", "startBatchQueueFailed": "Failed to start batch queue", "pauseQueueFailed": "Failed to pause queue", "pauseQueueConfirm": "Pause this batch queue? The current task will be stopped; remaining tasks will stay pending.", "deleteQueueConfirm": "Delete this batch queue? This cannot be undone.", "deleteQueueFailed": "Failed to delete batch queue", "batchQueueTitle": "Batch task queue", "batchQueueUntitled": "Untitled queue", "resumeExecute": "Resume", "taskIncomplete": "Task information incomplete", "cannotGetTaskMessageInput": "Cannot get task message input", "taskMessageRequired": "Task message is required", "saveTaskFailed": "Failed to save task", "queueInfoMissing": "Queue information not found", "addTaskFailed": "Failed to add task", "confirmDeleteTask": "Delete this task?\n\nTask: {{message}}\n\nThis cannot be undone.", "deleteTaskFailed": "Failed to delete task", "paginationShow": "Show {{start}}-{{end}} of {{total}} records", "paginationPerPage": "Per page", "paginationFirst": "First", "paginationPrev": "Previous", "paginationNext": "Next", "paginationLast": "Last", "paginationPage": "Page {{current}} / {{total}}", "deleteQueue": "Delete queue", "retry": "Retry", "noMatchingTasks": "No matching tasks", "updateTaskFailed": "Failed to update task", "durationSeconds": "s", "durationMinutes": "m", "durationHours": "h" }, "infoCollect": { "enterFofaQuery": "Enter FOFA query syntax", "querying": "Querying...", "queryFailed": "Query failed", "enterNaturalLanguage": "Enter natural language description", "cancelParse": "Cancel parse", "clickToCancelParse": "Click to cancel AI parse", "parseToFofa": "Parse natural language to FOFA query", "parseResultEmpty": "Parse result empty: Please add/modify FOFA query in popup", "queryPlaceholder": "e.g. app=\"Apache\" && country=\"CN\"", "selectAll": "Select all/none", "selectRow": "Select row", "copyTarget": "Copy target", "sendToChat": "Send to chat (editable; Ctrl/Cmd+click to send directly)", "noTargetToCopy": "No target to copy", "targetCopied": "Target copied", "manualCopyHint": "Copy failed, please copy manually: ", "cannotInferTarget": "Cannot infer scan target from row (include host/ip/port/domain in fields)", "noSendMessage": "sendMessage() not found, please refresh and retry", "filledToInput": "Filled to chat input, edit and send", "noExportResult": "No results to export", "xlsxNotLoaded": "XLSX library not loaded, please refresh and retry", "noResults": "No results", "selectRowsFirst": "Select rows to scan first", "noScanTarget": "No scan targets inferred from selection (include host/ip/port/domain in fields)", "batchScanFailed": "Batch scan failed", "batchQueueCreated": "Batch scan queue created", "field": "Field", "parsePending": "AI parsing...", "parsePendingClickCancel": "AI parsing... (click button to cancel)", "parseSlow": "AI parse is taking a while, still processing…", "parseDone": "AI parse complete", "parseCancelled": "AI parse cancelled", "parseFailed": "AI parse failed: ", "parseResultTitle": "AI parse result", "naturalLanguageLabel": "Natural language", "fofaQueryEditable": "FOFA query (editable)", "confirmBeforeQuery": "Confirm syntax and scope before running the query.", "reminder": "Reminder", "explanation": "Explanation", "actions": "Actions", "batchScanTitle": "FOFA batch scan", "queueCreatedSkipped": "Queue created ({{n}} rows skipped, no target)", "createQueueFailed": "Failed to create batch queue", "loading": "Loading...", "none": "None", "truncated": "truncated", "resultsMeta": "Total {{total}} · This page {{count}} · page={{page}} · size={{size}}", "parseModalCancel": "Cancel", "parseModalApply": "Fill into query", "parseModalApplyRun": "Fill and query" }, "vulnerability": { "title": "Vulnerability Management", "addVuln": "Add vulnerability", "editVuln": "Edit vulnerability", "loadFailed": "Failed to load vulnerabilities", "deleteConfirm": "Delete this vulnerability?" }, "webshell": { "title": "WebShell Management", "addConnection": "Add connection", "connections": "Connections", "noConnections": "No connections. Click \"Add connection\" to add one.", "selectOrAdd": "Select a connection from the list or add a new WebShell connection.", "url": "Shell URL", "urlPlaceholder": "http(s)://target.com/shell.php", "password": "Password / Key", "passwordPlaceholder": "e.g. IceSword/AntSword connection password", "method": "Request method", "methodPost": "POST", "methodGet": "GET", "type": "Shell type", "typePhp": "PHP", "typeAsp": "ASP", "typeAspx": "ASPX", "typeJsp": "JSP", "typeCustom": "Custom", "cmdParam": "Command parameter name", "cmdParamPlaceholder": "Leave empty for cmd; e.g. xxx for xxx=command", "remark": "Remark", "remarkPlaceholder": "Friendly name for this connection", "deleteConfirm": "Delete this connection?", "editConnection": "Edit", "editConnectionTitle": "Edit connection", "tabTerminal": "Virtual terminal", "tabFileManager": "File manager", "tabAiAssistant": "AI Assistant", "tabDbManager": "Database Manager", "tabMemo": "Memo", "dbType": "Database type", "dbHost": "Host", "dbPort": "Port", "dbUsername": "Username", "dbPassword": "Password", "dbName": "Database name", "dbSqlitePath": "SQLite file path", "dbSqlPlaceholder": "Enter SQL, e.g. SELECT version();", "dbRunSql": "Run SQL", "dbTest": "Test connection", "dbOutput": "Output", "dbNoConn": "Please select a WebShell connection first", "dbSqlRequired": "Please enter SQL", "dbRunning": "Database command is running, please wait", "dbCliHint": "If command not found appears, install mysql/psql/sqlite3/sqlcmd on the target host first", "dbExecFailed": "Database execution failed", "dbSchema": "Database Schema", "dbLoadSchema": "Load Schema", "dbNoSchema": "No schema yet, click Load Schema", "dbSelectTableHint": "Click a table to expand columns and generate SQL", "dbNoColumns": "No column details", "dbResultTable": "Result Table", "dbClearSql": "Clear SQL", "dbTemplateSql": "SQL Template", "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?", "dbProfileNamePrompt": "Enter profile name", "dbProfiles": "Database connections", "aiSystemReadyMessage": "System is ready. Please enter your test requirements, and the system will automatically perform the corresponding security tests.", "aiNewConversation": "New conversation", "aiPreviousConversation": "Previous conversation", "aiDeleteConversation": "Delete conversation", "aiDeleteConversationConfirm": "Delete this conversation?", "aiPlaceholder": "e.g. List files in the current directory", "aiSend": "Send", "aiMemo": "Memo", "aiMemoPlaceholder": "Save key commands, testing ideas, and repro steps...", "aiMemoClear": "Clear", "aiMemoSaving": "Saving...", "aiMemoSaved": "Saved locally", "quickCommands": "Quick commands", "downloadFile": "Download", "terminalWelcome": "WebShell virtual terminal — type a command and press Enter (Ctrl+L clear)", "filePath": "Current path", "listDir": "List directory", "readFile": "Read", "editFile": "Edit", "deleteFile": "Delete", "saveFile": "Save", "cancelEdit": "Cancel", "parentDir": "Parent directory", "execError": "Execution failed", "testConnectivity": "Test connectivity", "testSuccess": "Connection OK, shell is reachable", "testFailed": "Connectivity test failed", "testNoExpectedOutput": "Shell responded but expected output was not found. Check password and command parameter name.", "clearScreen": "Clear", "copyTerminalLog": "Copy log", "terminalIdle": "Idle", "terminalRunning": "Running", "terminalCopyOk": "Log copied", "terminalCopyFail": "Copy failed", "terminalNewWindow": "New terminal", "terminalWindowPrefix": "Terminal", "running": "Running…", "waitFinish": "Please wait for the current command to finish", "newDir": "New directory", "rename": "Rename", "upload": "Upload", "newFile": "New file", "filterPlaceholder": "Filter by name", "batchDelete": "Batch delete", "batchDownload": "Batch download", "refresh": "Refresh", "selectAll": "Select all", "searchPlaceholder": "Search connections...", "noMatchConnections": "No matching connections", "breadcrumbHome": "Root", "dirTree": "Directory tree", "back": "Back", "moreActions": "More actions", "batchProbe": "Batch probe", "probeRunning": "Probing", "probeOnline": "Online", "probeOffline": "Offline", "probeNoConnections": "No connections to probe", "colModifiedAt": "Modified", "colPerms": "Permissions", "colOwner": "Owner", "colGroup": "Group", "colType": "Type" }, "mcp": { "monitorTitle": "MCP Status Monitor", "execStats": "Execution stats", "latestExecutions": "Latest executions", "toolSearch": "Tool search", "toolSearchPlaceholder": "Enter tool name...", "statusFilter": "Status filter", "filterAll": "All", "filterEnabled": "Enabled", "filterDisabled": "Disabled", "selectedCount": "{{count}} selected", "selectAll": "Select all", "deselectAll": "Deselect all", "deleteSelected": "Batch delete", "deleteExecConfirm": "Delete this execution record?", "batchDeleteFailed": "Batch delete failed", "managementTitle": "MCP Management", "addExternal": "Add external MCP", "toolConfig": "MCP tool config", "saveToolConfig": "Save tool config", "externalConfig": "External MCP config", "loadingTools": "Loading tools...", "loadToolsTimeout": "Tools load timeout. External MCP may be slow. Click Refresh to retry or check connection.", "loadToolsFailed": "Failed to load tools", "noTools": "No tools", "externalBadge": "External", "externalFrom": "External ({{name}})", "externalToolFrom": "External MCP - Source: {{name}}", "noDescription": "No description", "paginationInfo": "{{start}}-{{end}} of {{total}} tools", "perPage": "Per page:", "firstPage": "First", "prevPage": "Previous", "nextPage": "Next", "lastPage": "Last", "pageInfo": "Page {{page}} of {{total}}", "currentPageEnabled": "Enabled on current page", "totalEnabled": "Total enabled", "toolsConfigSaved": "Tool configuration saved!", "saveToolsConfigFailed": "Failed to save tool config", "getConfigFailed": "Failed to get config", "noExternalMCP": "No external MCP configured", "clickToAddExternal": "Click \"Add external MCP\" to configure", "connected": "Connected", "connecting": "Connecting...", "connectionFailed": "Connection failed", "disabled": "Disabled", "disconnected": "Disconnected", "stopConnection": "Stop connection", "startConnection": "Start connection", "stop": "Stop", "start": "Start", "editConfig": "Edit config", "deleteConfig": "Delete config", "transportMode": "Transport", "toolCount": "Tool count", "description": "Description", "timeout": "Timeout", "command": "Command", "addExternalMCP": "Add external MCP", "editExternalMCP": "Edit external MCP", "jsonEmpty": "JSON cannot be empty", "jsonError": "JSON format error", "configMustBeObject": "Config error: Must be JSON object with name as key", "configNeedOne": "Config error: At least one config item required", "configNameEmpty": "Config error: Name cannot be empty", "configMustBeObj": "Config error: \"{{name}}\" must be object", "configNeedCommand": "Config error: \"{{name}}\" needs command (stdio) or url (http/sse)", "configStdioNeedCommand": "Config error: \"{{name}}\" stdio mode needs command", "configHttpNeedUrl": "Config error: \"{{name}}\" http mode needs url", "configSseNeedUrl": "Config error: \"{{name}}\" sse mode needs url", "configEditMustContainName": "Config error: In edit mode, JSON must contain config name \"{{name}}\"", "saveSuccess": "Saved", "deleteSuccess": "Deleted", "deleteExternalConfirm": "Delete external MCP \"{{name}}\"?", "operationFailed": "Operation failed", "connectionFailedCheck": "Connection failed. Check config and network.", "connectionTimeout": "Connection timeout. Check config and network.", "totalCount": "Total", "enabledCount": "Enabled", "disabledCount": "Disabled", "connectedCount": "Connected", "toolsCountValue": "🔧 {{count}} tools", "connectionErrorLabel": "Connection error:", "secondsUnit": "s", "urlLabel": "URL", "loadExternalMCPFailed": "Load failed" }, "settings": { "title": "System settings", "nav": { "basic": "Basic", "knowledge": "Knowledge base", "robots": "Bots", "terminal": "Terminal", "security": "Security" }, "knowledge": { "title": "Knowledge base" }, "robots": { "title": "Bot settings", "description": "Configure WeCom, DingTalk and Lark bots so you can chat with CyberStrikeAI on your phone without opening the web UI.", "wecom": { "title": "WeCom", "enabled": "Enable WeCom bot", "token": "Token", "tokenPlaceholder": "Token", "encodingAesKey": "EncodingAESKey", "encodingAesKeyPlaceholder": "EncodingAESKey (leave empty for plain mode)", "corpId": "CorpID", "corpIdPlaceholder": "Corp ID", "secret": "Secret", "secretPlaceholder": "App Secret", "agentId": "AgentID", "agentIdPlaceholder": "App AgentId" }, "dingtalk": { "title": "DingTalk", "enabled": "Enable DingTalk bot", "clientIdLabel": "Client ID (AppKey)", "clientIdPlaceholder": "DingTalk App Key", "clientSecretLabel": "Client Secret", "clientSecretPlaceholder": "DingTalk App Secret", "streamHint": "Enable bot capability and configure streaming access in the open platform." }, "lark": { "title": "Lark", "enabled": "Enable Lark bot", "appIdLabel": "App ID", "appIdPlaceholder": "Lark/Feishu App ID", "appSecretLabel": "App Secret", "appSecretPlaceholder": "Lark/Feishu App Secret", "verifyTokenLabel": "Verify Token (Optional)", "verifyTokenPlaceholder": "Event subscription Verification Token" } }, "apply": { "button": "Apply configuration", "loadFailed": "Failed to load configuration", "fillRequired": "Please fill in all required fields (marked with *)", "applyFailed": "Failed to apply configuration", "applySuccess": "Configuration applied successfully!" }, "security": { "changePassword": "Change password", "fillPasswordHint": "Fill current and new password correctly. New password at least 8 characters, must match twice.", "changePasswordFailed": "Failed to change password", "passwordUpdated": "Password updated. Please sign in again with new password." } }, "auth": { "sessionExpired": "Session expired, please sign in again", "unauthorized": "Unauthorized", "enterPassword": "Please enter password", "loginFailedCheck": "Sign-in failed, please check the password", "loginFailedRetry": "Sign-in failed, please try again later", "loggedOut": "Signed out" }, "knowledge": { "title": "Knowledge Management", "retrievalLogs": "Retrieval history", "totalItems": "Total items", "categories": "Categories", "addKnowledge": "Add knowledge", "rebuildIndex": "Rebuild index", "rebuildIndexConfirm": "Rebuild index?", "deleteItemConfirm": "Delete this knowledge item?", "notEnabledTitle": "Knowledge base function not enabled", "notEnabledHint": "Please go to system settings to enable knowledge retrieval.", "goToSettings": "Go to settings" }, "roles": { "title": "Role Management", "createRole": "Create role", "searchPlaceholder": "Search roles...", "deleteConfirm": "Delete this role?", "loadFailed": "Failed to load roles", "noDescription": "No description", "defaultRoleDescription": "Default role, no extra user prompt, uses default MCP", "noMatchingRoles": "No matching roles", "noRoles": "No roles", "enabled": "Enabled", "disabled": "Disabled", "noDescriptionShort": "No description" }, "skills": { "title": "Skills Management", "monitorTitle": "Skills monitor", "createSkill": "Create Skill", "callStats": "Call stats", "addSkill": "Add Skill", "editSkill": "Edit Skill", "loadListFailed": "Failed to load skills list", "noSkills": "No skills. Click \"Create Skill\" to add first.", "noMatch": "No matching skills", "searchFailed": "Search failed", "refreshed": "Refreshed", "loadDetailFailed": "Failed to load skill details", "viewFailed": "Failed to view skill", "saving": "Saving...", "saveFailed": "Failed to save skill", "deleteFailed": "Failed to delete skill", "loadStatsFailed": "Failed to load skills monitor data", "clearStatsConfirm": "Clear all Skills statistics? This cannot be undone.", "statsCleared": "Skills statistics cleared", "clearStatsFailed": "Failed to clear statistics", "noDescription": "No description", "viewSkillTitle": "View Skill: {{name}}", "descriptionLabel": "Description:", "pathLabel": "Path:", "modTimeLabel": "Modified:", "contentLabel": "Content:", "nameRequired": "Skill name is required", "contentRequired": "Skill content is required", "nameInvalid": "Skill name can only contain letters, numbers, hyphens and underscores", "saveSuccess": "Skill updated", "createdSuccess": "Skill created", "deleteConfirm": "Are you sure you want to delete skill \"{{name}}\"? This cannot be undone.", "deleteConfirmWithRoles": "Are you sure you want to delete skill \"{{name}}\"?\n\n⚠️ This skill is currently bound to {{count}} role(s):\n{{roles}}\n\nAfter deletion, the system will automatically remove this skill from those roles.\n\nThis cannot be undone. Continue?", "deleteSuccess": "Skill deleted", "deleteSuccessWithRoles": "Skill deleted and automatically removed from {{count}} role(s): {{roles}}", "loadFailedShort": "Load failed", "totalSkillsCount": "Total Skills", "totalCallsCount": "Total Call Count", "successfulCalls": "Successful Calls", "failedCalls": "Failed Calls", "successRate": "Success Rate", "skillName": "Skill Name", "totalCalls": "Total Calls", "success": "Success", "failure": "Failure", "lastCallTime": "Last Call Time", "noCallRecords": "No Skills call records yet", "loadStatsErrorShort": "Failed to load statistics", "loadCallStatsError": "Failed to load call statistics" }, "apiDocs": { "pageTitle": "API Docs - CyberStrikeAI", "title": "API Docs", "subtitle": "CyberStrikeAI platform API documentation with online testing", "authTitle": "API Authentication", "authAllNeedToken": "All API endpoints require Token authentication.", "authGetToken": "1. Get Token:", "authGetTokenDesc": "After logging in on the frontend, the Token is saved automatically. You can also get it via:", "authUseToken": "2. Use Token:", "authUseTokenDesc": "Add the Authorization header:", "authTip": "💡 This page will use your logged-in Token automatically; no need to fill it manually.", "tokenDetected": "✓ Token detected - You can test API endpoints directly", "tokenNotDetected": "⚠ No Token detected - Please log in on the frontend first, then refresh this page. When testing, add Authorization: Bearer token in the request header", "sidebarGroupTitle": "API Groups", "allApis": "All APIs", "loading": "Loading...", "loadingDesc": "Loading API documentation", "errorLoginRequired": "Login required to view API docs. Please log in on the frontend first, then refresh this page.", "errorLoadSpec": "Failed to load API spec: ", "errorLoadFailed": "Failed to load API docs: ", "errorSpecInvalid": "Invalid API spec format", "loadFailed": "Load failed", "backToLogin": "Back to login", "noApis": "No APIs", "noEndpointsInGroup": "No API endpoints in this group", "sectionDescription": "Description", "viewDetailDesc": "View details", "hideDetailDesc": "Hide details", "noDescription": "No description", "sectionParams": "Parameters", "paramName": "Parameter", "type": "Type", "description": "Description", "required": "Required", "optional": "Optional", "sectionRequestBody": "Request body", "example": "Example", "exampleJson": "Example JSON:", "sectionResponse": "Response", "testSection": "Test", "requestBodyJson": "Request body (JSON)", "queryParams": "Query parameters:", "sendRequest": "Send request", "copyCurl": "Copy cURL", "clearResult": "Clear result", "copyCurlTitle": "Copy cURL command", "clearResultTitle": "Clear test result", "sendingRequest": "Sending request...", "errorPathParamRequired": "Path parameter {{name}} is required", "errorQueryParamRequired": "Query parameter {{name}} is required", "errorTokenRequired": "No Token detected. Please log in on the frontend and refresh, or add Authorization: Bearer your_token in the request header", "errorJsonInvalid": "Invalid request body JSON: ", "requestFailed": "Request failed: ", "copied": "Copied", "curlCopied": "curl command copied to clipboard!", "copyFailedManual": "Copy failed, please copy manually:\n\n", "curlGenFailed": "Failed to generate cURL command: ", "requestBodyPlaceholder": "Enter request body in JSON format", "tags": { "auth": "Authentication", "conversationManagement": "Conversation Management", "conversationInteraction": "Conversation Interaction", "batchTasks": "Batch Tasks", "conversationGroups": "Conversation Groups", "vulnerabilityManagement": "Vulnerability Management", "roleManagement": "Role Management", "skillsManagement": "Skills Management", "monitoring": "Monitoring", "configManagement": "Configuration Management", "externalMCPManagement": "External MCP Management", "attackChain": "Attack Chain", "knowledgeBase": "Knowledge Base", "mcp": "MCP" }, "summary": { "login": "User login", "logout": "User logout", "changePassword": "Change password", "validateToken": "Validate Token", "createConversation": "Create conversation", "listConversations": "List conversations", "getConversationDetail": "Get conversation detail", "updateConversation": "Update conversation", "deleteConversation": "Delete conversation", "getConversationResult": "Get conversation result", "sendMessageNonStream": "Send message and get AI reply (non-stream)", "sendMessageStream": "Send message and get AI reply (stream)", "cancelTask": "Cancel task", "listRunningTasks": "List running tasks", "listCompletedTasks": "List completed tasks", "createBatchQueue": "Create batch task queue", "listBatchQueues": "List batch task queues", "getBatchQueue": "Get batch task queue", "deleteBatchQueue": "Delete batch task queue", "startBatchQueue": "Start batch task queue", "pauseBatchQueue": "Pause batch task queue", "addTaskToQueue": "Add task to queue", "sqlInjectionScan": "SQL injection scan", "portScan": "Port scan", "updateBatchTask": "Update batch task", "deleteBatchTask": "Delete batch task", "createGroup": "Create group", "listGroups": "List groups", "getGroup": "Get group", "updateGroup": "Update group", "deleteGroup": "Delete group", "getGroupConversations": "Get conversations in group", "addConversationToGroup": "Add conversation to group", "removeConversationFromGroup": "Remove conversation from group", "listVulnerabilities": "List vulnerabilities", "createVulnerability": "Create vulnerability", "getVulnerabilityStats": "Get vulnerability statistics", "getVulnerability": "Get vulnerability", "updateVulnerability": "Update vulnerability", "deleteVulnerability": "Delete vulnerability", "listRoles": "List roles", "createRole": "Create role", "getRole": "Get role", "updateRole": "Update role", "deleteRole": "Delete role", "getAvailableSkills": "Get available Skills list", "listSkills": "List Skills", "createSkill": "Create Skill", "getSkillStats": "Get Skill statistics", "clearSkillStats": "Clear Skill statistics", "getSkill": "Get Skill", "updateSkill": "Update Skill", "deleteSkill": "Delete Skill", "getBoundRoles": "Get bound roles", "clearSkillStatsAlt": "Clear Skill statistics", "getMonitorInfo": "Get monitoring info", "getExecutionRecords": "Get execution records", "deleteExecutionRecord": "Delete execution record", "batchDeleteExecutionRecords": "Batch delete execution records", "getStats": "Get statistics", "getConfig": "Get configuration", "updateConfig": "Update configuration", "getToolConfig": "Get tool configuration", "applyConfig": "Apply configuration", "listExternalMCP": "List external MCP", "getExternalMCPStats": "Get external MCP statistics", "getExternalMCP": "Get external MCP", "addOrUpdateExternalMCP": "Add or update external MCP", "stdioModeConfig": "stdio mode config", "sseModeConfig": "SSE mode config", "deleteExternalMCP": "Delete external MCP", "startExternalMCP": "Start external MCP", "stopExternalMCP": "Stop external MCP", "getAttackChain": "Get attack chain", "regenerateAttackChain": "Regenerate attack chain", "pinConversation": "Pin conversation", "pinGroup": "Pin group", "pinGroupConversation": "Pin conversation in group", "getCategories": "Get categories", "listKnowledgeItems": "List knowledge items", "createKnowledgeItem": "Create knowledge item", "getKnowledgeItem": "Get knowledge item", "updateKnowledgeItem": "Update knowledge item", "deleteKnowledgeItem": "Delete knowledge item", "getIndexStatus": "Get index status", "rebuildIndex": "Rebuild index", "scanKnowledgeBase": "Scan knowledge base", "searchKnowledgeBase": "Search knowledge base", "basicSearch": "Basic search", "searchByRiskType": "Search by risk type", "getRetrievalLogs": "Get retrieval logs", "deleteRetrievalLog": "Delete retrieval log", "mcpEndpoint": "MCP endpoint", "listAllTools": "List all tools", "invokeTool": "Invoke tool", "initConnection": "Initialize connection", "successResponse": "Success response", "errorResponse": "Error response" }, "response": { "getSuccess": "Success", "unauthorized": "Unauthorized", "unauthorizedToken": "Unauthorized, valid Token required", "createSuccess": "Created successfully", "badRequest": "Bad request", "conversationNotFound": "Conversation not found", "conversationOrResultNotFound": "Conversation or result not found", "badRequestTaskEmpty": "Bad request (e.g. task is empty)", "badRequestGroupNameExists": "Bad request or group name already exists", "groupNotFound": "Group not found", "badRequestConfig": "Bad request (e.g. invalid config or missing required fields)", "badRequestQueryEmpty": "Bad request (e.g. query is empty)", "methodNotAllowed": "Method not allowed (POST only)", "loginSuccess": "Login successful", "invalidPassword": "Invalid password", "logoutSuccess": "Logout successful", "passwordChanged": "Password changed successfully", "tokenValid": "Token valid", "tokenInvalid": "Token invalid or expired", "conversationCreated": "Conversation created", "internalError": "Internal server error", "updateSuccess": "Updated successfully", "deleteSuccess": "Deleted successfully", "queueNotFound": "Queue not found", "startSuccess": "Started successfully", "pauseSuccess": "Paused successfully", "addSuccess": "Added successfully", "taskNotFound": "Task not found", "conversationOrGroupNotFound": "Conversation or group not found", "cancelSubmitted": "Cancel request submitted", "noRunningTask": "No running task found", "messageSent": "Message sent, AI reply returned", "streamResponse": "Stream response (Server-Sent Events)" } }, "chatGroup": { "search": "Search", "edit": "Edit", "delete": "Delete", "clearSearch": "Clear search", "searchInGroupPlaceholder": "Search in group...", "attackChain": "Attack chain", "viewAttackChain": "View attack chain", "selectRole": "Select role", "close": "Close", "selectFile": "Select file", "uploadFile": "Upload file (multi-select or drag & drop)", "send": "Send", "rolePanelTitle": "Select role", "copyMessage": "Copy message", "remove": "Remove" }, "mcpMonitor": { "deselectAll": "Deselect all", "statusPending": "Pending", "statusCompleted": "Completed", "statusRunning": "Running", "statusFailed": "Failed", "loading": "Loading...", "noStatsData": "No statistical data", "noExecutions": "No execution records", "noRecordsWithFilter": "No records with current filter", "paginationInfo": "Show {{start}}-{{end}} of {{total}} records", "perPageLabel": "Per page", "loadStatsError": "Failed to load statistics", "loadExecutionsError": "Failed to load execution records", "totalCalls": "Total calls", "successFailed": "Success {{success}} / Failed {{failed}}", "successRate": "Success rate", "statsFromAllTools": "From all tool calls", "lastCall": "Last call", "lastRefreshTime": "Last refresh", "noCallsYet": "No calls yet", "unknownTool": "Unknown tool", "successFailedRate": "Success {{success}} / Failed {{failed}} · {{rate}}% success rate", "columnTool": "Tool", "columnStatus": "Status", "columnStartTime": "Start time", "columnDuration": "Duration", "columnActions": "Actions", "viewDetail": "View details", "delete": "Delete", "deleteExecTitle": "Delete this execution record", "deleteExecConfirmSingle": "Are you sure you want to delete this execution record? This cannot be undone.", "deleteExecFailed": "Failed to delete execution record", "execDeleted": "Execution record deleted", "selectExecFirst": "Please select execution record(s) to delete first", "batchDeleteConfirm": "Are you sure you want to delete the selected {{count}} execution record(s)? This cannot be undone.", "batchDeleteSuccess": "Successfully deleted {{count}} execution record(s)", "unknown": "Unknown", "durationSeconds": "{{n}} sec", "durationMinutes": "{{minutes}} min {{seconds}} sec", "durationMinutesOnly": "{{minutes}} min", "durationHours": "{{hours}} hr {{minutes}} min", "durationHoursOnly": "{{hours}} hr" }, "knowledgePage": { "totalContent": "Total content", "categoryFilter": "Category filter", "all": "All", "searchPlaceholder": "Search knowledge...", "loading": "Loading..." }, "retrievalLogs": { "totalRetrievals": "Total retrievals", "successRetrievals": "Success", "successRate": "Success rate", "retrievedItems": "Items retrieved", "conversationId": "Conversation ID", "messageId": "Message ID", "filter": "Filter", "optionalConversation": "Optional: filter by conversation", "optionalMessage": "Optional: filter by message", "loading": "Loading...", "noRecords": "No retrieval records yet", "noQuery": "No query content", "itemsUnit": "items", "hasResults": "Has results", "noResults": "No results", "clickToCopy": "Click to copy", "retrievalResult": "Retrieval result", "foundCount": "Found {{count}} related knowledge item(s)", "foundUnknown": "Found related knowledge (count unknown)", "noMatch": "No matching knowledge items", "retrievedItemsLabel": "Retrieved knowledge items:", "viewDetails": "View details", "loadError": "Failed to load retrieval logs", "detailError": "Unable to get retrieval details", "deleteError": "Failed to delete retrieval log", "detailsTitle": "Retrieval details", "queryInfo": "Query info", "queryContent": "Query content:", "retrievalInfo": "Retrieval info", "riskType": "Risk type", "retrievalTime": "Retrieval time", "noItemDetails": "No knowledge item details found", "noContentPreview": "No content preview", "untitled": "Untitled", "uncategorized": "Uncategorized", "relatedInfo": "Related info", "itemsCount": "{{count}} knowledge item(s)", "deleteConfirm": "Delete this retrieval record?" }, "infoCollectPage": { "title": "Recon", "reset": "Reset", "confirm": "OK", "fofaQuerySyntax": "FOFA query syntax", "naturalLanguage": "Natural language (AI parses to FOFA)", "returnCount": "Return count", "pageNum": "Page", "returnFields": "Return fields (comma-separated)", "queryResults": "Query results", "selectedRows": "{{count}} selected", "selectedRowsZero": "0 selected", "columns": "Columns", "exportCsv": "Export CSV", "exportJson": "Export JSON", "exportXlsx": "Export XLSX", "batchScan": "Batch scan", "showColumns": "Show columns", "columnsPanelAll": "Select all", "columnsPanelNone": "Deselect all", "columnsPanelClose": "Close", "formHint": "See FOFA docs for query syntax; supports && / || / ().", "parseBtn": "AI parse", "parseHint": "Result will open in a popup for editing before running the query.", "minFields": "Min fields", "webCommon": "Web common", "intelEnhanced": "Intel enhanced", "presetApache": "Apache + China", "presetLogin": "Login page + China", "presetDomain": "By domain", "presetIp": "By IP", "queryPresetsAria": "FOFA query presets", "fieldsPresetsAria": "FOFA field presets", "resultsToolbarAria": "Results toolbar", "fillExample": "Fill example", "parseBtnTitle": "Parse natural language to FOFA query", "minFieldsTitle": "For quick export", "webCommonTitle": "For browsing and filtering", "intelEnhancedTitle": "More fingerprint/intel", "fullLabel": "full", "nlPlaceholder": "e.g. Apache sites in Missouri, US, title contains Home", "showHideColumns": "Show/hide columns", "exportCsvTitle": "Export results as CSV (UTF-8)", "exportJsonTitle": "Export results as JSON", "exportXlsxTitle": "Export results as Excel", "batchScanTitle": "Create batch task queue from selected rows" }, "chatFilesPage": { "title": "File Management", "intro": "Files uploaded in chat appear here. Click “Copy path” to copy the server absolute path and paste it into a conversation so the model can reference the file.", "upload": "Upload", "conversationFilter": "Conversation ID", "conversationPlaceholder": "Leave empty for all", "searchName": "File name", "searchNamePlaceholder": "Filter by file name", "groupBy": "Group by", "groupNone": "None (flat list)", "groupByDate": "By date", "groupByConversation": "By conversation", "groupByFolder": "By folder (path navigation)", "browseRoot": "chat_uploads", "browseUp": "Up", "enterFolderTitle": "Open folder", "copyFolderPathTitle": "Copy relative path under chat_uploads/…", "folderPathCopied": "Folder path copied — paste into chat if needed", "folderEmpty": "This folder is empty", "confirmDeleteFolder": "Delete this folder and everything inside it? This cannot be undone.", "folderRemovedStale": "That folder is not on the server anymore; list refreshed.", "deleteFolderTitle": "Delete folder", "uploadToFolderTitle": "Upload file into this folder", "newFolderButton": "New folder", "newFolderTitle": "New folder", "newFolderLocation": "Location", "newFolderNameLabel": "Folder name", "newFolderNamePlaceholder": "Name only, no slashes", "mkdirOk": "Folder created", "mkdirExists": "A file or folder with that name already exists", "mkdirInvalidName": "Invalid name: cannot be empty or contain /, \\, or use . or ..", "colSubPath": "Subfolder", "folderRoot": "(root)", "groupCount": "{{count}} files", "convManual": "Manual upload", "convNew": "New chat", "colDate": "Date", "colConversation": "Conversation", "colName": "Name", "colSize": "Size", "colModified": "Modified", "colActions": "Actions", "copyPath": "Copy path", "copyPathTitle": "Copy the absolute path on the server; paste into chat to reference this file", "pathCopied": "Path copied — paste it into chat", "uploadOkHint": "Uploaded. Use “Copy path” to copy the absolute path.", "uploadingFile": "Uploading {{name}} · {{percent}}%", "moreActions": "More: open chat, edit, rename, delete", "download": "Download", "edit": "Edit", "rename": "Rename", "openChat": "Open chat", "confirmDelete": "Delete this file?", "editTitle": "Edit file", "renameTitle": "Rename", "newFileName": "New file name", "empty": "No chat uploads yet", "errorLoad": "Failed to load", "editBinaryHint": "Binary files (images, archives, etc.) cannot be edited as text here. Use Download and open locally.", "editUnavailable": "N/A", "editTooLarge": "File exceeds 2MB and cannot be edited here. Download and edit locally.", "errorGeneric": "Something went wrong. Please try again." }, "vulnerabilityPage": { "statTotal": "Total", "filter": "Filter", "clear": "Clear", "vulnId": "Vuln ID", "conversationId": "Conversation ID", "severity": "Severity", "status": "Status", "statusOpen": "Open", "statusConfirmed": "Confirmed", "statusFixed": "Fixed", "statusFalsePositive": "False positive", "searchVulnId": "Search vuln ID", "filterConversation": "Filter by conversation", "loading": "Loading...", "noRecords": "No vulnerability records" }, "tasksPage": { "statusFilter": "Status filter", "statusPending": "Pending", "statusPaused": "Paused", "statusCancelled": "Cancelled", "searchQueuePlaceholder": "Search queue ID, title or created time", "searchKeywordPlaceholder": "Enter keyword..." }, "skillsPage": { "clearStats": "Clear stats", "clearStatsTitle": "Clear all statistics", "skillsCallStats": "Skills call stats", "searchPlaceholder": "Search Skills...", "loading": "Loading...", "paginationShow": "Show {{start}}-{{end}} of {{total}}", "perPageLabel": "Per page", "firstPage": "First", "prevPage": "Previous", "pageOf": "Page {{current}} / {{total}}", "nextPage": "Next", "lastPage": "Last" }, "agentsPage": { "title": "Agent management", "create": "New agent", "hint": "Agents are .md files under agents_dir (front matter + body as system prompt). The orchestrator is the Deep coordinator and is not listed as a task sub-agent.", "dirLabel": "Directory", "loading": "Loading...", "empty": "No Markdown sub-agents yet. Click New agent to create one.", "noDesc": "No description", "loadFailed": "Failed to load list", "loadOneFailed": "Failed to load agent", "createTitle": "New agent", "editTitle": "Edit agent", "filename": "File name (.md)", "filenamePlaceholder": "e.g. code-reviewer.md", "fieldRole": "Type", "roleSub": "Sub-agent", "roleOrchestrator": "Orchestrator (Deep)", "roleHint": "You can also use the fixed file name orchestrator.md. Only one orchestrator per directory. If the orchestrator body is empty, config orchestrator_instruction and Eino defaults apply.", "badgeOrchestrator": "Orchestrator", "badgeSub": "Sub-agent", "filenameInvalid": "File name must end with .md and use only letters, digits, ._-", "fieldId": "Agent id (optional; derived from name if empty)", "fieldName": "Display name", "namePlaceholder": "Code Reviewer", "fieldDesc": "Description", "descPlaceholder": "When the orchestrator should delegate to this agent", "fieldTools": "Tools (comma-separated; same keys as role tools)", "fieldBindRole": "Bind role (optional)", "fieldMaxIter": "Max sub-agent iterations (0 = use global default)", "fieldInstruction": "System prompt (Markdown body)", "instructionPlaceholder": "You are a specialist agent...", "nameRequired": "Display name is required", "instructionRequired": "System prompt body is required", "saveOk": "Saved", "createOk": "Created", "saveFailed": "Save failed", "deleteConfirm": "Delete {{name}}?", "deleteOk": "Deleted", "deleteFailed": "Delete failed" }, "settingsBasic": { "basicTitle": "Basic settings", "openaiConfig": "OpenAI config", "fofaConfig": "FOFA config", "agentConfig": "Agent config", "knowledgeConfig": "Knowledge base config", "baseUrl": "Base URL", "apiKey": "API Key", "model": "Model", "openaiBaseUrlPlaceholder": "https://api.openai.com/v1", "openaiApiKeyPlaceholder": "Enter OpenAI API Key", "modelPlaceholder": "gpt-4", "fofaBaseUrlPlaceholder": "https://fofa.info/api/v1/search/all (optional)", "fofaBaseUrlHint": "Leave empty for default.", "email": "Email", "fofaEmailPlaceholder": "Enter FOFA email", "fofaApiKeyPlaceholder": "Enter FOFA API Key", "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", "knowledgeBasePathHint": "Relative to config file directory", "embeddingConfig": "Embedding config", "provider": "Provider", "embeddingBaseUrlPlaceholder": "Leave empty to use OpenAI base_url", "embeddingApiKeyPlaceholder": "Leave empty to use OpenAI api_key", "modelName": "Model name", "embeddingModelPlaceholder": "text-embedding-v4", "retrievalConfig": "Retrieval config", "topK": "Top-K results", "topKPlaceholder": "5", "topKHint": "Number of top-K results to return", "similarityThreshold": "Similarity threshold", "similarityPlaceholder": "0.7", "similarityHint": "Results below this value are filtered (0-1)", "hybridWeight": "Hybrid weight", "hybridPlaceholder": "0.7", "hybridHint": "Vector weight (0-1); 1.0 = vector only, 0.0 = keyword only", "indexConfig": "Index config", "chunkSize": "Chunk size", "chunkSizePlaceholder": "512", "chunkSizeHint": "Max tokens per chunk (default 512)", "chunkOverlap": "Chunk overlap", "chunkOverlapPlaceholder": "50", "chunkOverlapHint": "Overlap tokens between chunks (default 50)", "maxChunksPerItem": "Max chunks per item", "maxChunksPlaceholder": "0", "maxChunksHint": "Max chunks per knowledge item (0 = no limit)", "maxRpm": "Max RPM", "maxRpmPlaceholder": "0", "maxRpmHint": "Max requests per minute (0 = no limit)", "rateLimitDelay": "Rate limit delay (ms)", "rateLimitPlaceholder": "300", "rateLimitHint": "Delay between requests (ms); 0 = no limit", "maxRetries": "Max retries", "maxRetriesPlaceholder": "3", "maxRetriesHint": "Retries on rate limit or server error", "retryDelay": "Retry delay (ms)", "retryDelayPlaceholder": "1000", "retryDelayHint": "Delay between retries (ms)", "testConnection": "Test Connection", "testFillRequired": "Please fill in API Key and Model first", "testing": "Testing connection...", "testSuccess": "Connection successful", "testFailed": "Connection failed", "testError": "Test error" }, "settingsTerminal": { "title": "Terminal", "description": "Run commands on the server for ops and debugging. Commands run on the server; avoid sensitive or destructive operations.", "terminalTab": "Terminal {{n}}", "welcomeLine": "CyberStrikeAI Terminal — real shell session; type commands directly. Ctrl+L to clear screen", "sessionClosed": "[Session closed]", "connectionError": "[Terminal connection error]", "connectFailed": "[Cannot connect to terminal service: {{msg}}]", "closeTabTitle": "Close", "containerClickTitle": "Click here, then type commands", "xtermNotLoaded": "xterm.js failed to load. Refresh the page or check your network.", "close": "×", "newTerminal": "+" }, "settingsSecurity": { "changePasswordTitle": "Change password", "changePasswordDesc": "After changing password, sign in again with the new password.", "currentPassword": "Current password", "currentPasswordPlaceholder": "Enter current password", "newPassword": "New password", "newPasswordPlaceholder": "New password (at least 8 characters)", "confirmPassword": "Confirm new password", "confirmPasswordPlaceholder": "Enter new password again", "clear": "Clear", "changePasswordBtn": "Change password" }, "settingsRobotsExtra": { "botCommandsTitle": "Bot command instructions", "botCommandsDesc": "You can send the following commands in chat (Chinese and English supported):", "botCmdHelp": "Show this help", "botCmdList": "List conversations", "botCmdSwitch": "Switch to conversation", "botCmdNew": "Start new conversation", "botCmdClear": "Clear context", "botCmdCurrent": "Show current conversation", "botCmdStop": "Stop running task", "botCmdRoles": "List roles", "botCmdRole": "Switch role", "botCmdDelete": "Delete conversation", "botCmdVersion": "Show version", "botCommandsFooter": "Otherwise, send any text for AI penetration testing / security analysis." }, "mcpDetailModal": { "title": "Tool call details", "execInfo": "Execution info", "tool": "Tool", "status": "Status", "statusPending": "Pending", "statusRunning": "Running", "statusCompleted": "Completed", "statusFailed": "Failed", "unknown": "Unknown", "getDetailFailed": "Failed to get details", "execSuccessNoContent": "Execution succeeded with no displayable content.", "time": "Time", "executionId": "Execution ID", "requestParams": "Request params", "copyJson": "Copy JSON", "responseResult": "Response", "copyContent": "Copy content", "correctInfo": "Correct info", "errorInfo": "Error info", "copyError": "Copy error" }, "attackChainModal": { "title": "Attack chain", "regenerate": "Regenerate", "regenerateTitle": "Regenerate attack chain (include latest conversation)", "exportPng": "Export PNG", "exportSvg": "Export SVG", "refreshTitle": "Refresh current attack chain", "nodesEdges": "Nodes: {{nodes}} | Edges: {{edges}}", "searchPlaceholder": "Search nodes...", "allTypes": "All types", "target": "Target", "action": "Action", "vulnerability": "Vulnerability", "allRisks": "All risks", "highRisk": "High (80-100)", "mediumHighRisk": "Medium-high (60-79)", "mediumRisk": "Medium (40-59)", "lowRisk": "Low (0-39)", "resetFilter": "Reset filter", "loading": "Loading...", "riskLevel": "Risk level", "lineMeaning": "Line meaning", "blueLine": "Blue: action finds vulnerability", "redLine": "Red: enables/contributes", "grayLine": "Gray: logical order", "nodeDetails": "Node details", "closeDetails": "Close details" }, "externalMcpModal": { "configJson": "Config JSON", "formatLabel": "Format:", "formatDesc": "JSON object; key = config name, value = config. Use Start/Stop buttons to control state.", "configExample": "Configuration example:", "stdioMode": "stdio mode:", "httpMode": "HTTP mode:", "sseMode": "SSE mode:", "placeholder": "{\n \"hexstrike-ai\": {\n \"command\": \"python3\",\n \"args\": [\"/path/to/script.py\"],\n \"description\": \"Description\",\n \"timeout\": 300\n }\n}", "exampleStdio": "{\n \"hexstrike-ai\": {\n \"command\": \"python3\",\n \"args\": [\"/path/to/script.py\", \"--server\", \"http://example.com\"],\n \"description\": \"Description\",\n \"timeout\": 300\n }\n}", "exampleHttp": "{\n \"cyberstrike-ai-http\": {\n \"transport\": \"http\",\n \"url\": \"http://127.0.0.1:8081/mcp\"\n }\n}", "exampleSse": "{\n \"cyberstrike-ai-sse\": {\n \"transport\": \"sse\",\n \"url\": \"http://127.0.0.1:8081/mcp/sse\"\n }\n}", "exampleDescription": "Example description", "formatJson": "Format JSON", "loadExample": "Load example" }, "skillModal": { "addSkill": "Add Skill", "editSkill": "Edit Skill", "skillName": "Skill name", "skillNamePlaceholder": "e.g. sql-injection-testing", "skillNameHint": "Letters, numbers, hyphens and underscores only", "description": "Description", "descriptionPlaceholder": "Short description", "contentLabel": "Content (Markdown)", "contentPlaceholder": "Enter skill content in Markdown...", "contentHint": "YAML front matter supported (optional), e.g.:" }, "knowledgeItemModal": { "addKnowledge": "Add knowledge", "editKnowledge": "Edit knowledge", "category": "Category (risk type)", "categoryPlaceholder": "e.g. SQL injection", "title": "Title", "titlePlaceholder": "Knowledge item title", "contentLabel": "Content (Markdown)", "contentPlaceholder": "Enter content in Markdown..." }, "batchManageModal": { "title": "Manage conversations · {{count}} total", "searchPlaceholder": "Search history", "conversationName": "Conversation name", "lastTime": "Last activity", "action": "Action", "selectAll": "Select all", "deleteSelected": "Delete selected", "confirmDeleteNone": "Please select at least one conversation to delete", "confirmDeleteN": "Delete {{count}} selected conversation(s)?", "deleteFailed": "Delete failed", "unnamedConversation": "Unnamed conversation" }, "createGroupModal": { "title": "Create group", "description": "Group conversations for easier management.", "selectIcon": "Click to choose icon", "groupNamePlaceholder": "Enter group name", "pickIcon": "Pick icon", "customIcon": "Custom", "confirmIcon": "OK", "create": "Create", "cancel": "Cancel", "suggestionPenetrationTest": "Penetration Testing", "suggestionCtf": "CTF", "suggestionRedTeam": "Red Team", "suggestionVulnerabilityMining": "Vulnerability Mining", "nameExists": "Group name already exists, please use another name.", "createFailed": "Create failed", "unknownError": "Unknown error" }, "contextMenu": { "viewAttackChain": "View attack chain", "downloadMarkdown": "Download Markdown", "downloadMarkdownSummary": "Summary", "downloadMarkdownFull": "Full", "rename": "Rename", "pinConversation": "Pin conversation", "unpinConversation": "Unpin", "batchManage": "Batch manage", "moveToGroup": "Move to group", "deleteConversation": "Delete conversation", "pinGroup": "Pin group", "unpinGroup": "Unpin", "deleteGroup": "Delete group" }, "batchImportModal": { "title": "New task", "queueTitle": "Queue title", "queueTitlePlaceholder": "Enter queue title (optional, for identification and filtering)", "queueTitleHint": "Set a title for the batch task queue to make it easier to find and manage later.", "role": "Role", "defaultRole": "Default", "roleHint": "Select a role; all tasks will be executed using that role's configuration (prompt and tools).", "agentMode": "Agent mode", "agentModeSingle": "Single-agent (ReAct)", "agentModeMulti": "Multi-agent (Eino)", "agentModeHint": "Single-agent is recommended by default; use multi-agent for complex tasks (requires system multi-agent enabled).", "scheduleMode": "Schedule mode", "scheduleModeManual": "Manual", "scheduleModeCron": "Cron expression", "scheduleModeHint": "Manual is for one-time runs; Cron is for recurring runs. Validate tasks manually first.", "cronExpr": "Cron expression", "cronExprPlaceholder": "e.g. 0 */2 * * * (run every 2 hours)", "cronExprHint": "Use standard 5-field Cron: minute hour day month weekday. Example: `0 2 * * *` runs at 02:00 daily.", "cronExprRequired": "Please fill in a Cron expression when Cron schedule is selected", "executeNow": "Run immediately after creation", "executeNowHint": "Default is off. When disabled, the queue stays pending and can be started manually later.", "tasksList": "Task list (one task per line)", "tasksListPlaceholder": "Enter task list, one per line", "tasksListPlaceholderExample": "Enter task list, one per line, for example:\nScan open ports of 192.168.1.1\nCheck if https://example.com has SQL injection\nEnumerate subdomains of example.com", "tasksListHint": "Enter one task command per line; the system will execute them in order. Empty lines are ignored.", "tasksListHintFull": "Hint: Enter one task command per line; the system will execute these tasks in order. Empty lines are ignored.", "createQueue": "Create queue" }, "batchQueueDetailModal": { "title": "Batch queue details", "addTask": "Add task", "startExecute": "Start", "startExecuteNow": "Run now (one round)", "startExecuteNowConfirm": "This is a Cron queue. Clicking Start will run the current round immediately instead of waiting for the next Cron time. Continue?", "pauseQueue": "Pause queue", "deleteQueue": "Delete queue", "queueTitle": "Task title", "role": "Role", "defaultRole": "Default", "queueId": "Queue ID", "status": "Status", "createdAt": "Created at", "startedAt": "Started at", "nextRunAt": "Next run at", "scheduleCronAuto": "Allow Cron auto-run", "scheduleCronAutoHint": "When off, the cron expression is kept but the queue will not run on schedule; use Start to run manually.", "lastScheduleTriggerAt": "Last scheduled trigger", "lastScheduleError": "Last schedule error", "lastRunError": "Last run failure summary", "cronSchedulePausedBadge": "Schedule paused", "scheduleToggleFailed": "Failed to update schedule toggle", "completedAt": "Completed at", "taskTotal": "Total tasks", "taskList": "Task list", "startLabel": "Start", "completeLabel": "Complete", "errorLabel": "Error", "resultLabel": "Result", "technicalDetails": "Technical details (ID, times, schedule)" }, "editBatchTaskModal": { "title": "Edit task", "taskMessage": "Task message", "taskMessagePlaceholder": "Enter task message" }, "addBatchTaskModal": { "title": "Add task", "taskMessage": "Task message", "taskMessagePlaceholder": "Enter task message", "add": "Add" }, "vulnerabilityModal": { "conversationId": "Conversation ID", "conversationIdPlaceholder": "Enter conversation ID", "title": "Title", "titlePlaceholder": "Vulnerability title", "description": "Description", "descriptionPlaceholder": "Detailed description", "severity": "Severity", "pleaseSelect": "Please select", "severityCritical": "Critical", "severityHigh": "High", "severityMedium": "Medium", "severityLow": "Low", "severityInfo": "Info", "status": "Status", "statusOpen": "Open", "statusConfirmed": "Confirmed", "statusFixed": "Fixed", "statusFalsePositive": "False positive", "type": "Vulnerability type", "typePlaceholder": "e.g. SQL injection, XSS, CSRF", "target": "Target", "targetPlaceholder": "Affected target (URL, IP, etc.)", "proof": "Proof (POC)", "proofPlaceholder": "Proof: request/response, screenshots, etc.", "impact": "Impact", "impactPlaceholder": "Impact description", "recommendation": "Recommendation", "recommendationPlaceholder": "Remediation" }, "roleModal": { "addRole": "Add role", "editRole": "Edit role", "roleName": "Role name", "roleNamePlaceholder": "Enter role name", "roleDescription": "Role description", "roleDescriptionPlaceholder": "Enter role description", "roleIcon": "Role icon", "roleIconPlaceholder": "Enter emoji, e.g. 🏆", "roleIconHint": "Emoji shown in role selector.", "userPrompt": "User prompt", "userPromptPlaceholder": "Appended before user message...", "userPromptHint": "This prompt is appended before user message to guide AI. It does not change system prompt.", "relatedTools": "Related tools (optional)", "defaultRoleToolsTitle": "Default role uses all tools", "defaultRoleToolsDesc": "Default role uses all tools enabled in MCP Management.", "searchToolsPlaceholder": "Search tools...", "loadingTools": "Loading tools...", "relatedToolsHint": "Select tools to link; empty = use all from MCP Management.", "relatedSkills": "Related Skills (optional)", "searchSkillsPlaceholder": "Search skill...", "loadingSkills": "Loading skills...", "relatedSkillsHint": "Selected skills are injected into system prompt before task execution.", "enableRole": "Enable this role", "selectAll": "Select All", "deselectAll": "Deselect All", "roleNameRequired": "Role name is required", "roleNotFound": "Role not found", "firstRoleNoToolsHint": "First role with no tools selected will use all tools by default.", "currentPageSelected": "Current page: {{current}} / {{total}}", "totalSelected": "Total selected: {{current}} / {{total}}", "usingAllEnabledTools": "(Using all enabled tools)", "currentPageSelectedTitle": "Selected on current page (enabled tools only)", "totalSelectedTitle": "Total tools linked to this role", "skillsSelectedCount": "Selected {{count}} / {{total}}", "loadToolsFailed": "Failed to load tools", "loadSkillsFailed": "Failed to load skills", "cannotDeleteDefaultRole": "Cannot delete default role", "noMatchingSkills": "No matching skills", "noSkillsAvailable": "No skills available", "usingAllTools": "Use all tools", "andNMore": " and {{count}} more", "toolsLabel": "Tools:", "noTools": "No tools", "paginationShow": "{{start}}-{{end}} of {{total}} tools", "paginationSearch": " (search: \"{{keyword}}\")", "firstPage": "First", "prevPage": "Previous", "pageOf": "Page {{page}} / {{total}}", "nextPage": "Next", "lastPage": "Last" } }