Initial commit
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
Copyright (c) Electron contributors
|
||||
Copyright (c) 2013-2020 GitHub Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
BIN
OllamaSetup.exe
Normal file
24
Squirrel-UpdateSelf.log
Normal file
@ -0,0 +1,24 @@
|
||||
[27/05/25 21:20:05] info: Program: Starting Squirrel Updater: --updateSelf=C:\Users\bake\AppData\Local\SquirrelTemp\Update.exe
|
||||
[27/05/25 21:20:05] info: Program: About to wait for parent PID 6060
|
||||
[27/05/25 21:20:07] fatal: Finished with unhandled exception: System.AggregateException: One or more errors occurred. ---> System.IO.IOException: The process cannot access the file 'C:\Users\bake\AppData\Local\AnthropicClaude\app-0.9.3\..\Update.exe' because it is being used by another process.
|
||||
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
|
||||
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
|
||||
at System.Threading.Tasks.Task.Execute()
|
||||
--- End of stack trace from previous location where exception was thrown ---
|
||||
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
|
||||
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
|
||||
at Squirrel.Update.Program.<UpdateSelf>d__6.MoveNext()
|
||||
--- End of inner exception stack trace ---
|
||||
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
|
||||
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
|
||||
at Squirrel.Update.Program.executeCommandLine(String[] args)
|
||||
at Squirrel.Update.Program.main(String[] args)
|
||||
---> (Inner Exception #0) System.IO.IOException: The process cannot access the file 'C:\Users\bake\AppData\Local\AnthropicClaude\app-0.9.3\..\Update.exe' because it is being used by another process.
|
||||
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
|
||||
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
|
||||
at System.Threading.Tasks.Task.Execute()
|
||||
--- End of stack trace from previous location where exception was thrown ---
|
||||
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
|
||||
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
|
||||
at Squirrel.Update.Program.<UpdateSelf>d__6.MoveNext()<---
|
||||
|
29
agent.log
Normal file
@ -0,0 +1,29 @@
|
||||
2025-05-29 07:44:54,789 - LocalSystemAgent - INFO - Local System Agent initialized
|
||||
2025-05-29 07:45:30,906 - LocalSystemAgent - ERROR - Failed to initialize database: [WinError 121] The semaphore timeout period has expired
|
||||
2025-05-29 07:45:48,572 - LocalSystemAgent - INFO - Local System Agent initialized
|
||||
2025-05-29 07:45:48,572 - LocalSystemAgent - INFO - Attempting to connect to database: postgresql://mcpuser:mcppoop123@bakecms.com:5432/postgres
|
||||
2025-05-29 07:45:58,581 - LocalSystemAgent - ERROR - Failed to initialize database:
|
||||
2025-05-29 07:52:15,310 - LocalSystemAgent - INFO - Local System Agent initialized
|
||||
2025-05-29 07:52:15,310 - LocalSystemAgent - INFO - Attempting to connect to database: postgresql://mcpuser:mcppoop123@bakecms.com:5432/postgres?sslmode=disable
|
||||
2025-05-29 07:52:25,326 - LocalSystemAgent - ERROR - Failed to initialize database:
|
||||
2025-05-29 07:54:43,511 - LocalSystemAgent - INFO - Local System Agent initialized
|
||||
2025-05-29 07:54:43,512 - LocalSystemAgent - INFO - Attempting to connect to database: postgresql://mcpuser:mcppoop123@bakecms.com:5432/postgres?sslmode=disable
|
||||
2025-05-29 07:54:53,508 - LocalSystemAgent - ERROR - Failed to initialize database:
|
||||
2025-05-29 08:17:16,132 - LocalSystemAgent - INFO - Local System Agent initialized
|
||||
2025-05-29 08:17:16,132 - LocalSystemAgent - ERROR - Failed to add model llama3.2:3b: PostgreSQL MCP client not available
|
||||
2025-05-29 08:17:16,132 - LocalSystemAgent - ERROR - Failed to add model qwen2.5:7b: PostgreSQL MCP client not available
|
||||
2025-05-29 08:17:16,132 - LocalSystemAgent - ERROR - Failed to add model llama3.2:1b: PostgreSQL MCP client not available
|
||||
2025-05-29 08:17:16,132 - LocalSystemAgent - WARNING - Could not store operation in database: PostgreSQL MCP client not available
|
||||
2025-05-29 08:17:16,133 - LocalSystemAgent - INFO - Created operation: d3b5d3c0-3293-4298-9496-0c1d26c196c4 - Testing agent with MCP integration
|
||||
2025-05-29 08:17:16,133 - LocalSystemAgent - INFO - Starting MCP server: postgres
|
||||
2025-05-29 08:17:16,135 - MCPClient-postgres - ERROR - Failed to start MCP server postgres: [WinError 2] The system cannot find the file specified
|
||||
2025-05-29 08:17:31,290 - LocalSystemAgent - INFO - Stopping Local System Agent
|
||||
2025-05-29 08:37:03,111 - LocalSystemAgent - INFO - Local System Agent initialized
|
||||
2025-05-29 08:37:03,111 - LocalSystemAgent - ERROR - Failed to add model llama3.2:3b: PostgreSQL MCP client not available
|
||||
2025-05-29 08:37:03,111 - LocalSystemAgent - ERROR - Failed to add model qwen2.5:7b: PostgreSQL MCP client not available
|
||||
2025-05-29 08:37:03,112 - LocalSystemAgent - ERROR - Failed to add model llama3.2:1b: PostgreSQL MCP client not available
|
||||
2025-05-29 08:37:03,112 - LocalSystemAgent - WARNING - Could not store operation in database: PostgreSQL MCP client not available
|
||||
2025-05-29 08:37:03,112 - LocalSystemAgent - INFO - Created operation: e160c5cb-6e1e-46fa-9cfe-6b7f2c025093 - Testing agent with MCP integration
|
||||
2025-05-29 08:37:03,112 - LocalSystemAgent - INFO - Starting MCP server: postgres
|
||||
2025-05-29 08:37:04,857 - MCPClient-postgres - INFO - MCP server postgres started successfully
|
||||
2025-05-29 08:37:18,298 - LocalSystemAgent - INFO - Stopping Local System Agent
|
BIN
chrome_100_percent.pak
Normal file
BIN
chrome_200_percent.pak
Normal file
BIN
claude.exe
Normal file
BIN
d3dcompiler_47.dll
Normal file
BIN
ffmpeg.dll
Normal file
BIN
icudtl.dat
Normal file
BIN
libEGL.dll
Normal file
BIN
libGLESv2.dll
Normal file
647
local_system_agent.py
Normal file
@ -0,0 +1,647 @@
|
||||
# Local System Agent - Core Framework
|
||||
# Phase 1: Foundation Setup
|
||||
|
||||
import asyncio
|
||||
import uuid
|
||||
import time
|
||||
import json
|
||||
import logging
|
||||
import psutil
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Dict, List, Optional, Any, Callable
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
import httpx
|
||||
from pathlib import Path
|
||||
import asyncpg
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
# Configuration and Data Models
|
||||
class OperationStatus(Enum):
|
||||
QUEUED = "queued"
|
||||
RUNNING = "running"
|
||||
COMPLETED = "completed"
|
||||
FAILED = "failed"
|
||||
CANCELLED = "cancelled"
|
||||
|
||||
class TaskPriority(Enum):
|
||||
LOW = "low"
|
||||
NORMAL = "normal"
|
||||
HIGH = "high"
|
||||
URGENT = "urgent"
|
||||
|
||||
@dataclass
|
||||
class ProcessInfo:
|
||||
pid: int
|
||||
command: str
|
||||
status: str
|
||||
cpu_percent: float
|
||||
memory_mb: float
|
||||
start_time: datetime
|
||||
|
||||
@dataclass
|
||||
class FileOperation:
|
||||
path: str
|
||||
operation: str # create, read, write, delete, move
|
||||
timestamp: datetime
|
||||
size_bytes: int
|
||||
permissions: str
|
||||
|
||||
@dataclass
|
||||
class NetworkCall:
|
||||
url: str
|
||||
method: str
|
||||
status_code: int
|
||||
response_time_ms: float
|
||||
data_size_bytes: int
|
||||
timestamp: datetime
|
||||
|
||||
@dataclass
|
||||
class ModelCall:
|
||||
model_id: str
|
||||
tokens_used: int
|
||||
cost_usd: float
|
||||
response_time_ms: float
|
||||
success: bool
|
||||
timestamp: datetime
|
||||
|
||||
@dataclass
|
||||
class Operation:
|
||||
operation_id: str
|
||||
type: str
|
||||
status: OperationStatus
|
||||
description: str
|
||||
created_at: datetime
|
||||
started_at: Optional[datetime] = None
|
||||
updated_at: Optional[datetime] = None
|
||||
estimated_completion: Optional[datetime] = None
|
||||
progress_percentage: int = 0
|
||||
priority: TaskPriority = TaskPriority.NORMAL
|
||||
spawned_processes: List[ProcessInfo] = field(default_factory=list)
|
||||
file_operations: List[FileOperation] = field(default_factory=list)
|
||||
network_calls: List[NetworkCall] = field(default_factory=list)
|
||||
model_calls: List[ModelCall] = field(default_factory=list)
|
||||
error_messages: List[str] = field(default_factory=list)
|
||||
warning_messages: List[str] = field(default_factory=list)
|
||||
info_messages: List[str] = field(default_factory=list)
|
||||
context: Dict[str, Any] = field(default_factory=dict)
|
||||
result: Optional[Any] = None
|
||||
|
||||
@dataclass
|
||||
class ModelConfig:
|
||||
model_id: str
|
||||
name: str
|
||||
type: str # "ollama", "lmstudio", "openai_compatible"
|
||||
endpoint: str
|
||||
api_key: Optional[str] = None
|
||||
capabilities: List[str] = field(default_factory=list)
|
||||
cost_per_token: float = 0.0
|
||||
max_tokens: int = 4096
|
||||
temperature: float = 0.1
|
||||
enabled: bool = True
|
||||
prompt_template: Optional[str] = None
|
||||
|
||||
@dataclass
|
||||
class MCPServerConfig:
|
||||
server_id: str
|
||||
name: str
|
||||
command: str
|
||||
args: List[str]
|
||||
env_vars: Dict[str, str] = field(default_factory=dict)
|
||||
enabled: bool = True
|
||||
auto_restart: bool = True
|
||||
health_check_interval: int = 30
|
||||
|
||||
# Core Agent Class
|
||||
class LocalSystemAgent:
|
||||
def __init__(self, db_url: str = "postgresql://mcpuser:mcppoop123@bakecms.com:5432/postgres?sslmode=disable"):
|
||||
self.db_url = db_url
|
||||
self.db_pool = None
|
||||
self.operations: Dict[str, Operation] = {}
|
||||
self.task_queue = asyncio.Queue()
|
||||
self.active_tasks: Dict[str, asyncio.Task] = {}
|
||||
self.models: Dict[str, ModelConfig] = {}
|
||||
self.mcp_servers: Dict[str, MCPServerConfig] = {}
|
||||
self.default_model = None
|
||||
self.running = False
|
||||
|
||||
# Initialize logging
|
||||
self._setup_logging()
|
||||
|
||||
self.logger.info("Local System Agent initialized")
|
||||
|
||||
def _setup_logging(self):
|
||||
"""Setup comprehensive logging system"""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler('agent.log'),
|
||||
logging.StreamHandler()
|
||||
]
|
||||
)
|
||||
self.logger = logging.getLogger('LocalSystemAgent')
|
||||
|
||||
async def _init_database(self):
|
||||
"""Initialize PostgreSQL connection and create tables"""
|
||||
try:
|
||||
print(f"Attempting to connect to database: {self.db_url}")
|
||||
self.logger.info(f"Attempting to connect to database: {self.db_url}")
|
||||
|
||||
self.db_pool = await asyncio.wait_for(
|
||||
asyncpg.create_pool(self.db_url, min_size=2, max_size=10),
|
||||
timeout=10.0
|
||||
)
|
||||
self.logger.info("Connected to PostgreSQL database")
|
||||
print("Connected to PostgreSQL database")
|
||||
|
||||
async with self.db_pool.acquire() as conn:
|
||||
# Create agent_models table
|
||||
await conn.execute('''
|
||||
CREATE TABLE IF NOT EXISTS agent_models (
|
||||
model_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
endpoint TEXT NOT NULL,
|
||||
api_key TEXT,
|
||||
capabilities JSONB DEFAULT '[]',
|
||||
cost_per_token REAL DEFAULT 0.0,
|
||||
max_tokens INTEGER DEFAULT 4096,
|
||||
temperature REAL DEFAULT 0.1,
|
||||
enabled BOOLEAN DEFAULT TRUE,
|
||||
prompt_template TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
)
|
||||
''')
|
||||
|
||||
# Create agent_mcp_servers table
|
||||
await conn.execute('''
|
||||
CREATE TABLE IF NOT EXISTS agent_mcp_servers (
|
||||
server_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
command TEXT NOT NULL,
|
||||
args JSONB NOT NULL,
|
||||
env_vars JSONB DEFAULT '{}',
|
||||
enabled BOOLEAN DEFAULT TRUE,
|
||||
auto_restart BOOLEAN DEFAULT TRUE,
|
||||
health_check_interval INTEGER DEFAULT 30,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
)
|
||||
''')
|
||||
|
||||
# Create agent_operations table
|
||||
await conn.execute('''
|
||||
CREATE TABLE IF NOT EXISTS agent_operations (
|
||||
operation_id TEXT PRIMARY KEY,
|
||||
type TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
started_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
estimated_completion TIMESTAMP,
|
||||
progress_percentage INTEGER DEFAULT 0,
|
||||
priority TEXT DEFAULT 'normal',
|
||||
context JSONB DEFAULT '{}',
|
||||
result JSONB,
|
||||
spawned_processes JSONB DEFAULT '[]',
|
||||
file_operations JSONB DEFAULT '[]',
|
||||
network_calls JSONB DEFAULT '[]',
|
||||
model_calls JSONB DEFAULT '[]',
|
||||
error_messages JSONB DEFAULT '[]',
|
||||
warning_messages JSONB DEFAULT '[]',
|
||||
info_messages JSONB DEFAULT '[]'
|
||||
)
|
||||
''')
|
||||
|
||||
self.logger.info("Database tables initialized")
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Failed to initialize database: {e}")
|
||||
raise
|
||||
|
||||
async def _load_configuration(self):
|
||||
"""Load models and MCP server configurations from database"""
|
||||
if not self.db_pool:
|
||||
await self._init_database()
|
||||
|
||||
async with self.db_pool.acquire() as conn:
|
||||
# Load models
|
||||
models_rows = await conn.fetch("SELECT * FROM agent_models WHERE enabled = TRUE")
|
||||
for row in models_rows:
|
||||
model = ModelConfig(
|
||||
model_id=row['model_id'],
|
||||
name=row['name'],
|
||||
type=row['type'],
|
||||
endpoint=row['endpoint'],
|
||||
api_key=row['api_key'],
|
||||
capabilities=row['capabilities'] or [],
|
||||
cost_per_token=row['cost_per_token'],
|
||||
max_tokens=row['max_tokens'],
|
||||
temperature=row['temperature'],
|
||||
enabled=row['enabled'],
|
||||
prompt_template=row['prompt_template']
|
||||
)
|
||||
self.models[model.model_id] = model
|
||||
|
||||
# Load MCP servers
|
||||
servers_rows = await conn.fetch("SELECT * FROM agent_mcp_servers WHERE enabled = TRUE")
|
||||
for row in servers_rows:
|
||||
server = MCPServerConfig(
|
||||
server_id=row['server_id'],
|
||||
name=row['name'],
|
||||
command=row['command'],
|
||||
args=row['args'] or [],
|
||||
env_vars=row['env_vars'] or {},
|
||||
enabled=row['enabled'],
|
||||
auto_restart=row['auto_restart'],
|
||||
health_check_interval=row['health_check_interval']
|
||||
)
|
||||
self.mcp_servers[server.server_id] = server
|
||||
|
||||
# Set default model (first available Ollama model)
|
||||
ollama_models = [m for m in self.models.values() if m.type == "ollama"]
|
||||
if ollama_models:
|
||||
self.default_model = ollama_models[0].model_id
|
||||
self.logger.info(f"Default model set to: {self.default_model}")
|
||||
|
||||
async def add_model(self, model_config: ModelConfig) -> bool:
|
||||
"""Add a new model configuration"""
|
||||
try:
|
||||
async with self.db_pool.acquire() as conn:
|
||||
await conn.execute('''
|
||||
INSERT INTO agent_models
|
||||
(model_id, name, type, endpoint, api_key, capabilities,
|
||||
cost_per_token, max_tokens, temperature, enabled, prompt_template)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
||||
ON CONFLICT (model_id) DO UPDATE SET
|
||||
name = $2, type = $3, endpoint = $4, api_key = $5,
|
||||
capabilities = $6, cost_per_token = $7, max_tokens = $8,
|
||||
temperature = $9, enabled = $10, prompt_template = $11
|
||||
''', (
|
||||
model_config.model_id, model_config.name, model_config.type,
|
||||
model_config.endpoint, model_config.api_key,
|
||||
json.dumps(model_config.capabilities),
|
||||
model_config.cost_per_token, model_config.max_tokens,
|
||||
model_config.temperature, model_config.enabled,
|
||||
model_config.prompt_template
|
||||
))
|
||||
|
||||
self.models[model_config.model_id] = model_config
|
||||
self.logger.info(f"Added model: {model_config.model_id}")
|
||||
return True
|
||||
except Exception as e:
|
||||
self.logger.error(f"Failed to add model {model_config.model_id}: {e}")
|
||||
return False
|
||||
|
||||
async def create_operation(self, operation_type: str, description: str,
|
||||
priority: TaskPriority = TaskPriority.NORMAL,
|
||||
context: Dict[str, Any] = None) -> str:
|
||||
"""Create a new operation and add it to the queue"""
|
||||
operation_id = str(uuid.uuid4())
|
||||
operation = Operation(
|
||||
operation_id=operation_id,
|
||||
type=operation_type,
|
||||
status=OperationStatus.QUEUED,
|
||||
description=description,
|
||||
created_at=datetime.now(),
|
||||
priority=priority,
|
||||
context=context or {}
|
||||
)
|
||||
|
||||
self.operations[operation_id] = operation
|
||||
await self.task_queue.put(operation)
|
||||
|
||||
# Store in database
|
||||
async with self.db_pool.acquire() as conn:
|
||||
await conn.execute('''
|
||||
INSERT INTO agent_operations
|
||||
(operation_id, type, status, description, created_at, priority, context)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
''', (
|
||||
operation_id, operation_type, operation.status.value,
|
||||
description, operation.created_at,
|
||||
priority.value, json.dumps(context or {})
|
||||
))
|
||||
|
||||
self.logger.info(f"Created operation: {operation_id} - {description}")
|
||||
return operation_id
|
||||
|
||||
async def get_operation_status(self, operation_id: str) -> Optional[Operation]:
|
||||
"""Get the current status of an operation"""
|
||||
return self.operations.get(operation_id)
|
||||
|
||||
async def update_operation(self, operation_id: str, **updates):
|
||||
"""Update operation status and information"""
|
||||
if operation_id not in self.operations:
|
||||
return False
|
||||
|
||||
operation = self.operations[operation_id]
|
||||
|
||||
for key, value in updates.items():
|
||||
if hasattr(operation, key):
|
||||
setattr(operation, key, value)
|
||||
|
||||
operation.updated_at = datetime.now()
|
||||
|
||||
# Convert dataclass lists to JSON for storage
|
||||
def serialize_list(items):
|
||||
if not items:
|
||||
return []
|
||||
return [item.__dict__ if hasattr(item, '__dict__') else item for item in items]
|
||||
|
||||
# Update database
|
||||
async with self.db_pool.acquire() as conn:
|
||||
await conn.execute('''
|
||||
UPDATE agent_operations
|
||||
SET status = $1, updated_at = $2, progress_percentage = $3,
|
||||
context = $4, result = $5, spawned_processes = $6,
|
||||
file_operations = $7, network_calls = $8, model_calls = $9,
|
||||
error_messages = $10, warning_messages = $11, info_messages = $12
|
||||
WHERE operation_id = $13
|
||||
''', (
|
||||
operation.status.value, operation.updated_at,
|
||||
operation.progress_percentage, json.dumps(operation.context),
|
||||
json.dumps(operation.result) if operation.result else None,
|
||||
json.dumps(serialize_list(operation.spawned_processes)),
|
||||
json.dumps(serialize_list(operation.file_operations)),
|
||||
json.dumps(serialize_list(operation.network_calls)),
|
||||
json.dumps(serialize_list(operation.model_calls)),
|
||||
json.dumps(operation.error_messages),
|
||||
json.dumps(operation.warning_messages),
|
||||
json.dumps(operation.info_messages),
|
||||
operation_id
|
||||
))
|
||||
|
||||
return True
|
||||
|
||||
async def call_model(self, model_id: str, prompt: str,
|
||||
operation_id: Optional[str] = None) -> Dict[str, Any]:
|
||||
"""Make a call to the specified model"""
|
||||
if model_id not in self.models:
|
||||
model_id = self.default_model
|
||||
|
||||
if not model_id or model_id not in self.models:
|
||||
raise ValueError("No valid model available")
|
||||
|
||||
model = self.models[model_id]
|
||||
start_time = time.time()
|
||||
|
||||
try:
|
||||
async with httpx.AsyncClient() as client:
|
||||
if model.type == "ollama":
|
||||
response = await client.post(
|
||||
f"{model.endpoint}/api/generate",
|
||||
json={
|
||||
"model": model.model_id,
|
||||
"prompt": prompt,
|
||||
"stream": False,
|
||||
"options": {
|
||||
"temperature": model.temperature,
|
||||
"num_predict": model.max_tokens
|
||||
}
|
||||
},
|
||||
timeout=60.0
|
||||
)
|
||||
response.raise_for_status()
|
||||
result = response.json()
|
||||
|
||||
response_time = (time.time() - start_time) * 1000
|
||||
|
||||
# Track model usage
|
||||
model_call = ModelCall(
|
||||
model_id=model_id,
|
||||
tokens_used=result.get("eval_count", 0),
|
||||
cost_usd=0.0, # Ollama is free
|
||||
response_time_ms=response_time,
|
||||
success=True,
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
|
||||
if operation_id and operation_id in self.operations:
|
||||
self.operations[operation_id].model_calls.append(model_call)
|
||||
|
||||
return {
|
||||
"response": result.get("response", ""),
|
||||
"model_used": model_id,
|
||||
"tokens_used": result.get("eval_count", 0),
|
||||
"response_time_ms": response_time
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
response_time = (time.time() - start_time) * 1000
|
||||
model_call = ModelCall(
|
||||
model_id=model_id,
|
||||
tokens_used=0,
|
||||
cost_usd=0.0,
|
||||
response_time_ms=response_time,
|
||||
success=False,
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
|
||||
if operation_id and operation_id in self.operations:
|
||||
self.operations[operation_id].model_calls.append(model_call)
|
||||
self.operations[operation_id].error_messages.append(f"Model call failed: {str(e)}")
|
||||
|
||||
raise
|
||||
|
||||
async def process_task_queue(self):
|
||||
"""Main task processing loop"""
|
||||
while self.running:
|
||||
try:
|
||||
operation = await asyncio.wait_for(self.task_queue.get(), timeout=1.0)
|
||||
|
||||
# Update operation status
|
||||
operation.status = OperationStatus.RUNNING
|
||||
operation.started_at = datetime.now()
|
||||
await self.update_operation(operation.operation_id,
|
||||
status=OperationStatus.RUNNING,
|
||||
started_at=operation.started_at)
|
||||
|
||||
# Create task for operation
|
||||
task = asyncio.create_task(self._execute_operation(operation))
|
||||
self.active_tasks[operation.operation_id] = task
|
||||
|
||||
self.logger.info(f"Started processing operation: {operation.operation_id}")
|
||||
|
||||
except asyncio.TimeoutError:
|
||||
continue
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in task queue processing: {e}")
|
||||
|
||||
async def _execute_operation(self, operation: Operation):
|
||||
"""Execute a specific operation"""
|
||||
try:
|
||||
self.logger.info(f"Executing operation: {operation.operation_id} - {operation.description}")
|
||||
|
||||
# This is where we'll implement the research-first decision loop
|
||||
# For now, we'll do a simple operation based on type
|
||||
|
||||
if operation.type == "research_task":
|
||||
await self._handle_research_task(operation)
|
||||
elif operation.type == "system_task":
|
||||
await self._handle_system_task(operation)
|
||||
elif operation.type == "test_task":
|
||||
await self._handle_test_task(operation)
|
||||
else:
|
||||
operation.error_messages.append(f"Unknown operation type: {operation.type}")
|
||||
operation.status = OperationStatus.FAILED
|
||||
|
||||
if operation.status != OperationStatus.FAILED:
|
||||
operation.status = OperationStatus.COMPLETED
|
||||
operation.progress_percentage = 100
|
||||
|
||||
except Exception as e:
|
||||
operation.status = OperationStatus.FAILED
|
||||
operation.error_messages.append(f"Execution failed: {str(e)}")
|
||||
self.logger.error(f"Operation {operation.operation_id} failed: {e}")
|
||||
|
||||
finally:
|
||||
await self.update_operation(operation.operation_id,
|
||||
status=operation.status,
|
||||
progress_percentage=operation.progress_percentage)
|
||||
|
||||
# Clean up active task
|
||||
if operation.operation_id in self.active_tasks:
|
||||
del self.active_tasks[operation.operation_id]
|
||||
|
||||
async def _handle_test_task(self, operation: Operation):
|
||||
"""Handle a simple test task"""
|
||||
operation.info_messages.append("Starting test task")
|
||||
operation.progress_percentage = 25
|
||||
await self.update_operation(operation.operation_id, progress_percentage=25)
|
||||
|
||||
await asyncio.sleep(2) # Simulate work
|
||||
|
||||
operation.info_messages.append("Test task in progress")
|
||||
operation.progress_percentage = 75
|
||||
await self.update_operation(operation.operation_id, progress_percentage=75)
|
||||
|
||||
await asyncio.sleep(1) # Simulate more work
|
||||
|
||||
operation.result = {"message": "Test task completed successfully", "timestamp": datetime.now().isoformat()}
|
||||
operation.info_messages.append("Test task completed")
|
||||
|
||||
async def _handle_research_task(self, operation: Operation):
|
||||
"""Handle research tasks with web search"""
|
||||
# This will be implemented with SearxNG integration
|
||||
operation.info_messages.append("Research task handler not yet implemented")
|
||||
operation.result = {"status": "pending_implementation"}
|
||||
|
||||
async def _handle_system_task(self, operation: Operation):
|
||||
"""Handle system tasks via MCP servers"""
|
||||
# This will be implemented with MCP client integration
|
||||
operation.info_messages.append("System task handler not yet implemented")
|
||||
operation.result = {"status": "pending_implementation"}
|
||||
|
||||
async def start(self):
|
||||
"""Start the agent"""
|
||||
if not self.db_pool:
|
||||
await self._init_database()
|
||||
await self._load_configuration()
|
||||
|
||||
self.running = True
|
||||
self.logger.info("Starting Local System Agent")
|
||||
|
||||
# Start task processing
|
||||
await self.process_task_queue()
|
||||
|
||||
async def stop(self):
|
||||
"""Stop the agent gracefully"""
|
||||
self.running = False
|
||||
self.logger.info("Stopping Local System Agent")
|
||||
|
||||
# Cancel active tasks
|
||||
for task in self.active_tasks.values():
|
||||
task.cancel()
|
||||
|
||||
# Close database pool
|
||||
if self.db_pool:
|
||||
await self.db_pool.close()
|
||||
|
||||
# Initialize default Ollama models
|
||||
async def setup_default_models(agent: LocalSystemAgent):
|
||||
"""Setup default Ollama models"""
|
||||
default_models = [
|
||||
ModelConfig(
|
||||
model_id="llama3.2:3b",
|
||||
name="Llama 3.2 3B",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "coding", "analysis"]
|
||||
),
|
||||
ModelConfig(
|
||||
model_id="qwen2.5:7b",
|
||||
name="Qwen 2.5 7B",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "coding", "reasoning"]
|
||||
),
|
||||
ModelConfig(
|
||||
model_id="llama3.2:1b",
|
||||
name="Llama 3.2 1B (Fast)",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "quick_tasks"]
|
||||
)
|
||||
]
|
||||
|
||||
for model in default_models:
|
||||
await agent.add_model(model)
|
||||
|
||||
# Example usage and testing
|
||||
async def main():
|
||||
try:
|
||||
print("Initializing Local System Agent...")
|
||||
# Initialize agent
|
||||
agent = LocalSystemAgent()
|
||||
|
||||
print("Initializing database connection...")
|
||||
# Initialize database and load config
|
||||
await agent._init_database()
|
||||
|
||||
print("Loading configuration...")
|
||||
await agent._load_configuration()
|
||||
|
||||
print("Setting up default models...")
|
||||
# Setup default models
|
||||
await setup_default_models(agent)
|
||||
|
||||
print("Creating test operation...")
|
||||
# Create a test operation
|
||||
operation_id = await agent.create_operation(
|
||||
"test_task",
|
||||
"Testing agent operation tracking",
|
||||
TaskPriority.NORMAL,
|
||||
{"test_param": "test_value"}
|
||||
)
|
||||
|
||||
print(f"Created operation: {operation_id}")
|
||||
|
||||
# Start agent in background
|
||||
print("Starting agent task processing...")
|
||||
agent_task = asyncio.create_task(agent.start())
|
||||
|
||||
# Monitor operation progress
|
||||
print("Monitoring operation progress...")
|
||||
for i in range(10):
|
||||
await asyncio.sleep(1)
|
||||
operation = await agent.get_operation_status(operation_id)
|
||||
if operation:
|
||||
print(f"Operation status: {operation.status.value}, Progress: {operation.progress_percentage}%")
|
||||
if operation.status in [OperationStatus.COMPLETED, OperationStatus.FAILED]:
|
||||
print(f"Operation result: {operation.result}")
|
||||
break
|
||||
|
||||
# Stop agent
|
||||
print("Stopping agent...")
|
||||
await agent.stop()
|
||||
print("Agent stopped successfully")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error in main: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
761
local_system_agent_mcp.py
Normal file
@ -0,0 +1,761 @@
|
||||
# Local System Agent - MCP Client Integration
|
||||
# Phase 1: Foundation Setup with MCP Communication
|
||||
|
||||
import asyncio
|
||||
import uuid
|
||||
import time
|
||||
import json
|
||||
import logging
|
||||
import psutil
|
||||
import subprocess
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Dict, List, Optional, Any, Callable
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
import httpx
|
||||
from pathlib import Path
|
||||
|
||||
# Configuration and Data Models
|
||||
class OperationStatus(Enum):
|
||||
QUEUED = "queued"
|
||||
RUNNING = "running"
|
||||
COMPLETED = "completed"
|
||||
FAILED = "failed"
|
||||
CANCELLED = "cancelled"
|
||||
|
||||
class TaskPriority(Enum):
|
||||
LOW = "low"
|
||||
NORMAL = "normal"
|
||||
HIGH = "high"
|
||||
URGENT = "urgent"
|
||||
|
||||
@dataclass
|
||||
class ProcessInfo:
|
||||
pid: int
|
||||
command: str
|
||||
status: str
|
||||
cpu_percent: float
|
||||
memory_mb: float
|
||||
start_time: datetime
|
||||
|
||||
@dataclass
|
||||
class FileOperation:
|
||||
path: str
|
||||
operation: str # create, read, write, delete, move
|
||||
timestamp: datetime
|
||||
size_bytes: int
|
||||
permissions: str
|
||||
|
||||
@dataclass
|
||||
class NetworkCall:
|
||||
url: str
|
||||
method: str
|
||||
status_code: int
|
||||
response_time_ms: float
|
||||
data_size_bytes: int
|
||||
timestamp: datetime
|
||||
|
||||
@dataclass
|
||||
class ModelCall:
|
||||
model_id: str
|
||||
tokens_used: int
|
||||
cost_usd: float
|
||||
response_time_ms: float
|
||||
success: bool
|
||||
timestamp: datetime
|
||||
|
||||
@dataclass
|
||||
class Operation:
|
||||
operation_id: str
|
||||
type: str
|
||||
status: OperationStatus
|
||||
description: str
|
||||
created_at: datetime
|
||||
started_at: Optional[datetime] = None
|
||||
updated_at: Optional[datetime] = None
|
||||
estimated_completion: Optional[datetime] = None
|
||||
progress_percentage: int = 0
|
||||
priority: TaskPriority = TaskPriority.NORMAL
|
||||
spawned_processes: List[ProcessInfo] = field(default_factory=list)
|
||||
file_operations: List[FileOperation] = field(default_factory=list)
|
||||
network_calls: List[NetworkCall] = field(default_factory=list)
|
||||
model_calls: List[ModelCall] = field(default_factory=list)
|
||||
error_messages: List[str] = field(default_factory=list)
|
||||
warning_messages: List[str] = field(default_factory=list)
|
||||
info_messages: List[str] = field(default_factory=list)
|
||||
context: Dict[str, Any] = field(default_factory=dict)
|
||||
result: Optional[Any] = None
|
||||
|
||||
@dataclass
|
||||
class ModelConfig:
|
||||
model_id: str
|
||||
name: str
|
||||
type: str # "ollama", "lmstudio", "openai_compatible"
|
||||
endpoint: str
|
||||
api_key: Optional[str] = None
|
||||
capabilities: List[str] = field(default_factory=list)
|
||||
cost_per_token: float = 0.0
|
||||
max_tokens: int = 4096
|
||||
temperature: float = 0.1
|
||||
enabled: bool = True
|
||||
prompt_template: Optional[str] = None
|
||||
|
||||
@dataclass
|
||||
class MCPServerConfig:
|
||||
server_id: str
|
||||
name: str
|
||||
command: str
|
||||
args: List[str]
|
||||
env_vars: Dict[str, str] = field(default_factory=dict)
|
||||
enabled: bool = True
|
||||
auto_restart: bool = True
|
||||
health_check_interval: int = 30
|
||||
|
||||
# MCP Client Implementation
|
||||
class MCPClient:
|
||||
def __init__(self, server_id: str, command: str, args: List[str], env_vars: Dict[str, str] = None):
|
||||
self.server_id = server_id
|
||||
self.command = command
|
||||
self.args = args
|
||||
self.env_vars = env_vars or {}
|
||||
self.process = None
|
||||
self.request_id = 0
|
||||
self.logger = logging.getLogger(f'MCPClient-{server_id}')
|
||||
|
||||
async def start(self):
|
||||
"""Start the MCP server process"""
|
||||
try:
|
||||
# Handle different command types with proper paths
|
||||
if self.command == "npx":
|
||||
# npx is a PowerShell script, run it through PowerShell
|
||||
cmd = ["powershell", "-Command", "npx"] + self.args
|
||||
elif self.command == "uvx":
|
||||
# Use direct path to uvx executable
|
||||
cmd = ["C:\\Users\\bake\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\uvx.exe"] + self.args
|
||||
else:
|
||||
# Use command as-is for other cases
|
||||
cmd = [self.command] + self.args
|
||||
|
||||
# Set up environment with current PATH plus any additional env vars
|
||||
import os
|
||||
env = os.environ.copy()
|
||||
env.update(self.env_vars)
|
||||
|
||||
self.process = await asyncio.create_subprocess_exec(
|
||||
*cmd,
|
||||
stdin=asyncio.subprocess.PIPE,
|
||||
stdout=asyncio.subprocess.PIPE,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
env=env
|
||||
)
|
||||
|
||||
# Initialize MCP connection
|
||||
await self._initialize_connection()
|
||||
self.logger.info(f"MCP server {self.server_id} started successfully")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Failed to start MCP server {self.server_id}: {e}")
|
||||
return False
|
||||
|
||||
async def _initialize_connection(self):
|
||||
"""Initialize MCP connection with handshake"""
|
||||
# Send initialize request
|
||||
init_request = {
|
||||
"jsonrpc": "2.0",
|
||||
"id": self._next_request_id(),
|
||||
"method": "initialize",
|
||||
"params": {
|
||||
"protocolVersion": "2024-11-05",
|
||||
"capabilities": {
|
||||
"tools": {}
|
||||
},
|
||||
"clientInfo": {
|
||||
"name": "local-system-agent",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
response = await self._send_request(init_request)
|
||||
if response.get("error"):
|
||||
raise Exception(f"MCP initialization failed: {response['error']}")
|
||||
|
||||
# Send initialized notification
|
||||
initialized_notification = {
|
||||
"jsonrpc": "2.0",
|
||||
"method": "notifications/initialized"
|
||||
}
|
||||
await self._send_notification(initialized_notification)
|
||||
|
||||
def _next_request_id(self):
|
||||
"""Get next request ID"""
|
||||
self.request_id += 1
|
||||
return self.request_id
|
||||
|
||||
async def _send_request(self, request: dict) -> dict:
|
||||
"""Send JSON-RPC request and wait for response"""
|
||||
if not self.process:
|
||||
raise Exception("MCP server not started")
|
||||
|
||||
# Send request
|
||||
request_json = json.dumps(request) + "\n"
|
||||
self.process.stdin.write(request_json.encode())
|
||||
await self.process.stdin.drain()
|
||||
|
||||
# Read response
|
||||
response_line = await self.process.stdout.readline()
|
||||
response = json.loads(response_line.decode().strip())
|
||||
|
||||
return response
|
||||
|
||||
async def _send_notification(self, notification: dict):
|
||||
"""Send JSON-RPC notification (no response expected)"""
|
||||
if not self.process:
|
||||
raise Exception("MCP server not started")
|
||||
|
||||
notification_json = json.dumps(notification) + "\n"
|
||||
self.process.stdin.write(notification_json.encode())
|
||||
await self.process.stdin.drain()
|
||||
|
||||
async def call_tool(self, tool_name: str, arguments: dict) -> dict:
|
||||
"""Call a tool on the MCP server"""
|
||||
request = {
|
||||
"jsonrpc": "2.0",
|
||||
"id": self._next_request_id(),
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": tool_name,
|
||||
"arguments": arguments
|
||||
}
|
||||
}
|
||||
|
||||
response = await self._send_request(request)
|
||||
|
||||
if response.get("error"):
|
||||
raise Exception(f"Tool call failed: {response['error']}")
|
||||
|
||||
return response.get("result", {})
|
||||
|
||||
async def list_tools(self) -> List[dict]:
|
||||
"""Get list of available tools"""
|
||||
request = {
|
||||
"jsonrpc": "2.0",
|
||||
"id": self._next_request_id(),
|
||||
"method": "tools/list"
|
||||
}
|
||||
|
||||
response = await self._send_request(request)
|
||||
|
||||
if response.get("error"):
|
||||
raise Exception(f"Failed to list tools: {response['error']}")
|
||||
|
||||
return response.get("result", {}).get("tools", [])
|
||||
|
||||
async def stop(self):
|
||||
"""Stop the MCP server process"""
|
||||
if self.process:
|
||||
self.process.terminate()
|
||||
await self.process.wait()
|
||||
self.logger.info(f"MCP server {self.server_id} stopped")
|
||||
|
||||
# Core Agent Class
|
||||
class LocalSystemAgent:
|
||||
def __init__(self):
|
||||
self.operations: Dict[str, Operation] = {}
|
||||
self.task_queue = asyncio.Queue()
|
||||
self.active_tasks: Dict[str, asyncio.Task] = {}
|
||||
self.models: Dict[str, ModelConfig] = {}
|
||||
self.mcp_servers: Dict[str, MCPServerConfig] = {}
|
||||
self.mcp_clients: Dict[str, MCPClient] = {}
|
||||
self.default_model = None
|
||||
self.running = False
|
||||
|
||||
# Initialize logging
|
||||
self._setup_logging()
|
||||
|
||||
# Setup baseline MCP servers
|
||||
self._setup_baseline_mcp_servers()
|
||||
|
||||
self.logger.info("Local System Agent initialized")
|
||||
|
||||
def _setup_logging(self):
|
||||
"""Setup comprehensive logging system"""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler('agent.log'),
|
||||
logging.StreamHandler()
|
||||
]
|
||||
)
|
||||
self.logger = logging.getLogger('LocalSystemAgent')
|
||||
|
||||
def _setup_baseline_mcp_servers(self):
|
||||
"""Setup hardcoded baseline MCP server configurations"""
|
||||
# PostgreSQL MCP Server
|
||||
postgres_config = MCPServerConfig(
|
||||
server_id="postgres",
|
||||
name="PostgreSQL Database",
|
||||
command="npx",
|
||||
args=["-y", "@modelcontextprotocol/server-postgres",
|
||||
"postgresql://mcpuser:mcppoop123@bakecms.com:5432/postgres"],
|
||||
enabled=True,
|
||||
auto_restart=True
|
||||
)
|
||||
self.mcp_servers["postgres"] = postgres_config
|
||||
|
||||
# Neo4j MCP Server
|
||||
neo4j_config = MCPServerConfig(
|
||||
server_id="neo4j",
|
||||
name="Neo4j Memory Database",
|
||||
command="uvx",
|
||||
args=["mcp-neo4j-cypher@0.2.1"],
|
||||
env_vars={
|
||||
"NEO4J_URI": "bolt://bakecms.com:7687",
|
||||
"NEO4J_USERNAME": "neo4j",
|
||||
"NEO4J_PASSWORD": "pooppoop",
|
||||
"NEO4J_DATABASE": "neo4j"
|
||||
},
|
||||
enabled=True,
|
||||
auto_restart=True
|
||||
)
|
||||
self.mcp_servers["neo4j"] = neo4j_config
|
||||
|
||||
async def _init_mcp_servers(self):
|
||||
"""Initialize and start MCP server connections"""
|
||||
for server_id, config in self.mcp_servers.items():
|
||||
if not config.enabled:
|
||||
continue
|
||||
|
||||
print(f"Starting MCP server: {server_id}")
|
||||
self.logger.info(f"Starting MCP server: {server_id}")
|
||||
|
||||
client = MCPClient(
|
||||
server_id=server_id,
|
||||
command=config.command,
|
||||
args=config.args,
|
||||
env_vars=config.env_vars
|
||||
)
|
||||
|
||||
success = await client.start()
|
||||
if success:
|
||||
self.mcp_clients[server_id] = client
|
||||
print(f"✅ MCP server {server_id} started successfully")
|
||||
|
||||
# List available tools
|
||||
try:
|
||||
tools = await client.list_tools()
|
||||
tool_names = [tool.get("name", "unknown") for tool in tools]
|
||||
print(f" Available tools: {', '.join(tool_names)}")
|
||||
self.logger.info(f"MCP server {server_id} tools: {tool_names}")
|
||||
except Exception as e:
|
||||
print(f" Warning: Could not list tools for {server_id}: {e}")
|
||||
else:
|
||||
print(f"❌ Failed to start MCP server: {server_id}")
|
||||
|
||||
async def _init_database_tables(self):
|
||||
"""Initialize database tables via MCP"""
|
||||
try:
|
||||
print("Creating database tables via MCP...")
|
||||
|
||||
# Create agent_models table
|
||||
await self.postgres_query('''
|
||||
CREATE TABLE IF NOT EXISTS agent_models (
|
||||
model_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
endpoint TEXT NOT NULL,
|
||||
api_key TEXT,
|
||||
capabilities JSONB DEFAULT '[]',
|
||||
cost_per_token REAL DEFAULT 0.0,
|
||||
max_tokens INTEGER DEFAULT 4096,
|
||||
temperature REAL DEFAULT 0.1,
|
||||
enabled BOOLEAN DEFAULT TRUE,
|
||||
prompt_template TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
)
|
||||
''')
|
||||
|
||||
# Create agent_mcp_servers table
|
||||
await self.postgres_query('''
|
||||
CREATE TABLE IF NOT EXISTS agent_mcp_servers (
|
||||
server_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
command TEXT NOT NULL,
|
||||
args JSONB NOT NULL,
|
||||
env_vars JSONB DEFAULT '{}',
|
||||
enabled BOOLEAN DEFAULT TRUE,
|
||||
auto_restart BOOLEAN DEFAULT TRUE,
|
||||
health_check_interval INTEGER DEFAULT 30,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
)
|
||||
''')
|
||||
|
||||
# Create agent_operations table
|
||||
await self.postgres_query('''
|
||||
CREATE TABLE IF NOT EXISTS agent_operations (
|
||||
operation_id TEXT PRIMARY KEY,
|
||||
type TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
started_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
estimated_completion TIMESTAMP,
|
||||
progress_percentage INTEGER DEFAULT 0,
|
||||
priority TEXT DEFAULT 'normal',
|
||||
context JSONB DEFAULT '{}',
|
||||
result JSONB,
|
||||
spawned_processes JSONB DEFAULT '[]',
|
||||
file_operations JSONB DEFAULT '[]',
|
||||
network_calls JSONB DEFAULT '[]',
|
||||
model_calls JSONB DEFAULT '[]',
|
||||
error_messages JSONB DEFAULT '[]',
|
||||
warning_messages JSONB DEFAULT '[]',
|
||||
info_messages JSONB DEFAULT '[]'
|
||||
)
|
||||
''')
|
||||
|
||||
print("✅ Database tables created successfully")
|
||||
self.logger.info("Database tables initialized via MCP")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Failed to create database tables: {e}")
|
||||
self.logger.error(f"Failed to create database tables: {e}")
|
||||
raise
|
||||
|
||||
async def postgres_query(self, sql: str, params: List[Any] = None) -> List[dict]:
|
||||
"""Execute PostgreSQL query via MCP"""
|
||||
if "postgres" not in self.mcp_clients:
|
||||
raise Exception("PostgreSQL MCP client not available")
|
||||
|
||||
client = self.mcp_clients["postgres"]
|
||||
|
||||
# The postgres MCP server expects 'query' tool with 'sql' parameter
|
||||
result = await client.call_tool("query", {"sql": sql})
|
||||
|
||||
return result.get("content", [])
|
||||
|
||||
async def neo4j_query(self, cypher: str, params: dict = None) -> List[dict]:
|
||||
"""Execute Neo4j Cypher query via MCP"""
|
||||
if "neo4j" not in self.mcp_clients:
|
||||
raise Exception("Neo4j MCP client not available")
|
||||
|
||||
client = self.mcp_clients["neo4j"]
|
||||
|
||||
# The neo4j MCP server expects different tool names
|
||||
# Let's first try to get the tools to see what's available
|
||||
tools = await client.list_tools()
|
||||
tool_names = [tool.get("name", "") for tool in tools]
|
||||
|
||||
# Common neo4j MCP tool names
|
||||
if "read_neo4j_cypher" in tool_names:
|
||||
result = await client.call_tool("read_neo4j_cypher", {
|
||||
"query": cypher,
|
||||
"params": params or {}
|
||||
})
|
||||
elif "cypher" in tool_names:
|
||||
result = await client.call_tool("cypher", {
|
||||
"query": cypher,
|
||||
"params": params or {}
|
||||
})
|
||||
else:
|
||||
# Try the first available tool
|
||||
if tool_names:
|
||||
result = await client.call_tool(tool_names[0], {
|
||||
"query": cypher,
|
||||
"params": params or {}
|
||||
})
|
||||
else:
|
||||
raise Exception("No Neo4j tools available")
|
||||
|
||||
return result.get("content", [])
|
||||
|
||||
async def _load_configuration(self):
|
||||
"""Load models and MCP server configurations from database"""
|
||||
try:
|
||||
# Load models
|
||||
models_rows = await self.postgres_query("SELECT * FROM agent_models WHERE enabled = TRUE")
|
||||
for row in models_rows:
|
||||
model = ModelConfig(
|
||||
model_id=row['model_id'],
|
||||
name=row['name'],
|
||||
type=row['type'],
|
||||
endpoint=row['endpoint'],
|
||||
api_key=row.get('api_key'),
|
||||
capabilities=row.get('capabilities', []),
|
||||
cost_per_token=row.get('cost_per_token', 0.0),
|
||||
max_tokens=row.get('max_tokens', 4096),
|
||||
temperature=row.get('temperature', 0.1),
|
||||
enabled=row.get('enabled', True),
|
||||
prompt_template=row.get('prompt_template')
|
||||
)
|
||||
self.models[model.model_id] = model
|
||||
|
||||
# Set default model (first available Ollama model)
|
||||
ollama_models = [m for m in self.models.values() if m.type == "ollama"]
|
||||
if ollama_models:
|
||||
self.default_model = ollama_models[0].model_id
|
||||
self.logger.info(f"Default model set to: {self.default_model}")
|
||||
|
||||
print(f"Loaded {len(self.models)} model configurations")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Note: Could not load existing configurations: {e}")
|
||||
self.logger.info(f"Could not load existing configurations (normal for first run): {e}")
|
||||
|
||||
async def add_model(self, model_config: ModelConfig) -> bool:
|
||||
"""Add a new model configuration via MCP"""
|
||||
try:
|
||||
await self.postgres_query('''
|
||||
INSERT INTO agent_models
|
||||
(model_id, name, type, endpoint, api_key, capabilities,
|
||||
cost_per_token, max_tokens, temperature, enabled, prompt_template)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
||||
ON CONFLICT (model_id) DO UPDATE SET
|
||||
name = $2, type = $3, endpoint = $4, api_key = $5,
|
||||
capabilities = $6, cost_per_token = $7, max_tokens = $8,
|
||||
temperature = $9, enabled = $10, prompt_template = $11
|
||||
''', [
|
||||
model_config.model_id, model_config.name, model_config.type,
|
||||
model_config.endpoint, model_config.api_key,
|
||||
json.dumps(model_config.capabilities),
|
||||
model_config.cost_per_token, model_config.max_tokens,
|
||||
model_config.temperature, model_config.enabled,
|
||||
model_config.prompt_template
|
||||
])
|
||||
|
||||
self.models[model_config.model_id] = model_config
|
||||
self.logger.info(f"Added model: {model_config.model_id}")
|
||||
return True
|
||||
except Exception as e:
|
||||
self.logger.error(f"Failed to add model {model_config.model_id}: {e}")
|
||||
return False
|
||||
|
||||
async def create_operation(self, operation_type: str, description: str,
|
||||
priority: TaskPriority = TaskPriority.NORMAL,
|
||||
context: Dict[str, Any] = None) -> str:
|
||||
"""Create a new operation and add it to the queue"""
|
||||
operation_id = str(uuid.uuid4())
|
||||
operation = Operation(
|
||||
operation_id=operation_id,
|
||||
type=operation_type,
|
||||
status=OperationStatus.QUEUED,
|
||||
description=description,
|
||||
created_at=datetime.now(),
|
||||
priority=priority,
|
||||
context=context or {}
|
||||
)
|
||||
|
||||
self.operations[operation_id] = operation
|
||||
await self.task_queue.put(operation)
|
||||
|
||||
# Store in database via MCP
|
||||
try:
|
||||
await self.postgres_query('''
|
||||
INSERT INTO agent_operations
|
||||
(operation_id, type, status, description, created_at, priority, context)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
''', [
|
||||
operation_id, operation_type, operation.status.value,
|
||||
description, operation.created_at.isoformat(),
|
||||
priority.value, json.dumps(context or {})
|
||||
])
|
||||
except Exception as e:
|
||||
self.logger.warning(f"Could not store operation in database: {e}")
|
||||
|
||||
self.logger.info(f"Created operation: {operation_id} - {description}")
|
||||
return operation_id
|
||||
|
||||
async def get_operation_status(self, operation_id: str) -> Optional[Operation]:
|
||||
"""Get the current status of an operation"""
|
||||
return self.operations.get(operation_id)
|
||||
|
||||
async def _handle_test_task(self, operation: Operation):
|
||||
"""Handle a simple test task"""
|
||||
operation.info_messages.append("Starting test task")
|
||||
operation.progress_percentage = 25
|
||||
|
||||
await asyncio.sleep(2) # Simulate work
|
||||
|
||||
operation.info_messages.append("Test task in progress")
|
||||
operation.progress_percentage = 75
|
||||
|
||||
await asyncio.sleep(1) # Simulate more work
|
||||
|
||||
# Test database operations
|
||||
try:
|
||||
# Test PostgreSQL via MCP
|
||||
version_result = await self.postgres_query("SELECT version()")
|
||||
pg_version = version_result[0].get('version', 'Unknown') if version_result else 'Unknown'
|
||||
operation.info_messages.append(f"PostgreSQL connection test: {pg_version[:50]}...")
|
||||
|
||||
# Test Neo4j via MCP
|
||||
neo_result = await self.neo4j_query("RETURN 'Neo4j connection successful' as message")
|
||||
neo_message = neo_result[0].get('message', 'Test failed') if neo_result else 'Test failed'
|
||||
operation.info_messages.append(f"Neo4j connection test: {neo_message}")
|
||||
|
||||
except Exception as e:
|
||||
operation.warning_messages.append(f"Database test warning: {e}")
|
||||
|
||||
operation.result = {
|
||||
"message": "Test task completed successfully",
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"database_tests": "completed"
|
||||
}
|
||||
operation.info_messages.append("Test task completed")
|
||||
|
||||
async def process_task_queue(self):
|
||||
"""Main task processing loop"""
|
||||
while self.running:
|
||||
try:
|
||||
operation = await asyncio.wait_for(self.task_queue.get(), timeout=1.0)
|
||||
|
||||
# Update operation status
|
||||
operation.status = OperationStatus.RUNNING
|
||||
operation.started_at = datetime.now()
|
||||
|
||||
# Execute operation directly for testing
|
||||
try:
|
||||
if operation.type == "test_task":
|
||||
await self._handle_test_task(operation)
|
||||
operation.status = OperationStatus.COMPLETED
|
||||
operation.progress_percentage = 100
|
||||
else:
|
||||
operation.error_messages.append(f"Unknown operation type: {operation.type}")
|
||||
operation.status = OperationStatus.FAILED
|
||||
|
||||
except Exception as e:
|
||||
operation.status = OperationStatus.FAILED
|
||||
operation.error_messages.append(f"Execution failed: {str(e)}")
|
||||
self.logger.error(f"Operation {operation.operation_id} failed: {e}")
|
||||
|
||||
self.logger.info(f"Completed operation: {operation.operation_id}")
|
||||
|
||||
except asyncio.TimeoutError:
|
||||
continue
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in task queue processing: {e}")
|
||||
|
||||
async def start(self):
|
||||
"""Start the agent"""
|
||||
# Initialize MCP servers first
|
||||
await self._init_mcp_servers()
|
||||
|
||||
# Initialize database tables
|
||||
await self._init_database_tables()
|
||||
|
||||
# Load configuration
|
||||
await self._load_configuration()
|
||||
|
||||
self.running = True
|
||||
self.logger.info("Starting Local System Agent")
|
||||
|
||||
# Start task processing
|
||||
await self.process_task_queue()
|
||||
|
||||
async def stop(self):
|
||||
"""Stop the agent gracefully"""
|
||||
self.running = False
|
||||
self.logger.info("Stopping Local System Agent")
|
||||
|
||||
# Cancel active tasks
|
||||
for task in self.active_tasks.values():
|
||||
task.cancel()
|
||||
|
||||
# Stop MCP clients
|
||||
for client in self.mcp_clients.values():
|
||||
await client.stop()
|
||||
|
||||
# Initialize default Ollama models
|
||||
async def setup_default_models(agent: LocalSystemAgent):
|
||||
"""Setup default Ollama models"""
|
||||
default_models = [
|
||||
ModelConfig(
|
||||
model_id="llama3.2:3b",
|
||||
name="Llama 3.2 3B",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "coding", "analysis"]
|
||||
),
|
||||
ModelConfig(
|
||||
model_id="qwen2.5:7b",
|
||||
name="Qwen 2.5 7B",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "coding", "reasoning"]
|
||||
),
|
||||
ModelConfig(
|
||||
model_id="llama3.2:1b",
|
||||
name="Llama 3.2 1B (Fast)",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "quick_tasks"]
|
||||
)
|
||||
]
|
||||
|
||||
for model in default_models:
|
||||
await agent.add_model(model)
|
||||
|
||||
# Example usage and testing
|
||||
async def main():
|
||||
try:
|
||||
print("=== Local System Agent - MCP Integration Test ===")
|
||||
print("Initializing Local System Agent...")
|
||||
|
||||
# Initialize agent
|
||||
agent = LocalSystemAgent()
|
||||
|
||||
print("Setting up default models...")
|
||||
# Setup default models
|
||||
await setup_default_models(agent)
|
||||
|
||||
print("Creating test operation...")
|
||||
# Create a test operation
|
||||
operation_id = await agent.create_operation(
|
||||
"test_task",
|
||||
"Testing agent with MCP integration",
|
||||
TaskPriority.NORMAL,
|
||||
{"test_param": "mcp_integration_test"}
|
||||
)
|
||||
|
||||
print(f"Created operation: {operation_id}")
|
||||
|
||||
# Start agent in background
|
||||
print("Starting agent task processing...")
|
||||
agent_task = asyncio.create_task(agent.start())
|
||||
|
||||
# Monitor operation progress
|
||||
print("Monitoring operation progress...")
|
||||
for i in range(15): # Extended timeout for MCP operations
|
||||
await asyncio.sleep(1)
|
||||
operation = await agent.get_operation_status(operation_id)
|
||||
if operation:
|
||||
print(f"Operation status: {operation.status.value}, Progress: {operation.progress_percentage}%")
|
||||
if operation.info_messages:
|
||||
for msg in operation.info_messages[-1:]: # Show latest message
|
||||
print(f" ℹ️ {msg}")
|
||||
if operation.warning_messages:
|
||||
for msg in operation.warning_messages[-1:]:
|
||||
print(f" ⚠️ {msg}")
|
||||
if operation.error_messages:
|
||||
for msg in operation.error_messages[-1:]:
|
||||
print(f" ❌ {msg}")
|
||||
|
||||
if operation.status in [OperationStatus.COMPLETED, OperationStatus.FAILED]:
|
||||
print(f"Operation result: {operation.result}")
|
||||
break
|
||||
|
||||
# Stop agent
|
||||
print("Stopping agent...")
|
||||
await agent.stop()
|
||||
print("✅ Agent stopped successfully")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ Error in main: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
548
local_system_agent_v2.py
Normal file
@ -0,0 +1,548 @@
|
||||
# Local System Agent - Core Framework
|
||||
# Phase 1: Foundation Setup - Single Connection Version
|
||||
|
||||
import asyncio
|
||||
import uuid
|
||||
import time
|
||||
import json
|
||||
import logging
|
||||
import psutil
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Dict, List, Optional, Any, Callable
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
import httpx
|
||||
from pathlib import Path
|
||||
import asyncpg
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
# Configuration and Data Models
|
||||
class OperationStatus(Enum):
|
||||
QUEUED = "queued"
|
||||
RUNNING = "running"
|
||||
COMPLETED = "completed"
|
||||
FAILED = "failed"
|
||||
CANCELLED = "cancelled"
|
||||
|
||||
class TaskPriority(Enum):
|
||||
LOW = "low"
|
||||
NORMAL = "normal"
|
||||
HIGH = "high"
|
||||
URGENT = "urgent"
|
||||
|
||||
@dataclass
|
||||
class ProcessInfo:
|
||||
pid: int
|
||||
command: str
|
||||
status: str
|
||||
cpu_percent: float
|
||||
memory_mb: float
|
||||
start_time: datetime
|
||||
|
||||
@dataclass
|
||||
class FileOperation:
|
||||
path: str
|
||||
operation: str # create, read, write, delete, move
|
||||
timestamp: datetime
|
||||
size_bytes: int
|
||||
permissions: str
|
||||
|
||||
@dataclass
|
||||
class NetworkCall:
|
||||
url: str
|
||||
method: str
|
||||
status_code: int
|
||||
response_time_ms: float
|
||||
data_size_bytes: int
|
||||
timestamp: datetime
|
||||
|
||||
@dataclass
|
||||
class ModelCall:
|
||||
model_id: str
|
||||
tokens_used: int
|
||||
cost_usd: float
|
||||
response_time_ms: float
|
||||
success: bool
|
||||
timestamp: datetime
|
||||
|
||||
@dataclass
|
||||
class Operation:
|
||||
operation_id: str
|
||||
type: str
|
||||
status: OperationStatus
|
||||
description: str
|
||||
created_at: datetime
|
||||
started_at: Optional[datetime] = None
|
||||
updated_at: Optional[datetime] = None
|
||||
estimated_completion: Optional[datetime] = None
|
||||
progress_percentage: int = 0
|
||||
priority: TaskPriority = TaskPriority.NORMAL
|
||||
spawned_processes: List[ProcessInfo] = field(default_factory=list)
|
||||
file_operations: List[FileOperation] = field(default_factory=list)
|
||||
network_calls: List[NetworkCall] = field(default_factory=list)
|
||||
model_calls: List[ModelCall] = field(default_factory=list)
|
||||
error_messages: List[str] = field(default_factory=list)
|
||||
warning_messages: List[str] = field(default_factory=list)
|
||||
info_messages: List[str] = field(default_factory=list)
|
||||
context: Dict[str, Any] = field(default_factory=dict)
|
||||
result: Optional[Any] = None
|
||||
|
||||
@dataclass
|
||||
class ModelConfig:
|
||||
model_id: str
|
||||
name: str
|
||||
type: str # "ollama", "lmstudio", "openai_compatible"
|
||||
endpoint: str
|
||||
api_key: Optional[str] = None
|
||||
capabilities: List[str] = field(default_factory=list)
|
||||
cost_per_token: float = 0.0
|
||||
max_tokens: int = 4096
|
||||
temperature: float = 0.1
|
||||
enabled: bool = True
|
||||
prompt_template: Optional[str] = None
|
||||
|
||||
@dataclass
|
||||
class MCPServerConfig:
|
||||
server_id: str
|
||||
name: str
|
||||
command: str
|
||||
args: List[str]
|
||||
env_vars: Dict[str, str] = field(default_factory=dict)
|
||||
enabled: bool = True
|
||||
auto_restart: bool = True
|
||||
health_check_interval: int = 30
|
||||
|
||||
# Core Agent Class
|
||||
class LocalSystemAgent:
|
||||
def __init__(self, db_url: str = "postgresql://mcpuser:mcppoop123@bakecms.com:5432/postgres?sslmode=disable"):
|
||||
self.db_url = db_url
|
||||
self.db_conn = None # Single connection instead of pool
|
||||
self.operations: Dict[str, Operation] = {}
|
||||
self.task_queue = asyncio.Queue()
|
||||
self.active_tasks: Dict[str, asyncio.Task] = {}
|
||||
self.models: Dict[str, ModelConfig] = {}
|
||||
self.mcp_servers: Dict[str, MCPServerConfig] = {}
|
||||
self.default_model = None
|
||||
self.running = False
|
||||
|
||||
# Initialize logging
|
||||
self._setup_logging()
|
||||
|
||||
self.logger.info("Local System Agent initialized")
|
||||
|
||||
def _setup_logging(self):
|
||||
"""Setup comprehensive logging system"""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||
handlers=[
|
||||
logging.FileHandler('agent.log'),
|
||||
logging.StreamHandler()
|
||||
]
|
||||
)
|
||||
self.logger = logging.getLogger('LocalSystemAgent')
|
||||
|
||||
async def _init_database(self):
|
||||
"""Initialize PostgreSQL connection and create tables"""
|
||||
try:
|
||||
print(f"Attempting to connect to database: {self.db_url}")
|
||||
self.logger.info(f"Attempting to connect to database: {self.db_url}")
|
||||
|
||||
# Try single connection instead of pool
|
||||
self.db_conn = await asyncio.wait_for(
|
||||
asyncpg.connect(self.db_url),
|
||||
timeout=10.0
|
||||
)
|
||||
self.logger.info("Connected to PostgreSQL database")
|
||||
print("Connected to PostgreSQL database")
|
||||
|
||||
# Test the connection
|
||||
version = await self.db_conn.fetchval("SELECT version()")
|
||||
print(f"Database version: {version}")
|
||||
self.logger.info(f"Database version: {version}")
|
||||
|
||||
# Create agent_models table
|
||||
await self.db_conn.execute('''
|
||||
CREATE TABLE IF NOT EXISTS agent_models (
|
||||
model_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
endpoint TEXT NOT NULL,
|
||||
api_key TEXT,
|
||||
capabilities JSONB DEFAULT '[]',
|
||||
cost_per_token REAL DEFAULT 0.0,
|
||||
max_tokens INTEGER DEFAULT 4096,
|
||||
temperature REAL DEFAULT 0.1,
|
||||
enabled BOOLEAN DEFAULT TRUE,
|
||||
prompt_template TEXT,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
)
|
||||
''')
|
||||
|
||||
# Create agent_mcp_servers table
|
||||
await self.db_conn.execute('''
|
||||
CREATE TABLE IF NOT EXISTS agent_mcp_servers (
|
||||
server_id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
command TEXT NOT NULL,
|
||||
args JSONB NOT NULL,
|
||||
env_vars JSONB DEFAULT '{}',
|
||||
enabled BOOLEAN DEFAULT TRUE,
|
||||
auto_restart BOOLEAN DEFAULT TRUE,
|
||||
health_check_interval INTEGER DEFAULT 30,
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
)
|
||||
''')
|
||||
|
||||
# Create agent_operations table
|
||||
await self.db_conn.execute('''
|
||||
CREATE TABLE IF NOT EXISTS agent_operations (
|
||||
operation_id TEXT PRIMARY KEY,
|
||||
type TEXT NOT NULL,
|
||||
status TEXT NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL,
|
||||
started_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
estimated_completion TIMESTAMP,
|
||||
progress_percentage INTEGER DEFAULT 0,
|
||||
priority TEXT DEFAULT 'normal',
|
||||
context JSONB DEFAULT '{}',
|
||||
result JSONB,
|
||||
spawned_processes JSONB DEFAULT '[]',
|
||||
file_operations JSONB DEFAULT '[]',
|
||||
network_calls JSONB DEFAULT '[]',
|
||||
model_calls JSONB DEFAULT '[]',
|
||||
error_messages JSONB DEFAULT '[]',
|
||||
warning_messages JSONB DEFAULT '[]',
|
||||
info_messages JSONB DEFAULT '[]'
|
||||
)
|
||||
''')
|
||||
|
||||
self.logger.info("Database tables initialized")
|
||||
print("Database tables created successfully")
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Failed to initialize database: {e}")
|
||||
print(f"Database initialization failed: {e}")
|
||||
raise
|
||||
|
||||
async def _load_configuration(self):
|
||||
"""Load models and MCP server configurations from database"""
|
||||
if not self.db_conn:
|
||||
await self._init_database()
|
||||
|
||||
# Load models
|
||||
models_rows = await self.db_conn.fetch("SELECT * FROM agent_models WHERE enabled = TRUE")
|
||||
for row in models_rows:
|
||||
model = ModelConfig(
|
||||
model_id=row['model_id'],
|
||||
name=row['name'],
|
||||
type=row['type'],
|
||||
endpoint=row['endpoint'],
|
||||
api_key=row['api_key'],
|
||||
capabilities=row['capabilities'] or [],
|
||||
cost_per_token=row['cost_per_token'],
|
||||
max_tokens=row['max_tokens'],
|
||||
temperature=row['temperature'],
|
||||
enabled=row['enabled'],
|
||||
prompt_template=row['prompt_template']
|
||||
)
|
||||
self.models[model.model_id] = model
|
||||
|
||||
# Load MCP servers
|
||||
servers_rows = await self.db_conn.fetch("SELECT * FROM agent_mcp_servers WHERE enabled = TRUE")
|
||||
for row in servers_rows:
|
||||
server = MCPServerConfig(
|
||||
server_id=row['server_id'],
|
||||
name=row['name'],
|
||||
command=row['command'],
|
||||
args=row['args'] or [],
|
||||
env_vars=row['env_vars'] or {},
|
||||
enabled=row['enabled'],
|
||||
auto_restart=row['auto_restart'],
|
||||
health_check_interval=row['health_check_interval']
|
||||
)
|
||||
self.mcp_servers[server.server_id] = server
|
||||
|
||||
# Set default model (first available Ollama model)
|
||||
ollama_models = [m for m in self.models.values() if m.type == "ollama"]
|
||||
if ollama_models:
|
||||
self.default_model = ollama_models[0].model_id
|
||||
self.logger.info(f"Default model set to: {self.default_model}")
|
||||
|
||||
async def add_model(self, model_config: ModelConfig) -> bool:
|
||||
"""Add a new model configuration"""
|
||||
try:
|
||||
await self.db_conn.execute('''
|
||||
INSERT INTO agent_models
|
||||
(model_id, name, type, endpoint, api_key, capabilities,
|
||||
cost_per_token, max_tokens, temperature, enabled, prompt_template)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
||||
ON CONFLICT (model_id) DO UPDATE SET
|
||||
name = $2, type = $3, endpoint = $4, api_key = $5,
|
||||
capabilities = $6, cost_per_token = $7, max_tokens = $8,
|
||||
temperature = $9, enabled = $10, prompt_template = $11
|
||||
''', (
|
||||
model_config.model_id, model_config.name, model_config.type,
|
||||
model_config.endpoint, model_config.api_key,
|
||||
json.dumps(model_config.capabilities),
|
||||
model_config.cost_per_token, model_config.max_tokens,
|
||||
model_config.temperature, model_config.enabled,
|
||||
model_config.prompt_template
|
||||
))
|
||||
|
||||
self.models[model_config.model_id] = model_config
|
||||
self.logger.info(f"Added model: {model_config.model_id}")
|
||||
return True
|
||||
except Exception as e:
|
||||
self.logger.error(f"Failed to add model {model_config.model_id}: {e}")
|
||||
return False
|
||||
|
||||
async def create_operation(self, operation_type: str, description: str,
|
||||
priority: TaskPriority = TaskPriority.NORMAL,
|
||||
context: Dict[str, Any] = None) -> str:
|
||||
"""Create a new operation and add it to the queue"""
|
||||
operation_id = str(uuid.uuid4())
|
||||
operation = Operation(
|
||||
operation_id=operation_id,
|
||||
type=operation_type,
|
||||
status=OperationStatus.QUEUED,
|
||||
description=description,
|
||||
created_at=datetime.now(),
|
||||
priority=priority,
|
||||
context=context or {}
|
||||
)
|
||||
|
||||
self.operations[operation_id] = operation
|
||||
await self.task_queue.put(operation)
|
||||
|
||||
# Store in database
|
||||
await self.db_conn.execute('''
|
||||
INSERT INTO agent_operations
|
||||
(operation_id, type, status, description, created_at, priority, context)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
''', (
|
||||
operation_id, operation_type, operation.status.value,
|
||||
description, operation.created_at,
|
||||
priority.value, json.dumps(context or {})
|
||||
))
|
||||
|
||||
self.logger.info(f"Created operation: {operation_id} - {description}")
|
||||
return operation_id
|
||||
|
||||
async def get_operation_status(self, operation_id: str) -> Optional[Operation]:
|
||||
"""Get the current status of an operation"""
|
||||
return self.operations.get(operation_id)
|
||||
|
||||
async def update_operation(self, operation_id: str, **updates):
|
||||
"""Update operation status and information"""
|
||||
if operation_id not in self.operations:
|
||||
return False
|
||||
|
||||
operation = self.operations[operation_id]
|
||||
|
||||
for key, value in updates.items():
|
||||
if hasattr(operation, key):
|
||||
setattr(operation, key, value)
|
||||
|
||||
operation.updated_at = datetime.now()
|
||||
|
||||
# Convert dataclass lists to JSON for storage
|
||||
def serialize_list(items):
|
||||
if not items:
|
||||
return []
|
||||
return [item.__dict__ if hasattr(item, '__dict__') else item for item in items]
|
||||
|
||||
# Update database
|
||||
await self.db_conn.execute('''
|
||||
UPDATE agent_operations
|
||||
SET status = $1, updated_at = $2, progress_percentage = $3,
|
||||
context = $4, result = $5, spawned_processes = $6,
|
||||
file_operations = $7, network_calls = $8, model_calls = $9,
|
||||
error_messages = $10, warning_messages = $11, info_messages = $12
|
||||
WHERE operation_id = $13
|
||||
''', (
|
||||
operation.status.value, operation.updated_at,
|
||||
operation.progress_percentage, json.dumps(operation.context),
|
||||
json.dumps(operation.result) if operation.result else None,
|
||||
json.dumps(serialize_list(operation.spawned_processes)),
|
||||
json.dumps(serialize_list(operation.file_operations)),
|
||||
json.dumps(serialize_list(operation.network_calls)),
|
||||
json.dumps(serialize_list(operation.model_calls)),
|
||||
json.dumps(operation.error_messages),
|
||||
json.dumps(operation.warning_messages),
|
||||
json.dumps(operation.info_messages),
|
||||
operation_id
|
||||
))
|
||||
|
||||
return True
|
||||
|
||||
async def _handle_test_task(self, operation: Operation):
|
||||
"""Handle a simple test task"""
|
||||
operation.info_messages.append("Starting test task")
|
||||
operation.progress_percentage = 25
|
||||
await self.update_operation(operation.operation_id, progress_percentage=25)
|
||||
|
||||
await asyncio.sleep(2) # Simulate work
|
||||
|
||||
operation.info_messages.append("Test task in progress")
|
||||
operation.progress_percentage = 75
|
||||
await self.update_operation(operation.operation_id, progress_percentage=75)
|
||||
|
||||
await asyncio.sleep(1) # Simulate more work
|
||||
|
||||
operation.result = {"message": "Test task completed successfully", "timestamp": datetime.now().isoformat()}
|
||||
operation.info_messages.append("Test task completed")
|
||||
|
||||
async def process_task_queue(self):
|
||||
"""Main task processing loop"""
|
||||
while self.running:
|
||||
try:
|
||||
operation = await asyncio.wait_for(self.task_queue.get(), timeout=1.0)
|
||||
|
||||
# Update operation status
|
||||
operation.status = OperationStatus.RUNNING
|
||||
operation.started_at = datetime.now()
|
||||
await self.update_operation(operation.operation_id,
|
||||
status=OperationStatus.RUNNING,
|
||||
started_at=operation.started_at)
|
||||
|
||||
# Execute operation directly for testing
|
||||
try:
|
||||
if operation.type == "test_task":
|
||||
await self._handle_test_task(operation)
|
||||
operation.status = OperationStatus.COMPLETED
|
||||
operation.progress_percentage = 100
|
||||
else:
|
||||
operation.error_messages.append(f"Unknown operation type: {operation.type}")
|
||||
operation.status = OperationStatus.FAILED
|
||||
|
||||
except Exception as e:
|
||||
operation.status = OperationStatus.FAILED
|
||||
operation.error_messages.append(f"Execution failed: {str(e)}")
|
||||
self.logger.error(f"Operation {operation.operation_id} failed: {e}")
|
||||
|
||||
finally:
|
||||
await self.update_operation(operation.operation_id,
|
||||
status=operation.status,
|
||||
progress_percentage=operation.progress_percentage)
|
||||
|
||||
self.logger.info(f"Completed operation: {operation.operation_id}")
|
||||
|
||||
except asyncio.TimeoutError:
|
||||
continue
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in task queue processing: {e}")
|
||||
|
||||
async def start(self):
|
||||
"""Start the agent"""
|
||||
if not self.db_conn:
|
||||
await self._init_database()
|
||||
await self._load_configuration()
|
||||
|
||||
self.running = True
|
||||
self.logger.info("Starting Local System Agent")
|
||||
|
||||
# Start task processing
|
||||
await self.process_task_queue()
|
||||
|
||||
async def stop(self):
|
||||
"""Stop the agent gracefully"""
|
||||
self.running = False
|
||||
self.logger.info("Stopping Local System Agent")
|
||||
|
||||
# Cancel active tasks
|
||||
for task in self.active_tasks.values():
|
||||
task.cancel()
|
||||
|
||||
# Close database connection
|
||||
if self.db_conn:
|
||||
await self.db_conn.close()
|
||||
|
||||
# Initialize default Ollama models
|
||||
async def setup_default_models(agent: LocalSystemAgent):
|
||||
"""Setup default Ollama models"""
|
||||
default_models = [
|
||||
ModelConfig(
|
||||
model_id="llama3.2:3b",
|
||||
name="Llama 3.2 3B",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "coding", "analysis"]
|
||||
),
|
||||
ModelConfig(
|
||||
model_id="qwen2.5:7b",
|
||||
name="Qwen 2.5 7B",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "coding", "reasoning"]
|
||||
),
|
||||
ModelConfig(
|
||||
model_id="llama3.2:1b",
|
||||
name="Llama 3.2 1B (Fast)",
|
||||
type="ollama",
|
||||
endpoint="http://localhost:11434",
|
||||
capabilities=["general", "quick_tasks"]
|
||||
)
|
||||
]
|
||||
|
||||
for model in default_models:
|
||||
await agent.add_model(model)
|
||||
|
||||
# Example usage and testing
|
||||
async def main():
|
||||
try:
|
||||
print("Initializing Local System Agent...")
|
||||
# Initialize agent
|
||||
agent = LocalSystemAgent()
|
||||
|
||||
print("Initializing database connection...")
|
||||
# Initialize database and load config
|
||||
await agent._init_database()
|
||||
|
||||
print("Loading configuration...")
|
||||
await agent._load_configuration()
|
||||
|
||||
print("Setting up default models...")
|
||||
# Setup default models
|
||||
await setup_default_models(agent)
|
||||
|
||||
print("Creating test operation...")
|
||||
# Create a test operation
|
||||
operation_id = await agent.create_operation(
|
||||
"test_task",
|
||||
"Testing agent operation tracking",
|
||||
TaskPriority.NORMAL,
|
||||
{"test_param": "test_value"}
|
||||
)
|
||||
|
||||
print(f"Created operation: {operation_id}")
|
||||
|
||||
# Start agent in background
|
||||
print("Starting agent task processing...")
|
||||
agent_task = asyncio.create_task(agent.start())
|
||||
|
||||
# Monitor operation progress
|
||||
print("Monitoring operation progress...")
|
||||
for i in range(10):
|
||||
await asyncio.sleep(1)
|
||||
operation = await agent.get_operation_status(operation_id)
|
||||
if operation:
|
||||
print(f"Operation status: {operation.status.value}, Progress: {operation.progress_percentage}%")
|
||||
if operation.status in [OperationStatus.COMPLETED, OperationStatus.FAILED]:
|
||||
print(f"Operation result: {operation.result}")
|
||||
break
|
||||
|
||||
# Stop agent
|
||||
print("Stopping agent...")
|
||||
await agent.stop()
|
||||
print("Agent stopped successfully")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error in main: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
BIN
locales/af.pak
Normal file
BIN
locales/am.pak
Normal file
BIN
locales/ar.pak
Normal file
BIN
locales/bg.pak
Normal file
BIN
locales/bn.pak
Normal file
BIN
locales/ca.pak
Normal file
BIN
locales/cs.pak
Normal file
BIN
locales/da.pak
Normal file
BIN
locales/de.pak
Normal file
BIN
locales/el.pak
Normal file
BIN
locales/en-GB.pak
Normal file
BIN
locales/en-US.pak
Normal file
BIN
locales/es-419.pak
Normal file
BIN
locales/es.pak
Normal file
BIN
locales/et.pak
Normal file
BIN
locales/fa.pak
Normal file
BIN
locales/fi.pak
Normal file
BIN
locales/fil.pak
Normal file
BIN
locales/fr.pak
Normal file
BIN
locales/gu.pak
Normal file
BIN
locales/he.pak
Normal file
BIN
locales/hi.pak
Normal file
BIN
locales/hr.pak
Normal file
BIN
locales/hu.pak
Normal file
BIN
locales/id.pak
Normal file
BIN
locales/it.pak
Normal file
BIN
locales/ja.pak
Normal file
BIN
locales/kn.pak
Normal file
BIN
locales/ko.pak
Normal file
BIN
locales/lt.pak
Normal file
BIN
locales/lv.pak
Normal file
BIN
locales/ml.pak
Normal file
BIN
locales/mr.pak
Normal file
BIN
locales/ms.pak
Normal file
BIN
locales/nb.pak
Normal file
BIN
locales/nl.pak
Normal file
BIN
locales/pl.pak
Normal file
BIN
locales/pt-BR.pak
Normal file
BIN
locales/pt-PT.pak
Normal file
BIN
locales/ro.pak
Normal file
BIN
locales/ru.pak
Normal file
BIN
locales/sk.pak
Normal file
BIN
locales/sl.pak
Normal file
BIN
locales/sr.pak
Normal file
BIN
locales/sv.pak
Normal file
BIN
locales/sw.pak
Normal file
BIN
locales/ta.pak
Normal file
BIN
locales/te.pak
Normal file
BIN
locales/th.pak
Normal file
BIN
locales/tr.pak
Normal file
BIN
locales/uk.pak
Normal file
BIN
locales/ur.pak
Normal file
BIN
locales/vi.pak
Normal file
BIN
locales/zh-CN.pak
Normal file
BIN
locales/zh-TW.pak
Normal file
462
ollama-windows-amd64.exe
Normal file
@ -0,0 +1,462 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!doctype html>
|
||||
<html class="h-full overflow-y-scroll">
|
||||
<head>
|
||||
<title>Download Ollama on Windows</title>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="description" content="Download Ollama for Windows"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta property="og:title" content="Download Ollama on Windows" />
|
||||
<meta property="og:description" content="Download Ollama for Windows" />
|
||||
<meta property="og:url" content="https://ollama.com/download/windows" />
|
||||
<meta property="og:image" content="https://ollama.com/public/og.png" />
|
||||
<meta property="og:image:type" content="image/png" />
|
||||
<meta property="og:image:width" content="1200" />
|
||||
<meta property="og:image:height" content="628" />
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
<meta property="twitter:card" content="summary" />
|
||||
<meta property="twitter:title" content="Download Ollama on Windows" />
|
||||
<meta property="twitter:description" content="Download Ollama for Windows" />
|
||||
<meta property="twitter:site" content="ollama" />
|
||||
|
||||
<meta property="twitter:image:src" content="https://ollama.com/public/og-twitter.png" />
|
||||
<meta property="twitter:image:width" content="1200" />
|
||||
<meta property="twitter:image:height" content="628" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/public/icon-16x16.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/public/icon-32x32.png" />
|
||||
<link rel="icon" type="image/png" sizes="48x48" href="/public/icon-48x48.png" />
|
||||
<link rel="icon" type="image/png" sizes="64x64" href="/public/icon-64x64.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/public/apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/public/android-chrome-icon-192x192.png" />
|
||||
<link rel="icon" type="image/png" sizes="512x512" href="/public/android-chrome-icon-512x512.png" />
|
||||
|
||||
|
||||
|
||||
|
||||
<link href="/public/tailwind.css?v=b16c83dc54a2ba7facffb2bbcc285e55" rel="stylesheet" />
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
"name": "Ollama",
|
||||
"url": "https://ollama.com"
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function copyToClipboard(element) {
|
||||
let commandElement = null;
|
||||
const preElement = element.closest('pre');
|
||||
const languageNoneElement = element.closest('.language-none');
|
||||
|
||||
if (preElement) {
|
||||
commandElement = preElement.querySelector('code');
|
||||
} else if (languageNoneElement) {
|
||||
commandElement = languageNoneElement.querySelector('.command');
|
||||
} else {
|
||||
const parent = element.parentElement;
|
||||
if (parent) {
|
||||
commandElement = parent.querySelector('.command');
|
||||
}
|
||||
}
|
||||
|
||||
if (!commandElement) {
|
||||
console.error('No code or command element found');
|
||||
return;
|
||||
}
|
||||
|
||||
const code = commandElement.textContent ? commandElement.textContent.trim() : commandElement.value;
|
||||
|
||||
navigator.clipboard
|
||||
.writeText(code)
|
||||
.then(() => {
|
||||
const copyIcon = element.querySelector('.copy-icon')
|
||||
const checkIcon = element.querySelector('.check-icon')
|
||||
|
||||
copyIcon.classList.add('hidden')
|
||||
checkIcon.classList.remove('hidden')
|
||||
|
||||
setTimeout(() => {
|
||||
copyIcon.classList.remove('hidden')
|
||||
checkIcon.classList.add('hidden')
|
||||
}, 2000)
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
function getIcon(url) {
|
||||
url = url.toLowerCase();
|
||||
if (url.includes('x.com') || url.includes('twitter.com')) return 'x';
|
||||
if (url.includes('github.com')) return 'github';
|
||||
if (url.includes('linkedin.com')) return 'linkedin';
|
||||
if (url.includes('youtube.com')) return 'youtube';
|
||||
if (url.includes('hf.co') || url.includes('huggingface.co') || url.includes('huggingface.com')) return 'hugging-face';
|
||||
return 'default';
|
||||
}
|
||||
|
||||
function setInputIcon(input) {
|
||||
const icon = getIcon(input.value);
|
||||
const img = input.previousElementSibling.querySelector('img');
|
||||
img.src = `/public/social/${icon}.svg`;
|
||||
img.alt = `${icon} icon`;
|
||||
}
|
||||
|
||||
function setDisplayIcon(imgElement, url) {
|
||||
const icon = getIcon(url);
|
||||
imgElement.src = `/public/social/${icon}.svg`;
|
||||
imgElement.alt = `${icon} icon`;
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="/public/vendor/htmx/bundle.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body
|
||||
class="
|
||||
antialiased
|
||||
min-h-screen
|
||||
w-full
|
||||
m-0
|
||||
flex
|
||||
flex-col
|
||||
"
|
||||
hx-on:keydown="
|
||||
if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {
|
||||
// Ignore key events in input fields.
|
||||
return;
|
||||
}
|
||||
if ((event.metaKey && event.key === 'k') || event.key === '/') {
|
||||
event.preventDefault();
|
||||
const sp = htmx.find('#search') || htmx.find('#navbar-input');
|
||||
sp.focus();
|
||||
}
|
||||
"
|
||||
>
|
||||
|
||||
<header class="sticky top-0 z-40 bg-white underline-offset-4 lg:static">
|
||||
<nav class="flex w-full items-center justify-between px-6 py-3.5">
|
||||
<a href="/" class="z-50">
|
||||
<img src="/public/ollama.png" class="w-8" alt="Ollama" />
|
||||
</a>
|
||||
|
||||
|
||||
<div class="hidden lg:flex xl:flex-1 items-center space-x-6 ml-6 mr-6 xl:mr-0 text-lg">
|
||||
<a class="hover:underline focus:underline focus:outline-none focus:ring-0" target="_blank" href="https://discord.com/invite/ollama">Discord</a>
|
||||
<a class="hover:underline focus:underline focus:outline-none focus:ring-0" target="_blank" href="https://github.com/ollama/ollama">GitHub</a>
|
||||
<a class="hover:underline focus:underline focus:outline-none focus:ring-0" href="/models">Models</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex-grow justify-center items-center hidden lg:flex xl:-ml-8">
|
||||
<div class="relative w-full xl:max-w-[28rem]">
|
||||
|
||||
<form action="/search" autocomplete="off">
|
||||
<div
|
||||
class="relative flex w-full appearance-none bg-black/5 border border-neutral-100 items-center rounded-full"
|
||||
hx-on:focusout="
|
||||
if (!this.contains(event.relatedTarget)) {
|
||||
const searchPreview = document.querySelector('#searchpreview');
|
||||
if (searchPreview) {
|
||||
htmx.addClass('#searchpreview', 'hidden');
|
||||
}
|
||||
}
|
||||
"
|
||||
>
|
||||
<span id="searchIcon" class="pl-2 text-2xl text-neutral-500">
|
||||
<svg class="mt-0.25 ml-1.5 h-5 w-5 fill-current" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m8.5 3c3.0375661 0 5.5 2.46243388 5.5 5.5 0 1.24832096-.4158777 2.3995085-1.1166416 3.3225711l4.1469717 4.1470988c.2928932.2928932.2928932.767767 0 1.0606602-.2662666.2662665-.6829303.2904726-.9765418.0726181l-.0841184-.0726181-4.1470988-4.1469717c-.9230626.7007639-2.07425014 1.1166416-3.3225711 1.1166416-3.03756612 0-5.5-2.4624339-5.5-5.5 0-3.03756612 2.46243388-5.5 5.5-5.5zm0 1.5c-2.209139 0-4 1.790861-4 4s1.790861 4 4 4 4-1.790861 4-4-1.790861-4-4-4z" />
|
||||
</svg>
|
||||
</span>
|
||||
<input
|
||||
id="search"
|
||||
hx-get="/search"
|
||||
hx-trigger="keyup changed delay:100ms, focus"
|
||||
hx-target="#searchpreview"
|
||||
hx-swap="innerHTML"
|
||||
name="q"
|
||||
class="resize-none rounded-full border-0 py-2.5 bg-transparent text-sm w-full placeholder:text-neutral-500 focus:outline-none focus:ring-0"
|
||||
placeholder="Search models"
|
||||
autocomplete="off"
|
||||
hx-on:keydown="
|
||||
if (event.key === 'Enter') {
|
||||
event.preventDefault();
|
||||
window.location.href = '/search?q=' + encodeURIComponent(this.value);
|
||||
return;
|
||||
}
|
||||
if (event.key === 'Escape') {
|
||||
event.preventDefault();
|
||||
this.value = '';
|
||||
this.blur();
|
||||
htmx.addClass('#searchpreview', 'hidden');
|
||||
return;
|
||||
}
|
||||
if (event.key === 'Tab') {
|
||||
htmx.addClass('#searchpreview', 'hidden');
|
||||
return;
|
||||
}
|
||||
if (event.key === 'ArrowDown') {
|
||||
let first = document.querySelector('#search-preview-list a:first-of-type');
|
||||
first?.focus();
|
||||
event.preventDefault();
|
||||
}
|
||||
if (event.key === 'ArrowUp') {
|
||||
let last = document.querySelector('#view-all-link');
|
||||
last?.focus();
|
||||
event.preventDefault();
|
||||
}
|
||||
htmx.removeClass('#searchpreview', 'hidden');
|
||||
"
|
||||
hx-on:focus="
|
||||
htmx.removeClass('#searchpreview', 'hidden')
|
||||
"
|
||||
/>
|
||||
</form>
|
||||
<div id="searchpreview" class="hidden absolute left-0 right-0 top-12 z-50" style="width: calc(100% + 2px); margin-left: -1px;"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="hidden lg:flex xl:flex-1 items-center space-x-2 justify-end ml-6 xl:ml-0">
|
||||
|
||||
<a class="flex cursor-pointer items-center rounded-full bg-white border border-neutral-300 text-lg px-4 py-1 text-black hover:bg-neutral-50 whitespace-nowrap focus:bg-neutral-50" href="/signin">Sign in</a>
|
||||
<a class="flex cursor-pointer items-center rounded-full bg-neutral-800 text-lg px-4 py-1 text-white hover:bg-black whitespace-nowrap focus:bg-black" href="/download">Download</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="lg:hidden flex items-center">
|
||||
<input type="checkbox" id="menu" class="peer hidden" />
|
||||
<label for="menu" class="z-50 cursor-pointer peer-checked:hidden block">
|
||||
<svg
|
||||
class="h-8 w-8"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"
|
||||
/>
|
||||
</svg>
|
||||
</label>
|
||||
<label for="menu" class="z-50 cursor-pointer hidden peer-checked:block fixed top-4 right-6">
|
||||
<svg
|
||||
class="h-8 w-8"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke-width="1.5"
|
||||
stroke="currentColor"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M6 18L18 6M6 6l12 12"
|
||||
/>
|
||||
</svg>
|
||||
</label>
|
||||
|
||||
<div class="fixed inset-0 bg-white z-40 hidden peer-checked:block overflow-y-auto">
|
||||
<div class="flex flex-col space-y-5 pt-[5.5rem] text-3xl">
|
||||
|
||||
<a class="px-6" href="/models">Models</a>
|
||||
<a class="px-6" href="https://discord.com/invite/ollama">Discord</a>
|
||||
<a class="px-6" href="https://github.com/ollama/ollama">GitHub</a>
|
||||
|
||||
|
||||
|
||||
|
||||
<a class="px-6" href="/download">Download</a>
|
||||
<a href="/signin" class="block px-6">Sign in</a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
<main class="flex-grow">
|
||||
|
||||
<main class="mx-auto flex max-w-6xl flex-1 flex-col items-center px-6 py-24">
|
||||
<h1 class="mb-12 text-3xl tracking-tight">Download Ollama</h1>
|
||||
<nav class="grid grid-cols-3 gap-4 text-sm">
|
||||
<a
|
||||
href="/download/mac"
|
||||
class="
|
||||
flex cursor-pointer flex-col items-center rounded-lg px-6 py-2 hover:bg-neutral-100
|
||||
"
|
||||
>
|
||||
<svg
|
||||
fill="currentColor"
|
||||
stroke-width="0"
|
||||
viewBox="0 0 1024 1024"
|
||||
class="h-8 w-8 p-1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5-34.9-50-87.7-77.5-157.3-82.8-65.9-5.2-138 38.4-164.4 38.4-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8 23.8 68.2 109.6 235.3 199.1 232.6 46.8-1.1 79.9-33.2 140.8-33.2 59.1 0 89.7 33.2 141.9 33.2 90.3-1.3 167.9-153.2 190.5-221.6-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7-44.8 2.6-96.6 30.5-126.1 64.8-32.5 36.8-51.6 82.3-47.5 133.6 48.4 3.7 92.6-21.2 129-63.7z"
|
||||
></path>
|
||||
</svg>
|
||||
macOS
|
||||
</a>
|
||||
<a
|
||||
href="/download/linux"
|
||||
class="
|
||||
flex cursor-pointer flex-col items-center rounded-lg px-6 py-2 hover:bg-neutral-100"
|
||||
>
|
||||
<svg
|
||||
stroke="currentColor"
|
||||
fill="currentColor"
|
||||
stroke-width="0"
|
||||
viewBox="0 0 448 512"
|
||||
class="h-8 w-8 p-0.5"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"
|
||||
></path>
|
||||
</svg>
|
||||
Linux
|
||||
</a>
|
||||
<a
|
||||
href="/download/windows"
|
||||
class="
|
||||
bg-neutral-100 flex cursor-pointer flex-col items-center rounded-lg px-6 py-2 hover:bg-neutral-100
|
||||
"
|
||||
>
|
||||
<svg
|
||||
fill="currentColor"
|
||||
stroke-width="0"
|
||||
viewBox="0 0 448 512"
|
||||
class="b h-8 w-8 p-1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z"
|
||||
></path>
|
||||
</svg>
|
||||
Windows
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
|
||||
<div
|
||||
class="mx-auto mb-12 mt-16 flex w-full max-w-[18rem] flex-col items-center text-center"
|
||||
>
|
||||
<a
|
||||
class="text-md w-full rounded-3xl bg-neutral-800 px-4 py-2 text-lg text-white hover:bg-black"
|
||||
href="/download/OllamaSetup.exe"
|
||||
>Download for Windows</a
|
||||
>
|
||||
<p class="my-2 text-xs text-neutral-800">Requires Windows 10 or later</p>
|
||||
</div>
|
||||
|
||||
|
||||
<hr class="w-full sm:max-w-md" />
|
||||
<form
|
||||
class="mx-auto flex w-full min-w-0 max-w-[18rem] flex-col items-center space-y-3 text-center"
|
||||
hx-post="/newsletter/signup"
|
||||
hx-swap="none"
|
||||
hx-target="this"
|
||||
hx-on::after-request="this.reset()"
|
||||
>
|
||||
<h3 class="mt-12 text-sm text-neutral-800">
|
||||
While Ollama downloads, sign up to get notified of new updates.
|
||||
</h3>
|
||||
<input
|
||||
required
|
||||
type="email"
|
||||
name="email"
|
||||
placeholder="your email address"
|
||||
class="px-4 py-3 w-full rounded-xl text-sm placeholder:text-sm placeholder:text-neutral-400 border-neutral-300 focus:ring focus:ring-opacity-75 focus:border-blue-400 focus:ring-blue-300"
|
||||
/>
|
||||
<input
|
||||
type="submit"
|
||||
value="Get updates"
|
||||
class="w-full cursor-pointer rounded-3xl bg-white border p-2 border-neutral-300 hover:bg-neutral-50 whitespace-nowrap focus:outline-none focus:ring-0 disabled:opacity-50"
|
||||
hx-disable-element="this"
|
||||
/>
|
||||
<div error class="text-xs text-red-500 empty:hidden"></div>
|
||||
<div success class="text-xs text-green-500 empty:hidden"></div>
|
||||
</form>
|
||||
</main>
|
||||
|
||||
</main>
|
||||
|
||||
|
||||
<footer class="mt-auto">
|
||||
<div class="bg-white underline-offset-4 hidden md:block">
|
||||
<div class="flex items-center justify-between px-6 py-3.5">
|
||||
<div class="text-xs text-neutral-500">© 2025 Ollama</div>
|
||||
<div class="flex space-x-6 text-xs text-neutral-500">
|
||||
<a href="/blog" class="hover:underline">Blog</a>
|
||||
<a href="https://github.com/ollama/ollama/tree/main/docs" class="hover:underline">Docs</a>
|
||||
<a href="https://github.com/ollama/ollama" class="hover:underline">GitHub</a>
|
||||
<a href="https://discord.com/invite/ollama" class="hover:underline">Discord</a>
|
||||
<a href="https://twitter.com/ollama" class="hover:underline">X (Twitter)</a>
|
||||
<a href="https://lu.ma/ollama" class="hover:underline">Meetups</a>
|
||||
<a href="/download" class="hover:underline">Download</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white py-4 md:hidden">
|
||||
<div class="flex flex-col items-center justify-center">
|
||||
<ul class="flex flex-wrap items-center justify-center text-sm text-neutral-500">
|
||||
<li class="mx-2 my-1">
|
||||
<a href="/blog" class="hover:underline">Blog</a>
|
||||
</li>
|
||||
<li class="mx-2 my-1">
|
||||
<a href="/download" class="hover:underline">Download</a>
|
||||
</li>
|
||||
<li class="mx-2 my-1">
|
||||
<a href="https://github.com/ollama/ollama/tree/main/docs" class="hover:underline">Docs</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="flex flex-wrap items-center justify-center text-sm text-neutral-500">
|
||||
<li class="mx-2 my-1">
|
||||
<a href="https://github.com/ollama/ollama" class="hover:underline">GitHub</a>
|
||||
</li>
|
||||
<li class="mx-2 my-1">
|
||||
<a href="https://discord.com/invite/ollama" class="hover:underline">Discord</a>
|
||||
</li>
|
||||
<li class="mx-2 my-1">
|
||||
<a href="https://twitter.com/ollama" class="hover:underline">X (Twitter)</a>
|
||||
</li>
|
||||
<li class="mx-2 my-1">
|
||||
<a href="https://lu.ma/ollama" class="hover:underline">Meetups</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="mt-2 flex items-center justify-center text-sm text-neutral-500">
|
||||
© 2025 Ollama Inc.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
<span class="hidden" id="end_of_template"></span>
|
||||
</body>
|
||||
</html>
|
BIN
resources.pak
Normal file
BIN
resources/Tray-Win32-Dark.ico
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
resources/Tray-Win32.ico
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
resources/TrayIconTemplate-Dark.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
resources/TrayIconTemplate-Dark@2x.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
resources/TrayIconTemplate-Dark@3x.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
resources/TrayIconTemplate.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
resources/TrayIconTemplate@2x.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
resources/TrayIconTemplate@3x.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
resources/app.asar
Normal file
BIN
resources/app.asar.unpacked/node_modules/claude-native/claude-native-binding.node
generated
vendored
Normal file
107
resources/de-DE.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Originalgröße",
|
||||
"+7sd9hoyZA": "Kopieren",
|
||||
"/PgA81GVOD": "Bearbeiten",
|
||||
"/bRGKhnXQ6": "Eine neue Version ist verfügbar. Sie wird automatisch heruntergeladen und installiert.",
|
||||
"0g8/VVdNuN": "Gehen Sie zu „claude.ai/settings“, um Ihr Profil, Team und weitere Einstellungen zu konfigurieren.",
|
||||
"0tZLEYF8mJ": "Entwickler",
|
||||
"1HUTYwndT2": "Fenster",
|
||||
"1PfZLi/OV7": "Allgemein",
|
||||
"1TJUzU26sO": "Feedback übermitteln …",
|
||||
"25aCMlTDUq": "Claude automatisch beim Anmelden starten",
|
||||
"3ML3xT+gEV": "Wiederholen",
|
||||
"3gG1j3kRBX": "Feedback übermitteln …",
|
||||
"3unrKzH4zB": "Kopieren",
|
||||
"4qP7MjrQfC": "Umgebungsvariablen",
|
||||
"5DUIVR3fVi": "Über...",
|
||||
"6yv8ytK4El": "Überprüfen Sie Ihre Netzwerkverbindung",
|
||||
"7fdcqxofEs": "Beenden",
|
||||
"7gSC+rZzXX": "Claude von überall schnell öffnen",
|
||||
"8YQEOfuaGO": "Alles auswählen",
|
||||
"9+afSO9e/t": "Fehler beim Suchen nach Aktualisierungen: {error}",
|
||||
"9uNxNtcrFI": "Installieren",
|
||||
"CZwl8X2D85": "Erweiterte Optionen",
|
||||
"CizRPROPWo": "Claude-Hilfe",
|
||||
"D43DeqP+2t": "Claude-Einstellungen",
|
||||
"D4DyT6MmPy": "App-Einstellungen konnten nicht geladen werden",
|
||||
"DQTgg21B7g": "App anzeigen",
|
||||
"E9jYTa7AbX": "Benachrichtigungsbereich",
|
||||
"EfdnINFnIz": "Datei",
|
||||
"GSG5S0ysrR": "Autostart",
|
||||
"HeHYq6bbS2": "Claude kann Informationen wie Eingabeaufforderungen und Anhänge von spezialisierten Servern über das Model Context Protocol empfangen.",
|
||||
"I5O68ogAtr": "Erste Schritte",
|
||||
"JVwNvMZjVT": "Einfügen",
|
||||
"KAo3lt5Hv+": "Einfügen",
|
||||
"Ko/2Ml7mZG": "Seite neu laden",
|
||||
"L32WRR6NOL": "Löschen",
|
||||
"L717supPIA": "Einstellungen",
|
||||
"LCWUQ/4Fu6": "Ansicht",
|
||||
"NZIwKxgxJ+": "Möchten Sie den MCP-Server „{serverKey}“ wirklich entfernen?",
|
||||
"Nmvo1ufAY5": "Verbindung zu Claude konnte nicht hergestellt werden",
|
||||
"O3rtEd7aMd": "Suchen",
|
||||
"ODySlGptaj": "Einstellungen …",
|
||||
"PH29MShDiy": "Vorwärts",
|
||||
"PW5U8NgTto": "MCP-Protokolldatei öffnen ...",
|
||||
"PZtcoAOSsa": "Nicht aktivieren",
|
||||
"PbJ4jR0kv1": "Sie verwenden bereits die neueste Version.",
|
||||
"RTg057HE1D": "Entwicklertools anzeigen",
|
||||
"S3MXlbjkax": "Womit kann ich Ihnen heute helfen?",
|
||||
"S3k5yXss2r": "Version {version}",
|
||||
"TH+W2Ad73P": "Ausschneiden",
|
||||
"UJCjEVPX6Q": "Nachschlagen",
|
||||
"Vvus2ifAny": "Konfiguration bearbeiten",
|
||||
"W1pELwt/+a": "Claude läuft im Benachrichtigungsbereich",
|
||||
"WBvq3HlPae": "Tastenkombination festlegen",
|
||||
"WF1HSu0jAC": "Protokollordner öffnen",
|
||||
"WZe86KSdrM": "Zum Wörterbuch hinzufügen",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "Keine Aktualisierung verfügbar",
|
||||
"XZ36+EBE5/": "Verkleinern",
|
||||
"XinCguXCgN": "Mehr erfahren",
|
||||
"YTdYCYAf/Z": "Claude in der Menüleiste anzeigen",
|
||||
"Z9g5m/V9Nq": "Vergrößern",
|
||||
"ZJZN1+KyJw": "Einstellungen ...",
|
||||
"aNmxuDcWaU": "Fehler",
|
||||
"aXdFLiVzjd": "Hauptfenster anzeigen",
|
||||
"arbRxbtBkP": "Zurück",
|
||||
"baGq3gy8z1": "Neue Konversation",
|
||||
"dKX0bpR+a2": "Beenden",
|
||||
"dLyz0Srosd": "Entwickler",
|
||||
"fEeEFfSz4K": "Vergrößern (alternative Version)",
|
||||
"fFJxOwJRj2": "Rückgängig",
|
||||
"fWDSQQgRO5": "Menüleiste",
|
||||
"iFRmqBsr1N": "Über Claude",
|
||||
"ilE9e0uxNN": "Aktualisieren",
|
||||
"j66cdL4EK5": "Dokumentation öffnen",
|
||||
"jd5ZNrRMNP": "Sie gehören zu den ersten Benutzern. Teilen Sie uns Ihr Feedback mit.",
|
||||
"k+06oXbIas": "Claude im Benachrichtigungsbereich anzeigen",
|
||||
"kYwW0OsI4M": "Claude Desktop befindet sich in der Beta-Phase.",
|
||||
"m3GfpKD1WX": "Neu laden",
|
||||
"mRXjxhS6p4": "Nach Aktualisierungen suchen …",
|
||||
"ngLpGT7bUJ": "Entwicklereinstellungen konnten nicht geladen werden",
|
||||
"oQuOiX24pp": "Beenden",
|
||||
"pWXxZASpOB": "Hilfe",
|
||||
"pgaCSv2/6H": "Argumente",
|
||||
"q4hs14B00V": "Unbekannter Fehler",
|
||||
"rNAd+HxSK4": "MCP-Protokolldatei öffnen",
|
||||
"rY99UXvTDU": "Bild kopieren",
|
||||
"rdiPpQVqvY": "Der Entwicklermodus ermöglicht den Zugriff auf Entwicklertools und Debugging-Funktionen. Aktivieren Sie diesen nur, wenn Sie Erfahrung damit haben.",
|
||||
"rwFEudHXey": "Fehler beim Lesen oder Verarbeiten von claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Auf Seite suchen",
|
||||
"sZxWXq9BzJ": "Feedback geben",
|
||||
"sys7RHphmL": "Feedback",
|
||||
"tWutslc/9Z": "Aktivieren",
|
||||
"u1/hT7oRQY": "Tastenkombination für Schnellzugriff",
|
||||
"uc3dnSo+eo": "Datei",
|
||||
"urCd4k/cE0": "Befehl",
|
||||
"vgLHPxjh9O": "Entwicklermodus aktivieren",
|
||||
"wS64bVG2CO": "MCP ist ein Protokoll, das sichere Verbindungen zwischen Clients, wie der Claude Desktop App, und lokalen Diensten ermöglicht.",
|
||||
"xJs1jZ8PoA": "Claude läuft im Hintergrund, auch wenn Sie das Fenster schließen. Klicken Sie auf das Claude-Symbol in der Taskleiste, um die App erneut zu öffnen, oder klicken Sie das Symbol mit der rechten Maustaste an, um die App zu beenden.",
|
||||
"xKRKzVVy9c": "Konfigurieren",
|
||||
"xd436TVDRZ": "Fehler beim Lesen oder Verarbeiten von developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "Entwicklermodus aktivieren?",
|
||||
"ytjMRobdyL": "Aktualisierung verfügbar",
|
||||
"zAYm/Z684h": "Hilfe",
|
||||
"zCIK9K8J4a": "Fehler",
|
||||
"zSP70MVzIo": "Tastenkombination löschen"
|
||||
}
|
107
resources/en-US.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Actual Size",
|
||||
"+7sd9hoyZA": "Copy",
|
||||
"/PgA81GVOD": "Edit",
|
||||
"/bRGKhnXQ6": "A new version is available. It will be downloaded and installed automatically.",
|
||||
"0g8/VVdNuN": "Go to claude.ai/settings to configure your profile, team, and more.",
|
||||
"0tZLEYF8mJ": "Developer",
|
||||
"1HUTYwndT2": "Window",
|
||||
"1PfZLi/OV7": "General",
|
||||
"1TJUzU26sO": "Submit Feedback…",
|
||||
"25aCMlTDUq": "Automatically start Claude when you log in",
|
||||
"3ML3xT+gEV": "Redo",
|
||||
"3gG1j3kRBX": "Submit Feedback...",
|
||||
"3unrKzH4zB": "Copy",
|
||||
"4qP7MjrQfC": "Environment variables",
|
||||
"5DUIVR3fVi": "About...",
|
||||
"6yv8ytK4El": "Check your network connection",
|
||||
"7fdcqxofEs": "Exit",
|
||||
"7gSC+rZzXX": "Quickly open Claude from anywhere",
|
||||
"8YQEOfuaGO": "Select All",
|
||||
"9+afSO9e/t": "Failed to check for updates: {error}",
|
||||
"9uNxNtcrFI": "Install",
|
||||
"CZwl8X2D85": "Advanced options",
|
||||
"CizRPROPWo": "Claude Help",
|
||||
"D43DeqP+2t": "Claude Settings",
|
||||
"D4DyT6MmPy": "Could not load app settings",
|
||||
"DQTgg21B7g": "Show App",
|
||||
"E9jYTa7AbX": "System Tray",
|
||||
"EfdnINFnIz": "File",
|
||||
"GSG5S0ysrR": "Run on Startup",
|
||||
"HeHYq6bbS2": "Claude can receive information like prompts and attachments from specialized servers using Model Context Protocol.",
|
||||
"I5O68ogAtr": "Get Started",
|
||||
"JVwNvMZjVT": "Paste",
|
||||
"KAo3lt5Hv+": "Paste",
|
||||
"Ko/2Ml7mZG": "Reload This Page",
|
||||
"L32WRR6NOL": "Delete",
|
||||
"L717supPIA": "Settings",
|
||||
"LCWUQ/4Fu6": "View",
|
||||
"NZIwKxgxJ+": "Are you sure you want to remove the MCP server \"{serverKey}\"?",
|
||||
"Nmvo1ufAY5": "Couldn't connect to Claude",
|
||||
"O3rtEd7aMd": "Find",
|
||||
"ODySlGptaj": "Settings…",
|
||||
"PH29MShDiy": "Forward",
|
||||
"PW5U8NgTto": "Open MCP Log File...",
|
||||
"PZtcoAOSsa": "Don't Enable",
|
||||
"PbJ4jR0kv1": "You are running the latest version.",
|
||||
"RTg057HE1D": "Show Dev Tools",
|
||||
"S3MXlbjkax": "What can I help you with today?",
|
||||
"S3k5yXss2r": "Version {version}",
|
||||
"TH+W2Ad73P": "Cut",
|
||||
"UJCjEVPX6Q": "Look Up",
|
||||
"Vvus2ifAny": "Edit Config",
|
||||
"W1pELwt/+a": "Claude runs in the Notification Area",
|
||||
"WBvq3HlPae": "Set shortcut",
|
||||
"WF1HSu0jAC": "Open Logs Folder",
|
||||
"WZe86KSdrM": "Add to dictionary",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "No Update Available",
|
||||
"XZ36+EBE5/": "Zoom Out",
|
||||
"XinCguXCgN": "Learn more",
|
||||
"YTdYCYAf/Z": "Show Claude in the menu bar",
|
||||
"Z9g5m/V9Nq": "Zoom In",
|
||||
"ZJZN1+KyJw": "Settings...",
|
||||
"aNmxuDcWaU": "Error",
|
||||
"aXdFLiVzjd": "Show Main Window",
|
||||
"arbRxbtBkP": "Back",
|
||||
"baGq3gy8z1": "New Conversation",
|
||||
"dKX0bpR+a2": "Quit",
|
||||
"dLyz0Srosd": "Developer",
|
||||
"fEeEFfSz4K": "Zoom In (indie cooler version)",
|
||||
"fFJxOwJRj2": "Undo",
|
||||
"fWDSQQgRO5": "Menu Bar",
|
||||
"iFRmqBsr1N": "About Claude",
|
||||
"ilE9e0uxNN": "Refresh",
|
||||
"j66cdL4EK5": "Open Documentation",
|
||||
"jd5ZNrRMNP": "You're an early explorer, so let us know your feedback.",
|
||||
"k+06oXbIas": "Show Claude in the notifications area",
|
||||
"kYwW0OsI4M": "Claude Desktop is in beta.",
|
||||
"m3GfpKD1WX": "Reload",
|
||||
"mRXjxhS6p4": "Check for Updates…",
|
||||
"ngLpGT7bUJ": "Could not load developer settings",
|
||||
"oQuOiX24pp": "Quit",
|
||||
"pWXxZASpOB": "Help",
|
||||
"pgaCSv2/6H": "Arguments",
|
||||
"q4hs14B00V": "Unknown error",
|
||||
"rNAd+HxSK4": "Open MCP Log File",
|
||||
"rY99UXvTDU": "Copy Image",
|
||||
"rdiPpQVqvY": "Developer mode allows access to developer tools and debugging features. Only enable this if you know what you're doing.",
|
||||
"rwFEudHXey": "There was an error reading or parsing claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Find in page",
|
||||
"sZxWXq9BzJ": "Give feedback",
|
||||
"sys7RHphmL": "Feedback",
|
||||
"tWutslc/9Z": "Enable",
|
||||
"u1/hT7oRQY": "Quick Entry Keyboard Shortcut",
|
||||
"uc3dnSo+eo": "File",
|
||||
"urCd4k/cE0": "Command",
|
||||
"vgLHPxjh9O": "Enable Developer Mode",
|
||||
"wS64bVG2CO": "MCP is a protocol that enables secure connections between clients, such as the Claude Desktop app, and local services.",
|
||||
"xJs1jZ8PoA": "Claude runs in the background even when you close the window. Click the Claude icon in the tray to reopen the app, or right-click to quit.",
|
||||
"xKRKzVVy9c": "Configure",
|
||||
"xd436TVDRZ": "There was an error reading or parsing developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "Enable Developer Mode?",
|
||||
"ytjMRobdyL": "Update Available",
|
||||
"zAYm/Z684h": "Help",
|
||||
"zCIK9K8J4a": "Error",
|
||||
"zSP70MVzIo": "Clear shortcut"
|
||||
}
|
1496
resources/en-XA.json
Normal file
1496
resources/en-XB.json
Normal file
107
resources/es-419.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Tamaño real",
|
||||
"+7sd9hoyZA": "Copiar",
|
||||
"/PgA81GVOD": "Editar",
|
||||
"/bRGKhnXQ6": "Hay una nueva versión disponible. Se descargará e instalará automáticamente.",
|
||||
"0g8/VVdNuN": "Ve a claude.ai/settings para configurar tu perfil, equipo y más.",
|
||||
"0tZLEYF8mJ": "Desarrollador",
|
||||
"1HUTYwndT2": "Ventana",
|
||||
"1PfZLi/OV7": "General",
|
||||
"1TJUzU26sO": "Enviar comentarios…",
|
||||
"25aCMlTDUq": "Iniciar Claude automáticamente cuando inicies sesión",
|
||||
"3ML3xT+gEV": "Rehacer",
|
||||
"3gG1j3kRBX": "Enviar comentarios...",
|
||||
"3unrKzH4zB": "Copiar",
|
||||
"4qP7MjrQfC": "Variables de entorno",
|
||||
"5DUIVR3fVi": "Acerca de...",
|
||||
"6yv8ytK4El": "Revise su conexión de red",
|
||||
"7fdcqxofEs": "Salir",
|
||||
"7gSC+rZzXX": "Abre Claude rápidamente desde cualquier lugar",
|
||||
"8YQEOfuaGO": "Seleccionar todo",
|
||||
"9+afSO9e/t": "Error al buscar actualizaciones: {error}",
|
||||
"9uNxNtcrFI": "Instalar",
|
||||
"CZwl8X2D85": "Opciones avanzadas",
|
||||
"CizRPROPWo": "Ayuda de Claude",
|
||||
"D43DeqP+2t": "Configuración de Claude",
|
||||
"D4DyT6MmPy": "No se pudieron cargar los ajustes de la aplicación",
|
||||
"DQTgg21B7g": "Mostrar aplicación",
|
||||
"E9jYTa7AbX": "Bandeja del sistema",
|
||||
"EfdnINFnIz": "Archivo",
|
||||
"GSG5S0ysrR": "Ejecutar al inicio",
|
||||
"HeHYq6bbS2": "Claude puede recibir información como instrucciones y archivos adjuntos desde servidores especializados usando Model Context Protocol.",
|
||||
"I5O68ogAtr": "Comenzar",
|
||||
"JVwNvMZjVT": "Pegar",
|
||||
"KAo3lt5Hv+": "Pegar",
|
||||
"Ko/2Ml7mZG": "Recargar esta página",
|
||||
"L32WRR6NOL": "Eliminar",
|
||||
"L717supPIA": "Configuración",
|
||||
"LCWUQ/4Fu6": "Ver",
|
||||
"NZIwKxgxJ+": "¿Estás seguro de que deseas eliminar el servidor MCP \"{serverKey}\"?",
|
||||
"Nmvo1ufAY5": "No se pudo conectar con Claude",
|
||||
"O3rtEd7aMd": "Buscar",
|
||||
"ODySlGptaj": "Configuración…",
|
||||
"PH29MShDiy": "Adelante",
|
||||
"PW5U8NgTto": "Abrir archivo Log MCP...",
|
||||
"PZtcoAOSsa": "No activar",
|
||||
"PbJ4jR0kv1": "Estás ejecutando la última versión.",
|
||||
"RTg057HE1D": "Mostrar herramientas de desarrollo",
|
||||
"S3MXlbjkax": "¿En qué puedo ayudarte hoy?",
|
||||
"S3k5yXss2r": "Versión {version}",
|
||||
"TH+W2Ad73P": "Cortar",
|
||||
"UJCjEVPX6Q": "Buscar",
|
||||
"Vvus2ifAny": "Editar configuración",
|
||||
"W1pELwt/+a": "Claude se ejecuta en el Área de notificaciones",
|
||||
"WBvq3HlPae": "Establecer atajo",
|
||||
"WF1HSu0jAC": "Abrir carpeta de registros",
|
||||
"WZe86KSdrM": "Agregar al diccionario",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "No hay actualizaciones disponibles",
|
||||
"XZ36+EBE5/": "Reducir",
|
||||
"XinCguXCgN": "Más información",
|
||||
"YTdYCYAf/Z": "Mostrar Claude en la barra de menú",
|
||||
"Z9g5m/V9Nq": "Aumentar",
|
||||
"ZJZN1+KyJw": "Configuración...",
|
||||
"aNmxuDcWaU": "Error",
|
||||
"aXdFLiVzjd": "Mostrar ventana principal",
|
||||
"arbRxbtBkP": "Atrás",
|
||||
"baGq3gy8z1": "Nueva conversación",
|
||||
"dKX0bpR+a2": "Salir",
|
||||
"dLyz0Srosd": "Desarrollador",
|
||||
"fEeEFfSz4K": "Aumentar (versión más cool)",
|
||||
"fFJxOwJRj2": "Deshacer",
|
||||
"fWDSQQgRO5": "Barra de menú",
|
||||
"iFRmqBsr1N": "Acerca de Claude",
|
||||
"ilE9e0uxNN": "Actualizar",
|
||||
"j66cdL4EK5": "Abrir documentación",
|
||||
"jd5ZNrRMNP": "Eres uno de los primeros en explorar, así que nos gustaría conocer tus comentarios.",
|
||||
"k+06oXbIas": "Mostrar Claude en el área de notificaciones",
|
||||
"kYwW0OsI4M": "Claude Desktop está en versión beta.",
|
||||
"m3GfpKD1WX": "Recargar",
|
||||
"mRXjxhS6p4": "Buscar actualizaciones…",
|
||||
"ngLpGT7bUJ": "No se pudieron cargar los ajustes de desarrollador",
|
||||
"oQuOiX24pp": "Salir",
|
||||
"pWXxZASpOB": "Ayuda",
|
||||
"pgaCSv2/6H": "Argumentos",
|
||||
"q4hs14B00V": "Error desconocido",
|
||||
"rNAd+HxSK4": "Abrir archivo Log MCP",
|
||||
"rY99UXvTDU": "Copiar imagen",
|
||||
"rdiPpQVqvY": "El modo desarrollador permite acceder a herramientas de desarrollo y funciones de depuración. Actívelo solo si sabe lo que está haciendo.",
|
||||
"rwFEudHXey": "Hubo un error al leer o analizar claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Buscar en la página",
|
||||
"sZxWXq9BzJ": "Dar comentarios",
|
||||
"sys7RHphmL": "Comentarios",
|
||||
"tWutslc/9Z": "Activar",
|
||||
"u1/hT7oRQY": "Atajo de teclado para acceso rápido",
|
||||
"uc3dnSo+eo": "Archivo",
|
||||
"urCd4k/cE0": "Comando",
|
||||
"vgLHPxjh9O": "Activar modo desarrollador",
|
||||
"wS64bVG2CO": "MCP es un protocolo que permite conexiones seguras entre clientes, como la aplicación Claude de Escritorio, y servicios locales.",
|
||||
"xJs1jZ8PoA": "Claude se ejecuta en segundo plano incluso cuando cierras la ventana. Haz clic en el ícono de Claude en la bandeja del sistema para reabrir la aplicación o haz clic derecho para salir.",
|
||||
"xKRKzVVy9c": "Configurar",
|
||||
"xd436TVDRZ": "Hubo un error al leer o analizar developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "¿Activar modo desarrollador?",
|
||||
"ytjMRobdyL": "Actualización disponible",
|
||||
"zAYm/Z684h": "Ayuda",
|
||||
"zCIK9K8J4a": "Error",
|
||||
"zSP70MVzIo": "Borrar atajo"
|
||||
}
|
107
resources/es-ES.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Tamaño real",
|
||||
"+7sd9hoyZA": "Copiar",
|
||||
"/PgA81GVOD": "Editar",
|
||||
"/bRGKhnXQ6": "Hay una nueva versión disponible. Se descargará e instalará automáticamente.",
|
||||
"0g8/VVdNuN": "Diríjase a claude.ai/settings para configurar su perfil, equipo y más.",
|
||||
"0tZLEYF8mJ": "Desarrollador",
|
||||
"1HUTYwndT2": "Ventana",
|
||||
"1PfZLi/OV7": "General",
|
||||
"1TJUzU26sO": "Enviar comentarios…",
|
||||
"25aCMlTDUq": "Iniciar Claude automáticamente al iniciar sesión",
|
||||
"3ML3xT+gEV": "Rehacer",
|
||||
"3gG1j3kRBX": "Enviar comentarios...",
|
||||
"3unrKzH4zB": "Copiar",
|
||||
"4qP7MjrQfC": "Variables de entorno",
|
||||
"5DUIVR3fVi": "Acerca de...",
|
||||
"6yv8ytK4El": "Compruebe su conexión de red",
|
||||
"7fdcqxofEs": "Salir",
|
||||
"7gSC+rZzXX": "Abra Claude rápidamente desde cualquier lugar",
|
||||
"8YQEOfuaGO": "Seleccionar todo",
|
||||
"9+afSO9e/t": "Error al buscar actualizaciones: {error}",
|
||||
"9uNxNtcrFI": "Instalar",
|
||||
"CZwl8X2D85": "Opciones avanzadas",
|
||||
"CizRPROPWo": "Ayuda de Claude",
|
||||
"D43DeqP+2t": "Configuración de Claude",
|
||||
"D4DyT6MmPy": "No se pudieron cargar los ajustes de la aplicación",
|
||||
"DQTgg21B7g": "Mostrar aplicación",
|
||||
"E9jYTa7AbX": "Área de notificaciones",
|
||||
"EfdnINFnIz": "Archivo",
|
||||
"GSG5S0ysrR": "Ejecutar al iniciar",
|
||||
"HeHYq6bbS2": "Claude puede recibir información, como instrucciones y archivos adjuntos, desde servidores especializados mediante el Model Context Protocol.",
|
||||
"I5O68ogAtr": "Comenzar",
|
||||
"JVwNvMZjVT": "Pegar",
|
||||
"KAo3lt5Hv+": "Pegar",
|
||||
"Ko/2Ml7mZG": "Recargar esta página",
|
||||
"L32WRR6NOL": "Eliminar",
|
||||
"L717supPIA": "Configuración",
|
||||
"LCWUQ/4Fu6": "Ver",
|
||||
"NZIwKxgxJ+": "¿Está seguro de que desea eliminar el servidor MCP \"{serverKey}\"?",
|
||||
"Nmvo1ufAY5": "No se pudo conectar con Claude",
|
||||
"O3rtEd7aMd": "Buscar",
|
||||
"ODySlGptaj": "Configuración…",
|
||||
"PH29MShDiy": "Adelante",
|
||||
"PW5U8NgTto": "Abrir archivo de registro de MCP...",
|
||||
"PZtcoAOSsa": "No habilitar",
|
||||
"PbJ4jR0kv1": "Está utilizando la versión más reciente.",
|
||||
"RTg057HE1D": "Mostrar herramientas para desarrolladores",
|
||||
"S3MXlbjkax": "¿En qué puedo ayudarte hoy?",
|
||||
"S3k5yXss2r": "Versión {version}",
|
||||
"TH+W2Ad73P": "Cortar",
|
||||
"UJCjEVPX6Q": "Buscar",
|
||||
"Vvus2ifAny": "Editar configuración",
|
||||
"W1pELwt/+a": "Claude sigue activo en la bandeja del sistema",
|
||||
"WBvq3HlPae": "Configurar atajo",
|
||||
"WF1HSu0jAC": "Abrir carpeta de registros",
|
||||
"WZe86KSdrM": "Añadir al diccionario",
|
||||
"WlhIx7DfFO": "Aceptar",
|
||||
"XPIoFTkh3e": "No hay actualizaciones disponibles",
|
||||
"XZ36+EBE5/": "Alejar",
|
||||
"XinCguXCgN": "Más información",
|
||||
"YTdYCYAf/Z": "Mostrar Claude en la barra de menú",
|
||||
"Z9g5m/V9Nq": "Acercar",
|
||||
"ZJZN1+KyJw": "Configuración...",
|
||||
"aNmxuDcWaU": "Error",
|
||||
"aXdFLiVzjd": "Mostrar ventana principal",
|
||||
"arbRxbtBkP": "Atrás",
|
||||
"baGq3gy8z1": "Nueva conversación",
|
||||
"dKX0bpR+a2": "Salir",
|
||||
"dLyz0Srosd": "Desarrollador",
|
||||
"fEeEFfSz4K": "Acercar (versión más moderna)",
|
||||
"fFJxOwJRj2": "Deshacer",
|
||||
"fWDSQQgRO5": "Barra de menús",
|
||||
"iFRmqBsr1N": "Acerca de Claude",
|
||||
"ilE9e0uxNN": "Actualizar",
|
||||
"j66cdL4EK5": "Abrir documentación",
|
||||
"jd5ZNrRMNP": "Es uno de los primeros en acceder, así que nos gustaría conocer su opinión.",
|
||||
"k+06oXbIas": "Mostrar Claude en el área de notificaciones",
|
||||
"kYwW0OsI4M": "Claude para escritorio está en versión beta.",
|
||||
"m3GfpKD1WX": "Recargar",
|
||||
"mRXjxhS6p4": "Buscar actualizaciones…",
|
||||
"ngLpGT7bUJ": "No se pudieron cargar los ajustes de desarrollador",
|
||||
"oQuOiX24pp": "Salir",
|
||||
"pWXxZASpOB": "Ayuda",
|
||||
"pgaCSv2/6H": "Argumentos",
|
||||
"q4hs14B00V": "Error desconocido",
|
||||
"rNAd+HxSK4": "Abrir archivo de registro de MCP",
|
||||
"rY99UXvTDU": "Copiar imagen",
|
||||
"rdiPpQVqvY": "El modo desarrollador permite acceder a herramientas para desarrolladores y funciones de depuración. Habilítelo solo si sabe lo que está haciendo.",
|
||||
"rwFEudHXey": "Se produjo un error al leer o analizar claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Buscar en la página",
|
||||
"sZxWXq9BzJ": "Dejar comentarios",
|
||||
"sys7RHphmL": "Comentarios",
|
||||
"tWutslc/9Z": "Habilitar",
|
||||
"u1/hT7oRQY": "Atajo de teclado de acceso rápido",
|
||||
"uc3dnSo+eo": "Archivo",
|
||||
"urCd4k/cE0": "Comando",
|
||||
"vgLHPxjh9O": "Habilitar modo desarrollador",
|
||||
"wS64bVG2CO": "MCP es un protocolo que permite conexiones seguras entre clientes, como la aplicación de escritorio de Claude, y servicios locales.",
|
||||
"xJs1jZ8PoA": "Claude seguirá funcionando en segundo plano aunque cierre la ventana. Haga clic en el icono de Claude que hay en la bandeja del sistema para volver a abrir la app o haga clic derecho para salir.",
|
||||
"xKRKzVVy9c": "Configurar",
|
||||
"xd436TVDRZ": "Se produjo un error al leer o analizar developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "¿Habilitar modo desarrollador?",
|
||||
"ytjMRobdyL": "Actualización disponible",
|
||||
"zAYm/Z684h": "Ayuda",
|
||||
"zCIK9K8J4a": "Error",
|
||||
"zSP70MVzIo": "Borrar atajo"
|
||||
}
|
107
resources/fr-FR.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Taille réelle",
|
||||
"+7sd9hoyZA": "Copier",
|
||||
"/PgA81GVOD": "Modifier",
|
||||
"/bRGKhnXQ6": "Une nouvelle version est disponible. Elle sera téléchargée et installée automatiquement.",
|
||||
"0g8/VVdNuN": "Accédez à claude.ai/settings pour configurer votre profil, votre équipe et plus encore.",
|
||||
"0tZLEYF8mJ": "Développeur",
|
||||
"1HUTYwndT2": "Fenêtre",
|
||||
"1PfZLi/OV7": "Général",
|
||||
"1TJUzU26sO": "Envoyer des commentaires...",
|
||||
"25aCMlTDUq": "Démarrer Claude automatiquement à la connexion",
|
||||
"3ML3xT+gEV": "Rétablir",
|
||||
"3gG1j3kRBX": "Envoyer des commentaires...",
|
||||
"3unrKzH4zB": "Copier",
|
||||
"4qP7MjrQfC": "Variables d'environnement",
|
||||
"5DUIVR3fVi": "À propos...",
|
||||
"6yv8ytK4El": "Vérifiez votre connexion réseau",
|
||||
"7fdcqxofEs": "Quitter",
|
||||
"7gSC+rZzXX": "Accédez rapidement à Claude, où que vous soyez.",
|
||||
"8YQEOfuaGO": "Tout sélectionner",
|
||||
"9+afSO9e/t": "Échec de la vérification des mises à jour : {error}",
|
||||
"9uNxNtcrFI": "Installer",
|
||||
"CZwl8X2D85": "Options avancées",
|
||||
"CizRPROPWo": "Aide Claude",
|
||||
"D43DeqP+2t": "Paramètres de Claude",
|
||||
"D4DyT6MmPy": "Impossible de charger les paramètres de l'application",
|
||||
"DQTgg21B7g": "Afficher l'application",
|
||||
"E9jYTa7AbX": "Zone de notification",
|
||||
"EfdnINFnIz": "Fichier",
|
||||
"GSG5S0ysrR": "Lancer au démarrage",
|
||||
"HeHYq6bbS2": "Claude peut recevoir des informations comme des invites et des pièces jointes depuis des serveurs spécialisés utilisant le Model Context Protocol.",
|
||||
"I5O68ogAtr": "Commencer",
|
||||
"JVwNvMZjVT": "Coller",
|
||||
"KAo3lt5Hv+": "Coller",
|
||||
"Ko/2Ml7mZG": "Actualiser cette page",
|
||||
"L32WRR6NOL": "Supprimer",
|
||||
"L717supPIA": "Paramètres",
|
||||
"LCWUQ/4Fu6": "Afficher",
|
||||
"NZIwKxgxJ+": "Êtes-vous sûr.e de vouloir supprimer le serveur MCP « {serverKey} » ?",
|
||||
"Nmvo1ufAY5": "Impossible de se connecter à Claude",
|
||||
"O3rtEd7aMd": "Rechercher",
|
||||
"ODySlGptaj": "Paramètres...",
|
||||
"PH29MShDiy": "Suivant",
|
||||
"PW5U8NgTto": "Ouvrir le fichier journal MCP...",
|
||||
"PZtcoAOSsa": "Ne pas activer",
|
||||
"PbJ4jR0kv1": "Vous utilisez la dernière version.",
|
||||
"RTg057HE1D": "Afficher les outils de développement",
|
||||
"S3MXlbjkax": "Comment puis-je vous aider aujourd'hui ?",
|
||||
"S3k5yXss2r": "Version {version}",
|
||||
"TH+W2Ad73P": "Couper",
|
||||
"UJCjEVPX6Q": "Rechercher",
|
||||
"Vvus2ifAny": "Modifier la configuration",
|
||||
"W1pELwt/+a": "Claude s’exécute dans la zone de notification.",
|
||||
"WBvq3HlPae": "Définir le raccourci",
|
||||
"WF1HSu0jAC": "Ouvrir le dossier des journaux",
|
||||
"WZe86KSdrM": "Ajouter au dictionnaire",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "Aucune mise à jour disponible",
|
||||
"XZ36+EBE5/": "Zoom arrière",
|
||||
"XinCguXCgN": "En savoir plus",
|
||||
"YTdYCYAf/Z": "Afficher Claude dans la barre de menus",
|
||||
"Z9g5m/V9Nq": "Zoom avant",
|
||||
"ZJZN1+KyJw": "Paramètres...",
|
||||
"aNmxuDcWaU": "Erreur",
|
||||
"aXdFLiVzjd": "Afficher la fenêtre principale",
|
||||
"arbRxbtBkP": "Précédent",
|
||||
"baGq3gy8z1": "Nouvelle conversation",
|
||||
"dKX0bpR+a2": "Quitter",
|
||||
"dLyz0Srosd": "Développeur",
|
||||
"fEeEFfSz4K": "Zoom avant (version alternative)",
|
||||
"fFJxOwJRj2": "Annuler",
|
||||
"fWDSQQgRO5": "Barre de menus",
|
||||
"iFRmqBsr1N": "À propos de Claude",
|
||||
"ilE9e0uxNN": "Actualiser",
|
||||
"j66cdL4EK5": "Ouvrir la documentation",
|
||||
"jd5ZNrRMNP": "Vous êtes une des premières personnes à l’utiliser. Faites-nous part de vos commentaires.",
|
||||
"k+06oXbIas": "Afficher Claude dans la zone de notification",
|
||||
"kYwW0OsI4M": "Claude Desktop est en version bêta.",
|
||||
"m3GfpKD1WX": "Actualiser",
|
||||
"mRXjxhS6p4": "Rechercher des mises à jour…",
|
||||
"ngLpGT7bUJ": "Impossible de charger les paramètres développeur",
|
||||
"oQuOiX24pp": "Quitter",
|
||||
"pWXxZASpOB": "Aide",
|
||||
"pgaCSv2/6H": "Arguments",
|
||||
"q4hs14B00V": "Erreur inconnue",
|
||||
"rNAd+HxSK4": "Ouvrir le fichier journal MCP",
|
||||
"rY99UXvTDU": "Copier l'image",
|
||||
"rdiPpQVqvY": "Le mode développeur permet d’accéder aux outils de développement et aux fonctionnalités de débogage. Cette option doit être activée uniquement si vous savez de quelle manière procéder.",
|
||||
"rwFEudHXey": "Une erreur est survenue lors de la lecture ou de l'analyse de claude_desktop_config.json : {error}",
|
||||
"sNnRQsIEYz": "Rechercher dans la page",
|
||||
"sZxWXq9BzJ": "Donner votre avis",
|
||||
"sys7RHphmL": "Commentaires",
|
||||
"tWutslc/9Z": "Activer",
|
||||
"u1/hT7oRQY": "Raccourci clavier de saisie rapide",
|
||||
"uc3dnSo+eo": "Fichier",
|
||||
"urCd4k/cE0": "Commande",
|
||||
"vgLHPxjh9O": "Activer le mode développeur",
|
||||
"wS64bVG2CO": "MCP est un protocole qui permet d’établir des connexions sécurisées entre les clients, comme l'application Claude Desktop, et les services locaux.",
|
||||
"xJs1jZ8PoA": "Claude continue de fonctionner en arrière-plan, même lorsque vous fermez la fenêtre. Cliquez sur l’icône Claude dans la barre de notification pour rouvrir l’application, ou faites un clic droit pour quitter.",
|
||||
"xKRKzVVy9c": "Configurer",
|
||||
"xd436TVDRZ": "Une erreur est survenue lors de la lecture ou de l'analyse de developer_settings.json : {error}",
|
||||
"y9tCbmRzHN": "Activer le mode développeur ?",
|
||||
"ytjMRobdyL": "Mise à jour disponible",
|
||||
"zAYm/Z684h": "Aide",
|
||||
"zCIK9K8J4a": "Erreur",
|
||||
"zSP70MVzIo": "Effacer le raccourci"
|
||||
}
|
107
resources/hi-IN.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "असल साइज़",
|
||||
"+7sd9hoyZA": "कॉपी करें",
|
||||
"/PgA81GVOD": "बदलाव करें",
|
||||
"/bRGKhnXQ6": "एक नया वर्जन उपलब्ध है. यह अपने आप डाउनलोड और इंस्टॉल किया जाएगा.",
|
||||
"0g8/VVdNuN": "अपनी प्रोफ़ाइल, टीम और भी बहुत कुछ को कॉन्फ़िगर करने के लिए claude.ai/settings पर जाएं.",
|
||||
"0tZLEYF8mJ": "डेवलपर",
|
||||
"1HUTYwndT2": "Window",
|
||||
"1PfZLi/OV7": "सामान्य",
|
||||
"1TJUzU26sO": "फ़ीडबैक सबमिट करें…",
|
||||
"25aCMlTDUq": "लॉग इन करने पर Claude को ऑटोमैटिक तरीके से शुरू करें",
|
||||
"3ML3xT+gEV": "दोबारा करें",
|
||||
"3gG1j3kRBX": "फ़ीडबैक सबमिट करें...",
|
||||
"3unrKzH4zB": "कॉपी करें",
|
||||
"4qP7MjrQfC": "एनवायरनमेंट वेरिएबल्स",
|
||||
"5DUIVR3fVi": "के बारे में...",
|
||||
"6yv8ytK4El": "अपना नेटवर्क कनेक्शन जाँचें",
|
||||
"7fdcqxofEs": "बाहर निकलें",
|
||||
"7gSC+rZzXX": "कहीं से भी Claude को तुरंत खोलें",
|
||||
"8YQEOfuaGO": "सभी को चुनें",
|
||||
"9+afSO9e/t": "अपडेट चेक नहीं किए जा सके: {error}",
|
||||
"9uNxNtcrFI": "इंस्टॉल करें",
|
||||
"CZwl8X2D85": "एडवांस्ड विकल्प",
|
||||
"CizRPROPWo": "क्लॉड सहायता",
|
||||
"D43DeqP+2t": "Claude की सेटिंग्स",
|
||||
"D4DyT6MmPy": "ऐप सेटिंग्स लोड नहीं हो सकीं",
|
||||
"DQTgg21B7g": "ऐप दिखाएं",
|
||||
"E9jYTa7AbX": "सिस्टम ट्रे",
|
||||
"EfdnINFnIz": "फ़ाइल",
|
||||
"GSG5S0ysrR": "स्टार्टअप पर चलाएं",
|
||||
"HeHYq6bbS2": "Claude Model Context Protocol का इस्तेमाल करके ख़ास सर्वर से प्रॉम्प्ट और अटैचमेंट जैसी जानकारी हासिल कर सकता है.",
|
||||
"I5O68ogAtr": "शुरू करें",
|
||||
"JVwNvMZjVT": "पेस्ट करें",
|
||||
"KAo3lt5Hv+": "पेस्ट करें",
|
||||
"Ko/2Ml7mZG": "यह पेज रीलोड करें",
|
||||
"L32WRR6NOL": "डिलीट करें",
|
||||
"L717supPIA": "सेटिंग्स",
|
||||
"LCWUQ/4Fu6": "देखें",
|
||||
"NZIwKxgxJ+": "क्या आप वाकई MCP सर्वर \"{serverKey}\" को हटाना चाहते हैं?",
|
||||
"Nmvo1ufAY5": "क्लॉड से कनेक्ट नहीं हो सका",
|
||||
"O3rtEd7aMd": "खोजें",
|
||||
"ODySlGptaj": "सेटिंग्स…",
|
||||
"PH29MShDiy": "आगे जाएं",
|
||||
"PW5U8NgTto": "MCP लॉग फ़ाइल खोलें...",
|
||||
"PZtcoAOSsa": "एनेबल न करें",
|
||||
"PbJ4jR0kv1": "आप लेटेस्ट वर्जन चला रहे हैं.",
|
||||
"RTg057HE1D": "डेवलपर टूल्स दिखाएं",
|
||||
"S3MXlbjkax": "आज मैं आपकी क्या मदद कर सकता/सकती हूं?",
|
||||
"S3k5yXss2r": "संस्करण {version}",
|
||||
"TH+W2Ad73P": "कट करें",
|
||||
"UJCjEVPX6Q": "खोजें",
|
||||
"Vvus2ifAny": "कॉन्फ़िगरेशन में बदलाव करें",
|
||||
"W1pELwt/+a": "Claude नोटिफ़िकेशन एरिया में चालू रहता है",
|
||||
"WBvq3HlPae": "शॉर्टकट सेट करें",
|
||||
"WF1HSu0jAC": "लॉग फ़ोल्डर खोलें",
|
||||
"WZe86KSdrM": "शब्दकोश में जोड़ें",
|
||||
"WlhIx7DfFO": "ठीक है",
|
||||
"XPIoFTkh3e": "कोई अपडेट उपलब्ध नहीं है",
|
||||
"XZ36+EBE5/": "ज़ूम आउट करें",
|
||||
"XinCguXCgN": "ज़्यादा जानें",
|
||||
"YTdYCYAf/Z": "मेन्यू बार में क्लॉड दिखाएं",
|
||||
"Z9g5m/V9Nq": "ज़ूम इन करें",
|
||||
"ZJZN1+KyJw": "सेटिंग्स...",
|
||||
"aNmxuDcWaU": "एरर",
|
||||
"aXdFLiVzjd": "मुख्य विंडो दिखाएं",
|
||||
"arbRxbtBkP": "वापस जाएं",
|
||||
"baGq3gy8z1": "नई बातचीत",
|
||||
"dKX0bpR+a2": "छोड़ें",
|
||||
"dLyz0Srosd": "डेवलपर",
|
||||
"fEeEFfSz4K": "ज़ूम इन करें (इंडी कूलर वर्जन)",
|
||||
"fFJxOwJRj2": "वापस पहले जैसा करें",
|
||||
"fWDSQQgRO5": "मेनू पट्टी",
|
||||
"iFRmqBsr1N": "क्लॉड के बारे में",
|
||||
"ilE9e0uxNN": "रीफ्रेश करें",
|
||||
"j66cdL4EK5": "डॉक्यूमेंटेशन खोलें",
|
||||
"jd5ZNrRMNP": "आप एक शुरुआती एक्सप्लोरर हैं, इसलिए हमें अपना फ़ीडबैक जानने दें.",
|
||||
"k+06oXbIas": "क्लॉड को सूचना क्षेत्र में दिखाएं",
|
||||
"kYwW0OsI4M": "Claude डेस्कटॉप बीटा में है.",
|
||||
"m3GfpKD1WX": "दोबारा लोड करें",
|
||||
"mRXjxhS6p4": "अपडेट के लिए चेक करें…",
|
||||
"ngLpGT7bUJ": "डेवलपर सेटिंग्स लोड नहीं हो सकीं",
|
||||
"oQuOiX24pp": "छोड़ें",
|
||||
"pWXxZASpOB": "सहायता",
|
||||
"pgaCSv2/6H": "आर्ग्यूमेंट्स",
|
||||
"q4hs14B00V": "अज्ञात त्रुटि",
|
||||
"rNAd+HxSK4": "MCP लॉग फ़ाइल खोलें",
|
||||
"rY99UXvTDU": "इमेज कॉपी करें",
|
||||
"rdiPpQVqvY": "डेवलपर मोड डेवलपर टूल्स और डिबगिंग फ़ीचर्स का एक्सेस देता है. इसे सिर्फ़ तभी एनेबल करें जब आप जानते हों कि आप क्या कर रहे हैं.",
|
||||
"rwFEudHXey": "claude_desktop_config.json को पढ़ने या पार्स करने में एरर हुआ: {error}",
|
||||
"sNnRQsIEYz": "पेज में खोजें",
|
||||
"sZxWXq9BzJ": "फ़ीडबैक दें",
|
||||
"sys7RHphmL": "प्रतिक्रिया",
|
||||
"tWutslc/9Z": "एनेबल करें",
|
||||
"u1/hT7oRQY": "क्विक एंट्री कीबोर्ड शॉर्टकट",
|
||||
"uc3dnSo+eo": "फ़ाइल",
|
||||
"urCd4k/cE0": "कमांड",
|
||||
"vgLHPxjh9O": "डेवलपर मोड एनेबल करें",
|
||||
"wS64bVG2CO": "MCP एक प्रोटोकॉल है जो क्लाइंट्स जैसे कि Claude डेस्कटॉप ऐप और लोकल सर्विस के बीच सुरक्षित कनेक्शन को एनेबल करता है.",
|
||||
"xJs1jZ8PoA": "आपके ज़रिए विंडो बंद करने पर भी Claude बैकग्राउंड में चलता रहता है. ऐप को दोबारा खोलने के लिए ट्रे में Claude आइकन पर क्लिक करें, या छोड़ने के लिए राइट-क्लिक करें.",
|
||||
"xKRKzVVy9c": "कॉन्फ़िगर करें",
|
||||
"xd436TVDRZ": "developer_settings.json को पढ़ने या पार्स करने में एरर हुआ: {error}",
|
||||
"y9tCbmRzHN": "डेवलपर मोड एनेबल करें?",
|
||||
"ytjMRobdyL": "अपडेट उपलब्ध है",
|
||||
"zAYm/Z684h": "सहायता",
|
||||
"zCIK9K8J4a": "एरर",
|
||||
"zSP70MVzIo": "शॉर्टकट क्लियर करें"
|
||||
}
|
107
resources/id-ID.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Ukuran Sebenarnya",
|
||||
"+7sd9hoyZA": "Salin",
|
||||
"/PgA81GVOD": "Edit",
|
||||
"/bRGKhnXQ6": "Versi baru tersedia. Versi ini akan diunduh dan diinstal secara otomatis.",
|
||||
"0g8/VVdNuN": "Buka claude.ai/settings untuk mengatur profil, tim, dan lainnya.",
|
||||
"0tZLEYF8mJ": "Pengembang",
|
||||
"1HUTYwndT2": "Jendela",
|
||||
"1PfZLi/OV7": "Umum",
|
||||
"1TJUzU26sO": "Kirim Masukan…",
|
||||
"25aCMlTDUq": "Jalankan Claude secara otomatis saat Anda masuk",
|
||||
"3ML3xT+gEV": "Ulangi",
|
||||
"3gG1j3kRBX": "Kirim Masukan...",
|
||||
"3unrKzH4zB": "Salin",
|
||||
"4qP7MjrQfC": "Variabel lingkungan",
|
||||
"5DUIVR3fVi": "Tentang...",
|
||||
"6yv8ytK4El": "Periksa koneksi jaringan Anda",
|
||||
"7fdcqxofEs": "Keluar",
|
||||
"7gSC+rZzXX": "Buka Claude dengan cepat dari mana saja",
|
||||
"8YQEOfuaGO": "Pilih Semua",
|
||||
"9+afSO9e/t": "Gagal memeriksa pembaruan: {error}",
|
||||
"9uNxNtcrFI": "Instal",
|
||||
"CZwl8X2D85": "Opsi lanjutan",
|
||||
"CizRPROPWo": "Bantuan Claude",
|
||||
"D43DeqP+2t": "Pengaturan Claude",
|
||||
"D4DyT6MmPy": "Tidak dapat memuat pengaturan aplikasi",
|
||||
"DQTgg21B7g": "Tampilkan Aplikasi",
|
||||
"E9jYTa7AbX": "Baki Sistem",
|
||||
"EfdnINFnIz": "File",
|
||||
"GSG5S0ysrR": "Jalankan saat Startup",
|
||||
"HeHYq6bbS2": "Claude dapat menerima informasi seperti prompt dan lampiran dari server khusus menggunakan Model Context Protocol.",
|
||||
"I5O68ogAtr": "Mulai",
|
||||
"JVwNvMZjVT": "Tempel",
|
||||
"KAo3lt5Hv+": "Tempel",
|
||||
"Ko/2Ml7mZG": "Muat Ulang Halaman Ini",
|
||||
"L32WRR6NOL": "Hapus",
|
||||
"L717supPIA": "Pengaturan",
|
||||
"LCWUQ/4Fu6": "Lihat",
|
||||
"NZIwKxgxJ+": "Anda yakin ingin menghapus server MCP \"{serverKey}\"?",
|
||||
"Nmvo1ufAY5": "Tidak dapat terhubung ke Claude",
|
||||
"O3rtEd7aMd": "Temukan",
|
||||
"ODySlGptaj": "Pengaturan…",
|
||||
"PH29MShDiy": "Maju",
|
||||
"PW5U8NgTto": "Buka File Log MCP...",
|
||||
"PZtcoAOSsa": "Jangan Aktifkan",
|
||||
"PbJ4jR0kv1": "Anda menggunakan versi terbaru.",
|
||||
"RTg057HE1D": "Tampilkan Dev Tools",
|
||||
"S3MXlbjkax": "Apa yang bisa saya bantu hari ini?",
|
||||
"S3k5yXss2r": "Versi {version}",
|
||||
"TH+W2Ad73P": "Potong",
|
||||
"UJCjEVPX6Q": "Cari",
|
||||
"Vvus2ifAny": "Edit Konfig",
|
||||
"W1pELwt/+a": "Claude berjalan di Area Notifikasi",
|
||||
"WBvq3HlPae": "Atur pintasan",
|
||||
"WF1HSu0jAC": "Buka Folder Log",
|
||||
"WZe86KSdrM": "Tambahkan ke kamus",
|
||||
"WlhIx7DfFO": "OKE",
|
||||
"XPIoFTkh3e": "Tidak Ada Pembaruan",
|
||||
"XZ36+EBE5/": "Perkecil",
|
||||
"XinCguXCgN": "Pelajari lebih lanjut",
|
||||
"YTdYCYAf/Z": "Tampilkan Claude di bilah menu",
|
||||
"Z9g5m/V9Nq": "Perbesar",
|
||||
"ZJZN1+KyJw": "Pengaturan...",
|
||||
"aNmxuDcWaU": "Kesalahan",
|
||||
"aXdFLiVzjd": "Tampilkan Jendela Utama",
|
||||
"arbRxbtBkP": "Kembali",
|
||||
"baGq3gy8z1": "Percakapan Baru",
|
||||
"dKX0bpR+a2": "Keluar",
|
||||
"dLyz0Srosd": "Pengembang",
|
||||
"fEeEFfSz4K": "Perbesar (versi alternatif)",
|
||||
"fFJxOwJRj2": "Batalkan",
|
||||
"fWDSQQgRO5": "Bilah Menu",
|
||||
"iFRmqBsr1N": "Tentang Claude",
|
||||
"ilE9e0uxNN": "Segarkan",
|
||||
"j66cdL4EK5": "Buka Dokumentasi",
|
||||
"jd5ZNrRMNP": "Anda adalah pengguna awal, jadi berikan masukan Anda.",
|
||||
"k+06oXbIas": "Tampilkan Claude di area notifikasi",
|
||||
"kYwW0OsI4M": "Claude Desktop masih dalam tahap beta.",
|
||||
"m3GfpKD1WX": "Muat Ulang",
|
||||
"mRXjxhS6p4": "Periksa Pembaruan…",
|
||||
"ngLpGT7bUJ": "Tidak dapat memuat pengaturan pengembang",
|
||||
"oQuOiX24pp": "Keluar",
|
||||
"pWXxZASpOB": "Bantuan",
|
||||
"pgaCSv2/6H": "Argumentasi",
|
||||
"q4hs14B00V": "Kesalahan tidak dikenal",
|
||||
"rNAd+HxSK4": "Buka File Log MCP",
|
||||
"rY99UXvTDU": "Salin Gambar",
|
||||
"rdiPpQVqvY": "Mode pengembang memberikan akses ke alat pengembang dan fitur debug. Aktifkan ini hanya jika Anda memahami apa yang Anda lakukan.",
|
||||
"rwFEudHXey": "Terjadi kesalahan saat membaca atau mengurai claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Temukan di halaman",
|
||||
"sZxWXq9BzJ": "Berikan masukan",
|
||||
"sys7RHphmL": "Umpan Balik",
|
||||
"tWutslc/9Z": "Aktifkan",
|
||||
"u1/hT7oRQY": "Pintasan Keyboard Akses Cepat",
|
||||
"uc3dnSo+eo": "File",
|
||||
"urCd4k/cE0": "Perintah",
|
||||
"vgLHPxjh9O": "Aktifkan Mode Pengembang",
|
||||
"wS64bVG2CO": "MCP adalah protokol yang memungkinkan koneksi aman di antara klien, seperti aplikasi Claude Desktop dan layanan lokal.",
|
||||
"xJs1jZ8PoA": "Claude tetap berjalan di latar belakang meskipun Anda menutup jendela. Klik ikon Claude di baki sistem untuk membuka kembali aplikasi, atau klik kanan untuk keluar.",
|
||||
"xKRKzVVy9c": "Konfigurasi",
|
||||
"xd436TVDRZ": "Terjadi kesalahan saat membaca atau mengurai developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "Aktifkan Mode Pengembang?",
|
||||
"ytjMRobdyL": "Pembaruan Tersedia",
|
||||
"zAYm/Z684h": "Bantuan",
|
||||
"zCIK9K8J4a": "Kesalahan",
|
||||
"zSP70MVzIo": "Hapus pintasan"
|
||||
}
|
107
resources/it-IT.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Dimensioni reali",
|
||||
"+7sd9hoyZA": "Copia",
|
||||
"/PgA81GVOD": "Modifica",
|
||||
"/bRGKhnXQ6": "È disponibile una nuova versione. Verrà scaricata e installata automaticamente.",
|
||||
"0g8/VVdNuN": "Vai su claude.ai/impostazioni per configurare il tuo profilo, il tuo team e altro.",
|
||||
"0tZLEYF8mJ": "Sviluppatori",
|
||||
"1HUTYwndT2": "Finestra",
|
||||
"1PfZLi/OV7": "Generali",
|
||||
"1TJUzU26sO": "Invia feedback…",
|
||||
"25aCMlTDUq": "Avvia automaticamente Claude all'accesso",
|
||||
"3ML3xT+gEV": "Ripeti",
|
||||
"3gG1j3kRBX": "Invia feedback...",
|
||||
"3unrKzH4zB": "Copia",
|
||||
"4qP7MjrQfC": "Variabili d'ambiente",
|
||||
"5DUIVR3fVi": "Informazioni su...",
|
||||
"6yv8ytK4El": "Controlla la connessione di rete",
|
||||
"7fdcqxofEs": "Esci",
|
||||
"7gSC+rZzXX": "Apri rapidamente Claude da qualsiasi posizione",
|
||||
"8YQEOfuaGO": "Seleziona tutto",
|
||||
"9+afSO9e/t": "Impossibile verificare gli aggiornamenti: {error}",
|
||||
"9uNxNtcrFI": "Installa",
|
||||
"CZwl8X2D85": "Opzioni avanzate",
|
||||
"CizRPROPWo": "Guida di Claude",
|
||||
"D43DeqP+2t": "Impostazioni di Claude",
|
||||
"D4DyT6MmPy": "Impossibile caricare le impostazioni dell'applicazione",
|
||||
"DQTgg21B7g": "Mostra app",
|
||||
"E9jYTa7AbX": "Area di notifica",
|
||||
"EfdnINFnIz": "File",
|
||||
"GSG5S0ysrR": "Esegui all'avvio",
|
||||
"HeHYq6bbS2": "Claude può ricevere informazioni come prompt e allegati da server specializzati utilizzando il Model Context Protocol.",
|
||||
"I5O68ogAtr": "Per iniziare",
|
||||
"JVwNvMZjVT": "Incolla",
|
||||
"KAo3lt5Hv+": "Incolla",
|
||||
"Ko/2Ml7mZG": "Ricarica questa pagina",
|
||||
"L32WRR6NOL": "Elimina",
|
||||
"L717supPIA": "Impostazioni",
|
||||
"LCWUQ/4Fu6": "Visualizza",
|
||||
"NZIwKxgxJ+": "Rimuovere il server MCP \"{serverKey}\"?",
|
||||
"Nmvo1ufAY5": "Impossibile connettersi a Claude",
|
||||
"O3rtEd7aMd": "Trova",
|
||||
"ODySlGptaj": "Impostazioni…",
|
||||
"PH29MShDiy": "Avanti",
|
||||
"PW5U8NgTto": "Apri file di log MCP...",
|
||||
"PZtcoAOSsa": "Non attivare",
|
||||
"PbJ4jR0kv1": "Stai utilizzando la versione più recente.",
|
||||
"RTg057HE1D": "Mostra strumenti di sviluppo",
|
||||
"S3MXlbjkax": "Come posso aiutarti oggi?",
|
||||
"S3k5yXss2r": "Versione {version}",
|
||||
"TH+W2Ad73P": "Taglia",
|
||||
"UJCjEVPX6Q": "Cerca",
|
||||
"Vvus2ifAny": "Modifica configurazione",
|
||||
"W1pELwt/+a": "Claude è in esecuzione nell'Area notifiche",
|
||||
"WBvq3HlPae": "Imposta scorciatoia",
|
||||
"WF1HSu0jAC": "Apri cartella di log",
|
||||
"WZe86KSdrM": "Aggiungi al dizionario",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "Nessun aggiornamento disponibile",
|
||||
"XZ36+EBE5/": "Riduci",
|
||||
"XinCguXCgN": "Scopri di più",
|
||||
"YTdYCYAf/Z": "Mostra Claude nella barra del menu",
|
||||
"Z9g5m/V9Nq": "Ingrandisci",
|
||||
"ZJZN1+KyJw": "Impostazioni...",
|
||||
"aNmxuDcWaU": "Errore",
|
||||
"aXdFLiVzjd": "Mostra finestra principale",
|
||||
"arbRxbtBkP": "Indietro",
|
||||
"baGq3gy8z1": "Nuova conversazione",
|
||||
"dKX0bpR+a2": "Esci",
|
||||
"dLyz0Srosd": "Sviluppatori",
|
||||
"fEeEFfSz4K": "Ingrandisci (versione indie e trendy)",
|
||||
"fFJxOwJRj2": "Annulla",
|
||||
"fWDSQQgRO5": "Barra del menu",
|
||||
"iFRmqBsr1N": "Informazioni su Claude",
|
||||
"ilE9e0uxNN": "Aggiorna",
|
||||
"j66cdL4EK5": "Apri documentazione",
|
||||
"jd5ZNrRMNP": "Sei tra i primi utenti, facci sapere cosa ne pensi.",
|
||||
"k+06oXbIas": "Mostra Claude nell'area di notifica",
|
||||
"kYwW0OsI4M": "Claude Desktop è in versione Beta.",
|
||||
"m3GfpKD1WX": "Ricarica",
|
||||
"mRXjxhS6p4": "Cerca aggiornamenti…",
|
||||
"ngLpGT7bUJ": "Impossibile caricare le impostazioni per sviluppatori",
|
||||
"oQuOiX24pp": "Esci",
|
||||
"pWXxZASpOB": "Aiuto",
|
||||
"pgaCSv2/6H": "Argomenti",
|
||||
"q4hs14B00V": "Errore sconosciuto",
|
||||
"rNAd+HxSK4": "Apri file di log MCP",
|
||||
"rY99UXvTDU": "Copia immagine",
|
||||
"rdiPpQVqvY": "La modalità per sviluppatori consente l'accesso agli strumenti di sviluppo e alle funzionalità di debug. Attivala solo se sai quello che fai.",
|
||||
"rwFEudHXey": "Si è verificato un errore durante la lettura o l'analisi di claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Trova nella pagina",
|
||||
"sZxWXq9BzJ": "Invia feedback",
|
||||
"sys7RHphmL": "Feedback",
|
||||
"tWutslc/9Z": "Attiva",
|
||||
"u1/hT7oRQY": "Scorciatoia da tastiera per accesso rapido",
|
||||
"uc3dnSo+eo": "File",
|
||||
"urCd4k/cE0": "Comando",
|
||||
"vgLHPxjh9O": "Abilita modalità per sviluppatori",
|
||||
"wS64bVG2CO": "MCP è un protocollo che permette connessioni sicure tra i client come l'app desktop Claude, e i servizi locali.",
|
||||
"xJs1jZ8PoA": "Claude continua a funzionare in background anche quando chiudi la finestra. Fai clic sull'icona di Claude nella barra delle applicazioni per riaprire l'app o fai clic con il tasto destro del mouse per uscire.",
|
||||
"xKRKzVVy9c": "Configura",
|
||||
"xd436TVDRZ": "Si è verificato un errore durante la lettura o l'analisi di developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "Attivare la modalità per sviluppatori?",
|
||||
"ytjMRobdyL": "Aggiornamento disponibile",
|
||||
"zAYm/Z684h": "Guida",
|
||||
"zCIK9K8J4a": "Errore",
|
||||
"zSP70MVzIo": "Elimina scorciatoia"
|
||||
}
|
107
resources/ja-JP.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "実際のサイズ",
|
||||
"+7sd9hoyZA": "コピー",
|
||||
"/PgA81GVOD": "編集",
|
||||
"/bRGKhnXQ6": "新しいバージョンを利用可能です。自動的にダウンロード、インストールされます。",
|
||||
"0g8/VVdNuN": "プロフィール、チームなどの構成は claude.ai/settings で行えます。",
|
||||
"0tZLEYF8mJ": "開発者",
|
||||
"1HUTYwndT2": "ウィンドウ",
|
||||
"1PfZLi/OV7": "一般",
|
||||
"1TJUzU26sO": "フィードバックを送信…",
|
||||
"25aCMlTDUq": "ログイン時にクロードを自動的に起動します",
|
||||
"3ML3xT+gEV": "やり直し",
|
||||
"3gG1j3kRBX": "フィードバックを送信…",
|
||||
"3unrKzH4zB": "コピー",
|
||||
"4qP7MjrQfC": "環境変数",
|
||||
"5DUIVR3fVi": "バージョン情報...",
|
||||
"6yv8ytK4El": "ネットワーク接続をご確認ください。",
|
||||
"7fdcqxofEs": "終了",
|
||||
"7gSC+rZzXX": "どこからでもクロードをすばやく起動できます",
|
||||
"8YQEOfuaGO": "すべて選択",
|
||||
"9+afSO9e/t": "アップデートの確認に失敗しました:{error}",
|
||||
"9uNxNtcrFI": "インストール",
|
||||
"CZwl8X2D85": "詳細オプション",
|
||||
"CizRPROPWo": "Claude ヘルプ",
|
||||
"D43DeqP+2t": "クロード設定",
|
||||
"D4DyT6MmPy": "アプリ設定を読み込めませんでした",
|
||||
"DQTgg21B7g": "アプリを表示",
|
||||
"E9jYTa7AbX": "システムトレイ",
|
||||
"EfdnINFnIz": "ファイル",
|
||||
"GSG5S0ysrR": "起動時に実行",
|
||||
"HeHYq6bbS2": "クロードはModel Context Protocolを使用して、専用サーバーからプロンプトや添付ファイルなどの情報を受け取ることができます。",
|
||||
"I5O68ogAtr": "はじめる",
|
||||
"JVwNvMZjVT": "貼り付け",
|
||||
"KAo3lt5Hv+": "貼り付け",
|
||||
"Ko/2Ml7mZG": "このページを再読み込み",
|
||||
"L32WRR6NOL": "削除",
|
||||
"L717supPIA": "設定",
|
||||
"LCWUQ/4Fu6": "表示",
|
||||
"NZIwKxgxJ+": "MCPサーバー「{serverKey}」を削除してもよろしいですか?",
|
||||
"Nmvo1ufAY5": "Claudeに接続できませんでした。",
|
||||
"O3rtEd7aMd": "検索",
|
||||
"ODySlGptaj": "設定…",
|
||||
"PH29MShDiy": "進む",
|
||||
"PW5U8NgTto": "MCP ログファイルを開く...",
|
||||
"PZtcoAOSsa": "有効にしない",
|
||||
"PbJ4jR0kv1": "最新バージョンを使用中です。",
|
||||
"RTg057HE1D": "開発者ツールを表示",
|
||||
"S3MXlbjkax": "本日はどのようなことでお手伝いできますでしょうか?",
|
||||
"S3k5yXss2r": "バージョン {version}",
|
||||
"TH+W2Ad73P": "切り取り",
|
||||
"UJCjEVPX6Q": "検索",
|
||||
"Vvus2ifAny": "構成を編集",
|
||||
"W1pELwt/+a": "クロードは通知領域で実行中です",
|
||||
"WBvq3HlPae": "ショートカットを設定",
|
||||
"WF1HSu0jAC": "ログフォルダを開く",
|
||||
"WZe86KSdrM": "辞書に追加",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "アップデートはありません",
|
||||
"XZ36+EBE5/": "縮小",
|
||||
"XinCguXCgN": "詳細はこちら",
|
||||
"YTdYCYAf/Z": "メニューバーにクロードを表示する",
|
||||
"Z9g5m/V9Nq": "拡大",
|
||||
"ZJZN1+KyJw": "設定…",
|
||||
"aNmxuDcWaU": "エラー",
|
||||
"aXdFLiVzjd": "メインウィンドウを表示",
|
||||
"arbRxbtBkP": "戻る",
|
||||
"baGq3gy8z1": "新規会話",
|
||||
"dKX0bpR+a2": "終了",
|
||||
"dLyz0Srosd": "開発者",
|
||||
"fEeEFfSz4K": "拡大(別バージョン)",
|
||||
"fFJxOwJRj2": "元に戻す",
|
||||
"fWDSQQgRO5": "メニューバー",
|
||||
"iFRmqBsr1N": "Claude について",
|
||||
"ilE9e0uxNN": "更新",
|
||||
"j66cdL4EK5": "ドキュメントを開く",
|
||||
"jd5ZNrRMNP": "トライアルの初期参加者として、フィードバックをぜひご提供ください。",
|
||||
"k+06oXbIas": "通知領域にClaudeを表示する",
|
||||
"kYwW0OsI4M": "クロード デスクトップはベータ版です。",
|
||||
"m3GfpKD1WX": "再読み込み",
|
||||
"mRXjxhS6p4": "アップデートを確認...",
|
||||
"ngLpGT7bUJ": "開発者設定を読み込めませんでした",
|
||||
"oQuOiX24pp": "終了",
|
||||
"pWXxZASpOB": "ヘルプ",
|
||||
"pgaCSv2/6H": "引数",
|
||||
"q4hs14B00V": "不明なエラーが発生しました。",
|
||||
"rNAd+HxSK4": "MCP ログファイルを開く",
|
||||
"rY99UXvTDU": "画像をコピー",
|
||||
"rdiPpQVqvY": "開発者モードでは、開発ツールやデバッグ機能にアクセスできます。関連知識がある場合のみ有効にしてください。",
|
||||
"rwFEudHXey": "claude_desktop_config.json の読み込みまたは解析中にエラーが発生しました:{error}",
|
||||
"sNnRQsIEYz": "ページ内を検索",
|
||||
"sZxWXq9BzJ": "フィードバックを提供",
|
||||
"sys7RHphmL": "フィードバック",
|
||||
"tWutslc/9Z": "有効化",
|
||||
"u1/hT7oRQY": "クイック起動用キーボードショートカット",
|
||||
"uc3dnSo+eo": "ファイル",
|
||||
"urCd4k/cE0": "コマンド",
|
||||
"vgLHPxjh9O": "開発者モードを有効にする",
|
||||
"wS64bVG2CO": "MCPは、クロードデスクトップアプリなどのクライアントとローカルサービス間の安全な接続を可能にするプロトコルです。",
|
||||
"xJs1jZ8PoA": "クロードはウィンドウを閉じてもバックグラウンドで実行され続けます。再表示するにはトレイのクロードアイコンをクリックします。終了するには右クリックします。",
|
||||
"xKRKzVVy9c": "設定",
|
||||
"xd436TVDRZ": "developer_settings.json の読み込みまたは解析中にエラーが発生しました:{error}",
|
||||
"y9tCbmRzHN": "開発者モードを有効にしますか?",
|
||||
"ytjMRobdyL": "アップデートを利用可能",
|
||||
"zAYm/Z684h": "ヘルプ",
|
||||
"zCIK9K8J4a": "エラー",
|
||||
"zSP70MVzIo": "ショートカットを消去"
|
||||
}
|
107
resources/ko-KR.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "실제 크기",
|
||||
"+7sd9hoyZA": "복사",
|
||||
"/PgA81GVOD": "편집",
|
||||
"/bRGKhnXQ6": "업데이트 가능한 새 버전이 있습니다. 자동으로 다운로드 및 설치됩니다.",
|
||||
"0g8/VVdNuN": "프로필, 팀 등을 설정하려면 claude.ai/settings로 이동하세요.",
|
||||
"0tZLEYF8mJ": "개발자",
|
||||
"1HUTYwndT2": "창",
|
||||
"1PfZLi/OV7": "일반",
|
||||
"1TJUzU26sO": "피드백 보내기",
|
||||
"25aCMlTDUq": "로그인 시 Claude 자동 실행",
|
||||
"3ML3xT+gEV": "다시 실행",
|
||||
"3gG1j3kRBX": "피드백 보내기",
|
||||
"3unrKzH4zB": "복사",
|
||||
"4qP7MjrQfC": "환경 변수",
|
||||
"5DUIVR3fVi": "정보...",
|
||||
"6yv8ytK4El": "네트워크 연결을 확인해 주세요",
|
||||
"7fdcqxofEs": "종료",
|
||||
"7gSC+rZzXX": "어디서나 Claude를 빠르게 실행",
|
||||
"8YQEOfuaGO": "모두 선택",
|
||||
"9+afSO9e/t": "업데이트 확인 실패: {error}",
|
||||
"9uNxNtcrFI": "설치",
|
||||
"CZwl8X2D85": "고급 옵션",
|
||||
"CizRPROPWo": "클로드 도움말",
|
||||
"D43DeqP+2t": "Claude 설정",
|
||||
"D4DyT6MmPy": "앱 설정을 불러올 수 없습니다.",
|
||||
"DQTgg21B7g": "앱 표시",
|
||||
"E9jYTa7AbX": "알림 영역",
|
||||
"EfdnINFnIz": "파일",
|
||||
"GSG5S0ysrR": "시작 시 실행",
|
||||
"HeHYq6bbS2": "Claude는 모델 컨텍스트 프로토콜(MCP)을 사용하여 전문 서버로부터 프롬프트 및 첨부 파일과 같은 정보를 받을 수 있습니다.",
|
||||
"I5O68ogAtr": "시작하기",
|
||||
"JVwNvMZjVT": "붙여넣기",
|
||||
"KAo3lt5Hv+": "붙여넣기",
|
||||
"Ko/2Ml7mZG": "페이지 새로 고침",
|
||||
"L32WRR6NOL": "삭제",
|
||||
"L717supPIA": "설정",
|
||||
"LCWUQ/4Fu6": "보기",
|
||||
"NZIwKxgxJ+": "{serverKey}' MCP 서버를 삭제하시겠습니까?",
|
||||
"Nmvo1ufAY5": "Claude에 연결할 수 없습니다",
|
||||
"O3rtEd7aMd": "찾기",
|
||||
"ODySlGptaj": "설정",
|
||||
"PH29MShDiy": "앞으로 가기",
|
||||
"PW5U8NgTto": "MCP 로그 파일 열기",
|
||||
"PZtcoAOSsa": "활성화하지 않음",
|
||||
"PbJ4jR0kv1": "최신 버전을 사용 중입니다.",
|
||||
"RTg057HE1D": "개발자 도구 표시",
|
||||
"S3MXlbjkax": "오늘 무엇을 도와드릴까요?",
|
||||
"S3k5yXss2r": "버전 {version}",
|
||||
"TH+W2Ad73P": "잘라내기",
|
||||
"UJCjEVPX6Q": "검색하기",
|
||||
"Vvus2ifAny": "설정 편집",
|
||||
"W1pELwt/+a": "Claude가 알림 영역에서 실행됩니다.",
|
||||
"WBvq3HlPae": "단축키 설정",
|
||||
"WF1HSu0jAC": "로그 폴더 열기",
|
||||
"WZe86KSdrM": "사전에 추가",
|
||||
"WlhIx7DfFO": "확인",
|
||||
"XPIoFTkh3e": "업데이트 없음",
|
||||
"XZ36+EBE5/": "축소",
|
||||
"XinCguXCgN": "자세히 알아보기",
|
||||
"YTdYCYAf/Z": "메뉴 바에 Claude 표시",
|
||||
"Z9g5m/V9Nq": "확대",
|
||||
"ZJZN1+KyJw": "설정",
|
||||
"aNmxuDcWaU": "오류",
|
||||
"aXdFLiVzjd": "메인 창 표시",
|
||||
"arbRxbtBkP": "뒤로 가기",
|
||||
"baGq3gy8z1": "새 대화",
|
||||
"dKX0bpR+a2": "종료",
|
||||
"dLyz0Srosd": "개발자",
|
||||
"fEeEFfSz4K": "확대('=' 키)",
|
||||
"fFJxOwJRj2": "실행 취소",
|
||||
"fWDSQQgRO5": "메뉴 막대",
|
||||
"iFRmqBsr1N": "Claude 정보",
|
||||
"ilE9e0uxNN": "새로고침",
|
||||
"j66cdL4EK5": "문서 열기",
|
||||
"jd5ZNrRMNP": "베타 버전을 사용해 주셔서 감사합니다. 여러분의 사용 후기를 공유해 주세요.",
|
||||
"k+06oXbIas": "알림 영역에 Claude 표시",
|
||||
"kYwW0OsI4M": "Claude 데스크톱은 베타 버전입니다.",
|
||||
"m3GfpKD1WX": "새로 고침",
|
||||
"mRXjxhS6p4": "업데이트 확인",
|
||||
"ngLpGT7bUJ": "개발자 설정을 불러올 수 없습니다.",
|
||||
"oQuOiX24pp": "종료",
|
||||
"pWXxZASpOB": "도움말",
|
||||
"pgaCSv2/6H": "인수",
|
||||
"q4hs14B00V": "알 수 없는 오류",
|
||||
"rNAd+HxSK4": "MCP 로그 파일 열기",
|
||||
"rY99UXvTDU": "이미지 복사",
|
||||
"rdiPpQVqvY": "개발자 모드를 사용하면 개발자 도구 및 디버깅 기능에 액세스할 수 있습니다. 이 기능을 잘 알고 있는 경우에만 활성화하세요.",
|
||||
"rwFEudHXey": "claude_desktop_config.json 파일을 읽거나 구문 분석하는 중 오류가 발생했습니다. 오류 내용: {error} ",
|
||||
"sNnRQsIEYz": "페이지 내 검색",
|
||||
"sZxWXq9BzJ": "피드백 제공",
|
||||
"sys7RHphmL": "피드백",
|
||||
"tWutslc/9Z": "활성화",
|
||||
"u1/hT7oRQY": "빠른 실행 단축키",
|
||||
"uc3dnSo+eo": "파일",
|
||||
"urCd4k/cE0": "명령어",
|
||||
"vgLHPxjh9O": "개발자 모드 활성화",
|
||||
"wS64bVG2CO": "MCP는 Claude 데스크톱 앱과 같은 클라이언트와 로컬 서비스 간의 보안 연결을 가능하게 하는 프로토콜입니다.",
|
||||
"xJs1jZ8PoA": "Claude는 창을 닫아도 백그라운드에서 실행됩니다. 앱을 다시 열려면 트레이의 Claude 아이콘을 클릭하고 종료하려면 오른쪽 클릭하세요.",
|
||||
"xKRKzVVy9c": "설정",
|
||||
"xd436TVDRZ": "developer_settings.json 파일을 읽거나 구문 분석하는 중 오류가 발생했습니다. 오류 내용: {error}",
|
||||
"y9tCbmRzHN": "개발자 모드를 활성화하시겠습니까?",
|
||||
"ytjMRobdyL": "업데이트 가능",
|
||||
"zAYm/Z684h": "도움말",
|
||||
"zCIK9K8J4a": "오류",
|
||||
"zSP70MVzIo": "단축키 삭제"
|
||||
}
|
107
resources/pt-BR.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"+/cwsayrqk": "Tamanho real",
|
||||
"+7sd9hoyZA": "Copiar",
|
||||
"/PgA81GVOD": "Editar",
|
||||
"/bRGKhnXQ6": "Uma nova versão está disponível. Ela será baixada e instalada automaticamente.",
|
||||
"0g8/VVdNuN": "Acesse claude.ai/settings para configurar seu perfil, equipe e muito mais.",
|
||||
"0tZLEYF8mJ": "Desenvolvedor",
|
||||
"1HUTYwndT2": "Janela",
|
||||
"1PfZLi/OV7": "Geral",
|
||||
"1TJUzU26sO": "Enviar feedback...",
|
||||
"25aCMlTDUq": "Iniciar o Claude automaticamente ao fazer login",
|
||||
"3ML3xT+gEV": "Refazer",
|
||||
"3gG1j3kRBX": "Enviar feedback...",
|
||||
"3unrKzH4zB": "Copiar",
|
||||
"4qP7MjrQfC": "Variáveis de ambiente",
|
||||
"5DUIVR3fVi": "Sobre...",
|
||||
"6yv8ytK4El": "Verifique sua conexão de rede",
|
||||
"7fdcqxofEs": "Sair",
|
||||
"7gSC+rZzXX": "Abra o Claude rapidamente em qualquer lugar",
|
||||
"8YQEOfuaGO": "Selecionar tudo",
|
||||
"9+afSO9e/t": "Falha ao verificar atualizações: {error}",
|
||||
"9uNxNtcrFI": "Instalar",
|
||||
"CZwl8X2D85": "Opções avançadas",
|
||||
"CizRPROPWo": "Ajuda do Claude",
|
||||
"D43DeqP+2t": "Configurações do Claude",
|
||||
"D4DyT6MmPy": "Não foi possível carregar as configurações do aplicativo",
|
||||
"DQTgg21B7g": "Mostrar aplicativo",
|
||||
"E9jYTa7AbX": "Área de Notificação",
|
||||
"EfdnINFnIz": "Arquivo",
|
||||
"GSG5S0ysrR": "Executar ao iniciar",
|
||||
"HeHYq6bbS2": "O Claude usa o Protocolo de Contexto do Modelo para receber informações como instruções e anexos de servidores especializados.",
|
||||
"I5O68ogAtr": "Começar",
|
||||
"JVwNvMZjVT": "Colar",
|
||||
"KAo3lt5Hv+": "Colar",
|
||||
"Ko/2Ml7mZG": "Recarregar página",
|
||||
"L32WRR6NOL": "Apagar",
|
||||
"L717supPIA": "Configurações",
|
||||
"LCWUQ/4Fu6": "Ver",
|
||||
"NZIwKxgxJ+": "Quer mesmo excluir o servidor MCP \"{serverKey}\"?",
|
||||
"Nmvo1ufAY5": "Não foi possível conectar ao Claude",
|
||||
"O3rtEd7aMd": "Localizar",
|
||||
"ODySlGptaj": "Configurações...",
|
||||
"PH29MShDiy": "Avançar",
|
||||
"PW5U8NgTto": "Abrir arquivo de registro do MCP...",
|
||||
"PZtcoAOSsa": "Não ativar",
|
||||
"PbJ4jR0kv1": "Você está na versão mais recente.",
|
||||
"RTg057HE1D": "Mostrar as ferramentas de desenvolvimento",
|
||||
"S3MXlbjkax": "Em que posso ajudar você hoje?",
|
||||
"S3k5yXss2r": "Versão {version}",
|
||||
"TH+W2Ad73P": "Recortar",
|
||||
"UJCjEVPX6Q": "Procurar",
|
||||
"Vvus2ifAny": "Editar configuração",
|
||||
"W1pELwt/+a": "O Claude está em execução na Área de Avisos",
|
||||
"WBvq3HlPae": "Criar atalho",
|
||||
"WF1HSu0jAC": "Abrir pasta de registros",
|
||||
"WZe86KSdrM": "Adicionar ao dicionário",
|
||||
"WlhIx7DfFO": "OK",
|
||||
"XPIoFTkh3e": "Nenhuma atualização disponível",
|
||||
"XZ36+EBE5/": "Afastar",
|
||||
"XinCguXCgN": "Saiba mais",
|
||||
"YTdYCYAf/Z": "Exibir Claude na barra de menu",
|
||||
"Z9g5m/V9Nq": "Aproximar",
|
||||
"ZJZN1+KyJw": "Configurações...",
|
||||
"aNmxuDcWaU": "Erro",
|
||||
"aXdFLiVzjd": "Mostrar janela principal",
|
||||
"arbRxbtBkP": "Voltar",
|
||||
"baGq3gy8z1": "Nova conversa",
|
||||
"dKX0bpR+a2": "Sair",
|
||||
"dLyz0Srosd": "Desenvolvedor",
|
||||
"fEeEFfSz4K": "Aproximar (versão mais legal)",
|
||||
"fFJxOwJRj2": "Desfazer",
|
||||
"fWDSQQgRO5": "Barra de menus",
|
||||
"iFRmqBsr1N": "Sobre o Claude",
|
||||
"ilE9e0uxNN": "Atualizar",
|
||||
"j66cdL4EK5": "Abrir documentação",
|
||||
"jd5ZNrRMNP": "Você é um dos pioneiros; dê seu feedback.",
|
||||
"k+06oXbIas": "Mostrar Claude na área de notificação",
|
||||
"kYwW0OsI4M": "O Claude Desktop está em beta.",
|
||||
"m3GfpKD1WX": "Recarregar",
|
||||
"mRXjxhS6p4": "Checar atualizações...",
|
||||
"ngLpGT7bUJ": "Não foi possível carregar as configurações de desenvolvedor",
|
||||
"oQuOiX24pp": "Sair",
|
||||
"pWXxZASpOB": "Ajuda",
|
||||
"pgaCSv2/6H": "Argumentos",
|
||||
"q4hs14B00V": "Erro desconhecido",
|
||||
"rNAd+HxSK4": "Abrir arquivo de registros do MCP",
|
||||
"rY99UXvTDU": "Copiar Imagem",
|
||||
"rdiPpQVqvY": "O modo desenvolvedor dá acesso a ferramentas de desenvolvimento e recursos de depuração. Ative apenas se você dominar essas áreas.",
|
||||
"rwFEudHXey": "Ocorreu um erro ao ler ou analisar claude_desktop_config.json: {error}",
|
||||
"sNnRQsIEYz": "Localizar na página",
|
||||
"sZxWXq9BzJ": "Dar feedback",
|
||||
"sys7RHphmL": "Feedback",
|
||||
"tWutslc/9Z": "Ativar",
|
||||
"u1/hT7oRQY": "Atalho no teclado para acesso rápido",
|
||||
"uc3dnSo+eo": "Arquivo",
|
||||
"urCd4k/cE0": "Comando",
|
||||
"vgLHPxjh9O": "Ativar modo desenvolvedor",
|
||||
"wS64bVG2CO": "O MCP é um protocolo que dá segurança às conexões entre clientes, como o aplicativo Claude Desktop, e serviços locais.",
|
||||
"xJs1jZ8PoA": "O Claude continua em execução em segundo plano mesmo quando você fecha a janela. Clique no ícone do Claude na bandeja para reabrir o aplicativo ou clique com o botão direito para sair.",
|
||||
"xKRKzVVy9c": "Configurar",
|
||||
"xd436TVDRZ": "Ocorreu um erro ao ler ou analisar developer_settings.json: {error}",
|
||||
"y9tCbmRzHN": "Ativar modo desenvolvedor?",
|
||||
"ytjMRobdyL": "Atualização disponível",
|
||||
"zAYm/Z684h": "Ajuda",
|
||||
"zCIK9K8J4a": "Erro",
|
||||
"zSP70MVzIo": "Limpar atalho"
|
||||
}
|
656
resources/xx-AC.json
Normal file
@ -0,0 +1,656 @@
|
||||
{
|
||||
"+/cwsayrqk": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ACTUAL SIZE"
|
||||
}
|
||||
],
|
||||
"+7sd9hoyZA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COPY"
|
||||
}
|
||||
],
|
||||
"/PgA81GVOD": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "EDIT"
|
||||
}
|
||||
],
|
||||
"/bRGKhnXQ6": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "A NEW VERSION IS AVAILABLE. IT WILL BE DOWNLOADED AND INSTALLED AUTOMATICALLY."
|
||||
}
|
||||
],
|
||||
"0g8/VVdNuN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "GO TO CLAUDE.AI/SETTINGS TO CONFIGURE YOUR PROFILE, TEAM, AND MORE."
|
||||
}
|
||||
],
|
||||
"0tZLEYF8mJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DEVELOPER"
|
||||
}
|
||||
],
|
||||
"1HUTYwndT2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "WINDOW"
|
||||
}
|
||||
],
|
||||
"1PfZLi/OV7": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "GENERAL"
|
||||
}
|
||||
],
|
||||
"1TJUzU26sO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SUBMIT FEEDBACK…"
|
||||
}
|
||||
],
|
||||
"25aCMlTDUq": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "AUTOMATICALLY START CLAUDE WHEN YOU LOG IN"
|
||||
}
|
||||
],
|
||||
"3ML3xT+gEV": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "REDO"
|
||||
}
|
||||
],
|
||||
"3gG1j3kRBX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SUBMIT FEEDBACK..."
|
||||
}
|
||||
],
|
||||
"3unrKzH4zB": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COPY"
|
||||
}
|
||||
],
|
||||
"4qP7MjrQfC": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ENVIRONMENT VARIABLES"
|
||||
}
|
||||
],
|
||||
"5DUIVR3fVi": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ABOUT..."
|
||||
}
|
||||
],
|
||||
"6yv8ytK4El": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CHECK YOUR NETWORK CONNECTION"
|
||||
}
|
||||
],
|
||||
"7fdcqxofEs": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "EXIT"
|
||||
}
|
||||
],
|
||||
"7gSC+rZzXX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "QUICKLY OPEN CLAUDE FROM ANYWHERE"
|
||||
}
|
||||
],
|
||||
"8YQEOfuaGO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SELECT ALL"
|
||||
}
|
||||
],
|
||||
"9+afSO9e/t": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FAILED TO CHECK FOR UPDATES: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"9uNxNtcrFI": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "INSTALL"
|
||||
}
|
||||
],
|
||||
"CZwl8X2D85": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ADVANCED OPTIONS"
|
||||
}
|
||||
],
|
||||
"CizRPROPWo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLAUDE HELP"
|
||||
}
|
||||
],
|
||||
"D43DeqP+2t": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLAUDE SETTINGS"
|
||||
}
|
||||
],
|
||||
"D4DyT6MmPy": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COULD NOT LOAD APP SETTINGS"
|
||||
}
|
||||
],
|
||||
"DQTgg21B7g": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SHOW APP"
|
||||
}
|
||||
],
|
||||
"E9jYTa7AbX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SYSTEM TRAY"
|
||||
}
|
||||
],
|
||||
"EfdnINFnIz": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FILE"
|
||||
}
|
||||
],
|
||||
"GSG5S0ysrR": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "RUN ON STARTUP"
|
||||
}
|
||||
],
|
||||
"HeHYq6bbS2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLAUDE CAN RECEIVE INFORMATION LIKE PROMPTS AND ATTACHMENTS FROM SPECIALIZED SERVERS USING MODEL CONTEXT PROTOCOL."
|
||||
}
|
||||
],
|
||||
"I5O68ogAtr": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "GET STARTED"
|
||||
}
|
||||
],
|
||||
"JVwNvMZjVT": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "PASTE"
|
||||
}
|
||||
],
|
||||
"KAo3lt5Hv+": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "PASTE"
|
||||
}
|
||||
],
|
||||
"Ko/2Ml7mZG": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "RELOAD THIS PAGE"
|
||||
}
|
||||
],
|
||||
"L32WRR6NOL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DELETE"
|
||||
}
|
||||
],
|
||||
"L717supPIA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SETTINGS"
|
||||
}
|
||||
],
|
||||
"LCWUQ/4Fu6": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "VIEW"
|
||||
}
|
||||
],
|
||||
"NZIwKxgxJ+": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ARE YOU SURE YOU WANT TO REMOVE THE MCP SERVER \""
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "serverKey"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "\"?"
|
||||
}
|
||||
],
|
||||
"Nmvo1ufAY5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COULDN'T CONNECT TO CLAUDE"
|
||||
}
|
||||
],
|
||||
"O3rtEd7aMd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FIND"
|
||||
}
|
||||
],
|
||||
"ODySlGptaj": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SETTINGS…"
|
||||
}
|
||||
],
|
||||
"PH29MShDiy": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FORWARD"
|
||||
}
|
||||
],
|
||||
"PW5U8NgTto": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "OPEN MCP LOG FILE..."
|
||||
}
|
||||
],
|
||||
"PZtcoAOSsa": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DON'T ENABLE"
|
||||
}
|
||||
],
|
||||
"PbJ4jR0kv1": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "YOU ARE RUNNING THE LATEST VERSION."
|
||||
}
|
||||
],
|
||||
"RTg057HE1D": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SHOW DEV TOOLS"
|
||||
}
|
||||
],
|
||||
"S3MXlbjkax": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "WHAT CAN I HELP YOU WITH TODAY?"
|
||||
}
|
||||
],
|
||||
"S3k5yXss2r": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "VERSION "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "version"
|
||||
}
|
||||
],
|
||||
"TH+W2Ad73P": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CUT"
|
||||
}
|
||||
],
|
||||
"UJCjEVPX6Q": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "LOOK UP"
|
||||
}
|
||||
],
|
||||
"Vvus2ifAny": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "EDIT CONFIG"
|
||||
}
|
||||
],
|
||||
"W1pELwt/+a": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLAUDE RUNS IN THE NOTIFICATION AREA"
|
||||
}
|
||||
],
|
||||
"WBvq3HlPae": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SET SHORTCUT"
|
||||
}
|
||||
],
|
||||
"WF1HSu0jAC": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "OPEN LOGS FOLDER"
|
||||
}
|
||||
],
|
||||
"WZe86KSdrM": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ADD TO DICTIONARY"
|
||||
}
|
||||
],
|
||||
"WlhIx7DfFO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "OK"
|
||||
}
|
||||
],
|
||||
"XPIoFTkh3e": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "NO UPDATE AVAILABLE"
|
||||
}
|
||||
],
|
||||
"XZ36+EBE5/": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ZOOM OUT"
|
||||
}
|
||||
],
|
||||
"XinCguXCgN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "LEARN MORE"
|
||||
}
|
||||
],
|
||||
"YTdYCYAf/Z": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SHOW CLAUDE IN THE MENU BAR"
|
||||
}
|
||||
],
|
||||
"Z9g5m/V9Nq": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ZOOM IN"
|
||||
}
|
||||
],
|
||||
"ZJZN1+KyJw": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SETTINGS..."
|
||||
}
|
||||
],
|
||||
"aNmxuDcWaU": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ERROR"
|
||||
}
|
||||
],
|
||||
"aXdFLiVzjd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SHOW MAIN WINDOW"
|
||||
}
|
||||
],
|
||||
"arbRxbtBkP": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "BACK"
|
||||
}
|
||||
],
|
||||
"baGq3gy8z1": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "NEW CONVERSATION"
|
||||
}
|
||||
],
|
||||
"dKX0bpR+a2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "QUIT"
|
||||
}
|
||||
],
|
||||
"dLyz0Srosd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DEVELOPER"
|
||||
}
|
||||
],
|
||||
"fEeEFfSz4K": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ZOOM IN (INDIE COOLER VERSION)"
|
||||
}
|
||||
],
|
||||
"fFJxOwJRj2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "UNDO"
|
||||
}
|
||||
],
|
||||
"fWDSQQgRO5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "MENU BAR"
|
||||
}
|
||||
],
|
||||
"iFRmqBsr1N": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ABOUT CLAUDE"
|
||||
}
|
||||
],
|
||||
"ilE9e0uxNN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "REFRESH"
|
||||
}
|
||||
],
|
||||
"j66cdL4EK5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "OPEN DOCUMENTATION"
|
||||
}
|
||||
],
|
||||
"jd5ZNrRMNP": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "YOU'RE AN EARLY EXPLORER, SO LET US KNOW YOUR FEEDBACK."
|
||||
}
|
||||
],
|
||||
"k+06oXbIas": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SHOW CLAUDE IN THE NOTIFICATIONS AREA"
|
||||
}
|
||||
],
|
||||
"kYwW0OsI4M": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLAUDE DESKTOP IS IN BETA."
|
||||
}
|
||||
],
|
||||
"m3GfpKD1WX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "RELOAD"
|
||||
}
|
||||
],
|
||||
"mRXjxhS6p4": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CHECK FOR UPDATES…"
|
||||
}
|
||||
],
|
||||
"ngLpGT7bUJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COULD NOT LOAD DEVELOPER SETTINGS"
|
||||
}
|
||||
],
|
||||
"oQuOiX24pp": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "QUIT"
|
||||
}
|
||||
],
|
||||
"pWXxZASpOB": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "HELP"
|
||||
}
|
||||
],
|
||||
"pgaCSv2/6H": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ARGUMENTS"
|
||||
}
|
||||
],
|
||||
"q4hs14B00V": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "UNKNOWN ERROR"
|
||||
}
|
||||
],
|
||||
"rNAd+HxSK4": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "OPEN MCP LOG FILE"
|
||||
}
|
||||
],
|
||||
"rY99UXvTDU": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COPY IMAGE"
|
||||
}
|
||||
],
|
||||
"rdiPpQVqvY": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DEVELOPER MODE ALLOWS ACCESS TO DEVELOPER TOOLS AND DEBUGGING FEATURES. ONLY ENABLE THIS IF YOU KNOW WHAT YOU'RE DOING."
|
||||
}
|
||||
],
|
||||
"rwFEudHXey": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "THERE WAS AN ERROR READING OR PARSING CLAUDE_DESKTOP_CONFIG.JSON: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"sNnRQsIEYz": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FIND IN PAGE"
|
||||
}
|
||||
],
|
||||
"sZxWXq9BzJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "GIVE FEEDBACK"
|
||||
}
|
||||
],
|
||||
"sys7RHphmL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FEEDBACK"
|
||||
}
|
||||
],
|
||||
"tWutslc/9Z": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ENABLE"
|
||||
}
|
||||
],
|
||||
"u1/hT7oRQY": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "QUICK ENTRY KEYBOARD SHORTCUT"
|
||||
}
|
||||
],
|
||||
"uc3dnSo+eo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FILE"
|
||||
}
|
||||
],
|
||||
"urCd4k/cE0": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "COMMAND"
|
||||
}
|
||||
],
|
||||
"vgLHPxjh9O": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ENABLE DEVELOPER MODE"
|
||||
}
|
||||
],
|
||||
"wS64bVG2CO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "MCP IS A PROTOCOL THAT ENABLES SECURE CONNECTIONS BETWEEN CLIENTS, SUCH AS THE CLAUDE DESKTOP APP, AND LOCAL SERVICES."
|
||||
}
|
||||
],
|
||||
"xJs1jZ8PoA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLAUDE RUNS IN THE BACKGROUND EVEN WHEN YOU CLOSE THE WINDOW. CLICK THE CLAUDE ICON IN THE TRAY TO REOPEN THE APP, OR RIGHT-CLICK TO QUIT."
|
||||
}
|
||||
],
|
||||
"xKRKzVVy9c": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CONFIGURE"
|
||||
}
|
||||
],
|
||||
"xd436TVDRZ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "THERE WAS AN ERROR READING OR PARSING DEVELOPER_SETTINGS.JSON: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"y9tCbmRzHN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ENABLE DEVELOPER MODE?"
|
||||
}
|
||||
],
|
||||
"ytjMRobdyL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "UPDATE AVAILABLE"
|
||||
}
|
||||
],
|
||||
"zAYm/Z684h": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "HELP"
|
||||
}
|
||||
],
|
||||
"zCIK9K8J4a": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ERROR"
|
||||
}
|
||||
],
|
||||
"zSP70MVzIo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CLEAR SHORTCUT"
|
||||
}
|
||||
]
|
||||
}
|
656
resources/xx-HA.json
Normal file
@ -0,0 +1,656 @@
|
||||
{
|
||||
"+/cwsayrqk": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Actual Size"
|
||||
}
|
||||
],
|
||||
"+7sd9hoyZA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Copy"
|
||||
}
|
||||
],
|
||||
"/PgA81GVOD": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Edit"
|
||||
}
|
||||
],
|
||||
"/bRGKhnXQ6": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]A new version is available. It will be downloaded and installed automatically."
|
||||
}
|
||||
],
|
||||
"0g8/VVdNuN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Go to claude.ai/settings to configure your profile, team, and more."
|
||||
}
|
||||
],
|
||||
"0tZLEYF8mJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Developer"
|
||||
}
|
||||
],
|
||||
"1HUTYwndT2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Window"
|
||||
}
|
||||
],
|
||||
"1PfZLi/OV7": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]General"
|
||||
}
|
||||
],
|
||||
"1TJUzU26sO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Submit Feedback…"
|
||||
}
|
||||
],
|
||||
"25aCMlTDUq": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Automatically start Claude when you log in"
|
||||
}
|
||||
],
|
||||
"3ML3xT+gEV": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Redo"
|
||||
}
|
||||
],
|
||||
"3gG1j3kRBX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Submit Feedback..."
|
||||
}
|
||||
],
|
||||
"3unrKzH4zB": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Copy"
|
||||
}
|
||||
],
|
||||
"4qP7MjrQfC": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Environment variables"
|
||||
}
|
||||
],
|
||||
"5DUIVR3fVi": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]About..."
|
||||
}
|
||||
],
|
||||
"6yv8ytK4El": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Check your network connection"
|
||||
}
|
||||
],
|
||||
"7fdcqxofEs": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Exit"
|
||||
}
|
||||
],
|
||||
"7gSC+rZzXX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Quickly open Claude from anywhere"
|
||||
}
|
||||
],
|
||||
"8YQEOfuaGO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Select All"
|
||||
}
|
||||
],
|
||||
"9+afSO9e/t": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Failed to check for updates: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"9uNxNtcrFI": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Install"
|
||||
}
|
||||
],
|
||||
"CZwl8X2D85": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Advanced options"
|
||||
}
|
||||
],
|
||||
"CizRPROPWo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Claude Help"
|
||||
}
|
||||
],
|
||||
"D43DeqP+2t": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Claude Settings"
|
||||
}
|
||||
],
|
||||
"D4DyT6MmPy": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Could not load app settings"
|
||||
}
|
||||
],
|
||||
"DQTgg21B7g": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Show App"
|
||||
}
|
||||
],
|
||||
"E9jYTa7AbX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]System Tray"
|
||||
}
|
||||
],
|
||||
"EfdnINFnIz": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]File"
|
||||
}
|
||||
],
|
||||
"GSG5S0ysrR": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Run on Startup"
|
||||
}
|
||||
],
|
||||
"HeHYq6bbS2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Claude can receive information like prompts and attachments from specialized servers using Model Context Protocol."
|
||||
}
|
||||
],
|
||||
"I5O68ogAtr": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Get Started"
|
||||
}
|
||||
],
|
||||
"JVwNvMZjVT": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Paste"
|
||||
}
|
||||
],
|
||||
"KAo3lt5Hv+": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Paste"
|
||||
}
|
||||
],
|
||||
"Ko/2Ml7mZG": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Reload This Page"
|
||||
}
|
||||
],
|
||||
"L32WRR6NOL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Delete"
|
||||
}
|
||||
],
|
||||
"L717supPIA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Settings"
|
||||
}
|
||||
],
|
||||
"LCWUQ/4Fu6": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]View"
|
||||
}
|
||||
],
|
||||
"NZIwKxgxJ+": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Are you sure you want to remove the MCP server \""
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "serverKey"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "\"?"
|
||||
}
|
||||
],
|
||||
"Nmvo1ufAY5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Couldn't connect to Claude"
|
||||
}
|
||||
],
|
||||
"O3rtEd7aMd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Find"
|
||||
}
|
||||
],
|
||||
"ODySlGptaj": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Settings…"
|
||||
}
|
||||
],
|
||||
"PH29MShDiy": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Forward"
|
||||
}
|
||||
],
|
||||
"PW5U8NgTto": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Open MCP Log File..."
|
||||
}
|
||||
],
|
||||
"PZtcoAOSsa": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Don't Enable"
|
||||
}
|
||||
],
|
||||
"PbJ4jR0kv1": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]You are running the latest version."
|
||||
}
|
||||
],
|
||||
"RTg057HE1D": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Show Dev Tools"
|
||||
}
|
||||
],
|
||||
"S3MXlbjkax": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]What can I help you with today?"
|
||||
}
|
||||
],
|
||||
"S3k5yXss2r": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Version "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "version"
|
||||
}
|
||||
],
|
||||
"TH+W2Ad73P": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Cut"
|
||||
}
|
||||
],
|
||||
"UJCjEVPX6Q": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Look Up"
|
||||
}
|
||||
],
|
||||
"Vvus2ifAny": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Edit Config"
|
||||
}
|
||||
],
|
||||
"W1pELwt/+a": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Claude runs in the Notification Area"
|
||||
}
|
||||
],
|
||||
"WBvq3HlPae": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Set shortcut"
|
||||
}
|
||||
],
|
||||
"WF1HSu0jAC": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Open Logs Folder"
|
||||
}
|
||||
],
|
||||
"WZe86KSdrM": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Add to dictionary"
|
||||
}
|
||||
],
|
||||
"WlhIx7DfFO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]OK"
|
||||
}
|
||||
],
|
||||
"XPIoFTkh3e": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]No Update Available"
|
||||
}
|
||||
],
|
||||
"XZ36+EBE5/": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Zoom Out"
|
||||
}
|
||||
],
|
||||
"XinCguXCgN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Learn more"
|
||||
}
|
||||
],
|
||||
"YTdYCYAf/Z": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Show Claude in the menu bar"
|
||||
}
|
||||
],
|
||||
"Z9g5m/V9Nq": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Zoom In"
|
||||
}
|
||||
],
|
||||
"ZJZN1+KyJw": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Settings..."
|
||||
}
|
||||
],
|
||||
"aNmxuDcWaU": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Error"
|
||||
}
|
||||
],
|
||||
"aXdFLiVzjd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Show Main Window"
|
||||
}
|
||||
],
|
||||
"arbRxbtBkP": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Back"
|
||||
}
|
||||
],
|
||||
"baGq3gy8z1": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]New Conversation"
|
||||
}
|
||||
],
|
||||
"dKX0bpR+a2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Quit"
|
||||
}
|
||||
],
|
||||
"dLyz0Srosd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Developer"
|
||||
}
|
||||
],
|
||||
"fEeEFfSz4K": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Zoom In (indie cooler version)"
|
||||
}
|
||||
],
|
||||
"fFJxOwJRj2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Undo"
|
||||
}
|
||||
],
|
||||
"fWDSQQgRO5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Menu Bar"
|
||||
}
|
||||
],
|
||||
"iFRmqBsr1N": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]About Claude"
|
||||
}
|
||||
],
|
||||
"ilE9e0uxNN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Refresh"
|
||||
}
|
||||
],
|
||||
"j66cdL4EK5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Open Documentation"
|
||||
}
|
||||
],
|
||||
"jd5ZNrRMNP": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]You're an early explorer, so let us know your feedback."
|
||||
}
|
||||
],
|
||||
"k+06oXbIas": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Show Claude in the notifications area"
|
||||
}
|
||||
],
|
||||
"kYwW0OsI4M": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Claude Desktop is in beta."
|
||||
}
|
||||
],
|
||||
"m3GfpKD1WX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Reload"
|
||||
}
|
||||
],
|
||||
"mRXjxhS6p4": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Check for Updates…"
|
||||
}
|
||||
],
|
||||
"ngLpGT7bUJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Could not load developer settings"
|
||||
}
|
||||
],
|
||||
"oQuOiX24pp": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Quit"
|
||||
}
|
||||
],
|
||||
"pWXxZASpOB": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Help"
|
||||
}
|
||||
],
|
||||
"pgaCSv2/6H": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Arguments"
|
||||
}
|
||||
],
|
||||
"q4hs14B00V": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Unknown error"
|
||||
}
|
||||
],
|
||||
"rNAd+HxSK4": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Open MCP Log File"
|
||||
}
|
||||
],
|
||||
"rY99UXvTDU": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Copy Image"
|
||||
}
|
||||
],
|
||||
"rdiPpQVqvY": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Developer mode allows access to developer tools and debugging features. Only enable this if you know what you're doing."
|
||||
}
|
||||
],
|
||||
"rwFEudHXey": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]There was an error reading or parsing claude_desktop_config.json: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"sNnRQsIEYz": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Find in page"
|
||||
}
|
||||
],
|
||||
"sZxWXq9BzJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Give feedback"
|
||||
}
|
||||
],
|
||||
"sys7RHphmL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Feedback"
|
||||
}
|
||||
],
|
||||
"tWutslc/9Z": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Enable"
|
||||
}
|
||||
],
|
||||
"u1/hT7oRQY": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Quick Entry Keyboard Shortcut"
|
||||
}
|
||||
],
|
||||
"uc3dnSo+eo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]File"
|
||||
}
|
||||
],
|
||||
"urCd4k/cE0": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Command"
|
||||
}
|
||||
],
|
||||
"vgLHPxjh9O": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Enable Developer Mode"
|
||||
}
|
||||
],
|
||||
"wS64bVG2CO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]MCP is a protocol that enables secure connections between clients, such as the Claude Desktop app, and local services."
|
||||
}
|
||||
],
|
||||
"xJs1jZ8PoA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Claude runs in the background even when you close the window. Click the Claude icon in the tray to reopen the app, or right-click to quit."
|
||||
}
|
||||
],
|
||||
"xKRKzVVy9c": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Configure"
|
||||
}
|
||||
],
|
||||
"xd436TVDRZ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]There was an error reading or parsing developer_settings.json: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
}
|
||||
],
|
||||
"y9tCbmRzHN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Enable Developer Mode?"
|
||||
}
|
||||
],
|
||||
"ytjMRobdyL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Update Available"
|
||||
}
|
||||
],
|
||||
"zAYm/Z684h": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Help"
|
||||
}
|
||||
],
|
||||
"zCIK9K8J4a": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Error"
|
||||
}
|
||||
],
|
||||
"zSP70MVzIo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "[javascript]Clear shortcut"
|
||||
}
|
||||
]
|
||||
}
|
672
resources/xx-LS.json
Normal file
@ -0,0 +1,672 @@
|
||||
{
|
||||
"+/cwsayrqk": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Actual SizeSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"+7sd9hoyZA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CopySSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"/PgA81GVOD": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "EditSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"/bRGKhnXQ6": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "A new version is available. It will be downloaded and installed automatically.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"0g8/VVdNuN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Go to claude.ai/settings to configure your profile, team, and more.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"0tZLEYF8mJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DeveloperSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"1HUTYwndT2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "WindowSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"1PfZLi/OV7": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "GeneralSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"1TJUzU26sO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Submit Feedback…SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"25aCMlTDUq": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Automatically start Claude when you log inSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"3ML3xT+gEV": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "RedoSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"3gG1j3kRBX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Submit Feedback...SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"3unrKzH4zB": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CopySSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"4qP7MjrQfC": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Environment variablesSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"5DUIVR3fVi": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "About...SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"6yv8ytK4El": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Check your network connectionSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"7fdcqxofEs": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ExitSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"7gSC+rZzXX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Quickly open Claude from anywhereSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"8YQEOfuaGO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Select AllSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"9+afSO9e/t": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Failed to check for updates: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"9uNxNtcrFI": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "InstallSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"CZwl8X2D85": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Advanced optionsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"CizRPROPWo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Claude HelpSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"D43DeqP+2t": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Claude SettingsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"D4DyT6MmPy": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Could not load app settingsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"DQTgg21B7g": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Show AppSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"E9jYTa7AbX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "System TraySSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"EfdnINFnIz": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FileSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"GSG5S0ysrR": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Run on StartupSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"HeHYq6bbS2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Claude can receive information like prompts and attachments from specialized servers using Model Context Protocol.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"I5O68ogAtr": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Get StartedSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"JVwNvMZjVT": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "PasteSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"KAo3lt5Hv+": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "PasteSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"Ko/2Ml7mZG": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Reload This PageSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"L32WRR6NOL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DeleteSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"L717supPIA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SettingsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"LCWUQ/4Fu6": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ViewSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"NZIwKxgxJ+": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Are you sure you want to remove the MCP server \""
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "serverKey"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "\"?SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"Nmvo1ufAY5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Couldn't connect to ClaudeSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"O3rtEd7aMd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FindSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"ODySlGptaj": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Settings…SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"PH29MShDiy": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ForwardSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"PW5U8NgTto": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Open MCP Log File...SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"PZtcoAOSsa": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Don't EnableSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"PbJ4jR0kv1": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You are running the latest version.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"RTg057HE1D": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Show Dev ToolsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"S3MXlbjkax": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "What can I help you with today?SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"S3k5yXss2r": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Version "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "version"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"TH+W2Ad73P": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CutSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"UJCjEVPX6Q": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Look UpSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"Vvus2ifAny": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Edit ConfigSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"W1pELwt/+a": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Claude runs in the Notification AreaSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"WBvq3HlPae": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Set shortcutSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"WF1HSu0jAC": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Open Logs FolderSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"WZe86KSdrM": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Add to dictionarySSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"WlhIx7DfFO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "OKSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"XPIoFTkh3e": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "No Update AvailableSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"XZ36+EBE5/": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Zoom OutSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"XinCguXCgN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Learn moreSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"YTdYCYAf/Z": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Show Claude in the menu barSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"Z9g5m/V9Nq": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Zoom InSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"ZJZN1+KyJw": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Settings...SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"aNmxuDcWaU": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ErrorSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"aXdFLiVzjd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Show Main WindowSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"arbRxbtBkP": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "BackSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"baGq3gy8z1": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "New ConversationSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"dKX0bpR+a2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "QuitSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"dLyz0Srosd": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "DeveloperSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"fEeEFfSz4K": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Zoom In (indie cooler version)SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"fFJxOwJRj2": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "UndoSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"fWDSQQgRO5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Menu BarSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"iFRmqBsr1N": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "About ClaudeSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"ilE9e0uxNN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "RefreshSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"j66cdL4EK5": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Open DocumentationSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"jd5ZNrRMNP": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "You're an early explorer, so let us know your feedback.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"k+06oXbIas": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Show Claude in the notifications areaSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"kYwW0OsI4M": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Claude Desktop is in beta.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"m3GfpKD1WX": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ReloadSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"mRXjxhS6p4": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Check for Updates…SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"ngLpGT7bUJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Could not load developer settingsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"oQuOiX24pp": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "QuitSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"pWXxZASpOB": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "HelpSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"pgaCSv2/6H": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ArgumentsSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"q4hs14B00V": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Unknown errorSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"rNAd+HxSK4": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Open MCP Log FileSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"rY99UXvTDU": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Copy ImageSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"rdiPpQVqvY": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Developer mode allows access to developer tools and debugging features. Only enable this if you know what you're doing.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"rwFEudHXey": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "There was an error reading or parsing claude_desktop_config.json: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"sNnRQsIEYz": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Find in pageSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"sZxWXq9BzJ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Give feedbackSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"sys7RHphmL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FeedbackSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"tWutslc/9Z": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "EnableSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"u1/hT7oRQY": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Quick Entry Keyboard ShortcutSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"uc3dnSo+eo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "FileSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"urCd4k/cE0": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "CommandSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"vgLHPxjh9O": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Enable Developer ModeSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"wS64bVG2CO": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "MCP is a protocol that enables secure connections between clients, such as the Claude Desktop app, and local services.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"xJs1jZ8PoA": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Claude runs in the background even when you close the window. Click the Claude icon in the tray to reopen the app, or right-click to quit.SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"xKRKzVVy9c": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ConfigureSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"xd436TVDRZ": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "There was an error reading or parsing developer_settings.json: "
|
||||
},
|
||||
{
|
||||
"type": 1,
|
||||
"value": "error"
|
||||
},
|
||||
{
|
||||
"type": 0,
|
||||
"value": "SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"y9tCbmRzHN": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Enable Developer Mode?SSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"ytjMRobdyL": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Update AvailableSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"zAYm/Z684h": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "HelpSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"zCIK9K8J4a": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "ErrorSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
],
|
||||
"zSP70MVzIo": [
|
||||
{
|
||||
"type": 0,
|
||||
"value": "Clear shortcutSSSSSSSSSSSSSSSSSSSSSSSSS"
|
||||
}
|
||||
]
|
||||
}
|