mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-13 02:41:50 +08:00
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:
160
ccw/frontend/src/locales/en/cli-hooks.json
Normal file
160
ccw/frontend/src/locales/en/cli-hooks.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
18
ccw/frontend/src/locales/en/cli-monitor.json
Normal file
18
ccw/frontend/src/locales/en/cli-monitor.json
Normal 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"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
51
ccw/frontend/src/locales/en/execution-monitor.json
Normal file
51
ccw/frontend/src/locales/en/execution-monitor.json
Normal 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"
|
||||
}
|
||||
}
|
||||
57
ccw/frontend/src/locales/en/explorer.json
Normal file
57
ccw/frontend/src/locales/en/explorer.json
Normal 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"
|
||||
}
|
||||
}
|
||||
@@ -40,5 +40,8 @@
|
||||
"empty": {
|
||||
"title": "No Tasks Found",
|
||||
"message": "No fix tasks match the current filter."
|
||||
},
|
||||
"phase": {
|
||||
"execution": "Execution"
|
||||
}
|
||||
}
|
||||
|
||||
97
ccw/frontend/src/locales/en/graph.json
Normal file
97
ccw/frontend/src/locales/en/graph.json
Normal 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."
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
45
ccw/frontend/src/locales/en/index.json
Normal file
45
ccw/frontend/src/locales/en/index.json
Normal 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"
|
||||
}
|
||||
}
|
||||
@@ -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>;
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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..."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
9
ccw/frontend/src/locales/en/notification.json
Normal file
9
ccw/frontend/src/locales/en/notification.json
Normal 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"
|
||||
}
|
||||
18
ccw/frontend/src/locales/en/notifications.json
Normal file
18
ccw/frontend/src/locales/en/notifications.json
Normal 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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
74
ccw/frontend/src/locales/en/prompts.json
Normal file
74
ccw/frontend/src/locales/en/prompts.json
Normal 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"
|
||||
}
|
||||
}
|
||||
79
ccw/frontend/src/locales/en/rules.json
Normal file
79
ccw/frontend/src/locales/en/rules.json
Normal 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..."
|
||||
}
|
||||
}
|
||||
21
ccw/frontend/src/locales/en/theme.json
Normal file
21
ccw/frontend/src/locales/en/theme.json
Normal 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}"
|
||||
}
|
||||
29
ccw/frontend/src/locales/en/workspace.json
Normal file
29
ccw/frontend/src/locales/en/workspace.json
Normal 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..."
|
||||
}
|
||||
}
|
||||
160
ccw/frontend/src/locales/zh/cli-hooks.json
Normal file
160
ccw/frontend/src/locales/zh/cli-hooks.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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": "状态"
|
||||
}
|
||||
}
|
||||
|
||||
18
ccw/frontend/src/locales/zh/cli-monitor.json
Normal file
18
ccw/frontend/src/locales/zh/cli-monitor.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"title": "CLI 流式监控",
|
||||
"searchPlaceholder": "搜索输出...",
|
||||
"noExecutions": "没有正在执行的 CLI 任务",
|
||||
"noExecutionsHint": "启动 CLI 命令以查看实时输出",
|
||||
"selectExecution": "选择一个任务以查看输出",
|
||||
"status": {
|
||||
"running": "运行中",
|
||||
"completed": "已完成",
|
||||
"error": "错误"
|
||||
},
|
||||
"recovered": "已恢复",
|
||||
"lines": "行",
|
||||
"autoScroll": "自动滚动",
|
||||
"scrollToBottom": "滚动到底部",
|
||||
"close": "关闭",
|
||||
"refresh": "刷新"
|
||||
}
|
||||
@@ -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": "低",
|
||||
|
||||
51
ccw/frontend/src/locales/zh/execution-monitor.json
Normal file
51
ccw/frontend/src/locales/zh/execution-monitor.json
Normal 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": "查看详情"
|
||||
}
|
||||
}
|
||||
57
ccw/frontend/src/locales/zh/explorer.json
Normal file
57
ccw/frontend/src/locales/zh/explorer.json
Normal 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": "工作区目录"
|
||||
}
|
||||
}
|
||||
@@ -40,5 +40,8 @@
|
||||
"empty": {
|
||||
"title": "未找到任务",
|
||||
"message": "没有匹配当前筛选条件的修复任务。"
|
||||
},
|
||||
"phase": {
|
||||
"execution": "执行"
|
||||
}
|
||||
}
|
||||
|
||||
97
ccw/frontend/src/locales/zh/graph.json
Normal file
97
ccw/frontend/src/locales/zh/graph.json
Normal 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": "没有可用的图数据。尝试调整筛选器或刷新页面。"
|
||||
}
|
||||
@@ -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": "重试"
|
||||
|
||||
45
ccw/frontend/src/locales/zh/index.json
Normal file
45
ccw/frontend/src/locales/zh/index.json
Normal 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": "检查代码更改的频率"
|
||||
}
|
||||
}
|
||||
@@ -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>;
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
"title": "此会话中没有任务",
|
||||
"message": "此会话尚不包含任何任务。"
|
||||
},
|
||||
"untitled": "无标题任务",
|
||||
"discussionTopic": "讨论主题",
|
||||
"notFound": {
|
||||
"title": "未找到轻量任务",
|
||||
"message": "无法找到请求的轻量任务会话。"
|
||||
|
||||
@@ -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": "保存中..."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,11 +11,16 @@
|
||||
"skills": "技能",
|
||||
"commands": "命令",
|
||||
"memory": "记忆",
|
||||
"prompts": "提示历史",
|
||||
"settings": "设置",
|
||||
"mcp": "MCP 服务器",
|
||||
"endpoints": "CLI 端点",
|
||||
"installations": "安装",
|
||||
"help": "帮助"
|
||||
"help": "帮助",
|
||||
"hooks": "Hooks",
|
||||
"rules": "规则",
|
||||
"explorer": "文件浏览器",
|
||||
"graph": "图浏览器"
|
||||
},
|
||||
"sidebar": {
|
||||
"collapse": "收起",
|
||||
|
||||
9
ccw/frontend/src/locales/zh/notification.json
Normal file
9
ccw/frontend/src/locales/zh/notification.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"title": "通知",
|
||||
"markAllRead": "全部已读",
|
||||
"clearAll": "清空全部",
|
||||
"showMore": "显示更多",
|
||||
"showLess": "收起",
|
||||
"empty": "暂无通知",
|
||||
"emptyHint": "通知将显示在这里"
|
||||
}
|
||||
18
ccw/frontend/src/locales/zh/notifications.json
Normal file
18
ccw/frontend/src/locales/zh/notifications.json
Normal 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天前"
|
||||
}
|
||||
@@ -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": "无同步"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,14 @@
|
||||
"devIndex": {
|
||||
"title": "开发历史",
|
||||
"categories": "分类",
|
||||
"timeline": "时间线"
|
||||
"timeline": "时间线",
|
||||
"category": {
|
||||
"features": "功能",
|
||||
"enhancements": "增强",
|
||||
"bugfixes": "错误修复",
|
||||
"refactorings": "重构",
|
||||
"documentation": "文档"
|
||||
}
|
||||
},
|
||||
"guidelines": {
|
||||
"title": "项目规范",
|
||||
|
||||
74
ccw/frontend/src/locales/zh/prompts.json
Normal file
74
ccw/frontend/src/locales/zh/prompts.json
Normal 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": "创建您的第一个提示以开始构建历史记录"
|
||||
}
|
||||
}
|
||||
79
ccw/frontend/src/locales/zh/rules.json
Normal file
79
ccw/frontend/src/locales/zh/rules.json
Normal 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": "删除中..."
|
||||
}
|
||||
}
|
||||
21
ccw/frontend/src/locales/zh/theme.json
Normal file
21
ccw/frontend/src/locales/zh/theme.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"title": {
|
||||
"colorScheme": "颜色主题",
|
||||
"themeMode": "明暗模式"
|
||||
},
|
||||
"colorScheme": {
|
||||
"blue": "经典蓝",
|
||||
"green": "深邃绿",
|
||||
"orange": "活力橙",
|
||||
"purple": "优雅紫"
|
||||
},
|
||||
"themeMode": {
|
||||
"light": "浅色",
|
||||
"dark": "深色"
|
||||
},
|
||||
"select": {
|
||||
"colorScheme": "选择{name}主题",
|
||||
"themeMode": "选择{name}模式"
|
||||
},
|
||||
"current": "当前主题: {name}"
|
||||
}
|
||||
29
ccw/frontend/src/locales/zh/workspace.json
Normal file
29
ccw/frontend/src/locales/zh/workspace.json
Normal 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": "正在刷新最近路径..."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user