Initial commit: Elydora Open Source — self-hosted audit platform for AI agents
Full self-hosted port of the Elydora tamper-evident audit protocol: - Hono API server with PostgreSQL, Redis, MinIO adapters - Ed25519 signed operations, chain hashing, Merkle epoch rollups - PBKDF2 password hashing, HMAC-SHA256 JWT, 5-role RBAC - Next.js management console - Node.js, Python, and Go SDKs - Docker Compose for local deployment - Helm chart for Kubernetes - Comprehensive security hardening and audit fixes applied Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
15547a8c35
commit
e390e68594
207 files changed
+32790
-63
No files matched your search
@@ -0,0 +1,28 @@
|
||||
import i18n from 'i18next';
|
||||
import { initReactI18next } from 'react-i18next';
|
||||
import LanguageDetector from 'i18next-browser-languagedetector';
|
||||
|
||||
import en from './en.json';
|
||||
import zh from './zh.json';
|
||||
|
||||
const resources = {
|
||||
en: { translation: en },
|
||||
zh: { translation: zh },
|
||||
};
|
||||
|
||||
i18n
|
||||
.use(LanguageDetector)
|
||||
.use(initReactI18next)
|
||||
.init({
|
||||
resources,
|
||||
fallbackLng: 'en',
|
||||
interpolation: {
|
||||
escapeValue: false,
|
||||
},
|
||||
detection: {
|
||||
order: ['localStorage', 'navigator'],
|
||||
caches: ['localStorage'],
|
||||
},
|
||||
});
|
||||
|
||||
export default i18n;
|
||||
@@ -0,0 +1,390 @@
|
||||
{
|
||||
"common": {
|
||||
"dashboard": "Dashboard",
|
||||
"agents": "Agents",
|
||||
"operations": "Operations",
|
||||
"epochs": "Epochs",
|
||||
"auditTrail": "Audit Trail",
|
||||
"exports": "Exports",
|
||||
"jwks": "JWKS",
|
||||
"settings": "Settings",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"download": "Download",
|
||||
"continue": "Continue",
|
||||
"signOut": "Sign Out",
|
||||
"copy": "Copy",
|
||||
"copied": "Copied",
|
||||
"clickToCopy": "Click to copy",
|
||||
"viewAll": "View All",
|
||||
"home": "Home",
|
||||
"docs": "Docs",
|
||||
"console": "Console",
|
||||
"loading": "Loading...",
|
||||
"unknownError": "Unknown error.",
|
||||
"allData": "All data",
|
||||
"copyToClipboard": "Copy to clipboard",
|
||||
"copyJwks": "Copy JWKS",
|
||||
"links": "LINKS"
|
||||
},
|
||||
"sidebar": {
|
||||
"overview": "OVERVIEW",
|
||||
"management": "MANAGEMENT",
|
||||
"compliance": "COMPLIANCE",
|
||||
"system": "SYSTEM"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Dashboard",
|
||||
"subtitle": "Elydora accountability console overview",
|
||||
"totalAgents": "Total Agents",
|
||||
"registeredAgents": "Registered agents",
|
||||
"totalOperations": "Total Operations",
|
||||
"allRecordedOps": "All recorded operations",
|
||||
"activeEpochs": "Active Epochs",
|
||||
"merkleRollups": "Merkle rollup epochs",
|
||||
"pendingExports": "Pending Exports",
|
||||
"queuedOrRunning": "Queued or running",
|
||||
"quickActions": "Quick Actions",
|
||||
"registerAgent": "Register Agent",
|
||||
"viewOperations": "View Operations",
|
||||
"createExport": "Create Export",
|
||||
"recentOperations": "Recent Operations",
|
||||
"noOperations": "No operations recorded yet.",
|
||||
"agentSummary": "Agent Summary",
|
||||
"noAgentsRegistered": "No agents registered yet. Register an agent to start recording operations.",
|
||||
"latestActivity": "Latest Activity",
|
||||
"failedToLoad": "Failed to load dashboard data. Ensure the API is reachable.",
|
||||
"colOperationId": "Operation ID",
|
||||
"colAgent": "Agent",
|
||||
"colType": "Type",
|
||||
"colIssued": "Issued",
|
||||
"colSeq": "Seq"
|
||||
},
|
||||
"agents": {
|
||||
"title": "Agents",
|
||||
"subtitle": "Manage registered AI agents",
|
||||
"registerAgent": "Register Agent",
|
||||
"searchPlaceholder": "Search agents by ID...",
|
||||
"colAgent": "Agent",
|
||||
"colStatus": "Status",
|
||||
"colOperations": "Operations",
|
||||
"colLatestActivity": "Latest Activity",
|
||||
"emptyMessage": "No agents found. Register an agent to get started.",
|
||||
"failedToLoad": "Failed to load agents.",
|
||||
"deleteAgent": "Delete Agent",
|
||||
"deleteConfirmPre": "Are you sure you want to delete agent ",
|
||||
"deleteConfirmPost": "? This will permanently remove the agent and all its keys. This action cannot be undone.",
|
||||
"deleting": "Deleting...",
|
||||
"failedToDelete": "Failed to delete agent."
|
||||
},
|
||||
"agentDetail": {
|
||||
"title": "Agent Details",
|
||||
"agentId": "Agent ID",
|
||||
"status": "Status",
|
||||
"organization": "Organization",
|
||||
"displayName": "Display Name",
|
||||
"responsibleEntity": "Responsible Entity",
|
||||
"created": "Created",
|
||||
"keys": "Keys",
|
||||
"noKeys": "No keys registered for this agent.",
|
||||
"colKeyId": "Key ID",
|
||||
"colAlgorithm": "Algorithm",
|
||||
"colStatus": "Status",
|
||||
"colCreated": "Created",
|
||||
"revoke": "Revoke",
|
||||
"operations": "Operations",
|
||||
"freezeAgent": "Freeze Agent",
|
||||
"unfreezeAgent": "Unfreeze Agent",
|
||||
"freezeDescPre": "Freezing agent ",
|
||||
"freezeDescPost": " will prevent it from submitting new operations. This action is recorded in the audit trail.",
|
||||
"unfreezeDescPre": "Unfreezing agent ",
|
||||
"unfreezeDescPost": " will allow it to resume submitting operations. This action is recorded in the audit trail.",
|
||||
"reason": "Reason",
|
||||
"freezePlaceholder": "Provide a reason for freezing this agent...",
|
||||
"unfreezePlaceholder": "Provide a reason for unfreezing this agent...",
|
||||
"freezing": "Freezing...",
|
||||
"confirmFreeze": "Confirm Freeze",
|
||||
"unfreezing": "Unfreezing...",
|
||||
"confirmUnfreeze": "Confirm Unfreeze",
|
||||
"failedToFreeze": "Failed to freeze agent.",
|
||||
"failedToUnfreeze": "Failed to unfreeze agent.",
|
||||
"reasonRequired": "A reason is required.",
|
||||
"revokeKey": "Revoke Key",
|
||||
"revokeKeyDescPre": "Revoking key ",
|
||||
"revokeKeyDescPost": " will prevent it from being used to sign operations. This action cannot be undone.",
|
||||
"revokePlaceholder": "Provide a reason for revoking this key...",
|
||||
"revoking": "Revoking...",
|
||||
"confirmRevoke": "Confirm Revoke",
|
||||
"failedToRevoke": "Failed to revoke key.",
|
||||
"failedToLoad": "Failed to load agent.",
|
||||
"mayNotExist": "The agent may not exist.",
|
||||
"noOperations": "No operations recorded for this agent."
|
||||
},
|
||||
"operationDetail": {
|
||||
"title": "Operation Details",
|
||||
"failedToLoad": "Failed to load operation.",
|
||||
"mayNotExist": "The operation may not exist."
|
||||
},
|
||||
"operationCard": {
|
||||
"operationRecord": "Operation Record",
|
||||
"formatted": "Formatted",
|
||||
"rawJson": "Raw JSON",
|
||||
"operationId": "Operation ID",
|
||||
"agentId": "Agent ID",
|
||||
"orgId": "Org ID",
|
||||
"type": "Type",
|
||||
"issuedAt": "Issued At",
|
||||
"createdAt": "Created At",
|
||||
"ttlMs": "TTL (ms)",
|
||||
"nonce": "Nonce",
|
||||
"seqNo": "Seq No",
|
||||
"signingKey": "Signing Key",
|
||||
"payloadHash": "Payload Hash",
|
||||
"prevChainHash": "Prev Chain Hash",
|
||||
"chainHash": "Chain Hash",
|
||||
"r2PayloadKey": "R2 Payload Key",
|
||||
"payload": "Payload",
|
||||
"receipt": "Receipt (EAR)",
|
||||
"receiptId": "Receipt ID",
|
||||
"r2ReceiptKey": "R2 Receipt Key"
|
||||
},
|
||||
"operations": {
|
||||
"title": "Operations",
|
||||
"subtitle": "Browse and inspect recorded operations",
|
||||
"searchPlaceholder": "Search by ID, agent, or type...",
|
||||
"colOperationId": "Operation ID",
|
||||
"colAgent": "Agent",
|
||||
"colType": "Type",
|
||||
"colIssuedAt": "Issued At",
|
||||
"colSeq": "Seq",
|
||||
"agentIdFilter": "Agent ID",
|
||||
"filterByAgent": "Filter by agent",
|
||||
"typeFilter": "Type",
|
||||
"filterByType": "Filter by type",
|
||||
"emptyMessage": "No operations found matching your filters.",
|
||||
"failedToLoad": "Failed to load operations."
|
||||
},
|
||||
"epochs": {
|
||||
"title": "Epochs",
|
||||
"subtitle": "Periodic Merkle-tree rollups anchoring operations",
|
||||
"colEpochId": "Epoch ID",
|
||||
"colTimeRange": "Time Range",
|
||||
"colLeaves": "Leaves",
|
||||
"colRootHash": "Root Hash",
|
||||
"colCreated": "Created",
|
||||
"emptyMessage": "No epochs have been created yet. Epochs are generated periodically as operations are recorded.",
|
||||
"failedToLoad": "Failed to load epochs."
|
||||
},
|
||||
"epochDetail": {
|
||||
"title": "Epoch Details",
|
||||
"viewOperations": "View Operations",
|
||||
"epochMetadata": "Epoch Metadata",
|
||||
"epochId": "Epoch ID",
|
||||
"organization": "Organization",
|
||||
"startTime": "Start Time",
|
||||
"endTime": "End Time",
|
||||
"duration": "Duration",
|
||||
"durationMinutes": "{{count}} minutes",
|
||||
"createdAt": "Created At",
|
||||
"merkleTree": "Merkle Tree",
|
||||
"rootHash": "Root Hash",
|
||||
"leafCount": "Leaf Count",
|
||||
"operationsUnit": "operations",
|
||||
"tsaAnchor": "TSA Anchor",
|
||||
"tsaToken": "TSA Token",
|
||||
"tsaUrl": "TSA URL",
|
||||
"anchoredAt": "Anchored At",
|
||||
"noTsaAnchor": "No TSA anchor information available for this epoch.",
|
||||
"storage": "Storage",
|
||||
"r2EpochKey": "R2 Epoch Key",
|
||||
"failedToLoad": "Failed to load epoch.",
|
||||
"mayNotExist": "The epoch may not exist."
|
||||
},
|
||||
"audit": {
|
||||
"title": "Audit Trail",
|
||||
"subtitle": "Query and inspect the full audit log of operations",
|
||||
"exportData": "Export Data",
|
||||
"queryBuilder": "Query Builder",
|
||||
"clearFilters": "Clear Filters",
|
||||
"agentId": "Agent ID",
|
||||
"filterByAgent": "Filter by agent",
|
||||
"operationType": "Operation Type",
|
||||
"filterByType": "Filter by type",
|
||||
"startTime": "Start Time",
|
||||
"endTime": "End Time",
|
||||
"showing": "Showing {{shown}} of {{total}} results",
|
||||
"moreResults": "More results available",
|
||||
"colOperationId": "Operation ID",
|
||||
"colAgent": "Agent",
|
||||
"colType": "Type",
|
||||
"colIssuedAt": "Issued At",
|
||||
"colSeq": "Seq",
|
||||
"colChainHash": "Chain Hash",
|
||||
"emptyMessage": "No audit records match your query. Adjust your filters or clear them to see all records.",
|
||||
"failedToLoad": "Failed to load audit data."
|
||||
},
|
||||
"exports": {
|
||||
"title": "Exports",
|
||||
"subtitle": "Create and download compliance data exports",
|
||||
"createExport": "Create Export",
|
||||
"colExportId": "Export ID",
|
||||
"colStatus": "Status",
|
||||
"colFilters": "Filters",
|
||||
"colCreated": "Created",
|
||||
"colCompleted": "Completed",
|
||||
"emptyMessage": "No exports have been created yet. Create an export to download compliance data.",
|
||||
"failedToLoad": "Failed to load exports.",
|
||||
"startTime": "Start Time",
|
||||
"endTime": "End Time",
|
||||
"agentIdOptional": "Agent ID (optional)",
|
||||
"filterByAgent": "Filter by specific agent",
|
||||
"operationTypeOptional": "Operation Type (optional)",
|
||||
"filterByOperationType": "Filter by operation type",
|
||||
"format": "Format",
|
||||
"creating": "Creating...",
|
||||
"startEndRequired": "Start time and end time are required.",
|
||||
"failedToCreate": "Failed to create export."
|
||||
},
|
||||
"jwks": {
|
||||
"title": "JWKS",
|
||||
"subtitle": "JSON Web Key Set for token verification",
|
||||
"publicKeys": "Public Keys",
|
||||
"colKeyId": "Key ID",
|
||||
"colKeyType": "Key Type",
|
||||
"colAlgorithm": "Algorithm",
|
||||
"colCurve": "Curve",
|
||||
"colUse": "Use",
|
||||
"colPublicKey": "Public Key",
|
||||
"emptyMessage": "No JWKS keys available. The server may not have published any public keys.",
|
||||
"failedToLoad": "Failed to load JWKS.",
|
||||
"endpoint": "JWKS endpoint:"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
"subtitle": "Account and organization details",
|
||||
"user": "User",
|
||||
"displayName": "Display Name",
|
||||
"email": "Email",
|
||||
"subject": "Subject",
|
||||
"role": "Role",
|
||||
"organization": "Organization",
|
||||
"organizationId": "Organization ID"
|
||||
},
|
||||
"login": {
|
||||
"signIn": "Sign in",
|
||||
"email": "Email",
|
||||
"emailPlaceholder": "you@company.com",
|
||||
"password": "Password",
|
||||
"signingIn": "Signing in...",
|
||||
"submitSignIn": "Sign In",
|
||||
"noAccount": "No account? ",
|
||||
"createOne": "Create one",
|
||||
"loginFailed": "Login failed"
|
||||
},
|
||||
"register": {
|
||||
"createAccount": "Create account",
|
||||
"orgName": "Organization Name",
|
||||
"orgPlaceholder": "Acme Corp",
|
||||
"displayName": "Display Name",
|
||||
"displayNamePlaceholder": "Jane Smith",
|
||||
"email": "Email",
|
||||
"emailPlaceholder": "you@company.com",
|
||||
"password": "Password",
|
||||
"passwordPlaceholder": "Minimum 8 characters",
|
||||
"creatingAccount": "Creating account...",
|
||||
"submitCreateAccount": "Create Account",
|
||||
"hasAccount": "Already have an account? ",
|
||||
"signIn": "Sign in",
|
||||
"registrationFailed": "Registration failed"
|
||||
},
|
||||
"agentRegistration": {
|
||||
"displayName": "Display Name",
|
||||
"displayNamePlaceholder": "My AI Agent",
|
||||
"displayNameRequired": "Display Name is required.",
|
||||
"responsibleEntity": "Responsible Entity (optional)",
|
||||
"responsibleEntityPlaceholder": "Person or team responsible",
|
||||
"submitting": "Registering...",
|
||||
"submit": "Register Agent",
|
||||
"failedToRegister": "Failed to register agent.",
|
||||
"agentRegistered": "Agent Registered",
|
||||
"privateKeySaveNow": "Private Key — Save This Now",
|
||||
"privateKeyWarning": "This will not be shown again. Store it as an environment variable or in a secrets manager.",
|
||||
"apiToken": "API Token",
|
||||
"apiTokenDesc": "Use this as your ELYDORA_TOKEN environment variable. This is your bearer token for API authentication.",
|
||||
"tokenExpiration": "Token Expiration",
|
||||
"customDays": "Number of days",
|
||||
"days": "days",
|
||||
"enterValidDays": "Enter a valid number of days (minimum 1).",
|
||||
"issuing": "Issuing...",
|
||||
"issueApiToken": "Issue API Token",
|
||||
"failedToIssueToken": "Failed to issue token.",
|
||||
"credAgentId": "Agent ID",
|
||||
"credKeyId": "Key ID",
|
||||
"credOrgId": "Org ID",
|
||||
"credAlgorithm": "Algorithm",
|
||||
"chooseIntegration": "Choose Integration",
|
||||
"chooseIntegrationDesc": "How will this agent connect to Elydora?",
|
||||
"supported": "Supported (one-command install)",
|
||||
"sdkIntegration": "SDK Integration",
|
||||
"install": "Install",
|
||||
"backToList": "Back",
|
||||
"sdkTutorial": "SDK Tutorial",
|
||||
"aiReadyPrompt": "AI-Ready Prompt",
|
||||
"aiReadyPromptDesc": "Copy this prompt and paste it into your AI agent to set up Elydora automatically.",
|
||||
"copyPrompt": "Copy Prompt",
|
||||
"done": "Done",
|
||||
"step": "Step {{current}} of {{total}}"
|
||||
},
|
||||
"chain": {
|
||||
"title": "Chain Visualization",
|
||||
"previous": "Previous",
|
||||
"current": "Current ({{id}})",
|
||||
"next": "Next",
|
||||
"pending": "Pending...",
|
||||
"chainBlock": "Chain block",
|
||||
"currentOperation": "Current operation"
|
||||
},
|
||||
"verification": {
|
||||
"title": "Verification",
|
||||
"verify": "Verify",
|
||||
"reVerify": "Re-verify",
|
||||
"verifying": "Verifying...",
|
||||
"verifiedSuccess": "Operation verified successfully",
|
||||
"verificationFailed": "Verification failed",
|
||||
"signature": "Signature",
|
||||
"signatureDesc": "Ed25519 signature is valid for the given public key",
|
||||
"chainCheck": "Chain",
|
||||
"chainCheckDesc": "Previous chain hash matches the expected value",
|
||||
"receiptCheck": "Receipt",
|
||||
"receiptCheckDesc": "Server receipt (EAR) is valid and matches the operation",
|
||||
"merkle": "Merkle",
|
||||
"merkleDesc": "Operation is included in the epoch Merkle tree",
|
||||
"pending": "Pending",
|
||||
"passed": "Passed",
|
||||
"failed": "Failed",
|
||||
"errors": "Errors"
|
||||
},
|
||||
"tokenExpiration": {
|
||||
"24hours": "24 hours",
|
||||
"7days": "7 days",
|
||||
"1month": "1 month",
|
||||
"1year": "1 year",
|
||||
"custom": "Custom",
|
||||
"neverExpire": "Never expire"
|
||||
},
|
||||
"integrations": {
|
||||
"claudecode": "Anthropic CLI agent",
|
||||
"cursor": "AI-powered code editor",
|
||||
"gemini": "Google AI CLI agent",
|
||||
"kirocli": "AWS AI CLI agent",
|
||||
"kiroide": "AWS spec-driven AI IDE",
|
||||
"opencode": "Open-source TUI agent",
|
||||
"copilot": "GitHub Copilot CLI agent",
|
||||
"letta": "Letta AI CLI agent",
|
||||
"codex": "OpenAI CLI agent",
|
||||
"kimi": "Moonshot AI assistant",
|
||||
"enterprise": "Your own internal agent",
|
||||
"gui": "Desktop or web-based agent",
|
||||
"other": "Any custom integration"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,390 @@
|
||||
{
|
||||
"common": {
|
||||
"dashboard": "仪表盘",
|
||||
"agents": "代理",
|
||||
"operations": "操作",
|
||||
"epochs": "纪元",
|
||||
"auditTrail": "审计追踪",
|
||||
"exports": "导出",
|
||||
"jwks": "JWKS",
|
||||
"settings": "设置",
|
||||
"cancel": "取消",
|
||||
"delete": "删除",
|
||||
"download": "下载",
|
||||
"continue": "继续",
|
||||
"signOut": "退出登录",
|
||||
"copy": "复制",
|
||||
"copied": "已复制",
|
||||
"clickToCopy": "点击复制",
|
||||
"viewAll": "查看全部",
|
||||
"home": "首页",
|
||||
"docs": "文档",
|
||||
"console": "控制台",
|
||||
"loading": "加载中...",
|
||||
"unknownError": "未知错误。",
|
||||
"allData": "全部数据",
|
||||
"copyToClipboard": "复制到剪贴板",
|
||||
"copyJwks": "复制 JWKS",
|
||||
"links": "链接"
|
||||
},
|
||||
"sidebar": {
|
||||
"overview": "概览",
|
||||
"management": "管理",
|
||||
"compliance": "合规",
|
||||
"system": "系统"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "仪表盘",
|
||||
"subtitle": "Elydora 责任追溯控制台概览",
|
||||
"totalAgents": "代理总数",
|
||||
"registeredAgents": "已注册代理",
|
||||
"totalOperations": "操作总数",
|
||||
"allRecordedOps": "所有已记录操作",
|
||||
"activeEpochs": "活跃纪元",
|
||||
"merkleRollups": "Merkle 树汇总纪元",
|
||||
"pendingExports": "待处理导出",
|
||||
"queuedOrRunning": "排队中或运行中",
|
||||
"quickActions": "快捷操作",
|
||||
"registerAgent": "注册代理",
|
||||
"viewOperations": "查看操作",
|
||||
"createExport": "创建导出",
|
||||
"recentOperations": "最近操作",
|
||||
"noOperations": "尚无操作记录。",
|
||||
"agentSummary": "代理概要",
|
||||
"noAgentsRegistered": "尚未注册代理。注册一个代理以开始记录操作。",
|
||||
"latestActivity": "最近活动",
|
||||
"failedToLoad": "加载仪表盘数据失败。请确保 API 可访问。",
|
||||
"colOperationId": "操作 ID",
|
||||
"colAgent": "代理",
|
||||
"colType": "类型",
|
||||
"colIssued": "签发时间",
|
||||
"colSeq": "序号"
|
||||
},
|
||||
"agents": {
|
||||
"title": "代理",
|
||||
"subtitle": "管理已注册的 AI 代理",
|
||||
"registerAgent": "注册代理",
|
||||
"searchPlaceholder": "按 ID 搜索代理...",
|
||||
"colAgent": "代理",
|
||||
"colStatus": "状态",
|
||||
"colOperations": "操作数",
|
||||
"colLatestActivity": "最近活动",
|
||||
"emptyMessage": "未找到代理。注册一个代理以开始使用。",
|
||||
"failedToLoad": "加载代理列表失败。",
|
||||
"deleteAgent": "删除代理",
|
||||
"deleteConfirmPre": "确定要删除代理 ",
|
||||
"deleteConfirmPost": " 吗?这将永久移除该代理及其所有密钥。此操作无法撤销。",
|
||||
"deleting": "删除中...",
|
||||
"failedToDelete": "删除代理失败。"
|
||||
},
|
||||
"agentDetail": {
|
||||
"title": "代理详情",
|
||||
"agentId": "代理 ID",
|
||||
"status": "状态",
|
||||
"organization": "组织",
|
||||
"displayName": "显示名称",
|
||||
"responsibleEntity": "责任实体",
|
||||
"created": "创建时间",
|
||||
"keys": "密钥",
|
||||
"noKeys": "该代理没有已注册的密钥。",
|
||||
"colKeyId": "密钥 ID",
|
||||
"colAlgorithm": "算法",
|
||||
"colStatus": "状态",
|
||||
"colCreated": "创建时间",
|
||||
"revoke": "吊销",
|
||||
"operations": "操作",
|
||||
"freezeAgent": "冻结代理",
|
||||
"unfreezeAgent": "解冻代理",
|
||||
"reason": "原因",
|
||||
"freezePlaceholder": "请提供冻结此代理的原因...",
|
||||
"unfreezePlaceholder": "请提供解冻此代理的原因...",
|
||||
"freezing": "冻结中...",
|
||||
"confirmFreeze": "确认冻结",
|
||||
"unfreezing": "解冻中...",
|
||||
"confirmUnfreeze": "确认解冻",
|
||||
"failedToFreeze": "冻结代理失败。",
|
||||
"failedToUnfreeze": "解冻代理失败。",
|
||||
"reasonRequired": "原因为必填项。",
|
||||
"revokeKey": "吊销密钥",
|
||||
"revokePlaceholder": "请提供吊销此密钥的原因...",
|
||||
"revoking": "吊销中...",
|
||||
"confirmRevoke": "确认吊销",
|
||||
"failedToRevoke": "吊销密钥失败。",
|
||||
"freezeDescPre": "冻结代理 ",
|
||||
"freezeDescPost": " 将阻止其提交新操作。此操作会记录在审计追踪中。",
|
||||
"unfreezeDescPre": "解冻代理 ",
|
||||
"unfreezeDescPost": " 将允许其恢复提交操作。此操作会记录在审计追踪中。",
|
||||
"revokeKeyDescPre": "吊销密钥 ",
|
||||
"revokeKeyDescPost": " 将阻止其用于签署操作。此操作无法撤销。",
|
||||
"failedToLoad": "加载代理信息失败。",
|
||||
"mayNotExist": "该代理可能不存在。",
|
||||
"noOperations": "该代理尚无操作记录。"
|
||||
},
|
||||
"operationDetail": {
|
||||
"title": "操作详情",
|
||||
"failedToLoad": "加载操作信息失败。",
|
||||
"mayNotExist": "该操作可能不存在。"
|
||||
},
|
||||
"operationCard": {
|
||||
"operationRecord": "操作记录",
|
||||
"formatted": "格式化",
|
||||
"rawJson": "原始 JSON",
|
||||
"operationId": "操作 ID",
|
||||
"agentId": "代理 ID",
|
||||
"orgId": "组织 ID",
|
||||
"type": "类型",
|
||||
"issuedAt": "签发时间",
|
||||
"createdAt": "创建时间",
|
||||
"ttlMs": "TTL (ms)",
|
||||
"nonce": "Nonce",
|
||||
"seqNo": "序号",
|
||||
"signingKey": "签名密钥",
|
||||
"payloadHash": "载荷哈希",
|
||||
"prevChainHash": "上一链哈希",
|
||||
"chainHash": "链哈希",
|
||||
"r2PayloadKey": "R2 载荷键",
|
||||
"payload": "载荷",
|
||||
"receipt": "回执 (EAR)",
|
||||
"receiptId": "回执 ID",
|
||||
"r2ReceiptKey": "R2 回执键"
|
||||
},
|
||||
"operations": {
|
||||
"title": "操作",
|
||||
"subtitle": "浏览和检查已记录的操作",
|
||||
"searchPlaceholder": "按 ID、代理或类型搜索...",
|
||||
"colOperationId": "操作 ID",
|
||||
"colAgent": "代理",
|
||||
"colType": "类型",
|
||||
"colIssuedAt": "签发时间",
|
||||
"colSeq": "序号",
|
||||
"agentIdFilter": "代理 ID",
|
||||
"filterByAgent": "按代理筛选",
|
||||
"typeFilter": "类型",
|
||||
"filterByType": "按类型筛选",
|
||||
"emptyMessage": "没有符合筛选条件的操作。",
|
||||
"failedToLoad": "加载操作列表失败。"
|
||||
},
|
||||
"epochs": {
|
||||
"title": "纪元",
|
||||
"subtitle": "定期 Merkle 树汇总锚定操作",
|
||||
"colEpochId": "纪元 ID",
|
||||
"colTimeRange": "时间范围",
|
||||
"colLeaves": "叶子数",
|
||||
"colRootHash": "根哈希",
|
||||
"colCreated": "创建时间",
|
||||
"emptyMessage": "尚未创建纪元。纪元会随着操作的记录定期生成。",
|
||||
"failedToLoad": "加载纪元列表失败。"
|
||||
},
|
||||
"epochDetail": {
|
||||
"title": "纪元详情",
|
||||
"viewOperations": "查看操作",
|
||||
"epochMetadata": "纪元元数据",
|
||||
"epochId": "纪元 ID",
|
||||
"organization": "组织",
|
||||
"startTime": "开始时间",
|
||||
"endTime": "结束时间",
|
||||
"duration": "持续时间",
|
||||
"durationMinutes": "{{count}} 分钟",
|
||||
"createdAt": "创建时间",
|
||||
"merkleTree": "Merkle 树",
|
||||
"rootHash": "根哈希",
|
||||
"leafCount": "叶子数量",
|
||||
"operationsUnit": "个操作",
|
||||
"tsaAnchor": "TSA 锚点",
|
||||
"tsaToken": "TSA 令牌",
|
||||
"tsaUrl": "TSA URL",
|
||||
"anchoredAt": "锚定时间",
|
||||
"noTsaAnchor": "此纪元暂无 TSA 锚点信息。",
|
||||
"storage": "存储",
|
||||
"r2EpochKey": "R2 纪元键",
|
||||
"failedToLoad": "加载纪元信息失败。",
|
||||
"mayNotExist": "该纪元可能不存在。"
|
||||
},
|
||||
"audit": {
|
||||
"title": "审计追踪",
|
||||
"subtitle": "查询和检查完整的操作审计日志",
|
||||
"exportData": "导出数据",
|
||||
"queryBuilder": "查询构建器",
|
||||
"clearFilters": "清除筛选",
|
||||
"agentId": "代理 ID",
|
||||
"filterByAgent": "按代理筛选",
|
||||
"operationType": "操作类型",
|
||||
"filterByType": "按类型筛选",
|
||||
"startTime": "开始时间",
|
||||
"endTime": "结束时间",
|
||||
"showing": "显示 {{shown}} / {{total}} 条结果",
|
||||
"moreResults": "还有更多结果",
|
||||
"colOperationId": "操作 ID",
|
||||
"colAgent": "代理",
|
||||
"colType": "类型",
|
||||
"colIssuedAt": "签发时间",
|
||||
"colSeq": "序号",
|
||||
"colChainHash": "链哈希",
|
||||
"emptyMessage": "没有匹配的审计记录。请调整筛选条件或清除筛选以查看所有记录。",
|
||||
"failedToLoad": "加载审计数据失败。"
|
||||
},
|
||||
"exports": {
|
||||
"title": "导出",
|
||||
"subtitle": "创建和下载合规数据导出",
|
||||
"createExport": "创建导出",
|
||||
"colExportId": "导出 ID",
|
||||
"colStatus": "状态",
|
||||
"colFilters": "筛选条件",
|
||||
"colCreated": "创建时间",
|
||||
"colCompleted": "完成时间",
|
||||
"emptyMessage": "尚未创建导出。创建导出以下载合规数据。",
|
||||
"failedToLoad": "加载导出列表失败。",
|
||||
"startTime": "开始时间",
|
||||
"endTime": "结束时间",
|
||||
"agentIdOptional": "代理 ID(可选)",
|
||||
"filterByAgent": "按特定代理筛选",
|
||||
"operationTypeOptional": "操作类型(可选)",
|
||||
"filterByOperationType": "按操作类型筛选",
|
||||
"format": "格式",
|
||||
"creating": "创建中...",
|
||||
"startEndRequired": "开始时间和结束时间为必填项。",
|
||||
"failedToCreate": "创建导出失败。"
|
||||
},
|
||||
"jwks": {
|
||||
"title": "JWKS",
|
||||
"subtitle": "用于令牌验证的 JSON Web 密钥集",
|
||||
"publicKeys": "公钥",
|
||||
"colKeyId": "密钥 ID",
|
||||
"colKeyType": "密钥类型",
|
||||
"colAlgorithm": "算法",
|
||||
"colCurve": "曲线",
|
||||
"colUse": "用途",
|
||||
"colPublicKey": "公钥",
|
||||
"emptyMessage": "没有可用的 JWKS 密钥。服务器可能尚未发布公钥。",
|
||||
"failedToLoad": "加载 JWKS 失败。",
|
||||
"endpoint": "JWKS 端点:"
|
||||
},
|
||||
"settings": {
|
||||
"title": "设置",
|
||||
"subtitle": "账户和组织详情",
|
||||
"user": "用户",
|
||||
"displayName": "显示名称",
|
||||
"email": "邮箱",
|
||||
"subject": "主体",
|
||||
"role": "角色",
|
||||
"organization": "组织",
|
||||
"organizationId": "组织 ID"
|
||||
},
|
||||
"login": {
|
||||
"signIn": "登录",
|
||||
"email": "邮箱",
|
||||
"emailPlaceholder": "you@company.com",
|
||||
"password": "密码",
|
||||
"signingIn": "登录中...",
|
||||
"submitSignIn": "登录",
|
||||
"noAccount": "还没有账户?",
|
||||
"createOne": "创建一个",
|
||||
"loginFailed": "登录失败"
|
||||
},
|
||||
"register": {
|
||||
"createAccount": "创建账户",
|
||||
"orgName": "组织名称",
|
||||
"orgPlaceholder": "示例公司",
|
||||
"displayName": "显示名称",
|
||||
"displayNamePlaceholder": "张三",
|
||||
"email": "邮箱",
|
||||
"emailPlaceholder": "you@company.com",
|
||||
"password": "密码",
|
||||
"passwordPlaceholder": "至少 8 个字符",
|
||||
"creatingAccount": "创建账户中...",
|
||||
"submitCreateAccount": "创建账户",
|
||||
"hasAccount": "已有账户?",
|
||||
"signIn": "登录",
|
||||
"registrationFailed": "注册失败"
|
||||
},
|
||||
"agentRegistration": {
|
||||
"displayName": "显示名称",
|
||||
"displayNamePlaceholder": "我的 AI 代理",
|
||||
"displayNameRequired": "显示名称为必填项。",
|
||||
"responsibleEntity": "责任实体(可选)",
|
||||
"responsibleEntityPlaceholder": "负责人或团队",
|
||||
"submitting": "注册中...",
|
||||
"submit": "注册代理",
|
||||
"failedToRegister": "注册代理失败。",
|
||||
"agentRegistered": "代理注册成功",
|
||||
"privateKeySaveNow": "私钥 — 请立即保存",
|
||||
"privateKeyWarning": "此私钥不会再次显示。请将其存储为环境变量或保存在密钥管理器中。",
|
||||
"apiToken": "API 令牌",
|
||||
"apiTokenDesc": "将其用作 ELYDORA_TOKEN 环境变量。这是您的 API 认证令牌。",
|
||||
"tokenExpiration": "令牌有效期",
|
||||
"customDays": "天数",
|
||||
"days": "天",
|
||||
"enterValidDays": "请输入有效的天数(最少 1 天)。",
|
||||
"issuing": "签发中...",
|
||||
"issueApiToken": "签发 API 令牌",
|
||||
"failedToIssueToken": "签发令牌失败。",
|
||||
"credAgentId": "代理 ID",
|
||||
"credKeyId": "密钥 ID",
|
||||
"credOrgId": "组织 ID",
|
||||
"credAlgorithm": "算法",
|
||||
"chooseIntegration": "选择集成方式",
|
||||
"chooseIntegrationDesc": "此代理将如何连接到 Elydora?",
|
||||
"supported": "支持的(一键安装)",
|
||||
"sdkIntegration": "SDK 集成",
|
||||
"install": "安装",
|
||||
"backToList": "返回",
|
||||
"sdkTutorial": "SDK 教程",
|
||||
"aiReadyPrompt": "AI 就绪提示",
|
||||
"aiReadyPromptDesc": "复制此提示并粘贴到您的 AI 代理中以自动设置 Elydora。",
|
||||
"copyPrompt": "复制提示",
|
||||
"done": "完成",
|
||||
"step": "第 {{current}} 步,共 {{total}} 步"
|
||||
},
|
||||
"chain": {
|
||||
"title": "链可视化",
|
||||
"previous": "上一个",
|
||||
"current": "当前 ({{id}})",
|
||||
"next": "下一个",
|
||||
"pending": "待处理...",
|
||||
"chainBlock": "链块",
|
||||
"currentOperation": "当前操作"
|
||||
},
|
||||
"verification": {
|
||||
"title": "验证",
|
||||
"verify": "验证",
|
||||
"reVerify": "重新验证",
|
||||
"verifying": "验证中...",
|
||||
"verifiedSuccess": "操作验证成功",
|
||||
"verificationFailed": "验证失败",
|
||||
"signature": "签名",
|
||||
"signatureDesc": "Ed25519 签名对给定公钥有效",
|
||||
"chainCheck": "链",
|
||||
"chainCheckDesc": "上一链哈希与预期值匹配",
|
||||
"receiptCheck": "回执",
|
||||
"receiptCheckDesc": "服务器回执 (EAR) 有效且与操作匹配",
|
||||
"merkle": "Merkle",
|
||||
"merkleDesc": "操作包含在纪元 Merkle 树中",
|
||||
"pending": "待验证",
|
||||
"passed": "通过",
|
||||
"failed": "失败",
|
||||
"errors": "错误"
|
||||
},
|
||||
"tokenExpiration": {
|
||||
"24hours": "24 小时",
|
||||
"7days": "7 天",
|
||||
"1month": "1 个月",
|
||||
"1year": "1 年",
|
||||
"custom": "自定义",
|
||||
"neverExpire": "永不过期"
|
||||
},
|
||||
"integrations": {
|
||||
"claudecode": "Anthropic CLI 代理",
|
||||
"cursor": "AI 驱动的代码编辑器",
|
||||
"gemini": "Google AI CLI 代理",
|
||||
"kirocli": "AWS AI CLI 代理",
|
||||
"kiroide": "AWS 规格驱动的 AI IDE",
|
||||
"opencode": "开源 TUI 代理",
|
||||
"copilot": "GitHub Copilot CLI 代理",
|
||||
"letta": "Letta AI CLI 代理",
|
||||
"codex": "OpenAI CLI 代理",
|
||||
"kimi": "Moonshot AI 助手",
|
||||
"enterprise": "您的内部代理",
|
||||
"gui": "桌面或 Web 代理",
|
||||
"other": "任何自定义集成"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user