@seqyuan/ennote 0.1.2 → 0.2.1
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.
- package/README.md +16 -2
- package/bin/ennote.js +68 -5
- package/out/404.html +1 -1
- package/out/__next.__PAGE__.txt +3 -3
- package/out/__next._full.txt +18 -14
- package/out/__next._head.txt +4 -4
- package/out/__next._index.txt +8 -4
- package/out/__next._tree.txt +3 -2
- package/out/_next/static/chunks/0e~k9df0bajhc.js +1 -0
- package/out/_next/static/chunks/0g-kg938ndquq.js +1 -0
- package/out/_next/static/chunks/0idisn4yqj2rr.js +5 -0
- package/out/_next/static/chunks/{0y__3w-32_gdd.js → 0j.ajm8uzo2ki.js} +1 -1
- package/out/_next/static/chunks/0l-yuxi7.69...css +4 -0
- package/out/_next/static/chunks/{0e845emqp7s-j.js → 0pj391wb1h7.m.js} +1 -1
- package/out/_next/static/chunks/0ri8s9~7lcxyn.css +1 -0
- package/out/_next/static/chunks/{0oyu_2qstzqx..js → 0s_nb9cy-6day.js} +1 -1
- package/out/_next/static/chunks/{0qgo4othljach.js → 0twsdyb7~zp7n.js} +1 -1
- package/out/_not-found/__next._full.txt +19 -15
- package/out/_not-found/__next._head.txt +4 -4
- package/out/_not-found/__next._index.txt +8 -4
- package/out/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/out/_not-found/__next._not-found.txt +3 -3
- package/out/_not-found/__next._tree.txt +3 -2
- package/out/_not-found.html +1 -1
- package/out/_not-found.txt +19 -15
- package/out/graphs/__next._full.txt +21 -0
- package/out/graphs/__next._head.txt +6 -0
- package/out/graphs/__next._index.txt +9 -0
- package/out/graphs/__next._tree.txt +3 -0
- package/out/graphs/__next.graphs.__PAGE__.txt +6 -0
- package/out/graphs/__next.graphs.txt +5 -0
- package/out/graphs.html +1 -0
- package/out/graphs.txt +21 -0
- package/out/index.html +2 -2
- package/out/index.txt +18 -14
- package/out/roles/__next._full.txt +21 -0
- package/out/roles/__next._head.txt +6 -0
- package/out/roles/__next._index.txt +9 -0
- package/out/roles/__next._tree.txt +3 -0
- package/out/roles/__next.roles.__PAGE__.txt +6 -0
- package/out/roles/__next.roles.txt +5 -0
- package/out/roles.html +1 -0
- package/out/roles.txt +21 -0
- package/package.json +2 -1
- package/out/_next/static/chunks/0av-t476stj42.css +0 -1
- package/out/_next/static/chunks/0~7h.1i48.kpy.js +0 -1
- package/out/_next/static/chunks/17pcd1_qg0yok.js +0 -2
- /package/out/_next/static/{KHwcWECSywkW0ivIS1mH7 → KIuAhMlwtN3Tw5BdPWx9k}/_buildManifest.js +0 -0
- /package/out/_next/static/{KHwcWECSywkW0ivIS1mH7 → KIuAhMlwtN3Tw5BdPWx9k}/_clientMiddlewareManifest.js +0 -0
- /package/out/_next/static/{KHwcWECSywkW0ivIS1mH7 → KIuAhMlwtN3Tw5BdPWx9k}/_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),s=e.i(71645);let o="ennote-locale";function r(){try{let e=window.localStorage.getItem(o);if("en"===e||"zh-CN"===e)return e}catch{}return"en"}function i(e){try{window.localStorage.setItem(o,e)}catch{}}function n(e){"u">typeof document&&(document.documentElement.lang=e)}e.s(["LOCALES",0,["en","zh-CN"],"applyLocaleAttribute",0,n,"readLocale",0,r,"writeLocale",0,i],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.roles":"Roles","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.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.placeholderHero":"Describe what you want to build… / commands, @ files or sessions","composer.placeholderDefault":"Type a message…","composer.messageAria":"Message the agent","composer.steerAria":"Steer the agent","composer.queueFollowUp":"Queue follow-up","composer.followUp":"Follow-up","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.roleTarget":"Role target","composer.frozenForRun":"is frozen for this run","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.tools":"Tools","context.messages":"Messages","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","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.","hero.headline":"Into the Unknown","hero.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.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…"},"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.roles":"角色","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.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.placeholderHero":"描述你想要构建的内容… / 调用指令 @ 文件或对话","composer.placeholderDefault":"输入消息…","composer.messageAria":"给 Agent 发消息","composer.steerAria":"引导 Agent","composer.queueFollowUp":"排队追问","composer.followUp":"追问","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.roleTarget":"角色目标","composer.frozenForRun":"已为本轮运行冻结","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.tools":"工具","context.messages":"对话消息","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":"显示隐藏文件","empty.project.title":"选择一个项目开始","empty.project.body":"会话、文件和运行记录都按项目隔离。从左上角选择或新建项目。","empty.project.choose":"选择项目…","empty.session.title":"开始一段新对话","empty.session.body":"当前项目下没有选中的会话。新建一个会话开始对话。","empty.session.create":"新建会话","empty.session.hint":"或从左侧选择已有会话","empty.noModel":"尚未配置模型 — 打开设置添加 provider 和模型。","hero.headline":"探索未至之境","hero.preview":"预览版","settings.models.title":"模型","settings.models.intro":"填入各提供方的 API 密钥即可使用其模型。","settings.models.edit":"编辑","settings.models.editProvider":"编辑 {provider}","settings.models.remove":"删除","settings.models.removeProvider":"删除 {provider}","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":"创建中…"}};function d(e,t){return a[e]?.[t]??a.en[t]??t}e.s(["translate",0,d],426);let l=(0,s.createContext)({locale:"en",setLocale:()=>{}});function c(){return(0,s.useContext)(l)}e.s(["LocaleProvider",0,function({children:e}){let[o,a]=(0,s.useState)(()=>r()),d=(0,s.useCallback)(e=>{a(e),i(e),n(e)},[]);(0,s.useEffect)(()=>{n(o)},[o]);let c=(0,s.useMemo)(()=>({locale:o,setLocale:d}),[o,d]);return(0,t.jsx)(l.Provider,{value:c,children:e})},"useLocale",0,c,"useT",0,function(){let{locale:e}=c();return t=>d(e,t)}],27437)},9323,e=>{"use strict";let t="ennote:worker-generation-changed",s=null,o=0,r=new Set;class i extends Error{constructor(){super("Worker restarted; discarding data from the previous connection"),this.name="WorkerGenerationChangedError"}}function n(e){return e.startsWith("/api/worker/")?e:`/api/worker${e}`}async function a(e,a){let d=o,l=await fetch(n(e),a);return function(e,n){let a=e.headers.get("X-Ennote-Worker-Instance");if(a){if(null===s)s=a;else if(s!==a)throw r.has(a)||(r.add(s),s=a,o+=1,window.dispatchEvent(new CustomEvent(t,{detail:{instanceId:a,generation:o}}))),new i}if(n!==o)throw new i}(l,d),l}async function d(e,t){let s=await a(e,t),o=await s.json().catch(()=>({}));if(!s.ok||o.error)throw Error(o.error?.message??`HTTP ${s.status}`);return o.data}async function l(e,t,s){let o,r,i=new Headers(s?.headers);i.has("Accept")||i.set("Accept","text/event-stream");let n=await a(e,{...s,headers:i});if(!n.ok)throw Error(await c(n));let d=n.body?.getReader();if(!d)throw Error("Worker event stream has no response body");let l=new TextDecoder,m="",p=[],g=e=>{let s=e.endsWith("\r")?e.slice(0,-1):e;if(s.startsWith("id:"))o=s.slice(3).trim();else if(s.startsWith("event:"))r=s.slice(6).trim();else if(s.startsWith("data:"))p.push(s.slice(5).trimStart());else if(""===s){if(p.length>0)try{t({id:o,event:r,data:JSON.parse(p.join("\n"))})}catch{}o=void 0,r=void 0,p=[]}};try{for(;;){let{done:e,value:t}=await d.read();if(e)break;let s=(m+=l.decode(t,{stream:!0})).split("\n");for(let e of(m=s.pop()??"",s))g(e)}(m+=l.decode())&&g(m),p.length>0&&g("")}finally{d.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,"WorkerGenerationChangedError",0,i,"apiEventStream",0,l,"apiFetch",0,d,"apiResponse",0,a,"workerAPIPath",0,n])},85026,19172,51761,e=>{"use strict";var t=e.i(18050),s=e.i(71645),o=e.i(9323);function r(e){return null!=e&&!e.activeLeafMessageId}e.s(["isBlankSession",0,r],19172);let i="ennote-selected-project";function n(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 d(e){if(0===e.length)return;let t=e[0],s=Date.parse(t.updatedAt)||Date.parse(t.createdAt)||0;for(let o of e.slice(1)){let e=Date.parse(o.updatedAt)||Date.parse(o.createdAt)||0;e>s&&(t=o,s=e)}return t.id}async function l(e,t){let s=(t.some(t=>t.projectId===e)?t.filter(t=>t.projectId===e):await (0,o.apiFetch)(`/v1/projects/${encodeURIComponent(e)}/sessions?status=active`)).find(r);if(s)return s;let i=await (0,o.apiFetch)(`/v1/projects/${encodeURIComponent(e)}/sessions`,{method:"POST",body:JSON.stringify({title:"New Chat"})});if(!i?.id)throw Error("Failed to create session");return i}e.s(["SELECTED_PROJECT_KEY",0,i,"SELECTED_SESSION_KEY",0,"ennote-selected-session","readStoredId",0,n,"recentProjectId",0,d,"reuseOrCreateBlankSession",0,l,"writeStoredId",0,a],51761);let c="ennote-pinned-projects",m=(0,s.createContext)(null);e.s(["WorkspaceProvider",0,function({children:e}){let[r,l]=(0,s.useState)([]),[p,g]=(0,s.useState)(!1),[u,h]=(0,s.useState)(null),[f,y]=(0,s.useState)(!1),[v,b]=(0,s.useState)(void 0),[w,k]=(0,s.useState)(!1),[S,P]=(0,s.useState)(!1),[C,A]=(0,s.useState)(new Map),[I,E]=(0,s.useState)(()=>{try{let e=localStorage.getItem(c),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}});(0,s.useEffect)(()=>{(0,o.apiFetch)("/v1/projects").then(e=>{l(e),h(t=>{let s,o=t&&e.some(e=>e.id===t)?t:(s=n(i))&&e.some(e=>e.id===s)?s:d(e)??null;return a(i,o),o})}).catch(()=>{}).finally(()=>g(!0))},[]);let j=(0,s.useCallback)(e=>{y(!1),h(e),a(i,e)},[]),N=(0,s.useCallback)(e=>{b(e),y(!0)},[]),D=(0,s.useCallback)(()=>{y(!1),b(void 0)},[]),T=(0,s.useCallback)(()=>{P(!1),k(!0)},[]),x=(0,s.useCallback)(async(e,t)=>{P(!0);try{let s=await (0,o.apiFetch)("/v1/projects",{method:"POST",body:JSON.stringify({name:e,hostPath:t})});k(!1),s.workspace&&A(e=>new Map(e).set(s.project.id,s.workspace)),l(await (0,o.apiFetch)("/v1/projects")),j(s.project.id)}finally{P(!1)}},[j]),M=(0,s.useCallback)(()=>{S||k(!1)},[S]),R=(0,s.useCallback)(e=>{E(t=>{let s=t.includes(e)?t.filter(t=>t!==e):[...t,e];try{localStorage.setItem(c,JSON.stringify(s))}catch{}return s})},[]),F=(0,s.useCallback)(async(e,t)=>{let s=await (0,o.apiFetch)(`/v1/projects/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify({name:t})});l(t=>t.map(t=>t.id===e?s:t))},[]),U=(0,s.useCallback)(async e=>{await (0,o.apiFetch)(`/v1/projects/${encodeURIComponent(e)}`,{method:"DELETE"}),l(t=>t.filter(t=>t.id!==e)),A(t=>{let s=new Map(t);return s.delete(e),s}),E(t=>t.filter(t=>t!==e)),h(t=>t!==e?t:(a(i,null),null))},[]),L=(0,s.useCallback)(e=>C.get(e),[C]);return(0,t.jsx)(m.Provider,{value:{projects:r,projectsReady:p,selectedProject:u,switchProject:j,createProjectOpen:w,openCreateProject:T,confirmCreateProject:x,cancelCreateProject:M,createProjectBusy:S,settingsOpen:f,settingsTab:v,openSettings:N,closeSettings:D,pinnedProjectIds:I,togglePinProject:R,renameProject:F,deleteProject:U,workspaceFor:L},children:e})},"pinnedProjectsStorageKey",0,c,"useWorkspace",0,function(){let e=(0,s.useContext)(m);if(!e)throw Error("useWorkspace must be used inside <WorkspaceProvider>");return e}],85026)},26356,e=>{"use strict";var t=e.i(71645),s=e.i(9323);e.s(["WorkerGenerationGuard",0,function({children:e}){return(0,t.useEffect)(()=>{let e=()=>window.location.reload();return window.addEventListener(s.WORKER_GENERATION_CHANGED_EVENT,e),()=>window.removeEventListener(s.WORKER_GENERATION_CHANGED_EVENT,e)},[]),e}])}]);
|