ai-helper-agent 2.3.0 → 2.3.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/dist/assets/{agent-store-qLZ_Nmmz.js → agent-store-DcAs6YyA.js} +2 -2
- package/dist/assets/{agent-store-qLZ_Nmmz.js.map → agent-store-DcAs6YyA.js.map} +1 -1
- package/dist/assets/background.js +2 -2
- package/dist/assets/background.js.map +1 -1
- package/dist/assets/content.js +66 -50
- package/dist/assets/{i18n-sOTxZemV.js → i18n-C4jSRoCH.js} +3 -3
- package/dist/assets/i18n-C4jSRoCH.js.map +1 -0
- package/dist/assets/{model-profiles-DcTdflVP.js → model-profiles-Dl_MsXWa.js} +2 -2
- package/dist/assets/{model-profiles-DcTdflVP.js.map → model-profiles-Dl_MsXWa.js.map} +1 -1
- package/dist/assets/{options-B6ca-cwx.css → options-8-nu3P5K.css} +1 -1
- package/dist/assets/options.js +254 -208
- package/dist/assets/options.js.map +1 -1
- package/dist/assets/{page-snapshot-renderer-C-4bo-cW.js → page-snapshot-renderer-CVL6r6Kf.js} +2 -2
- package/dist/assets/{page-snapshot-renderer-C-4bo-cW.js.map → page-snapshot-renderer-CVL6r6Kf.js.map} +1 -1
- package/dist/assets/{session-store-U8WKrdGX.js → session-store-CzVQCgQ_.js} +4 -4
- package/dist/assets/{session-store-U8WKrdGX.js.map → session-store-CzVQCgQ_.js.map} +1 -1
- package/dist/assets/side_panel.js +8 -8
- package/dist/assets/side_panel.js.map +1 -1
- package/dist/assets/version-CNG2KGnJ.js +2 -0
- package/dist/assets/version-CNG2KGnJ.js.map +1 -0
- package/dist/libs/jspdf.min.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/offscreen/offscreen.js +2 -2
- package/dist/options.html +33 -4
- package/dist/side_panel.html +5 -5
- package/package.json +1 -1
- package/dist/assets/i18n-sOTxZemV.js.map +0 -1
- package/dist/assets/version-DzUoXKcK.js +0 -2
- package/dist/assets/version-DzUoXKcK.js.map +0 -1
|
@@ -22,7 +22,7 @@ var e={DEBUG:0,INFO:1,WARN:2,ERROR:3},t=e.DEBUG;function n(e){t=e}function r(){r
|
|
|
22
22
|
|
|
23
23
|
## 执行步骤
|
|
24
24
|
1. 步骤1
|
|
25
|
-
2. 步骤2`,existingResources:`已有资源文件`,skillNameRequired:`请输入技能名称`,skillMarkdownRequired:`请输入 SKILL.md 内容`,agentSkillSaved:`Agent 技能 "{name}" 保存成功`,saveFailedShort:`保存失败`,saveFailed:`保存失败: {error}`,viewSkillTitle:`查看技能: {name}`,importSkillTitle:`导入技能`,importBtn:`导入`,jsonImport:`JSON 导入`,newAuthoring:`新建编写`,zipPackage:`Zip 包`,urlImport:`URL 导入`,jsonImportDesc:`导入 JSON 格式的 Workflow 技能(确定性自动化流程)`,clickOrDragJson:`点击选择 JSON 文件或拖拽到此处`,jsonFileHint:`支持 .json 格式的 Workflow 技能定义文件`,markdownImportDesc:`直接编写 SKILL.md 内容,创建 Agent 技能(AI 能力扩展)`,zipImportDesc:`导入包含 SKILL.md 的 Zip 压缩包,可附带 scripts/templates/assets 等辅助资源`,clickOrDragZip:`点击选择 Zip 文件或拖拽到此处`,zipFileHint:`Zip 包内需包含 SKILL.md 文件,可选的 scripts/ templates/ assets/ 子目录`,urlImportDesc:`从远程 URL 下载技能的 Zip 包并自动导入`,downloadUrl:`下载地址`,selectJsonFile:`请选择 JSON 文件`,workflowSkillImported:`Workflow 技能 "{name}" 导入成功`,agentSkillCreated:`Agent 技能 "{name}" 创建成功`,createFailedShort:`创建失败`,selectZipFile:`请选择 Zip 文件`,fileTooLarge:`文件过大,最大支持 50MB`,fileReadFailed:`文件读取失败`,agentSkillImported:`Agent 技能 "{name}" 导入成功`,urlRequired:`请输入 URL`,importFailed:`导入失败: {error}`,searchMcpPlaceholder:`搜索 MCP 服务器...`,searchSkillPlaceholder:`搜索技能...`,filterAll:`全部`,filterEnabled:`已启用`,filterDisabled:`已停用`,noMatchResult:`无匹配结果`},memoryPanel:{tabTitle:`记忆`,title:`记忆向量`,enabled:`已启用`,disabled:`已停用`,statusTitle:`向量索引状态`,statusLoading:`读取中…`,statusOffline:`代理未连接,暂时读不到向量状态`,statusFail:`向量状态读取失败`,statusOldAgent:`当前代理版本没有这个状态接口,请重启代理后再看`,statusDetail:`返回信息`,statusIndexed:`已索引 {indexed} / 共 {total} 条`,statusStored:`向量指纹`,statusCurrent:`当前配置指纹`,statusTier:`生效档位`,statusStale:`已陈旧:模型变更后未重建`,statusFresh:`与当前配置一致`,staleHint:`旧向量与新配置不可比,语义召回会静默退化。请点「重建向量索引」(有未保存的修改先保存)。`,modeLabel:`嵌入来源`,modeRemote:`远端服务(OpenAI 兼容接口)`,modeLocal:`本地模型`,baseUrlLabel:`服务地址`,baseUrlPlaceholder:`https://api.openai.com/v1`,modelLabel:`模型名称`,modelPlaceholder:`BAAI/bge-m3`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`留空表示不修改`,apiKeyClearBtn:`清除已存 Key`,apiKeyClearConfirm:`清除后远端语义召回随即停用(降回关键词档),直到重新填入并保存新 Key。确定清除?`,apiKeyCleared:`已清除已存的 API Key`,apiKeyClearFail:`清除 Key 失败:{error}`,configNotLoaded:`配置未成功加载,为避免把代理里的设置覆盖成空,请刷新面板后重试`,dimsLabel:`向量维度(可留空,测试时自动探测)`,prefixLabel:`查询前缀(queryPrefix,可留空)`,localNotice:`本地档无需测试连通性:保存后直接重建向量索引(首次使用需下载模型,可能数十分钟)。嵌入在 512 token 处静默截断,超长条目只有前部进入向量。`,testBtn:`测试连通性`,testRunning:`测试中…`,testOk:`连通正常:{model} 输出 {dims} 维`,testFail:`测试失败:{error}`,scopeHint:`本 Tab 的配置会在点击底部「保存配置」时一并写入代理(本地 agent 服务)的 config.json;代理未连接时跳过该项,仅保存扩展自身设置`,saveSkippedOffline:`代理未连接,记忆向量配置未保存(仅保存了扩展设置)`,saveSuccess:`记忆向量配置已保存`,saveFail:`保存失败:{error}`,toggleOnSaved:`已启用语义向量召回`,toggleOffSaved:`已停用,召回回落关键词通道`,toggleFail:`开关切换失败:{error}`,reindexBtn:`重建向量索引`,reindexConfirm:`重建会用当前配置重新计算全部记忆的向量。本地档 41 条实测约 23 分钟(远端约 2 分钟),期间请勿关闭本页面。确定继续?`,reindexRunning:`重建进行中,请勿关闭页面…`,reindexDone:`重建完成:已索引 {indexed} / {total}`,reindexBatchFail:`({count} 批失败,详见 agent 日志)`,reindexOverWindow:`({count} 条超出 {window} token 窗口,尾部未进向量)`,reindexSkipped:`未重建:向量档未启用`,reindexFail:`重建失败:{error}`,gateAgentOffTitle:`代理未连接`,gateAgentOffBody:`记忆向量配置由本地代理提供。请先在「代理」标签页完成代理连接,再回到这里配置。`,gateRagTitle:`本地模型依赖未就绪`,gateRagMissing:`本地模型需要 RAG 依赖。请先在「扩展」面板完成安装,再回到这里配置。`,goToAgentTab:`前往「代理」标签页`,goToToolboxTab:`前往「扩展」标签页`},knowledge:{tabTitle:`知识库`,gateAgentOffTitle:`代理未连接`,gateAgentOffDesc:`知识库功能由本地代理提供。请先在「代理」标签页完成代理连接,再回到这里管理知识库。`,gateRagOffTitle:`知识库功能未启用`,gateRagOffDesc:`开启上方「知识库检索」总开关后,即可创建和管理知识库。`,gateRagUnavailableTitle:`代理端能力未就绪`,gateRagUnavailableDesc:`RAG 依赖尚未安装,或 Node 版本不满足要求(需 Node 22+)。请查看下方安装引导。`,goToAgentTab:`前往「代理」标签页`,goToToolboxTab:`前往「扩展」标签页`,enableNow:`立即启用`,title:`知识库`,createBtn:`+ 新建知识库`,searchPlaceholder:`搜索知识库...`,emptyTitle:`还没有知识库`,emptyDesc:`点击「新建知识库」创建第一个知识库,然后导入文档开始使用。`,loadFailed:`加载失败: {error}`,retry:`重试`,statsSummary:`{docs} 文档 · {chunks} 分块`,modeLocal:`本地模型`,modeRemote:`远端服务`,actionEdit:`编辑`,actionIngest:`导入`,actionSearch:`检索测试`,actionDocs:`文档`,actionDelete:`删除`,actionEnable:`启用`,actionDisable:`停用`,badgeDisabled:`已停用`,enableSuccess:`知识库「{name}」已启用`,disableSuccess:`知识库「{name}」已停用`,createTitle:`新建知识库`,nameLabel:`名称`,namePlaceholder:`例如:产品文档集`,descLabel:`描述(可选)`,descPlaceholder:`简要说明这个知识库存放什么内容`,createConfirm:`创建`,creating:`创建中...`,createSuccess:`知识库「{name}」已创建`,nameRequired:`请输入知识库名称`,editTitle:`编辑知识库`,editConfirm:`保存`,saving:`保存中...`,editSuccess:`知识库信息已更新`,vectorSectionTitle:`向量模型`,vectorModeLocal:`本地模型(内置 BGE 中文模型)`,vectorModeRemote:`远端服务(OpenAI 兼容接口)`,vectorModeLocalHint:`使用代理端内置 BGE 中文模型生成向量,无需额外配置;首次导入需下载模型文件。`,vectorModeRemoteHint:`调用远端 OpenAI 兼容的向量服务(如硅基流动、智谱、OpenAI 等)。`,vectorEndpointLabel:`接口地址(Base URL,含版本段)`,vectorEndpointPlaceholder:`例如 https://api.siliconflow.cn/v1`,vectorApiKeyLabel:`API Key`,vectorApiKeyPlaceholder:`粘贴 API Key`,vectorApiKeyKeep:`留空则沿用已保存的 Key`,vectorModelLabel:`模型名称`,vectorModelPlaceholder:`例如 BAAI/bge-m3`,vectorDimsLabel:`向量维度(可留空,测试时自动探测)`,vectorDimsPlaceholder:`自动`,vectorTestBtn:`测试连通性`,vectorTesting:`测试中...`,vectorTestOk:`连接成功:{model}({dims} 维)`,vectorDimsFilled:`已自动填充维度:{dims}`,vectorTestFailed:`测试失败: {error}`,vectorEndpointRequired:`请填写远端接口地址`,vectorModelRequired:`请填写模型名称`,rebuildConfirmTitle:`变更向量配置`,rebuildConfirm:`向量模型或分块参数变更后需要重建索引(重新向量化全部文档)。重建期间仍可检索旧索引,完成后自动切换。确定继续吗?`,rebuildStarted:`已开始重建索引,完成后将自动刷新...`,progressRebuilding:`正在重建索引 {current}/{total} 篇文档…`,rebuildDone:`索引重建完成`,rebuildFailed:`索引重建失败: {error}`,deleteConfirmTitle:`删除知识库`,deleteConfirm:`确定删除「{name}」吗?其中的 {docs} 个文档、{chunks} 个分块将一并删除,操作不可恢复。`,deleteSuccess:`知识库已删除`,ingestTitle:`导入文档到「{name}」`,tabFile:`文件`,tabText:`文本`,tabUrl:`URL`,dropHint:`拖拽文件到此处,或点击选择`,dropSupported:`支持 txt / md / pdf / docx / xlsx / html 等格式,单文件 ≤ 50MB`,selectedFile:`已选择:{name}`,textContentLabel:`文本内容`,textContentPlaceholder:`在此粘贴要导入的文本内容...`,textNameLabel:`文档名称(可选)`,textNamePlaceholder:`留空则自动命名`,urlLabel:`网页地址`,urlPlaceholder:`https://example.com/page`,chunkSettingsTitle:`分块设置`,chunkSizeLabel:`块大小(字符)`,chunkOverlapLabel:`重叠(字符)`,ingestConfirm:`开始导入`,ingesting:`正在解析并向量化,首次导入可能需要下载模型,请稍候...`,progressParsing:`正在解析文档…`,progressChunking:`正在分块…`,progressEmbedding:`正在向量化 {current}/{total} 块…`,progressStoring:`正在写入索引…`,ingestSuccess:`导入完成:{name}({chunks} 个分块)`,ingestFailed:`导入失败: {error}`,fileRequired:`请先选择文件`,contentRequired:`请输入要导入的文本内容`,urlRequired:`请输入网页地址`,fileTooLarge:`文件过大,最大支持 50MB`,docsTitle:`「{name}」的文档`,docsEmpty:`还没有导入任何文档`,docChunkCount:`{count} 分块`,docDeleteConfirmTitle:`删除文档`,docDeleteConfirm:`确定删除文档「{name}」吗?该文档的所有分块将从知识库中移除。`,docDeleteSuccess:`文档已删除`,searchTitle:`检索测试`,searchScope:`检索范围:「{name}」`,searchQueryPlaceholder:`输入查询语句,例如:如何导出数据?`,searchBtn:`检索`,searching:`检索中...`,searchTopKLabel:`返回条数`,searchThresholdLabel:`相似度阈值`,searchHitCount:`命中 {count} 条`,searchNoHits:`没有命中任何内容,可尝试降低相似度阈值。`,searchFallbackHint:`相似度均低于阈值,以下为最佳匹配(仅供参考):`,searchFailed:`检索失败: {error}`,expandFull:`展开全文`,collapse:`收起`,scoreLabel:`相似度`,opFailed:`操作失败: {error}`},contextBubble:{labelSelection:`选中内容`,labelQuoted:`引用`,labelSkill:`技能`,labelMcp:`MCP`,labelPage:`网页`,labelFile:`文件`,labelKnowledge:`知识库`,clickToExpand:`点击展开`,bubbleSkill:`{name} 🧩`,bubbleMcp:`{name} 🔌`,bubblePage:`{title} 🌐`,bubbleKnowledge:`{name} 📚 · 命中 {count} 条`,bubbleKnowledgeMiss:`{name} 📚 · 未命中`,bubbleKnowledgeFailed:`{name} 📚 · 检索失败`,bubbleKnowledgeSearching:`正在检索知识库…`,kbHitToggle:`点击展开/收起全文`,kbHitTruncated:`✂ 已截断 · 原文 {total} 字,前 {kept} 字已发送`,kbHitTruncatedTitle:`为控制上下文体积,内容截断后再发送给模型;此处显示的即模型实际收到的版本`,kbHitTruncatedBadge:`✂ {count} 条已截断`},configDialog:{exportTitle:`导出配置`,includeSecrets:`包含 API 密钥`,secretWarn:`⚠ 敏感信息,请确保文件安全`,exportDesc:`导出文件将包含除 Agent 连接信息外的所有配置,可选择是否包含 API 密钥。`,export:`导出`,importTitle:`导入配置`,mergeImport:`合并导入 — 仅覆盖文件中存在的配置项,保留其他`,replaceImport:`完全替换 — 清空当前配置,使用文件中的配置`,confirmImport:`确认导入`,exportSuccess:`配置已导出`,exportFailed:`导出失败: {error}`,unknownTime:`未知`,importSummary:`导出时间: {time},包含 {count} 项配置`,invalidFileFormat:`无效的文件格式`,unrecognizedFormat:`无法识别的配置格式`,unknownConfigKey:`未知的配置项: {key}`,importFailed:`导入失败: {error}`,importParseFailed:`导入失败: 无法解析文件格式`,importedCount:`已导入 {count} 项配置`}},u={common:{confirm:`Confirm`,cancel:`Cancel`,close:`Close`,ok:`OK`,save:`Save`,delete:`Delete`,edit:`Edit`,retry:`Retry`,loading:`Loading...`,none:`None`,add:`Add`,clear:`Clear`,selectAll:`Select All`,deselectAll:`Deselect All`,refresh:`Refresh`,enabled:`Enabled`,disabled:`Disabled`,bytes:`bytes`,copy:`Copy`,copySuccess:`Copied`,copyFailed:`Copy failed`},dialog:{operationConfirm:`Operation Confirmation`,confirmDefaultMessage:`The model requests to execute a sensitive operation. Allow?`,confirmAction:`The model requests to execute: {name}`,remainingTime:`Time remaining: {time}`,deny:`Deny`,approveOnce:`Allow Once`,approveLoop:`Allow for This Task`},sensitiveTool:{manage_cookies:`Manage Cookies`,clear_data:`Clear Page Data`,download_file:`Download File`,manage_tab:`Tab Management`,agent_file:`File Operations`,debug_page:`Page Debugger`,debuggerAttachHint:`
|
|
25
|
+
2. 步骤2`,existingResources:`已有资源文件`,skillNameRequired:`请输入技能名称`,skillMarkdownRequired:`请输入 SKILL.md 内容`,agentSkillSaved:`Agent 技能 "{name}" 保存成功`,saveFailedShort:`保存失败`,saveFailed:`保存失败: {error}`,viewSkillTitle:`查看技能: {name}`,importSkillTitle:`导入技能`,importBtn:`导入`,jsonImport:`JSON 导入`,newAuthoring:`新建编写`,zipPackage:`Zip 包`,urlImport:`URL 导入`,jsonImportDesc:`导入 JSON 格式的 Workflow 技能(确定性自动化流程)`,clickOrDragJson:`点击选择 JSON 文件或拖拽到此处`,jsonFileHint:`支持 .json 格式的 Workflow 技能定义文件`,markdownImportDesc:`直接编写 SKILL.md 内容,创建 Agent 技能(AI 能力扩展)`,zipImportDesc:`导入包含 SKILL.md 的 Zip 压缩包,可附带 scripts/templates/assets 等辅助资源`,clickOrDragZip:`点击选择 Zip 文件或拖拽到此处`,zipFileHint:`Zip 包内需包含 SKILL.md 文件,可选的 scripts/ templates/ assets/ 子目录`,urlImportDesc:`从远程 URL 下载技能的 Zip 包并自动导入`,downloadUrl:`下载地址`,selectJsonFile:`请选择 JSON 文件`,workflowSkillImported:`Workflow 技能 "{name}" 导入成功`,agentSkillCreated:`Agent 技能 "{name}" 创建成功`,createFailedShort:`创建失败`,selectZipFile:`请选择 Zip 文件`,fileTooLarge:`文件过大,最大支持 50MB`,fileReadFailed:`文件读取失败`,agentSkillImported:`Agent 技能 "{name}" 导入成功`,urlRequired:`请输入 URL`,importFailed:`导入失败: {error}`,searchMcpPlaceholder:`搜索 MCP 服务器...`,searchSkillPlaceholder:`搜索技能...`,filterAll:`全部`,filterEnabled:`已启用`,filterDisabled:`已停用`,noMatchResult:`无匹配结果`},memoryPanel:{tabTitle:`记忆`,title:`记忆向量`,enabled:`已启用`,disabled:`已停用`,statusTitle:`向量索引状态`,statusLoading:`读取中…`,statusOffline:`代理未连接,暂时读不到向量状态`,statusFail:`向量状态读取失败`,statusOldAgent:`当前代理版本没有这个状态接口,请重启代理后再看`,statusDetail:`返回信息`,statusIndexed:`已索引 {indexed} / 共 {total} 条`,statusStored:`向量指纹`,statusCurrent:`当前配置指纹`,statusTier:`生效档位`,statusStale:`已陈旧:模型变更后未重建`,statusFresh:`与当前配置一致`,staleHint:`旧向量与新配置不可比,语义召回会静默退化。请点「重建向量索引」(有未保存的修改先保存)。`,modeLabel:`嵌入来源`,modeRemote:`远端服务(OpenAI 兼容接口)`,modeLocal:`本地模型`,baseUrlLabel:`服务地址`,baseUrlPlaceholder:`https://api.openai.com/v1`,modelLabel:`模型名称`,modelPlaceholder:`BAAI/bge-m3`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`留空表示不修改`,apiKeyClearBtn:`清除已存 Key`,apiKeyClearConfirm:`清除后远端语义召回随即停用(降回关键词档),直到重新填入并保存新 Key。确定清除?`,apiKeyCleared:`已清除已存的 API Key`,apiKeyClearFail:`清除 Key 失败:{error}`,configNotLoaded:`配置未成功加载,为避免把代理里的设置覆盖成空,请刷新面板后重试`,dimsLabel:`向量维度(可留空,测试时自动探测)`,prefixLabel:`查询前缀(queryPrefix,可留空)`,localNotice:`本地档无需测试连通性:保存后直接重建向量索引(首次使用需下载模型,可能数十分钟)。嵌入在 512 token 处静默截断,超长条目只有前部进入向量。`,testBtn:`测试连通性`,testRunning:`测试中…`,testOk:`连通正常:{model} 输出 {dims} 维`,testFail:`测试失败:{error}`,scopeHint:`本 Tab 的配置会在点击底部「保存配置」时一并写入代理(本地 agent 服务)的 config.json;代理未连接时跳过该项,仅保存扩展自身设置`,saveSkippedOffline:`代理未连接,记忆向量配置未保存(仅保存了扩展设置)`,saveSuccess:`记忆向量配置已保存`,saveFail:`保存失败:{error}`,toggleOnSaved:`已启用语义向量召回`,toggleOffSaved:`已停用,召回回落关键词通道`,toggleFail:`开关切换失败:{error}`,reindexBtn:`重建向量索引`,reindexConfirm:`重建会用当前配置重新计算全部记忆的向量。本地档 41 条实测约 23 分钟(远端约 2 分钟),期间请勿关闭本页面。确定继续?`,reindexRunning:`重建进行中,请勿关闭页面…`,reindexDone:`重建完成:已索引 {indexed} / {total}`,reindexBatchFail:`({count} 批失败,详见 agent 日志)`,reindexOverWindow:`({count} 条超出 {window} token 窗口,尾部未进向量)`,reindexSkipped:`未重建:向量档未启用`,reindexFail:`重建失败:{error}`,gateAgentOffTitle:`代理未连接`,gateAgentOffBody:`记忆向量配置由本地代理提供。请先在「代理」标签页完成代理连接,再回到这里配置。`,gateRagTitle:`本地模型依赖未就绪`,gateRagMissing:`本地模型需要 RAG 依赖。请先在「扩展」面板完成安装,再回到这里配置。`,goToAgentTab:`前往「代理」标签页`,goToToolboxTab:`前往「扩展」标签页`},memoryEntries:{title:`记忆条目`,refreshBtn:`刷新`,searchPlaceholder:`搜索内容或标签…`,filterAll:`全部类型`,filterFact:`事实`,filterSummary:`摘要`,sortCreatedDesc:`创建时间(新→旧)`,sortImportanceDesc:`重要度(高→低)`,sortValueDesc:`价值分(高→低)`,sortValueAsc:`价值分(低→高)`,count:`{shown} / {total} 条`,loading:`读取中…`,empty:`还没有任何记忆条目`,noMatch:`没有符合筛选条件的条目`,offline:`代理未连接,暂时读不到记忆条目`,unsupported:`当前代理版本不支持记忆条目管理,请升级并重启代理`,loadFail:`记忆条目读取失败:{error}`,importanceShort:`重要度`,valueShort:`价值`,createdLabel:`创建`,lastAccessLabel:`最近访问`,neverAccessed:`从未`,accessCount:`访问 {count} 次`,tagsLabel:`标签`,editBtn:`编辑`,deleteBtn:`删除`,editTitle:`编辑记忆条目`,typeLabel:`类型`,contentLabel:`内容`,importanceLabel:`重要度(1-10)`,tagsPlaceholder:`逗号分隔,如:环境、偏好`,saveBtn:`保存修改`,cancelBtn:`取消`,contentEmpty:`内容不能为空`,saved:`记忆已更新`,saveFail:`更新失败:{error}`,deleteConfirm:`删除这条记忆?删除后不可恢复,其向量缓存会同步摘除。`,deleted:`记忆已删除`,deleteFail:`删除失败:{error}`,candidatesHint:`{count} 条低价值记忆建议淘汰(价值分低于 10)`,compactBtn:`一键压缩`,compactConfirm:`将删除 {count} 条价值分低于 {threshold} 的记忆,删除后不可恢复。确定压缩?`,compactDone:`压缩完成:删除事实 {facts} 条、摘要 {summaries} 条`,compactFail:`压缩失败:{error}`},knowledge:{tabTitle:`知识库`,gateAgentOffTitle:`代理未连接`,gateAgentOffDesc:`知识库功能由本地代理提供。请先在「代理」标签页完成代理连接,再回到这里管理知识库。`,gateRagOffTitle:`知识库功能未启用`,gateRagOffDesc:`开启上方「知识库检索」总开关后,即可创建和管理知识库。`,gateRagUnavailableTitle:`代理端能力未就绪`,gateRagUnavailableDesc:`RAG 依赖尚未安装,或 Node 版本不满足要求(需 Node 22+)。请查看下方安装引导。`,goToAgentTab:`前往「代理」标签页`,goToToolboxTab:`前往「扩展」标签页`,enableNow:`立即启用`,title:`知识库`,createBtn:`+ 新建知识库`,searchPlaceholder:`搜索知识库...`,emptyTitle:`还没有知识库`,emptyDesc:`点击「新建知识库」创建第一个知识库,然后导入文档开始使用。`,loadFailed:`加载失败: {error}`,retry:`重试`,statsSummary:`{docs} 文档 · {chunks} 分块`,modeLocal:`本地模型`,modeRemote:`远端服务`,actionEdit:`编辑`,actionIngest:`导入`,actionSearch:`检索测试`,actionDocs:`文档`,actionDelete:`删除`,actionEnable:`启用`,actionDisable:`停用`,badgeDisabled:`已停用`,enableSuccess:`知识库「{name}」已启用`,disableSuccess:`知识库「{name}」已停用`,createTitle:`新建知识库`,nameLabel:`名称`,namePlaceholder:`例如:产品文档集`,descLabel:`描述(可选)`,descPlaceholder:`简要说明这个知识库存放什么内容`,createConfirm:`创建`,creating:`创建中...`,createSuccess:`知识库「{name}」已创建`,nameRequired:`请输入知识库名称`,editTitle:`编辑知识库`,editConfirm:`保存`,saving:`保存中...`,editSuccess:`知识库信息已更新`,vectorSectionTitle:`向量模型`,vectorModeLocal:`本地模型(内置 BGE 中文模型)`,vectorModeRemote:`远端服务(OpenAI 兼容接口)`,vectorModeLocalHint:`使用代理端内置 BGE 中文模型生成向量,无需额外配置;首次导入需下载模型文件。`,vectorModeRemoteHint:`调用远端 OpenAI 兼容的向量服务(如硅基流动、智谱、OpenAI 等)。`,vectorEndpointLabel:`接口地址(Base URL,含版本段)`,vectorEndpointPlaceholder:`例如 https://api.siliconflow.cn/v1`,vectorApiKeyLabel:`API Key`,vectorApiKeyPlaceholder:`粘贴 API Key`,vectorApiKeyKeep:`留空则沿用已保存的 Key`,vectorModelLabel:`模型名称`,vectorModelPlaceholder:`例如 BAAI/bge-m3`,vectorDimsLabel:`向量维度(可留空,测试时自动探测)`,vectorDimsPlaceholder:`自动`,vectorTestBtn:`测试连通性`,vectorTesting:`测试中...`,vectorTestOk:`连接成功:{model}({dims} 维)`,vectorDimsFilled:`已自动填充维度:{dims}`,vectorTestFailed:`测试失败: {error}`,vectorEndpointRequired:`请填写远端接口地址`,vectorModelRequired:`请填写模型名称`,rebuildConfirmTitle:`变更向量配置`,rebuildConfirm:`向量模型或分块参数变更后需要重建索引(重新向量化全部文档)。重建期间仍可检索旧索引,完成后自动切换。确定继续吗?`,rebuildStarted:`已开始重建索引,完成后将自动刷新...`,progressRebuilding:`正在重建索引 {current}/{total} 篇文档…`,rebuildDone:`索引重建完成`,rebuildFailed:`索引重建失败: {error}`,deleteConfirmTitle:`删除知识库`,deleteConfirm:`确定删除「{name}」吗?其中的 {docs} 个文档、{chunks} 个分块将一并删除,操作不可恢复。`,deleteSuccess:`知识库已删除`,ingestTitle:`导入文档到「{name}」`,tabFile:`文件`,tabText:`文本`,tabUrl:`URL`,dropHint:`拖拽文件到此处,或点击选择`,dropSupported:`支持 txt / md / pdf / docx / xlsx / html 等格式,单文件 ≤ 50MB`,selectedFile:`已选择:{name}`,textContentLabel:`文本内容`,textContentPlaceholder:`在此粘贴要导入的文本内容...`,textNameLabel:`文档名称(可选)`,textNamePlaceholder:`留空则自动命名`,urlLabel:`网页地址`,urlPlaceholder:`https://example.com/page`,chunkSettingsTitle:`分块设置`,chunkSizeLabel:`块大小(字符)`,chunkOverlapLabel:`重叠(字符)`,ingestConfirm:`开始导入`,ingesting:`正在解析并向量化,首次导入可能需要下载模型,请稍候...`,progressParsing:`正在解析文档…`,progressChunking:`正在分块…`,progressEmbedding:`正在向量化 {current}/{total} 块…`,progressStoring:`正在写入索引…`,ingestSuccess:`导入完成:{name}({chunks} 个分块)`,ingestFailed:`导入失败: {error}`,fileRequired:`请先选择文件`,contentRequired:`请输入要导入的文本内容`,urlRequired:`请输入网页地址`,fileTooLarge:`文件过大,最大支持 50MB`,docsTitle:`「{name}」的文档`,docsEmpty:`还没有导入任何文档`,docChunkCount:`{count} 分块`,docDeleteConfirmTitle:`删除文档`,docDeleteConfirm:`确定删除文档「{name}」吗?该文档的所有分块将从知识库中移除。`,docDeleteSuccess:`文档已删除`,searchTitle:`检索测试`,searchScope:`检索范围:「{name}」`,searchQueryPlaceholder:`输入查询语句,例如:如何导出数据?`,searchBtn:`检索`,searching:`检索中...`,searchTopKLabel:`返回条数`,searchThresholdLabel:`相似度阈值`,searchHitCount:`命中 {count} 条`,searchNoHits:`没有命中任何内容,可尝试降低相似度阈值。`,searchFallbackHint:`相似度均低于阈值,以下为最佳匹配(仅供参考):`,searchFailed:`检索失败: {error}`,expandFull:`展开全文`,collapse:`收起`,scoreLabel:`相似度`,opFailed:`操作失败: {error}`},contextBubble:{labelSelection:`选中内容`,labelQuoted:`引用`,labelSkill:`技能`,labelMcp:`MCP`,labelPage:`网页`,labelFile:`文件`,labelKnowledge:`知识库`,clickToExpand:`点击展开`,bubbleSkill:`{name} 🧩`,bubbleMcp:`{name} 🔌`,bubblePage:`{title} 🌐`,bubbleKnowledge:`{name} 📚 · 命中 {count} 条`,bubbleKnowledgeMiss:`{name} 📚 · 未命中`,bubbleKnowledgeFailed:`{name} 📚 · 检索失败`,bubbleKnowledgeSearching:`正在检索知识库…`,kbHitToggle:`点击展开/收起全文`,kbHitTruncated:`✂ 已截断 · 原文 {total} 字,前 {kept} 字已发送`,kbHitTruncatedTitle:`为控制上下文体积,内容截断后再发送给模型;此处显示的即模型实际收到的版本`,kbHitTruncatedBadge:`✂ {count} 条已截断`},configDialog:{exportTitle:`导出配置`,includeSecrets:`包含 API 密钥`,secretWarn:`⚠ 敏感信息,请确保文件安全`,exportDesc:`导出文件将包含除 Agent 连接信息外的所有配置,可选择是否包含 API 密钥。`,export:`导出`,importTitle:`导入配置`,mergeImport:`合并导入 — 仅覆盖文件中存在的配置项,保留其他`,replaceImport:`完全替换 — 清空当前配置,使用文件中的配置`,confirmImport:`确认导入`,exportSuccess:`配置已导出`,exportFailed:`导出失败: {error}`,unknownTime:`未知`,importSummary:`导出时间: {time},包含 {count} 项配置`,invalidFileFormat:`无效的文件格式`,unrecognizedFormat:`无法识别的配置格式`,unknownConfigKey:`未知的配置项: {key}`,importFailed:`导入失败: {error}`,importParseFailed:`导入失败: 无法解析文件格式`,importedCount:`已导入 {count} 项配置`}},u={common:{confirm:`Confirm`,cancel:`Cancel`,close:`Close`,ok:`OK`,save:`Save`,delete:`Delete`,edit:`Edit`,retry:`Retry`,loading:`Loading...`,none:`None`,add:`Add`,clear:`Clear`,selectAll:`Select All`,deselectAll:`Deselect All`,refresh:`Refresh`,enabled:`Enabled`,disabled:`Disabled`,bytes:`bytes`,copy:`Copy`,copySuccess:`Copied`,copyFailed:`Copy failed`},dialog:{operationConfirm:`Operation Confirmation`,confirmDefaultMessage:`The model requests to execute a sensitive operation. Allow?`,confirmAction:`The model requests to execute: {name}`,remainingTime:`Time remaining: {time}`,deny:`Deny`,approveOnce:`Allow Once`,approveLoop:`Allow for This Task`},sensitiveTool:{manage_cookies:`Manage Cookies`,clear_data:`Clear Page Data`,download_file:`Download File`,manage_tab:`Tab Management`,agent_file:`File Operations`,debug_page:`Page Debugger`,debuggerAttachHint:`
|
|
26
26
|
|
|
27
27
|
After enabling, a yellow "extension is debugging this browser" infobar appears on the tab until the session ends.`,unknown:`Unknown Operation`,tabInfo:`
|
|
28
28
|
|
|
@@ -46,5 +46,5 @@ You will need to pair again after deletion.`,deleteAgentTitle:`Delete Agent`,age
|
|
|
46
46
|
|
|
47
47
|
## Execution steps
|
|
48
48
|
1. Step 1
|
|
49
|
-
2. Step 2`,existingResources:`Existing resource files`,skillNameRequired:`Please enter the Skill name`,skillMarkdownRequired:`Please enter the SKILL.md content`,agentSkillSaved:`Agent Skill "{name}" saved successfully`,saveFailedShort:`Save failed`,saveFailed:`Save failed: {error}`,viewSkillTitle:`View Skill: {name}`,importSkillTitle:`Import Skill`,importBtn:`Import`,jsonImport:`JSON Import`,newAuthoring:`New Authoring`,zipPackage:`Zip`,urlImport:`URL Import`,jsonImportDesc:`Import a Workflow Skill in JSON format (deterministic automated flow)`,clickOrDragJson:`Click to select a JSON file or drag it here`,jsonFileHint:`Supports .json Workflow Skill definition files`,markdownImportDesc:`Write SKILL.md content directly to create an Agent Skill (AI capability extension)`,zipImportDesc:`Import a Zip archive containing SKILL.md, with optional scripts/templates/assets resources`,clickOrDragZip:`Click to select a Zip file or drag it here`,zipFileHint:`The Zip must contain a SKILL.md file; optional scripts/ templates/ assets/ subdirectories`,urlImportDesc:`Download a Skill Zip from a remote URL and import automatically`,downloadUrl:`Download URL`,selectJsonFile:`Please select a JSON file`,workflowSkillImported:`Workflow Skill "{name}" imported successfully`,agentSkillCreated:`Agent Skill "{name}" created successfully`,createFailedShort:`Create failed`,selectZipFile:`Please select a Zip file`,fileTooLarge:`File too large; max 50MB supported`,fileReadFailed:`File read failed`,agentSkillImported:`Agent Skill "{name}" imported successfully`,urlRequired:`Please enter a URL`,importFailed:`Import failed: {error}`,searchMcpPlaceholder:`Search MCP servers...`,searchSkillPlaceholder:`Search skills...`,filterAll:`All`,filterEnabled:`Enabled`,filterDisabled:`Disabled`,noMatchResult:`No matching results`},memoryPanel:{tabTitle:`Memory`,title:`Memory Vectors`,enabled:`Enabled`,disabled:`Disabled`,statusTitle:`Vector index status`,statusLoading:`Loading…`,statusOffline:`Agent is not connected, vector status unavailable`,statusFail:`Failed to read vector status`,statusOldAgent:`This agent version has no such status endpoint — restart the agent`,statusDetail:`Response`,statusIndexed:`Indexed {indexed} of {total}`,statusStored:`Stored vector fingerprint`,statusCurrent:`Current config fingerprint`,statusTier:`Active tier`,statusStale:`Stale: model changed without rebuild`,statusFresh:`Matches current config`,staleHint:`Old vectors are incomparable with the new config, so semantic recall degrades silently. Click “Rebuild vector index” (save unsaved edits first).`,modeLabel:`Embedding source`,modeRemote:`Remote service (OpenAI-compatible API)`,modeLocal:`Local model`,baseUrlLabel:`Endpoint`,baseUrlPlaceholder:`https://api.openai.com/v1`,modelLabel:`Model name`,modelPlaceholder:`BAAI/bge-m3`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`Leave blank to keep the stored key`,apiKeyClearBtn:`Clear stored key`,apiKeyClearConfirm:`Remote semantic recall stops (falls back to keywords) until a new key is saved. Clear the stored key?`,apiKeyCleared:`Stored API key cleared`,apiKeyClearFail:`Failed to clear key: {error}`,configNotLoaded:`Config failed to load. Refresh the panel before saving so the agent’s stored settings are not overwritten with blanks`,dimsLabel:`Vector dimensions (blank is fine, detected on test)`,prefixLabel:`Query prefix (optional)`,localNotice:`Local mode needs no connectivity test: save, then rebuild the vector index (the first run downloads the model and may take tens of minutes). Embeddings are silently truncated at 512 tokens, so only the head of an over-long entry is indexed.`,testBtn:`Test connectivity`,testRunning:`Testing…`,testOk:`OK: {model} returns {dims} dimensions`,testFail:`Test failed: {error}`,scopeHint:`Clicking the bottom “Save” also writes this tab’s config into the agent service config.json; when the agent is offline this item is skipped and only extension settings are saved`,saveSkippedOffline:`Agent not connected — memory vector config was not saved (only extension settings saved)`,saveSuccess:`Memory vector config saved`,saveFail:`Save failed: {error}`,toggleOnSaved:`Semantic vector recall enabled`,toggleOffSaved:`Semantic vector recall disabled - recall falls back to keywords`,toggleFail:`Failed to toggle: {error}`,reindexBtn:`Rebuild vector index`,reindexConfirm:`Rebuilding recomputes vectors for every memory with the current config. On local mode 41 entries measured about 23 minutes (remote about 2). Keep this page open. Continue?`,reindexRunning:`Rebuilding, please keep this page open…`,reindexDone:`Rebuild done: indexed {indexed} of {total}`,reindexBatchFail:` ({count} batches failed, see agent logs)`,reindexOverWindow:` ({count} entries exceed the {window}-token window, their tails are not indexed)`,reindexSkipped:`Rebuild skipped: vector tier is disabled`,reindexFail:`Rebuild failed: {error}`,gateAgentOffTitle:`Agent not connected`,gateAgentOffBody:`Memory vector config is provided by the local agent. Connect an agent in the "Agent" tab first, then come back here.`,gateRagTitle:`Local model dependency missing`,gateRagMissing:`Local models require the RAG dependency. Install it in the "Extensions" panel first, then come back here.`,goToAgentTab:`Go to "Agent" tab`,goToToolboxTab:`Go to "Extensions" tab`},knowledge:{tabTitle:`Knowledge`,gateAgentOffTitle:`Agent not connected`,gateAgentOffDesc:`Knowledge base is provided by the local agent. Connect an agent in the "Agent" tab first, then come back here.`,gateRagOffTitle:`Knowledge base feature is disabled`,gateRagOffDesc:`Turn on the "Knowledge Retrieval" master switch above to create and manage knowledge bases.`,gateRagUnavailableTitle:`Agent capability not ready`,gateRagUnavailableDesc:`RAG dependencies are not installed or the Node version is unsupported (Node 22+ required). See the install guide below.`,goToAgentTab:`Go to "Agent" tab`,goToToolboxTab:`Go to "Extensions" tab`,enableNow:`Enable Now`,title:`Knowledge Bases`,createBtn:`+ New Knowledge Base`,searchPlaceholder:`Search knowledge bases...`,emptyTitle:`No knowledge base yet`,emptyDesc:`Click "New Knowledge Base" to create one, then import documents to get started.`,loadFailed:`Failed to load: {error}`,retry:`Retry`,statsSummary:`{docs} docs · {chunks} chunks`,modeLocal:`Local model`,modeRemote:`Remote service`,actionEdit:`Edit`,actionIngest:`Import`,actionSearch:`Test Search`,actionDocs:`Docs`,actionDelete:`Delete`,actionEnable:`Enable`,actionDisable:`Disable`,badgeDisabled:`Disabled`,enableSuccess:`Knowledge base "{name}" enabled`,disableSuccess:`Knowledge base "{name}" disabled`,createTitle:`New Knowledge Base`,nameLabel:`Name`,namePlaceholder:`e.g. Product Docs`,descLabel:`Description (optional)`,descPlaceholder:`Briefly describe what this knowledge base contains`,createConfirm:`Create`,creating:`Creating...`,createSuccess:`Knowledge base "{name}" created`,nameRequired:`Please enter a name`,editTitle:`Edit Knowledge Base`,editConfirm:`Save`,saving:`Saving...`,editSuccess:`Knowledge base updated`,vectorSectionTitle:`Embedding model`,vectorModeLocal:`Local model (bundled BGE Chinese model)`,vectorModeRemote:`Remote service (OpenAI-compatible API)`,vectorModeLocalHint:`Use the agent-bundled BGE Chinese model. No extra config needed; the model file downloads on first import.`,vectorModeRemoteHint:`Call a remote OpenAI-compatible embedding service (SiliconFlow, Zhipu, OpenAI, etc.).`,vectorEndpointLabel:`Endpoint (Base URL with version segment)`,vectorEndpointPlaceholder:`e.g. https://api.siliconflow.cn/v1`,vectorApiKeyLabel:`API Key`,vectorApiKeyPlaceholder:`Paste API key`,vectorApiKeyKeep:`Leave empty to keep the saved key`,vectorModelLabel:`Model name`,vectorModelPlaceholder:`e.g. BAAI/bge-m3`,vectorDimsLabel:`Dimensions (optional, auto-detected on test)`,vectorDimsPlaceholder:`Auto`,vectorTestBtn:`Test Connection`,vectorTesting:`Testing...`,vectorTestOk:`Connected: {model} ({dims} dims)`,vectorDimsFilled:`Dimensions auto-filled: {dims}`,vectorTestFailed:`Test failed: {error}`,vectorEndpointRequired:`Remote endpoint is required`,vectorModelRequired:`Model name is required`,rebuildConfirmTitle:`Change Embedding Config`,rebuildConfirm:`Changing the embedding model or chunk settings requires rebuilding the index (all documents will be re-embedded). The old index stays searchable during the rebuild and switches automatically when done. Continue?`,rebuildStarted:`Index rebuild started, refreshing when complete...`,progressRebuilding:`Rebuilding index {current}/{total} documents…`,rebuildDone:`Index rebuild complete`,rebuildFailed:`Index rebuild failed: {error}`,deleteConfirmTitle:`Delete Knowledge Base`,deleteConfirm:`Delete "{name}"? Its {docs} documents and {chunks} chunks will be removed permanently.`,deleteSuccess:`Knowledge base deleted`,ingestTitle:`Import documents into "{name}"`,tabFile:`File`,tabText:`Text`,tabUrl:`URL`,dropHint:`Drag & drop a file here, or click to choose`,dropSupported:`Supports txt / md / pdf / docx / xlsx / html, up to 50MB per file`,selectedFile:`Selected: {name}`,textContentLabel:`Text content`,textContentPlaceholder:`Paste the text to import here...`,textNameLabel:`Document name (optional)`,textNamePlaceholder:`Leave empty to auto-name`,urlLabel:`Web page URL`,urlPlaceholder:`https://example.com/page`,chunkSettingsTitle:`Chunk settings`,chunkSizeLabel:`Chunk size (chars)`,chunkOverlapLabel:`Overlap (chars)`,ingestConfirm:`Start Import`,ingesting:`Parsing and embedding. The first import may download the model, please wait...`,progressParsing:`Parsing document…`,progressChunking:`Splitting into chunks…`,progressEmbedding:`Embedding chunks {current}/{total}…`,progressStoring:`Writing to index…`,ingestSuccess:`Imported: {name} ({chunks} chunks)`,ingestFailed:`Import failed: {error}`,fileRequired:`Please choose a file first`,contentRequired:`Please enter the text content`,urlRequired:`Please enter the URL`,fileTooLarge:`File too large, 50MB max`,docsTitle:`Documents in "{name}"`,docsEmpty:`No documents imported yet`,docChunkCount:`{count} chunks`,docDeleteConfirmTitle:`Delete Document`,docDeleteConfirm:`Delete document "{name}"? All its chunks will be removed from the knowledge base.`,docDeleteSuccess:`Document deleted`,searchTitle:`Test Search`,searchScope:`Scope: "{name}"`,searchQueryPlaceholder:`Enter a query, e.g. How to export data?`,searchBtn:`Search`,searching:`Searching...`,searchTopKLabel:`Top K`,searchThresholdLabel:`Threshold`,searchHitCount:`{count} hits`,searchNoHits:`No hits. Try lowering the similarity threshold.`,searchFallbackHint:`All scores are below the threshold. Best matches for reference:`,searchFailed:`Search failed: {error}`,expandFull:`Expand`,collapse:`Collapse`,scoreLabel:`Score`,opFailed:`Operation failed: {error}`},contextBubble:{labelSelection:`Selection`,labelQuoted:`Quote`,labelSkill:`Skill`,labelMcp:`MCP`,labelPage:`Page`,labelFile:`File`,labelKnowledge:`Knowledge`,clickToExpand:`Click to expand`,bubbleSkill:`{name} 🧩`,bubbleMcp:`{name} 🔌`,bubblePage:`{title} 🌐`,bubbleKnowledge:`{name} 📚 · {count} hits`,bubbleKnowledgeMiss:`{name} 📚 · no match`,bubbleKnowledgeFailed:`{name} 📚 · retrieval failed`,bubbleKnowledgeSearching:`Searching knowledge base…`,kbHitToggle:`Click to expand/collapse`,kbHitTruncated:`✂ Truncated · {total} chars total, first {kept} sent`,kbHitTruncatedTitle:`Truncated to fit the context window; what is shown here is exactly what the model received`,kbHitTruncatedBadge:`✂ {count} truncated`},configDialog:{exportTitle:`Export Settings`,includeSecrets:`Include API keys`,secretWarn:`⚠ Sensitive information; keep the file safe`,exportDesc:`The exported file will contain all settings except Agent connection info. You can choose whether to include API keys.`,export:`Export`,importTitle:`Import Settings`,mergeImport:`Merge import — only overwrite settings present in the file; keep the rest`,replaceImport:`Full replace — clear current settings and use the file content`,confirmImport:`Confirm Import`,exportSuccess:`Settings exported`,exportFailed:`Export failed: {error}`,unknownTime:`Unknown`,importSummary:`Exported at: {time}, containing {count} settings`,invalidFileFormat:`Invalid file format`,unrecognizedFormat:`Unrecognized settings format`,unknownConfigKey:`Unknown setting key: {key}`,importFailed:`Import failed: {error}`,importParseFailed:`Import failed: cannot parse file format`,importedCount:`Imported {count} settings`}},d=[{code:`zh`,label:`中文`},{code:`en`,label:`English`}];function f(){if(typeof chrome>`u`||!chrome.i18n)return`zh`;try{let e=chrome.i18n.getUILanguage();if(e&&e.startsWith(`zh`))return`zh`}catch{}return`en`}var p=`zh`,m={zh:l,en:u},h=new Set;function g(e,t){if(!e||!t)return;let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return typeof r==`string`?r:void 0}function _(e,t){return!t||typeof e!=`string`?e:e.replace(/\{(\w+)\}/g,(e,n)=>t[n]!==void 0&&t[n]!==null?String(t[n]):e)}function v(e,t){let n=g(m[p],e);if(n!==void 0)return _(n,t);if(p!==`en`){let n=g(m.en,e);if(n!==void 0)return _(n,t)}return e}function y(){return p}function b(e,t=!0){if(!(!e||e===p)&&m[e]){p=e,t&&typeof chrome<`u`&&chrome.storage&&chrome.storage.local&&chrome.storage.local.set({language:e}).catch(()=>{});for(let t of h)try{t(e)}catch{}}}function x(e){return typeof e==`function`&&h.add(e),()=>h.delete(e)}function S(e,t){m[e]||(m[e]={}),m[e]=C(m[e],t)}function C(e,t){for(let n of Object.keys(t||{}))t[n]&&typeof t[n]==`object`&&!Array.isArray(t[n])?((!e[n]||typeof e[n]!=`object`)&&(e[n]={}),C(e[n],t[n])):e[n]=t[n];return e}var w=!1;async function T(){if(typeof chrome>`u`||!chrome.storage||!chrome.storage.local)return p;try{let e=await chrome.storage.local.get(`language`);if(e.language&&m[e.language])p=e.language;else{let e=f();p=e,chrome.storage.local.set({language:e}).catch(()=>{})}}catch{p=f()}if(!w){w=!0;try{chrome.storage.onChanged.addListener((e,t)=>{if(t!==`local`||!e.language)return;let n=e.language.newValue;if(n&&m[n]&&n!==p){p=n;for(let e of h)try{e(n)}catch{}}})}catch{}}return p}function E(e){if(typeof document>`u`)return;let t=e||document;t.querySelectorAll(`[data-i18n]`).forEach(e=>{let t=e.getAttribute(`data-i18n`);t&&(e.textContent=v(t))}),t.querySelectorAll(`[data-i18n-placeholder]`).forEach(e=>{let t=e.getAttribute(`data-i18n-placeholder`);t&&(e.placeholder=v(t))}),t.querySelectorAll(`[data-i18n-title]`).forEach(e=>{let t=e.getAttribute(`data-i18n-title`);t&&(e.title=v(t))}),t.querySelectorAll(`[data-i18n-aria-label]`).forEach(e=>{let t=e.getAttribute(`data-i18n-aria-label`);t&&e.setAttribute(`aria-label`,v(t))})}export{S as a,v as c,T as i,c as l,E as n,b as o,y as r,x as s,d as t};
|
|
50
|
-
//# sourceMappingURL=i18n-
|
|
49
|
+
2. Step 2`,existingResources:`Existing resource files`,skillNameRequired:`Please enter the Skill name`,skillMarkdownRequired:`Please enter the SKILL.md content`,agentSkillSaved:`Agent Skill "{name}" saved successfully`,saveFailedShort:`Save failed`,saveFailed:`Save failed: {error}`,viewSkillTitle:`View Skill: {name}`,importSkillTitle:`Import Skill`,importBtn:`Import`,jsonImport:`JSON Import`,newAuthoring:`New Authoring`,zipPackage:`Zip`,urlImport:`URL Import`,jsonImportDesc:`Import a Workflow Skill in JSON format (deterministic automated flow)`,clickOrDragJson:`Click to select a JSON file or drag it here`,jsonFileHint:`Supports .json Workflow Skill definition files`,markdownImportDesc:`Write SKILL.md content directly to create an Agent Skill (AI capability extension)`,zipImportDesc:`Import a Zip archive containing SKILL.md, with optional scripts/templates/assets resources`,clickOrDragZip:`Click to select a Zip file or drag it here`,zipFileHint:`The Zip must contain a SKILL.md file; optional scripts/ templates/ assets/ subdirectories`,urlImportDesc:`Download a Skill Zip from a remote URL and import automatically`,downloadUrl:`Download URL`,selectJsonFile:`Please select a JSON file`,workflowSkillImported:`Workflow Skill "{name}" imported successfully`,agentSkillCreated:`Agent Skill "{name}" created successfully`,createFailedShort:`Create failed`,selectZipFile:`Please select a Zip file`,fileTooLarge:`File too large; max 50MB supported`,fileReadFailed:`File read failed`,agentSkillImported:`Agent Skill "{name}" imported successfully`,urlRequired:`Please enter a URL`,importFailed:`Import failed: {error}`,searchMcpPlaceholder:`Search MCP servers...`,searchSkillPlaceholder:`Search skills...`,filterAll:`All`,filterEnabled:`Enabled`,filterDisabled:`Disabled`,noMatchResult:`No matching results`},memoryPanel:{tabTitle:`Memory`,title:`Memory Vectors`,enabled:`Enabled`,disabled:`Disabled`,statusTitle:`Vector index status`,statusLoading:`Loading…`,statusOffline:`Agent is not connected, vector status unavailable`,statusFail:`Failed to read vector status`,statusOldAgent:`This agent version has no such status endpoint — restart the agent`,statusDetail:`Response`,statusIndexed:`Indexed {indexed} of {total}`,statusStored:`Stored vector fingerprint`,statusCurrent:`Current config fingerprint`,statusTier:`Active tier`,statusStale:`Stale: model changed without rebuild`,statusFresh:`Matches current config`,staleHint:`Old vectors are incomparable with the new config, so semantic recall degrades silently. Click “Rebuild vector index” (save unsaved edits first).`,modeLabel:`Embedding source`,modeRemote:`Remote service (OpenAI-compatible API)`,modeLocal:`Local model`,baseUrlLabel:`Endpoint`,baseUrlPlaceholder:`https://api.openai.com/v1`,modelLabel:`Model name`,modelPlaceholder:`BAAI/bge-m3`,apiKeyLabel:`API Key`,apiKeyPlaceholder:`Leave blank to keep the stored key`,apiKeyClearBtn:`Clear stored key`,apiKeyClearConfirm:`Remote semantic recall stops (falls back to keywords) until a new key is saved. Clear the stored key?`,apiKeyCleared:`Stored API key cleared`,apiKeyClearFail:`Failed to clear key: {error}`,configNotLoaded:`Config failed to load. Refresh the panel before saving so the agent’s stored settings are not overwritten with blanks`,dimsLabel:`Vector dimensions (blank is fine, detected on test)`,prefixLabel:`Query prefix (optional)`,localNotice:`Local mode needs no connectivity test: save, then rebuild the vector index (the first run downloads the model and may take tens of minutes). Embeddings are silently truncated at 512 tokens, so only the head of an over-long entry is indexed.`,testBtn:`Test connectivity`,testRunning:`Testing…`,testOk:`OK: {model} returns {dims} dimensions`,testFail:`Test failed: {error}`,scopeHint:`Clicking the bottom “Save” also writes this tab’s config into the agent service config.json; when the agent is offline this item is skipped and only extension settings are saved`,saveSkippedOffline:`Agent not connected — memory vector config was not saved (only extension settings saved)`,saveSuccess:`Memory vector config saved`,saveFail:`Save failed: {error}`,toggleOnSaved:`Semantic vector recall enabled`,toggleOffSaved:`Semantic vector recall disabled - recall falls back to keywords`,toggleFail:`Failed to toggle: {error}`,reindexBtn:`Rebuild vector index`,reindexConfirm:`Rebuilding recomputes vectors for every memory with the current config. On local mode 41 entries measured about 23 minutes (remote about 2). Keep this page open. Continue?`,reindexRunning:`Rebuilding, please keep this page open…`,reindexDone:`Rebuild done: indexed {indexed} of {total}`,reindexBatchFail:` ({count} batches failed, see agent logs)`,reindexOverWindow:` ({count} entries exceed the {window}-token window, their tails are not indexed)`,reindexSkipped:`Rebuild skipped: vector tier is disabled`,reindexFail:`Rebuild failed: {error}`,gateAgentOffTitle:`Agent not connected`,gateAgentOffBody:`Memory vector config is provided by the local agent. Connect an agent in the "Agent" tab first, then come back here.`,gateRagTitle:`Local model dependency missing`,gateRagMissing:`Local models require the RAG dependency. Install it in the "Extensions" panel first, then come back here.`,goToAgentTab:`Go to "Agent" tab`,goToToolboxTab:`Go to "Extensions" tab`},memoryEntries:{title:`Memory Entries`,refreshBtn:`Refresh`,searchPlaceholder:`Search content or tags…`,filterAll:`All types`,filterFact:`Facts`,filterSummary:`Summaries`,sortCreatedDesc:`Created (newest first)`,sortImportanceDesc:`Importance (high → low)`,sortValueDesc:`Value (high → low)`,sortValueAsc:`Value (low → high)`,count:`{shown} of {total}`,loading:`Loading…`,empty:`No memories yet`,noMatch:`No entries match the filter`,offline:`Agent not connected - memory entries unavailable`,unsupported:`This agent version does not support memory entry management - upgrade and restart the agent`,loadFail:`Failed to load memory entries: {error}`,importanceShort:`Imp`,valueShort:`Value`,createdLabel:`Created`,lastAccessLabel:`Last accessed`,neverAccessed:`never`,accessCount:`{count} accesses`,tagsLabel:`Tags`,editBtn:`Edit`,deleteBtn:`Delete`,editTitle:`Edit memory entry`,typeLabel:`Type`,contentLabel:`Content`,importanceLabel:`Importance (1-10)`,tagsPlaceholder:`comma-separated, e.g. environment, preference`,saveBtn:`Save`,cancelBtn:`Cancel`,contentEmpty:`Content cannot be empty`,saved:`Memory updated`,saveFail:`Update failed: {error}`,deleteConfirm:`Delete this memory? It cannot be undone, and its vector cache entry is dropped as well.`,deleted:`Memory deleted`,deleteFail:`Delete failed: {error}`,candidatesHint:`{count} low-value memories are suggested for removal (value below 10)`,compactBtn:`Compact now`,compactConfirm:`Compacting deletes {count} memories with value below {threshold}. This cannot be undone. Continue?`,compactDone:`Compact done: removed {facts} facts and {summaries} summaries`,compactFail:`Compact failed: {error}`},knowledge:{tabTitle:`Knowledge`,gateAgentOffTitle:`Agent not connected`,gateAgentOffDesc:`Knowledge base is provided by the local agent. Connect an agent in the "Agent" tab first, then come back here.`,gateRagOffTitle:`Knowledge base feature is disabled`,gateRagOffDesc:`Turn on the "Knowledge Retrieval" master switch above to create and manage knowledge bases.`,gateRagUnavailableTitle:`Agent capability not ready`,gateRagUnavailableDesc:`RAG dependencies are not installed or the Node version is unsupported (Node 22+ required). See the install guide below.`,goToAgentTab:`Go to "Agent" tab`,goToToolboxTab:`Go to "Extensions" tab`,enableNow:`Enable Now`,title:`Knowledge Bases`,createBtn:`+ New Knowledge Base`,searchPlaceholder:`Search knowledge bases...`,emptyTitle:`No knowledge base yet`,emptyDesc:`Click "New Knowledge Base" to create one, then import documents to get started.`,loadFailed:`Failed to load: {error}`,retry:`Retry`,statsSummary:`{docs} docs · {chunks} chunks`,modeLocal:`Local model`,modeRemote:`Remote service`,actionEdit:`Edit`,actionIngest:`Import`,actionSearch:`Test Search`,actionDocs:`Docs`,actionDelete:`Delete`,actionEnable:`Enable`,actionDisable:`Disable`,badgeDisabled:`Disabled`,enableSuccess:`Knowledge base "{name}" enabled`,disableSuccess:`Knowledge base "{name}" disabled`,createTitle:`New Knowledge Base`,nameLabel:`Name`,namePlaceholder:`e.g. Product Docs`,descLabel:`Description (optional)`,descPlaceholder:`Briefly describe what this knowledge base contains`,createConfirm:`Create`,creating:`Creating...`,createSuccess:`Knowledge base "{name}" created`,nameRequired:`Please enter a name`,editTitle:`Edit Knowledge Base`,editConfirm:`Save`,saving:`Saving...`,editSuccess:`Knowledge base updated`,vectorSectionTitle:`Embedding model`,vectorModeLocal:`Local model (bundled BGE Chinese model)`,vectorModeRemote:`Remote service (OpenAI-compatible API)`,vectorModeLocalHint:`Use the agent-bundled BGE Chinese model. No extra config needed; the model file downloads on first import.`,vectorModeRemoteHint:`Call a remote OpenAI-compatible embedding service (SiliconFlow, Zhipu, OpenAI, etc.).`,vectorEndpointLabel:`Endpoint (Base URL with version segment)`,vectorEndpointPlaceholder:`e.g. https://api.siliconflow.cn/v1`,vectorApiKeyLabel:`API Key`,vectorApiKeyPlaceholder:`Paste API key`,vectorApiKeyKeep:`Leave empty to keep the saved key`,vectorModelLabel:`Model name`,vectorModelPlaceholder:`e.g. BAAI/bge-m3`,vectorDimsLabel:`Dimensions (optional, auto-detected on test)`,vectorDimsPlaceholder:`Auto`,vectorTestBtn:`Test Connection`,vectorTesting:`Testing...`,vectorTestOk:`Connected: {model} ({dims} dims)`,vectorDimsFilled:`Dimensions auto-filled: {dims}`,vectorTestFailed:`Test failed: {error}`,vectorEndpointRequired:`Remote endpoint is required`,vectorModelRequired:`Model name is required`,rebuildConfirmTitle:`Change Embedding Config`,rebuildConfirm:`Changing the embedding model or chunk settings requires rebuilding the index (all documents will be re-embedded). The old index stays searchable during the rebuild and switches automatically when done. Continue?`,rebuildStarted:`Index rebuild started, refreshing when complete...`,progressRebuilding:`Rebuilding index {current}/{total} documents…`,rebuildDone:`Index rebuild complete`,rebuildFailed:`Index rebuild failed: {error}`,deleteConfirmTitle:`Delete Knowledge Base`,deleteConfirm:`Delete "{name}"? Its {docs} documents and {chunks} chunks will be removed permanently.`,deleteSuccess:`Knowledge base deleted`,ingestTitle:`Import documents into "{name}"`,tabFile:`File`,tabText:`Text`,tabUrl:`URL`,dropHint:`Drag & drop a file here, or click to choose`,dropSupported:`Supports txt / md / pdf / docx / xlsx / html, up to 50MB per file`,selectedFile:`Selected: {name}`,textContentLabel:`Text content`,textContentPlaceholder:`Paste the text to import here...`,textNameLabel:`Document name (optional)`,textNamePlaceholder:`Leave empty to auto-name`,urlLabel:`Web page URL`,urlPlaceholder:`https://example.com/page`,chunkSettingsTitle:`Chunk settings`,chunkSizeLabel:`Chunk size (chars)`,chunkOverlapLabel:`Overlap (chars)`,ingestConfirm:`Start Import`,ingesting:`Parsing and embedding. The first import may download the model, please wait...`,progressParsing:`Parsing document…`,progressChunking:`Splitting into chunks…`,progressEmbedding:`Embedding chunks {current}/{total}…`,progressStoring:`Writing to index…`,ingestSuccess:`Imported: {name} ({chunks} chunks)`,ingestFailed:`Import failed: {error}`,fileRequired:`Please choose a file first`,contentRequired:`Please enter the text content`,urlRequired:`Please enter the URL`,fileTooLarge:`File too large, 50MB max`,docsTitle:`Documents in "{name}"`,docsEmpty:`No documents imported yet`,docChunkCount:`{count} chunks`,docDeleteConfirmTitle:`Delete Document`,docDeleteConfirm:`Delete document "{name}"? All its chunks will be removed from the knowledge base.`,docDeleteSuccess:`Document deleted`,searchTitle:`Test Search`,searchScope:`Scope: "{name}"`,searchQueryPlaceholder:`Enter a query, e.g. How to export data?`,searchBtn:`Search`,searching:`Searching...`,searchTopKLabel:`Top K`,searchThresholdLabel:`Threshold`,searchHitCount:`{count} hits`,searchNoHits:`No hits. Try lowering the similarity threshold.`,searchFallbackHint:`All scores are below the threshold. Best matches for reference:`,searchFailed:`Search failed: {error}`,expandFull:`Expand`,collapse:`Collapse`,scoreLabel:`Score`,opFailed:`Operation failed: {error}`},contextBubble:{labelSelection:`Selection`,labelQuoted:`Quote`,labelSkill:`Skill`,labelMcp:`MCP`,labelPage:`Page`,labelFile:`File`,labelKnowledge:`Knowledge`,clickToExpand:`Click to expand`,bubbleSkill:`{name} 🧩`,bubbleMcp:`{name} 🔌`,bubblePage:`{title} 🌐`,bubbleKnowledge:`{name} 📚 · {count} hits`,bubbleKnowledgeMiss:`{name} 📚 · no match`,bubbleKnowledgeFailed:`{name} 📚 · retrieval failed`,bubbleKnowledgeSearching:`Searching knowledge base…`,kbHitToggle:`Click to expand/collapse`,kbHitTruncated:`✂ Truncated · {total} chars total, first {kept} sent`,kbHitTruncatedTitle:`Truncated to fit the context window; what is shown here is exactly what the model received`,kbHitTruncatedBadge:`✂ {count} truncated`},configDialog:{exportTitle:`Export Settings`,includeSecrets:`Include API keys`,secretWarn:`⚠ Sensitive information; keep the file safe`,exportDesc:`The exported file will contain all settings except Agent connection info. You can choose whether to include API keys.`,export:`Export`,importTitle:`Import Settings`,mergeImport:`Merge import — only overwrite settings present in the file; keep the rest`,replaceImport:`Full replace — clear current settings and use the file content`,confirmImport:`Confirm Import`,exportSuccess:`Settings exported`,exportFailed:`Export failed: {error}`,unknownTime:`Unknown`,importSummary:`Exported at: {time}, containing {count} settings`,invalidFileFormat:`Invalid file format`,unrecognizedFormat:`Unrecognized settings format`,unknownConfigKey:`Unknown setting key: {key}`,importFailed:`Import failed: {error}`,importParseFailed:`Import failed: cannot parse file format`,importedCount:`Imported {count} settings`}},d=[{code:`zh`,label:`中文`},{code:`en`,label:`English`}];function f(){if(typeof chrome>`u`||!chrome.i18n)return`zh`;try{let e=chrome.i18n.getUILanguage();if(e&&e.startsWith(`zh`))return`zh`}catch{}return`en`}var p=`zh`,m={zh:l,en:u},h=new Set;function g(e,t){if(!e||!t)return;let n=t.split(`.`),r=e;for(let e of n){if(typeof r!=`object`||!r)return;r=r[e]}return typeof r==`string`?r:void 0}function _(e,t){return!t||typeof e!=`string`?e:e.replace(/\{(\w+)\}/g,(e,n)=>t[n]!==void 0&&t[n]!==null?String(t[n]):e)}function v(e,t){let n=g(m[p],e);if(n!==void 0)return _(n,t);if(p!==`en`){let n=g(m.en,e);if(n!==void 0)return _(n,t)}return e}function y(){return p}function b(e,t=!0){if(!(!e||e===p)&&m[e]){p=e,t&&typeof chrome<`u`&&chrome.storage&&chrome.storage.local&&chrome.storage.local.set({language:e}).catch(()=>{});for(let t of h)try{t(e)}catch{}}}function x(e){return typeof e==`function`&&h.add(e),()=>h.delete(e)}function S(e,t){m[e]||(m[e]={}),m[e]=C(m[e],t)}function C(e,t){for(let n of Object.keys(t||{}))t[n]&&typeof t[n]==`object`&&!Array.isArray(t[n])?((!e[n]||typeof e[n]!=`object`)&&(e[n]={}),C(e[n],t[n])):e[n]=t[n];return e}var w=!1;async function T(){if(typeof chrome>`u`||!chrome.storage||!chrome.storage.local)return p;try{let e=await chrome.storage.local.get(`language`);if(e.language&&m[e.language])p=e.language;else{let e=f();p=e,chrome.storage.local.set({language:e}).catch(()=>{})}}catch{p=f()}if(!w){w=!0;try{chrome.storage.onChanged.addListener((e,t)=>{if(t!==`local`||!e.language)return;let n=e.language.newValue;if(n&&m[n]&&n!==p){p=n;for(let e of h)try{e(n)}catch{}}})}catch{}}return p}function E(e){if(typeof document>`u`)return;let t=e||document;t.querySelectorAll(`[data-i18n]`).forEach(e=>{let t=e.getAttribute(`data-i18n`);t&&(e.textContent=v(t))}),t.querySelectorAll(`[data-i18n-placeholder]`).forEach(e=>{let t=e.getAttribute(`data-i18n-placeholder`);t&&(e.placeholder=v(t))}),t.querySelectorAll(`[data-i18n-title]`).forEach(e=>{let t=e.getAttribute(`data-i18n-title`);t&&(e.title=v(t))}),t.querySelectorAll(`[data-i18n-aria-label]`).forEach(e=>{let t=e.getAttribute(`data-i18n-aria-label`);t&&e.setAttribute(`aria-label`,v(t))})}export{S as a,v as c,T as i,c as l,E as n,b as o,y as r,x as s,d as t};
|
|
50
|
+
//# sourceMappingURL=i18n-C4jSRoCH.js.map
|