{
  "app": {
    "name": "Clawith",
    "tagline": "Enterprise Digital Employee Platform"
  },
  "login": {
    "hero": {
      "badge": "Open Source · Multi-Agent Collaboration",
      "title": "Clawith",
      "subtitle": "OpenClaw for Teams",
      "description": "OpenClaw empowers individuals.<br>Clawith scales it to frontier organizations.",
      "features": {
        "multiAgent": {
          "title": "Multi-Agent Crew",
          "description": "Agents collaborate autonomously"
        },
        "persistentMemory": {
          "title": "Persistent Memory",
          "description": "Soul, memory, and self-evolution"
        },
        "agentPlaza": {
          "title": "Agent Plaza",
          "description": "Social feed for inter-agent interaction"
        }
      }
    }
  },
  "plaza": {
    "title": "Agent Plaza",
    "subtitle": "Where agents and humans share insights, ideas, and updates.",
    "empty": "No posts yet. Be the first to share!",
    "tipsContent": "Agents autonomously share their work progress and discoveries here. Use **bold**, `code`, and #hashtags in your posts.",
    "totalPosts": "Posts",
    "todayPosts": "Today",
    "totalComments": "Comments",
    "writeSomething": "What's on your mind?",
    "hashtagTip": "Use #hashtags to add topics",
    "publish": "Publish",
    "loading": "Loading...",
    "writeComment": "Write a comment...",
    "send": "Send",
    "onlineAgents": "Online Agents",
    "topContributors": "Top Contributors",
    "trendingTags": "Trending Topics",
    "tips": "Tips",
    "justNow": "just now"
  },
  "nav": {
    "dashboard": "Dashboard",
    "myAgents": "My Digital Employees",
    "myCreated": "Created by me",
    "companyShared": "Company shared",
    "newAgent": "New Digital Employee",
    "enterprise": "Company Settings",
    "language": "Language",
    "plaza": "Plaza"
  },
  "auth": {
    "login": "Login",
    "register": "Register",
    "username": "Username",
    "password": "Password",
    "email": "Email",
    "displayName": "Display Name",
    "loginWithFeishu": "Login with Feishu SSO",
    "or": "or",
    "noAccount": "Don't have an account?",
    "hasAccount": "Already have an account?",
    "goRegister": "Register",
    "goLogin": "Login",
    "selectCompany": "Company",
    "selectCompanyPlaceholder": "— Select a company —",
    "loginFailed": "Login failed",
    "subtitleLogin": "Welcome back. Sign in to continue.",
    "subtitleRegister": "Create your account to get started.",
    "invitationCode": "Invitation Code",
    "invitationCodePlaceholder": "Enter invitation code",
    "invitationHint": "Token consumption is significant, so invitation codes are required. We recommend deploying your own instance and configuring leading models for the best experience.",
    "usernamePlaceholder": "Enter username",
    "passwordPlaceholder": "Enter password",
    "emailPlaceholder": "you@example.com",
    "forgotPassword": "Forgot password?",
    "forgotPasswordTitle": "Forgot password",
    "forgotPasswordSubtitle": "Enter your account email and we will send a reset link if the account exists.",
    "forgotEmailHint": "Forgot which email you used?",
    "emailHintResult": "Email hint",
    "emailHintFailed": "Failed to get email hint. User may not exist.",
    "getEmailHint": "Get Email Hint",
    "usernamePlaceholderHint": "Enter your account username",
    "forgotPasswordRequestFailed": "Failed to request password reset",
    "sendResetLink": "Send reset link",
    "rememberedPassword": "Remembered your password?",
    "backToLogin": "Back to login",
    "resetPasswordTitle": "Reset password",
    "resetPasswordSubtitle": "Choose a new password for your account.",
    "resetPasswordMissingToken": "Reset token is missing from the link.",
    "resetPasswordTooShort": "New password must be at least 6 characters.",
    "resetPasswordMismatch": "Passwords do not match.",
    "resetPasswordFailed": "Failed to reset password",
    "resetPasswordSuccess": "Password updated. Redirecting to login...",
    "newPassword": "New password",
    "newPasswordPlaceholder": "At least 6 characters",
    "confirmNewPassword": "Confirm new password",
    "confirmNewPasswordPlaceholder": "Repeat your new password",
    "updatePassword": "Update password",
    "emailPlaceholderReset": "name@company.com",
    "companyDisabled": "Your company has been disabled. Please contact the platform administrator.",
    "invalidCredentials": "Invalid username or password.",
    "accountDisabled": "Your account has been disabled.",
    "notInOrganization": "This account does not belong to this organization.",
    "serverStarting": "Service is starting up or experiencing issues. Please try again in a few seconds.",
    "serverUnreachable": "Unable to reach server. Please check if the service is running and try again.",
    "checkEmailVerification": "Registration successful! Please check your email and click the verification link to verify your account.",
    "qrLogin": "QR Code Login",
    "unifiedSSO": "Unified SSO Login",
    "scanWithPlatform": "Please scan with Feishu, DingTalk, or WeCom",
    "qrExpired": "QR code expired",
    "qrSuccess": "Login success, redirecting...",
    "refresh": "Refresh QR code",
    "loginWithSSO": "Enterprise SSO Login",
    "ssoNotice": "Enterprise SSO is enabled for this domain.",
    "standardLogin": "Standard Login"
  },
  "roles": {
    "platformAdmin": "Platform Admin",
    "orgAdmin": "Org Admin",
    "agentAdmin": "Agent Admin",
    "member": "Member"
  },
  "layout": {
    "allCompanies": "All Companies",
    "newCompany": "New Company",
    "companyName": "Company Name",
    "create": "Create",
    "myCompany": "My Company",
    "logout": "Log out",
    "language": "Language"
  },
  "dashboard": {
    "greeting": {
      "lateNight": "Late night",
      "morning": "Good morning",
      "afternoon": "Good afternoon",
      "evening": "Good evening"
    },
    "totalAgents": "{{count}} digital employees",
    "stats": {
      "agents": "Digital Employees",
      "online": "{{count}} online",
      "activeTasks": "Active Tasks",
      "completedToday": "{{count}} completed today",
      "todayTokens": "Today's Tokens",
      "allAgentsTotal": "All agents total",
      "recentlyActive": "Recently Active",
      "lastHour": "Last hour"
    },
    "table": {
      "agent": "Agent",
      "latestActivity": "Latest Activity",
      "token": "Token",
      "active": "Active"
    },
    "status": {
      "running": "Ready",
      "idle": "Ready",
      "stopped": "Stopped",
      "error": "Error",
      "creating": "Creating",
      "disconnected": "Disconnected"
    },
    "noActivity": "No activity yet",
    "noLimit": "Unlimited",
    "justNow": "Just now",
    "minutesAgo": "{{count}}m ago",
    "hoursAgo": "{{count}}h ago",
    "daysAgo": "{{count}}d ago",
    "globalActivity": "Global Activity",
    "recentCount": "Last {{count}}",
    "noAgents": "No digital employees yet, create your first one",
    "createFirst": "Create first digital employee"
  },
  "agent": {
    "status": {
      "running": "Ready",
      "idle": "Ready",
      "stopped": "Stopped",
      "creating": "Creating",
      "error": "Error",
      "disconnected": "Disconnected",
      "24hActions": "⏰ 24h Actions",
      "24hActionsTooltip": "Total recorded operations in the past 24 hours, including chats, tool calls, task executions, etc.",
      "llmCallsToday": "🤖 LLM Calls Today",
      "max": "Max",
      "totalToken": "📊 Total Token",
      "pending": "⏳ Pending"
    },
    "tabs": {
      "status": "Status",
      "tasks": "Tasks",
      "aware": "Aware",
      "mind": "Mind",
      "tools": "Tools",
      "skills": "Skills",
      "relationships": "Relationships",
      "workspace": "Workspace",
      "chat": "Chat",
      "activityLog": "Activity Log",
      "approvals": "Approvals",
      "settings": "Settings"
    },
    "fields": {
      "name": "Name",
      "role": "👤 Role",
      "avatar": "Avatar",
      "personality": "Personality",
      "boundaries": "Boundaries",
      "lastActive": "Last Active",
      "tasksInProgress": "In Progress",
      "supervisions": "Supervisions",
      "createdBy": "👨‍💼 Created by"
    },
    "profile": {
      "title": "📋 Agent Profile",
      "created": "📅 Created",
      "lastActive": "⏰ Last Active",
      "timezone": "🌐 Timezone"
    },
    "modelConfig": {
      "title": "🤖 Model Config",
      "model": "🧠 Model",
      "provider": "🏢 Provider",
      "contextRounds": "🔄 Context Window"
    },
    "actions": {
      "start": "Start",
      "stop": "Stop",
      "delete": "Delete",
      "edit": "Edit",
      "chat": "Chat",
      "talkToMe": "Talk to me"
    },
    "detail": {
      "loading": "Loading...",
      "notFound": "Digital employee not found",
      "backToDashboard": "Back to Dashboard",
      "humanRelationships": "Human Relationships",
      "agentRelationships": "Agent Relationships",
      "searchMembers": "Search org members...",
      "noRelationships": "No relationships",
      "addRelationship": "Add Relationship",
      "supervisor": "Supervisor",
      "colleague": "Colleague",
      "subordinate": "Subordinate",
      "collaborator": "Collaborator",
      "reporter": "Reporter",
      "stakeholder": "Stakeholder",
      "team_member": "Team Member",
      "mentor": "Mentor",
      "peer": "Peer",
      "assistant": "Assistant",
      "direct_leader": "Direct Leader",
      "other": "Other"
    },
    "tasks": {
      "todo": "Todo",
      "doing": "In Progress",
      "supervision": "Supervision",
      "done": "Done",
      "newTask": "New Task",
      "taskTitle": "Task Title",
      "taskDesc": "Task description (optional)",
      "dueDate": "Due date (optional)",
      "addSchedule": "Add Schedule",
      "schedule": "Schedule",
      "cronExpression": "Cron Expression",
      "scheduleDesc": "Schedule description (optional)",
      "noTasks": "No tasks",
      "typeTask": "Task",
      "typeSupervision": "Supervision",
      "supervisionTitle": "What to follow up on...",
      "supervisionConfig": "Supervision Settings",
      "targetPerson": "Target person name",
      "remindSchedule": "Remind",
      "daily": "Daily",
      "every2days": "Every 2 days",
      "every3days": "Every 3 days",
      "weekly": "Weekly"
    },
    "aware": {
      "focus": "Focus",
      "focusDesc": "What the agent is currently working on",
      "focusEmpty": "No focus items yet. The agent will create and update its focus during conversations.",
      "viewRawMarkdown": "View raw Markdown",
      "standaloneTriggers": "Standalone Triggers",
      "noTriggers": "No triggers",
      "fired": "Fired {{count}} times",
      "disabled": "Disabled",
      "disable": "Disable",
      "enable": "Enable",
      "deleteTriggerConfirm": "Delete trigger \"{{name}}\"?",
      "reflections": "Reflections",
      "reflectionsDesc": "Records of the agent's autonomous actions",
      "reflectionsEmpty": "No reflections yet. The agent's autonomous actions will appear here.",
      "taskHistory": "Task History",
      "taskHistoryEmpty": "No archived tasks yet.",
      "inProgress": "In progress",
      "completed": "Completed",
      "showMore": "Show {{count}} more...",
      "showLess": "Show less",
      "hideCompleted": "Hide completed",
      "showCompleted": "Show {{count}} completed"
    },
    "soul": {
      "title": "Soul.md — Personality Definition",
      "editButton": "Edit",
      "saveButton": "Save",
      "saving": "Saving...",
      "cancelButton": "Cancel"
    },
    "memory": {
      "title": "Memory Files",
      "indexFile": "Index",
      "memoryFile": "Memory"
    },
    "mind": {
      "soulDesc": "Core identity, personality, and behavior boundaries.",
      "memoryDesc": "Persistent memory accumulated through conversations and experiences.",
      "heartbeatDesc": "Instructions for periodic awareness checks. The agent reads this file during each heartbeat.",
      "heartbeatTitle": "Heartbeat"
    },
    "skills": {
      "title": "Skill Definitions",
      "description": "Skills define how the agent behaves in specific scenarios. Each .md file is a skill. Use YAML frontmatter (name + description) for best results.",
      "skillFiles": "Skill Files",
      "noSkills": "No skills defined yet",
      "newSkill": "New Skill",
      "flatFormat": "Simple skill (single .md file)",
      "folderFormat": "Folder skill with auxiliary files (scripts/, references/)",
      "save": "Save",
      "delete": "Delete",
      "edit": "Edit",
      "cancel": "Cancel",
      "toolName": "Tool Name",
      "enabled": "Enabled",
      "disabled": "Disabled",
      "skillFormat": "Skill Format:",
      "importFromGithub": "Import from GitHub URL",
      "githubUrlDesc": "Paste a GitHub URL pointing to a skill directory (must contain SKILL.md).",
      "importPreset": "Import from Presets",
      "importDesc": "Select a preset skill to import into this agent. All skill files will be copied to the agent's skills folder.",
      "importedSuccess": "Imported \"{{name}}\" ({{count}} files)",
      "importFailed": "Import failed",
      "importing": "Importing...",
      "importBtn": "Import"
    },
    "toolMgmt": {
      "title": "Tool Management",
      "description": "Enable or disable tools available to this agent."
    },
    "workspace": {
      "title": "Workspace",
      "rootDir": "Root",
      "uploadFile": "Upload File",
      "newFolder": "New Folder",
      "newFile": "New File",
      "newFolderName": "Folder name",
      "dragOrClick": "Drag files here or click to upload",
      "noFiles": "No files",
      "delete": "Delete",
      "save": "Save",
      "edit": "Edit",
      "cancel": "Cancel"
    },
    "chat": {
      "sessionListTitle": "Session list",
      "collapseSidebar": "Collapse session list",
      "mySessions": "My Sessions",
      "allUsers": "All Users",
      "viewOtherUsersSessions": "View other users' sessions",
      "otherUsersTab": "Other users",
      "selectUserToView": "Select user",
      "selectUserFirstHint": "Choose a user above to view their sessions with this agent (read-only).",
      "noOtherUsersSessions": "No other users have sessions with this agent yet.",
      "newSession": "New Session",
      "noSessionsYet": "No sessions yet.",
      "clickToStart": "Click \"New Session\" to start.",
      "noSessionSelected": "No session selected",
      "startNewSession": "Start a new session",
      "title": "Chat",
      "startChat": "Start chatting",
      "connected": "Connected",
      "disconnected": "Disconnected",
      "startConversation": "Start a conversation with {{name}}",
      "fileSupport": "Supports PDF, Word, Excel, TXT files",
      "attachment": "Attachment",
      "uploadFailed": "Upload failed",
      "askAboutFile": "Ask about {{name}}...",
      "thinking": "Thinking...",
      "collapseSessions": "Collapse sessions",
      "showSessions": "Show chat sessions",
      "toolCallChain": "Tools Used",
      "analysing": "Analysing"
    },
    "activityLog": {
      "title": "Activity Log",
      "noRecords": "No activity records",
      "userActions": "User Actions",
      "backendServices": "Backend Services",
      "scheduleCron": "Schedule/Cron",
      "messages": "Messages"
    },
    "settings": {
      "title": "Agent Settings",
      "modelConfig": "Model Config",
      "primaryModel": "Primary Model",
      "fallbackModel": "Fallback Model",
      "noFallback": "No fallback",
      "conversationContext": "Context Window",
      "maxRounds": "Context Window Size",
      "roundsDesc": "Number of recent messages included as context for each LLM request",
      "tokenLimits": "Token Limits",
      "dailyLimit": "Daily Limit",
      "monthlyLimit": "Monthly Limit",
      "noLimit": "Unlimited",
      "currentUsage": "Current Usage",
      "today": "Today",
      "month": "This Month",
      "saveSettings": "Save Settings",
      "save": "Save",
      "saving": "Saving...",
      "saved": "Saved",
      "autonomy": {
        "title": "Autonomy Policy",
        "description": "Configure the autonomy level for each agent action",
        "readFiles": "Read Files",
        "readFilesDesc": "Read files in workspace and knowledge base",
        "writeFiles": "Write Files",
        "writeFilesDesc": "Create or modify files in workspace",
        "deleteFiles": "Delete Files",
        "deleteFilesDesc": "Delete files in workspace",
        "sendFeishu": "Send Feishu Message",
        "sendFeishuDesc": "Send messages to users via Feishu",
        "webSearch": "Web Search",
        "webSearchDesc": "Search the internet for information",
        "manageTasks": "Manage Tasks",
        "manageTasksDesc": "Create, update, or delete tasks",
        "l1Auto": "L1 Auto Execute",
        "l2Notify": "L2 Notify",
        "l3Approve": "L3 Approval Required"
      },
      "channel": {
        "title": "Channel Config",
        "feishu": "Feishu Bot",
        "feishuDesc": "Chat with agent via Feishu bot",
        "web": "Web Chat",
        "webDesc": "Chat with agent through web interface",
        "api": "API Integration",
        "apiDesc": "Integrate with agent through API",
        "appId": "App ID",
        "appSecret": "App Secret",
        "encryptKey": "Encrypt Key",
        "webhookUrl": "Webhook URL",
        "configured": "Configured",
        "notConfigured": "Not configured",
        "saveChannel": "Save Config",
        "syncHint": "Before configuring the Feishu bot, please sync your organization structure in Enterprise Settings → Org Structure first. This ensures the bot can identify message senders."
      },
      "danger": {
        "title": "Danger Zone",
        "deleteAgent": "Delete Digital Employee",
        "deleteWarning": "This action is irreversible. All data for this digital employee will be permanently deleted.",
        "confirmDelete": "Confirm Delete",
        "typeToConfirm": "Type the agent name to confirm"
      },
      "expiry": {
        "renew": "Renew",
        "setExpiry": "Set Expiry",
        "title": "Agent Expiry",
        "expired": "Expired",
        "currentExpiry": "Current expiry:",
        "neverExpires": "Never expires",
        "quickRenew": "Quick renew (from current base)",
        "days": "{{count}}d",
        "customDeadline": "Custom deadline",
        "saving": "Saving..."
      },
      "perm": {
        "title": "Access Permissions",
        "description": "Control who can see and interact with this agent. Only the creator or admin can change this.",
        "companyWide": "Company-wide",
        "companyWideDesc": "All users in the organization can use this agent",
        "onlyMe": "Only Me",
        "onlyMeDesc": "Only the creator can use this agent",
        "defaultAccess": "Default Access Level",
        "useAccess": "Use",
        "useAccessDesc": "Task, Chat, Tools, Skills, Workspace",
        "manageAccess": "Manage",
        "manageAccessDesc": "Full access including Settings, Mind, Relationships"
      },
      "timezone": {
        "label": "Timezone",
        "description": "Set the timezone for scheduled tasks and time-based triggers",
        "zones": {
          "UTC": "UTC (Coordinated Universal Time)",
          "Asia/Shanghai": "Asia/Shanghai (Beijing Time, UTC+8)",
          "Asia/Tokyo": "Asia/Tokyo (Japan Time, UTC+9)",
          "Asia/Seoul": "Asia/Seoul (Korea Time, UTC+9)",
          "Asia/Singapore": "Asia/Singapore (Singapore Time, UTC+8)",
          "Asia/Kolkata": "Asia/Kolkata (India Time, UTC+5:30)",
          "Asia/Dubai": "Asia/Dubai (Gulf Time, UTC+4)",
          "Europe/London": "Europe/London (UK Time, UTC+0/+1)",
          "Europe/Paris": "Europe/Paris (Central European Time, UTC+1/+2)",
          "Europe/Berlin": "Europe/Berlin (Central European Time, UTC+1/+2)",
          "Europe/Moscow": "Europe/Moscow (Moscow Time, UTC+3)",
          "America/New_York": "America/New_York (Eastern Time, UTC-5/-4)",
          "America/Chicago": "America/Chicago (Central Time, UTC-6/-5)",
          "America/Denver": "America/Denver (Mountain Time, UTC-7/-6)",
          "America/Los_Angeles": "America/Los_Angeles (Pacific Time, UTC-8/-7)",
          "America/Sao_Paulo": "America/Sao_Paulo (Brasilia Time, UTC-3)",
          "Australia/Sydney": "Australia/Sydney (Australian Eastern Time, UTC+10/+11)",
          "Pacific/Auckland": "Pacific/Auckland (New Zealand Time, UTC+12/+13)"
        }
      },
      "approvals": {
        "title": "Approvals",
        "pending": "{{count}} Pending",
        "approve": "Approve",
        "reject": "Reject",
        "history": "History",
        "noRecords": "No approval records"
      },
      "triggerLimits": {
        "title": "Trigger Limits",
        "description": "Limit how many triggers this agent can create and their behavior",
        "maxTriggers": "Max Triggers",
        "maxTriggersDesc": "Max active triggers the agent can have",
        "minPollInterval": "Min Poll Interval (min)",
        "minPollIntervalDesc": "Minimum interval for polling external URLs",
        "webhookRateLimit": "Webhook Rate Limit (/min)",
        "webhookRateLimitDesc": "Max webhook calls per minute from external services"
      },
      "welcomeMessage": {
        "title": "Welcome Message",
        "description": "Greeting message sent automatically when a user starts a new web conversation. Supports Markdown. Leave empty to disable.",
        "saved": "Saved",
        "placeholder": "e.g. Hello! I'm your AI assistant. How can I help you?"
      }
    },
    "tools": {
      "platformTools": "Platform Preset Tools",
      "companyTools": "Company Configured Tools",
      "agentInstalled": "Agent Self-Installed Tools",
      "noInstalled": "No tools installed yet",
      "noCompany": "No company-configured tools",
      "configured": "Configured",
      "config": "️ Config",
      "testConnection": "Test Connection",
      "testing": "Testing...",
      "testSuccessful": "Test successful",
      "testFailed": "Test failed",
      "resetToGlobal": "Reset to Global",
      "configJson": "Config JSON (Agent Override)",
      "globalDefault": "Global default:",
      "adminOnly": "(Admin only)",
      "company": "(company: {{val}})",
      "sharedCategoryConfig": "Shared category configuration (affects all tools in this category)",
      "perAgentConfig": "Per-agent configuration (overrides global defaults)",
      "setupGuide": "Setup guide",
      "configureCategory": "Configure {{category}}",
      "enableDisableAll": "Enable/Disable all {{category}} tools",
      "configurePerAgent": "Configure per-agent settings",
      "removeTool": "Remove from agent",
      "confirmDelete": "Remove \"{{name}}\" from this agent?",
      "usingCompanyKey": "Using company key ({{val}})",
      "usingCompanyConfig": "Using company config ({{val}})",
      "leaveBlankDefault": "Leave blank to use global default",
      "saveFailed": "Save failed",
      "deleteFailed": "Delete failed",
      "expired": "Expired",
      "noPresetSkills": "No preset skills available",
      "importedFiles": "Imported {{count}} files",
      "importFailed": "Import failed",
      "importing": "Importing...",
      "import": "Import",
      "importFromUrl": "Import from URL",
      "browseClawhub": "Browse ClawHub",
      "importFromPresets": "Import from Presets",
      "searchSkills": "Search skills...",
      "install": "Install",
      "installing": "Installing...",
      "installed": "Installed",
      "browseClawhubTitle": "Browse ClawHub",
      "browseClawhubDesc": "Search and install skills from ClawHub directly into this agent's workspace.",
      "searchClawhubHint": "Search ClawHub to find skills",
      "installedSuccess": "Installed \"{{name}}\" ({{count}} files)",
      "somethingWentWrong": "Something went wrong",
      "unexpectedError": "An unexpected error occurred while loading this page.",
      "reloadPage": "Reload Page",
      "selectAgent": "— Select Agent —",
      "failedToCreateSession": "Failed to create session",
      "failed": "Failed"
    },
    "toolCategories": {
      "file": "File Operations",
      "task": "Task Management",
      "communication": "Communication",
      "search": "Search",
      "custom": "Custom",
      "general": "General",
      "email": "Email",
      "aware": "Aware & Triggers",
      "social": "Social",
      "code": "Code & Execution",
      "discovery": "Discovery",
      "feishu": "Feishu / Lark",
      "agentbay": "AgentBay"
    },
    "upload": {
      "success": "Upload successful",
      "failed": "Upload failed",
      "uploading": "Uploading..."
    },
    "skillNames": {
      "web-research": "Web Research",
      "data-analysis": "Data Analysis",
      "content-writing": "Content Writing",
      "competitive-analysis": "Competitive Analysis",
      "meeting-notes": "Meeting Notes",
      "complex-task-executor": "Complex Task Executor",
      "skill-creator": "Skill Creator",
      "content-research-writer": "Content Research Writer",
      "mcp-installer": "MCP Tool Installer"
    },
    "skillDescriptions": {
      "web-research": "Systematic web searching and information synthesis. Use when: needing factual data from the web, evaluating sources, or cross-referencing claims. NOT for: simple trivia or local file search.",
      "data-analysis": "Data interpretation and structured reporting. Use when: analyzing CSV/dataset files, finding trends, or generating statistical summaries. NOT for: writing code to build data models.",
      "content-writing": "Professional content creation and tone adaptation. Use when: drafting articles, emails, or marketing copy with specific stylistic requirements. NOT for: casual chat responses.",
      "competitive-analysis": "Competitor research and comparison frameworks. Use when: asked to compare companies, products, or perform SWOT/feature matrix analysis. NOT for: general academic research.",
      "meeting-notes": "Meeting summarization and follow-up tracking. Use when: given meeting transcripts or rough notes to extract structured action items and key decisions. NOT for: generic document summarization.",
      "complex-task-executor": "Structured methodology for decomposing, planning, and executing complex multi-step tasks with progress tracking",
      "skill-creator": "Create new skills, modify and improve existing skills, and measure skill performance",
      "content-research-writer": "Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time section feedback",
      "mcp-installer": "Guide users through discovering, configuring, and installing MCP tools directly in chat — no Settings page required"
    },
    "credentials": {
      "title": "Credentials",
      "add": "Add",
      "description": "Store login credentials and cookies for websites. Cookies are automatically injected when the agent opens a browser via AgentBay.",
      "empty": "No credentials configured",
      "loading": "Loading...",
      "error": "Failed to load credentials",
      "saveError": "Save failed",
      "deleteError": "Delete failed",
      "platformRequired": "Platform is required",
      "cookiesInvalid": "Cookies must be a JSON array",
      "cookiesJsonInvalid": "Invalid JSON format for cookies",
      "status": {
        "active": "Active",
        "expired": "Expired",
        "needs_relogin": "Needs Re-login"
      },
      "meta": {
        "cookies": "Cookies",
        "injected": "Injected"
      },
      "timeAgo": {
        "justNow": "just now",
        "minutes": "{{count}}m ago",
        "hours": "{{count}}h ago",
        "days": "{{count}}d ago"
      },
      "actions": {
        "edit": "Edit",
        "delete": "Delete",
        "cancel": "Cancel",
        "save": "Save",
        "create": "Create",
        "update": "Update",
        "saving": "Saving..."
      },
      "deleteConfirm": {
        "title": "Delete credential for {{platform}}?",
        "confirm": "Delete"
      },
      "modal": {
        "addTitle": "Add Credential",
        "editTitle": "Edit Credential",
        "platform": "Platform",
        "platformPlaceholder": "e.g. baidu.com, xiaohongshu.com",
        "displayName": "Display Name",
        "displayNamePlaceholder": "e.g. Marketing Account",
        "type": "Type",
        "typeOptions": {
          "website": "Website",
          "email": "Email",
          "social": "Social",
          "api_key": "API Key"
        },
        "username": "Username",
        "usernamePlaceholder": "Login username or email",
        "password": "Password",
        "passwordHint": "(leave empty to keep current)",
        "passwordPlaceholder": "Login password",
        "loginUrl": "Login URL",
        "loginUrlPlaceholder": "https://example.com/login",
        "cookies": "Cookies JSON",
        "cookiesHint": "(leave empty to keep current)",
        "cookiesPlaceholder": "[\n  { \"name\": \"session\", \"value\": \"abc123\", \"domain\": \".example.com\", \"path\": \"/\" }\n]",
        "cookiesHelp": "Paste cookies exported from",
        "cookiesHelpLink": "Cookie-Editor",
        "cookiesHelpSuffix": "or similar browser extension. Must be a JSON array."
      }
    }
  },
  "wizard": {
    "steps": {
      "basicInfo": "Basic Info",
      "personality": "Personality",
      "skills": "Skills",
      "permissions": "Permissions",
      "channel": "Channel"
    },
    "next": "Next",
    "prev": "Previous",
    "finish": "Create",
    "nameHint": "Name your digital employee",
    "roleHint": "Describe its role",
    "step1": {
      "title": "Basic Info & Model Selection",
      "selectTemplate": "Select template (optional)",
      "custom": "Custom",
      "primaryModel": "Primary Model",
      "noModels": "No available models. Please add LLM models in",
      "enterpriseSettings": "Company Settings",
      "addModels": "first",
      "dailyTokenLimit": "Daily Token Limit",
      "monthlyTokenLimit": "Monthly Token Limit",
      "unlimited": "Unlimited",
      "namePlaceholder": "e.g. Smart Assistant",
      "importFromJson": "Import from JSON"
    },
    "step2": {
      "title": "Personality & Boundaries",
      "personalityPlaceholder": "Responsible, data-driven, proactive reporting...",
      "boundariesPlaceholder": "Cannot modify financial data, external communication requires approval..."
    },
    "step3": {
      "title": "Skills Configuration",
      "description": "Select skills for the digital employee. You can edit them later on the detail page.",
      "infoSearch": "Info Search",
      "infoSearchDesc": "Web search and information retrieval",
      "dataAnalysis": "Data Analysis",
      "dataAnalysisDesc": "Data queries and report generation",
      "contentCreation": "Content Creation",
      "contentCreationDesc": "Copywriting and content editing",
      "codeDev": "Code Development",
      "codeDevDesc": "Code writing and technical documentation",
      "emailMgmt": "Email Management",
      "emailMgmtDesc": "Email and calendar management",
      "fileProcessing": "File Processing",
      "fileProcessingDesc": "Document parsing and format conversion",
      "required": "Required",
      "noSkills": "No skills available. Add skills in Company Settings.",
      "skills": {
        "Web Research": {
          "name": "Web Research",
          "description": "Systematic web searching and information synthesis. Use when: needing factual data from the web, evaluating sources, or cross-referencing claims. NOT for: simple trivia or local file search."
        },
        "Data Analysis": {
          "name": "Data Analysis",
          "description": "Data interpretation and structured reporting. Use when: analyzing CSV/dataset files, finding trends, or generating statistical summaries. NOT for: writing code to build data models."
        },
        "Content Writing": {
          "name": "Content Writing",
          "description": "Professional content creation and tone adaptation. Use when: drafting articles, emails, or marketing copy with specific stylistic requirements. NOT for: casual chat responses."
        },
        "Competitive Analysis": {
          "name": "Competitive Analysis",
          "description": "Competitor research and comparison frameworks. Use when: asked to compare companies, products, or perform SWOT/feature matrix analysis. NOT for: general academic research."
        },
        "Meeting Notes": {
          "name": "Meeting Notes",
          "description": "Meeting summarization and follow-up tracking. Use when: given meeting transcripts or rough notes to extract structured action items and key decisions. NOT for: generic document summarization."
        },
        "Complex Task Executor": {
          "name": "Complex Task Executor",
          "description": "Structured methodology for decomposing, planning, and executing complex multi-step tasks with progress tracking"
        },
        "Skill Creator": {
          "name": "Skill Creator",
          "description": "Create new skills, modify and improve existing skills, and measure skill performance"
        },
        "Content Research Writer": {
          "name": "Content Research Writer",
          "description": "Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time section feedback"
        },
        "MCP Tool Installer": {
          "name": "MCP Tool Installer",
          "description": "Guide users through discovering, configuring, and installing MCP tools directly in chat — no Settings page required"
        }
      }
    },
    "step4": {
      "title": "Permissions",
      "companyWide": "Company-wide",
      "companyWideDesc": "Everyone can use this digital employee",
      "department": "Department",
      "departmentDesc": "Only selected department members can use",
      "selfOnly": "Self Only",
      "selfOnlyDesc": "Only the creator can use"
    },
    "step5": {
      "title": "Feishu Bot Configuration (Optional)",
      "description": "Configure an independent Feishu bot for the digital employee. Users can chat directly via Feishu. You can skip this step and configure it later in Settings.",
      "configSteps": "Configuration Steps:",
      "connectionMode": "Connection Mode",
      "modeWebsocket": "WebSocket (Recommended)",
      "modeWebhook": "Webhook",
      "step1Feishu": "Go to",
      "feishuPlatform": "Feishu Open Platform",
      "step2Feishu": "Create enterprise app → Enable bot capability",
      "step3Feishu": "Copy App ID and App Secret below",
      "step4Feishu": "After creation, you'll get a Webhook URL for event callback",
      "encryptKeyOptional": "Encrypt Key (optional)",
      "encryptKeyPlaceholder": "For event encryption verification",
      "skipHint": "You can still chat with the agent via web after skipping"
    },
    "summary": {
      "unnamed": "Unnamed",
      "model": "Model",
      "dailyLimit": "Daily limit"
    },
    "errors": {
      "nameRequired": "Agent name is required",
      "nameTooShort": "Name must be at least 2 characters",
      "nameTooLong": "Name cannot exceed 100 characters",
      "roleDescTooLong": "Role description cannot exceed 500 characters (current: {{count}})",
      "tokenLimitInvalid": "Please enter a valid positive integer",
      "modelRequired": "Please select a primary model"
    },
    "templates": {
      "Project Manager": "Project Manager",
      "Designer": "Designer",
      "Product Intern": "Product Intern",
      "Market Researcher": "Market Researcher",
      "templateData": {
        "Project Manager": {
          "description": "Manages project timelines, task delegation, cross-team coordination, and progress reporting",
          "personality": "- Organized, proactive, and detail-oriented\n- Strong communicator who keeps all stakeholders aligned\n- Balances urgency with quality, prioritizes ruthlessly",
          "boundaries": "- Strategic decisions require leadership approval\n- Budget approvals must follow formal process\n- External communications on behalf of the company need sign-off"
        },
        "Designer": {
          "description": "Assists with design requirements, design system maintenance, asset management, and competitive UI analysis",
          "personality": "- Detail-oriented with strong visual aesthetics\n- Translates business requirements into design language\n- Proactively organizes design resources and maintains consistency",
          "boundaries": "- Final design deliverables require design lead approval\n- Brand element modifications must go through review\n- Design source file management follows team conventions"
        },
        "Product Intern": {
          "description": "Supports product managers with requirements analysis, competitive research, user feedback analysis, and documentation",
          "personality": "- Eager learner, proactive, and inquisitive\n- Sensitive to user experience and product details\n- Thorough and well-structured in output",
          "boundaries": "- Product recommendations should be labeled \"for reference only\"\n- Does not directly modify product specs without PM approval\n- User privacy data must be anonymized"
        },
        "Market Researcher": {
          "description": "Focuses on market research, industry analysis, competitive intelligence tracking, and trend insights",
          "personality": "- Rigorous, data-driven, and logically clear\n- Extracts key insights from complex data sets\n- Reports focus on actionable recommendations, not just data",
          "boundaries": "- Analysis conclusions must be supported by data/sources\n- Commercially sensitive information must be labeled with confidentiality level\n- External research reports require approval before distribution"
        }
      }
    }
  },
  "task": {
    "todo": "Todo",
    "doing": "Doing",
    "supervision": "Supervision",
    "done": "Done",
    "createTask": "New Task",
    "priority": {
      "low": "Low",
      "medium": "Medium",
      "high": "High",
      "urgent": "Urgent"
    }
  },
  "chat": {
    "placeholder": "Type a message...",
    "send": "Send",
    "deleteSession": "Delete session",
    "deleteConfirm": "Delete this session and all its messages? This cannot be undone."
  },
  "messages": {
    "title": "Messages",
    "markAllRead": "Mark all as read ({{count}})",
    "empty": "No messages",
    "justNow": "Just now",
    "minutesAgo": "{{count}} minutes ago",
    "hoursAgo": "{{count}} hours ago"
  },
  "enterprise": {
    "title": "Company Settings",
    "tabs": {
      "llm": "Models",
      "tools": "Tools",
      "org": "Org Structure",
      "info": "Company Info",
      "audit": "Audit Log",
      "config": "Platform Config",
      "kb": "Company KB",
      "approvals": "Approvals",
      "skills": "Skills",
      "quotas": "Quotas",
      "users": "Users",
      "invites": "Invitation Codes",
      "identity": "OA Management"
    },
    "a2aAsync": {
      "title": "Agent-to-Agent Async Communication",
      "description": "Enable agents to communicate asynchronously with three modes: notify (one-way announcement), task_delegate (delegate work and get results back), and consult (synchronous question). When disabled, all agent-to-agent messages use synchronous consult mode — the same behavior as before this feature was introduced.",
      "enabled": "Enabled",
      "disabled": "Disabled",
      "enabledHint": "Agents can use notify, task_delegate, and consult modes.",
      "disabledHint": "All agent messages use synchronous consult mode.",
      "enableWarning": "⚠️ You are about to enable the A2A Async Communication feature (Beta).\n\nThis feature allows agents to communicate asynchronously via notify and task_delegate modes.\n\nKnown potential issues:\n• Agent replies may contain internal technical terms (trigger names, focus items, etc.)\n• task_delegate callbacks may occasionally be delayed or dropped due to rate limiting\n• Token consumption will increase because each async message triggers a separate agent session\n• Agent loops may occur if triggers are not properly configured\n\nIf you encounter any issues, please return to this page and disable the toggle to restore stable synchronous behavior.\n\nAre you sure you want to enable this feature?"
    },
    "invites": {
      "pageTitle": "Invitation Codes",
      "pageDesc": "Manage invitation codes for platform registration.",
      "createTitle": "Create Invitation Codes",
      "count": "Number of Codes",
      "maxUses": "Max Uses per Code",
      "createBtn": "Generate",
      "listTitle": "All Invitation Codes",
      "code": "Code",
      "usage": "Usage",
      "status": "Status",
      "created": "Created",
      "deactivated": "Disabled",
      "exhausted": "Exhausted",
      "active": "Active",
      "disable": "Disable",
      "exportCsv": "Export CSV"
    },
    "systemEmail": {
      "title": "System Email Configuration",
      "description": "Configure SMTP settings for sending system emails such as password resets and notifications.",
      "fromAddress": "From Email Address",
      "fromName": "From Name",
      "smtpHost": "SMTP Host",
      "smtpPort": "SMTP Port",
      "username": "SMTP Username",
      "password": "SMTP Password / App Password",
      "timeout": "Timeout (seconds)",
      "useSsl": "Use SSL/TLS",
      "hint": "For Gmail, use an App Password. For QQ/163 mail, use the SMTP authorization code.",
      "sendTest": "Send Test Email"
    },
    "quotas": {
      "defaultUserQuotas": "Default User Quotas",
      "defaultsApply": "These defaults apply to newly registered users. Existing users are not affected.",
      "conversationLimits": "Conversation Limits",
      "messageLimit": "Message Limit",
      "maxMessagesPerPeriod": "Max messages per period",
      "messagePeriod": "Message Period",
      "permanent": "Permanent",
      "daily": "Daily",
      "weekly": "Weekly",
      "monthly": "Monthly",
      "agentLimits": "Agent Limits",
      "maxAgents": "Max Agents",
      "agentsUserCanCreate": "Agents a user can create",
      "agentTTL": "Agent TTL (hours)",
      "agentAutoExpiry": "Agent auto-expiry time from creation",
      "dailyLLMCalls": "Daily LLM Calls / Agent",
      "maxLLMCallsPerDay": "Max LLM calls per agent per day",
      "system": "System",
      "minHeartbeatInterval": "Min Heartbeat Interval (min)",
      "minHeartbeatDesc": "Minimum heartbeat interval for all agents",
      "triggerLimits": "Trigger Limits",
      "defaultMaxTriggers": "Default Max Triggers",
      "defaultMaxTriggersDesc": "Default trigger limit for new agents",
      "minPollInterval": "Min Poll Interval (min)",
      "minPollIntervalDesc": "Company-wide floor: agents cannot poll faster than this",
      "maxWebhookRate": "Max Webhook Rate (/min)",
      "maxWebhookRateDesc": "Company-wide ceiling: max webhook hits per minute per agent"
    },
    "stats": {
      "users": "{{count}} users",
      "runningAgents": "{{running}}/{{total}} running"
    },
    "llm": {
      "addModel": "Add Model",
      "noModels": "No data",
      "provider": "Provider",
      "model": "Model",
      "label": "Label",
      "apiKey": "API Key",
      "apiKeyPlaceholder": "Enter API Key",
      "baseUrl": "Base URL (optional)",
      "baseUrlPlaceholder": "https://api.custom.com/v1",
      "modelPlaceholder": "claude-sonnet-4-5",
      "labelPlaceholder": "Claude Sonnet",
      "maxOutputTokens": "Max Output Tokens",
      "maxOutputTokensPlaceholder": "Provider default",
      "maxOutputTokensDesc": "Override the default output token limit. Auto-filled from provider; adjust as needed.",
      "requestTimeout": "Request Timeout (s)",
      "requestTimeoutPlaceholder": "Leave empty for 120s default (300+ recommended for local models)",
      "requestTimeoutDesc": "Override total HTTP timeout per request. Increase this for local models that are slow to generate.",
      "enabled": "Enabled",
      "disabled": "Disabled",
      "save": "Save",
      "delete": "Delete",
      "edit": "Edit",
      "cancel": "Cancel",
      "supportsVision": "👁 Supports Vision (Multimodal)",
      "supportsVisionDesc": "— Enable for models that can analyze images (GPT-4o, Claude, Qwen-VL, etc.)",
      "test": "Test",
      "testing": "Testing...",
      "testSuccess": "OK ({{latency}}ms)",
      "testFailed": "Test failed: {{error}}\n\nLatency: {{latency}}ms",
      "testError": "Test error: {{message}}",
      "editModel": "Edit Model",
      "vision": "Vision",
      "temperature": "Temperature",
      "temperaturePlaceholder": "e.g. 0.7 or 1.0 (Leave empty for default)",
      "temperatureDesc": "Leave empty to use the provider default. o1/o3 reasoning models usually require 1.0"
    },
    "tools": {
      "title": "Global Tool Management",
      "testConnection": "Test Connection",
      "testing": "Testing...",
      "connectionSuccess": "Connection successful! Found {{count}} tools",
      "connectionFailed": "Connection failed",
      "importAll": "Import All",
      "mcpServerName": "MCP Server Name",
      "mcpServerUrl": "MCP Server URL",
      "configure": "Configure",
      "collapse": "Collapse",
      "saveConfig": "Save Config",
      "description": "Description",
      "parameters": "Parameters",
      "initBuiltinsHint": "Start the backend first to initialize built-in tools.",
      "emptyState": "No data. Start the backend first to initialize built-in tools.",
      "globalTools": "Global Tools",
      "agentInstalled": "Agent Installed",
      "agentInstalledHint": "Agent installed tools via `import_mcp_server`. Deleting removes the tool from that agent.",
      "noAgentInstalledTools": "No agent-installed tools yet.",
      "removeFromAgent": "Remove \"{{name}}\" from agent?",
      "delete": "Delete",
      "addMcpServer": "Add MCP Server",
      "mcpServer": "MCP Server",
      "jsonConfig": "JSON Config",
      "manageGlobalSkills": "Manage global skills. Each skill is a folder with a SKILL.md file. Skills selected during agent creation are copied to the agent's workspace.",
      "importFromUrl": "Import from URL",
      "browseClawhub": "Browse ClawHub",
      "githubToken": "GitHub Token",
      "howToGenerateGithubToken": "How to generate a GitHub Token:",
      "githubTokenStep1": "1. Go to github.com → Settings → Developer settings",
      "githubTokenStep2": "2. Click \"Personal access tokens\" → \"Tokens (classic)\"",
      "githubTokenStep3": "3. Click \"Generate new token (classic)\"",
      "githubTokenStep4": "4. Set a name and expiration, no scopes needed for public repos",
      "githubTokenStep5": "5. Click \"Generate token\" and copy the value",
      "orVisit": "Or visit: github.com/settings/tokens",
      "githubTokenDesc": "Increases GitHub API rate limits from 60/hr to 5,000/hr for skill imports.",
      "currentToken": "Current token:",
      "saving": "Saving...",
      "save": "Save",
      "clear": "Clear",
      "clawhubApiKey": "ClawHub API Key",
      "clawhubApiKeyDesc": "Authenticate ClawHub API calls to avoid rate limiting when browsing and installing skills from ClawHub.",
      "authenticatedRequestsGetHigherRateLimits": "Authenticated requests get higher rate limits for ClawHub skill browsing and installation.",
      "currentKey": "Current key:",
      "githubTokenSaved": "GitHub token saved",
      "failedToSave": "Failed to save",
      "tokenCleared": "Token cleared",
      "failed": "Failed",
      "clawhubApiKeySaved": "ClawHub API key saved",
      "searchSkills": "Search skills...",
      "search": "Search",
      "searching": "Searching...",
      "searchForSkills": "Search for skills on ClawHub marketplace",
      "noResultsFound": "No results found",
      "searchingClawhub": "Searching ClawHub...",
      "install": "Install",
      "installing": "Installing...",
      "pasteGithubUrl": "Paste a GitHub URL pointing to a skill directory containing SKILL.md",
      "githubUrlPlaceholder": "https://github.com/owner/repo/tree/main/skills/my-skill",
      "preview": "Preview",
      "loading": "Loading...",
      "edit": "Edit",
      "builtIn": "Built-in",
      "configured": "Configured",
      "default": "Default",
      "toolNames": {
        "list_files": "List Files",
        "read_file": "Read File",
        "write_file": "Write File",
        "delete_file": "Delete File",
        "read_document": "Read Document",
        "set_trigger": "Set Trigger",
        "update_trigger": "Update Trigger",
        "cancel_trigger": "Cancel Trigger",
        "list_triggers": "List Triggers",
        "send_file_to_agent": "Send File",
        "send_feishu_message": "Feishu Message",
        "send_web_message": "Web Message",
        "send_message_to_agent": "Agent Message",
        "web_search": "Web Search",
        "jina_search": "Jina Search",
        "jina_read": "Jina Read",
        "plaza_get_new_posts": "Plaza: Browse",
        "plaza_create_post": "Plaza: Post",
        "plaza_add_comment": "Plaza: Comment",
        "execute_code": "Code Executor",
        "execute_code_e2b": "Code Executor (E2B Cloud)",
        "upload_image": "Upload Image",
        "generate_image_siliconflow": "Generate Image (SiliconFlow)",
        "generate_image_openai": "Generate Image (OpenAI)",
        "generate_image_google": "Generate Image (Google/Vertex)",
        "discover_resources": "Resource Discovery",
        "import_mcp_server": "Import MCP Server",
        "send_email": "Send Email",
        "read_emails": "Read Emails",
        "reply_email": "Reply Email",
        "publish_page": "Publish Page",
        "list_published_pages": "List Published Pages",
        "search_clawhub": "Search ClawHub",
        "install_skill": "Install Skill",
        "agentbay_browser_navigate": "AgentBay: Browser Navigate",
        "agentbay_browser_screenshot": "AgentBay: Browser Screenshot",
        "agentbay_browser_click": "AgentBay: Browser Click",
        "agentbay_browser_type": "AgentBay: Browser Type",
        "agentbay_browser_extract": "AgentBay: Browser Extract",
        "agentbay_browser_observe": "AgentBay: Browser Observe",
        "agentbay_browser_login": "AgentBay: Browser Login",
        "agentbay_code_execute": "AgentBay: Code Execute",
        "agentbay_command_exec": "AgentBay: Shell Command",
        "agentbay_computer_screenshot": "AgentBay: Desktop Screenshot",
        "agentbay_computer_click": "AgentBay: Mouse Click",
        "agentbay_computer_input_text": "AgentBay: Keyboard Input",
        "agentbay_computer_press_keys": "AgentBay: Keyboard Shortcut",
        "agentbay_computer_scroll": "AgentBay: Scroll",
        "agentbay_computer_move_mouse": "AgentBay: Mouse Move",
        "agentbay_computer_drag_mouse": "AgentBay: Mouse Drag",
        "agentbay_computer_get_screen_size": "AgentBay: Get Screen Size",
        "agentbay_computer_start_app": "AgentBay: Start Application",
        "agentbay_computer_get_cursor_position": "AgentBay: Get Cursor Position",
        "agentbay_computer_get_active_window": "AgentBay: Get Active Window",
        "agentbay_computer_activate_window": "AgentBay: Activate Window",
        "agentbay_computer_list_visible_apps": "AgentBay: List Running Apps",
        "atlassian_rovo": "Atlassian Rovo (Jira / Confluence / Compass)"
      },
      "toolDescriptions": {
        "list_files": "List files and folders in a directory within the workspace.",
        "read_file": "Read file contents from the workspace.",
        "write_file": "Write or update a file in the workspace.",
        "delete_file": "Delete a file from the workspace.",
        "read_document": "Read office document contents (PDF, Word, Excel, PPT) and extract text.",
        "set_trigger": "Set a new trigger to wake yourself up at a specific time or condition.",
        "update_trigger": "Update an existing trigger's configuration or reason.",
        "cancel_trigger": "Cancel (disable) a trigger by name.",
        "list_triggers": "List all your active triggers with details.",
        "send_file_to_agent": "Send a file to a specific person or back to the current conversation.",
        "send_feishu_message": "Send a message to a Feishu user or group.",
        "send_web_message": "Send a proactive message to a user on the Clawith web platform.",
        "send_message_to_agent": "Send a message to a digital employee colleague and receive a reply.",
        "web_search": "Search the internet using a configurable search engine.",
        "jina_search": "Search the internet using Jina AI.",
        "jina_read": "Read and extract full content from a URL using Jina AI Reader.",
        "plaza_get_new_posts": "Get recent posts from the Agent Plaza (shared social feed).",
        "plaza_create_post": "Publish a new post to the Agent Plaza.",
        "plaza_add_comment": "Add a comment to an existing plaza post.",
        "execute_code": "Execute code (Python, Bash, Node.js) in a local sandboxed subprocess.",
        "execute_code_e2b": "Execute code (Python, Bash, Node.js) in a secure E2B cloud sandbox.",
        "upload_image": "Upload images from the workspace or a URL to ImageKit CDN.",
        "generate_image_siliconflow": "Generate an image via SiliconFlow FLUX models.",
        "generate_image_openai": "Generate an image via OpenAI DALL-E models.",
        "generate_image_google": "Generate an image via Google Gemini Image or Vertex AI.",
        "discover_resources": "Search public MCP registries for tools and capabilities.",
        "import_mcp_server": "Import an MCP server from Smithery registry into the platform.",
        "send_email": "Send an email to one or more recipients.",
        "read_emails": "Read emails from your inbox.",
        "reply_email": "Reply to an email by its Message-ID.",
        "publish_page": "Publish an HTML file from workspace as a public page.",
        "list_published_pages": "List all pages published by this agent.",
        "search_clawhub": "Search the ClawHub skill registry for skills matching a query.",
        "install_skill": "Install a skill into this agent's workspace.",
        "agentbay_browser_navigate": "[ENV: Browser] Navigate to a URL in the AgentBay headless browser environment.",
        "agentbay_browser_screenshot": "[ENV: Browser] Take a screenshot of the current page in the headless browser.",
        "agentbay_browser_click": "[ENV: Browser] Click an element in the headless browser.",
        "agentbay_browser_type": "[ENV: Browser] Type text into an element in the headless browser.",
        "agentbay_browser_extract": "[ENV: Browser] Extract structured data from the current browser page.",
        "agentbay_browser_observe": "[ENV: Browser] Observe and identify interactive elements on the page.",
        "agentbay_browser_login": "[ENV: Browser] Handle login flow in the headless browser.",
        "agentbay_code_execute": "[ENV: Code Sandbox] Execute code (Python, Bash, Node.js) in the AgentBay Code Sandbox.",
        "agentbay_command_exec": "[ENV: Code Sandbox] Execute a shell command in the AgentBay Code Sandbox.",
        "agentbay_computer_screenshot": "[ENV: Cloud Desktop] Take a screenshot of the cloud desktop.",
        "agentbay_computer_click": "[ENV: Cloud Desktop] Click at coordinates in the cloud desktop.",
        "agentbay_computer_input_text": "[ENV: Cloud Desktop] Type text in the cloud desktop.",
        "agentbay_computer_press_keys": "[ENV: Cloud Desktop] Press keyboard shortcut in the cloud desktop.",
        "agentbay_computer_scroll": "[ENV: Cloud Desktop] Scroll in the cloud desktop.",
        "agentbay_computer_move_mouse": "[ENV: Cloud Desktop] Move mouse to coordinates in the cloud desktop.",
        "agentbay_computer_drag_mouse": "[ENV: Cloud Desktop] Drag mouse in the cloud desktop.",
        "agentbay_computer_get_screen_size": "[ENV: Cloud Desktop] Get the screen size of the cloud desktop.",
        "agentbay_computer_start_app": "[ENV: Cloud Desktop] Start an application in the cloud desktop.",
        "agentbay_computer_get_cursor_position": "[ENV: Cloud Desktop] Get the current cursor position in the cloud desktop.",
        "agentbay_computer_get_active_window": "[ENV: Cloud Desktop] Get the active window in the cloud desktop.",
        "agentbay_computer_activate_window": "[ENV: Cloud Desktop] Bring a specific window to the foreground on the Cloud Desktop.",
        "agentbay_computer_list_visible_apps": "[ENV: Cloud Desktop] List running applications in the cloud desktop.",
        "atlassian_rovo": "Connect to Atlassian Rovo MCP Server to access Jira, Confluence, and Compass."
      }
    },
    "org": {
      "feishuSync": "Feishu Directory Sync",
      "appId": "App ID",
      "appSecret": "App Secret",
      "syncing": "Syncing...",
      "syncNow": "Sync Now",
      "syncComplete": "Sync complete: {{departments}} departments, {{members}} members",
      "orgBrowser": "Organization Browser",
      "allDepartments": "All",
      "searchMembers": "Search members...",
      "member": "Member",
      "admin": "Admin",
      "noMembers": "No members",
      "syncSetupGuide": "Setup Guide & Required Permissions",
      "feishuGuideText": "In the Feishu Developer Console, go to Permissions & Scopes -> Bulk Import/Export, and paste the following JSON:",
      "feishuGuideWarning": "Important: After adding permissions, you must create and publish a new application version for them to take effect.",
      "syncGuide": {
        "feishu": {
          "step1": "Go to open.feishu.cn → log in → Developer Console → Create Enterprise Self-Built App",
          "step2": "Left sidebar → Credentials & Basic Info → copy App ID and App Secret, paste below and Setup",
          "step3": "Left sidebar → Permissions & Scopes → click Bulk Import/Export Permissions → paste the permission JSON below → confirm import. [IMPORTANT] Org sync uses user_id (employee_id) as the stable user identifier, which is required to correctly match org members with Feishu bot channel users across different apps (open_id is app-specific and cannot be used as a cross-app identifier). Therefore, contact:user.employee_id:readonly is a mandatory permission.",
          "step4": "[For SSO] Left sidebar → Add App Capabilities → add Web App (网页应用), and paste the SSO Login URL below into the Desktop and Mobile homepage fields",
          "step5": "[For SSO] Left sidebar → Security Settings → Add the Redirect URL below into 'Redirect URLs'",
          "step6": "[For SSO] Turn on the 'SSO Login' switch below. Team members can now log in via the SSO Login URL with one click.",
          "step7": "[REQUIRED] Left sidebar → App Release → Create Version (set Availability to All Employees) → Release for Review → approve it in your admin console. Note: unlike DingTalk, Feishu permissions only take effect after publishing a new version and getting enterprise admin approval. Sync and SSO will not work until the app is published and approved."
        },
        "dingtalk": {
          "step1": "Go to open.dingtalk.com → log in → go to App Development → Create Internal Enterprise App → enter a name",
          "step2": "Once the app is created, go to the app page → left sidebar 'Credentials & Basic Info' → copy AppKey and AppSecret, paste them below and save",
          "step3": "Left sidebar 'Development Config' → 'Permission Management' → Under the 'Contacts Management' category, find each permission below and click 'Enable Now' (no approval required, takes effect immediately): ① Contacts Dept Read Permission (includes: Get Department List [qyapi_get_department_list], Get Department Details, Get All Parent Depts of a Dept); ② Member Info Read Permission (qyapi_get_member, Query User Details); ③ Get Department Member Details (qyapi_get_department_member, required to sync dept user list); ④ Employee Mobile Number (fieldMobile); ⑤ Email & Personal Info (fieldEmail)",
          "step4": "On the same 'Permission Management' page → switch to the 'Contacts Permission Scope' tab → set it to 'All Employees' (or select specific departments, but ensure coverage of all members you want to sync)",
          "step5": "Paste AppKey and AppSecret below → click Save Config → click 'Sync' to run the first sync",
          "step6": "If you need DingTalk SSO: ① In Permission Management → Personal Permissions category, find 'Contacts Personal Info Read' (Contact.User.Read) → Enable Now (required to fetch user info on SSO login); ② Turn on the 'SSO Login' switch below; ③ In the DingTalk developer console → Development Config → Share Settings → Login Access → add the Callback URL below as the Callback Domain; ④ Share the SSO Login URL below with your team for one-click login"
        },
        "wecom": {
          "step1": "Log in to WeCom Admin Console → Management Tools → Address Book Sync",
          "step2": "API Security → set the API visibility range to include the departments/users you want to sync",
          "step3": "Copy CorpID and Secret",
          "step4": "Paste CorpID and Secret below → click Save",
          "step5": "If you need SSO via WeCom: Turn on the 'SSO Login' switch below, then in WeCom configure: App Management → Webpage Authorization → Set Trusted Domain to your URL domain. Share the 'SSO Login URL' with your team."
        }
      }
    },
    "config": {
      "title": "Platform Configuration",
      "publicUrl": "Public URL (PUBLIC_BASE_URL)",
      "publicUrlPlaceholder": "e.g. https://xxx.cpolar.top",
      "maxRounds": "Agent Max Conversation Rounds",
      "maxRoundsPlaceholder": "Default 20",
      "save": "Save",
      "saved": "Saved",
      "themeColor": "Theme Color"
    },
    "broadcast": {
      "title": "Broadcast Notification",
      "description": "Send a notification to all users and agents in this company.",
      "titlePlaceholder": "Notification title",
      "bodyPlaceholder": "Optional details...",
      "sendEmail": "Also send email to users with a configured address",
      "send": "Send Broadcast",
      "sentWithEmail": "Sent to {{users}} users, {{agents}} agents, and {{emails}} email recipients"
    },
    "kb": {
      "title": "Company Knowledge Base",
      "rootDir": "Root",
      "uploadFile": "Upload File",
      "newFolder": "New Folder",
      "folderName": "Folder name",
      "noFiles": "No files",
      "dragOrClick": "Drag or click to upload",
      "delete": "Delete",
      "save": "Save",
      "edit": "Edit",
      "cancel": "Cancel",
      "viewFile": "View File",
      "confirmDelete": "Confirm Delete"
    },
    "audit": {
      "title": "Audit Log",
      "noRecords": "No audit records",
      "time": "Time",
      "user": "User",
      "action": "Action",
      "target": "Target",
      "filterAll": "All",
      "filterBackground": "Background",
      "filterActions": "User Actions",
      "records": "{{count}} records"
    },
    "notificationBar": {
      "title": "Notification Bar",
      "enabled": "Enable notification bar",
      "text": "Notification text",
      "textPlaceholder": "e.g. 🎉 v2.1 released with new features!",
      "description": "Display a notification bar at the top of the page, visible to all users.",
      "preview": "Preview"
    },
    "identity": {
      "title": "Organization & Directory Sync",
      "addProvider": "Add Directory Provider",
      "type": "Type",
      "name": "Display Name",
      "config": "Configuration (JSON)",
      "configExample": "Configuration Example",
      "deleteConfirm": "Are you sure you want to delete this OA provider?",
      "providerHints": {
        "feishu": "Feishu: Requires app_id, app_secret. Optional: encrypt_key, verification_token.",
        "dingtalk": "DingTalk: Requires app_key, app_secret.",
        "wecom": "WeCom: Requires corp_id, secret, agent_id.",
        "oauth2": "OAuth2: Enter App ID, App Secret, Authorize URL, Token URL, User Info URL",
        "saml": "SAML: Requires entry_point, issuer, cert (public key).",
        "microsoft_teams": "Microsoft Teams: Requires client_id, client_secret, tenant_id."
      },
      "description": "Configure enterprise directory synchronization and Identity Provider settings.",
      "notConfigured": "Not configured",
      "active": "Active",
      "providers": {
        "feishu": {
          "name": "Feishu",
          "desc": "Feishu / Lark Integration"
        },
        "wecom": {
          "name": "WeCom",
          "desc": "WeChat Work Integration"
        },
        "dingtalk": {
          "name": "DingTalk",
          "desc": "DingTalk App Integration"
        },
        "oauth2": {
          "name": "OAuth2",
          "desc": "Generic OIDC Provider"
        }
      },
      "ssoLoginToggle": "SSO Login",
      "ssoLoginToggleHint": "Allow users to log in via this identity provider.",
      "ssoSubdomain": "SSO Login URL",
      "ssoSubdomainHint": "Share this URL with your team. SSO login buttons will appear when they visit this address.",
      "callbackUrl": "Redirect URL (paste this in your app settings)",
      "callbackUrlHint": "Add this URL as the OAuth redirect URI in your identity provider's app configuration.",
      "clientId": "Client ID",
      "clientSecret": "Client Secret",
      "authorizeUrl": "Authorize URL",
      "tokenUrl": "Token URL",
      "userInfoUrl": "User Info URL",
      "corpId": "Corp ID",
      "secret": "Secret",
      "agentId": "Agent ID (Optional)",
      "botId": "Bot ID (Intelligent Robot)",
      "botSecret": "Bot Secret",
      "appKey": "App Key",
      "appSecret": "App Secret",
      "wecomNotice": {
        "title": "Prerequisites for WeCom Integration",
        "syncTitle": "1. User Directory Sync",
        "syncDesc": "Directory sync via the contacts secret works for fetching user IDs. However, fetching full user details (name, avatar, email) requires the self-built app's IP to be whitelisted in WeCom — a setting that must be configured by the WeCom enterprise admin.",
        "ssoTitle": "2. SSO Login (Single Sign-On)",
        "ssoDesc": "WeCom OAuth requires the callback domain to be ICP-filed with a business entity matching the WeCom enterprise's registration. The platform domain (clawith.ai) is a .ai TLD which cannot be ICP-filed in mainland China, making SSO unavailable on the current domain. Requires either an ICP-filed .com/.cn domain or WeCom ISV (service provider) registration.",
        "messagingTitle": "3. Proactive 1-to-1 Messaging (AI-initiated)",
        "messagingDesc": "Sending messages to individual users requires a valid WeCom API access token, which can only be obtained from a server IP that has been whitelisted in the self-built app's settings. Unlike Feishu, WeCom mandates IP-level restrictions on all API calls — there is no token-only authentication option.",
        "footerText": "Due to the above constraints, WeCom integration currently cannot be easily set up by most users. We are actively exploring alternative approaches — including WeCom ISV (service provider) registration and lower-friction API options — or we may advocate for WeCom to relax these restrictions for SaaS platforms. Configuration will be re-enabled once a viable path is available."
      }
    },
    "dangerZone": "️ Danger Zone",
    "deleteCompanyDesc": "Permanently delete this company and all its data, including agents, models, tools, and skills. This action cannot be undone.",
    "deleteCompany": "Delete this company",
    "emailTemplates": {
      "title": "Email Templates",
      "description": "Customize email content for each scenario. Use {{variable}} placeholders to insert dynamic data.",
      "saveTemplates": "Save Templates",
      "availableVars": "Available Variables",
      "subject": "Subject",
      "body": "Body",
      "resetDefault": "Reset to Default",
      "saved": "Email templates saved",
      "emailVerification": "Email Verification Code",
      "emailVerificationDesc": "Sent when a user registers and needs to verify their email address.",
      "emailVerificationSubject": "Verify your Clawith email address",
      "emailVerificationBody": "Hello {{display_name}},\n\nWelcome to Clawith! Please use the following 6-digit code to verify your email address:\n\nVerification code: {{verification_code}}\n\nThis code expires in {{expiry_minutes}} minutes. If you did not create an account, you can ignore this email.",
      "passwordReset": "Password Reset",
      "passwordResetDesc": "Sent when a user requests to reset their password.",
      "passwordResetSubject": "Reset your Clawith password",
      "passwordResetBody": "Hello {{display_name}},\n\nWe received a request to reset your Clawith password.\n\nReset link: {{reset_url}}\n\nThis link expires in {{expiry_minutes}} minutes. If you did not request this, you can ignore this email.",
      "companyInvitation": "Company Invitation",
      "companyInvitationDesc": "Sent when an admin invites a user to join their company.",
      "companyInvitationSubject": "{{inviter_name}} invited you to join {{company_name}} on Clawith",
      "companyInvitationBody": "Hello,\n\n{{inviter_name}} has invited you to join their team '{{company_name}}' on Clawith.\n\nTo accept the invitation and create your account, please click the link below:\n\n{{invite_url}}\n\nIf you don't want to join this team or didn't expect this invitation, you can ignore this email."
    },
    "timezone": {
      "title": "Company Timezone",
      "description": "Default timezone for all agents. Agents can override individually.",
      "zones": {
        "UTC": "UTC (Coordinated Universal Time)",
        "Asia/Shanghai": "Asia/Shanghai (Beijing Time, UTC+8)",
        "Asia/Tokyo": "Asia/Tokyo (Japan Time, UTC+9)",
        "Asia/Seoul": "Asia/Seoul (Korea Time, UTC+9)",
        "Asia/Singapore": "Asia/Singapore (Singapore Time, UTC+8)",
        "Asia/Kolkata": "Asia/Kolkata (India Time, UTC+5:30)",
        "Asia/Dubai": "Asia/Dubai (Gulf Time, UTC+4)",
        "Europe/London": "Europe/London (UK Time, UTC+0/+1)",
        "Europe/Paris": "Europe/Paris (Central European Time, UTC+1/+2)",
        "Europe/Berlin": "Europe/Berlin (Central European Time, UTC+1/+2)",
        "Europe/Moscow": "Europe/Moscow (Moscow Time, UTC+3)",
        "America/New_York": "America/New_York (Eastern Time, UTC-5/-4)",
        "America/Chicago": "America/Chicago (Central Time, UTC-6/-5)",
        "America/Denver": "America/Denver (Mountain Time, UTC-7/-6)",
        "America/Los_Angeles": "America/Los_Angeles (Pacific Time, UTC-8/-7)",
        "America/Sao_Paulo": "America/Sao_Paulo (Brasilia Time, UTC-3)",
        "Australia/Sydney": "Australia/Sydney (Australian Eastern Time, UTC+10/+11)",
        "Pacific/Auckland": "Pacific/Auckland (New Zealand Time, UTC+12/+13)"
      }
    },
    "users": {
      "user": "User",
      "email": "Email",
      "joined": "Joined",
      "role": "Role",
      "source": "Source",
      "msgQuota": "Msg Quota",
      "period": "Period",
      "agents": "Agents",
      "ttl": "TTL",
      "edit": "Edit",
      "clickToSort": "Click to toggle sort order",
      "platformAdmin": "Platform\nAdmin",
      "orgAdmin": "Admin",
      "registered": "Registered",
      "permanent": "Permanent",
      "daily": "Daily",
      "weekly": "Weekly",
      "monthly": "Monthly"
    },
    "companyName": {
      "title": "Company Name",
      "placeholder": "Enter company name"
    },
    "companyIntro": {
      "title": "Company Intro",
      "description": "Describe your company's mission, products, and culture. This information will be included as context in every Agent conversation.",
      "hint": "This content will appear in every Agent's system prompt"
    }
  },
  "common": {
    "save": "Save",
    "saving": "Saving…",
    "cancel": "Cancel",
    "confirm": "Confirm",
    "delete": "Delete",
    "search": "Search",
    "loading": "Loading...",
    "noData": "No data",
    "error": "Error",
    "close": "Close",
    "edit": "Edit",
    "back": "Back",
    "yes": "Yes",
    "no": "No",
    "all": "All",
    "none": "None",
    "download": "Download",
    "channels": {
      "feishu": "Feishu",
      "discord": "Discord",
      "slack": "Slack",
      "teams": "Microsoft Teams",
      "dingtalk": "DingTalk",
      "wecom": "WeCom"
    },
    "searching": "Searching...",
    "upload": "⬆ Upload",
    "apply": "Apply",
    "reset": "Reset",
    "copy": "Copy",
    "copied": "Copied",
    "lightMode": "Light Mode",
    "darkMode": "Dark Mode",
    "collapseSidebar": "Collapse Sidebar",
    "expandSidebar": "Expand Sidebar",
    "deleting": "Deleting..."
  },
  "openclaw": {
    "created": "OpenClaw Agent Created",
    "createdDesc2": "Your OpenClaw agent has been registered. Copy the instruction below and send it to your OpenClaw agent to complete the setup.",
    "setupInstruction": "Setup Instruction",
    "setupInstructionDesc": "Copy and send this to your OpenClaw agent. It will configure itself automatically.",
    "keyNote": "This key is already embedded in the instruction above. Save it separately if needed for manual configuration.",
    "goToAgent": "Go to Agent Page",
    "lastSeen": "Last Seen",
    "notConnected": "Not connected",
    "connection": "OpenClaw Connection",
    "type": "Type",
    "never": "Never",
    "model": "Model",
    "managedBy": "Managed by OpenClaw"
  },
  "channelGuide": {
    "setupGuide": "Setup Guide",
    "feishuPermJson": "Permission JSON (bulk import)",
    "feishuPermBasic": "Basic",
    "feishuPermFull": "Full",
    "feishuPermBasicDesc": "Chat & messaging only",
    "feishuPermFullDesc": "Includes Docs, Drive, Bitable, Calendar, Approval",
    "feishuPermCopy": "Copy",
    "feishuPermCopied": "✓ Copied",
    "slack": {
      "step1": "Go to api.slack.com/apps → click Create New App → choose From Scratch → enter an app name and pick your workspace → click Create App",
      "step2": "In the left sidebar, click OAuth & Permissions → scroll down to Scopes → under Bot Token Scopes click Add an OAuth Scope → add: chat:write, im:history, app_mentions:read",
      "step3": "Scroll back to the top of OAuth & Permissions → click Install to Workspace → click Allow → copy the Bot User OAuth Token (starts with xoxb-)",
      "step4": "Left sidebar → Basic Information → scroll to App Credentials → click Show next to Signing Secret → copy it",
      "step5": "Paste the Bot Token and Signing Secret above → click Save Config → copy the Webhook URL that appears",
      "step6": "Left sidebar → Event Subscriptions → toggle Enable Events ON → paste the Webhook URL into the Request URL field (it will say Verified ✓) → under Subscribe to bot events, click Add Bot User Event and add: app_mention, message.im → click Save Changes",
      "step7": "A yellow banner will appear at the top: click reinstall your app and authorize again",
      "step8": "Now open a DM with your bot in Slack and send a message to test it",
      "note": "Your server must be publicly accessible on the internet so Slack can reach the Webhook URL."
    },
    "discord": {
      "step1": "Go to discord.com/developers/applications → click New Application → enter a name → click Create",
      "step2": "Left sidebar → Bot → click Reset Token → confirm → copy the Bot Token. Also enable Message Content Intent under Privileged Gateway Intents → Save Changes",
      "step3": "Left sidebar → General Information → copy Application ID and Public Key",
      "step4": "Left sidebar → OAuth2 → URL Generator → under Scopes check bot and applications.commands → under Bot Permissions check Send Messages and Read Message History → copy the generated URL → paste it in your browser → select your server → Authorize",
      "step5": "Fill in Application ID, Bot Token, and Public Key above → click Save Config → copy the Webhook URL (Interactions Endpoint URL)",
      "step6": "Left sidebar → General Information → paste the Webhook URL into the Interactions Endpoint URL field → click Save Changes (Discord will automatically verify the endpoint)",
      "step7": "In your Discord server, type /ask message: <your question> to talk to the agent",
      "note": "Discord verifies the endpoint immediately when you save, so your server must be running and publicly reachable at that moment.",
      "ws_step1": "Go to discord.com/developers/applications → click New Application → enter a name → click Create",
      "ws_step2": "Left sidebar → Bot → click Reset Token → copy the Bot Token. Enable Message Content Intent under Privileged Gateway Intents → Save Changes",
      "ws_step3": "Left sidebar → OAuth2 → URL Generator → under Scopes check bot → under Bot Permissions check Send Messages and Read Message History → copy the generated URL → paste in browser → select your server → Authorize",
      "ws_step4": "Paste the Bot Token above → click Save Config. The bot will connect via Gateway automatically — no public URL needed",
      "ws_note": "Gateway mode requires no public IP or callback URL. The bot connects outbound to Discord. Users can @mention or DM the bot to chat."
    },
    "feishu": {
      "step1": "Go to open.feishu.cn → log in → click Developer Console (开发者后台) → Create Enterprise Self-Built App (创建企业自建应用) → fill in name and description → Confirm",
      "step2": "In the app page, left sidebar → Add App Capabilities (添加应用能力) → click Add (添加) next to Bot (机器人)",
      "step3": "Left sidebar → Credentials & Basic Info (凭证与基础信息) → copy App ID and App Secret",
      "step4": "Paste App ID and App Secret above → click Save Config → copy the Webhook URL that appears",
      "step5": "Left sidebar → Events & Callbacks (事件与回调) → Event Config tab → Edit Subscription Mode → select 'Send events to developer server' → paste Webhook URL into the Request URL field → Save (auto-verifies) → click Add Event → search and add im.message.receive_v1 → Save",
      "step6": "Left sidebar → Permissions & Scopes → click 'Bulk Import/Export Permissions' → paste the permission JSON below → confirm import",
      "step7": "Left sidebar → App Release (版本管理与发布) → Create Version → fill in description → click Release for Review → for internal apps, you can approve it yourself in the admin console",
      "step8": "After publishing, invite the bot to a Feishu group or have users add it as a direct contact to start chatting",
      "note": "For internal company apps, the review is usually instant. You must re-publish the app each time you add new permissions.",
      "ws_step1": "Go to open.feishu.cn → log in → Developer Console → Create Enterprise Self-Built App → fill in name and description → Confirm",
      "ws_step2": "Left sidebar → Add App Capabilities → click Add next to Bot",
      "ws_step3": "Left sidebar → Credentials & Basic Info → copy App ID and App Secret",
      "ws_step4": "Select Long Connection (WebSocket) mode above → paste App ID and App Secret → click Save Config",
      "ws_step5": "Left sidebar → Events & Callbacks → Event Configuration → edit Subscription Method → select 'Use Long Connection to receive events' → click Add Event → search and add im.message.receive_v1 (Receive Messages v2.0) → approve required permissions → Save",
      "ws_step6": "Left sidebar → Permissions & Scopes → click Bulk Import/Export Permissions → paste the permission JSON below → confirm import",
      "ws_step7": "Left sidebar → App Release → Create Version → Release for Review → approve it in the admin console",
      "ws_step8": "After publishing, invite the bot to a Feishu group or add it as a direct contact to start chatting",
      "ws_note": "WebSocket mode requires no public IP or callback URL. The connection is managed automatically."
    },
    "teams": {
      "step1": "Go to portal.azure.com → Azure Active Directory → App registrations → New registration → enter name → select 'Accounts in this organizational directory only' (single-tenant) → Register",
      "step2": "In the app overview page, copy the Application (client) ID and save it. Then go to Certificates & secrets → New client secret → add description and expiration → copy the Value (this is your App Secret). Also copy your Directory (tenant) ID from the Overview page.",
      "step3": "For local testing: Start a localtunnel to expose your backend: `npx --yes localtunnel --port 8000` → copy the tunnel URL (e.g., https://xxxxx.loca.lt). When configuring the Messaging Endpoint URL in Azure Bot, replace 'localhost' with your localtunnel URL.",
      "step4": "Paste App ID (Client ID), App Secret (Client Secret), and Tenant ID (Directory ID) above. Click Save Config → copy the Messaging Endpoint URL that appears.",
      "step5": "In Azure Bot → Channels → Microsoft Teams → Configure → paste the Messaging Endpoint URL (use your localtunnel URL instead of localhost if testing locally) → Save → the bot will be available in Teams.",
      "note": "Your server must be publicly accessible on the internet so Microsoft Teams can reach the Messaging Endpoint URL. For local testing, use localtunnel and replace 'localhost' with your tunnel URL.",
      "tenantId": "Tenant ID (Directory ID)",
      "tenantIdPlaceholder": "Enter your tenant ID (Directory ID) for this single-tenant app",
      "tenantIdHint": "Required for single-tenant apps. Get it from Azure AD → App registrations → your app → Overview."
    },
    "dingtalk": {
      "step1": "Go to open.dingtalk.com → log in → go to App Development → Create Internal App → enter a name",
      "step2": "In the app page → Add Capabilities → find Bot → click Add",
      "step3": "In the app info page → copy AppKey and AppSecret",
      "step4": "Set message receiving mode to Stream (recommended, no public IP needed)",
      "step5": "Paste AppKey and AppSecret above → click Save Config",
      "step6": "Publish the app → find the bot in DingTalk and send a test message",
      "note": "Stream mode requires no public IP or callback URL. Only AppKey and AppSecret are needed."
    },
    "wecom": {
      "step1": "Log in to work.weixin.qq.com → App Management → Self-Built Apps → Create App",
      "step2": "In the app details page → copy CorpID, AgentID, and Secret",
      "step3": "Set up API message receiving → set Token and EncodingAESKey (can be auto-generated)",
      "step4": "Fill in the info above → click Save Config → copy the Webhook URL that appears",
      "step5": "Paste the Webhook URL into WeCom's API Receive Message URL field → Save",
      "step6": "Find the app in WeCom and send a test message",
      "note": "The callback URL must be publicly accessible. WeCom will verify the URL and send encrypted messages.",
      "ws_step1": "Log in to work.weixin.qq.com → Security & Management → Management Tools → Intelligent Bots",
      "ws_step2": "Click Create Bot → select Manual Creation → choose API Mode at the bottom",
      "ws_step3": "Select 'Long Connection' as the connection method (not URL callback)",
      "ws_step4": "Fill in bot name, avatar, and set visible scope → Save",
      "ws_step5": "Copy the Bot ID and Secret that are generated → paste them above → click Save Config",
      "ws_step6": "Find the bot in WeCom and send a test message",
      "ws_note": "WebSocket mode requires no public IP, callback URL, or domain verification (ICP). The connection is managed automatically."
    }
  },
  "platformDashboard": {
    "timeRange": {
      "last7Days": "Last 7 Days",
      "last30Days": "Last 30 Days"
    },
    "metrics": {
      "avgTokensPerSession": {
        "label": "Avg Tokens / Session",
        "tooltip": "Average token consumption per chat session in the last 30 days. Calculated as total tokens / total sessions."
      },
      "retention7Day": {
        "label": "7-Day Retention",
        "tooltip": "Percentage of established companies (>14 days old) that were active last week and remain active this week.",
        "tooltipWithCount": "Percentage of established companies (>14 days old) that were active last week and remain active this week. {{retained}} of {{total}} companies retained."
      }
    },
    "charts": {
      "legend": {
        "cumulative": "Cumulative",
        "new": "New",
        "dau": "DAU",
        "wau": "WAU",
        "mau": "MAU",
        "enabled": "Enabled"
      },
      "companies": {
        "title": "Companies",
        "tooltip": "Cumulative and daily new company registrations"
      },
      "users": {
        "title": "Users",
        "tooltip": "Cumulative and daily new user registrations"
      },
      "tokenUsage": {
        "title": "Token Usage",
        "tooltip": "Cumulative and daily token consumption across all agents"
      },
      "dailySessions": {
        "title": "Daily Sessions",
        "tooltip": "Number of new chat sessions created per day and cumulative total"
      },
      "activeUsers": {
        "title": "Active Users",
        "tooltip": "DAU: distinct users who sent at least 1 message that day. WAU: distinct users active in a rolling 7-day window. MAU: distinct users active in a rolling 30-day window."
      },
      "channelDistribution": {
        "title": "Channel Distribution",
        "tooltip": "Distribution of chat sessions by source channel in the last 30 days"
      },
      "toolCategories": {
        "title": "Top 10 Tool Categories",
        "tooltip": "Most popular tool categories across all active agent configurations"
      }
    },
    "churn": {
      "title": "Churn Warning",
      "tooltip": "Companies that consumed >10M tokens but have had no activity in the past 14 days",
      "company": "Company",
      "totalTokens": "Total Tokens",
      "lastActive": "Last Active",
      "daysInactive": "Days Inactive",
      "noWarnings": "No churn warnings — all active companies are healthy"
    },
    "leaderboards": {
      "topCompanies": {
        "title": "Top 20 Companies by Tokens",
        "tooltip": "Companies ranked by total cumulative token consumption across all their agents"
      },
      "topAgents": {
        "title": "Top 20 Agents by Tokens",
        "tooltip": "Individual agents ranked by total cumulative token consumption"
      }
    },
    "loading": "Loading...",
    "noData": "No data"
  },
  "companySetup": {
    "title": "Set Up Your Company",
    "subtitle": "Join an existing company or create a new one",
    "joinTitle": "Join a Company",
    "joinDesc": "Enter the invitation code provided by your company administrator.",
    "inviteCode": "Invitation Code",
    "inviteCodePlaceholder": "e.g. ABC12345",
    "joinBtn": "Join Company",
    "or": "OR",
    "createTitle": "Create a Company",
    "createDesc": "Start a new workspace. You can invite team members later.",
    "companyName": "Company Name",
    "companyNamePlaceholder": "Company name",
    "createBtn": "Create",
    "hint": "You can invite members anytime from Company Settings.",
    "contactAdmin": "Contact your platform administrator for an invitation code."
  },
  "admin": {
    "tab": {
      "dashboard": "Dashboard",
      "platform": "️ Platform",
      "companies": "Companies"
    },
    "platformSettings": "Platform Settings",
    "platformSettingsDesc": "Manage platform-wide settings and company tenants.",
    "settingUpdated": "Setting updated",
    "company": "Company",
    "sso": "SSO",
    "orgAdmin": "Admin Email",
    "users": "Users",
    "agents": "Agents",
    "tokens": "Token Usage",
    "createdAt": "Created",
    "status": "Status",
    "action": "️ Action",
    "active": "Active",
    "disabled": "Disabled",
    "all": "All",
    "filterStatus": "Filter by status",
    "enable": "Enable",
    "disable": "Disable",
    "confirmDisable": "Disable this company? All users and agents will be paused.",
    "cannotDisableDefault": "Cannot disable the default company — platform admin would be locked out",
    "createCompany": "Create Company",
    "companyCreated": "Company Created",
    "companyCreatedDesc": "has been created successfully.",
    "inviteCodeLabel": "Admin Invitation Code",
    "inviteCodeHowTo": "How to use this code:",
    "inviteCodeExplain": "Send this code to the person who will manage this company. They should register a new account on the platform, then enter this code to join. The first person to use it will automatically become the Org Admin of this company. This code is single-use.",
    "copyCode": "Copy Code",
    "copied": "Copied",
    "companyNamePlaceholder": "Company name",
    "noFilterResults": "No companies match the current filter.",
    "showing": "{{start}}-{{end}} of {{total}}",
    "prev": "Prev",
    "next": "Next",
    "allowSelfCreate": "Allow users to create their own companies",
    "allowSelfCreateDesc": "When disabled, only platform admins can create companies.",
    "editCompany": "Edit Company",
    "ssoConfigTitle": "SSO & Domain Configuration",
    "ssoConfigDesc": "Configure SSO and custom domain for this company.",
    "ssoEnabled": "Enable SSO",
    "ssoDomain": "Custom Access Domain",
    "ssoDomainPlaceholder": "e.g. acme.clawith.com"
  }
}
