mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-04-03 17:42:21 +02:00
1613 lines
68 KiB
JSON
1613 lines
68 KiB
JSON
{
|
||
"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",
|
||
"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",
|
||
"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": "{{start}}-{{end}} of {{total}}",
|
||
"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",
|
||
"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)"
|
||
},
|
||
"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).",
|
||
"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",
|
||
"pauseQueue": "Pause queue",
|
||
"deleteQueue": "Delete queue",
|
||
"queueTitle": "Task title",
|
||
"role": "Role",
|
||
"defaultRole": "Default",
|
||
"queueId": "Queue ID",
|
||
"status": "Status",
|
||
"createdAt": "Created at",
|
||
"startedAt": "Started at",
|
||
"completedAt": "Completed at",
|
||
"taskTotal": "Total tasks",
|
||
"taskList": "Task list",
|
||
"startLabel": "Start",
|
||
"completeLabel": "Complete",
|
||
"errorLabel": "Error",
|
||
"resultLabel": "Result"
|
||
},
|
||
"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"
|
||
}
|
||
}
|