@seqyuan/ennote 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/out/404.html +1 -1
  2. package/out/__next.__PAGE__.txt +3 -3
  3. package/out/__next._full.txt +13 -13
  4. package/out/__next._head.txt +4 -4
  5. package/out/__next._index.txt +7 -7
  6. package/out/__next._tree.txt +2 -2
  7. package/out/_next/static/chunks/0pzgp1v~.454n.css +1 -0
  8. package/out/_next/static/chunks/0qpe-en7gygy..js +1 -0
  9. package/out/_next/static/chunks/0upcnmb.rkk-u.js +8 -0
  10. package/out/_not-found/__next._full.txt +12 -12
  11. package/out/_not-found/__next._head.txt +4 -4
  12. package/out/_not-found/__next._index.txt +7 -7
  13. package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
  14. package/out/_not-found/__next._not-found.txt +3 -3
  15. package/out/_not-found/__next._tree.txt +2 -2
  16. package/out/_not-found.html +1 -1
  17. package/out/_not-found.txt +12 -12
  18. package/out/graphs/__next._full.txt +13 -13
  19. package/out/graphs/__next._head.txt +4 -4
  20. package/out/graphs/__next._index.txt +7 -7
  21. package/out/graphs/__next._tree.txt +2 -2
  22. package/out/graphs/__next.graphs.__PAGE__.txt +3 -3
  23. package/out/graphs/__next.graphs.txt +3 -3
  24. package/out/graphs.html +1 -1
  25. package/out/graphs.txt +13 -13
  26. package/out/heroes/__next._full.txt +13 -13
  27. package/out/heroes/__next._head.txt +4 -4
  28. package/out/heroes/__next._index.txt +7 -7
  29. package/out/heroes/__next._tree.txt +2 -2
  30. package/out/heroes/__next.heroes.__PAGE__.txt +3 -3
  31. package/out/heroes/__next.heroes.txt +3 -3
  32. package/out/heroes.html +1 -1
  33. package/out/heroes.txt +13 -13
  34. package/out/index.html +2 -2
  35. package/out/index.txt +13 -13
  36. package/package.json +1 -1
  37. package/skills/generative-canvas/SKILL.md +121 -0
  38. package/skills/generative-canvas/skill.json +7 -0
  39. package/out/_next/static/chunks/083xw1nubbiw6.js +0 -1
  40. package/out/_next/static/chunks/0eg_yb4trirx0.css +0 -1
  41. package/out/_next/static/chunks/16.lxxctq21.t.js +0 -8
  42. /package/out/_next/static/{ZdmFuw47PSrsCMlMbO800 → NNcQQusKb3xj-mW5pnt-E}/_buildManifest.js +0 -0
  43. /package/out/_next/static/{ZdmFuw47PSrsCMlMbO800 → NNcQQusKb3xj-mW5pnt-E}/_clientMiddlewareManifest.js +0 -0
  44. /package/out/_next/static/{ZdmFuw47PSrsCMlMbO800 → NNcQQusKb3xj-mW5pnt-E}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,27437,18929,426,e=>{"use strict";var t=e.i(18050),o=e.i(71645);let n="ennote-locale";function s(){try{let e=window.localStorage.getItem(n);if("en"===e||"zh-CN"===e)return e}catch{}return"en"}function r(e){try{window.localStorage.setItem(n,e)}catch{}}function i(e){"u">typeof document&&(document.documentElement.lang=e)}e.s(["LOCALES",0,["en","zh-CN"],"applyLocaleAttribute",0,i,"readLocale",0,s,"writeLocale",0,r],18929);let a={en:{"general.title":"General","general.desc":"Appearance and workspace-level preferences.","general.appearance":"Appearance","general.permission":"Default permission","general.permission.desc":"Permission preset applied to newly created sessions.","general.language":"Language","language.en":"English","language.zh":"中文","sidebar.aria":"Projects and sessions","sidebar.newChat":"New Chat","sidebar.newChatAria":"New chat","sidebar.selectProjectFirst":"Select a project first","sidebar.heroes":"Heroes","sidebar.graphs":"Graphs","sidebar.searchSessions":"Search sessions","sidebar.search":"Search","sidebar.clearSearch":"Clear search","sidebar.sessions":"Sessions","sidebar.workspaces":"Workspaces","sidebar.refresh":"Refresh sessions","sidebar.loadingSessions":"Loading sessions…","sidebar.chooseProject":"Choose a project to start.","sidebar.newProject":"New Project","sidebar.settings":"Settings","sidebar.collapse":"Collapse sidebar","sidebar.expand":"Expand sidebar","sidebar.openNav":"Open navigation","sidebar.collapseNav":"Collapse navigation","sidebar.closeNav":"Close navigation","sidebar.selectProject":"Select project","sidebar.selectProjectEllipsis":"Select project…","sidebar.unknown":"Unknown","sidebar.noProjects":"No projects yet","sidebar.addProject":"Add project…","sidebar.addWorkspace":"Add workspace","sidebar.pin":"Pin project","sidebar.unpin":"Unpin project","sidebar.loading":"Loading…","sidebar.noSessions":"No sessions yet.","sidebar.noSessionsMatch":"No sessions match","sidebar.showArchived":"Show archived sessions","sidebar.hideArchived":"Hide archived sessions","sidebar.noArchived":"No archived sessions.","sidebar.chat":"chat","sidebar.chats":"chats","sidebar.rename":"Rename","sidebar.deleteProject":"Delete project","sidebar.renameProject":"Rename project","sidebar.renameSession":"Rename session","sidebar.newSession":"New session","sidebar.deleteProjectTitle":"Delete {name}?","sidebar.deleteProjectBody":"The project is removed from the sidebar. Its workspace folder and session data stay on disk.","sidebar.deleteProjectConfirm":"Delete","sidebar.cancel":"Cancel","sidebar.save":"Save","sidebar.archive":"Archive session","sidebar.restore":"Restore session","time.now":"now","time.minutes":"min","time.hours":"h","time.days":"d","time.months":"mo","time.years":"y","composer.dropFiles":"Drop images or text files","composer.picker":"Insert","composer.insert":"Insert a hero, graph, skill, or file","picker.selected":"selected","picker.filter":"Filter…","picker.expand":"Expand group","picker.collapse":"Collapse group","picker.readOnly":"read-only","picker.empty":"Nothing matches.","picker.actions":"Actions","picker.heroes":"Heroes","picker.graphs":"Graphs","picker.skills":"Skills","picker.templates":"Templates","picker.boundSkills":"Loaded by a Hero","composer.targets":"Addressed targets","composer.removeHero":"Remove hero","composer.removeGraph":"Remove graph","composer.removeSkill":"Remove skill","composer.hint.resizeAria":"Resize message input","composer.attachedFiles":"Attached files","composer.removeImage":"Remove image","composer.remove":"Remove","composer.configureRun":"Configure run","composer.runConfiguration":"Run configuration","composer.target":"Target","composer.permission":"Permission","composer.attach":"Attach","composer.attachFiles":"Attach files","composer.attachImage":"Attach image","composer.compactContext":"Compact context","composer.placeholderCompacting":"Context compaction in progress","composer.placeholderSteer":"Steer the agent… (Enter)","composer.placeholderNoSession":"Choose a workspace to start","composer.placeholderWelcome":"Describe what you want to build… / commands, @ files or sessions","composer.placeholderDefault":"Type a message…","composer.answerQuestionFirst":"Answer the question above before sending another message","run.status.waitingAnswer":"Waiting for your answer","run.status.waitingApproval":"Waiting for approval","run.status.waitingDelegation":"Waiting for delegation approval","run.status.waitingChildren":"Delegated heroes are working…","run.status.running":"Running…","run.status.runningTool":"Running: {detail}…","run.status.reconnecting":"Reconnecting","run.status.steering":"Steering…","run.status.cancelled":"Cancelled","run.status.compacting":"Compacting context…","run.status.compactionQueued":"Compaction queued…","run.status.compactionRetryWait":"Retrying compaction in {detail} ms…","run.status.compactionRetry":"Retrying compaction…","run.status.checkpointReady":"Context checkpoint ready","run.status.answerSubmitted":"Answer submitted. Resuming…","run.status.approvalGranted":"Approval granted. Resuming…","run.status.approvalRejected":"Approval rejected. Resuming…","run.status.resuming":"Resuming…","run.status.modelRetry":"Retrying model in {detail} ms…","run.status.preparingContext":"Preparing context…","run.status.preparingRunContext":"Preparing current run context…","run.status.compactingRun":"Compacting current run context…","run.status.runCompactionRetry":"Retrying run compaction in {detail} ms…","run.status.runContextCompacted":"Current run context compacted","run.status.runCompactionSkipped":"Run compaction skipped","run.status.usingCheckpoint":"Using context checkpoint…","run.status.recoveringTool":"Recovering truncated tool call…","run.status.outputTruncated":"Model output truncated","run.status.usingModel":"Using {detail}…","run.status.describingImage":"Describing image…","run.status.imageReady":"Image description ready","run.status.completed":"Completed","run.status.interrupted":"Interrupted","run.status.sending":"Sending…","run.status.uploadingImage":"Uploading image…","run.status.cache":"cache {count}","run.status.answerQuestionFirst":"Answer the question before sending another message","graph.title":"Graph runs","graph.running":"{count} running","graph.emptySession":"Select a session to see its graph runs.","graph.emptyRuns":"No graph runs in this session yet.","graph.loadFailed":"Failed to load graph tasks","graph.unnamed":"Graph run","graph.tasks":"{done}/{total} tasks","graph.loadingTasks":"Loading tasks…","graph.noTasks":"No task checkpoints.","graph.stateLabel":"state: {state}","graph.tokens":"tokens: {count}","graph.justNow":"just now","graph.minutesAgo":"{count}m ago","graph.node.pending":"Pending","graph.node.running":"Running","graph.node.completed":"Done","graph.node.failed":"Failed","graph.node.blocked":"Blocked","graph.node.cancelled":"Cancelled","graph.node.interrupted":"Interrupted","graph.flow.pending":"Pending","graph.flow.running":"Running","graph.flow.completed":"Completed","graph.flow.failed":"Failed","graph.flow.cancelled":"Cancelled","graph.flow.convergence_exceeded":"Convergence exceeded","graph.flow.budget_exceeded":"Budget exceeded","delegation.mode.background":"background","delegation.mode.blocking":"blocking","delegation.handle.active":"active","delegation.handle.completed":"completed","delegation.handle.cancelled":"cancelled","delegation.handle.settled":"settled","delegation.handle.pending":"pending","delegation.handle.consumed_by_parent":"consumed by parent","delegation.handle.notified":"notified","delegation.handle.resume_queued":"resume queued","delegation.handle.resume_completed":"resume completed","delegation.completion":"Background delegation · generation {generation}","composer.messageAria":"Message the agent","composer.steerAria":"Steer the agent","composer.queueFollowUp":"Queue follow-up","composer.followUp":"Follow-up","composer.runContext":"Run configuration","composer.attachMenu":"Attachments and compaction","composer.queue.title":"Queued","composer.queue.aria":"Queued messages","composer.queue.count":"{count} queued","composer.queue.expand":"Expand queued messages","composer.queue.collapse":"Collapse queued messages","composer.queue.edit":"Edit queued message","composer.queue.steer":"Steer now","composer.queue.remove":"Remove queued message","composer.send":"Send","composer.stopRun":"Stop run","composer.modelSelect.triggerFallback":"Select model","composer.modelSelect.selectAria":"Select model","composer.modelSelect.aria":"Select model, current {model}","composer.modelSelect.ariaEffort":"Select model, current {model}, reasoning effort {effort}","composer.modelSelect.menu":"Model and reasoning effort","composer.modelSelect.model":"Model","composer.modelSelect.effort":"Effort","composer.modelSelect.emptyModels":"No models available.","composer.modelSelect.emptyEfforts":"This model provides no reasoning effort levels.","composer.permissionMode":"Permission mode","composer.heroTarget":"Hero target","composer.frozenForRun":"is frozen for this run","permission.discuss":"Read-only","permission.discuss.description":"Read-only tools pass. Writing files, running commands, and fetching the web are refused.","permission.ask":"Ask","permission.ask.description":"Read-only tools pass. Every other tool waits for your approval.","permission.auto":"Auto","permission.auto.description":"Everything the policy allows runs without asking you first.","composer.policyUnavailable":"Policy unavailable","composer.expanding":"Expanding prompt…","composer.queued":"Queued","composer.thinking.default":"Default","composer.thinking.low":"Low reasoning","composer.thinking.medium":"Medium reasoning","composer.thinking.high":"High reasoning","context.aria":"{percent} of context used","context.used":"of context used","context.system":"System prompt","context.hero":"Hero","context.rules":"Project rules","context.skills":"Skills","context.tools":"Tools","context.reminders":"Reminders","context.conversation":"Conversation","context.other":"Other","context.messages":"Messages","checkpoint.promptVersion":"Summary contract","checkpoint.contract":"Digest","inspector.noRun":"Send a message to inspect the prompt the model receives.","inspector.loading":"Loading the frozen run prompt…","inspector.run":"Run","inspector.frozen":"Frozen before the first model request. Nothing here is re-derived from current settings.","inspector.unrecorded":"This run did not record its prompt composition, so there is nothing to show.","inspector.selectedSkills":"Skills you attached","inspector.composition":"Prompt composition","inspector.sections":"{count} sections","inspector.prompt":"Frozen prompt text","inspector.sectionsDigest":"Sections","inspector.composedDigest":"Composed","inspector.baseDigest":"Base prompt","inspector.transcript":"Private run transcript","inspector.transcriptNote":"The model-visible messages this run generated, kept for intact resume. Run-private: it is never part of the conversation timeline.","inspector.transcriptEmpty":"This run generated no transcript rows.","inspector.transcriptPrivate":"private","inspector.transcriptThinking":"Reasoning","inspector.transcriptCall":"Call","inspector.transcriptResult":"Result","inspector.transcriptError":"Error","inspector.transcriptImage":"Image {width}×{height}","inspector.transcriptUnknown":"Unrecognized block: {type}","inspector.transcriptOlder":"Load older messages","inspector.mcp":"MCP servers","inspector.mcpNone":"No MCP server was frozen for this run.","inspector.mcpUnavailable":"unavailable","inspector.mcpRequired":"required","inspector.mcpTools":"{count} tools","inspector.mcpProtocol":"protocol","inspector.mcpInstructions":"Instructions from the server","inspector.skillCatalog":"Skill catalog","inspector.catalog.materialized":"materialized","inspector.catalog.disabled":"skipped, read denied by the frozen tool policy","stats.section":"Session figures","stats.counts":"{turns} turns · {steps} steps","stats.llm":"LLM {duration}","stats.toolCall":"Tool call {duration}","stats.ttftAverage":"TTFT avg {duration}","stats.tokensPerSecond":"{throughput} tok/s","stats.cacheHit":"Cache hit {percent}%","stats.tokens":"Input {input} tok · Output {output} tok",copy:"Copy",copied:"Copied","message.branch":"Branch into a new conversation","message.branchUnavailable":"Available only on the last message of a completed turn","message.ranFor":"Ran for {duration}","message.ttft":"TTFT {seconds}s","message.tokensPerSecond":"{tps} tok/s","duration.seconds":"{seconds}s","duration.minutes":"{minutes}m{seconds}s","directory.title":"Select Workspace Directory","directory.home":"Home","directory.path":"Workspace directory path","directory.editPath":"Edit path","directory.newFolder":"New folder","directory.folderName":"Folder name","directory.createIn":'New folder in "{name}"',"directory.untitledFolder":"Untitled folder","directory.create":"Create","directory.cancel":"Cancel","directory.open":"Open","directory.opening":"Opening…","directory.loading":"Loading…","directory.truncated":"Too many folders to list; only the beginning is shown.","directory.showHidden":"Show hidden files","directory.roots":"Browse roots","empty.project.title":"Choose a project to start","empty.project.body":"Sessions, files, and runs are scoped per project. Choose or create a project from the top-left.","empty.project.choose":"Choose project…","empty.session.title":"Start a new conversation","empty.session.body":"No session selected in this project. Start a new conversation or pick one from the sidebar.","empty.session.create":"New session","empty.session.hint":"or choose an existing session on the left","empty.noModel":"No model configured — open Settings to add a provider and model.","welcome.headline":"Into the Unknown","welcome.preview":"Preview","settings.models.title":"Models","settings.models.intro":"Enter your API keys to use models from the following providers.","settings.models.edit":"Edit","settings.models.editProvider":"Edit {provider}","settings.models.remove":"Delete","settings.models.removeProvider":"Delete {provider}","settings.context.removeOverride":"Remove override {index}","settings.models.deleteTitle":"Delete {provider}?","settings.models.deleteDescription":"Deleting {provider} removes its configuration. Any credential it uses is managed elsewhere and will be kept.","settings.models.deleteDescriptionWithCredential":"Deleting {provider} removes its configuration and stored API key.","settings.models.deleteConfirm":"Delete {provider}","settings.models.deleting":"Deleting {provider}…","settings.models.add":"Add provider","settings.models.provider":"Provider","settings.models.close":"Close","settings.models.cancel":"Cancel","settings.models.apply":"Apply","settings.models.applying":"Applying…","settings.models.savedProvider":"Saved {provider}.","settings.models.credentialConfigured":"API key configured","settings.models.credentialMissing":"API key missing","settings.models.readOnly":"The settings document is read-only in this deployment.","settings.models.loadFailed":"Loading the provider directory failed","settings.models.conflict":"Someone else changed these settings while this card was open. Close it and reopen to edit the current values.","settings.models.retry":"Retry","settings.models.keyInput":"API key","settings.models.keyPlaceholder":"Enter your API key","settings.models.keyPlaceholderNative":"Enter an API key, or leave blank to use environment authentication","settings.models.keyStored":"Configured — enter a new value to replace","settings.models.keyEnvLocked":"Provided by the launch environment (read-only)","settings.models.customized":"Customized settings","settings.models.baseUrl":"Base URL","settings.models.baseUrlDefault":"Provider default","settings.models.models":"Models","settings.models.modelsInherited":"Using the adapter defaults","settings.models.modelsCustomized":"Customized model catalog","settings.models.resetModels":"Restore defaults","settings.models.model":"Model","settings.models.modelId":"Model ID","settings.models.modelName":"Display name","settings.models.modelNamePlaceholder":"Uses the model ID when empty","settings.models.contextWindow":"Context window","settings.models.contextWindowPlaceholder":"Uses the provider default","settings.models.maxTokens":"Max output tokens","settings.models.maxTokensPlaceholder":"Uses the provider default","settings.models.modelAdvanced":"Capacities","settings.models.addModel":"Add model","settings.models.removeModel":"Delete model","settings.models.modelsEmpty":"No models will be shown in the selector. Unlisted IDs can still be sent directly.","settings.models.keyBlank":"Enter the API key, or leave the field empty to keep the stored one.","settings.models.keyBlankNew":"Enter the API key, or leave the field empty if this provider authenticates another way.","settings.models.keyIllegalCharacters":"This API key is not in a valid format. Please check it.","settings.models.modelIdRequired":"Model ID is required.","settings.models.modelIdDuplicate":"Model ID must be unique.","settings.models.modelNameInvalid":"Display name cannot be empty.","settings.models.modelContextInvalid":"Context window must be a positive count, like 131072, 256K, or 1M.","settings.models.modelMaxTokensInvalid":"Max output tokens must be a positive count, like 8192, 64K, or 1M.","settings.models.advancedHint":"Other fields live in models.json; edit that file directly.","settings.models.modelCapacityInvalid":"A capacity must be a number, optionally suffixed K or M.","settings.models.modelDuplicate":"Each model ID may appear once.","settings.models.modelContextWindow":"Context window","settings.models.modelMaxTokens":"Max output tokens","settings.models.fetchModels":"Fetch available models","settings.models.fetching":"Asking the provider…","settings.models.fetchNeedsBaseUrl":"Enter the base URL first, then fetch.","settings.models.fetchEmpty":"The provider listed no models. Add them by hand.","settings.models.fetchTitle":"Choose models to add","settings.models.fetchDescription":"These are the models this provider has available. Choose the ones to add.","settings.models.fetchAdopt":"Add selected","settings.models.fetchSelectAll":"Select all","settings.models.fetchDeselectAll":"Deselect all","settings.models.customAdd":"Add a custom provider","settings.models.customTitle":"Custom provider","settings.models.customTag":"Custom","settings.models.customRoute":"Provider ID","settings.models.customRouteHint":"Lowercase identifier, starting with a letter, that uniquely names this provider in requests and as its credential name.","settings.models.customRouteInvalid":"Start with a lowercase letter; then lowercase letters, digits, and dashes.","settings.models.customRouteTaken":"A provider already uses this ID.","settings.models.customDisplayName":"Display name","settings.models.customApi":"API protocol","settings.models.customApiUnset":"Not selected","settings.models.customNeedsBaseUrl":"A custom provider needs a base URL.","settings.models.customNeedsModels":"A custom provider needs at least one model.","settings.models.create":"Create provider","settings.models.creating":"Creating…","settings.search.placeholder":"Search settings…","settings.search.aria":"Search settings","settings.search.clear":"Clear search","settings.search.empty":"No settings match “{query}”.","settings.status.saving":"Saving…","settings.status.saved":"Saved","settings.status.failed":"Save failed","conversation.toolBatch.ariaOne":"Tool batch with 1 action","conversation.toolBatch.ariaMany":"Tool batch with {count} actions","conversation.toolBatch.titleOne":"Tool activity","conversation.toolBatch.titleMany":"{count} tool activities","conversation.toolBatch.running":"Running {tool}…","conversation.toolBatch.failed":"{count} failed","conversation.toolBatch.pendingOne":"Pending tool activity","conversation.toolBatch.pendingMany":"{count} pending tool activities","conversation.approval.required":"Approval required","conversation.approval.panelAria":"Tool approval required","conversation.approval.delegationRequired":"Delegation approval required","conversation.approval.waiting":"Waiting","conversation.approval.batchOne":"Batch {iteration} · 1 action","conversation.approval.batchMany":"Batch {iteration} · {count} actions","conversation.approval.remember":"Remember for {scope} in this session","conversation.approval.rejectBatch":"Reject batch","conversation.approval.rejecting":"Rejecting…","conversation.approval.approveBatch":"Approve batch","conversation.approval.approving":"Approving…","conversation.approval.skills":"skills","conversation.approval.after":"after","conversation.approval.modelCalls":"model","conversation.approval.toolCalls":"tool","conversation.question.title":"A question for you","conversation.question.waiting":"The run is paused until you answer.","conversation.question.submitted":"Answer submitted.","conversation.question.multiHint":"Select one or more.","conversation.question.other":"Other","conversation.question.otherPlaceholder":"Type your answer","conversation.question.answered":"Answer","conversation.question.submit":"Submit answer","conversation.question.submitting":"Submitting…","conversation.tool.risk.readOnly":"Read only","conversation.tool.risk.localWrite":"Local write","conversation.tool.risk.shell":"Shell","conversation.tool.risk.external":"External","conversation.tool.risk.delegation":"Delegation","conversation.tool.risk.sensitive":"Sensitive","conversation.tool.state.done":"Done","conversation.tool.state.pending":"Pending","conversation.tool.state.running":"Running","conversation.tool.state.rejected":"Rejected","conversation.tool.state.interrupted":"Interrupted","conversation.tool.state.failed":"Failed","conversation.tool.arguments":"Arguments","conversation.tool.result":"Result","conversation.tool.errorOutput":"Error output","conversation.tool.noOutput":"No output","conversation.tool.noArguments":"No arguments recorded.","conversation.tool.incompleteArguments":"Arguments were incomplete.","conversation.tool.after":"after {names}","conversation.artifact.widget.aria":"Interactive preview of {name}","conversation.artifact.widget.scriptError":"This widget's code failed to run. The static part is still shown.","conversation.artifact.widget.externalBlocked":"An external dependency did not load; this may be the network or the frame's policy.","conversation.artifact.widget.timeout":"Interactive preview did not respond. The frame is still there; retrying reloads it.","conversation.artifact.widget.retry":"Retry","conversation.artifact.widget.viewSource":"Download source","conversation.thinking.reasoning":"Reasoning","conversation.attention.title":"Attention","conversation.attention.aria":"Attention ({count})","conversation.attention.pending":"{count} pending","conversation.attention.empty":"Nothing needs attention.","conversation.attention.retryBudget":"Retry budget increase awaits approval","conversation.attention.approvalRequired":"Approval required","conversation.attention.needsInput":"Delegated task needs your input","conversation.attention.completed":"Background delegation completed","conversation.attention.failed":"Background delegation failed","conversation.attention.dismiss":"Dismiss","conversation.attention.action":"action","conversation.attention.questionOne":"1 question","conversation.attention.questionMany":"{count} questions","conversation.attention.actionAnswerQuestion":"Answer question","conversation.attention.actionToolApproval":"Review tool call","conversation.attention.actionDelegationApproval":"Review delegation","conversation.attention.actionDelegationInput":"Provide input","conversation.chat.runInterrupted":"Run interrupted","conversation.chat.runFailed":"Run failed","conversation.chat.retry":"Retry","conversation.chat.retrying":"Retrying…","conversation.chat.attemptRetryable":"Attempt {attempt} can be retried safely.","conversation.chat.loadEarlier":"Load earlier messages","conversation.chat.loadingEarlier":"Loading earlier messages…","conversation.chat.loading":"Loading conversation…","conversation.chat.historyUnavailable":"Conversation history unavailable: {message}","conversation.chat.newConversation":"New conversation","conversation.chat.startHint":"Start with a question, file, or analysis task.","conversation.chat.dismissError":"Dismiss error","conversation.chat.recovery.sideEffect":"Retry is unavailable because tools may have changed external state.","conversation.chat.recovery.projectedOutput":"Retry is unavailable because this attempt already committed output.","conversation.chat.recovery.activeRun":"Another run is active.","conversation.chat.recovery.notActive":"This attempt is no longer on the active branch.","selection.quote":"Quote in composer","selection.copy":"Copy","selection.copied":"Copied","selection.explain":"Explain","selection.explainPrompt":"Explain this passage:","selection.source.chat":"Conversation","selection.aria":"Selection actions","message.expand":"Show full message","message.collapse":"Collapse message","conversation.rail.aria":"Conversation turns","conversation.rail.turn":"Turn {index}","conversation.rail.goTo":"Go to turn {index}: {label}","conversation.jumpLatest":"Jump to latest","conversation.newMessages":"New messages","conversation.compaction.aria":"Create context checkpoint","conversation.compaction.title":"Create context checkpoint","conversation.compaction.cancel":"Cancel","conversation.compaction.placeholder":"Optional focus for the checkpoint…","conversation.compaction.creating":"Creating…","conversation.compaction.confirm":"Create checkpoint","conversation.delegation.background":"Background delegation","conversation.delegation.active":"{count} active","conversation.delegation.settled":"all settled","conversation.delegation.running":"running in background…","rightPanel.files":"Files","rightPanel.graphs":"Graphs","rightPanel.status":"Status","rightPanel.pin":"Pin this channel","rightPanel.unpin":"Unpin this channel","rightPanel.close":"Close {name}","rightPanel.add":"Add a channel","rightPanel.launcherHint":"Choose a channel to show beside the conversation.","rightPanel.showNavigator":"Show the file navigator","rightPanel.hideNavigator":"Hide the file navigator","rightPanel.resizeNavigator":"Resize the file navigator","rightPanel.runsCount":"{count} runs","rightPanel.needsAttention":"Waiting for you"},"zh-CN":{"general.title":"通用","general.desc":"外观与工作区偏好设置。","general.appearance":"外观","general.permission":"默认权限","general.permission.desc":"应用于新建会话的权限预设。","general.language":"语言","language.en":"English","language.zh":"中文","sidebar.aria":"项目与会话","sidebar.newChat":"新对话","sidebar.newChatAria":"新对话","sidebar.selectProjectFirst":"请先选择项目","sidebar.heroes":"英雄","sidebar.graphs":"图谱","sidebar.searchSessions":"搜索会话","sidebar.search":"搜索","sidebar.clearSearch":"清除搜索","sidebar.sessions":"会话","sidebar.workspaces":"工作区","sidebar.refresh":"刷新会话","sidebar.loadingSessions":"加载会话中…","sidebar.chooseProject":"选择一个项目开始。","sidebar.newProject":"新建项目","sidebar.settings":"设置","sidebar.collapse":"收起侧边栏","sidebar.expand":"展开侧边栏","sidebar.openNav":"打开导航","sidebar.collapseNav":"收起导航","sidebar.closeNav":"关闭导航","sidebar.selectProject":"选择项目","sidebar.selectProjectEllipsis":"选择项目…","sidebar.unknown":"未知","sidebar.noProjects":"暂无项目","sidebar.addProject":"添加项目…","sidebar.addWorkspace":"添加工作区","sidebar.pin":"固定项目","sidebar.unpin":"取消固定","sidebar.loading":"加载中…","sidebar.noSessions":"暂无会话。","sidebar.noSessionsMatch":"没有匹配的会话","sidebar.showArchived":"显示已归档会话","sidebar.hideArchived":"隐藏已归档会话","sidebar.noArchived":"无已归档会话。","sidebar.chat":"个会话","sidebar.chats":"个会话","sidebar.rename":"重命名","sidebar.deleteProject":"删除项目","sidebar.renameProject":"重命名项目","sidebar.renameSession":"重命名会话","sidebar.newSession":"新建会话","sidebar.deleteProjectTitle":"删除 {name}?","sidebar.deleteProjectBody":"项目将从侧边栏移除。其工作区文件夹和会话数据仍保留在磁盘上。","sidebar.deleteProjectConfirm":"删除","sidebar.cancel":"取消","sidebar.save":"保存","sidebar.archive":"归档会话","sidebar.restore":"恢复会话","time.now":"刚刚","time.minutes":"分钟","time.hours":"小时","time.days":"天","time.months":"个月","time.years":"年","composer.dropFiles":"拖放图片或文本文件","composer.picker":"插入","composer.insert":"插入英雄、图谱、技能或文件","picker.selected":"已选","picker.filter":"筛选…","picker.expand":"展开分组","picker.collapse":"折叠分组","picker.readOnly":"只读","picker.empty":"没有匹配项。","picker.actions":"动作","picker.heroes":"英雄","picker.graphs":"图谱","picker.skills":"技能","picker.templates":"模板","picker.boundSkills":"由英雄加载","composer.targets":"本轮寻址","composer.removeHero":"移除英雄","composer.removeGraph":"移除图谱","composer.removeSkill":"移除技能","composer.hint.resizeAria":"调整输入框高度","composer.attachedFiles":"已附加文件","composer.removeImage":"移除图片","composer.remove":"移除","composer.configureRun":"配置运行","composer.runConfiguration":"运行配置","composer.target":"目标","composer.permission":"权限","composer.attach":"附加","composer.attachFiles":"附加文件","composer.attachImage":"附加图片","composer.compactContext":"压缩上下文","composer.placeholderCompacting":"正在压缩上下文","composer.placeholderSteer":"引导 Agent…(回车)","composer.placeholderNoSession":"选择一个工作区开始","composer.placeholderWelcome":"描述你想要构建的内容… / 调用指令 @ 文件或对话","composer.placeholderDefault":"输入消息…","composer.answerQuestionFirst":"请先回答上方的问题,再发送新消息","run.status.waitingAnswer":"等待你的回答","run.status.waitingApproval":"等待审批","run.status.waitingDelegation":"等待委托审批","run.status.waitingChildren":"委托的角色正在工作…","run.status.running":"运行中…","run.status.runningTool":"正在运行 {detail}…","run.status.reconnecting":"正在重连","run.status.steering":"正在引导…","run.status.cancelled":"已取消","run.status.compacting":"正在压缩上下文…","run.status.compactionQueued":"上下文压缩已排队…","run.status.compactionRetryWait":"{detail} 毫秒后重试压缩…","run.status.compactionRetry":"正在重试压缩…","run.status.checkpointReady":"上下文检查点已就绪","run.status.answerSubmitted":"回答已提交,正在恢复…","run.status.approvalGranted":"已批准,正在恢复…","run.status.approvalRejected":"已拒绝,正在恢复…","run.status.resuming":"正在恢复…","run.status.modelRetry":"{detail} 毫秒后重试模型…","run.status.preparingContext":"正在准备上下文…","run.status.preparingRunContext":"正在准备本轮上下文…","run.status.compactingRun":"正在压缩本轮上下文…","run.status.runCompactionRetry":"{detail} 毫秒后重试本轮压缩…","run.status.runContextCompacted":"本轮上下文已压缩","run.status.runCompactionSkipped":"已跳过本轮压缩","run.status.usingCheckpoint":"正在使用上下文检查点…","run.status.recoveringTool":"正在恢复被截断的工具调用…","run.status.outputTruncated":"模型输出被截断","run.status.usingModel":"正在使用 {detail}…","run.status.describingImage":"正在描述图片…","run.status.imageReady":"图片描述已就绪","run.status.completed":"已完成","run.status.interrupted":"已中断","run.status.sending":"正在发送…","run.status.uploadingImage":"正在上传图片…","run.status.cache":"缓存 {count}","run.status.answerQuestionFirst":"请先回答该问题,再发送其他消息","graph.title":"图运行","graph.running":"{count} 个进行中","graph.emptySession":"选择一个会话以查看它的图运行。","graph.emptyRuns":"这个会话还没有图运行。","graph.loadFailed":"图任务加载失败","graph.unnamed":"图运行","graph.tasks":"{done}/{total} 个任务","graph.loadingTasks":"正在加载任务…","graph.noTasks":"没有任务检查点。","graph.stateLabel":"状态:{state}","graph.tokens":"token:{count}","graph.justNow":"刚刚","graph.minutesAgo":"{count} 分钟前","graph.node.pending":"等待","graph.node.running":"运行中","graph.node.completed":"完成","graph.node.failed":"失败","graph.node.blocked":"阻塞","graph.node.cancelled":"已取消","graph.node.interrupted":"已中断","graph.flow.pending":"等待","graph.flow.running":"运行中","graph.flow.completed":"已完成","graph.flow.failed":"失败","graph.flow.cancelled":"已取消","graph.flow.convergence_exceeded":"超过收敛轮次","graph.flow.budget_exceeded":"超过预算","delegation.mode.background":"后台","delegation.mode.blocking":"阻塞","delegation.handle.active":"进行中","delegation.handle.completed":"已完成","delegation.handle.cancelled":"已取消","delegation.handle.settled":"已结束","delegation.handle.pending":"待消费","delegation.handle.consumed_by_parent":"父会话已消费","delegation.handle.notified":"已通知","delegation.handle.resume_queued":"已排队续跑","delegation.handle.resume_completed":"续跑完成","delegation.completion":"后台委托 · 第 {generation} 代","composer.messageAria":"给 Agent 发消息","composer.steerAria":"引导 Agent","composer.queueFollowUp":"排队追问","composer.followUp":"追问","composer.runContext":"运行配置","composer.attachMenu":"附件与上下文压缩","composer.queue.title":"待发送","composer.queue.aria":"待发送消息","composer.queue.count":"{count} 条待发送","composer.queue.expand":"展开待发送消息","composer.queue.collapse":"收起待发送消息","composer.queue.edit":"编辑待发送消息","composer.queue.steer":"立即引导","composer.queue.remove":"移除待发送消息","composer.send":"发送","composer.stopRun":"停止运行","composer.modelSelect.triggerFallback":"选择模型","composer.modelSelect.selectAria":"选择模型","composer.modelSelect.aria":"选择模型,当前 {model}","composer.modelSelect.ariaEffort":"选择模型,当前 {model},推理等级 {effort}","composer.modelSelect.menu":"模型与推理等级","composer.modelSelect.model":"模型","composer.modelSelect.effort":"推理等级","composer.modelSelect.emptyModels":"没有可用的模型。","composer.modelSelect.emptyEfforts":"当前模型未提供推理等级。","composer.permissionMode":"权限模式","composer.heroTarget":"英雄目标","composer.frozenForRun":"已为本轮运行冻结","permission.discuss":"只读","permission.discuss.description":"只读工具直接放行;写文件、执行命令、联网抓取一律拒绝。","permission.ask":"逐项审批","permission.ask.description":"只读工具直接放行;其余工具逐个等你批准。","permission.auto":"全部放行","permission.auto.description":"策略允许的工具全部直接执行,不再询问。","composer.policyUnavailable":"策略不可用","composer.expanding":"正在展开提示词…","composer.queued":"排队","composer.thinking.default":"默认","composer.thinking.low":"低强度推理","composer.thinking.medium":"中等推理","composer.thinking.high":"高强度推理","context.aria":"上下文已用 {percent}","context.used":"上下文已用","context.system":"系统提示词","context.hero":"英雄","context.rules":"项目规则","context.skills":"技能","context.tools":"工具","context.reminders":"运行时提醒","context.conversation":"对话","context.other":"其他","context.messages":"对话消息","checkpoint.promptVersion":"摘要契约版本","checkpoint.contract":"契约摘要","inspector.noRun":"发送一条消息后,可在此查看模型实际收到的提示词。","inspector.loading":"正在读取本次 Run 冻结的提示词…","inspector.run":"Run","inspector.frozen":"在首次模型请求前冻结。此处内容不会根据当前设置重新推导。","inspector.unrecorded":"该 Run 未记录提示词组成,无可显示内容。","inspector.selectedSkills":"你附加的技能","inspector.composition":"提示词组成","inspector.sections":"共 {count} 段","inspector.prompt":"冻结的提示词全文","inspector.sectionsDigest":"组成","inspector.composedDigest":"全文","inspector.baseDigest":"基础提示词","inspector.transcript":"Run 私有 transcript","inspector.transcriptNote":"本 Run 生成的模型可见消息,用于完整恢复。属 Run 私有,不会进入对话时间线。","inspector.transcriptEmpty":"该 Run 未产生 transcript 记录。","inspector.transcriptPrivate":"私有","inspector.transcriptThinking":"推理","inspector.transcriptCall":"调用","inspector.transcriptResult":"结果","inspector.transcriptError":"错误","inspector.transcriptImage":"图片 {width}×{height}","inspector.transcriptUnknown":"未识别的块:{type}","inspector.transcriptOlder":"加载更早的消息","inspector.mcp":"MCP 服务器","inspector.mcpNone":"该 Run 未冻结任何 MCP 服务器。","inspector.mcpUnavailable":"不可用","inspector.mcpRequired":"必需","inspector.mcpTools":"{count} 个工具","inspector.mcpProtocol":"协议","inspector.mcpInstructions":"服务器声明的工作说明","inspector.skillCatalog":"Skill 目录","inspector.catalog.materialized":"已物化","inspector.catalog.disabled":"已跳过(冻结的工具策略禁止 read)","stats.section":"会话统计","stats.counts":"{turns} 轮 · {steps} 步","stats.llm":"LLM {duration}","stats.toolCall":"工具调用 {duration}","stats.ttftAverage":"首 token 平均 {duration}","stats.tokensPerSecond":"{throughput} tok/s","stats.cacheHit":"缓存命中 {percent}%","stats.tokens":"输入 {input} tok · 输出 {output} tok",copy:"复制",copied:"已复制","message.branch":"在新对话中分支","message.branchUnavailable":"仅可从已完成轮次的最后一条消息分支","message.ranFor":"用时 {duration}","message.ttft":"首 token {seconds}秒","message.tokensPerSecond":"{tps} tok/s","duration.seconds":"{seconds}秒","duration.minutes":"{minutes}分{seconds}秒","directory.title":"选择工作区目录","directory.home":"主目录","directory.path":"工作区目录路径","directory.editPath":"编辑路径","directory.newFolder":"新建文件夹","directory.folderName":"文件夹名称","directory.createIn":'在"{name}"中新建文件夹',"directory.untitledFolder":"未命名文件夹","directory.create":"创建","directory.cancel":"取消","directory.open":"打开","directory.opening":"正在打开…","directory.loading":"加载中…","directory.truncated":"文件夹过多,仅显示开头部分。","directory.showHidden":"显示隐藏文件","directory.roots":"浏览根目录","empty.project.title":"选择一个项目开始","empty.project.body":"会话、文件和运行记录都按项目隔离。从左上角选择或新建项目。","empty.project.choose":"选择项目…","empty.session.title":"开始一段新对话","empty.session.body":"当前项目下没有选中的会话。新建一个会话开始对话。","empty.session.create":"新建会话","empty.session.hint":"或从左侧选择已有会话","empty.noModel":"尚未配置模型 — 打开设置添加 provider 和模型。","welcome.headline":"探索未至之境","welcome.preview":"预览版","settings.models.title":"模型","settings.models.intro":"填入各提供方的 API 密钥即可使用其模型。","settings.models.edit":"编辑","settings.models.editProvider":"编辑 {provider}","settings.models.remove":"删除","settings.models.removeProvider":"删除 {provider}","settings.context.removeOverride":"移除覆盖项 {index}","settings.models.deleteTitle":"删除 {provider}?","settings.models.deleteDescription":"删除 {provider} 会移除其配置;其使用的凭证(如有)由其他位置管理,将会保留。","settings.models.deleteDescriptionWithCredential":"删除 {provider} 会移除其配置和存储的 API 密钥。","settings.models.deleteConfirm":"删除 {provider}","settings.models.deleting":"正在删除 {provider}…","settings.models.add":"添加提供方","settings.models.provider":"提供方","settings.models.close":"关闭","settings.models.cancel":"取消","settings.models.apply":"保存","settings.models.applying":"保存中…","settings.models.savedProvider":"已保存 {provider}。","settings.models.credentialConfigured":"API 密钥已配置","settings.models.credentialMissing":"API 密钥缺失","settings.models.readOnly":"当前部署的设置文档为只读。","settings.models.loadFailed":"加载提供方目录失败","settings.models.conflict":"这张卡片打开期间,这些设置已被其他地方改动。请关闭后重新打开,在当前值上编辑。","settings.models.retry":"重试","settings.models.keyInput":"API 密钥","settings.models.keyPlaceholder":"输入 API 密钥","settings.models.keyPlaceholderNative":"输入 API 密钥,或留空使用环境认证","settings.models.keyStored":"已配置——输入新值可替换","settings.models.keyEnvLocked":"由启动环境提供(只读)","settings.models.customized":"自定义设置","settings.models.baseUrl":"API 地址","settings.models.baseUrlDefault":"提供方默认","settings.models.models":"模型目录","settings.models.modelsInherited":"正在使用适配器默认模型","settings.models.modelsCustomized":"已自定义模型目录","settings.models.resetModels":"恢复默认模型","settings.models.model":"模型","settings.models.modelId":"模型 ID","settings.models.modelName":"显示名称","settings.models.modelNamePlaceholder":"留空时使用模型 ID","settings.models.contextWindow":"上下文窗口","settings.models.contextWindowPlaceholder":"使用提供方默认值","settings.models.maxTokens":"最大输出 token 数","settings.models.maxTokensPlaceholder":"使用提供方默认值","settings.models.modelAdvanced":"容量","settings.models.addModel":"添加模型","settings.models.removeModel":"删除模型","settings.models.modelsEmpty":"模型选择器中将不显示任何模型;目录外 ID 仍可直接发送。","settings.models.keyBlank":"请输入 API 密钥;留空则保持已存储的密钥。","settings.models.keyBlankNew":"请输入 API 密钥;若该提供方以其他方式鉴权,可以留空。","settings.models.keyIllegalCharacters":"该 API 密钥格式错误,请检查。","settings.models.modelIdRequired":"模型 ID 不能为空。","settings.models.modelIdDuplicate":"模型 ID 不能重复。","settings.models.modelNameInvalid":"显示名称不能为空。","settings.models.modelContextInvalid":"上下文窗口必须是正数,例如 131072、256K 或 1M。","settings.models.modelMaxTokensInvalid":"最大输出 token 数必须是正数,例如 8192、64K 或 1M。","settings.models.advancedHint":"其余字段位于 models.json 中,请直接编辑该文件。","settings.models.modelCapacityInvalid":"容量需为数字,可加 K 或 M 后缀。","settings.models.modelDuplicate":"每个模型 ID 只能出现一次。","settings.models.modelContextWindow":"上下文窗口","settings.models.modelMaxTokens":"最大输出 token","settings.models.fetchModels":"获取可用模型","settings.models.fetching":"正在询问提供方…","settings.models.fetchNeedsBaseUrl":"请先填写 API 地址,再获取。","settings.models.fetchEmpty":"该提供方没有列出任何模型,请手动添加。","settings.models.fetchTitle":"选择要添加的模型","settings.models.fetchDescription":"以下是模型提供方的可用模型,勾选要添加的模型。","settings.models.fetchAdopt":"添加所选","settings.models.fetchSelectAll":"全选","settings.models.fetchDeselectAll":"取消全选","settings.models.customAdd":"添加自定义提供方","settings.models.customTitle":"自定义提供方","settings.models.customTag":"自定义","settings.models.customRoute":"Provider ID","settings.models.customRouteHint":"以小写字母开头的标识,在请求中唯一标识该提供方,并用于派生凭据名。","settings.models.customRouteInvalid":"需以小写字母开头,之后可用小写字母、数字和短横线。","settings.models.customRouteTaken":"已有提供方使用了这个 ID。","settings.models.customDisplayName":"显示名称","settings.models.customApi":"API 协议","settings.models.customApiUnset":"未选择","settings.models.customNeedsBaseUrl":"自定义提供方需要填写 API 地址。","settings.models.customNeedsModels":"自定义提供方至少需要一个模型。","settings.models.create":"创建提供方","settings.models.creating":"创建中…","settings.search.placeholder":"搜索设置…","settings.search.aria":"搜索设置","settings.search.clear":"清除搜索","settings.search.empty":"没有匹配“{query}”的设置。","settings.status.saving":"保存中…","settings.status.saved":"已保存","settings.status.failed":"保存失败","conversation.toolBatch.ariaOne":"包含 1 个操作的工具批次","conversation.toolBatch.ariaMany":"包含 {count} 个操作的工具批次","conversation.toolBatch.titleOne":"工具活动","conversation.toolBatch.titleMany":"{count} 个工具活动","conversation.toolBatch.running":"正在运行 {tool}…","conversation.toolBatch.failed":"{count} 个失败","conversation.toolBatch.pendingOne":"待处理的工具操作","conversation.toolBatch.pendingMany":"{count} 个待处理工具操作","conversation.approval.required":"需要审批","conversation.approval.panelAria":"需要工具审批","conversation.approval.delegationRequired":"需要委托审批","conversation.approval.waiting":"等待中","conversation.approval.batchOne":"第 {iteration} 批 · 1 个操作","conversation.approval.batchMany":"第 {iteration} 批 · {count} 个操作","conversation.approval.remember":"在本会话中记住对 {scope} 的授权","conversation.approval.rejectBatch":"拒绝本批","conversation.approval.rejecting":"拒绝中…","conversation.approval.approveBatch":"批准本批","conversation.approval.approving":"批准中…","conversation.approval.skills":"技能","conversation.approval.after":"依赖","conversation.approval.modelCalls":"模型","conversation.approval.toolCalls":"工具","conversation.question.title":"需要你确认","conversation.question.waiting":"回答后继续运行。","conversation.question.submitted":"回答已提交。","conversation.question.multiHint":"可多选。","conversation.question.other":"其他","conversation.question.otherPlaceholder":"输入答案","conversation.question.answered":"回答","conversation.question.submit":"提交回答","conversation.question.submitting":"提交中…","conversation.tool.risk.readOnly":"只读","conversation.tool.risk.localWrite":"本地写入","conversation.tool.risk.shell":"Shell","conversation.tool.risk.external":"外部","conversation.tool.risk.delegation":"委托","conversation.tool.risk.sensitive":"敏感","conversation.tool.state.done":"完成","conversation.tool.state.pending":"等待中","conversation.tool.state.running":"运行中","conversation.tool.state.rejected":"已拒绝","conversation.tool.state.interrupted":"已中断","conversation.tool.state.failed":"失败","conversation.tool.arguments":"参数","conversation.tool.result":"结果","conversation.tool.errorOutput":"错误输出","conversation.tool.noOutput":"无输出","conversation.tool.noArguments":"未记录参数。","conversation.tool.incompleteArguments":"参数不完整。","conversation.tool.after":"依赖 {names}","conversation.artifact.widget.aria":"{name} 的交互预览","conversation.artifact.widget.scriptError":"这个 widget 的脚本执行失败,静态内容仍然显示。","conversation.artifact.widget.externalBlocked":"外部依赖未加载,可能是网络或画布策略限制。","conversation.artifact.widget.timeout":"交互预览没有响应。画布仍在原处,重试会重新加载。","conversation.artifact.widget.retry":"重试","conversation.artifact.widget.viewSource":"下载源码","conversation.thinking.reasoning":"推理过程","conversation.attention.title":"待处理","conversation.attention.aria":"待处理({count})","conversation.attention.pending":"{count} 项待处理","conversation.attention.empty":"暂无需要处理的事项。","conversation.attention.retryBudget":"重试预算增加待审批","conversation.attention.approvalRequired":"需要审批","conversation.attention.needsInput":"委托任务需要你的输入","conversation.attention.completed":"后台委托已完成","conversation.attention.failed":"后台委托失败","conversation.attention.dismiss":"忽略","conversation.attention.action":"操作","conversation.attention.questionOne":"1 个问题","conversation.attention.questionMany":"{count} 个问题","conversation.attention.actionAnswerQuestion":"回答问题","conversation.attention.actionToolApproval":"查看工具调用","conversation.attention.actionDelegationApproval":"查看委托","conversation.attention.actionDelegationInput":"提供输入","conversation.chat.runInterrupted":"运行已中断","conversation.chat.runFailed":"运行失败","conversation.chat.retry":"重试","conversation.chat.retrying":"重试中…","conversation.chat.attemptRetryable":"第 {attempt} 次尝试可以安全重试。","conversation.chat.loadEarlier":"加载更早消息","conversation.chat.loadingEarlier":"正在加载更早消息…","conversation.chat.loading":"正在加载会话…","conversation.chat.historyUnavailable":"会话历史不可用:{message}","conversation.chat.newConversation":"新会话","conversation.chat.startHint":"输入问题、文件或分析任务开始。","conversation.chat.dismissError":"关闭错误","conversation.chat.recovery.sideEffect":"无法重试:工具可能已改变外部状态。","conversation.chat.recovery.projectedOutput":"无法重试:本次尝试已经提交输出。","conversation.chat.recovery.activeRun":"另一个运行正在进行。","conversation.chat.recovery.notActive":"本次尝试已不在活动分支上。","selection.quote":"引用到输入框","selection.copy":"复制","selection.copied":"已复制","selection.explain":"解释","selection.explainPrompt":"请解释这段内容:","selection.source.chat":"对话","selection.aria":"选区操作","message.expand":"展开全文","message.collapse":"收起","conversation.rail.aria":"对话轮次","conversation.rail.turn":"第 {index} 轮","conversation.rail.goTo":"跳到第 {index} 轮:{label}","conversation.jumpLatest":"回到最新","conversation.newMessages":"有新消息","conversation.compaction.aria":"创建上下文检查点","conversation.compaction.title":"创建上下文检查点","conversation.compaction.cancel":"取消","conversation.compaction.placeholder":"可选的检查点关注点…","conversation.compaction.creating":"创建中…","conversation.compaction.confirm":"创建检查点","conversation.delegation.background":"后台委托","conversation.delegation.active":"{count} 个进行中","conversation.delegation.settled":"全部已结束","conversation.delegation.running":"后台运行中…","rightPanel.files":"文件","rightPanel.graphs":"图谱","rightPanel.status":"状态","rightPanel.pin":"固定此通道","rightPanel.unpin":"取消固定此通道","rightPanel.close":"关闭 {name}","rightPanel.add":"添加通道","rightPanel.launcherHint":"选择一个要显示在对话旁的通道。","rightPanel.showNavigator":"显示文件导航","rightPanel.hideNavigator":"隐藏文件导航","rightPanel.resizeNavigator":"调整文件导航宽度","rightPanel.runsCount":"{count} 个运行","rightPanel.needsAttention":"等待你处理"}};function c(e,t,o){let n=a[e]?.[t]??a.en[t]??t;return o?n.replace(/\{(\w+)\}/g,(e,t)=>Object.hasOwn(o,t)?String(o[t]):e):n}e.s(["translate",0,c],426);let l=(0,o.createContext)({locale:"en",setLocale:()=>{}});function d(){return(0,o.useContext)(l)}e.s(["LocaleProvider",0,function({children:e}){let[n,a]=(0,o.useState)(()=>s()),c=(0,o.useCallback)(e=>{a(e),r(e),i(e)},[]);(0,o.useEffect)(()=>{i(n)},[n]);let d=(0,o.useMemo)(()=>({locale:n,setLocale:c}),[n,c]);return(0,t.jsx)(l.Provider,{value:d,children:e})},"useLocale",0,d,"useT",0,function(){let{locale:e}=d();return(0,o.useCallback)((t,o)=>c(e,t,o),[e])}],27437)},9323,e=>{"use strict";let t="ennote:worker-generation-changed",o=null,n=0,s=new Set;class r extends Error{constructor(){super("Worker restarted; discarding data from the previous connection"),this.name="WorkerGenerationChangedError"}}class i extends Error{constructor(){super("The Worker is unreachable. Ennote is read-only until it returns."),this.name="WorkerUnreachableError"}}let a="unknown",c=new Set;function l(e){if(a!==e)for(let t of(a=e,c))t()}let d="X-Ennote-Worker-Instance";function p(){return u??=h().finally(()=>{u=null})}let u=null;function m(){return"unreachable"!==a&&l("unknown"),"unknown"}function g(){return l("unreachable"),"unreachable"}async function h(){let e;try{e=await fetch(f("/v1/health/live"),{method:"GET",cache:"no-store",signal:function(){if("function"==typeof AbortSignal.timeout)return AbortSignal.timeout(3e3)}()})}catch(t){let e;return"TimeoutError"===(e=t?.name)||"AbortError"===e?m():g()}return e.headers.has(d)?(l("reachable"),"reachable"):502===e.status||504===e.status?g():(401===e.status||e.status,m())}let v=null,y=new Set(["GET","HEAD","OPTIONS"]);function f(e){return e.startsWith("/api/worker/")?e:`/api/worker${e}`}async function k(e,c){var l=c;if("unreachable"===a&&!y.has((l?.method??"GET").toUpperCase()))throw new i;let p=n,u=await fetch(f(e),c);return function(e,i){let a=e.headers.get(d);if(a){if(null===o)o=a;else if(o!==a)throw s.has(a)||(s.add(o),o=a,n+=1,window.dispatchEvent(new CustomEvent(t,{detail:{instanceId:a,generation:n}}))),new r}if(i!==n)throw new r}(u,p),u}async function b(e,t){let o=await k(e,t),n=await o.json().catch(()=>({}));if(!o.ok||n.error)throw Error(n.error?.message??`HTTP ${o.status}`);return n.data}async function w(e,t,o){let n,s,r=new Headers(o?.headers);r.has("Accept")||r.set("Accept","text/event-stream");let i=await k(e,{...o,headers:r});if(!i.ok)throw Error(await C(i));let a=i.body?.getReader();if(!a)throw Error("Worker event stream has no response body");let c=new TextDecoder,l="",d=[],p=e=>{let o=e.endsWith("\r")?e.slice(0,-1):e;if(o.startsWith("id:"))n=o.slice(3).trim();else if(o.startsWith("event:"))s=o.slice(6).trim();else if(o.startsWith("data:"))d.push(o.slice(5).trimStart());else if(""===o){if(d.length>0)try{t({id:n,event:s,data:JSON.parse(d.join("\n"))})}catch{}n=void 0,s=void 0,d=[]}};try{for(;;){let{done:e,value:t}=await a.read();if(e)break;let o=(l+=c.decode(t,{stream:!0})).split("\n");for(let e of(l=o.pop()??"",o))p(e)}(l+=c.decode())&&p(l),d.length>0&&p("")}finally{a.releaseLock()}}async function C(e){let t=await e.json().catch(()=>({}));return t.error?.message??`HTTP ${e.status}`}e.s(["WORKER_GENERATION_CHANGED_EVENT",0,t,"apiEventStream",0,w,"apiFetch",0,b,"apiResponse",0,k,"getWorkerReachability",0,function(){return a},"probeWorkerReachability",0,p,"subscribeWorkerReachability",0,function(e){return c.add(e),function(){if(v)return;let e={timer:void 0};v=e;let t=async()=>{try{await p()}catch{}finally{v===e&&(e.timer=setTimeout(()=>{t()},"unreachable"===a?5e3:2e4))}};t()}(),()=>{c.delete(e),0===c.size&&v&&(clearTimeout(v.timer),v=null)}},"workerAPIPath",0,f])},85026,19172,51761,e=>{"use strict";var t=e.i(18050),o=e.i(71645),n=e.i(9323);function s(e){return null!=e&&!e.activeLeafMessageId}e.s(["isBlankSession",0,s],19172);let r="ennote-selected-project";function i(e){try{let t=localStorage.getItem(e);return t&&t.length>0?t:null}catch{return null}}function a(e,t){try{t?localStorage.setItem(e,t):localStorage.removeItem(e)}catch{}}function c(e){if(0===e.length)return;let t=e[0],o=Date.parse(t.updatedAt)||Date.parse(t.createdAt)||0;for(let n of e.slice(1)){let e=Date.parse(n.updatedAt)||Date.parse(n.createdAt)||0;e>o&&(t=n,o=e)}return t.id}async function l(e,t){let o=(t.some(t=>t.projectId===e)?t.filter(t=>t.projectId===e):await (0,n.apiFetch)(`/v1/projects/${encodeURIComponent(e)}/sessions?status=active`)).find(s);if(o)return o;let r=await (0,n.apiFetch)(`/v1/projects/${encodeURIComponent(e)}/sessions`,{method:"POST",body:JSON.stringify({title:"New Chat"})});if(!r?.id)throw Error("Failed to create session");return r}e.s(["SELECTED_PROJECT_KEY",0,r,"SELECTED_SESSION_KEY",0,"ennote-selected-session","readStoredId",0,i,"recentProjectId",0,c,"reuseOrCreateBlankSession",0,l,"writeStoredId",0,a],51761);let d="ennote-pinned-projects",p=(0,o.createContext)(null);e.s(["WorkspaceProvider",0,function({children:e}){let[s,l]=(0,o.useState)([]),[u,m]=(0,o.useState)(!1),[g,h]=(0,o.useState)(null),[v,y]=(0,o.useState)(!1),[f,k]=(0,o.useState)(void 0),[b,w]=(0,o.useState)(!1),[C,S]=(0,o.useState)(!1),[P,A]=(0,o.useState)(new Map),[R,x]=(0,o.useState)(()=>{try{let e=localStorage.getItem(d),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}});(0,o.useEffect)(()=>{(0,n.apiFetch)("/v1/projects").then(e=>{l(e),h(t=>{let o,n=t&&e.some(e=>e.id===t)?t:(o=i(r))&&e.some(e=>e.id===o)?o:c(e)??null;return a(r,n),n})}).catch(()=>{}).finally(()=>m(!0))},[]);let I=(0,o.useCallback)(e=>{y(!1),h(e),a(r,e)},[]),T=(0,o.useCallback)(e=>{k(e),y(!0)},[]),E=(0,o.useCallback)(()=>{y(!1),k(void 0)},[]),j=(0,o.useCallback)(()=>{S(!1),w(!0)},[]),D=(0,o.useCallback)(async(e,t)=>{S(!0);try{let o=await (0,n.apiFetch)("/v1/projects",{method:"POST",body:JSON.stringify({name:e,hostPath:t})});w(!1),o.workspace&&A(e=>new Map(e).set(o.project.id,o.workspace)),l(await (0,n.apiFetch)("/v1/projects")),I(o.project.id)}finally{S(!1)}},[I]),N=(0,o.useCallback)(()=>{C||w(!1)},[C]),q=(0,o.useCallback)(e=>{x(t=>{let o=t.includes(e)?t.filter(t=>t!==e):[...t,e];try{localStorage.setItem(d,JSON.stringify(o))}catch{}return o})},[]),M=(0,o.useCallback)(async(e,t)=>{let o=await (0,n.apiFetch)(`/v1/projects/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify({name:t})});l(t=>t.map(t=>t.id===e?o:t))},[]),O=(0,o.useCallback)(async e=>{await (0,n.apiFetch)(`/v1/projects/${encodeURIComponent(e)}`,{method:"DELETE"}),l(t=>t.filter(t=>t.id!==e)),A(t=>{let o=new Map(t);return o.delete(e),o}),x(t=>t.filter(t=>t!==e)),h(t=>t!==e?t:(a(r,null),null))},[]),F=(0,o.useCallback)(e=>P.get(e),[P]);return(0,t.jsx)(p.Provider,{value:{projects:s,projectsReady:u,selectedProject:g,switchProject:I,createProjectOpen:b,openCreateProject:j,confirmCreateProject:D,cancelCreateProject:N,createProjectBusy:C,settingsOpen:v,settingsTab:f,openSettings:T,closeSettings:E,pinnedProjectIds:R,togglePinProject:q,renameProject:M,deleteProject:O,workspaceFor:F},children:e})},"pinnedProjectsStorageKey",0,d,"useWorkspace",0,function(){let e=(0,o.useContext)(p);if(!e)throw Error("useWorkspace must be used inside <WorkspaceProvider>");return e}],85026)}]);