/** `trajectory` namespace dictionaries for the complete trajectory surface. */

/** Dictionary namespace owned by this plugin. */
export const NS = 'trajectory'

/** Simplified Chinese dictionary (the key-set source of truth). */
export const zh = {
  'view.trajectory': '轨迹',
  'toolbar.aria': '轨迹工具栏',
  'toolbar.duration': '时长',
  'toolbar.useActualDuration': '使用实际时长',
  'toolbar.useEqualWidth': '使用等宽操作',
  'toolbar.actualTime': '实际时间',
  'toolbar.turns': '轮次',
  'toolbar.expandTurns': '展开所有轮次',
  'toolbar.collapseTurns': '收起所有轮次',
  'toolbar.calls': '调用',
  'toolbar.expandCalls': '展开所有调用',
  'toolbar.collapseCalls': '收起所有调用',
  'toolbar.search': '搜索轨迹',
  'toolbar.searchPlaceholder': '搜索',
  'kind.system': '系统',
  'kind.user': '用户',
  'kind.context': '上下文',
  'kind.compacted': '已压缩',
  'kind.message': '消息',
  'kind.assistant': '助手',
  'kind.tool': '工具',
  'kind.subtool': '子工具',
  'kind.sub': '子项',
  'column.input': '输入',
  'column.output': '输出',
  'column.think': '思考',
  'column.time': '时间',
  'column.model': '模型',
  'column.tools': '工具',
  'turn.label': '第 {turn} 轮',
  'section.betweenTurns': '轮次之间',
  'group.message': '消息',
  'group.step': '步骤 {step}',
  'group.compaction': '压缩 {seq}',
  'status.failed': '失败',
  'status.pending': '等待中',
  'status.completed': '已完成',
  'timing.notAvailable': '不可用',
  'timing.notRecorded': '未记录',
  'timing.stepStartUnavailable': '步骤开始时间不可用',
  'timing.firstTokenUnavailable': '首 token 时间不可用',
  'timing.usageUnavailable': '用量不可用',
  'timing.outputTokensUnavailable': '输出 token 数不可用',
  'timing.durationTooShort': '时长过短',
  'timing.showLocalTime': '显示本地时间',
  'timing.showUnixTimestamp': '显示 Unix 时间戳',
  'timing.started': '开始时间',
  'timing.totalDuration': '总时长',
  'timing.ttft': '首 token 延迟',
  'timing.generation': '生成',
  'timing.throughput': '吞吐量',
  'timing.duration': '时长',
  'timing.source': '计时来源',
  'timing.sessionTimestamps': '会话时间戳',
  'timing.sessionTimestampsRunning': '会话时间戳（运行中）',
  'timing.request': '请求计时',
  'unit.milliseconds': '{value} 毫秒',
  'unit.seconds': '{value} 秒',
  'unit.tokens': '{value} tok',
  'unit.tokensPerSecond': '{value} tok/s',
  'usage.tokens': 'Token',
  'usage.reasoning': '推理',
  'usage.content': '内容',
  'usage.notReported': '未报告用量',
  'usage.input': '输入',
  'usage.cached': '缓存读取',
  'usage.cacheCreated': '缓存写入',
  'usage.other': '其他',
  'usage.output': '输出',
  'usage.thisRequest': '本次请求',
  'usage.sessionCumulative': '会话累计',
  'options.notRecorded': '未记录选项',
  'options.json': '请求选项 JSON',
  'source.unknown': '未知',
  'source.user': '用户',
  'source.plugin': '插件',
  'source.pluginNamed': '插件 · {plugin}',
  'source.goal': '目标',
  'source.goalRound': '目标 · Round {round}',
  'source.notRecorded': '未记录来源',
  'source.messageJson': '消息来源 JSON',
  'tab.summary': '概述',
  'tab.rawOutput': '原始输出',
  'tab.preview': '预览',
  'tab.raw': '原始内容',
  'tab.source': '来源',
  'tab.payload': '参数',
  'tab.result': '结果',
  'tab.schema': 'Schema',
  'tab.timing': '计时',
  'tab.diff': '差异',
  'tab.systemPrompt': '系统提示词',
  'tab.tools': '工具',
  'tab.options': '选项',
  'tab.usage': '用量',
  'record.toolCallOnly': '（仅工具调用）',
  'record.noContent': '无内容',
  'record.noPayload': '未捕获参数',
  'record.noResult': '未捕获结果',
  'record.noOutput': '无输出',
  'record.schemaUnavailable': 'Schema 不可用',
  'record.parameters': '参数',
  'record.resultJson': '结果 JSON',
  'record.json': 'JSON',
  'record.parametersJson': '参数 JSON',
  'record.namedParametersJson': '{name} 参数 JSON',
  'record.payloadJson': '参数 JSON',
  'record.outputJson': '结果 JSON',
  'record.thinking': '思考',
  'record.systemPromptMissing': '本次请求没有系统提示词',
  'record.toolsMissing': '本次请求没有工具',
  'record.systemPrompt': '系统提示词',
  'record.tools': '工具',
  'block.openSummary': '打开第 {index} 个块的工具调用概述',
  'block.openSummaryTitle': '打开工具调用概述',
  'block.label': '块 #{index} {type}',
  'history.loadingTrajectory': '正在加载轨迹…',
  'history.loadingEarlier': '正在加载更早的历史…',
  'history.loadingEarlierAria': '正在加载更早的历史…',
  'history.loadEarlier': '加载更早的历史',
  'history.clickToLoadEarlier': '点击加载更早的历史',
  'request.label': '请求 #{request}',
  'request.labelCompaction': '请求 #{request} · 压缩',
  'request.compaction': '压缩 · {section}',
  'request.compactionPurpose': '压缩',
  'request.retryProgress': '{retry}/{maximum}',
  'request.collapsedSummary': '已收起的{kind}概述，{summary}',
  'request.collapsedTurn': '轮次',
  'request.collapsedAssistant': '助手',
  'request.rowAria': '{request}{kind}，{content}',
  'request.rowPrefix': '请求 {request}，',
  'request.rowAriaCompaction': '请求 {request}，压缩',
  'request.noContent': '无内容',
  'summary.toolCalls.one': '{count} 个工具调用',
  'summary.toolCalls.other': '{count} 个工具调用',
  'summary.steps.one': '{count} 个步骤',
  'summary.steps.other': '{count} 个步骤',
  'details.event': '事件详情',
  'details.resize': '调整事件详情宽度',
  'details.resizeTitle': '拖动调整大小；双击恢复默认值。',
  'details.close': '关闭详情',
  'details.status': '状态',
  'details.purpose': '用途',
  'details.provider': '提供方',
  'details.model': '模型',
  'details.toolCalls': '工具调用',
  'details.subtoolCalls': '子工具调用',
  'details.error': '错误',
  'details.failure.auth': 'API 密钥无效',
  'details.retry': '重试',
  'details.scheduled': '已计划',
  'details.retryDelay': '重试延迟',
  'details.result': '结果',
  'details.compacted': '已压缩',
  'details.assistantMessage': '助手消息',
  'details.source': '来源',
  'details.hierarchy': '层级',
  'details.toolCall': '工具调用',
  'timeline.aria': '轨迹时间线',
  'timeline.overviewAria': '时间线概览；水平拖动可聚焦事件',
  'timeline.noTimingData': '无计时数据',
  'timeline.total': '总计 {duration}',
  'timeline.started': '开始于 {time}',
  'timeline.ttftDecoding': '首 token {ttft} · 解码 {decoding}',
  'layout.compacting': '正在压缩上下文…',
  'layout.compactionFailed': '上下文压缩失败',
  'layout.compacted': '上下文已压缩',
  'layout.toolCallOnly': '仅工具调用',
  'layout.imageOnly': '图片 ×{count}',
  'layout.initialSystemPrompt': '初始系统提示词',
  'layout.systemPromptUpdated': '系统提示词已更新',
  'layout.toolsUpdated': '工具已更新',
  'layout.systemPromptAndToolsUpdated': '系统提示词和工具已更新',
  'layout.compactionInterrupted': '上下文压缩在完成前被中断。',
} as const

/** The trajectory dictionary key union. */
export type TrajectoryKey = keyof typeof zh

declare module '@deepseek-ai/dsh-client-ui-slots' {
  interface LocaleNamespaceMap {
    /** The complete trajectory ledger, timeline, inspector, and toolbar copy. */
    trajectory: TrajectoryKey
  }
}

/** Namespace-bound translator threaded through trajectory presentation code. */
export type TrajectoryTranslate =
  import('@deepseek-ai/dsh-client-ui-slots').TranslateNS<typeof NS>

/** English dictionary, checked complete against the Chinese source of truth. */
export const en: Record<TrajectoryKey, string> = {
  'view.trajectory': 'Trajectory',
  'toolbar.aria': 'Trajectory toolbar',
  'toolbar.duration': 'Duration',
  'toolbar.useActualDuration': 'Use actual duration',
  'toolbar.useEqualWidth': 'Use equal-width operations',
  'toolbar.actualTime': 'Actual time',
  'toolbar.turns': 'Turns',
  'toolbar.expandTurns': 'Expand turns',
  'toolbar.collapseTurns': 'Collapse turns',
  'toolbar.calls': 'Calls',
  'toolbar.expandCalls': 'Expand calls',
  'toolbar.collapseCalls': 'Collapse calls',
  'toolbar.search': 'Search trajectory',
  'toolbar.searchPlaceholder': 'Search',
  'kind.system': 'SYSTEM',
  'kind.user': 'USER',
  'kind.context': 'CONTEXT',
  'kind.compacted': 'COMPACTED',
  'kind.message': 'Message',
  'kind.assistant': 'ASSISTANT',
  'kind.tool': 'TOOL',
  'kind.subtool': 'SUBTOOL',
  'kind.sub': 'Sub',
  'column.input': 'Input',
  'column.output': 'Output',
  'column.think': 'Think',
  'column.time': 'Time',
  'column.model': 'Model',
  'column.tools': 'Tools',
  'turn.label': 'Turn {turn}',
  'section.betweenTurns': 'Between turns',
  'group.message': 'Message',
  'group.step': 'Step {step}',
  'group.compaction': 'Compaction {seq}',
  'status.failed': 'Failed',
  'status.pending': 'Pending',
  'status.completed': 'Completed',
  'timing.notAvailable': 'Not available',
  'timing.notRecorded': 'Not recorded',
  'timing.stepStartUnavailable': 'Step start unavailable',
  'timing.firstTokenUnavailable': 'First token unavailable',
  'timing.usageUnavailable': 'Usage unavailable',
  'timing.outputTokensUnavailable': 'Output tokens unavailable',
  'timing.durationTooShort': 'Duration too short',
  'timing.showLocalTime': 'Show local time',
  'timing.showUnixTimestamp': 'Show Unix timestamp',
  'timing.started': 'Started',
  'timing.totalDuration': 'Total duration',
  'timing.ttft': 'TTFT',
  'timing.generation': 'Generation',
  'timing.throughput': 'Throughput',
  'timing.duration': 'Duration',
  'timing.source': 'Timing source',
  'timing.sessionTimestamps': 'Session timestamps',
  'timing.sessionTimestampsRunning': 'Session timestamps (running)',
  'timing.request': 'Request Timing',
  'unit.milliseconds': '{value} ms',
  'unit.seconds': '{value} s',
  'unit.tokens': '{value} tok',
  'unit.tokensPerSecond': '{value} tok/s',
  'usage.tokens': 'Tokens',
  'usage.reasoning': 'Reasoning',
  'usage.content': 'Content',
  'usage.notReported': 'Usage not reported',
  'usage.input': 'Input',
  'usage.cached': 'Cached',
  'usage.cacheCreated': 'Cache created',
  'usage.other': 'Other',
  'usage.output': 'Output',
  'usage.thisRequest': 'This request',
  'usage.sessionCumulative': 'Session cumulative',
  'options.notRecorded': 'Options not recorded',
  'options.json': 'Request options JSON',
  'source.unknown': 'Unknown',
  'source.user': 'User',
  'source.plugin': 'Plugin',
  'source.pluginNamed': 'Plugin · {plugin}',
  'source.goal': 'Goal',
  'source.goalRound': 'Goal · Round {round}',
  'source.notRecorded': 'Source not recorded',
  'source.messageJson': 'Message source JSON',
  'tab.summary': 'Summary',
  'tab.rawOutput': 'Raw Output',
  'tab.preview': 'Preview',
  'tab.raw': 'Raw',
  'tab.source': 'Source',
  'tab.payload': 'Payload',
  'tab.result': 'Result',
  'tab.schema': 'Schema',
  'tab.timing': 'Timing',
  'tab.diff': 'Diff',
  'tab.systemPrompt': 'System Prompt',
  'tab.tools': 'Tools',
  'tab.options': 'Options',
  'tab.usage': 'Usage',
  'record.toolCallOnly': '(tool call only)',
  'record.noContent': 'No content',
  'record.noPayload': 'No payload captured',
  'record.noResult': 'No result captured',
  'record.noOutput': 'No output',
  'record.schemaUnavailable': 'Schema unavailable',
  'record.parameters': 'Parameters',
  'record.resultJson': 'Result JSON',
  'record.json': 'JSON',
  'record.parametersJson': 'parameters JSON',
  'record.namedParametersJson': '{name} parameters JSON',
  'record.payloadJson': 'Payload JSON',
  'record.outputJson': 'Result JSON',
  'record.thinking': 'Thinking',
  'record.systemPromptMissing': 'No system prompt in this request',
  'record.toolsMissing': 'No tools in this request',
  'record.systemPrompt': 'System Prompt',
  'record.tools': 'Tools',
  'block.openSummary': 'Open Block #{index} tool call summary',
  'block.openSummaryTitle': 'Open tool call summary',
  'block.label': 'Block #{index} {type}',
  'history.loadingTrajectory': 'Loading trajectory…',
  'history.loadingEarlier': 'Loading earlier history…',
  'history.loadingEarlierAria': 'Loading earlier history…',
  'history.loadEarlier': 'Load earlier history',
  'history.clickToLoadEarlier': 'Click to load earlier history',
  'request.label': 'Request #{request}',
  'request.labelCompaction': 'Request #{request} · Compaction',
  'request.compaction': 'Compaction · {section}',
  'request.compactionPurpose': 'Compaction',
  'request.retryProgress': '{retry} of {maximum}',
  'request.collapsedSummary': 'Collapsed {kind} summary, {summary}',
  'request.collapsedTurn': 'turn',
  'request.collapsedAssistant': 'assistant',
  'request.rowAria': '{request}{kind}, {content}',
  'request.rowPrefix': 'Request {request}, ',
  'request.rowAriaCompaction': 'Request {request}, compaction',
  'request.noContent': 'no content',
  'summary.toolCalls.one': '{count} tool call',
  'summary.toolCalls.other': '{count} tool calls',
  'summary.steps.one': '{count} step',
  'summary.steps.other': '{count} steps',
  'details.event': 'Event details',
  'details.resize': 'Resize event details',
  'details.resizeTitle': 'Drag to resize. Double-click to reset.',
  'details.close': 'Close details',
  'details.status': 'Status',
  'details.purpose': 'Purpose',
  'details.provider': 'Provider',
  'details.model': 'Model',
  'details.toolCalls': 'Tool calls',
  'details.subtoolCalls': 'Subtool calls',
  'details.error': 'Error',
  'details.failure.auth': 'API key is invalid',
  'details.retry': 'Retry',
  'details.scheduled': 'Scheduled',
  'details.retryDelay': 'Retry delay',
  'details.result': 'Result',
  'details.compacted': 'Compacted',
  'details.assistantMessage': 'Assistant Message',
  'details.source': 'Source',
  'details.hierarchy': 'Hierarchy',
  'details.toolCall': 'Tool Call',
  'timeline.aria': 'Trajectory timeline',
  'timeline.overviewAria': 'Timeline overview; drag horizontally to focus events',
  'timeline.noTimingData': 'No timing data',
  'timeline.total': 'Total {duration}',
  'timeline.started': 'Started {time}',
  'timeline.ttftDecoding': 'TTFT {ttft} · Decoding {decoding}',
  'layout.compacting': 'Compacting context…',
  'layout.compactionFailed': 'Compaction failed',
  'layout.compacted': 'Context compacted',
  'layout.toolCallOnly': 'Tool call only',
  'layout.imageOnly': 'Images ×{count}',
  'layout.initialSystemPrompt': 'Initial System Prompt',
  'layout.systemPromptUpdated': 'System Prompt Updated',
  'layout.toolsUpdated': 'Tools Updated',
  'layout.systemPromptAndToolsUpdated': 'System Prompt and Tools Updated',
  'layout.compactionInterrupted': 'Compaction was interrupted before completion.',
}
