feat(a2ui): Implement A2UI backend with question handling and WebSocket support

- Added A2UITypes for defining question structures and answers.
- Created A2UIWebSocketHandler for managing WebSocket connections and message handling.
- Developed ask-question tool for interactive user questions via A2UI.
- Introduced platformUtils for platform detection and shell command handling.
- Centralized TypeScript types in index.ts for better organization.
- Implemented compatibility checks for hook templates based on platform requirements.
This commit is contained in:
catlog22
2026-01-31 15:27:12 +08:00
parent 4e009bb03a
commit 715ef12c92
163 changed files with 19495 additions and 715 deletions

View File

@@ -0,0 +1,160 @@
{
"title": "Hook Manager",
"description": "Manage CLI hooks for automated workflows",
"allTools": "All tools",
"trigger": {
"UserPromptSubmit": "User Prompt Submit",
"PreToolUse": "Pre Tool Use",
"PostToolUse": "Post Tool Use",
"Stop": "Stop"
},
"form": {
"name": "Hook Name",
"namePlaceholder": "my-hook",
"description": "Description",
"descriptionPlaceholder": "What does this hook do?",
"trigger": "Trigger Event",
"matcher": "Tool Matcher",
"matcherPlaceholder": "e.g., Write|Edit (optional)",
"matcherHelp": "Regex pattern to match tool names. Leave empty to match all tools.",
"command": "Command",
"commandPlaceholder": "echo 'Hello World'",
"commandHelp": "Shell command to execute. Use environment variables like $CLAUDE_TOOL_NAME."
},
"validation": {
"nameRequired": "Hook name is required",
"nameInvalid": "Hook name can only contain letters, numbers, hyphens, and underscores",
"triggerRequired": "Trigger event is required",
"commandRequired": "Command is required"
},
"actions": {
"add": "Add Hook",
"addFirst": "Create Your First Hook",
"edit": "Edit",
"delete": "Delete",
"deleteConfirm": "Are you sure you want to delete hook \"{hookName}\"?",
"enable": "Enable",
"disable": "Disable",
"expand": "Expand details",
"collapse": "Collapse details",
"expandAll": "Expand All",
"collapseAll": "Collapse All"
},
"dialog": {
"createTitle": "Create Hook",
"editTitle": "Edit Hook \"{hookName}\""
},
"stats": {
"total": "{count} total",
"enabled": "{count} enabled",
"count": "{enabled}/{total} hooks"
},
"filters": {
"searchPlaceholder": "Search hooks by name, description, or trigger..."
},
"empty": {
"title": "No hooks found",
"description": "Create your first hook to automate your CLI workflow",
"noHooksInEvent": "No hooks configured for this event"
},
"templates": {
"title": "Quick Install Templates",
"description": "One-click installation for common hook patterns",
"categories": {
"notification": "Notification",
"indexing": "Indexing",
"automation": "Automation"
},
"templates": {
"ccw-notify": {
"name": "CCW Dashboard Notify",
"description": "Send notifications to CCW dashboard when files are written"
},
"codexlens-update": {
"name": "CodexLens Auto-Update",
"description": "Update CodexLens index when files are written or edited"
},
"git-add": {
"name": "Auto Git Stage",
"description": "Automatically stage written files to git"
},
"lint-check": {
"name": "Auto ESLint",
"description": "Run ESLint on JavaScript/TypeScript files after write"
},
"log-tool": {
"name": "Tool Usage Logger",
"description": "Log all tool executions to a file for audit trail"
}
},
"actions": {
"install": "Install",
"installed": "Installed"
}
},
"wizards": {
"title": "Hook Wizard",
"launch": "Wizard",
"sectionTitle": "Hook Wizards",
"sectionDescription": "Create hooks with guided step-by-step wizards",
"platform": {
"detected": "Detected Platform",
"compatible": "Compatible",
"incompatible": "Incompatible",
"compatibilityError": "This hook is not compatible with your platform",
"compatibilityWarning": "Some features may not work on your platform"
},
"steps": {
"triggerEvent": "This hook will trigger on",
"review": {
"title": "Review Configuration",
"description": "Review your hook configuration before creating",
"hookType": "Hook Type",
"trigger": "Trigger Event",
"platform": "Platform",
"commandPreview": "Command Preview"
}
},
"navigation": {
"previous": "Previous",
"next": "Next",
"create": "Create Hook",
"creating": "Creating..."
},
"memoryUpdate": {
"title": "Memory Update Wizard",
"description": "Configure hook to update CLAUDE.md on session end",
"shortDescription": "Update CLAUDE.md automatically",
"claudePath": "CLAUDE.md Path",
"updateFrequency": "Update Frequency",
"frequency": {
"sessionEnd": "Session End",
"hourly": "Hourly",
"daily": "Daily"
}
},
"dangerProtection": {
"title": "Danger Protection Wizard",
"description": "Configure confirmation hook for dangerous operations",
"shortDescription": "Confirm dangerous operations",
"keywords": "Dangerous Keywords",
"keywordsHelp": "Enter one keyword per line",
"confirmationMessage": "Confirmation Message",
"allowBypass": "Allow bypass with --force flag"
},
"skillContext": {
"title": "SKILL Context Wizard",
"description": "Configure hook to load SKILL based on prompt keywords",
"shortDescription": "Auto-load SKILL based on keywords",
"loadingSkills": "Loading available skills...",
"keywordPlaceholder": "Enter keyword",
"selectSkill": "Select skill",
"addPair": "Add Keyword-Skill Pair",
"priority": "Priority",
"priorityHigh": "High",
"priorityMedium": "Medium",
"priorityLow": "Low",
"keywordMappings": "Keyword Mappings"
}
}
}

View File

@@ -129,5 +129,34 @@
"prompt": "Prompt",
"output": "Output",
"details": "Details"
},
"streamPanel": {
"turns": "turns",
"perTurnView": "Per-Turn View",
"concatenatedView": "Concatenated View",
"userPrompt": "User Prompt",
"assistantResponse": "Assistant Response",
"errors": "Errors",
"truncatedNotice": "Output was truncated due to size limits.",
"latest": "Latest",
"copyId": "Copy ID",
"copyPrompt": "Copy Prompt",
"concatenatedPrompt": "Concatenated Prompt",
"newRequest": "NEW REQUEST",
"noOutput": "[No output]",
"yourNextPrompt": "[Your next prompt here]",
"conversationHistory": "CONVERSATION HISTORY",
"loading": "Loading...",
"noDetails": "No execution details available"
},
"details": {
"turn": "Turn",
"tool": "Tool",
"mode": "Mode",
"duration": "Duration",
"created": "Created",
"id": "ID",
"timestamp": "Timestamp",
"status": "Status"
}
}

View File

@@ -0,0 +1,18 @@
{
"title": "CLI Stream Monitor",
"searchPlaceholder": "Search output...",
"noExecutions": "No active CLI executions",
"noExecutionsHint": "Start a CLI command to see streaming output",
"selectExecution": "Select an execution to view output",
"status": {
"running": "Running",
"completed": "Completed",
"error": "Error"
},
"recovered": "Recovered",
"lines": "lines",
"autoScroll": "Auto-scroll",
"scrollToBottom": "Scroll to bottom",
"close": "Close",
"refresh": "Refresh"
}

View File

@@ -35,6 +35,7 @@
"submit": "Submit",
"reset": "Reset",
"resetDesc": "Reset all user preferences to their default values. This cannot be undone.",
"saving": "Saving...",
"resetConfirm": "Reset all settings to defaults?",
"resetToDefaults": "Reset to Defaults",
"enable": "Enable",
@@ -68,7 +69,9 @@
"creating": "Creating...",
"deleting": "Deleting...",
"label": "Status",
"openIssues": "Open Issues"
"openIssues": "Open Issues",
"enabled": "Enabled",
"disabled": "Disabled"
},
"priority": {
"low": "Low",

View File

@@ -0,0 +1,51 @@
{
"page": {
"title": "Execution Monitor",
"subtitle": "View real-time execution status and history"
},
"currentExecution": {
"title": "Current Execution",
"noExecution": "No workflow is currently executing",
"expand": "Expand",
"collapse": "Collapse"
},
"stats": {
"title": "Statistics",
"totalExecutions": "Total Executions",
"successRate": "Success Rate",
"avgDuration": "Avg Duration",
"nodeSuccessRate": "Node Success Rate"
},
"history": {
"title": "Execution History",
"empty": "No execution history",
"tabs": {
"byWorkflow": "By Workflow",
"timeline": "Timeline",
"list": "List View"
}
},
"filters": {
"workflow": "Workflow",
"status": "Status",
"dateRange": "Date Range",
"all": "All Workflows",
"allStatus": "All Status"
},
"execution": {
"status": {
"pending": "Pending",
"running": "Running",
"paused": "Paused",
"completed": "Completed",
"failed": "Failed"
},
"duration": "Duration",
"startedAt": "Started",
"completedAt": "Completed",
"nodes": "Nodes",
"progress": "Progress",
"logs": "Logs",
"viewDetails": "View Details"
}
}

View File

@@ -0,0 +1,57 @@
{
"title": "File Explorer",
"description": "Browse and search files in your project",
"viewMode": {
"tree": "Tree",
"list": "List",
"compact": "Compact"
},
"sortOrder": {
"name": "Name",
"size": "Size",
"modified": "Modified",
"type": "Type"
},
"tree": {
"loading": "Loading file tree...",
"stats": "{files} items",
"empty": "No files found",
"error": "Failed to load file tree"
},
"preview": {
"loading": "Loading file content...",
"errorTitle": "Error loading file",
"emptyTitle": "No file selected",
"emptyMessage": "Select a file from the tree view to preview its content",
"binaryTitle": "Binary file",
"binaryMessage": "This file type cannot be previewed",
"tooLargeTitle": "File too large",
"tooLargeMessage": "File exceeds preview limit of {size}",
"copy": "Copy to clipboard",
"lastModified": "Last modified: {time}"
},
"toolbar": {
"searchPlaceholder": "Search files...",
"selectRoot": "Select directory",
"rootDirectory": "Root Directory",
"noRoots": "No directories available",
"viewMode": "View Mode",
"sortBy": "Sort By",
"moreOptions": "More Options",
"options": "Options",
"showHidden": "Show hidden files",
"expandAll": "Expand all",
"collapseAll": "Collapse all"
},
"errors": {
"loadFailed": "Failed to load file tree",
"loadFileFailed": "Failed to load file content",
"searchFailed": "Search failed",
"networkError": "Network error occurred"
},
"context": {
"hasClaudeMd": "Contains CLAUDE.md context",
"gitRoot": "Git repository root",
"workspace": "Workspace directory"
}
}

View File

@@ -40,5 +40,8 @@
"empty": {
"title": "No Tasks Found",
"message": "No fix tasks match the current filter."
},
"phase": {
"execution": "Execution"
}
}

View File

@@ -0,0 +1,97 @@
{
"title": "Graph Explorer",
"description": "Visualize code dependencies and relationships",
"filters": {
"title": "Filters",
"nodeTypes": "Node Types",
"edgeTypes": "Edge Types",
"selectNodeTypes": "Select Node Types",
"selectEdgeTypes": "Select Edge Types",
"searchPlaceholder": "Search nodes...",
"showOnlyIssues": "Show Only Issues",
"showIsolatedNodes": "Show Isolated Nodes",
"minComplexity": "Min Complexity",
"maxDepth": "Max Depth",
"reset": "Reset"
},
"nodeTypes": {
"component": "Component",
"module": "Module",
"function": "Function",
"class": "Class",
"interface": "Interface",
"variable": "Variable",
"file": "File",
"folder": "Folder",
"dependency": "Dependency",
"api": "API",
"database": "Database",
"service": "Service",
"hook": "Hook",
"utility": "Utility",
"unknown": "Unknown"
},
"edgeTypes": {
"imports": "Imports",
"exports": "Exports",
"extends": "Extends",
"implements": "Implements",
"uses": "Uses",
"dependsOn": "Depends On",
"calls": "Calls",
"instantiates": "Instantiates",
"contains": "Contains",
"relatedTo": "Related To",
"dataFlow": "Data Flow",
"event": "Event",
"unknown": "Unknown"
},
"actions": {
"fitView": "Fit to Screen",
"refresh": "Refresh",
"resetFilters": "Reset Filters",
"export": "Export",
"settings": "Settings",
"zoomIn": "Zoom In",
"zoomOut": "Zoom Out"
},
"legend": {
"title": "Legend",
"nodeTypes": "Node Types",
"edgeTypes": "Edge Types",
"component": "Component",
"module": "Module",
"class": "Class",
"function": "Function",
"variable": "Variable",
"imports": "Imports (solid line)",
"calls": "Calls (green line)",
"extends": "Extends (dashed line)"
},
"sidebar": {
"title": "Graph Explorer",
"nodeDetails": "Node Details",
"hasIssues": "Has Issues",
"filePath": "File Path",
"lineNumber": "Line Number",
"category": "Category",
"lineCount": "Lines of Code",
"documentation": "Documentation",
"tags": "Tags",
"issues": "Issues",
"instructions": "Click on a node to view details. Use the toolbar to filter nodes and edges."
},
"status": {
"nodes": "Nodes",
"edges": "Edges",
"loading": "Loading graph...",
"updating": "Updating...",
"filtered": "Showing {count} of {total} nodes"
},
"error": {
"loading": "Failed to load graph: {message}",
"empty": "No graph data available",
"unknown": "An unknown error occurred"
},
"empty": "No graph data available. Try adjusting filters or refresh the page."
}

View File

@@ -30,6 +30,26 @@
"message": "Create an issue to track bugs or feature requests."
}
},
"help": {
"gettingStarted": {
"title": "Getting Started",
"description": "Learn the basics of CCW Dashboard and workflow management",
"heading": "Getting Started with CCW"
},
"orchestratorGuide": {
"title": "Orchestrator Guide",
"description": "Master the visual workflow editor with drag-drop flows"
},
"sessionsManagement": {
"title": "Sessions Management",
"description": "Understanding workflow sessions and task tracking"
},
"cliIntegration": {
"title": "CLI Integration",
"description": "Using CCW commands and CLI tool integration",
"heading": "CLI Integration"
}
},
"errors": {
"loadFailed": "Failed to load dashboard data",
"retry": "Retry"

View File

@@ -0,0 +1,45 @@
{
"title": "Code Index",
"description": "Manage the code search index for faster navigation and code discovery",
"sections": {
"status": "Status",
"actions": "Actions",
"settings": "Settings"
},
"status": {
"idle": "Idle",
"building": "Building",
"completed": "Ready",
"failed": "Failed"
},
"actions": {
"rebuild": "Rebuild Index",
"rebuildFull": "Full Rebuild",
"cancel": "Cancel"
},
"stats": {
"totalFiles": "Total Files",
"totalFilesDesc": "Files in the index",
"lastUpdated": "Last Updated",
"lastUpdatedDesc": "When the index was last built",
"buildTime": "Build Time",
"buildTimeDesc": "Time taken for last build",
"never": "Never indexed"
},
"time": {
"justNow": "Just now",
"minutesAgo": "{value}m ago",
"hoursAgo": "{value}h ago",
"daysAgo": "{value}d ago"
},
"errors": {
"rebuildFailed": "Index rebuild failed",
"loadFailed": "Failed to load index status"
},
"settings": {
"autoRebuild": "Auto Rebuild",
"autoRebuildDesc": "Automatically rebuild index when code changes",
"rebuildInterval": "Rebuild Interval",
"rebuildIntervalDesc": "How often to check for code changes"
}
}

View File

@@ -21,7 +21,19 @@ import reviewSession from './review-session.json';
import sessionDetail from './session-detail.json';
import skills from './skills.json';
import cliManager from './cli-manager.json';
import cliMonitor from './cli-monitor.json';
import mcpManager from './mcp-manager.json';
import theme from './theme.json';
import executionMonitor from './execution-monitor.json';
import cliHooks from './cli-hooks.json';
import index from './index.json';
import rules from './rules.json';
import prompts from './prompts.json';
import explorer from './explorer.json';
import graph from './graph.json';
import notification from './notification.json';
import notifications from './notifications.json';
import workspace from './workspace.json';
/**
* Flattens nested JSON object to dot-separated keys
@@ -66,5 +78,17 @@ export default {
...flattenMessages(sessionDetail, 'sessionDetail'),
...flattenMessages(skills, 'skills'),
...flattenMessages(cliManager), // No prefix - has cliEndpoints, cliInstallations, etc. as top-level keys
...flattenMessages(cliMonitor, 'cliMonitor'),
...flattenMessages(mcpManager, 'mcp'),
...flattenMessages(theme, 'theme'),
...flattenMessages(cliHooks, 'cliHooks'),
...flattenMessages(executionMonitor, 'executionMonitor'),
...flattenMessages(index, 'index'),
...flattenMessages(rules, 'rules'),
...flattenMessages(prompts, 'prompts'),
...flattenMessages(explorer, 'explorer'),
...flattenMessages(graph, 'graph'),
...flattenMessages(notification, 'notificationPanel'),
...flattenMessages(notifications, 'notifications'),
...flattenMessages(workspace, 'workspace'),
} as Record<string, string>;

View File

@@ -19,6 +19,8 @@
"title": "No tasks in this session",
"message": "This session does not contain any tasks yet."
},
"untitled": "Untitled Task",
"discussionTopic": "Discussion Topic",
"notFound": {
"title": "Lite Task Not Found",
"message": "The requested lite task session could not be found."

View File

@@ -1,6 +1,10 @@
{
"title": "MCP Servers",
"description": "Manage Model Context Protocol (MCP) servers for cross-CLI integration",
"mode": {
"claude": "Claude",
"codex": "Codex"
},
"scope": {
"global": "Global",
"project": "Project"
@@ -18,6 +22,11 @@
"command": "Command",
"args": "Arguments",
"env": "Environment Variables",
"codex": {
"configPath": "Config Path",
"readOnly": "Read-only",
"readOnlyNotice": "Codex MCP servers are managed via config.toml and cannot be edited here."
},
"filters": {
"all": "All",
"searchPlaceholder": "Search servers by name or command..."
@@ -33,5 +42,89 @@
"emptyState": {
"title": "No MCP Servers Found",
"message": "Add an MCP server to enable cross-CLI integration with tools like Claude, Codex, and Qwen."
},
"dialog": {
"addTitle": "Add MCP Server",
"editTitle": "Edit MCP Server \"{name}\"",
"form": {
"template": "Template",
"templatePlaceholder": "Select a template to pre-fill the form",
"name": "Server Name",
"namePlaceholder": "e.g., my-mcp-server",
"command": "Command",
"commandPlaceholder": "e.g., npx, python, node",
"args": "Arguments",
"argsPlaceholder": "Comma-separated arguments, e.g., -v, --option=value",
"argsHint": "Separate multiple arguments with commas",
"env": "Environment Variables",
"envPlaceholder": "Key=value pairs (one per line), e.g.,\nAPI_KEY=your_key\nDEBUG=true",
"envHint": "Enter one key=value pair per line",
"scope": "Scope",
"enabled": "Enable this server"
},
"templates": {
"npx-stdio": "NPX STDIO",
"python-stdio": "Python STDIO",
"sse-server": "SSE Server"
},
"validation": {
"nameRequired": "Server name is required",
"nameExists": "A server with this name already exists",
"commandRequired": "Command is required"
},
"actions": {
"save": "Save",
"saving": "Saving...",
"cancel": "Cancel"
}
},
"ccw": {
"title": "CCW MCP Server",
"description": "Special built-in MCP server for CCW file operations and memory management",
"status": {
"installed": "Installed",
"notInstalled": "Not Installed",
"special": "Built-in"
},
"tools": {
"label": "Available Tools",
"core": "Core",
"write_file": {
"name": "write_file",
"desc": "Write or create new files"
},
"edit_file": {
"name": "edit_file",
"desc": "Edit or replace file contents"
},
"read_file": {
"name": "read_file",
"desc": "Read file contents"
},
"core_memory": {
"name": "core_memory",
"desc": "Manage core memory entries"
}
},
"paths": {
"label": "Path Configuration",
"projectRoot": "Project Root",
"projectRootPlaceholder": "e.g., D:\\Projects\\MyProject",
"allowedDirs": "Allowed Directories",
"allowedDirsPlaceholder": "dir1,dir2,dir3",
"allowedDirsHint": "Comma-separated list of allowed directories",
"disableSandbox": "Disable Sandbox"
},
"actions": {
"enableAll": "Enable All",
"disableAll": "Disable All",
"install": "Install CCW MCP",
"installing": "Installing...",
"uninstall": "Uninstall",
"uninstalling": "Uninstalling...",
"uninstallConfirm": "Are you sure you want to uninstall CCW MCP?",
"saveConfig": "Save Configuration",
"saving": "Saving..."
}
}
}

View File

@@ -11,11 +11,16 @@
"skills": "Skills",
"commands": "Commands",
"memory": "Memory",
"prompts": "Prompt History",
"settings": "Settings",
"mcp": "MCP Servers",
"endpoints": "CLI Endpoints",
"installations": "Installations",
"help": "Help"
"help": "Help",
"hooks": "Hooks",
"rules": "Rules",
"explorer": "File Explorer",
"graph": "Graph Explorer"
},
"sidebar": {
"collapse": "Collapse",

View File

@@ -0,0 +1,9 @@
{
"title": "Notifications",
"markAllRead": "Mark Read",
"clearAll": "Clear All",
"showMore": "Show more",
"showLess": "Show less",
"empty": "No notifications",
"emptyHint": "Notifications will appear here"
}

View File

@@ -0,0 +1,18 @@
{
"title": "Notifications",
"empty": "No notifications",
"emptyHint": "Notifications will appear here",
"markAllRead": "Mark Read",
"clearAll": "Clear All",
"showMore": "Show more",
"showLess": "Show less",
"systemNotifications": "System Notifications",
"systemNotificationsDesc": "Show browser native notifications for important events",
"justNow": "just now",
"minutesAgo": "{0}m ago",
"hoursAgo": "{0}h ago",
"daysAgo": "{0}d ago",
"oneMinuteAgo": "1m ago",
"oneHourAgo": "1h ago",
"oneDayAgo": "1d ago"
}

View File

@@ -59,5 +59,136 @@
"timeline": "Timeline",
"variables": "Variables",
"realtime": "Real-time Updates"
},
"notifications": {
"flowCreated": "Flow Created",
"flowSaved": "Flow Saved",
"saveFailed": "Save Failed",
"flowLoaded": "Flow Loaded",
"loadFailed": "Load Failed",
"flowDeleted": "Flow Deleted",
"deleteFailed": "Delete Failed",
"flowDuplicated": "Flow Duplicated",
"duplicateFailed": "Duplicate Failed"
},
"templateLibrary": {
"title": "Template Library",
"description": "Browse and import workflow templates, or export your current flow as a template.",
"searchPlaceholder": "Search templates...",
"allCategories": "All",
"exportCurrent": "Export Current",
"close": "Close",
"errors": {
"loadFailed": "Failed to load templates"
},
"emptyState": {
"title": "No templates found",
"searchSuggestion": "Try a different search query"
},
"footer": {
"templateCount": "{count} template",
"templateCount_plural": "{count} templates"
},
"card": {
"nodes": "nodes",
"import": "Import",
"delete": "Delete"
},
"exportDialog": {
"title": "Export as Template",
"description": "Save this flow as a reusable template in your library.",
"fields": {
"name": "Name",
"namePlaceholder": "Template name",
"description": "Description",
"descriptionPlaceholder": "Brief description of this template",
"category": "Category",
"categoryPlaceholder": "e.g., Development, Testing, Deployment",
"tags": "Tags (comma-separated)",
"tagsPlaceholder": "e.g., react, testing, ci/cd"
},
"actions": {
"cancel": "Cancel",
"export": "Export"
}
}
},
"toolbar": {
"placeholder": "Flow name",
"unsavedChanges": "Unsaved changes",
"new": "New",
"save": "Save",
"load": "Load",
"export": "Export",
"templates": "Templates",
"savedFlows": "Saved Flows ({count})",
"loading": "Loading...",
"noSavedFlows": "No saved flows",
"duplicate": "Duplicate",
"delete": "Delete"
},
"palette": {
"title": "Node Palette",
"open": "Open node palette",
"collapse": "Collapse palette",
"instructions": "Drag nodes onto the canvas to add them to your workflow",
"nodeTypes": "Node Types",
"tipLabel": "Tip:",
"tip": "Connect nodes by dragging from output to input handles"
},
"propertyPanel": {
"title": "Properties",
"open": "Open properties panel",
"close": "Close panel",
"selectNode": "Select a node to edit its properties",
"deleteNode": "Delete Node",
"placeholders": {
"nodeLabel": "Node label",
"commandName": "/command-name",
"commandArgs": "Command arguments",
"timeout": "60000",
"path": "/path/to/file",
"content": "File content...",
"destinationPath": "/path/to/destination",
"variableName": "variableName",
"condition": "e.g., result.success === true",
"trueLabel": "True",
"falseLabel": "False"
},
"labels": {
"label": "Label",
"command": "Command",
"arguments": "Arguments",
"executionMode": "Execution Mode",
"onError": "On Error",
"timeout": "Timeout (ms)",
"operation": "Operation",
"path": "Path",
"content": "Content",
"destinationPath": "Destination Path",
"outputVariable": "Output Variable",
"addToContext": "Add to context",
"condition": "Condition",
"trueLabel": "True Label",
"falseLabel": "False Label",
"joinMode": "Join Mode",
"failFast": "Fail fast (stop all branches on first error)"
},
"options": {
"modeAnalysis": "Analysis (Read-only)",
"modeWrite": "Write (Modify files)",
"errorStop": "Stop execution",
"errorContinue": "Continue",
"errorRetry": "Retry",
"operationRead": "Read",
"operationWrite": "Write",
"operationAppend": "Append",
"operationDelete": "Delete",
"operationCopy": "Copy",
"operationMove": "Move",
"joinModeAll": "Wait for all branches",
"joinModeAny": "Complete when any branch finishes",
"joinModeNone": "No synchronization"
}
}
}

View File

@@ -30,7 +30,14 @@
"devIndex": {
"title": "Development History",
"categories": "Categories",
"timeline": "Timeline"
"timeline": "Timeline",
"category": {
"features": "Features",
"enhancements": "Enhancements",
"bugfixes": "Bug Fixes",
"refactorings": "Refactorings",
"documentation": "Documentation"
}
},
"guidelines": {
"title": "Project Guidelines",

View File

@@ -0,0 +1,74 @@
{
"title": "Prompt History",
"description": "View and analyze your prompt history with AI insights",
"searchPlaceholder": "Search prompts...",
"filterByIntent": "Filter by intent",
"intents": {
"all": "All Intents",
"intent": "Intent",
"bug-fix": "Bug Fix",
"feature": "Feature",
"refactor": "Refactor",
"document": "Document",
"analyze": "Analyze"
},
"stats": {
"totalCount": "Total Prompts",
"totalCountDesc": "All stored prompts",
"avgLength": "Avg Length",
"avgLengthDesc": "Mean character count",
"topIntent": "Top Intent",
"topIntentDesc": "Most used category",
"noIntent": "N/A"
},
"card": {
"untitled": "Untitled Prompt",
"used": "Used {count} times"
},
"timeline": {
"ungrouped": "Ungrouped",
"session": "Session: {session}"
},
"actions": {
"copy": "Copy prompt",
"copied": "Copied!",
"delete": "Delete",
"expand": "Expand",
"collapse": "Collapse"
},
"insights": {
"title": "AI Insights",
"analyze": "Analyze",
"analyzing": "Analyzing prompts...",
"selectTool": "Select tool",
"confidence": "confidence",
"empty": {
"title": "No insights yet",
"message": "Run an analysis to get AI-powered insights about your prompt patterns and suggestions for improvement."
},
"sections": {
"insights": "Insights",
"patterns": "Detected Patterns",
"suggestions": "Suggestions"
}
},
"suggestions": {
"types": {
"refactor": "Refactor",
"optimize": "Optimize",
"fix": "Fix",
"document": "Document"
},
"effort": "Effort"
},
"dialog": {
"deleteTitle": "Delete Prompt",
"deleteConfirm": "Are you sure you want to delete this prompt? This action cannot be undone."
},
"emptyState": {
"title": "No prompts found",
"message": "No prompts match your current filter.",
"noPrompts": "No prompts yet",
"createFirst": "Create your first prompt to start building history"
}
}

View File

@@ -0,0 +1,79 @@
{
"title": "Rules Manager",
"description": "Manage Claude Code memory rules and configurations",
"severity": {
"error": "Error",
"warning": "Warning",
"info": "Info"
},
"location": {
"project": "Project",
"user": "User"
},
"actions": {
"edit": "Edit",
"delete": "Delete",
"create": "Create Rule",
"update": "Update Rule",
"toggle": "Toggle Enabled",
"enable": "Enable Rule",
"disable": "Disable Rule"
},
"filters": {
"all": "All",
"enabled": "Enabled",
"disabled": "Disabled",
"location": "Location",
"category": "Category"
},
"searchPlaceholder": "Search rules...",
"emptyState": {
"title": "No Rules Found",
"message": "No rules match your current filter.",
"createFirst": "Create your first rule to get started"
},
"card": {
"pattern": "Pattern",
"subdirectory": "Directory"
},
"dialog": {
"addTitle": "Create New Rule",
"editTitle": "Edit Rule: {name}",
"deleteTitle": "Delete Rule",
"deleteConfirm": "Are you sure you want to delete this rule? This action cannot be undone.",
"description": "Configure Claude Code memory rules to guide AI behavior",
"form": {
"name": "Rule Name",
"namePlaceholder": "e.g., Code Style Guide",
"description": "Description",
"descriptionPlaceholder": "Brief description of what this rule enforces",
"category": "Category",
"severity": "Severity",
"fileName": "File Name",
"fileNamePlaceholder": "rule-name.md",
"location": "Location",
"subdirectory": "Subdirectory (optional)",
"subdirectoryPlaceholder": "e.g., coding/security",
"pattern": "File Pattern (optional)",
"patternPlaceholder": "e.g., src/**/*.ts",
"content": "Rule Content",
"contentPlaceholder": "Enter the rule content in markdown format...",
"enabled": "Enabled"
},
"validation": {
"nameRequired": "Rule name is required",
"fileNameRequired": "File name is required",
"fileNameMd": "File name must end with .md",
"locationRequired": "Location is required",
"contentRequired": "Rule content is required"
},
"actions": {
"saving": "Saving..."
}
},
"status": {
"creating": "Creating...",
"updating": "Updating...",
"deleting": "Deleting..."
}
}

View File

@@ -0,0 +1,21 @@
{
"title": {
"colorScheme": "Color Scheme",
"themeMode": "Theme Mode"
},
"colorScheme": {
"blue": "Classic Blue",
"green": "Deep Green",
"orange": "Vibrant Orange",
"purple": "Elegant Purple"
},
"themeMode": {
"light": "Light",
"dark": "Dark"
},
"select": {
"colorScheme": "Select {name} theme",
"themeMode": "Select {name} mode"
},
"current": "Current theme: {name}"
}

View File

@@ -0,0 +1,29 @@
{
"selector": {
"noWorkspace": "No workspace selected",
"recentPaths": "Recent Projects",
"noRecentPaths": "No recent projects",
"current": "Current",
"browse": "Select Folder...",
"removePath": "Remove from recent",
"ariaLabel": "Workspace selector"
},
"dialog": {
"title": "Select Project Folder",
"placeholder": "Enter project path...",
"help": "The path to your project directory"
},
"actions": {
"switch": "Switch Workspace",
"switchFailed": "Failed to switch workspace",
"switchSuccess": "Successfully switched to {path}"
},
"validation": {
"pathRequired": "Project path is required",
"invalidPath": "Invalid project path: {path}"
},
"notifications": {
"switching": "Switching workspace...",
"refreshing": "Refreshing recent paths..."
}
}

View File

@@ -0,0 +1,160 @@
{
"title": "Hook Manager",
"description": "Manage CLI hooks for automated workflows",
"allTools": "All tools",
"trigger": {
"UserPromptSubmit": "User Prompt Submit",
"PreToolUse": "Pre Tool Use",
"PostToolUse": "Post Tool Use",
"Stop": "Stop"
},
"form": {
"name": "Hook Name",
"namePlaceholder": "my-hook",
"description": "Description",
"descriptionPlaceholder": "What does this hook do?",
"trigger": "Trigger Event",
"matcher": "Tool Matcher",
"matcherPlaceholder": "e.g., Write|Edit (optional)",
"matcherHelp": "Regex pattern to match tool names. Leave empty to match all tools.",
"command": "Command",
"commandPlaceholder": "echo 'Hello World'",
"commandHelp": "Shell command to execute. Use environment variables like $CLAUDE_TOOL_NAME."
},
"validation": {
"nameRequired": "Hook name is required",
"nameInvalid": "Hook name can only contain letters, numbers, hyphens, and underscores",
"triggerRequired": "Trigger event is required",
"commandRequired": "Command is required"
},
"actions": {
"add": "Add Hook",
"addFirst": "Create Your First Hook",
"edit": "Edit",
"delete": "Delete",
"deleteConfirm": "Are you sure you want to delete hook \"{hookName}\"?",
"enable": "Enable",
"disable": "Disable",
"expand": "Expand details",
"collapse": "Collapse details",
"expandAll": "Expand All",
"collapseAll": "Collapse All"
},
"dialog": {
"createTitle": "Create Hook",
"editTitle": "Edit Hook \"{hookName}\""
},
"stats": {
"total": "{count} total",
"enabled": "{count} enabled",
"count": "{enabled}/{total} hooks"
},
"filters": {
"searchPlaceholder": "Search hooks by name, description, or trigger..."
},
"empty": {
"title": "No hooks found",
"description": "Create your first hook to automate your CLI workflow",
"noHooksInEvent": "No hooks configured for this event"
},
"templates": {
"title": "Quick Install Templates",
"description": "One-click installation for common hook patterns",
"categories": {
"notification": "Notification",
"indexing": "Indexing",
"automation": "Automation"
},
"templates": {
"ccw-notify": {
"name": "CCW Dashboard Notify",
"description": "Send notifications to CCW dashboard when files are written"
},
"codexlens-update": {
"name": "CodexLens Auto-Update",
"description": "Update CodexLens index when files are written or edited"
},
"git-add": {
"name": "Auto Git Stage",
"description": "Automatically stage written files to git"
},
"lint-check": {
"name": "Auto ESLint",
"description": "Run ESLint on JavaScript/TypeScript files after write"
},
"log-tool": {
"name": "Tool Usage Logger",
"description": "Log all tool executions to a file for audit trail"
}
},
"actions": {
"install": "Install",
"installed": "Installed"
}
},
"wizards": {
"title": "Hook Wizard",
"launch": "Wizard",
"sectionTitle": "Hook Wizards",
"sectionDescription": "Create hooks with guided step-by-step wizards",
"platform": {
"detected": "Detected Platform",
"compatible": "Compatible",
"incompatible": "Incompatible",
"compatibilityError": "This hook is not compatible with your platform",
"compatibilityWarning": "Some features may not work on your platform"
},
"steps": {
"triggerEvent": "This hook will trigger on",
"review": {
"title": "Review Configuration",
"description": "Review your hook configuration before creating",
"hookType": "Hook Type",
"trigger": "Trigger Event",
"platform": "Platform",
"commandPreview": "Command Preview"
}
},
"navigation": {
"previous": "Previous",
"next": "Next",
"create": "Create Hook",
"creating": "Creating..."
},
"memoryUpdate": {
"title": "Memory Update Wizard",
"description": "Configure hook to update CLAUDE.md on session end",
"shortDescription": "Update CLAUDE.md automatically",
"claudePath": "CLAUDE.md Path",
"updateFrequency": "Update Frequency",
"frequency": {
"sessionEnd": "Session End",
"hourly": "Hourly",
"daily": "Daily"
}
},
"dangerProtection": {
"title": "Danger Protection Wizard",
"description": "Configure confirmation hook for dangerous operations",
"shortDescription": "Confirm dangerous operations",
"keywords": "Dangerous Keywords",
"keywordsHelp": "Enter one keyword per line",
"confirmationMessage": "Confirmation Message",
"allowBypass": "Allow bypass with --force flag"
},
"skillContext": {
"title": "SKILL Context Wizard",
"description": "Configure hook to load SKILL based on prompt keywords",
"shortDescription": "Auto-load SKILL based on keywords",
"loadingSkills": "Loading available skills...",
"keywordPlaceholder": "Enter keyword",
"selectSkill": "Select skill",
"addPair": "Add Keyword-Skill Pair",
"priority": "Priority",
"priorityHigh": "High",
"priorityMedium": "Medium",
"priorityLow": "Low",
"keywordMappings": "Keyword Mappings"
}
}
}

View File

@@ -129,5 +129,34 @@
"prompt": "提示词",
"output": "输出",
"details": "详情"
},
"streamPanel": {
"turns": "回合",
"perTurnView": "分回合视图",
"concatenatedView": "连接视图",
"userPrompt": "用户提示词",
"assistantResponse": "助手响应",
"errors": "错误",
"truncatedNotice": "输出因大小限制被截断。",
"latest": "最新",
"copyId": "复制 ID",
"copyPrompt": "复制提示词",
"concatenatedPrompt": "连接提示词",
"newRequest": "新请求",
"noOutput": "[无输出]",
"yourNextPrompt": "[您的下一条提示词]",
"conversationHistory": "对话历史",
"loading": "加载中...",
"noDetails": "无执行详情"
},
"details": {
"turn": "回合",
"tool": "工具",
"mode": "模式",
"duration": "时长",
"created": "创建时间",
"id": "ID",
"timestamp": "时间戳",
"status": "状态"
}
}

View File

@@ -0,0 +1,18 @@
{
"title": "CLI 流式监控",
"searchPlaceholder": "搜索输出...",
"noExecutions": "没有正在执行的 CLI 任务",
"noExecutionsHint": "启动 CLI 命令以查看实时输出",
"selectExecution": "选择一个任务以查看输出",
"status": {
"running": "运行中",
"completed": "已完成",
"error": "错误"
},
"recovered": "已恢复",
"lines": "行",
"autoScroll": "自动滚动",
"scrollToBottom": "滚动到底部",
"close": "关闭",
"refresh": "刷新"
}

View File

@@ -35,6 +35,7 @@
"submit": "提交",
"reset": "重置",
"resetDesc": "将所有用户偏好重置为默认值。此操作无法撤销。",
"saving": "Saving...",
"resetConfirm": "确定要将所有设置重置为默认值吗?",
"resetToDefaults": "重置为默认值",
"enable": "启用",
@@ -68,7 +69,9 @@
"creating": "创建中...",
"deleting": "删除中...",
"label": "状态",
"openIssues": "开放问题"
"openIssues": "开放问题",
"enabled": "Enabled",
"disabled": "已禁用"
},
"priority": {
"low": "低",

View File

@@ -0,0 +1,51 @@
{
"page": {
"title": "执行监控",
"subtitle": "查看实时执行状态和历史记录"
},
"currentExecution": {
"title": "当前执行",
"noExecution": "当前没有正在执行的工作流",
"expand": "展开",
"collapse": "收起"
},
"stats": {
"title": "统计数据",
"totalExecutions": "总执行次数",
"successRate": "成功率",
"avgDuration": "平均时长",
"nodeSuccessRate": "节点成功率"
},
"history": {
"title": "执行历史",
"empty": "暂无执行历史",
"tabs": {
"byWorkflow": "按工作流",
"timeline": "时间线",
"list": "列表视图"
}
},
"filters": {
"workflow": "工作流",
"status": "状态",
"dateRange": "日期范围",
"all": "所有工作流",
"allStatus": "所有状态"
},
"execution": {
"status": {
"pending": "待执行",
"running": "执行中",
"paused": "已暂停",
"completed": "已完成",
"failed": "已失败"
},
"duration": "时长",
"startedAt": "开始时间",
"completedAt": "完成时间",
"nodes": "节点",
"progress": "进度",
"logs": "日志",
"viewDetails": "查看详情"
}
}

View File

@@ -0,0 +1,57 @@
{
"title": "文件浏览器",
"description": "浏览和搜索项目文件",
"viewMode": {
"tree": "树形",
"list": "列表",
"compact": "紧凑"
},
"sortOrder": {
"name": "名称",
"size": "大小",
"modified": "修改时间",
"type": "类型"
},
"tree": {
"loading": "正在加载文件树...",
"stats": "{files} 个项目",
"empty": "未找到文件",
"error": "加载文件树失败"
},
"preview": {
"loading": "正在加载文件内容...",
"errorTitle": "加载文件错误",
"emptyTitle": "未选择文件",
"emptyMessage": "从树形视图中选择一个文件以预览其内容",
"binaryTitle": "二进制文件",
"binaryMessage": "此文件类型无法预览",
"tooLargeTitle": "文件过大",
"tooLargeMessage": "文件超过预览限制 {size}",
"copy": "复制到剪贴板",
"lastModified": "最后修改: {time}"
},
"toolbar": {
"searchPlaceholder": "搜索文件...",
"selectRoot": "选择目录",
"rootDirectory": "根目录",
"noRoots": "没有可用目录",
"viewMode": "视图模式",
"sortBy": "排序方式",
"moreOptions": "更多选项",
"options": "选项",
"showHidden": "显示隐藏文件",
"expandAll": "全部展开",
"collapseAll": "全部折叠"
},
"errors": {
"loadFailed": "加载文件树失败",
"loadFileFailed": "加载文件内容失败",
"searchFailed": "搜索失败",
"networkError": "发生网络错误"
},
"context": {
"hasClaudeMd": "包含 CLAUDE.md 上下文",
"gitRoot": "Git 仓库根目录",
"workspace": "工作区目录"
}
}

View File

@@ -40,5 +40,8 @@
"empty": {
"title": "未找到任务",
"message": "没有匹配当前筛选条件的修复任务。"
},
"phase": {
"execution": "执行"
}
}

View File

@@ -0,0 +1,97 @@
{
"title": "图浏览器",
"description": "可视化代码依赖关系",
"filters": {
"title": "筛选",
"nodeTypes": "节点类型",
"edgeTypes": "边类型",
"selectNodeTypes": "选择节点类型",
"selectEdgeTypes": "选择边类型",
"searchPlaceholder": "搜索节点...",
"showOnlyIssues": "仅显示问题",
"showIsolatedNodes": "显示孤立节点",
"minComplexity": "最小复杂度",
"maxDepth": "最大深度",
"reset": "重置"
},
"nodeTypes": {
"component": "组件",
"module": "模块",
"function": "函数",
"class": "类",
"interface": "接口",
"variable": "变量",
"file": "文件",
"folder": "文件夹",
"dependency": "依赖",
"api": "API",
"database": "数据库",
"service": "服务",
"hook": "钩子",
"utility": "工具",
"unknown": "未知"
},
"edgeTypes": {
"imports": "导入",
"exports": "导出",
"extends": "继承",
"implements": "实现",
"uses": "使用",
"dependsOn": "依赖",
"calls": "调用",
"instantiates": "实例化",
"contains": "包含",
"relatedTo": "相关",
"dataFlow": "数据流",
"event": "事件",
"unknown": "未知"
},
"actions": {
"fitView": "适应屏幕",
"refresh": "刷新",
"resetFilters": "重置筛选",
"export": "导出",
"settings": "设置",
"zoomIn": "放大",
"zoomOut": "缩小"
},
"legend": {
"title": "图例",
"nodeTypes": "节点类型",
"edgeTypes": "边类型",
"component": "组件",
"module": "模块",
"class": "类",
"function": "函数",
"variable": "变量",
"imports": "导入(实线)",
"calls": "调用(绿色线)",
"extends": "继承(虚线)"
},
"sidebar": {
"title": "图浏览器",
"nodeDetails": "节点详情",
"hasIssues": "存在问题",
"filePath": "文件路径",
"lineNumber": "行号",
"category": "类别",
"lineCount": "代码行数",
"documentation": "文档说明",
"tags": "标签",
"issues": "问题",
"instructions": "点击节点查看详情。使用工具栏筛选节点和边。"
},
"status": {
"nodes": "节点",
"edges": "边",
"loading": "加载图中...",
"updating": "更新中...",
"filtered": "显示 {count} / {total} 个节点"
},
"error": {
"loading": "加载图失败:{message}",
"empty": "没有可用的图数据",
"unknown": "发生未知错误"
},
"empty": "没有可用的图数据。尝试调整筛选器或刷新页面。"
}

View File

@@ -30,6 +30,26 @@
"message": "创建问题以跟踪错误或功能请求。"
}
},
"help": {
"gettingStarted": {
"title": "入门指南",
"description": "了解 CCW 仪表盘和工作流管理的基础知识",
"heading": "CCW 入门指南"
},
"orchestratorGuide": {
"title": "编排器指南",
"description": "掌握可视化拖放式工作流编辑器"
},
"sessionsManagement": {
"title": "会话管理",
"description": "了解工作流会话和任务跟踪"
},
"cliIntegration": {
"title": "CLI 集成",
"description": "使用 CCW 命令和 CLI 工具集成",
"heading": "CLI 集成"
}
},
"errors": {
"loadFailed": "加载仪表板数据失败",
"retry": "重试"

View File

@@ -0,0 +1,45 @@
{
"title": "代码索引",
"description": "管理代码搜索索引以实现更快的导航和代码发现",
"sections": {
"status": "状态",
"actions": "操作",
"settings": "设置"
},
"status": {
"idle": "空闲",
"building": "构建中",
"completed": "就绪",
"failed": "失败"
},
"actions": {
"rebuild": "重建索引",
"rebuildFull": "完全重建",
"cancel": "取消"
},
"stats": {
"totalFiles": "总文件数",
"totalFilesDesc": "索引中的文件数",
"lastUpdated": "最后更新",
"lastUpdatedDesc": "上次构建索引的时间",
"buildTime": "构建时间",
"buildTimeDesc": "上次构建所花费的时间",
"never": "从未索引"
},
"time": {
"justNow": "刚刚",
"minutesAgo": "{value}分钟前",
"hoursAgo": "{value}小时前",
"daysAgo": "{value}天前"
},
"errors": {
"rebuildFailed": "索引重建失败",
"loadFailed": "加载索引状态失败"
},
"settings": {
"autoRebuild": "自动重建",
"autoRebuildDesc": "代码更改时自动重建索引",
"rebuildInterval": "重建间隔",
"rebuildIntervalDesc": "检查代码更改的频率"
}
}

View File

@@ -21,7 +21,19 @@ import reviewSession from './review-session.json';
import sessionDetail from './session-detail.json';
import skills from './skills.json';
import cliManager from './cli-manager.json';
import cliMonitor from './cli-monitor.json';
import mcpManager from './mcp-manager.json';
import theme from './theme.json';
import executionMonitor from './execution-monitor.json';
import cliHooks from './cli-hooks.json';
import index from './index.json';
import rules from './rules.json';
import prompts from './prompts.json';
import explorer from './explorer.json';
import graph from './graph.json';
import notification from './notification.json';
import notifications from './notifications.json';
import workspace from './workspace.json';
/**
* Flattens nested JSON object to dot-separated keys
@@ -66,5 +78,17 @@ export default {
...flattenMessages(sessionDetail, 'sessionDetail'),
...flattenMessages(skills, 'skills'),
...flattenMessages(cliManager), // No prefix - has cliEndpoints, cliInstallations, etc. as top-level keys
...flattenMessages(cliMonitor, 'cliMonitor'),
...flattenMessages(mcpManager, 'mcp'),
...flattenMessages(theme, 'theme'),
...flattenMessages(cliHooks, 'cliHooks'),
...flattenMessages(executionMonitor, 'executionMonitor'),
...flattenMessages(index, 'index'),
...flattenMessages(rules, 'rules'),
...flattenMessages(prompts, 'prompts'),
...flattenMessages(explorer, 'explorer'),
...flattenMessages(graph, 'graph'),
...flattenMessages(notification, 'notificationPanel'),
...flattenMessages(notifications, 'notifications'),
...flattenMessages(workspace, 'workspace'),
} as Record<string, string>;

View File

@@ -19,6 +19,8 @@
"title": "此会话中没有任务",
"message": "此会话尚不包含任何任务。"
},
"untitled": "无标题任务",
"discussionTopic": "讨论主题",
"notFound": {
"title": "未找到轻量任务",
"message": "无法找到请求的轻量任务会话。"

View File

@@ -1,6 +1,10 @@
{
"title": "MCP 服务器",
"description": "管理模型上下文协议 (MCP) 服务器以实现跨 CLI 集成",
"mode": {
"claude": "Claude",
"codex": "Codex"
},
"scope": {
"global": "全局",
"project": "项目"
@@ -18,6 +22,11 @@
"command": "命令",
"args": "参数",
"env": "环境变量",
"codex": {
"configPath": "配置路径",
"readOnly": "只读",
"readOnlyNotice": "Codex MCP 服务器通过 config.toml 管理,无法在此处编辑。"
},
"filters": {
"all": "全部",
"searchPlaceholder": "按名称或命令搜索服务器..."
@@ -33,5 +42,89 @@
"emptyState": {
"title": "未找到 MCP 服务器",
"message": "添加 MCP 服务器以启用与 Claude、Codex 和 Qwen 等工具的跨 CLI 集成。"
},
"dialog": {
"addTitle": "添加 MCP 服务器",
"editTitle": "编辑 MCP 服务器 \"{name}\"",
"form": {
"template": "模板",
"templatePlaceholder": "选择模板以预填充表单",
"name": "服务器名称",
"namePlaceholder": "例如my-mcp-server",
"command": "命令",
"commandPlaceholder": "例如npx、python、node",
"args": "参数",
"argsPlaceholder": "逗号分隔的参数,例如:-v, --option=value",
"argsHint": "使用逗号分隔多个参数",
"env": "环境变量",
"envPlaceholder": "键=值对(每行一个),例如:\nAPI_KEY=your_key\nDEBUG=true",
"envHint": "每行输入一个键=值对",
"scope": "作用域",
"enabled": "启用此服务器"
},
"templates": {
"npx-stdio": "NPX STDIO",
"python-stdio": "Python STDIO",
"sse-server": "SSE 服务器"
},
"validation": {
"nameRequired": "服务器名称不能为空",
"nameExists": "已存在同名服务器",
"commandRequired": "命令不能为空"
},
"actions": {
"save": "保存",
"saving": "保存中...",
"cancel": "取消"
}
},
"ccw": {
"title": "CCW MCP 服务器",
"description": "用于 CCW 文件操作和内存管理的特殊内置 MCP 服务器",
"status": {
"installed": "已安装",
"notInstalled": "未安装",
"special": "内置"
},
"tools": {
"label": "可用工具",
"core": "核心",
"write_file": {
"name": "write_file",
"desc": "写入或创建新文件"
},
"edit_file": {
"name": "edit_file",
"desc": "编辑或替换文件内容"
},
"read_file": {
"name": "read_file",
"desc": "读取文件内容"
},
"core_memory": {
"name": "core_memory",
"desc": "管理核心内存条目"
}
},
"paths": {
"label": "路径配置",
"projectRoot": "项目根目录",
"projectRootPlaceholder": "例如D:\\Projects\\MyProject",
"allowedDirs": "允许的目录",
"allowedDirsPlaceholder": "目录1,目录2,目录3",
"allowedDirsHint": "逗号分隔的允许目录列表",
"disableSandbox": "禁用沙箱"
},
"actions": {
"enableAll": "全部启用",
"disableAll": "全部禁用",
"install": "安装 CCW MCP",
"installing": "安装中...",
"uninstall": "卸载",
"uninstalling": "卸载中...",
"uninstallConfirm": "确定要卸载 CCW MCP 吗?",
"saveConfig": "保存配置",
"saving": "保存中..."
}
}
}

View File

@@ -11,11 +11,16 @@
"skills": "技能",
"commands": "命令",
"memory": "记忆",
"prompts": "提示历史",
"settings": "设置",
"mcp": "MCP 服务器",
"endpoints": "CLI 端点",
"installations": "安装",
"help": "帮助"
"help": "帮助",
"hooks": "Hooks",
"rules": "规则",
"explorer": "文件浏览器",
"graph": "图浏览器"
},
"sidebar": {
"collapse": "收起",

View File

@@ -0,0 +1,9 @@
{
"title": "通知",
"markAllRead": "全部已读",
"clearAll": "清空全部",
"showMore": "显示更多",
"showLess": "收起",
"empty": "暂无通知",
"emptyHint": "通知将显示在这里"
}

View File

@@ -0,0 +1,18 @@
{
"title": "通知",
"empty": "暂无通知",
"emptyHint": "通知将显示在这里",
"markAllRead": "全部已读",
"clearAll": "清空全部",
"showMore": "显示更多",
"showLess": "收起",
"systemNotifications": "系统通知",
"systemNotificationsDesc": "为重要事件显示浏览器原生通知",
"justNow": "刚刚",
"minutesAgo": "{0}分钟前",
"hoursAgo": "{0}小时前",
"daysAgo": "{0}天前",
"oneMinuteAgo": "1分钟前",
"oneHourAgo": "1小时前",
"oneDayAgo": "1天前"
}

View File

@@ -59,5 +59,135 @@
"timeline": "时间线",
"variables": "变量",
"realtime": "实时更新"
},
"notifications": {
"flowCreated": "流程已创建",
"flowSaved": "流程已保存",
"saveFailed": "保存失败",
"flowLoaded": "流程已加载",
"loadFailed": "加载失败",
"flowDeleted": "流程已删除",
"deleteFailed": "删除失败",
"flowDuplicated": "流程已复制",
"duplicateFailed": "复制失败"
},
"templateLibrary": {
"title": "模板库",
"description": "浏览和导入工作流模板,或将当前流程导出为模板。",
"searchPlaceholder": "搜索模板...",
"allCategories": "全部",
"exportCurrent": "导出当前流程",
"close": "关闭",
"errors": {
"loadFailed": "加载模板失败"
},
"emptyState": {
"title": "未找到模板",
"searchSuggestion": "尝试不同的搜索查询"
},
"footer": {
"templateCount": "{count} 个模板"
},
"card": {
"nodes": "个节点",
"import": "导入",
"delete": "删除"
},
"exportDialog": {
"title": "导出为模板",
"description": "将此流程保存为可重用的模板到您的库中。",
"fields": {
"name": "名称",
"namePlaceholder": "模板名称",
"description": "描述",
"descriptionPlaceholder": "此模板的简要描述",
"category": "类别",
"categoryPlaceholder": "例如: 开发、测试、部署",
"tags": "标签 (逗号分隔)",
"tagsPlaceholder": "例如: react、testing、ci/cd"
},
"actions": {
"cancel": "取消",
"export": "导出"
}
}
},
"toolbar": {
"placeholder": "流程名称",
"unsavedChanges": "未保存的更改",
"new": "新建",
"save": "保存",
"load": "加载",
"export": "导出",
"templates": "模板",
"savedFlows": "已保存的流程 ({count})",
"loading": "加载中...",
"noSavedFlows": "无已保存的流程",
"duplicate": "复制",
"delete": "删除"
},
"palette": {
"title": "节点面板",
"open": "打开节点面板",
"collapse": "折叠面板",
"instructions": "将节点拖到画布上以将其添加到您的工作流中",
"nodeTypes": "节点类型",
"tipLabel": "提示:",
"tip": "通过从输出拖动到输入句柄来连接节点"
},
"propertyPanel": {
"title": "属性",
"open": "打开属性面板",
"close": "关闭面板",
"selectNode": "选择节点以编辑其属性",
"deleteNode": "删除节点",
"placeholders": {
"nodeLabel": "节点标签",
"commandName": "/命令名称",
"commandArgs": "命令参数",
"timeout": "60000",
"path": "/文件路径",
"content": "文件内容...",
"destinationPath": "/目标路径",
"variableName": "变量名称",
"condition": "例如: result.success === true",
"trueLabel": "真",
"falseLabel": "假"
},
"labels": {
"label": "标签",
"command": "命令",
"arguments": "参数",
"executionMode": "执行模式",
"onError": "出错时",
"timeout": "超时 (毫秒)",
"operation": "操作",
"path": "路径",
"content": "内容",
"destinationPath": "目标路径",
"outputVariable": "输出变量",
"addToContext": "添加到上下文",
"condition": "条件",
"trueLabel": "真标签",
"falseLabel": "假标签",
"joinMode": "加入模式",
"failFast": "快速失败 (首次错误时停止所有分支)"
},
"options": {
"modeAnalysis": "分析 (只读)",
"modeWrite": "写入 (修改文件)",
"errorStop": "停止执行",
"errorContinue": "继续",
"errorRetry": "重试",
"operationRead": "读取",
"operationWrite": "写入",
"operationAppend": "追加",
"operationDelete": "删除",
"operationCopy": "复制",
"operationMove": "移动",
"joinModeAll": "等待所有分支",
"joinModeAny": "任一分支完成时完成",
"joinModeNone": "无同步"
}
}
}

View File

@@ -30,7 +30,14 @@
"devIndex": {
"title": "开发历史",
"categories": "分类",
"timeline": "时间线"
"timeline": "时间线",
"category": {
"features": "功能",
"enhancements": "增强",
"bugfixes": "错误修复",
"refactorings": "重构",
"documentation": "文档"
}
},
"guidelines": {
"title": "项目规范",

View File

@@ -0,0 +1,74 @@
{
"title": "提示历史",
"description": "查看和分析您的提示历史记录,获取 AI 洞察",
"searchPlaceholder": "搜索提示...",
"filterByIntent": "按意图筛选",
"intents": {
"all": "所有意图",
"intent": "意图",
"bug-fix": "修复",
"feature": "功能",
"refactor": "重构",
"document": "文档",
"analyze": "分析"
},
"stats": {
"totalCount": "总提示数",
"totalCountDesc": "所有存储的提示",
"avgLength": "平均长度",
"avgLengthDesc": "平均字符数",
"topIntent": "主要意图",
"topIntentDesc": "最常用的类别",
"noIntent": "无"
},
"card": {
"untitled": "未命名提示",
"used": "已使用 {count} 次"
},
"timeline": {
"ungrouped": "未分组",
"session": "会话: {session}"
},
"actions": {
"copy": "复制提示",
"copied": "已复制!",
"delete": "删除",
"expand": "展开",
"collapse": "收起"
},
"insights": {
"title": "AI 洞察",
"analyze": "分析",
"analyzing": "正在分析提示...",
"selectTool": "选择工具",
"confidence": "置信度",
"empty": {
"title": "暂无洞察",
"message": "运行分析以获取关于您提示模式的 AI 驱动洞察和改进建议。"
},
"sections": {
"insights": "洞察",
"patterns": "检测到的模式",
"suggestions": "建议"
}
},
"suggestions": {
"types": {
"refactor": "重构",
"optimize": "优化",
"fix": "修复",
"document": "文档"
},
"effort": "工作量"
},
"dialog": {
"deleteTitle": "删除提示",
"deleteConfirm": "确定要删除此提示吗?此操作无法撤销。"
},
"emptyState": {
"title": "未找到提示",
"message": "没有提示匹配当前筛选条件。",
"noPrompts": "暂无提示",
"createFirst": "创建您的第一个提示以开始构建历史记录"
}
}

View File

@@ -0,0 +1,79 @@
{
"title": "规则管理器",
"description": "管理 Claude Code 记忆规则和配置",
"severity": {
"error": "错误",
"warning": "警告",
"info": "信息"
},
"location": {
"project": "项目",
"user": "用户"
},
"actions": {
"edit": "编辑",
"delete": "删除",
"create": "创建规则",
"update": "更新规则",
"toggle": "切换启用状态",
"enable": "启用规则",
"disable": "禁用规则"
},
"filters": {
"all": "全部",
"enabled": "已启用",
"disabled": "已禁用",
"location": "位置",
"category": "类别"
},
"searchPlaceholder": "搜索规则...",
"emptyState": {
"title": "未找到规则",
"message": "没有规则匹配当前的筛选条件。",
"createFirst": "创建您的第一个规则以开始使用"
},
"card": {
"pattern": "模式",
"subdirectory": "目录"
},
"dialog": {
"addTitle": "创建新规则",
"editTitle": "编辑规则: {name}",
"deleteTitle": "删除规则",
"deleteConfirm": "确定要删除此规则吗?此操作无法撤销。",
"description": "配置 Claude Code 记忆规则以指导 AI 行为",
"form": {
"name": "规则名称",
"namePlaceholder": "例如:代码风格指南",
"description": "描述",
"descriptionPlaceholder": "简要描述此规则的作用",
"category": "类别",
"severity": "严重程度",
"fileName": "文件名",
"fileNamePlaceholder": "rule-name.md",
"location": "位置",
"subdirectory": "子目录(可选)",
"subdirectoryPlaceholder": "例如coding/security",
"pattern": "文件模式(可选)",
"patternPlaceholder": "例如src/**/*.ts",
"content": "规则内容",
"contentPlaceholder": "以 markdown 格式输入规则内容...",
"enabled": "已启用"
},
"validation": {
"nameRequired": "规则名称为必填项",
"fileNameRequired": "文件名为必填项",
"fileNameMd": "文件名必须以 .md 结尾",
"locationRequired": "位置为必填项",
"contentRequired": "规则内容为必填项"
},
"actions": {
"saving": "保存中..."
}
},
"status": {
"creating": "创建中...",
"updating": "更新中...",
"deleting": "删除中..."
}
}

View File

@@ -0,0 +1,21 @@
{
"title": {
"colorScheme": "颜色主题",
"themeMode": "明暗模式"
},
"colorScheme": {
"blue": "经典蓝",
"green": "深邃绿",
"orange": "活力橙",
"purple": "优雅紫"
},
"themeMode": {
"light": "浅色",
"dark": "深色"
},
"select": {
"colorScheme": "选择{name}主题",
"themeMode": "选择{name}模式"
},
"current": "当前主题: {name}"
}

View File

@@ -0,0 +1,29 @@
{
"selector": {
"noWorkspace": "未选择工作空间",
"recentPaths": "最近的项目",
"noRecentPaths": "没有最近的项目",
"current": "当前",
"browse": "选择文件夹...",
"removePath": "从最近记录中移除",
"ariaLabel": "工作空间选择器"
},
"dialog": {
"title": "选择项目文件夹",
"placeholder": "输入项目路径...",
"help": "您的项目目录路径"
},
"actions": {
"switch": "切换工作空间",
"switchFailed": "切换工作空间失败",
"switchSuccess": "成功切换到 {path}"
},
"validation": {
"pathRequired": "项目路径不能为空",
"invalidPath": "无效的项目路径:{path}"
},
"notifications": {
"switching": "正在切换工作空间...",
"refreshing": "正在刷新最近路径..."
}
}