{
  "title": "AI Agent runtimes",
  "body": "OpenClaw / Hermes / IonClaw install and supervision; all tool calls go through Allowlist and approval.",
  "status": {
    "running": "Running",
    "activating": "Starting",
    "stuck": "Start stuck",
    "connected": "Online",
    "registered": "Registered only",
    "stale": "Stale",
    "disconnected": "Offline",
    "not_installed": "Not installed",
    "failed": "Failed",
    "error": "Error",
    "unknown": "Not probed",
    "fallback": "Unknown"
  },
  "cmdStatus": {
    "queued": "Queued",
    "acked": "Acked",
    "done": "Done",
    "error": "Error"
  },
  "activatingStuckHint": "Activating longer than 5 minutes — treated as failed. Check journal.",
  "noOnlineAgents": "No agents online",
  "journal": "journal",
  "writeUnit": "Write unit",
  "writeUnitConfirm": "Write the systemd unit for {{kind}} under /etc/systemd. The service is not started or enabled.",
  "liveN": "{{count}} online",
  "registeredOnly": "Registered only",
  "awaitProbe": "Awaiting probe",
  "runtimes": "Runtimes",
  "running": "Running",
  "liveAgents": "Online agents",
  "fleet": "Fleet",
  "aiTasks": "AI tasks",
  "expBanner": "Experimental.",
  "expBody": "Registration ≠ online. Real ops use the CLI:",
  "expDocs": "Repository file:",
  "expEdge": "On an edge:",
  "expPayload": "Command payload example:",
  "fleetCan": "What the fleet can do",
  "fleetCanDesc": "Not a hollow list — real control-plane capabilities for edge nodes",
  "capRegister": "Register",
  "capRegisterD": "Writes control-plane list (status “registered only”) — process may not be running",
  "capCommand": "Command",
  "capCommandD": "CLI presets (readiness / host / projects…) or custom; edge pulls, runs ysk-server, and acks",
  "capHistory": "Command history",
  "capHistoryD": "queued / done / error, exit code, pretty JSON result",
  "capDelete": "Delete",
  "capDeleteD": "Removes session and related messages",
  "capStatus": "Status",
  "capStatusD": "Registered only → online (heartbeat) → stale (>60s without heartbeat) → offline (disconnected / no further heartbeat)",
  "statusFlowTitle": "Status flow",
  "statusFlow": "Registered only → online → stale (>60s) → offline. Filter “Offline” means disconnected.",
  "colSession": "Session UUID",
  "copySession": "Copy session UUID for cluster / CLI --session",
  "staleFor": "Stale {{age}}",
  "commandTitle": "Queue a command for this session",
  "historyTitleShort": "Open command history (read-only)",
  "fleetTitle": "Fleet ({{count}})",
  "fleetDesc": "Control-plane registry · registered ≠ node online",
  "registerPlus": "+ Register agent",
  "colId": "ID",
  "colStatus": "Status",
  "colGroup": "Group",
  "colLastSeen": "Last seen",
  "command": "Command",
  "history": "History",
  "emptyAgents": "No agents registered",
  "emptyAgentsDesc": "Register from the list, or wait for edge processes to self-register",
  "historyTitle": "Command history · {{id}}",
  "historyDesc": "queued until node pulls;",
  "refreshHistory": "Refresh history",
  "colTime": "Time",
  "finishedAt": "Finished {{at}}",
  "colCommand": "Command",
  "colResult": "Result summary",
  "colExit": "Exit",
  "hasResult": "Has result",
  "emptyCmds": "No commands yet",
  "emptyCmdsDesc": "Queue with “Command”; stays queued until the edge agent is online",
  "edgeOnlineTitle": "How edge agents come online",
  "edgeOnlineDesc": "After panel registration, the node must run the outbound loop to heartbeat / pull commands",
  "controlPlaneApi": "Control-plane API:",
  "controlPlaneHint": "(must be reachable; use the real panel address in production)",
  "queueNote": "Without an edge process, “Command” still works: it queues until the agent comes online.",
  "runtimeTitle": "AI runtimes",
  "runtimeDesc": "Probe paths and units;",
  "emptyRuntime": "No probe results yet",
  "emptyRuntimeDesc": "Refresh to load runtimes, or probe individually",
  "pathExists": "Exists",
  "pathMissing": "Not installed",
  "unitUnknown": "{{unit}} · unknown",
  "unitFallback": "unit",
  "path": "Path",
  "probe": "Probe",
  "install": "Install",
  "recentOps": "Recent ops",
  "registerTitle": "Register agent",
  "registerDesc": "Writes control-plane list only; does not mean the node is online",
  "register": "Register",
  "agentId": "Agent ID",
  "agentIdHint": "Unique ID, e.g. edge-1 or office-gateway",
  "group": "Group",
  "groupHint": "For zoning / list filters",
  "registerNote": "Status shows “registered only” until the node runs the outbound agent and heartbeats.",
  "cmdTitle": "Command · {{id}}",
  "cmdTitlePlain": "Command",
  "cmdDesc": "Queued; edge agent pulls, runs, and acks (stays queued while offline)",
  "enqueue": "Enqueue",
  "cmdPreset": "Command (CLI first)",
  "cmdTypeAria": "Command type",
  "customCli": "Custom CLI",
  "cliArgs": "CLI arguments",
  "cliArgsHint": "Do not include ysk-server; e.g. logs journal --unit nginx.service",
  "cmdNote": "Edge ysk-server agent run executes CLI JSON locally (adds --json). Host changes still need YSK_EXECUTE=1 on the edge. See exit code and JSON in History.",
  "resultTitle": "Command result · exit {{code}}",
  "resultTitlePlain": "Command result",
  "codeComment": "# Concept: register → heartbeat loop → pull commands → ack\n# Library: ysk-server-core runOutboundAgent / agentCycle",
  "resultOuter": "Outer: edge ack (exitCode / stderr). Inner result:",
  "deleteTitle": "Delete {{id}}?",
  "deleteTitlePlain": "Delete agent?",
  "deleteDesc": "Related command history will also be removed.",
  "fact": {
    "kind": "Type",
    "name": "Name",
    "status": "Status",
    "unitActive": "Service",
    "unitName": "Unit",
    "pathExists": "Path exists",
    "installPath": "Install path"
  },
  "installBlocked": "Cannot complete install in the admin panel",
  "registeredMsg": "Registered {{id}} (control plane only; node must run outbound agent and heartbeat to go online)",
  "registerFailed": "Register failed",
  "removedFleet": "Fleet registration removed",
  "enqueuedMsg": "Queued command {{id}}… (runs after node pull)",
  "enqueueFailed": "Enqueue failed",
  "loadCommandsFailed": "Failed to load commands",
  "probedMsg": "Probed {{kind}}",
  "probeFailed": "Probe failed",
  "wroteUnitMsg": "Wrote {{kind}} unit settings",
  "writeFailed": "Write failed",
  "installedMsg": "Installed {{kind}}",
  "installIncomplete": "Install incomplete",
  "badgeDryRun": "dry-run",
  "badgeBlocked": "blocked",
  "labelStderr": "stderr",
  "labelAckCli": "ack + CLI JSON",
  "labelStdoutBody": "CLI stdout body",
  "resultOuterHint": "Outer result is CLI --json stdout.",
  "noteAllowlist": "Agent tool calls must pass the allowlist.",
  "noteRbacCap": "Agent role is capped at write-low."
}
