@customize-agent/server 4.60.30 → 4.60.31
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +282 -193
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +6 -0
- package/.next/server/chunks/1243.js +1 -1
- package/.next/server/chunks/1936.js +8 -8
- package/.next/server/chunks/2328.js +1 -1
- package/.next/server/chunks/4722.js +4 -4
- package/.next/server/chunks/6321.js +1 -1
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9666.js +14 -14
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -1
- package/.next/server/pages/api/health.js +1 -1
- package/.next/server/pages/canvas/[id].html +1 -1
- package/.next/server/pages/canvas.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/jobs.html +1 -0
- package/.next/server/pages/jobs.js.nft.json +1 -0
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/source-preview.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/skills/[id]/edit.html +1 -1
- package/.next/server/pages/skills/[id].html +1 -1
- package/.next/server/pages/skills/new.html +1 -1
- package/.next/server/pages/skills.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +31 -30
- package/.next/static/0fdab21c22b65a3042c22ee4ac8e49fbfd22e365df64d5e9b709ccb05aecf02e/_buildManifest.js +1 -0
- package/.next/static/chunks/1210-703ad87eaeee1e4e.js +15 -0
- package/.next/static/chunks/1499-ff8f02f6bb6f3d45.js +10 -0
- package/.next/static/chunks/1702-f5e99af7aface475.js +1 -0
- package/.next/static/chunks/2378-c6d25abe02815666.js +1 -0
- package/.next/static/chunks/{864-b06700e1a4e573f2.js → 2864-67ba808c5092c2f9.js} +1 -1
- package/.next/static/chunks/3456-8b609f8475ae5030.js +1 -0
- package/.next/static/chunks/4052-199e61ca9e6a33e7.js +1 -0
- package/.next/static/chunks/4530-e73bdd645bb7a953.js +1 -0
- package/.next/static/chunks/4565-3c5ff667062ccec9.js +21 -0
- package/.next/static/chunks/4665-1984a3d8b0573fa1.js +1 -0
- package/.next/static/chunks/5046-abead1022185a99a.js +1 -0
- package/.next/static/chunks/5061-80765d4a612286e0.js +1 -0
- package/.next/static/chunks/5257-915621e439b56580.js +1 -0
- package/.next/static/chunks/5544-d77b8289662b4c28.js +4 -0
- package/.next/static/chunks/5760-f4191aac081b12d4.js +11 -0
- package/.next/static/chunks/6409-5a3bb0fbad4f64b1.js +14 -0
- package/.next/static/chunks/6505-012e90937e1e8dae.js +1 -0
- package/.next/static/chunks/6748-04b5429330e1451e.js +1 -0
- package/.next/static/chunks/7217-416b8488e0d2d498.js +1 -0
- package/.next/static/chunks/7576-ba6fc03060415b0e.js +1 -0
- package/.next/static/chunks/7646-159733564c7eb8dc.js +1 -0
- package/.next/static/chunks/7795-c11ff1a81c67c5aa.js +1 -0
- package/.next/static/chunks/7955-3a7ee8cda4f857b9.js +1 -0
- package/.next/static/chunks/8318-cb3a94de1617f983.js +1 -0
- package/.next/static/chunks/8338-b2ea00050048ba9f.js +4 -0
- package/.next/static/chunks/8399-a001bb2a0cb1640b.js +16 -0
- package/.next/static/chunks/8564-ac3e2f1bf87765b3.js +1 -0
- package/.next/static/chunks/8569-1d5c61a3f4fa0e26.js +16 -0
- package/.next/static/chunks/8715-ee013bd7f5ba38e8.js +1 -0
- package/.next/static/chunks/8750-a3c55a576effb3a6.js +1 -0
- package/.next/static/chunks/{787-207289f4bb577708.js → 8787-49b1f35eb4acfac9.js} +1 -1
- package/.next/static/chunks/{964-82cc4701f08f7351.js → 8964-e959915ecfae86b2.js} +1 -1
- package/.next/static/chunks/9551-f4b09bf2213ad571.js +16 -0
- package/.next/static/chunks/9605-3dee531f8a7ecbe0.js +4 -0
- package/.next/static/chunks/framework-9cde5013cd555765.js +1 -0
- package/.next/static/chunks/main-b313efde54fa6d2e.js +1 -0
- package/.next/static/chunks/pages/_app-73e5b40b24a7fe7d.js +140 -0
- package/.next/static/chunks/pages/_error-c01b6fb772028676.js +1 -0
- package/.next/static/chunks/pages/canvas/[id]-45da860b862e0743.js +1 -0
- package/.next/static/chunks/pages/canvas-a15773d02c97b7a6.js +1 -0
- package/.next/static/chunks/pages/documents-a1af5c6be26daed2.js +1 -0
- package/.next/static/chunks/pages/guide-fdf0822dc1d28813.js +1 -0
- package/.next/static/chunks/pages/index-c572e9caa60cb278.js +1 -0
- package/.next/static/chunks/pages/jobs-ebd1877dbf788a83.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-5859f0c25af34ffe.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-b796702bb5f8ac50.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js +1 -0
- package/.next/static/chunks/pages/knowledge/{source-preview-814c683fc3723177.js → source-preview-40ff4936b832787e.js} +1 -1
- package/.next/static/chunks/pages/knowledge-2a776c1740386874.js +1 -0
- package/.next/static/chunks/pages/models-0aaff5bfadc7b62f.js +1 -0
- package/.next/static/chunks/pages/overview-7e8018014009682e.js +1 -0
- package/.next/static/chunks/pages/prompt-11f87694feb6514c.js +1 -0
- package/.next/static/chunks/pages/settings-e8dcaba1551a0b2b.js +1 -0
- package/.next/static/chunks/pages/skills/[id]/edit-35892def57c4975f.js +1 -0
- package/.next/static/chunks/pages/skills/[id]-19c352e150e05c27.js +1 -0
- package/.next/static/chunks/pages/skills/new-a279e6ca2f7aded7.js +1 -0
- package/.next/static/chunks/pages/skills-8ad2577b4aa17f3b.js +1 -0
- package/.next/static/chunks/pages/system/logs-0856f7c65432befb.js +1 -0
- package/.next/static/chunks/{webpack-6224d37324e372cb.js → webpack-2da1769ff35eb1ed.js} +1 -1
- package/.next/static/css/837ac5def44e2eba.css +1 -0
- package/messages/en-US.json +24 -1
- package/messages/zh-CN.json +24 -1
- package/package.json +1 -1
- package/.next/static/chunks/127-7d37d37dab02bd10.js +0 -1
- package/.next/static/chunks/162-36b2a3e6ee7d9717.js +0 -8
- package/.next/static/chunks/257-879f095890deadad.js +0 -1
- package/.next/static/chunks/313-4b3ff7075e0ff3c3.js +0 -1
- package/.next/static/chunks/318-ca122b774ea4ee84.js +0 -1
- package/.next/static/chunks/338-19ccbaec57a7bf9c.js +0 -4
- package/.next/static/chunks/499-2233cadc6d4da647.js +0 -10
- package/.next/static/chunks/530-98c3b3fbf3fcd8e3.js +0 -1
- package/.next/static/chunks/551-446a9d48add4944f.js +0 -16
- package/.next/static/chunks/569-2bfdde9e402af5b2.js +0 -16
- package/.next/static/chunks/576-6699fed6c88502fe.js +0 -1
- package/.next/static/chunks/579-fc0a2eb64aedb001.js +0 -1
- package/.next/static/chunks/665-0634aa49137defc4.js +0 -1
- package/.next/static/chunks/711-40c1a2dbd15c2807.js +0 -21
- package/.next/static/chunks/715-6285c5942e5ec5ea.js +0 -1
- package/.next/static/chunks/717-743b697a417dd5ee.js +0 -4
- package/.next/static/chunks/748-e13db510f76568b1.js +0 -1
- package/.next/static/chunks/795-3edd02531a6d39ae.js +0 -1
- package/.next/static/chunks/808-0506edc7454b5c0e.js +0 -1
- package/.next/static/chunks/880-64d8a15c524106d2.js +0 -1
- package/.next/static/chunks/955-f0542d4dea118b62.js +0 -1
- package/.next/static/chunks/framework-4b565b3ddc94cdac.js +0 -1
- package/.next/static/chunks/main-0c91f573696223ca.js +0 -1
- package/.next/static/chunks/pages/_app-5f5b2094ef219088.js +0 -185
- package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +0 -1
- package/.next/static/chunks/pages/canvas/[id]-792d02e3874c19c0.js +0 -1
- package/.next/static/chunks/pages/canvas-e011bb88585d3441.js +0 -1
- package/.next/static/chunks/pages/documents-e6a80f2de39c6fd2.js +0 -1
- package/.next/static/chunks/pages/guide-3185f12fbcb5a6af.js +0 -1
- package/.next/static/chunks/pages/index-cb27bfa36c212ab5.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-c34e1f995fb8316f.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +0 -1
- package/.next/static/chunks/pages/knowledge-3afd4bc337d44550.js +0 -1
- package/.next/static/chunks/pages/models-e07b2e29595effd7.js +0 -1
- package/.next/static/chunks/pages/overview-8713b5d37af0eeb3.js +0 -1
- package/.next/static/chunks/pages/prompt-47a1ac955831dedb.js +0 -1
- package/.next/static/chunks/pages/settings-8879d8c90bee2025.js +0 -1
- package/.next/static/chunks/pages/skills/[id]/edit-88e2490a4190467b.js +0 -1
- package/.next/static/chunks/pages/skills/[id]-4700cd743c5efe05.js +0 -1
- package/.next/static/chunks/pages/skills/new-b2204742b055565a.js +0 -1
- package/.next/static/chunks/pages/skills-1f6bcb42cd90abeb.js +0 -1
- package/.next/static/chunks/pages/system/logs-8c5dd4d06fa9d8c9.js +0 -1
- package/.next/static/css/cb79b8022e718258.css +0 -1
- package/.next/static/e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece/_buildManifest.js +0 -1
- /package/.next/static/{e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece → 0fdab21c22b65a3042c22ee4ac8e49fbfd22e365df64d5e9b709ccb05aecf02e}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=8204,exports.ids=[8204],exports.modules={4823:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(60056);function e(a){return{algorithm:a?d.w4.darkAlgorithm:d.w4.defaultAlgorithm,token:{colorPrimary:a?"#0a84ff":"#007aff",colorInfo:a?"#0a84ff":"#007aff",colorSuccess:a?"#30d158":"#34c759",colorWarning:a?"#ff9f0a":"#ff9500",colorError:a?"#ff453a":"#ff3b30",colorBgBase:a?"#1c1c1e":"#f7f7f8",colorBgContainer:a?"rgba(44,44,46,0.78)":"#ffffff",colorBgElevated:a?"rgba(44,44,46,0.92)":"#ffffff",colorBorder:a?"rgba(255,255,255,0.12)":"rgba(60,60,67,0.16)",colorText:a?"#f5f5f7":"#1d1d1f",colorTextSecondary:a?"#98989d":"#6e6e73",fontFamily:"var(--fontSans)",fontSize:14,borderRadius:14,borderRadiusLG:20,borderRadiusSM:10,controlHeight:36,lineWidth:1,boxShadow:a?"0 0 12px rgba(0,0,0,0.5)":"0 0 12px rgba(0,0,0,0.06)",boxShadowSecondary:a?"0 0 8px rgba(0,0,0,0.4)":"0 0 8px rgba(0,0,0,0.04)",motionDurationMid:"0.2s",motionEaseInOut:"cubic-bezier(0.25, 0.1, 0.25, 1)"},components:{Card:{borderRadiusLG:20,paddingLG:24,headerFontSize:13,headerFontSizeSM:12},Button:{borderRadius:14,borderRadiusLG:18,borderRadiusSM:10,fontWeight:600,primaryShadow:"var(--shadowButton)"},Input:{borderRadius:14,controlHeight:36,activeShadow:"0 0 0 3px rgba(0,122,255,0.12)"},Select:{borderRadius:14},Modal:{borderRadiusLG:20,titleFontSize:17,fontWeightStrong:700},Tag:{borderRadiusSM:100,defaultBg:a?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.04)"},Table:{borderRadiusLG:20,headerBg:a?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.02)",headerColor:"var(--colorTextSecondary)",headerSplitColor:"transparent",headerBorderRadius:12},Spin:{dotSize:28,dotSizeLG:40},Upload:{borderRadiusLG:20}}}}},8204:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>j});var e=c(8732),f=c(49702),g=c.n(f),h=c(94487);c(66285),c(97237);var i=a([h]);function j({Component:a,pageProps:b}){return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(g(),{children:[(0,e.jsx)("link",{rel:"icon",type:"image/svg+xml",href:"/favicon.svg"}),(0,e.jsx)("link",{rel:"icon",href:"/favicon.ico",sizes:"any"}),(0,e.jsx)("link",{rel:"apple-touch-icon",href:"/apple-touch-icon.png"}),(0,e.jsx)("title",{children:"Customize Agent"})]}),(0,e.jsx)(h.PE,{children:(0,e.jsx)(a,{...b})})]})}h=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},13484:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent"},"nav":{"overview":"总览","knowledge":"知识库","canvas":"生成画布","skills":"技能库","guide":"指引","models":"模型配置","settings":"设置","promptManagement":"提示词管理","systemLogs":"系统日志"},"overview":{"title":"系统总览","description":"查看 Customize Agent 运行状态与关键指标","status":"服务状态","knowledgeBase":"知识库","chunksCount":"分块总数","cores":"核","memory":"内存","tokensUsed":"累计 Tokens","tasksTotal":"总任务数","successRate":"成功率","topModel":"调用最多模型","systemResources":"系统资源","hardwareUsage":"硬件使用率","cpuUsage":"CPU 使用率","memoryUsage":"内存使用率","activityContext":"活动上下文","recentTaskTypes":"最近任务类型","noDataAvailable":"暂无数据","updated":"已更新","noLogs":"暂无日志","uptime":"运行时间","templateCount":"生成记录","materialUnderstanding":"资料理解","semanticModel":"语义模型","external":"外部","local":"本地","notConfigured":"未配置","modelProviders":"模型供应商","auditLogs":"审计日志","prompts":"提示词","processUptime":"本次进程","materialKinds":"类已识别资料","lastActivity":"最后活动","coreMetrics":"核心指标","coreMetricsDesc":"服务累计运行时长、Token 消耗、任务与成功率。运行时间取**首次启动至今**(重启不清零),副文本是本次进程时长。","systemResourcesDesc":"生成侧的资源分布:知识库资料类型、提示词、生成记录、语义模型与模型供应商。","hardwareUsageDesc":"CPU 与内存的当前占用。CPU 是两次刷新之间的增量,服务刚起来时可能显示 0。","activityContextDesc":"最近一段时间的模型调用与任务类型分布。"},"knowledge":{"title":"知识库","description":"上传项目资料,查看解析、切片与索引状态","manageTitle":"知识库管理","manageDesc":"查看知识库统计、分类和功能状态","files":"文件管理","settings":"知识库设置","totalFiles":"文件总数","totalChunks":"分块总数","totalSize":"存储大小","lastIndexed":"上次索引","categories":"文件分类","fileCount":"文件数量","search":"搜索文件","searchPlaceholder":"输入文件名或内容关键词","filterCategory":"筛选分类","allCategories":"全部类型","upload":"上传文件","uploading":"上传中...","reindex":"重新索引","delete":"删除","deleteConfirm":"确定要删除该文件吗?此操作不可恢复。","fileName":"文件名","fileSize":"大小","fileCategory":"分类","fileDate":"修改日期","totalRootFolders":"总根文件夹数","totalFilesStats":"总文件数","successfullyParsed":"解析成功","parsingErrors":"解析失败","chunksCount":"切片数","parsingStatus":"解析状态","source":"来源","fileSource":"文件","showingMatchingFiles":"显示 {count} 个匹配文件","deleteSelected":"删除选中","exportParsed":"导出解析内容","exporting":"正在导出解析内容...","exportParsedSuccess":"已导出 {count} 个文件的解析内容","exportParsedSkipped":"导出完成,已跳过 {count} 个未解析文件","exportParsedFailed":"导出解析内容失败","deleteAll":"删除全部","uploadFiles":"上传文件","uploadFolder":"上传文件夹","reindexAll":"重新解析全部","new":"新建","manageRawFiles":"管理原始文件、文档和代码源","noFiles":"暂无文件,请上传文件开始使用","emptySearch":"未找到匹配的文件","features":"功能状态","vectorStore":"向量存储","embedding":"Embedding","averageSize":"平均大小","builtinExtractors":"内置提取器","featureDedup":"去重引擎","featureDedupDesc":"检测并移除重复/相似文档","featureChunker":"分块器","featureChunkerDesc":"将文档拆分为可检索的语义块","enabled":"已启用","disabled":"已禁用","parentChunks":"父级切片","childChunks":"子级切片","parentChunkId":"父级 ID","chunkIndex":"切片序号","chunkType":"类型","sectionOrRange":"章节/范围","chunkContent":"内容","parentChunkHint":"父级切片是同一 parentId 下子级切片的上下文合集;当一个父级只包含一个子级时,两处内容相同是正常现象。","fileDetailLoadFailed":"文件详情加载失败","openFileRequested":"已请求打开文件","openDirectoryRequested":"已请求打开目录","table":"表格","sheet":"工作表","header":"表头","rows":"行数","columns":"列数","formulaCount":"公式数","mergeCount":"合并单元格","columnName":"列名","rowRange":"行范围","tableGridPreview":"表格网格预览","drawing":"图纸","layer":"图层","entityType":"实体类型","blockSymbol":"块/符号","productPart":"产品/零件","material":"材料","entityName":"实体名称","layerTogglePreview":"图层开关 / 图纸预览","type":"类型","name":"名称","dataPath":"数据路径","path":"路径","value":"值","pageNumber":"页码","ocrText":"OCR 文本","openExpand":"展开","index":"序号","tokens":"Token","section":"章节","backToFileList":"返回文件列表","fileDetailTitle":"文件详情","fileDetailDesc":"查看解析结果与切片明细;图纸、表格、数据的原始结构请到「解析核查预览」里核对。","copySourcePath":"复制原文件路径","copyDirectory":"复制所在目录","originalFile":"原文件","directory":"所在目录","detailFilter":"详情筛选","detailFilterPlaceholder":"筛选 rowRange、图层、实体、data path、section、chunk 内容","fileReindexed":"文件索引已重建","copied":"已复制","rowPrefix":"行","ocrPdf":"OCR/PDF","ocrRecommended":"OCR 建议","ocrReason":"OCR 原因","ocrProvider":"OCR 引擎","ocrLanguages":"OCR 语言","ocrTextLength":"OCR 文本长度","pdfPageCount":"PDF 总页数","pdfTextPages":"PDF 文本页数","pdfOcrAugmented":"PDF 已 OCR 增强","pdfOcrPages":"PDF OCR 页码","pdfFailedPages":"PDF 失败页","pdfPageOcrSupported":"PDF 页面 OCR 支持","pdfOcrPageCount":"PDF OCR 页数","pdfOcrPageLimit":"PDF OCR 页数上限","pdfRenderer":"PDF 渲染器","imagePreprocessor":"图像预处理","selectFile":"请选择文件","reOcr":"重新 OCR","reindexFile":"重建该文件索引","basicInfo":"基础信息","status":"状态","extractionMode":"解析模式","contentCoverage":"覆盖范围","textLength":"正文长度","structuredInfo":"结构化信息","chunkCount":"切片数","parentMatches":"父级命中","childMatches":"子级命中","filterTerm":"筛选词","expand":"展开","weights":{"keyword":"关键词权重","vector":"向量权重","hybridBonus":"混合加成"},"recallSources":{"keyword":"关键词检索","vector":"向量检索","hybrid":"混合检索"},"scopes":{"project":"当前项目","global":"全局"},"topLevelCount":"共 {count} 个顶层项目","ignoreRules":"忽略规则","ignoreRulesHint":"忽略规则影响检索范围:命中这些规则的文件不参与生成检索(改这里等于改“哪些资料参与写作”)。","ignoreRulesEmpty":"当前没有忽略规则。","ignoreRulesAdd":"添加规则","ignoreRulesPlaceholder":"例如:**/草稿/** 或 *.bak","ignoreRulesDelete":"删除","ignoreRulesDeleted":"已删除规则","ignoreRulesAdded":"已添加规则","ignoreRulesLoadFailed":"忽略规则读取失败","ignoreRulesSaveFailed":"忽略规则写入失败","pdfCoverage_complete":"该解析结果已完成全页读取核验","pdfCoverage_incomplete":"该解析结果尚未完成全页读取核验,请重新解析","pdfCoverage_unmeasured":"尚无全页读取核验结果,请重新解析后用于生成","pdfProcessedPages":"已处理页数 / 核验总页数","pdfMissingPages":"尚未处理页号","latestParseFailed":"最近一次解析失败","previousParseRetained":"旧解析已保留供追溯,不能作为本次解析成功","currentParseInProgress":"当前资料正在重新解析,请等待完成"},"models":{"title":"模型配置","description":"管理供应商和生成模型,整个流程统一使用当前选中的模型","modelList":"模型服务","apiKey":"API Key","baseUrl":"Base URL","protocol":"请求协议","connected":"已连接","connectionFailed":"连接失败","noProviders":"暂无供应商,请先添加供应商。","deleteProvider":"删除","deleteProviderConfirm":"确定要删除此模型及其所有配置吗?","apiKeyEditHint":"已配置的 Key 会以掩码回显,聚焦后可输入新 Key;掩码不可复制,留空或保持掩码则不修改。","apiKeyEditPlaceholder":"输入新的 API Key,留空保持不变","embeddingConfig":"Embedding 配置","embeddingProvider":"Embedding Provider","model":"模型","dimensions":"维度","none":"无","localRecommended":"本地(推荐)","externalAdvanced":"外部(高级)","status":"状态","openAICompatible":"OpenAI 兼容","saveEmbedding":"保存 Embedding 配置","testEmbedding":"测试 Embedding","optional":"可选","save":"保存","cancel":"取消","webEnhancement":"联网增强","webEnhancementDesc":"默认关闭。开启后,系统会受控检索公开规范、政策和通用技术资料,用于增强措施准确性;联网资料不会覆盖本地项目事实。","directEndpoint":"直连端点","directEndpointDesc":"Base URL 是完整接口地址","capabilities":"多模态能力","anthropic":"Anthropic","google":"Google","ollama":"Ollama","openRouter":"OpenRouter","imageGeneration":"图片生成","imageUnderstanding":"图片理解","fileUnderstanding":"文件理解","audioCapability":"音频能力","videoCapability":"视频能力","localEmbedding":"本地 Embedding","modelListDesc":"点选服务卡片上的单选框,整次生成使用该服务对应的模型。","embeddingConfigDesc":"知识库检索用的向量模型。切换外部 Embedding 前先确认服务可达——语义检索、切片召回都走它。","testConnection":"测试连接","addProvider":"添加供应商","editProvider":"编辑供应商","providerName":"模型服务名称","providerNamePlaceholder":"例如 deepseek-v4-pro","modelIdentifier":"模型标识","modelIdentifierPlaceholder":"例如 deepseek-v4-pro","modelIdentifierHint":"不填时使用服务名称作为模型标识;需要时填写服务实际接受的标识。"},"prompt":{"title":"提示词管理","description":"管理和优化文档编制、资料提取提示词","filePath":"文件路径","hasFile":"已配置","promptName":"提示词名称","columnSource":"来源","columnMtime":"修改时间","columnActions":"操作","shownCount":"显示 {count} 份匹配提示词","writingGuideTitle":"怎么写、写什么","writingGuideIntro":"写清文档目的、章节结构、工程关注点与文风详略。","writingGuideParameters":"参数按具体对象、工法和控制需求写;管理内容无须凑参数。","writingGuideDetails":"查看撰写要点与结构示例","writingGuideNeedsTitle":"建议写清这些要求","writingGuidePurpose":"文档用途、使用场景和读者,例如投标编制、实施交底或专业审阅。","writingGuideStructure":"完整章、节名称及顺序,说明必须保留的结构;用下方示例中的 OUTLINE 标签包住大纲。","writingGuideEngineering":"工程对象、改造或施工工况、专业接口和重点控制事项;未核实的资料数值不要写成已知条件。","writingGuideStyle":"文字风格、详略侧重,以及需要的表格、流程图或其他输出形式;技术方法写清条件、步骤和检查方式。","writingGuideManagedTitle":"软件统一处理的事项","writingGuideManaged":"资料核验、主控与各章作者调度、使用已选模型、章编号与目录、工具调用、质量审查和导出由软件统一处理。检查结论按实际结果呈现,不由提示词保证达标。","writingGuideAvoid":"不必重复指定模型路由、调用预算、阶段超时或工具协议,也不要要求堆参数、自评达标或反复刷分;这些要求可能与软件流程冲突。","writingGuideExampleTitle":"可识别的两章格式示例","writingGuideExampleHint":"仅示范写法。请按本工程完整职责补齐所需章、节,不用示例代替招标、设计或现场要求。","writingGuideExample":"用于本工程施工组织设计的专业审阅。\\n重点说明改造工况、既有设施保护、施工接口与验收安排。\\n文风具体、简洁,施工方法写清作业条件、步骤及检查方式。\\n<OUTLINE>\\n第一章 工程概况与施工部署\\n1.1 工程范围与现场条件\\n1.2 施工界面与组织安排\\n第二章 主要施工方法\\n2.1 工序与作业条件\\n2.2 关键控制与验收\\n</OUTLINE>\\n涉及配置比较或排程时使用清晰表格。","writingGuideOneOutline":"同次选用的提示词中,只由一份提供完整大纲,其他提示词补充关注点和文风,避免重复或冲突的目录。","customPrompt":"我的提示词","currentProject":"当前项目","otherProjects":"其他项目","allPrompts":"全部提示词","promptStatus":"提示词状态","selected":"已选中","unselected":"未选中","hasFileStatus":"有文件","missingFileStatus":"无文件","sortByName":"名称 A-Z","sortByMtime":"最近修改优先","sortBySource":"来源优先","sortBySelected":"已选中优先","noMatchDesc":"没有找到匹配的提示词,请尝试更换关键词或清空筛选条件","noPromptInGroup":"当前分组没有提示词","searchPrompt":"搜索名称、内容、路径...","import":"导入","exportFiltered":"导出筛选","createPrompt":"创建提示词","exportSelected":"导出选中","selectAll":"全选","cancelSelectAll":"取消全选","batchSelect":"批量选中","cancelBatchSelect":"取消批量选中","cancelSelect":"取消选中","clearSelect":"清空选择","aiPromptAssistant":"AI 提示词助手","clearHistory":"清空历史","generating":"生成中","canConverse":"可对话优化","mentionRecallHint":"输入 @ 召回知识库文件,再描述你的优化目标","apply":"应用","aiAnalyzing":"AI 正在分析并生成内容...","recallKbFiles":"召回知识库文件","recallLimitHint":"支持文件名与知识库内容检索,最多召回 3 个文件","inputAtKeyword":"输入 @关键词","loadingKbFiles":"正在加载知识库文件...","noRecallableKbFiles":"暂无可召回的知识库文件","searchingKbContent":"正在检索知识库内容...","noMatchingKbFiles":"没有匹配的知识库文件,请换个关键词","continueSearchingKb":"正在继续检索内容匹配...","unclassified":"未分类","unknownFormat":"未知格式","contentMatch":"内容匹配","diskFile":"磁盘文件","fileMatch":"文件匹配","mentionRecallPlaceholder":"输入 @ 召回知识库文件,再描述优化目标...","rulePreviewTitle":"规则识别预览","rulePreviewAnalyzing":"正在识别规则…","rulePreviewHint":"输入提示词内容后将自动识别规则","rulePreviewNone":"未识别到规则","send":"发送","chatFailed":"AI 对话失败,请检查模型配置","chatEmptyReply":"AI 未返回内容","nameRequired":"请输入名称","untitled":"未命名提示词","appliedToEditor":"已应用到编辑内容,请确认后保存","exportedCount":"已导出 {count} 条提示词","importedCount":"已导入 {count} 条提示词","importFailed":"导入失败,请确认 JSON 文件格式正确","exportOne":"导出","exportNoneSelected":"请先勾选要导出的提示词","deleteCustomConfirm":"删除自定义提示词?","deleteProjectConfirm":"删除项目记录及文件?","localPrompt":"本地提示词","selectedCount":"已选择 {count} 项"},"assets":{"openFile":"打开文件","openDirectory":"打开目录"},"logs":{"backToSettings":"返回设置","monitorSystem":"监控系统异常、API 错误和运行时问题","searchLogs":"搜索日志...","refresh":"刷新","clear":"清空","clearConfirm":"确认清空所有错误日志?","logStorageInfo":"日志存储在本地","maxLoaded":"最多加载 500 条。","noLogsFound":"没有找到日志","time":"时间","level":"级别","source":"来源","message":"消息","requestId":"请求 ID","function":"函数","requestContext":"请求上下文","metadata":"元数据","stackTrace":"堆栈跟踪","clearedFiles":"已清空 {count} 个错误日志文件"},"settings":{"title":"系统设置","description":"管理系统界面选项和状态概览","language":"界面语言","languageDesc":"选择系统显示的语言","theme":"外观主题","themeDesc":"调整界面的亮色和暗色主题","light":"浅色","dark":"深色","system":"跟随系统","serverStatus":"服务状态","serverStatusDesc":"查看资源使用和运行健康度","status":"状态","healthy":"健康","unknown":"未知","uptime":"运行时间","days":"天","hours":"小时","minutes":"分","cpu":"处理器","cores":"核","memory":"内存使用","embeddingConfig":"向量配置","embeddingConfigDesc":"查看知识库的向量检索设定","provider":"供应商","model":"模型","apiKey":"密钥配置","configured":"已配置","none":"未配置","dimensions":"向量维度","localData":"本地数据","localDataDesc":"所有数据仅存储在您的本地设备上","directory":"存储目录","knowledgeBase":"知识库格式","localVectors":"本地向量","tasks":"总任务","tokens":"累计 Tokens","diagnostics":"诊断","diagnosticsDesc":"服务端异常日志(堆栈、请求、来源)。排查「这次生成为什么失败」时用。","openDiagnostics":"打开诊断日志"},"documents":{"saveDraft":"保存草稿","exportGateBlockedTitle":"导出门禁未通过","exportAnywayNonDeliverable":"仍要导出(非交付物)","nonDeliverableExportConfirm":"继续导出得到的文件将强制标注「非交付物」(文件名后缀 + 界面横幅),不得作为正式成果提交。","nonDeliverableExportTitle":"本次导出为非交付物","nonDeliverableExportHint":"导出门禁未通过,文件已强制标注「非交付物」(文件名后缀);该文件不得作为正式成果提交。"},"common":{"save":"保存","cancel":"取消","confirm":"确认","delete":"删除","edit":"编辑","add":"添加","search":"搜索","loading":"加载中...","error":"出错了","success":"操作成功","retry":"重试","close":"关闭","noData":"暂无数据","unknown":"未知","never":"从未","statusWaiting":"等待","statusRunning":"进行中","statusCompleted":"完成","statusSkipped":"已跳过","statusFailed":"失败","statusPartial":"部分生效","statusReview":"需复核","statusAbnormal":"异常","statusIndexed":"已索引","statusOutdated":"待更新","statusDeleted":"已删除","statusNotIndexed":"未索引","levelError":"错误","levelWarning":"警告","levelInfo":"提示","totalRows":"共 {count} 条"},"jobs":{"title":"后台任务","refresh":"刷新","clearAll":"清空全部","empty":"暂无后台任务","emptyHint":"上传、重新解析与文档生成都会在这里留下记录。","remove":"移除记录","removeConfirm":"从列表里移除这条记录?","removed":"已移除记录","clearConfirmTitle":"清空全部后台任务记录?","clearConfirmContent":"记录会被删除。任务本身不受影响——进行中的任务会继续跑。","cleared":"已清空记录","clearFailed":"清空失败","removeFailed":"移除失败","typeLabel":"类型","stageLabel":"阶段","chunksLabel":"切片数","fileLabel":"文件","updatedAtLabel":"更新时间","diagnostics":"诊断详情","statusProcessing":"进行中","statusSuccess":"已完成","statusWarning":"有告警","statusError":"失败","typeDocument":"文档生成","typeUpload":"文件上传","typeReindex":"重新解析","typeDelete":"删除","resident":"常驻","residentHint":"系统常驻告警:检测到问题时自动写入,清除后下次检查仍会出现","clearConfirmWarning":"进行中的记录会在下一次进度更新时重新出现;系统常驻告警(资料包混放等)也会在下次检查时重新写入。"},"records":{"title":"生成记录","empty":"还没有生成记录","batch":"批量","current":"当前","selectPage":"全选本页","clearSelect":"取消全选","checkedCount":"已选 {count} 条","deleteSelected":"删除选中","deletedCount":"已删除 {count} 条记录","confirmDelete":"删除这条记录?","confirmDeleteSelected":"删除选中的 {count} 条记录?","deleteHint":"删除后不可恢复。生成中的记录不能删除——先在画布上中止它。","inFlightHint":"生成中的记录不能删除(先在画布上中止它)","reportTitle":"导出闭环报告","reportEmpty":"还没有导出记录","reportEntry":"导出报告","reportFormat":"格式","reportDuration":"总用时","reportRepaired":"修复","reportBlocking":"阻断","reportRules":"规则","reportHealthAlerts":"健康告警","reportGateBlocked":"非交付物","reportChecklistTitle":"最近一次非交付物导出的未收敛项","reportChecklistTotal":"共 {count} 项","netCharsLabel":"修复链净增字数","netCharsOver":"超目标","netCharsRatio":"占原稿","netCharsWarn":"目标 ≤5%:净增越大,\\"分是修出来的\\"成分越高——首过写作的缺口被修复链补上了","receiptBadge":"本次导出 {count} 项提醒","receiptBindingAbsent":"门禁未绑定正文指纹:无法核对放行依据是否就是这份正文","receiptBindingMismatch":"正文与门禁指纹不匹配:放行依据不是这份正文(收口后被编辑/替换过)","receiptContentIssues":"内容问题 {count} 条","receiptFigureFailures":"图件未内联 {count} 张","receiptGateIssues":"门禁阻断清单 {count} 项","receiptNonDeliverable":"本次导出为「非交付物」:文件名已由服务端强制加后缀,不得作为正式成果提交","receiptPdfPages":"PDF 共 {count} 页","receiptRenderBlockers":"渲染审计:源层结构缺陷 {count} 项","receiptRenderNotices":"渲染审计告警 {count} 条","receiptTemplateWarning":"模板占位符缺失,已回退:","receiptTitle":"最近一次导出回执","reviewReportDownload":"下载 .md","reviewReportHint":"未跑到终门禁的记录没有报告(打开会说明原因)","reviewReportLabel":"交付三件套报告","reviewReportView":"在线查看"}}')},22147:(a,b,c)=>{"use strict";async function d(a,b){let c=await fetch(a,b);if(!c.ok){let a=await c.text(),b=a||`HTTP ${c.status}`;try{let c=JSON.parse(a);b=c.error||c.message||b}catch{let d=a.match(/<script id="__NEXT_DATA__" type="application\/json">([\s\S]*?)<\/script>/u)?.[1];if(d)try{let a=JSON.parse(d.replace(/"/gu,'"'));b=a.err?.message||`HTTP ${c.status}`}catch{b=`HTTP ${c.status}`}}throw Error(b)}return c.json()}async function e(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/stats${b}`)}async function f(a){let b=new URLSearchParams;return a?.projectRoot&&b.set("projectRoot",a.projectRoot),a?.category&&b.set("category",a.category),a?.page&&b.set("page",String(a.page??1)),a?.limit&&b.set("limit",String(a.limit??50)),d(`/api/kb/files?${b}`)}async function g(a){let b=new URLSearchParams;return a?.query&&b.set("q",a.query),a?.projectRoot&&b.set("projectRoot",a.projectRoot),a?.category&&b.set("category",a.category),a?.limit&&b.set("limit",String(a.limit)),a?.includeContent===!1&&b.set("includeContent","0"),d(`/api/kb/files/search?${b}`)}async function h(a,b){let c=new URLSearchParams({relativePath:a});return b&&c.set("projectRoot",b),d(`/api/kb/files/detail?${c}`)}async function i(a,b){return d("/api/kb/files/reindex",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePath:a,projectRoot:b})})}async function j(a,b,c){return d("/api/kb/files/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePath:a,target:b,projectRoot:c})})}c.d(b,{BO:()=>aq,Bh:()=>ar,CU:()=>p,Es:()=>aa,FC:()=>an,G8:()=>t,GA:()=>_,H1:()=>v,H7:()=>o,HC:()=>i,HT:()=>f,Ho:()=>O,II:()=>ai,Ls:()=>w,NH:()=>k,NI:()=>au,OX:()=>A,Pw:()=>y,QG:()=>G,Qx:()=>m,SJ:()=>r,UE:()=>ac,UQ:()=>J,X8:()=>u,YO:()=>x,Z3:()=>ad,_m:()=>ae,aP:()=>ah,ax:()=>n,bZ:()=>al,c1:()=>l,cQ:()=>D,dH:()=>Y,dd:()=>aj,dk:()=>B,dx:()=>z,ef:()=>C,f$:()=>K,fc:()=>at,h1:()=>af,hH:()=>ap,hU:()=>ab,hc:()=>e,iN:()=>M,le:()=>am,nU:()=>g,nn:()=>as,oH:()=>ao,oS:()=>L,p5:()=>Z,r:()=>I,sz:()=>F,tZ:()=>s,tn:()=>j,u6:()=>ak,v7:()=>E,vX:()=>P,wI:()=>H,x6:()=>d,xC:()=>h,xU:()=>N,xq:()=>q,zr:()=>ag});class k extends Error{constructor(a){super(`上传部分成功:${a.succeededBatches}/${a.totalBatches} 个批次已上传,${a.failedBatches} 个批次失败`),this.name="PartialUploadError",this.succeededBatches=a.succeededBatches,this.failedBatches=a.failedBatches,this.totalBatches=a.totalBatches,this.failures=a.failures}}async function l(a,b,c,e){let f=Number(process.env.NEXT_PUBLIC_CUSTOMIZE_KB_UPLOAD_BATCH_FILES||500),g=Number(process.env.NEXT_PUBLIC_CUSTOMIZE_KB_UPLOAD_BATCH_BYTES||0x8000000),h=Math.max(1,Math.min(4,Number(process.env.NEXT_PUBLIC_CUSTOMIZE_KB_UPLOAD_CONCURRENCY||2))),i=[],j=[],l=0,m=0,n=0;for(let b of a)j.length>0&&(j.length>=f||l+b.size>g)&&(i.push({files:j,offset:m}),j=[],l=0,m=n),j.push(b),l+=b.size,n+=1;j.length>0&&i.push({files:j,offset:m});let o=[],p=[],q=0,r=0;async function s(f){let g,h=i[f],j=new URLSearchParams({batchIndex:String(f),totalBatches:String(i.length)});c&&j.set("uploadId",c),b&&j.set("projectRoot",b);for(let k=0;k<2;k++)try{let g=await d(`/api/kb/upload?${j}`,{method:"POST",body:function(a,b){let c=new FormData;for(let[d,e]of(b.projectRoot&&c.append("projectRoot",b.projectRoot),b.uploadId&&c.append("uploadId",b.uploadId),c.append("batchIndex",String(b.batchIndex)),c.append("totalBatches",String(b.totalBatches)),c.append("fileOffset",String(b.fileOffset)),c.append("startIndex",b.startIndex?"1":"0"),c.append("uploadComplete",b.uploadComplete??b.batchIndex===b.totalBatches-1?"1":"0"),a.entries()))c.append(`files[${d}]`,e,e.name),c.append(`relativePaths[${d}]`,e.webkitRelativePath||e.name);return c}(h.files,{projectRoot:b,uploadId:c,batchIndex:f,totalBatches:i.length,fileOffset:h.offset,startIndex:0===f,uploadComplete:1===i.length})});o[f]=g,q+=h.files.length,e?.({uploadedFiles:q,totalFiles:a.length,batchIndex:f,totalBatches:i.length});return}catch(a){g=a instanceof Error?a:Error(String(a))}p.push({batchIndex:f,files:h.files.slice(0,5).map(a=>a.name),message:g?.message||"上传失败"}),e?.({uploadedFiles:q,totalFiles:a.length,batchIndex:f,totalBatches:i.length})}let t=Array.from({length:Math.min(h,i.length)},async()=>{for(;r<i.length;){let a=r++;await s(a)}});await Promise.all(t);let u=i.length-p.length;if(p.length>0&&0===u)throw Error(p[0]?.message||"上传失败");if(i.length>1&&u>0){let a=await d("/api/kb/upload/complete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:b,uploadId:c})});o.push(a)}if(p.length>0)throw new k({succeededBatches:u,failedBatches:p.length,totalBatches:i.length,failures:p});return o.filter(Boolean).at(-1)??{success:!0}}async function m(a){let b=new URLSearchParams({limit:"50"});return a&&b.set("projectRoot",a),d(`/api/kb/operations?${b}`)}async function n(a,b){let c=new URLSearchParams;return b&&c.set("projectRoot",b),d(`/api/jobs/${encodeURIComponent(a)}?${c}`)}async function o(a){let b=new URLSearchParams;return a&&b.set("projectRoot",a),d(`/api/kb/operations?${b}`,{method:"DELETE"})}async function p(a,b){let c=new URLSearchParams({id:a});return b&&c.set("projectRoot",b),d(`/api/kb/operations?${c}`,{method:"DELETE"})}async function q(a,b){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePath:a,projectRoot:b})})}async function r(a,b){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePaths:a,projectRoot:b})})}async function s(a,b,c){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePaths:a,folderPaths:b,projectRoot:c})})}async function t(a){let b=await fetch("/api/kb/files/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=`导出失败 (${b.status})`;try{let c=await b.json();c?.error&&(a=c.error)}catch{}throw Error(a)}let c=await b.blob(),d=b.headers.get("content-disposition")||"",e=/filename\*=(?:UTF-8'')?([^;]+)/iu.exec(d);return{blob:c,fileName:e?.[1]?decodeURIComponent(e[1]):"kb-export.txt",exported:Number(b.headers.get("x-export-count")||0),skipped:Number(b.headers.get("x-export-skipped")||0)}}async function u(a){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({all:!0,projectRoot:a})})}async function v(a){return d("/api/kb/reindex",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:a})})}async function w(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/ignore${b}`)}async function x(a,b){return d("/api/kb/ignore",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({rules:a,projectRoot:b})})}async function y(a,b){return d("/api/kb/ignore",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({pattern:a,projectRoot:b})})}async function z(){return d("/api/prompt")}async function A(a){return d("/api/documents/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function B(a){return d("/api/documents/generate/preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function C(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/material-groups${b}`)}async function D(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/documents/generated${b}`)}async function E(a,b=!1,c,e,f){let g=new URLSearchParams;b&&g.set("lite","1"),c&&g.set("projectRoot",c),void 0!==f&&Number.isFinite(f)&&g.set("ifUpdatedSince",String(f));let h=g.toString()?`?${g.toString()}`:"";return d(`/api/documents/generated/${encodeURIComponent(a)}${h}`,{signal:e})}async function F(a,b,c){let e=new URLSearchParams;b&&e.set("projectRoot",b);let f=e.toString()?`?${e.toString()}`:"";return d(`/api/documents/generated/${encodeURIComponent(a)}/preview${f}`,{signal:c})}async function G(a,b){let c=b?`?projectRoot=${encodeURIComponent(b)}`:"";return d(`/api/documents/generated/${encodeURIComponent(a)}${c}`,{method:"DELETE"})}async function H(a,b,c={}){let d=await fetch(`/api/documents/generated/${encodeURIComponent(a)}/instruction`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,...c})}),e=await d.json().catch(()=>({}));if(!d.ok)throw Error(e.error||"指令未受理");return e}async function I(a,b){return d("/api/documents/generated",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"abort",documentId:a,projectRoot:b})})}async function J(a,b){return d("/api/documents/generated",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume",documentId:a,projectRoot:b})})}async function K(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/assets/generated${b}`)}async function L(a,b,c){return d("/api/assets/generated",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"open",target:b,projectRoot:c})})}function M(a,b){let c=b?`&projectRoot=${encodeURIComponent(b)}`:"";return`/api/assets/generated/preview?id=${encodeURIComponent(a)}${c}`}async function N(a){let{documentId:b,...c}=a;return d(`/api/documents/generated/${encodeURIComponent(b)}/repair`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})}async function O(a){let{documentId:b,requestId:c,...e}=a;return d(`/api/documents/generated/${encodeURIComponent(b)}/repair/${encodeURIComponent(c)}/confirm`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function P(a){let{documentId:b,requestId:c,...e}=a;return d(`/api/documents/generated/${encodeURIComponent(b)}/repair/${encodeURIComponent(c)}/rollback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}let Q={notDeliverable:"X-Export-Not-Deliverable",exportPurpose:"X-Export-Purpose",bodySha256:"X-Export-Body-Sha256",issuesReport:"X-Export-Issues-Report",gatePassed:"X-Export-Gate-Passed",gateBinding:"X-Export-Gate-Binding",gateIssues:"X-Export-Gate-Issues",gateIssueCount:"X-Export-Gate-Issue-Count",contentIssues:"X-Export-Content-Issues",renderAudit:"X-Export-Render-Audit",figureInline:"X-Export-Figure-Inline",templateWarning:"X-Export-Template-Warning",pageLimit:"X-Export-Page-Limit",pdfPageCount:"X-PDF-Page-Count"};function R(a){if(a)try{return JSON.parse(decodeURIComponent(a))}catch{return}}function S(a){if(a)try{return decodeURIComponent(a)}catch{return}}function T(a){return"true"===a||"false"!==a&&void 0}function U(a){let b=R(a);return Array.isArray(b)&&b.every(a=>"string"==typeof a)?b:void 0}let V={notDeliverable:T,exportPurpose:a=>"review"===a||"delivery"===a?a:void 0,bodySha256:a=>a&&/^[a-f0-9]{64}$/u.test(a)?a:void 0,issuesReport:a=>{let b=R(a);return b&&/^[a-f0-9]{64}$/u.test(b.id)&&/^[a-f0-9]{64}$/u.test(b.sha256)&&/^[a-f0-9]{64}$/u.test(b.bodySha256)&&(void 0===b.runId||"string"==typeof b.runId)?b:void 0},gatePassed:T,gateBinding:a=>"mismatch"===a||"absent"===a?a:void 0,gateIssues:U,gateIssueCount:a=>{let b=null===a||""===a.trim()?NaN:Number(a);return Number.isFinite(b)?b:void 0},contentIssues:U,renderAudit:function(a){let b=R(a);if(!(!b||"object"!=typeof b||Array.isArray(b))&&"string"==typeof b.mode&&"number"==typeof b.blockerCount&&Array.isArray(b.notices))return b},figureInline:function(a){let b=R(a);if(!(!b||"object"!=typeof b||Array.isArray(b))&&"number"==typeof b.inlined&&Array.isArray(b.failed)&&b.failed.every(a=>"string"==typeof a))return{inlined:b.inlined,failed:b.failed}},templateWarning:S,pageLimit:S,pdfPageCount:a=>{let b=null===a||""===a.trim()?NaN:Number(a);return Number.isFinite(b)?b:void 0}},W=null,X=new Set;function Y(){return W}function Z(a){return X.add(a),()=>{X.delete(a)}}function $(a){for(let b of(W=a,X))b()}class _ extends Error{constructor(a,b){super(a),this.receipt=b,this.name="DocumentExportError"}}function aa(a,b){let c=new URLSearchParams({reviewReportId:b.id});return b.runId&&c.set("reviewRunId",b.runId),a.documentId&&c.set("documentId",a.documentId),a.projectRoot&&c.set("projectRoot",a.projectRoot),`/api/documents/export?${c}`}async function ab(a,b){let c=await fetch("/api/documents/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,reviewReportId:b.id,reviewRunId:b.runId})});if(!c.ok)throw Error("审阅问题报告下载失败");let d=c.headers.get("content-disposition")??"",e=/filename\*=UTF-8''([^;]+)/iu.exec(d)?.[1];return{blob:await c.blob(),filename:e?decodeURIComponent(e):`审阅问题报告_${b.bodySha256.slice(0,12)}.json`}}async function ac(a){let b,c=await fetch("/api/documents/export",{method:"POST",headers:{"Content-Type":"application/json",Accept:"pdf"===a.format?"application/pdf":"*/*"},body:JSON.stringify(a)}),d=c.headers.get("content-type")||"",e=function(a){let b={};for(let c of Object.keys(V)){let d=V[c](a.get(Q[c]));void 0!==d&&(b[c]=d)}return b}(c.headers),f=async()=>{let b=await c.text(),d=b||"导出失败";try{let a=JSON.parse(b),c=a.issues?.map(a=>a.message).filter(Boolean).slice(0,3).join(";");d=a.message||(c?`${a.error||"导出失败"}:${c}`:a.error||d)}catch{}throw e.issuesReport&&$({receipt:e,format:a.format,documentId:a.documentId,projectRoot:a.projectRoot,at:Date.now()}),new _(d.length>300?`${d.slice(0,300)}...`:d,e)};c.ok||await f(),"pdf"!==a.format||d.includes("application/pdf")||await f(),"docx"!==a.format||d.includes("officedocument.wordprocessingml.document")||await f();let g=!0===e.notDeliverable,h=e.gateIssues??[],i=c.headers.get("content-disposition")||"",j=/filename\*=UTF-8''([^;]+)/iu.exec(i)?.[1];try{b=j?decodeURIComponent(j):void 0}catch{b=void 0}let k=await c.blob();return $({receipt:e,format:a.format,documentId:a.documentId,projectRoot:a.projectRoot,...b?{filename:b}:{},at:Date.now()}),{blob:k,filename:b,notDeliverable:g,gateIssues:h,receipt:e}}async function ad(){return d("/api/config/providers")}async function ae(a,b){return d("/api/config/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a,...b})})}async function af(a){return d(`/api/config/providers/${encodeURIComponent(a)}`,{method:"DELETE"})}async function ag(){return d("/api/config/models")}async function ah(a){return d("/api/config/models",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function ai(){return d("/api/config/embedding")}async function aj(a){return d("/api/config/embedding",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function ak(){return d("/api/config/embedding/healthCheck",{method:"POST"})}async function al(a){return d("/api/config/healthCheck",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a})})}async function am(){return d("/api/health")}async function an(){return d("/api/system/stats")}async function ao(a=200){return d(`/api/system/logs?limit=${a}`)}async function ap(){return d("/api/system/logs",{method:"DELETE"})}async function aq(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/categories${b}`)}async function ar(a){return d(`/api/config/providers/${encodeURIComponent(a)}`)}async function as(){return d("/api/system/data-health")}async function at(a){return d("/api/system/data-health",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scopes:a,confirm:!0})})}async function au(){return d("/api/system/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({confirm:!0})})}},26588:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>o});var e=c(8732),f=c(79270),g=c(60056),h=c(82015),i=c(94487),j=c(34775),k=c(22147),l=a([i]);i=(l.then?(await l)():l)[0];let p={processing:"jobs.statusProcessing",success:"jobs.statusSuccess",warning:"jobs.statusWarning",error:"jobs.statusError"},q={document:"jobs.typeDocument",upload:"jobs.typeUpload",reindex:"jobs.typeReindex",delete:"jobs.typeDelete"};function m({label:a,value:b}){return(0,e.jsxs)("div",{className:"flex gap-3 text-xs",children:[(0,e.jsx)("span",{className:"w-16 shrink-0 text-[var(--colorTextTertiary)]",children:a}),(0,e.jsx)("span",{className:"min-w-0 break-words text-[var(--colorTextSecondary)]",children:b})]})}function n({job:a,mounted:b,onRemove:c}){var d,h;let j=(0,i.Vr)(),k=Math.max(0,Math.min(100,Math.round(a.percent||0))),l="error"===a.status?"exception":"success"===a.status?"success":"active",n=a.details?.slice(0,40)||[],o=b?new Date(a.updatedAt).toLocaleString():String(a.updatedAt),r=a.id.startsWith("intelligence-mixed-");return(0,e.jsx)("div",{className:"border-b border-[var(--borderColor)] px-5 py-4 last:border-b-0",children:(0,e.jsxs)("div",{className:"flex items-start gap-3 text-left",children:[(0,e.jsx)("span",{className:"mt-1 inline-flex text-base",children:(d=a.status,"processing"===d?(0,e.jsx)(f.SyncOutlined,{spin:!0}):"success"===d?(0,e.jsx)(f.CheckCircleOutlined,{className:"text-[var(--colorOk)]"}):"warning"===d?(0,e.jsx)(f.ClockCircleOutlined,{className:"text-[var(--colorWarn)]"}):(0,e.jsx)(f.CloseCircleOutlined,{className:"text-[var(--colorDanger)]"}))}),(0,e.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,e.jsxs)("div",{className:"mb-2 flex items-start justify-between gap-3",children:[(0,e.jsx)(g.o5.Text,{strong:!0,className:"min-w-0 flex-1 leading-6",ellipsis:{tooltip:a.title},children:a.title}),(0,e.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[r&&(0,e.jsx)(g.m_,{title:j("jobs.residentHint"),children:(0,e.jsx)(g.vw,{color:"purple",className:"m-0",children:j("jobs.resident")})}),(0,e.jsx)(g.vw,{color:(h=a.status,"processing"===h?"processing":"success"===h?"success":"warning"===h?"warning":"error"),className:"m-0",children:j(p[a.status])}),c&&(0,e.jsx)(g.iS,{title:j("jobs.removeConfirm"),onConfirm:c,okText:j("common.confirm"),cancelText:j("common.cancel"),children:(0,e.jsx)(g.$n,{size:"small",type:"text",danger:!0,icon:(0,e.jsx)(f.DeleteOutlined,{}),title:j("jobs.remove")})})]})]}),(0,e.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,e.jsx)(g.o5.Text,{type:"error"===a.status?"danger":void 0,className:"block whitespace-pre-wrap break-words leading-6",children:a.error||a.message}),(0,e.jsx)(g.ke,{percent:k,status:l}),(0,e.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,e.jsx)(m,{label:j("jobs.typeLabel"),value:j(q[a.type])}),(0,e.jsx)(m,{label:j("jobs.stageLabel"),value:a.stage}),a.chunkCount?(0,e.jsx)(m,{label:j("jobs.chunksLabel"),value:a.chunkCount}):null,a.filePath?(0,e.jsx)(m,{label:j("jobs.fileLabel"),value:a.filePath}):null,(0,e.jsx)(m,{label:j("jobs.updatedAtLabel"),value:o})]}),n.length>0?(0,e.jsxs)("div",{className:"rounded-lg border border-[var(--borderColor)] bg-[var(--colorFillAlter)] p-2",children:[(0,e.jsx)(g.o5.Text,{type:"secondary",className:"block text-xs",children:j("jobs.diagnostics")}),(0,e.jsx)("ul",{className:"m-0 mt-1 max-h-52 overflow-auto pl-4 text-xs leading-5 text-[var(--colorTextSecondary)]",children:n.map((b,c)=>(0,e.jsx)("li",{className:"break-words",children:b},`${a.id}-${c}`))})]}):null]})]})]})})}function o(){let a=(0,i.Vr)(),{message:b}=g.qw.useApp(),[c,d]=(0,h.useState)(!1),[l,m]=(0,h.useState)([]),[o,p]=(0,h.useState)(!1),[q,r]=(0,h.useState)(!1),s=(0,h.useRef)(0);(0,h.useRef)(null);let t=(0,h.useRef)([]),[u,v]=(0,h.useState)(!1),w=(0,h.useCallback)(async()=>{try{let a=await (0,k.Qx)();s.current=0,v(!1),t.current=a.operations||[],m(a.operations||[])}catch(a){throw v(!0),a}},[]),x=(0,h.useMemo)(()=>l.filter(a=>"processing"===a.status),[l]),y=x.length,z=x[0],A=async c=>{try{await (0,k.CU)(c),b.success(a("jobs.removed")),await w()}catch{b.error(a("jobs.removeFailed"))}};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(g.Ex,{count:y,size:"small",children:(0,e.jsx)(g.$n,{className:"topbarBtn",onClick:()=>d(!0),icon:y?(0,e.jsx)(f.SyncOutlined,{spin:!0}):(0,e.jsx)(f.ClockCircleOutlined,{}),children:a("jobs.title")})}),z&&!c&&y>0?(0,e.jsxs)("span",{className:"max-w-[260px] truncate text-[var(--colorTextSecondary)]",children:[z.title," \xb7 ",z.percent,"%"]}):null,(0,e.jsxs)(g._s,{title:a("jobs.title"),placement:"right",size:"large",open:c,onClose:()=>d(!1),extra:(0,e.jsx)(g.$n,{size:"small",onClick:()=>void w(),children:a("jobs.refresh")}),footer:l.length>0?(0,e.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,e.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:l.length}),(0,e.jsx)(g.$n,{danger:!0,size:"small",loading:q,icon:(0,e.jsx)(f.DeleteOutlined,{}),onClick:()=>{g.aF.confirm({title:a("jobs.clearConfirmTitle"),content:(0,e.jsxs)("div",{className:"text-sm",children:[(0,e.jsx)("div",{children:a("jobs.clearConfirmContent")}),(0,e.jsx)("div",{className:"mt-1 text-[var(--colorTextSecondary)]",children:a("jobs.clearConfirmWarning")})]}),okText:a("jobs.clearAll"),cancelText:a("common.cancel"),okButtonProps:{danger:!0},onOk:async()=>{r(!0);try{await (0,k.H7)(),b.success(a("jobs.cleared")),await w()}catch{b.error(a("jobs.clearFailed"))}finally{r(!1)}}})},children:a("jobs.clearAll")})]}):void 0,styles:{body:{padding:0}},children:[u&&(0,e.jsx)("div",{className:"p-4 pb-0",children:(0,e.jsx)(j.X,{failures:["后台任务列表"],note:l.length>0?"下方列表仍是上次成功读取的内容,可能已过期。":void 0})}),0===l.length?u?(0,e.jsx)("div",{className:"flex h-full items-start justify-center pt-16",children:(0,e.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:"—"})}):(0,e.jsx)("div",{className:"flex h-full items-start justify-center pt-16",children:(0,e.jsx)(g.Sv,{description:(0,e.jsxs)("div",{className:"text-center",children:[(0,e.jsx)("div",{className:"text-[var(--colorTextSecondary)]",children:a("jobs.empty")}),(0,e.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)] mt-1",children:a("jobs.emptyHint")})]})})}):(0,e.jsx)("div",{className:"text-left",children:l.map(a=>(0,e.jsx)(n,{job:a,mounted:o,onRemove:"processing"===a.status?null:()=>{A(a.id)}},a.id))})]})]})}d()}catch(a){d(a)}})},31077:(a,b,c)=>{"use strict";c.d(b,{CE:()=>e,_h:()=>f});let d=new Map;function e(a,b){let c=b.split(".").reduce((a,b)=>{if(a&&"object"==typeof a&&b in a)return a[b]},a);return"string"==typeof c?c:void 0}function f(a,b,c="unknown"){let g=e(a,b);return void 0!==g?g:(function(a,b){let c=`${a}:${b}`;d.has(c)||d.set(c,{locale:a,key:b})}(c,b),b)}},34775:(a,b,c)=>{"use strict";c.d(b,{X:()=>e});var d=c(8732);function e({failures:a,note:b}){return 0===a.length?null:(0,d.jsxs)("div",{role:"alert",className:"rounded-xl border border-[var(--colorDanger)]/30 bg-[var(--colorDanger)]/10 px-4 py-3 text-sm text-[var(--colorDanger)]",children:[`${a.length} 项数据读取失败:${a.join("、")}——相关读数显示为「—」(未知),**不代表 0**;请稍后重试或查看服务端日志。`,b?(0,d.jsx)("div",{className:"mt-1 text-xs opacity-90",children:b}):null]})}},34924:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Y:()=>l});var e=c(8732),f=c(82015),g=c(57312),h=c(94487),i=c(68329),j=c(26588),k=a([g,h,j]);function l(){let{resolvedTheme:a,setTheme:b}=(0,g.useTheme)(),{locale:c,setLocale:d}=(0,h.x_)(),k=(0,h.Vr)("settings"),[l,m]=(0,f.useState)(!1),n=l&&"dark"===a;return(0,e.jsxs)("header",{className:"topbar",children:[(0,e.jsx)("div",{className:"flex-1"}),(0,e.jsx)(j.A,{}),(0,e.jsxs)("button",{onClick:()=>b(n?"light":"dark"),className:"topbarBtn",children:[n?(0,e.jsx)(i.bd5,{size:14}):(0,e.jsx)(i.AX$,{size:14}),(0,e.jsx)("span",{children:k(n?"light":"dark")})]}),(0,e.jsxs)("button",{onClick:()=>{d("zh-CN"===c?"en-US":"zh-CN")},className:"topbarBtn",children:[(0,e.jsx)(i.ATU,{size:14}),(0,e.jsx)("span",{children:"zh-CN"===(l?c:"zh-CN")?"English":"中文"})]})]})}[g,h,j]=k.then?(await k)():k,d()}catch(a){d(a)}})},54506:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent"},"nav":{"overview":"Overview","knowledge":"Knowledge Base","canvas":"Generation Canvas","skills":"Skills","guide":"Guide","models":"Model Config","settings":"Settings","promptManagement":"Prompt Management","systemLogs":"System Logs"},"overview":{"title":"System Overview","description":"Monitor Customize Agent status and key metrics","status":"Service Status","knowledgeBase":"Knowledge Base","chunksCount":"Total Chunks","cores":"cores","memory":"Memory","tokensUsed":"Total Tokens","tasksTotal":"Total Tasks","successRate":"Success Rate","topModel":"Most Used Model","systemResources":"System Resources","hardwareUsage":"Hardware usage","cpuUsage":"CPU usage","memoryUsage":"Memory usage","activityContext":"Activity Context","recentTaskTypes":"Recent task types","noDataAvailable":"No data available","updated":"Updated","noLogs":"No logs","uptime":"Uptime","templateCount":"Documents","materialUnderstanding":"Material Understanding","semanticModel":"Semantic Model","external":"External","local":"Local","notConfigured":"Not Configured","modelProviders":"Model Providers","auditLogs":"Audit Logs","prompts":"Prompts","processUptime":"This process","materialKinds":"material types recognised","lastActivity":"Last activity","coreMetrics":"Core metrics","coreMetricsDesc":"Service uptime, token usage, tasks and success rate. Uptime counts from the first start (it does not reset on restart); the subtext is this process.","systemResourcesDesc":"Generation-side resources: material types, prompts, records, embedding model and providers.","hardwareUsageDesc":"Current CPU and memory usage. CPU is a delta between two refreshes, so it may read 0 right after startup.","activityContextDesc":"Model calls and task types over the recent window."},"knowledge":{"title":"Knowledge Base","description":"Upload project material, inspect parsing, chunking and index status","manageTitle":"KB Management","manageDesc":"View knowledge base statistics, categories, and features","files":"File Management","settings":"KB Settings","totalFiles":"Total Files","totalChunks":"Total Chunks","totalSize":"Total Size","lastIndexed":"Last Indexed","categories":"File Categories","fileCount":"File Count","search":"Search Files","searchPlaceholder":"Search by filename or content","filterCategory":"Filter Category","allCategories":"All Types","upload":"Upload File","uploading":"Uploading...","reindex":"Reindex","delete":"Delete","deleteConfirm":"Are you sure you want to delete this file? This action cannot be undone.","fileName":"File Name","fileSize":"Size","fileCategory":"Category","fileDate":"Modified","totalRootFolders":"Total Root Folders","totalFilesStats":"Total Files","successfullyParsed":"Successfully Parsed","parsingErrors":"Parsing Errors","chunksCount":"Chunks","parsingStatus":"Status","source":"Source","fileSource":"File","showingMatchingFiles":"Showing {count} matching files","deleteSelected":"Delete Selected","exportParsed":"Export Parsed Text","exporting":"Exporting parsed content...","exportParsedSuccess":"Exported parsed content of {count} files","exportParsedSkipped":"Export done, skipped {count} unparsed files","exportParsedFailed":"Failed to export parsed content","deleteAll":"Delete All","uploadFiles":"Upload Files","uploadFolder":"Upload Folder","reindexAll":"Reindex All","new":"New","manageRawFiles":"Manage raw files, documents, and code sources","noFiles":"No files yet. Upload files to get started.","emptySearch":"No matching files found","features":"Feature Status","vectorStore":"Vector Store","embedding":"Embedding","averageSize":"Average Size","builtinExtractors":"Built-in Extractors","featureDedup":"Dedup Engine","featureDedupDesc":"Detects and removes duplicate/similar documents","featureChunker":"Chunker","featureChunkerDesc":"Splits documents into retrievable semantic chunks","enabled":"Enabled","disabled":"Disabled","parentChunks":"Parent Chunks","childChunks":"Child Chunks","parentChunkId":"Parent ID","chunkIndex":"Chunk Index","chunkType":"Type","sectionOrRange":"Section / Range","chunkContent":"Content","parentChunkHint":"A parent chunk is the context bundle of child chunks with the same parentId. If a parent contains only one child, identical content in both tables is expected.","fileDetailLoadFailed":"Failed to load file details","openFileRequested":"Open file requested","openDirectoryRequested":"Open directory requested","table":"Table","sheet":"Sheet","header":"Header","rows":"Rows","columns":"Columns","formulaCount":"Formulas","mergeCount":"Merged Cells","columnName":"Column Name","tableGridPreview":"Table Grid Preview","drawing":"Drawing","layer":"Layer","entityType":"Entity Type","blockSymbol":"Block/Symbol","productPart":"Product/Part","material":"Material","entityName":"Entity Name","layerTogglePreview":"Layer Toggle / Drawing Preview","type":"Type","name":"Name","dataPath":"Data Path","path":"Path","value":"Value","pageNumber":"Page","ocrText":"OCR Text","openExpand":"Expand","index":"Index","tokens":"Tokens","section":"Section","backToFileList":"Back to File List","fileDetailTitle":"File Details","fileDetailDesc":"Inspect parse results and chunk details; check the original structure of drawings, sheets and data in the parse review preview.","copySourcePath":"Copy Source Path","copyDirectory":"Copy Directory","originalFile":"Original File","directory":"Directory","detailFilter":"Detail Filter","detailFilterPlaceholder":"Filter rowRange, layers, entities, data paths, sections, and chunk content","fileReindexed":"File index rebuilt","copied":"Copied","rowPrefix":"Row","ocrPdf":"OCR/PDF","ocrRecommended":"OCR Recommended","ocrReason":"OCR Reason","ocrProvider":"OCR Engine","ocrLanguages":"OCR Languages","ocrTextLength":"OCR Text Length","pdfPageCount":"PDF Pages","pdfTextPages":"PDF Text Pages","pdfOcrAugmented":"PDF OCR Augmented","pdfOcrPages":"PDF OCR Pages","pdfFailedPages":"PDF Failed Pages","pdfPageOcrSupported":"PDF Page OCR Supported","pdfOcrPageCount":"PDF OCR Page Count","pdfOcrPageLimit":"PDF OCR Page Limit","pdfRenderer":"PDF Renderer","imagePreprocessor":"Image Preprocessor","selectFile":"Please select a file","reOcr":"Re-run OCR","reindexFile":"Rebuild File Index","basicInfo":"Basic Info","status":"Status","extractionMode":"Extraction Mode","contentCoverage":"Content Coverage","textLength":"Text Length","structuredInfo":"Structured Info","chunkCount":"Chunks","parentMatches":"Parent Matches","childMatches":"Child Matches","filterTerm":"Filter","rowRange":"Rows","expand":"Expand","weights":{"keyword":"Keyword Weight","vector":"Vector Weight","hybridBonus":"Hybrid Bonus"},"recallSources":{"keyword":"Keyword Retrieval","vector":"Vector Retrieval","hybrid":"Hybrid Retrieval"},"scopes":{"project":"Current Project","global":"Global"},"topLevelCount":"{count} top-level item(s)","ignoreRules":"Ignore rules","ignoreRulesHint":"Ignore rules narrow the retrieval scope: files matching them are excluded from generation retrieval (changing this changes which materials feed the writing).","ignoreRulesEmpty":"No ignore rules yet.","ignoreRulesAdd":"Add rule","ignoreRulesPlaceholder":"e.g. **/drafts/** or *.bak","ignoreRulesDelete":"Delete","ignoreRulesDeleted":"Rule deleted","ignoreRulesAdded":"Rule added","ignoreRulesLoadFailed":"Failed to load ignore rules","ignoreRulesSaveFailed":"Failed to save ignore rules","pdfCoverage_complete":"Every page in this extraction has been verified as read","pdfCoverage_incomplete":"Page coverage is incomplete. Parse this file again","pdfCoverage_unmeasured":"Full page coverage has not been verified. Parse again before generation","pdfProcessedPages":"Processed pages / verified total pages","pdfMissingPages":"Unprocessed page numbers","latestParseFailed":"The latest parsing attempt failed","previousParseRetained":"The previous extraction is retained for reference, not as a successful current attempt","currentParseInProgress":"This file is being parsed again. Wait for completion"},"models":{"title":"Model Configuration","description":"Manage providers and choose one model for the entire generation workflow","modelList":"Model Services","apiKey":"API Key","baseUrl":"Base URL","protocol":"Protocol","connected":"Connected","connectionFailed":"Connection Failed","noProviders":"No providers yet. Add a provider first.","deleteProvider":"Delete","deleteProviderConfirm":"Are you sure you want to delete this model and all its configs?","apiKeyEditHint":"Configured keys are shown as a masked value. Focus the field to enter a new key; the mask cannot be copied. Leave empty or keep the mask to avoid changes.","apiKeyEditPlaceholder":"Enter a new API key, or leave empty to keep current","embeddingConfig":"Embedding Configuration","embeddingProvider":"Embedding Provider","model":"Model","dimensions":"Dimensions","none":"None","localRecommended":"Local (Recommended)","externalAdvanced":"External (Advanced)","status":"Status","openAICompatible":"OpenAI-compatible","saveEmbedding":"Save Embedding Config","testEmbedding":"Test Embedding","optional":"Optional","save":"Save","cancel":"Cancel","webEnhancement":"Web Enhancement","webEnhancementDesc":"Disabled by default. When enabled, the system will search public standards, policies, and general technical data to improve the accuracy of measures. Web data will not override local project facts.","directEndpoint":"Direct Endpoint","directEndpointDesc":"Base URL is the complete endpoint address","capabilities":"Capabilities","anthropic":"Anthropic","google":"Google","ollama":"Ollama","openRouter":"OpenRouter","imageGeneration":"Image Generation","imageUnderstanding":"Image Understanding","fileUnderstanding":"File Understanding","audioCapability":"Audio","videoCapability":"Video","localEmbedding":"Local Embedding","modelListDesc":"Select a service with its radio button. The entire generation uses that service’s model.","embeddingConfigDesc":"The vector model behind knowledge base retrieval. Verify the endpoint is reachable before switching to an external embedding provider.","testConnection":"Test connection","addProvider":"Add Provider","editProvider":"Edit Provider","providerName":"Model Service Name","providerNamePlaceholder":"For example, deepseek-v4-pro","modelIdentifier":"Model Identifier","modelIdentifierPlaceholder":"For example, deepseek-v4-pro","modelIdentifierHint":"Leave blank to use the service name as the model identifier, or enter the actual identifier accepted by the service."},"prompt":{"title":"Prompt Management","description":"Manage and improve document writing and material extraction prompts","filePath":"File Path","hasFile":"Configured","promptName":"Prompt Name","columnSource":"Source","columnMtime":"Modified","columnActions":"Actions","shownCount":"Showing {count} matching prompt(s)","writingGuideTitle":"What to write and how","writingGuideIntro":"Describe the document purpose, chapter structure, engineering priorities, tone and level of detail.","writingGuideParameters":"Include parameters when the object, method or control needs them. Management content does not need numbers for their own sake.","writingGuideDetails":"Writing guidance and an outline example","writingGuideNeedsTitle":"Describe these requirements","writingGuidePurpose":"The document purpose, audience and use, such as bid preparation, site briefing or professional review.","writingGuideStructure":"Complete chapter and section titles in order, including the structure that must be retained. Wrap the outline in the OUTLINE tags shown below.","writingGuideEngineering":"Engineering objects, renovation or construction conditions, discipline interfaces and key controls. Do not present unverified source values as known conditions.","writingGuideStyle":"Tone, detail priorities and required tables, process diagrams or other formats. Explain conditions, steps and checks for technical methods.","writingGuideManagedTitle":"What the software handles","writingGuideManaged":"The software handles source verification, lead and chapter author coordination, the selected model, numbering and contents, tools, quality review and export. Check results reflect actual findings; a prompt cannot guarantee a pass.","writingGuideAvoid":"You do not need to repeat model routing, call budgets, stage timeouts or tool protocols. Avoid demands for numeric density, self-declared passes or repeated score chasing, which can conflict with the workflow.","writingGuideExampleTitle":"A supported two-chapter example","writingGuideExampleHint":"This shows the format only. Add every chapter and section needed for the actual project; the example does not replace tender, design or site requirements.","writingGuideExample":"Prepare a construction organization document for professional review of this project.\\nFocus on renovation conditions, protection of existing facilities, construction interfaces and acceptance.\\nUse specific, concise language. Explain working conditions, steps and checks.\\n<OUTLINE>\\n1. Project overview and construction deployment\\n1.1 Scope and site conditions\\n1.2 Interfaces and organization\\n2. Main construction methods\\n2.1 Operations and working conditions\\n2.2 Key controls and acceptance\\n</OUTLINE>\\nUse clear tables for configuration comparisons or sequencing.","writingGuideOneOutline":"Use one selected prompt for the complete outline. Let other prompts add priorities and style so that outlines do not repeat or conflict.","customPrompt":"My Prompts","currentProject":"Current Project","otherProjects":"Other Projects","allPrompts":"All Prompts","promptStatus":"Prompt Status","selected":"Selected","unselected":"Unselected","hasFileStatus":"Has File","missingFileStatus":"Missing File","sortByName":"Name A-Z","sortByMtime":"Recently Modified","sortBySource":"Source","sortBySelected":"Selected First","noMatchDesc":"No matching prompts found. Please try different keywords or clear filters.","noPromptInGroup":"No prompts in current group","searchPrompt":"Search name, content, path...","import":"Import","exportFiltered":"Export Filtered","createPrompt":"Create Prompt","exportSelected":"Export Selected","selectAll":"Select All","cancelSelectAll":"Cancel Select All","batchSelect":"Batch Select","cancelBatchSelect":"Cancel Batch Select","cancelSelect":"Cancel Select","clearSelect":"Clear Selection","aiPromptAssistant":"AI Prompt Assistant","clearHistory":"Clear History","generating":"Generating","canConverse":"Conversational Optimization","mentionRecallHint":"Type @ to recall knowledge files, then describe your optimization goal","apply":"Apply","aiAnalyzing":"AI is analyzing and generating content...","recallKbFiles":"Recall Knowledge Files","recallLimitHint":"Supports file name and content search, recalls up to 3 files","inputAtKeyword":"Type @keyword","loadingKbFiles":"Loading knowledge files...","noRecallableKbFiles":"No knowledge files available to recall","searchingKbContent":"Searching knowledge content...","noMatchingKbFiles":"No matching knowledge files, try another keyword","continueSearchingKb":"Continuing to search for content matches...","unclassified":"Unclassified","unknownFormat":"Unknown Format","contentMatch":"Content Match","diskFile":"Disk File","fileMatch":"File Match","mentionRecallPlaceholder":"Type @ to recall knowledge files, then describe goal...","rulePreviewTitle":"Rule Detection Preview","rulePreviewAnalyzing":"Analyzing rules…","rulePreviewHint":"Rules will be auto-detected after you enter prompt content","rulePreviewNone":"No rules detected","send":"Send","chatFailed":"Chat failed — check the model configuration","chatEmptyReply":"The model returned no content","nameRequired":"Enter a name","untitled":"Untitled prompt","appliedToEditor":"Applied to the editor — review it before saving","exportedCount":"Exported {count} prompt(s)","importedCount":"Imported {count} prompt(s)","importFailed":"Import failed — make sure the JSON file is well-formed","exportOne":"Export","exportNoneSelected":"Please select the prompts to export first","deleteCustomConfirm":"Delete this custom prompt?","deleteProjectConfirm":"Delete this project record and its file?","localPrompt":"Local prompt","selectedCount":"{count} selected"},"assets":{"openFile":"Open File","openDirectory":"Open Directory"},"logs":{"backToSettings":"Back to Settings","monitorSystem":"Monitor system exceptions, API errors, and runtime issues","searchLogs":"Search logs...","refresh":"Refresh","clear":"Clear","clearConfirm":"Are you sure you want to clear all error logs?","logStorageInfo":"Logs are stored locally in","maxLoaded":"Max 500 entries loaded.","noLogsFound":"No logs found","time":"Time","level":"Level","source":"Source","message":"Message","requestId":"Req ID","function":"Function","requestContext":"Request Context","metadata":"Metadata","stackTrace":"Stack Trace","clearedFiles":"Cleared {count} error log file(s)"},"settings":{"title":"System Settings","description":"Manage interface preferences and view system overview","language":"Interface Language","languageDesc":"Select the language for the system interface","theme":"Appearance Theme","themeDesc":"Adjust light and dark themes","light":"Light","dark":"Dark","system":"System","serverStatus":"Server Status","serverStatusDesc":"Resource usage and health","status":"Status","healthy":"Healthy","unknown":"Unknown","uptime":"Uptime","days":"days","hours":"hours","minutes":"mins","cpu":"CPU","cores":"Cores","memory":"Memory Usage","embeddingConfig":"Embedding Config","embeddingConfigDesc":"Vector DB configurations","provider":"Provider","model":"Model","apiKey":"API Key","configured":"Configured","none":"None","dimensions":"Dimensions","localData":"Local Data & Storage","localDataDesc":"All data is stored locally on your machine","directory":"Directory","knowledgeBase":"Knowledge Base","localVectors":"Local Vectors","tasks":"Total Tasks","tokens":"Total Tokens","diagnostics":"Diagnostics","diagnosticsDesc":"Server-side error log (stack traces, requests, sources). Use it to find out why a generation failed.","openDiagnostics":"Open diagnostics"},"documents":{"saveDraft":"Save Draft","exportGateBlockedTitle":"Export gate not passed","exportAnywayNonDeliverable":"Export anyway (non-deliverable)","nonDeliverableExportConfirm":"The exported file will be force-marked as a non-deliverable (file-name suffix and on-page banner). It must not be submitted as a formal deliverable.","nonDeliverableExportTitle":"This export is a non-deliverable","nonDeliverableExportHint":"The export gate did not pass, so the file is force-marked as a non-deliverable (file-name suffix). It must not be submitted as a formal deliverable."},"common":{"save":"Save","cancel":"Cancel","confirm":"Confirm","delete":"Delete","edit":"Edit","add":"Add","search":"Search","loading":"Loading...","error":"Something went wrong","success":"Success","retry":"Retry","close":"Close","noData":"No data","unknown":"Unknown","never":"Never","statusWaiting":"Waiting","statusRunning":"In Progress","statusCompleted":"Completed","statusSkipped":"Skipped","statusFailed":"Failed","statusPartial":"Partial","statusReview":"Needs Review","statusAbnormal":"Abnormal","statusIndexed":"Indexed","statusOutdated":"Outdated","statusDeleted":"Deleted","statusNotIndexed":"Not Indexed","levelError":"Error","levelWarning":"Warning","levelInfo":"Info","totalRows":"{count} rows"},"jobs":{"title":"Background tasks","refresh":"Refresh","clearAll":"Clear all","empty":"No background tasks","emptyHint":"Uploads, re-index runs and document generation all leave a record here.","remove":"Remove record","removeConfirm":"Remove this record from the list?","removed":"Record removed","clearConfirmTitle":"Clear all background task records?","clearConfirmContent":"Records will be deleted. Running tasks are not cancelled.","cleared":"Records cleared","clearFailed":"Failed to clear","removeFailed":"Failed to remove","typeLabel":"Type","stageLabel":"Stage","chunksLabel":"Chunks","fileLabel":"File","updatedAtLabel":"Updated","diagnostics":"Diagnostics","statusProcessing":"Running","statusSuccess":"Done","statusWarning":"Warning","statusError":"Failed","typeDocument":"Document generation","typeUpload":"File upload","typeReindex":"Re-index","typeDelete":"Delete","resident":"Persistent","residentHint":"Persistent system alert: written automatically when an issue is detected, and rewritten on the next check after removal","clearConfirmWarning":"In-flight records reappear on the next progress update, and persistent system alerts (e.g. mixed material packs) are rewritten on the next check."},"records":{"title":"Generation records","empty":"No generation records yet","batch":"Select","current":"Current","selectPage":"Select page","clearSelect":"Clear","checkedCount":"{count} selected","deleteSelected":"Delete","deletedCount":"Deleted {count} record(s)","confirmDelete":"Delete this record?","confirmDeleteSelected":"Delete the {count} selected record(s)?","deleteHint":"This cannot be undone. A running generation cannot be deleted — abort it on the canvas first.","inFlightHint":"A running generation cannot be deleted (abort it on the canvas first)","reportTitle":"Export closure report","reportEmpty":"No exports yet","reportEntry":"Export report","reportFormat":"Format","reportDuration":"Duration","reportRepaired":"Repaired","reportBlocking":"Blocking","reportRules":"Rules","reportHealthAlerts":"Health alerts","reportGateBlocked":"Not deliverable","reportChecklistTitle":"Unresolved items from the latest non-deliverable export","reportChecklistTotal":"{count} item(s)","netCharsLabel":"Repair-chain net added chars","netCharsOver":" (over the 5% target)","netCharsRatio":"{ratio}% of the text at chain start","netCharsWarn":"Repair-chain net added chars exceed the 5% target: the score is being repaired rather than written","receiptBadge":"{count} notice(s) from this export","receiptBindingAbsent":"The gate is not bound to a body fingerprint: whether this body is the one that passed cannot be checked","receiptBindingMismatch":"Body and gate fingerprint differ: the export was approved for a different body (edited or replaced after close-out)","receiptContentIssues":"{count} content issue(s): {first}","receiptFigureFailures":"{count} figure(s) not inlined: {first}","receiptGateIssues":"Gate blocking list: {count} item(s): {first}","receiptNonDeliverable":"This export is a NON-DELIVERABLE: the filename was suffixed by the server; do not submit it as a formal deliverable","receiptPdfPages":"PDF has {count} page(s)","receiptRenderBlockers":"Render audit: {count} source-level structural defect(s)","receiptRenderNotices":"Render audit: {count} notice(s): {first}","receiptTemplateWarning":"Template placeholder missing, fell back to: {detail}","receiptTitle":"Latest export receipt","reviewReportDownload":"Download .md","reviewReportHint":"The report is rendered from the repair-round ledger and the gate result at close-out","reviewReportLabel":"Delivery review report","reviewReportView":"View online"}}')},66285:()=>{},79182:(a,b,c)=>{"use strict";c.d(b,{hJ:()=>e});var d=c(8732);function e({size:a=20,className:b}){return(0,d.jsx)("svg",{width:a,height:a,viewBox:"0 0 24 24",className:b,"aria-hidden":"true",focusable:"false",children:(0,d.jsx)("g",{transform:"translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)",children:(0,d.jsx)("path",{d:"M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z",fill:"currentColor"})})})}},93065:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>o});var e=c(8732),f=c(82015),g=c(21202),h=c(9328),i=c.n(h),j=c(94487),k=c(68329),l=c(79182),m=c(60056),n=a([j]);j=(n.then?(await n)():n)[0];let p=[{href:"/overview",icon:k.HxJ,labelKey:"nav.overview"},{href:"/knowledge",icon:k.WmV,labelKey:"nav.knowledge"},{href:"/models",icon:k.fX,labelKey:"nav.models"},{href:"/prompt",icon:k.vEG,labelKey:"nav.promptManagement"},{href:"/skills",icon:k.oxo,labelKey:"nav.skills"},{href:"/canvas",icon:k.lgv,labelKey:"nav.canvas"},{href:"/guide",icon:k.Gyj,labelKey:"nav.guide"},{href:"/settings",icon:k.wB_,labelKey:"nav.settings"}];function o(){let a=(0,g.usePathname)()??"",b=(0,j.Vr)(),c=b=>!!b&&(a===b||a.startsWith(b+"/")),d=(0,f.useMemo)(()=>{let a={};for(let b of p)b.children?.some(a=>c(a.href))&&(a[b.labelKey]=!0);return a},[a]),[h,n]=(0,f.useState)({}),{collapsed:o,setCollapsed:q}=(0,j.hM)();return(0,e.jsxs)("aside",{className:`sidebar${o?" sidebarCollapsedSelf":""}`,children:[(0,e.jsxs)("div",{className:"sidebarLogoRow",children:[(0,e.jsx)(i(),{href:"/overview",prefetch:!1,className:"min-w-0 flex-1",onClick:a=>{o&&(a.preventDefault(),q(!1))},children:(0,e.jsxs)("div",{className:"sidebarLogo",children:[(0,e.jsx)("div",{className:"w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0",children:(0,e.jsx)(l.hJ,{className:"text-white dark:text-black",size:26})}),(0,e.jsx)("div",{className:"sidebarLogoTitle",children:(0,e.jsx)("span",{className:"logoGradient",children:"Customize Agent"})})]})}),!o&&(0,e.jsx)("button",{className:"sidebarCollapseBtn",onClick:()=>q(!0),"aria-label":"收起侧边栏",children:(0,e.jsx)(k.ues,{size:16})})]}),(0,e.jsx)("nav",{className:"sidebarNav mt-2",children:p.map(a=>{if(a.children){let f,g=h[a.labelKey]??d[a.labelKey]??!1,j=(f=a.children,f?.some(a=>c(a.href)));return(0,e.jsxs)("div",{children:[(0,e.jsx)(m.m_,{title:o?b(a.labelKey):"",placement:"right",children:(0,e.jsxs)("div",{className:`sidebarItem sidebarParent${j&&o?" sidebarItemActive":""}`,onClick:()=>{if(o)q(!1),n(b=>({...b,[a.labelKey]:!0}));else{var b;b=a.labelKey,n(a=>({...a,[b]:!a[b]}))}},children:[(0,e.jsx)(a.icon,{size:18}),(0,e.jsx)("span",{className:"sidebarLabel",children:b(a.labelKey)}),(0,e.jsx)("span",{className:"sidebarChevron",children:g?(0,e.jsx)(k.yQN,{size:14}):(0,e.jsx)(k.c_$,{size:14})})]})}),g&&!o&&(0,e.jsx)("div",{className:"sidebarSubmenu animateFadeIn",children:a.children.map(a=>{let d=c(a.href);return(0,e.jsx)(i(),{href:a.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem sidebarSubItem${d?" sidebarItemActive":""}`,children:[(0,e.jsx)(a.icon,{size:16}),(0,e.jsx)("span",{className:"sidebarLabel",children:b(a.labelKey)})]})},a.href)})})]},a.labelKey)}let f=c(a.href);return(0,e.jsx)(m.m_,{title:o?b(a.labelKey):"",placement:"right",children:(0,e.jsx)(i(),{href:a.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem${f?" sidebarItemActive":""}`,children:[(0,e.jsx)(a.icon,{size:18}),(0,e.jsx)("span",{className:"sidebarLabel",children:b(a.labelKey)})]})})},a.href)})})]})}d()}catch(a){d(a)}})},94487:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{PE:()=>y,Vr:()=>w,hM:()=>u,x_:()=>v});var e=c(8732),f=c(82015),g=c(49702),h=c.n(g),i=c(42583),j=c(57312),k=c(60056),l=c(2973),m=c(40107);c(36653);var n=c(4823),o=c(93065),p=c(34924),q=c(13484),r=c(54506),s=c(31077),t=a([j,o,p]);[j,o,p]=t.then?(await t)():t;let z=(0,f.createContext)(null),A=(0,f.createContext)(null);function u(){let a=(0,f.useContext)(A);if(!a)throw Error("useSidebarCollapsed must be used inside Layout");return a}function v(){let a=(0,f.useContext)(z);if(!a)throw Error("useAppLocale must be used inside Layout");return a}function w(a){let{messages:b,locale:c}=v();return(0,f.useCallback)(d=>{if(!a)return(0,s._h)(b,d,c);let e=`${a}.${d}`,f=(0,s.CE)(b,e);return void 0!==f?f:(0,s._h)(b,d,c)},[b,a,c])}let B={"zh-CN":q,"en-US":r};function x({children:a}){let{resolvedTheme:b}=(0,j.useTheme)(),c=(0,i.useRouter)(),[d,g]=(0,f.useState)("zh-CN"),[q,r]=(0,f.useState)(!1),[s,t]=(0,f.useState)(!0),u="dark"===b,v=B[d]??B["zh-CN"],w=(0,f.useCallback)(a=>{document.cookie=`NEXT_LOCALE=${a};path=/;max-age=31536000;samesite=lax`,g(a)},[]),x=(0,f.useMemo)(()=>({locale:d,setLocale:w,messages:v}),[d,w,v]),y=(0,f.useMemo)(()=>({collapsed:s,setCollapsed:t}),[s]),C=(0,f.useMemo)(()=>(0,n.D)(u),[u]),D="en-US"===d?m.default:l.A;return(0,e.jsx)(z.Provider,{value:x,children:(0,e.jsx)(A.Provider,{value:y,children:(0,e.jsx)(k.sG,{theme:C,locale:D,children:(0,e.jsxs)(k.qw,{children:[(0,e.jsx)(h(),{children:(0,e.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1, viewport-fit=cover"})}),(0,e.jsx)(o.B,{}),(0,e.jsxs)("div",{className:"mainContent",children:[(0,e.jsx)(p.Y,{}),(0,e.jsx)("main",{className:`mainInner${c.pathname.startsWith("/canvas")?" mainInnerCanvas":""}${q?" pageTransitioning":""}`,children:a})]})]})})})})}function y({children:a}){return(0,e.jsx)(j.ThemeProvider,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:(0,e.jsx)(x,{children:a})})}d()}catch(a){d(a)}})},97237:()=>{}};
|
|
1
|
+
exports.id=8204,exports.ids=[8204],exports.modules={4823:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(60056);function e(a){return{algorithm:a?d.w4.darkAlgorithm:d.w4.defaultAlgorithm,token:{colorPrimary:a?"#0a84ff":"#007aff",colorInfo:a?"#0a84ff":"#007aff",colorSuccess:a?"#30d158":"#34c759",colorWarning:a?"#ff9f0a":"#ff9500",colorError:a?"#ff453a":"#ff3b30",colorBgBase:a?"#1c1c1e":"#f7f7f8",colorBgContainer:a?"rgba(44,44,46,0.78)":"#ffffff",colorBgElevated:a?"rgba(44,44,46,0.92)":"#ffffff",colorBorder:a?"rgba(255,255,255,0.12)":"rgba(60,60,67,0.16)",colorText:a?"#f5f5f7":"#1d1d1f",colorTextSecondary:a?"#98989d":"#6e6e73",fontFamily:"var(--fontSans)",fontSize:14,borderRadius:14,borderRadiusLG:20,borderRadiusSM:10,controlHeight:36,lineWidth:1,boxShadow:a?"0 0 12px rgba(0,0,0,0.5)":"0 0 12px rgba(0,0,0,0.06)",boxShadowSecondary:a?"0 0 8px rgba(0,0,0,0.4)":"0 0 8px rgba(0,0,0,0.04)",motionDurationMid:"0.2s",motionEaseInOut:"cubic-bezier(0.25, 0.1, 0.25, 1)"},components:{Card:{borderRadiusLG:20,paddingLG:24,headerFontSize:13,headerFontSizeSM:12},Button:{borderRadius:14,borderRadiusLG:18,borderRadiusSM:10,fontWeight:600,primaryShadow:"var(--shadowButton)"},Input:{borderRadius:14,controlHeight:36,activeShadow:"0 0 0 3px rgba(0,122,255,0.12)"},Select:{borderRadius:14},Modal:{borderRadiusLG:20,titleFontSize:17,fontWeightStrong:700},Tag:{borderRadiusSM:100,defaultBg:a?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.04)"},Table:{borderRadiusLG:20,headerBg:a?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.02)",headerColor:"var(--colorTextSecondary)",headerSplitColor:"transparent",headerBorderRadius:12},Spin:{dotSize:28,dotSizeLG:40},Upload:{borderRadiusLG:20}}}}},8204:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>j});var e=c(8732),f=c(49702),g=c.n(f),h=c(94487);c(66285),c(97237);var i=a([h]);function j({Component:a,pageProps:b}){return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(g(),{children:[(0,e.jsx)("link",{rel:"icon",type:"image/svg+xml",href:"/favicon.svg"}),(0,e.jsx)("link",{rel:"icon",href:"/favicon.ico",sizes:"any"}),(0,e.jsx)("link",{rel:"apple-touch-icon",href:"/apple-touch-icon.png"}),(0,e.jsx)("title",{children:"Customize Agent"})]}),(0,e.jsx)(h.PE,{children:(0,e.jsx)(a,{...b})})]})}h=(i.then?(await i)():i)[0],d()}catch(a){d(a)}})},13484:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent"},"nav":{"overview":"总览","knowledge":"知识库","canvas":"生成画布","skills":"技能库","guide":"指引","models":"模型配置","settings":"设置","promptManagement":"提示词管理","systemLogs":"系统日志"},"overview":{"title":"系统总览","description":"查看 Customize Agent 运行状态与关键指标","status":"服务状态","knowledgeBase":"知识库","chunksCount":"分块总数","cores":"核","memory":"内存","tokensUsed":"累计 Tokens","tasksTotal":"总任务数","successRate":"成功率","topModel":"调用最多模型","systemResources":"系统资源","hardwareUsage":"硬件使用率","cpuUsage":"CPU 使用率","memoryUsage":"内存使用率","activityContext":"活动上下文","recentTaskTypes":"最近任务类型","noDataAvailable":"暂无数据","updated":"已更新","noLogs":"暂无日志","uptime":"运行时间","templateCount":"生成记录","materialUnderstanding":"资料理解","semanticModel":"语义模型","external":"外部","local":"本地","notConfigured":"未配置","modelProviders":"模型供应商","auditLogs":"审计日志","prompts":"提示词","processUptime":"本次进程","materialKinds":"类已识别资料","lastActivity":"最后活动","coreMetrics":"核心指标","coreMetricsDesc":"服务累计运行时长、Token 消耗、任务与成功率。运行时间取**首次启动至今**(重启不清零),副文本是本次进程时长。","systemResourcesDesc":"生成侧的资源分布:知识库资料类型、提示词、生成记录、语义模型与模型供应商。","hardwareUsageDesc":"CPU 与内存的当前占用。CPU 是两次刷新之间的增量,服务刚起来时可能显示 0。","activityContextDesc":"最近一段时间的模型调用与任务类型分布。"},"knowledge":{"title":"知识库","description":"上传项目资料,查看解析、切片与索引状态","manageTitle":"知识库管理","manageDesc":"查看知识库统计、分类和功能状态","files":"文件管理","settings":"知识库设置","totalFiles":"文件总数","totalChunks":"分块总数","totalSize":"存储大小","lastIndexed":"上次索引","categories":"文件分类","fileCount":"文件数量","search":"搜索文件","searchPlaceholder":"输入文件名或内容关键词","filterCategory":"筛选分类","allCategories":"全部类型","upload":"上传文件","uploading":"上传中...","reindex":"重新索引","delete":"删除","deleteConfirm":"确定要删除该文件吗?此操作不可恢复。","fileName":"文件名","fileSize":"大小","fileCategory":"分类","fileDate":"修改日期","totalRootFolders":"总根文件夹数","totalFilesStats":"总文件数","successfullyParsed":"解析成功","parsingErrors":"解析失败","chunksCount":"切片数","parsingStatus":"解析状态","source":"来源","fileSource":"文件","showingMatchingFiles":"显示 {count} 个匹配文件","deleteSelected":"删除选中","exportParsed":"导出解析内容","exporting":"正在导出解析内容...","exportParsedSuccess":"已导出 {count} 个文件的解析内容","exportParsedSkipped":"导出完成,已跳过 {count} 个未解析文件","exportParsedFailed":"导出解析内容失败","deleteAll":"删除全部","uploadFiles":"上传文件","uploadFolder":"上传文件夹","reindexAll":"重新解析全部","new":"新建","manageRawFiles":"管理原始文件、文档和代码源","noFiles":"暂无文件,请上传文件开始使用","emptySearch":"未找到匹配的文件","features":"功能状态","vectorStore":"向量存储","embedding":"Embedding","averageSize":"平均大小","builtinExtractors":"内置提取器","featureDedup":"去重引擎","featureDedupDesc":"检测并移除重复/相似文档","featureChunker":"分块器","featureChunkerDesc":"将文档拆分为可检索的语义块","enabled":"已启用","disabled":"已禁用","parentChunks":"父级切片","childChunks":"子级切片","parentChunkId":"父级 ID","chunkIndex":"切片序号","chunkType":"类型","sectionOrRange":"章节/范围","chunkContent":"内容","parentChunkHint":"父级切片是同一 parentId 下子级切片的上下文合集;当一个父级只包含一个子级时,两处内容相同是正常现象。","fileDetailLoadFailed":"文件详情加载失败","openFileRequested":"已请求打开文件","openDirectoryRequested":"已请求打开目录","table":"表格","sheet":"工作表","header":"表头","rows":"行数","columns":"列数","formulaCount":"公式数","mergeCount":"合并单元格","columnName":"列名","rowRange":"行范围","tableGridPreview":"表格网格预览","drawing":"图纸","layer":"图层","entityType":"实体类型","blockSymbol":"块/符号","productPart":"产品/零件","material":"材料","entityName":"实体名称","layerTogglePreview":"图层开关 / 图纸预览","type":"类型","name":"名称","dataPath":"数据路径","path":"路径","value":"值","pageNumber":"页码","ocrText":"OCR 文本","openExpand":"展开","index":"序号","tokens":"Token","section":"章节","backToFileList":"返回文件列表","fileDetailTitle":"文件详情","fileDetailDesc":"查看解析结果与切片明细;图纸、表格、数据的原始结构请到「解析核查预览」里核对。","copySourcePath":"复制原文件路径","copyDirectory":"复制所在目录","originalFile":"原文件","directory":"所在目录","detailFilter":"详情筛选","detailFilterPlaceholder":"筛选 rowRange、图层、实体、data path、section、chunk 内容","fileReindexed":"文件索引已重建","copied":"已复制","rowPrefix":"行","ocrPdf":"OCR/PDF","ocrRecommended":"OCR 建议","ocrReason":"OCR 原因","ocrProvider":"OCR 引擎","ocrLanguages":"OCR 语言","ocrTextLength":"OCR 文本长度","pdfPageCount":"PDF 总页数","pdfTextPages":"PDF 文本页数","pdfOcrAugmented":"PDF 已 OCR 增强","pdfOcrPages":"PDF OCR 页码","pdfFailedPages":"PDF 失败页","pdfPageOcrSupported":"PDF 页面 OCR 支持","pdfOcrPageCount":"PDF OCR 页数","pdfOcrPageLimit":"PDF OCR 页数上限","pdfRenderer":"PDF 渲染器","imagePreprocessor":"图像预处理","selectFile":"请选择文件","reOcr":"重新 OCR","reindexFile":"重建该文件索引","basicInfo":"基础信息","status":"状态","extractionMode":"解析模式","contentCoverage":"覆盖范围","textLength":"正文长度","structuredInfo":"结构化信息","chunkCount":"切片数","parentMatches":"父级命中","childMatches":"子级命中","filterTerm":"筛选词","expand":"展开","weights":{"keyword":"关键词权重","vector":"向量权重","hybridBonus":"混合加成"},"recallSources":{"keyword":"关键词检索","vector":"向量检索","hybrid":"混合检索"},"scopes":{"project":"当前项目","global":"全局"},"topLevelCount":"共 {count} 个顶层项目","ignoreRules":"忽略规则","ignoreRulesHint":"忽略规则影响检索范围:命中这些规则的文件不参与生成检索(改这里等于改“哪些资料参与写作”)。","ignoreRulesEmpty":"当前没有忽略规则。","ignoreRulesAdd":"添加规则","ignoreRulesPlaceholder":"例如:**/草稿/** 或 *.bak","ignoreRulesDelete":"删除","ignoreRulesDeleted":"已删除规则","ignoreRulesAdded":"已添加规则","ignoreRulesLoadFailed":"忽略规则读取失败","ignoreRulesSaveFailed":"忽略规则写入失败","pdfCoverage_complete":"该解析结果已完成全页读取核验","pdfCoverage_incomplete":"该解析结果尚未完成全页读取核验,请重新解析","pdfCoverage_unmeasured":"尚无全页读取核验结果,请重新解析后用于生成","pdfProcessedPages":"已处理页数 / 核验总页数","pdfMissingPages":"尚未处理页号","latestParseFailed":"最近一次解析失败","previousParseRetained":"旧解析已保留供追溯,不能作为本次解析成功","currentParseInProgress":"当前资料正在重新解析,请等待完成"},"models":{"title":"模型配置","description":"管理供应商和生成模型,整个流程统一使用当前选中的模型","modelList":"模型服务","apiKey":"API Key","baseUrl":"Base URL","protocol":"请求协议","connected":"已连接","connectionFailed":"连接失败","noProviders":"暂无供应商,请先添加供应商。","deleteProvider":"删除","deleteProviderConfirm":"确定要删除此模型及其所有配置吗?","apiKeyEditHint":"已配置的 Key 会以掩码回显,聚焦后可输入新 Key;掩码不可复制,留空或保持掩码则不修改。","apiKeyEditPlaceholder":"输入新的 API Key,留空保持不变","embeddingConfig":"Embedding 配置","embeddingProvider":"Embedding Provider","model":"模型","dimensions":"维度","none":"无","localRecommended":"本地(推荐)","externalAdvanced":"外部(高级)","status":"状态","openAICompatible":"OpenAI 兼容","saveEmbedding":"保存 Embedding 配置","testEmbedding":"测试 Embedding","optional":"可选","save":"保存","cancel":"取消","webEnhancement":"联网增强","webEnhancementDesc":"默认关闭。开启后,系统会受控检索公开规范、政策和通用技术资料,用于增强措施准确性;联网资料不会覆盖本地项目事实。","directEndpoint":"直连端点","directEndpointDesc":"Base URL 是完整接口地址","capabilities":"多模态能力","anthropic":"Anthropic","google":"Google","ollama":"Ollama","openRouter":"OpenRouter","imageGeneration":"图片生成","imageUnderstanding":"图片理解","fileUnderstanding":"文件理解","audioCapability":"音频能力","videoCapability":"视频能力","localEmbedding":"本地 Embedding","modelListDesc":"点选服务卡片上的单选框,整次生成使用该服务对应的模型。","embeddingConfigDesc":"知识库检索用的向量模型。切换外部 Embedding 前先确认服务可达——语义检索、切片召回都走它。","testConnection":"测试连接","addProvider":"添加供应商","editProvider":"编辑供应商","providerName":"模型服务名称","providerNamePlaceholder":"例如 deepseek-v4-pro","modelIdentifier":"模型标识","modelIdentifierPlaceholder":"例如 deepseek-v4-pro","modelIdentifierHint":"不填时使用服务名称作为模型标识;需要时填写服务实际接受的标识。"},"prompt":{"title":"提示词管理","description":"管理和优化文档编制、资料提取提示词","filePath":"文件路径","hasFile":"已配置","promptName":"提示词名称","columnSource":"来源","columnMtime":"修改时间","columnActions":"操作","shownCount":"显示 {count} 份匹配提示词","writingGuideTitle":"怎么写、写什么","writingGuideIntro":"写清文档目的、章节结构、工程关注点与文风详略。","writingGuideParameters":"参数按具体对象、工法和控制需求写;管理内容无须凑参数。","writingGuideDetails":"查看撰写要点与结构示例","writingGuideNeedsTitle":"建议写清这些要求","writingGuidePurpose":"文档用途、使用场景和读者,例如投标编制、实施交底或专业审阅。","writingGuideStructure":"完整章、节名称及顺序,说明必须保留的结构;用下方示例中的 OUTLINE 标签包住大纲。","writingGuideEngineering":"工程对象、改造或施工工况、专业接口和重点控制事项;未核实的资料数值不要写成已知条件。","writingGuideStyle":"文字风格、详略侧重,以及需要的表格、流程图或其他输出形式;技术方法写清条件、步骤和检查方式。","writingGuideManagedTitle":"软件统一处理的事项","writingGuideManaged":"资料核验、主控与各章作者调度、使用已选模型、章编号与目录、工具调用、质量审查和导出由软件统一处理。检查结论按实际结果呈现,不由提示词保证达标。","writingGuideAvoid":"不必重复指定模型路由、调用预算、阶段超时或工具协议,也不要要求堆参数、自评达标或反复刷分;这些要求可能与软件流程冲突。","writingGuideExampleTitle":"可识别的两章格式示例","writingGuideExampleHint":"仅示范写法。请按本工程完整职责补齐所需章、节,不用示例代替招标、设计或现场要求。","writingGuideExample":"用于本工程施工组织设计的专业审阅。\\n重点说明改造工况、既有设施保护、施工接口与验收安排。\\n文风具体、简洁,施工方法写清作业条件、步骤及检查方式。\\n<OUTLINE>\\n第一章 工程概况与施工部署\\n1.1 工程范围与现场条件\\n1.2 施工界面与组织安排\\n第二章 主要施工方法\\n2.1 工序与作业条件\\n2.2 关键控制与验收\\n</OUTLINE>\\n涉及配置比较或排程时使用清晰表格。","writingGuideOneOutline":"同次选用的提示词中,只由一份提供完整大纲,其他提示词补充关注点和文风,避免重复或冲突的目录。","customPrompt":"我的提示词","currentProject":"当前项目","otherProjects":"其他项目","allPrompts":"全部提示词","promptStatus":"提示词状态","selected":"已选中","unselected":"未选中","hasFileStatus":"有文件","missingFileStatus":"无文件","sortByName":"名称 A-Z","sortByMtime":"最近修改优先","sortBySource":"来源优先","sortBySelected":"已选中优先","noMatchDesc":"没有找到匹配的提示词,请尝试更换关键词或清空筛选条件","noPromptInGroup":"当前分组没有提示词","searchPrompt":"搜索名称、内容、路径...","import":"导入","exportFiltered":"导出筛选","createPrompt":"创建提示词","exportSelected":"导出选中","selectAll":"全选","cancelSelectAll":"取消全选","batchSelect":"批量选中","cancelBatchSelect":"取消批量选中","cancelSelect":"取消选中","clearSelect":"清空选择","aiPromptAssistant":"AI 提示词助手","clearHistory":"清空历史","generating":"生成中","canConverse":"可对话优化","mentionRecallHint":"输入 @ 召回知识库文件,再描述你的优化目标","apply":"应用","aiAnalyzing":"AI 正在分析并生成内容...","recallKbFiles":"召回知识库文件","recallLimitHint":"支持文件名与知识库内容检索,最多召回 3 个文件","inputAtKeyword":"输入 @关键词","loadingKbFiles":"正在加载知识库文件...","noRecallableKbFiles":"暂无可召回的知识库文件","searchingKbContent":"正在检索知识库内容...","noMatchingKbFiles":"没有匹配的知识库文件,请换个关键词","continueSearchingKb":"正在继续检索内容匹配...","unclassified":"未分类","unknownFormat":"未知格式","contentMatch":"内容匹配","diskFile":"磁盘文件","fileMatch":"文件匹配","mentionRecallPlaceholder":"输入 @ 召回知识库文件,再描述优化目标...","rulePreviewTitle":"规则识别预览","rulePreviewAnalyzing":"正在识别规则…","rulePreviewHint":"输入提示词内容后将自动识别规则","rulePreviewNone":"未识别到规则","send":"发送","chatFailed":"AI 对话失败,请检查模型配置","chatEmptyReply":"AI 未返回内容","nameRequired":"请输入名称","untitled":"未命名提示词","appliedToEditor":"已应用到编辑内容,请确认后保存","exportedCount":"已导出 {count} 条提示词","importedCount":"已导入 {count} 条提示词","importFailed":"导入失败,请确认 JSON 文件格式正确","exportOne":"导出","exportNoneSelected":"请先勾选要导出的提示词","deleteCustomConfirm":"删除自定义提示词?","deleteProjectConfirm":"删除项目记录及文件?","localPrompt":"本地提示词","selectedCount":"已选择 {count} 项"},"assets":{"openFile":"打开文件","openDirectory":"打开目录"},"logs":{"backToSettings":"返回设置","monitorSystem":"监控系统异常、API 错误和运行时问题","searchLogs":"搜索日志...","refresh":"刷新","clear":"清空","clearConfirm":"确认清空所有错误日志?","logStorageInfo":"日志存储在本地","maxLoaded":"最多加载 500 条。","noLogsFound":"没有找到日志","time":"时间","level":"级别","source":"来源","message":"消息","requestId":"请求 ID","function":"函数","requestContext":"请求上下文","metadata":"元数据","stackTrace":"堆栈跟踪","clearedFiles":"已清空 {count} 个错误日志文件"},"settings":{"title":"系统设置","description":"管理系统界面选项和状态概览","language":"界面语言","languageDesc":"选择系统显示的语言","theme":"外观主题","themeDesc":"调整界面的亮色和暗色主题","light":"浅色","dark":"深色","system":"跟随系统","serverStatus":"服务状态","serverStatusDesc":"查看资源使用和运行健康度","status":"状态","healthy":"健康","unknown":"未知","uptime":"运行时间","days":"天","hours":"小时","minutes":"分","cpu":"处理器","cores":"核","memory":"内存使用","embeddingConfig":"向量配置","embeddingConfigDesc":"查看知识库的向量检索设定","provider":"供应商","model":"模型","apiKey":"密钥配置","configured":"已配置","none":"未配置","dimensions":"向量维度","localData":"本地数据","localDataDesc":"所有数据仅存储在您的本地设备上","directory":"存储目录","knowledgeBase":"知识库格式","localVectors":"本地向量","tasks":"总任务","tokens":"累计 Tokens","diagnostics":"诊断","diagnosticsDesc":"服务端异常日志(堆栈、请求、来源)。排查「这次生成为什么失败」时用。","openDiagnostics":"打开诊断日志"},"documents":{"saveDraft":"保存草稿","exportGateBlockedTitle":"导出门禁未通过","exportAnywayNonDeliverable":"仍要导出(非交付物)","nonDeliverableExportConfirm":"继续导出得到的文件将强制标注「非交付物」(文件名后缀 + 界面横幅),不得作为正式成果提交。","nonDeliverableExportTitle":"本次导出为非交付物","nonDeliverableExportHint":"导出门禁未通过,文件已强制标注「非交付物」(文件名后缀);该文件不得作为正式成果提交。"},"common":{"save":"保存","cancel":"取消","confirm":"确认","delete":"删除","edit":"编辑","add":"添加","search":"搜索","loading":"加载中...","error":"出错了","success":"操作成功","retry":"重试","close":"关闭","noData":"暂无数据","unknown":"未知","never":"从未","statusWaiting":"等待","statusRunning":"进行中","statusCompleted":"完成","statusSkipped":"已跳过","statusFailed":"失败","statusPartial":"部分生效","statusReview":"需复核","statusAbnormal":"异常","statusIndexed":"已索引","statusOutdated":"待更新","statusDeleted":"已删除","statusNotIndexed":"未索引","levelError":"错误","levelWarning":"警告","levelInfo":"提示","totalRows":"共 {count} 条"},"jobs":{"title":"后台任务","pageSubtitle":"上传、重新解析与文档生成的运行记录都在这里;有进行中的任务时每 2 秒自动刷新。","clearAll":"清空全部","filterAll":"全部","searchPlaceholder":"搜索任务、文件或诊断","filteredRecords":"筛选出 {count} 条","limitNotice":"仅显示最近 {count} 条","limitHint":"只加载了最近 {count} 条记录,更早的没有拉取","noMatch":"没有符合筛选条件的记录","empty":"暂无后台任务","emptyHint":"上传、重新解析与文档生成都会在这里留下记录。","remove":"移除记录","removeConfirm":"从列表里移除这条记录?","removed":"已移除记录","clearConfirmTitle":"清空全部后台任务记录?","clearConfirmContent":"记录会被删除。任务本身不受影响——进行中的任务会继续跑。","cleared":"已清空记录","clearFailed":"清空失败","removeFailed":"移除失败","colStatus":"状态","colTask":"任务","colProgress":"进度","colActions":"操作","messageLabel":"消息","errorLabel":"错误","typeLabel":"类型","stageLabel":"阶段","chunksLabel":"切片数","fileLabel":"文件","createdAtLabel":"创建时间","updatedAtLabel":"更新时间","idLabel":"记录 ID","diagnostics":"诊断详情","detailsMore":"另有 {count} 条未显示","statusProcessing":"进行中","statusSuccess":"已完成","statusWarning":"有告警","statusError":"失败","typeDocument":"文档生成","typeUpload":"文件上传","typeReindex":"重新解析","typeDelete":"删除","stageUploading":"上传中","stageParsing":"解析中","stageChunking":"切片中","stageVectorizing":"建索引中","stageGenerating":"生成中","stageValidating":"校验中","stageDone":"完成","stageError":"出错","resident":"常驻","residentHint":"系统常驻告警:检测到问题时自动写入,清除后下次检查仍会出现","clearConfirmWarning":"进行中的记录会在下一次进度更新时重新出现;系统常驻告警(资料包混放等)也会在下次检查时重新写入。"},"records":{"title":"生成记录","empty":"还没有生成记录","batch":"批量","current":"当前","selectPage":"全选本页","clearSelect":"取消全选","checkedCount":"已选 {count} 条","deleteSelected":"删除选中","deletedCount":"已删除 {count} 条记录","confirmDelete":"删除这条记录?","confirmDeleteSelected":"删除选中的 {count} 条记录?","deleteHint":"删除后不可恢复。生成中的记录不能删除——先在画布上中止它。","inFlightHint":"生成中的记录不能删除(先在画布上中止它)","reportTitle":"导出闭环报告","reportEmpty":"还没有导出记录","reportEntry":"导出报告","reportFormat":"格式","reportDuration":"总用时","reportRepaired":"修复","reportBlocking":"阻断","reportRules":"规则","reportHealthAlerts":"健康告警","reportGateBlocked":"非交付物","reportChecklistTitle":"最近一次非交付物导出的未收敛项","reportChecklistTotal":"共 {count} 项","netCharsLabel":"修复链净增字数","netCharsOver":"超目标","netCharsRatio":"占原稿","netCharsWarn":"目标 ≤5%:净增越大,\\"分是修出来的\\"成分越高——首过写作的缺口被修复链补上了","receiptBadge":"本次导出 {count} 项提醒","receiptBindingAbsent":"门禁未绑定正文指纹:无法核对放行依据是否就是这份正文","receiptBindingMismatch":"正文与门禁指纹不匹配:放行依据不是这份正文(收口后被编辑/替换过)","receiptContentIssues":"内容问题 {count} 条","receiptFigureFailures":"图件未内联 {count} 张","receiptGateIssues":"门禁阻断清单 {count} 项","receiptNonDeliverable":"本次导出为「非交付物」:文件名已由服务端强制加后缀,不得作为正式成果提交","receiptPdfPages":"PDF 共 {count} 页","receiptRenderBlockers":"渲染审计:源层结构缺陷 {count} 项","receiptRenderNotices":"渲染审计告警 {count} 条","receiptTemplateWarning":"模板占位符缺失,已回退:","receiptTitle":"最近一次导出回执","reviewReportDownload":"下载 .md","reviewReportHint":"未跑到终门禁的记录没有报告(打开会说明原因)","reviewReportLabel":"交付三件套报告","reviewReportView":"在线查看"}}')},22147:(a,b,c)=>{"use strict";async function d(a,b){let c=await fetch(a,b);if(!c.ok){let a=await c.text(),b=a||`HTTP ${c.status}`;try{let c=JSON.parse(a);b=c.error||c.message||b}catch{let d=a.match(/<script id="__NEXT_DATA__" type="application\/json">([\s\S]*?)<\/script>/u)?.[1];if(d)try{let a=JSON.parse(d.replace(/"/gu,'"'));b=a.err?.message||`HTTP ${c.status}`}catch{b=`HTTP ${c.status}`}}throw Error(b)}return c.json()}async function e(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/stats${b}`)}async function f(a){let b=new URLSearchParams;return a?.projectRoot&&b.set("projectRoot",a.projectRoot),a?.category&&b.set("category",a.category),a?.page&&b.set("page",String(a.page??1)),a?.limit&&b.set("limit",String(a.limit??50)),d(`/api/kb/files?${b}`)}async function g(a){let b=new URLSearchParams;return a?.query&&b.set("q",a.query),a?.projectRoot&&b.set("projectRoot",a.projectRoot),a?.category&&b.set("category",a.category),a?.limit&&b.set("limit",String(a.limit)),a?.includeContent===!1&&b.set("includeContent","0"),d(`/api/kb/files/search?${b}`)}async function h(a,b){let c=new URLSearchParams({relativePath:a});return b&&c.set("projectRoot",b),d(`/api/kb/files/detail?${c}`)}async function i(a,b){return d("/api/kb/files/reindex",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePath:a,projectRoot:b})})}async function j(a,b,c){return d("/api/kb/files/open",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePath:a,target:b,projectRoot:c})})}c.d(b,{BO:()=>aq,Bh:()=>ar,CU:()=>p,Es:()=>aa,FC:()=>an,G8:()=>t,GA:()=>_,H1:()=>v,H7:()=>o,HC:()=>i,HT:()=>f,Ho:()=>O,II:()=>ai,Ls:()=>w,NH:()=>k,NI:()=>au,OX:()=>A,Pw:()=>y,QG:()=>G,Qx:()=>m,SJ:()=>r,UE:()=>ac,UQ:()=>J,X8:()=>u,YO:()=>x,Z3:()=>ad,_m:()=>ae,aP:()=>ah,ax:()=>n,bZ:()=>al,c1:()=>l,cQ:()=>D,dH:()=>Y,dd:()=>aj,dk:()=>B,dx:()=>z,ef:()=>C,f$:()=>K,fc:()=>at,h1:()=>af,hH:()=>ap,hU:()=>ab,hc:()=>e,iN:()=>M,le:()=>am,nU:()=>g,nn:()=>as,oH:()=>ao,oS:()=>L,p5:()=>Z,r:()=>I,sz:()=>F,tZ:()=>s,tn:()=>j,u6:()=>ak,v7:()=>E,vX:()=>P,wI:()=>H,x6:()=>d,xC:()=>h,xU:()=>N,xq:()=>q,zr:()=>ag});class k extends Error{constructor(a){super(`上传部分成功:${a.succeededBatches}/${a.totalBatches} 个批次已上传,${a.failedBatches} 个批次失败`),this.name="PartialUploadError",this.succeededBatches=a.succeededBatches,this.failedBatches=a.failedBatches,this.totalBatches=a.totalBatches,this.failures=a.failures}}async function l(a,b,c,e){let f=Number(process.env.NEXT_PUBLIC_CUSTOMIZE_KB_UPLOAD_BATCH_FILES||500),g=Number(process.env.NEXT_PUBLIC_CUSTOMIZE_KB_UPLOAD_BATCH_BYTES||0x8000000),h=Math.max(1,Math.min(4,Number(process.env.NEXT_PUBLIC_CUSTOMIZE_KB_UPLOAD_CONCURRENCY||2))),i=[],j=[],l=0,m=0,n=0;for(let b of a)j.length>0&&(j.length>=f||l+b.size>g)&&(i.push({files:j,offset:m}),j=[],l=0,m=n),j.push(b),l+=b.size,n+=1;j.length>0&&i.push({files:j,offset:m});let o=[],p=[],q=0,r=0;async function s(f){let g,h=i[f],j=new URLSearchParams({batchIndex:String(f),totalBatches:String(i.length)});c&&j.set("uploadId",c),b&&j.set("projectRoot",b);for(let k=0;k<2;k++)try{let g=await d(`/api/kb/upload?${j}`,{method:"POST",body:function(a,b){let c=new FormData;for(let[d,e]of(b.projectRoot&&c.append("projectRoot",b.projectRoot),b.uploadId&&c.append("uploadId",b.uploadId),c.append("batchIndex",String(b.batchIndex)),c.append("totalBatches",String(b.totalBatches)),c.append("fileOffset",String(b.fileOffset)),c.append("startIndex",b.startIndex?"1":"0"),c.append("uploadComplete",b.uploadComplete??b.batchIndex===b.totalBatches-1?"1":"0"),a.entries()))c.append(`files[${d}]`,e,e.name),c.append(`relativePaths[${d}]`,e.webkitRelativePath||e.name);return c}(h.files,{projectRoot:b,uploadId:c,batchIndex:f,totalBatches:i.length,fileOffset:h.offset,startIndex:0===f,uploadComplete:1===i.length})});o[f]=g,q+=h.files.length,e?.({uploadedFiles:q,totalFiles:a.length,batchIndex:f,totalBatches:i.length});return}catch(a){g=a instanceof Error?a:Error(String(a))}p.push({batchIndex:f,files:h.files.slice(0,5).map(a=>a.name),message:g?.message||"上传失败"}),e?.({uploadedFiles:q,totalFiles:a.length,batchIndex:f,totalBatches:i.length})}let t=Array.from({length:Math.min(h,i.length)},async()=>{for(;r<i.length;){let a=r++;await s(a)}});await Promise.all(t);let u=i.length-p.length;if(p.length>0&&0===u)throw Error(p[0]?.message||"上传失败");if(i.length>1&&u>0){let a=await d("/api/kb/upload/complete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:b,uploadId:c})});o.push(a)}if(p.length>0)throw new k({succeededBatches:u,failedBatches:p.length,totalBatches:i.length,failures:p});return o.filter(Boolean).at(-1)??{success:!0}}async function m(a,b=50){let c=new URLSearchParams({limit:String(b)});return a&&c.set("projectRoot",a),d(`/api/kb/operations?${c}`)}async function n(a,b){let c=new URLSearchParams;return b&&c.set("projectRoot",b),d(`/api/jobs/${encodeURIComponent(a)}?${c}`)}async function o(a){let b=new URLSearchParams;return a&&b.set("projectRoot",a),d(`/api/kb/operations?${b}`,{method:"DELETE"})}async function p(a,b){let c=new URLSearchParams({id:a});return b&&c.set("projectRoot",b),d(`/api/kb/operations?${c}`,{method:"DELETE"})}async function q(a,b){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePath:a,projectRoot:b})})}async function r(a,b){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePaths:a,projectRoot:b})})}async function s(a,b,c){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({relativePaths:a,folderPaths:b,projectRoot:c})})}async function t(a){let b=await fetch("/api/kb/files/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=`导出失败 (${b.status})`;try{let c=await b.json();c?.error&&(a=c.error)}catch{}throw Error(a)}let c=await b.blob(),d=b.headers.get("content-disposition")||"",e=/filename\*=(?:UTF-8'')?([^;]+)/iu.exec(d);return{blob:c,fileName:e?.[1]?decodeURIComponent(e[1]):"kb-export.txt",exported:Number(b.headers.get("x-export-count")||0),skipped:Number(b.headers.get("x-export-skipped")||0)}}async function u(a){return d("/api/kb/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({all:!0,projectRoot:a})})}async function v(a){return d("/api/kb/reindex",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:a})})}async function w(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/ignore${b}`)}async function x(a,b){return d("/api/kb/ignore",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({rules:a,projectRoot:b})})}async function y(a,b){return d("/api/kb/ignore",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({pattern:a,projectRoot:b})})}async function z(){return d("/api/prompt")}async function A(a){return d("/api/documents/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function B(a){return d("/api/documents/generate/preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function C(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/material-groups${b}`)}async function D(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/documents/generated${b}`)}async function E(a,b=!1,c,e,f){let g=new URLSearchParams;b&&g.set("lite","1"),c&&g.set("projectRoot",c),void 0!==f&&Number.isFinite(f)&&g.set("ifUpdatedSince",String(f));let h=g.toString()?`?${g.toString()}`:"";return d(`/api/documents/generated/${encodeURIComponent(a)}${h}`,{signal:e})}async function F(a,b,c){let e=new URLSearchParams;b&&e.set("projectRoot",b);let f=e.toString()?`?${e.toString()}`:"";return d(`/api/documents/generated/${encodeURIComponent(a)}/preview${f}`,{signal:c})}async function G(a,b){let c=b?`?projectRoot=${encodeURIComponent(b)}`:"";return d(`/api/documents/generated/${encodeURIComponent(a)}${c}`,{method:"DELETE"})}async function H(a,b,c={}){let d=await fetch(`/api/documents/generated/${encodeURIComponent(a)}/instruction`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:b,...c})}),e=await d.json().catch(()=>({}));if(!d.ok)throw Error(e.error||"指令未受理");return e}async function I(a,b){return d("/api/documents/generated",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"abort",documentId:a,projectRoot:b})})}async function J(a,b){return d("/api/documents/generated",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resume",documentId:a,projectRoot:b})})}async function K(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/assets/generated${b}`)}async function L(a,b,c){return d("/api/assets/generated",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,action:"open",target:b,projectRoot:c})})}function M(a,b){let c=b?`&projectRoot=${encodeURIComponent(b)}`:"";return`/api/assets/generated/preview?id=${encodeURIComponent(a)}${c}`}async function N(a){let{documentId:b,...c}=a;return d(`/api/documents/generated/${encodeURIComponent(b)}/repair`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)})}async function O(a){let{documentId:b,requestId:c,...e}=a;return d(`/api/documents/generated/${encodeURIComponent(b)}/repair/${encodeURIComponent(c)}/confirm`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}async function P(a){let{documentId:b,requestId:c,...e}=a;return d(`/api/documents/generated/${encodeURIComponent(b)}/repair/${encodeURIComponent(c)}/rollback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}let Q={notDeliverable:"X-Export-Not-Deliverable",exportPurpose:"X-Export-Purpose",bodySha256:"X-Export-Body-Sha256",issuesReport:"X-Export-Issues-Report",gatePassed:"X-Export-Gate-Passed",gateBinding:"X-Export-Gate-Binding",gateIssues:"X-Export-Gate-Issues",gateIssueCount:"X-Export-Gate-Issue-Count",contentIssues:"X-Export-Content-Issues",renderAudit:"X-Export-Render-Audit",figureInline:"X-Export-Figure-Inline",templateWarning:"X-Export-Template-Warning",pageLimit:"X-Export-Page-Limit",pdfPageCount:"X-PDF-Page-Count"};function R(a){if(a)try{return JSON.parse(decodeURIComponent(a))}catch{return}}function S(a){if(a)try{return decodeURIComponent(a)}catch{return}}function T(a){return"true"===a||"false"!==a&&void 0}function U(a){let b=R(a);return Array.isArray(b)&&b.every(a=>"string"==typeof a)?b:void 0}let V={notDeliverable:T,exportPurpose:a=>"review"===a||"delivery"===a?a:void 0,bodySha256:a=>a&&/^[a-f0-9]{64}$/u.test(a)?a:void 0,issuesReport:a=>{let b=R(a);return b&&/^[a-f0-9]{64}$/u.test(b.id)&&/^[a-f0-9]{64}$/u.test(b.sha256)&&/^[a-f0-9]{64}$/u.test(b.bodySha256)&&(void 0===b.runId||"string"==typeof b.runId)?b:void 0},gatePassed:T,gateBinding:a=>"mismatch"===a||"absent"===a?a:void 0,gateIssues:U,gateIssueCount:a=>{let b=null===a||""===a.trim()?NaN:Number(a);return Number.isFinite(b)?b:void 0},contentIssues:U,renderAudit:function(a){let b=R(a);if(!(!b||"object"!=typeof b||Array.isArray(b))&&"string"==typeof b.mode&&"number"==typeof b.blockerCount&&Array.isArray(b.notices))return b},figureInline:function(a){let b=R(a);if(!(!b||"object"!=typeof b||Array.isArray(b))&&"number"==typeof b.inlined&&Array.isArray(b.failed)&&b.failed.every(a=>"string"==typeof a))return{inlined:b.inlined,failed:b.failed}},templateWarning:S,pageLimit:S,pdfPageCount:a=>{let b=null===a||""===a.trim()?NaN:Number(a);return Number.isFinite(b)?b:void 0}},W=null,X=new Set;function Y(){return W}function Z(a){return X.add(a),()=>{X.delete(a)}}function $(a){for(let b of(W=a,X))b()}class _ extends Error{constructor(a,b){super(a),this.receipt=b,this.name="DocumentExportError"}}function aa(a,b){let c=new URLSearchParams({reviewReportId:b.id});return b.runId&&c.set("reviewRunId",b.runId),a.documentId&&c.set("documentId",a.documentId),a.projectRoot&&c.set("projectRoot",a.projectRoot),`/api/documents/export?${c}`}async function ab(a,b){let c=await fetch("/api/documents/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,reviewReportId:b.id,reviewRunId:b.runId})});if(!c.ok)throw Error("审阅问题报告下载失败");let d=c.headers.get("content-disposition")??"",e=/filename\*=UTF-8''([^;]+)/iu.exec(d)?.[1];return{blob:await c.blob(),filename:e?decodeURIComponent(e):`审阅问题报告_${b.bodySha256.slice(0,12)}.json`}}async function ac(a){let b,c=await fetch("/api/documents/export",{method:"POST",headers:{"Content-Type":"application/json",Accept:"pdf"===a.format?"application/pdf":"*/*"},body:JSON.stringify(a)}),d=c.headers.get("content-type")||"",e=function(a){let b={};for(let c of Object.keys(V)){let d=V[c](a.get(Q[c]));void 0!==d&&(b[c]=d)}return b}(c.headers),f=async()=>{let b=await c.text(),d=b||"导出失败";try{let a=JSON.parse(b),c=a.issues?.map(a=>a.message).filter(Boolean).slice(0,3).join(";");d=a.message||(c?`${a.error||"导出失败"}:${c}`:a.error||d)}catch{}throw e.issuesReport&&$({receipt:e,format:a.format,documentId:a.documentId,projectRoot:a.projectRoot,at:Date.now()}),new _(d.length>300?`${d.slice(0,300)}...`:d,e)};c.ok||await f(),"pdf"!==a.format||d.includes("application/pdf")||await f(),"docx"!==a.format||d.includes("officedocument.wordprocessingml.document")||await f();let g=!0===e.notDeliverable,h=e.gateIssues??[],i=c.headers.get("content-disposition")||"",j=/filename\*=UTF-8''([^;]+)/iu.exec(i)?.[1];try{b=j?decodeURIComponent(j):void 0}catch{b=void 0}let k=await c.blob();return $({receipt:e,format:a.format,documentId:a.documentId,projectRoot:a.projectRoot,...b?{filename:b}:{},at:Date.now()}),{blob:k,filename:b,notDeliverable:g,gateIssues:h,receipt:e}}async function ad(){return d("/api/config/providers")}async function ae(a,b){return d("/api/config/providers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:a,...b})})}async function af(a){return d(`/api/config/providers/${encodeURIComponent(a)}`,{method:"DELETE"})}async function ag(){return d("/api/config/models")}async function ah(a){return d("/api/config/models",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function ai(){return d("/api/config/embedding")}async function aj(a){return d("/api/config/embedding",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})}async function ak(){return d("/api/config/embedding/healthCheck",{method:"POST"})}async function al(a){return d("/api/config/healthCheck",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:a})})}async function am(){return d("/api/health")}async function an(){return d("/api/system/stats")}async function ao(a=200){return d(`/api/system/logs?limit=${a}`)}async function ap(){return d("/api/system/logs",{method:"DELETE"})}async function aq(a){let b=a?`?projectRoot=${encodeURIComponent(a)}`:"";return d(`/api/kb/categories${b}`)}async function ar(a){return d(`/api/config/providers/${encodeURIComponent(a)}`)}async function as(){return d("/api/system/data-health")}async function at(a){return d("/api/system/data-health",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scopes:a,confirm:!0})})}async function au(){return d("/api/system/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({confirm:!0})})}},26588:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>o});var e=c(8732),f=c(9328),g=c.n(f),h=c(42583),i=c(82015),j=c(60056),k=c(79270),l=c(94487),m=c(95725),n=a([l]);function o(){let a=(0,l.Vr)(),b=(0,h.useRouter)().pathname,{jobs:c}=(0,m.M4)(),d=(0,i.useMemo)(()=>c.filter(a=>"processing"===a.status),[c]),f=d[0];return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(g(),{href:"/jobs",prefetch:!1,className:"shrink-0",children:(0,e.jsx)(j.Ex,{count:d.length,size:"small",children:(0,e.jsx)(j.$n,{className:"topbarBtn",icon:d.length?(0,e.jsx)(k.SyncOutlined,{spin:!0}):(0,e.jsx)(k.ClockCircleOutlined,{}),children:a("jobs.title")})})}),f&&"/jobs"!==b?(0,e.jsxs)("span",{className:"max-w-[260px] truncate text-[var(--colorTextSecondary)]",children:[f.title," \xb7 ",f.percent,"%"]}):null]})}l=(n.then?(await n)():n)[0],d()}catch(a){d(a)}})},31077:(a,b,c)=>{"use strict";c.d(b,{CE:()=>e,_h:()=>f});let d=new Map;function e(a,b){let c=b.split(".").reduce((a,b)=>{if(a&&"object"==typeof a&&b in a)return a[b]},a);return"string"==typeof c?c:void 0}function f(a,b,c="unknown"){let g=e(a,b);return void 0!==g?g:(function(a,b){let c=`${a}:${b}`;d.has(c)||d.set(c,{locale:a,key:b})}(c,b),b)}},34924:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Y:()=>l});var e=c(8732),f=c(82015),g=c(57312),h=c(94487),i=c(68329),j=c(26588),k=a([g,h,j]);function l(){let{resolvedTheme:a,setTheme:b}=(0,g.useTheme)(),{locale:c,setLocale:d}=(0,h.x_)(),k=(0,h.Vr)("settings"),[l,m]=(0,f.useState)(!1),n=l&&"dark"===a;return(0,e.jsxs)("header",{className:"topbar",children:[(0,e.jsx)("div",{className:"flex-1"}),(0,e.jsx)(j.A,{}),(0,e.jsxs)("button",{onClick:()=>b(n?"light":"dark"),className:"topbarBtn",children:[n?(0,e.jsx)(i.bd5,{size:14}):(0,e.jsx)(i.AX$,{size:14}),(0,e.jsx)("span",{children:k(n?"light":"dark")})]}),(0,e.jsxs)("button",{onClick:()=>{d("zh-CN"===c?"en-US":"zh-CN")},className:"topbarBtn",children:[(0,e.jsx)(i.ATU,{size:14}),(0,e.jsx)("span",{children:"zh-CN"===(l?c:"zh-CN")?"English":"中文"})]})]})}[g,h,j]=k.then?(await k)():k,d()}catch(a){d(a)}})},54506:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent"},"nav":{"overview":"Overview","knowledge":"Knowledge Base","canvas":"Generation Canvas","skills":"Skills","guide":"Guide","models":"Model Config","settings":"Settings","promptManagement":"Prompt Management","systemLogs":"System Logs"},"overview":{"title":"System Overview","description":"Monitor Customize Agent status and key metrics","status":"Service Status","knowledgeBase":"Knowledge Base","chunksCount":"Total Chunks","cores":"cores","memory":"Memory","tokensUsed":"Total Tokens","tasksTotal":"Total Tasks","successRate":"Success Rate","topModel":"Most Used Model","systemResources":"System Resources","hardwareUsage":"Hardware usage","cpuUsage":"CPU usage","memoryUsage":"Memory usage","activityContext":"Activity Context","recentTaskTypes":"Recent task types","noDataAvailable":"No data available","updated":"Updated","noLogs":"No logs","uptime":"Uptime","templateCount":"Documents","materialUnderstanding":"Material Understanding","semanticModel":"Semantic Model","external":"External","local":"Local","notConfigured":"Not Configured","modelProviders":"Model Providers","auditLogs":"Audit Logs","prompts":"Prompts","processUptime":"This process","materialKinds":"material types recognised","lastActivity":"Last activity","coreMetrics":"Core metrics","coreMetricsDesc":"Service uptime, token usage, tasks and success rate. Uptime counts from the first start (it does not reset on restart); the subtext is this process.","systemResourcesDesc":"Generation-side resources: material types, prompts, records, embedding model and providers.","hardwareUsageDesc":"Current CPU and memory usage. CPU is a delta between two refreshes, so it may read 0 right after startup.","activityContextDesc":"Model calls and task types over the recent window."},"knowledge":{"title":"Knowledge Base","description":"Upload project material, inspect parsing, chunking and index status","manageTitle":"KB Management","manageDesc":"View knowledge base statistics, categories, and features","files":"File Management","settings":"KB Settings","totalFiles":"Total Files","totalChunks":"Total Chunks","totalSize":"Total Size","lastIndexed":"Last Indexed","categories":"File Categories","fileCount":"File Count","search":"Search Files","searchPlaceholder":"Search by filename or content","filterCategory":"Filter Category","allCategories":"All Types","upload":"Upload File","uploading":"Uploading...","reindex":"Reindex","delete":"Delete","deleteConfirm":"Are you sure you want to delete this file? This action cannot be undone.","fileName":"File Name","fileSize":"Size","fileCategory":"Category","fileDate":"Modified","totalRootFolders":"Total Root Folders","totalFilesStats":"Total Files","successfullyParsed":"Successfully Parsed","parsingErrors":"Parsing Errors","chunksCount":"Chunks","parsingStatus":"Status","source":"Source","fileSource":"File","showingMatchingFiles":"Showing {count} matching files","deleteSelected":"Delete Selected","exportParsed":"Export Parsed Text","exporting":"Exporting parsed content...","exportParsedSuccess":"Exported parsed content of {count} files","exportParsedSkipped":"Export done, skipped {count} unparsed files","exportParsedFailed":"Failed to export parsed content","deleteAll":"Delete All","uploadFiles":"Upload Files","uploadFolder":"Upload Folder","reindexAll":"Reindex All","new":"New","manageRawFiles":"Manage raw files, documents, and code sources","noFiles":"No files yet. Upload files to get started.","emptySearch":"No matching files found","features":"Feature Status","vectorStore":"Vector Store","embedding":"Embedding","averageSize":"Average Size","builtinExtractors":"Built-in Extractors","featureDedup":"Dedup Engine","featureDedupDesc":"Detects and removes duplicate/similar documents","featureChunker":"Chunker","featureChunkerDesc":"Splits documents into retrievable semantic chunks","enabled":"Enabled","disabled":"Disabled","parentChunks":"Parent Chunks","childChunks":"Child Chunks","parentChunkId":"Parent ID","chunkIndex":"Chunk Index","chunkType":"Type","sectionOrRange":"Section / Range","chunkContent":"Content","parentChunkHint":"A parent chunk is the context bundle of child chunks with the same parentId. If a parent contains only one child, identical content in both tables is expected.","fileDetailLoadFailed":"Failed to load file details","openFileRequested":"Open file requested","openDirectoryRequested":"Open directory requested","table":"Table","sheet":"Sheet","header":"Header","rows":"Rows","columns":"Columns","formulaCount":"Formulas","mergeCount":"Merged Cells","columnName":"Column Name","tableGridPreview":"Table Grid Preview","drawing":"Drawing","layer":"Layer","entityType":"Entity Type","blockSymbol":"Block/Symbol","productPart":"Product/Part","material":"Material","entityName":"Entity Name","layerTogglePreview":"Layer Toggle / Drawing Preview","type":"Type","name":"Name","dataPath":"Data Path","path":"Path","value":"Value","pageNumber":"Page","ocrText":"OCR Text","openExpand":"Expand","index":"Index","tokens":"Tokens","section":"Section","backToFileList":"Back to File List","fileDetailTitle":"File Details","fileDetailDesc":"Inspect parse results and chunk details; check the original structure of drawings, sheets and data in the parse review preview.","copySourcePath":"Copy Source Path","copyDirectory":"Copy Directory","originalFile":"Original File","directory":"Directory","detailFilter":"Detail Filter","detailFilterPlaceholder":"Filter rowRange, layers, entities, data paths, sections, and chunk content","fileReindexed":"File index rebuilt","copied":"Copied","rowPrefix":"Row","ocrPdf":"OCR/PDF","ocrRecommended":"OCR Recommended","ocrReason":"OCR Reason","ocrProvider":"OCR Engine","ocrLanguages":"OCR Languages","ocrTextLength":"OCR Text Length","pdfPageCount":"PDF Pages","pdfTextPages":"PDF Text Pages","pdfOcrAugmented":"PDF OCR Augmented","pdfOcrPages":"PDF OCR Pages","pdfFailedPages":"PDF Failed Pages","pdfPageOcrSupported":"PDF Page OCR Supported","pdfOcrPageCount":"PDF OCR Page Count","pdfOcrPageLimit":"PDF OCR Page Limit","pdfRenderer":"PDF Renderer","imagePreprocessor":"Image Preprocessor","selectFile":"Please select a file","reOcr":"Re-run OCR","reindexFile":"Rebuild File Index","basicInfo":"Basic Info","status":"Status","extractionMode":"Extraction Mode","contentCoverage":"Content Coverage","textLength":"Text Length","structuredInfo":"Structured Info","chunkCount":"Chunks","parentMatches":"Parent Matches","childMatches":"Child Matches","filterTerm":"Filter","rowRange":"Rows","expand":"Expand","weights":{"keyword":"Keyword Weight","vector":"Vector Weight","hybridBonus":"Hybrid Bonus"},"recallSources":{"keyword":"Keyword Retrieval","vector":"Vector Retrieval","hybrid":"Hybrid Retrieval"},"scopes":{"project":"Current Project","global":"Global"},"topLevelCount":"{count} top-level item(s)","ignoreRules":"Ignore rules","ignoreRulesHint":"Ignore rules narrow the retrieval scope: files matching them are excluded from generation retrieval (changing this changes which materials feed the writing).","ignoreRulesEmpty":"No ignore rules yet.","ignoreRulesAdd":"Add rule","ignoreRulesPlaceholder":"e.g. **/drafts/** or *.bak","ignoreRulesDelete":"Delete","ignoreRulesDeleted":"Rule deleted","ignoreRulesAdded":"Rule added","ignoreRulesLoadFailed":"Failed to load ignore rules","ignoreRulesSaveFailed":"Failed to save ignore rules","pdfCoverage_complete":"Every page in this extraction has been verified as read","pdfCoverage_incomplete":"Page coverage is incomplete. Parse this file again","pdfCoverage_unmeasured":"Full page coverage has not been verified. Parse again before generation","pdfProcessedPages":"Processed pages / verified total pages","pdfMissingPages":"Unprocessed page numbers","latestParseFailed":"The latest parsing attempt failed","previousParseRetained":"The previous extraction is retained for reference, not as a successful current attempt","currentParseInProgress":"This file is being parsed again. Wait for completion"},"models":{"title":"Model Configuration","description":"Manage providers and choose one model for the entire generation workflow","modelList":"Model Services","apiKey":"API Key","baseUrl":"Base URL","protocol":"Protocol","connected":"Connected","connectionFailed":"Connection Failed","noProviders":"No providers yet. Add a provider first.","deleteProvider":"Delete","deleteProviderConfirm":"Are you sure you want to delete this model and all its configs?","apiKeyEditHint":"Configured keys are shown as a masked value. Focus the field to enter a new key; the mask cannot be copied. Leave empty or keep the mask to avoid changes.","apiKeyEditPlaceholder":"Enter a new API key, or leave empty to keep current","embeddingConfig":"Embedding Configuration","embeddingProvider":"Embedding Provider","model":"Model","dimensions":"Dimensions","none":"None","localRecommended":"Local (Recommended)","externalAdvanced":"External (Advanced)","status":"Status","openAICompatible":"OpenAI-compatible","saveEmbedding":"Save Embedding Config","testEmbedding":"Test Embedding","optional":"Optional","save":"Save","cancel":"Cancel","webEnhancement":"Web Enhancement","webEnhancementDesc":"Disabled by default. When enabled, the system will search public standards, policies, and general technical data to improve the accuracy of measures. Web data will not override local project facts.","directEndpoint":"Direct Endpoint","directEndpointDesc":"Base URL is the complete endpoint address","capabilities":"Capabilities","anthropic":"Anthropic","google":"Google","ollama":"Ollama","openRouter":"OpenRouter","imageGeneration":"Image Generation","imageUnderstanding":"Image Understanding","fileUnderstanding":"File Understanding","audioCapability":"Audio","videoCapability":"Video","localEmbedding":"Local Embedding","modelListDesc":"Select a service with its radio button. The entire generation uses that service’s model.","embeddingConfigDesc":"The vector model behind knowledge base retrieval. Verify the endpoint is reachable before switching to an external embedding provider.","testConnection":"Test connection","addProvider":"Add Provider","editProvider":"Edit Provider","providerName":"Model Service Name","providerNamePlaceholder":"For example, deepseek-v4-pro","modelIdentifier":"Model Identifier","modelIdentifierPlaceholder":"For example, deepseek-v4-pro","modelIdentifierHint":"Leave blank to use the service name as the model identifier, or enter the actual identifier accepted by the service."},"prompt":{"title":"Prompt Management","description":"Manage and improve document writing and material extraction prompts","filePath":"File Path","hasFile":"Configured","promptName":"Prompt Name","columnSource":"Source","columnMtime":"Modified","columnActions":"Actions","shownCount":"Showing {count} matching prompt(s)","writingGuideTitle":"What to write and how","writingGuideIntro":"Describe the document purpose, chapter structure, engineering priorities, tone and level of detail.","writingGuideParameters":"Include parameters when the object, method or control needs them. Management content does not need numbers for their own sake.","writingGuideDetails":"Writing guidance and an outline example","writingGuideNeedsTitle":"Describe these requirements","writingGuidePurpose":"The document purpose, audience and use, such as bid preparation, site briefing or professional review.","writingGuideStructure":"Complete chapter and section titles in order, including the structure that must be retained. Wrap the outline in the OUTLINE tags shown below.","writingGuideEngineering":"Engineering objects, renovation or construction conditions, discipline interfaces and key controls. Do not present unverified source values as known conditions.","writingGuideStyle":"Tone, detail priorities and required tables, process diagrams or other formats. Explain conditions, steps and checks for technical methods.","writingGuideManagedTitle":"What the software handles","writingGuideManaged":"The software handles source verification, lead and chapter author coordination, the selected model, numbering and contents, tools, quality review and export. Check results reflect actual findings; a prompt cannot guarantee a pass.","writingGuideAvoid":"You do not need to repeat model routing, call budgets, stage timeouts or tool protocols. Avoid demands for numeric density, self-declared passes or repeated score chasing, which can conflict with the workflow.","writingGuideExampleTitle":"A supported two-chapter example","writingGuideExampleHint":"This shows the format only. Add every chapter and section needed for the actual project; the example does not replace tender, design or site requirements.","writingGuideExample":"Prepare a construction organization document for professional review of this project.\\nFocus on renovation conditions, protection of existing facilities, construction interfaces and acceptance.\\nUse specific, concise language. Explain working conditions, steps and checks.\\n<OUTLINE>\\n1. Project overview and construction deployment\\n1.1 Scope and site conditions\\n1.2 Interfaces and organization\\n2. Main construction methods\\n2.1 Operations and working conditions\\n2.2 Key controls and acceptance\\n</OUTLINE>\\nUse clear tables for configuration comparisons or sequencing.","writingGuideOneOutline":"Use one selected prompt for the complete outline. Let other prompts add priorities and style so that outlines do not repeat or conflict.","customPrompt":"My Prompts","currentProject":"Current Project","otherProjects":"Other Projects","allPrompts":"All Prompts","promptStatus":"Prompt Status","selected":"Selected","unselected":"Unselected","hasFileStatus":"Has File","missingFileStatus":"Missing File","sortByName":"Name A-Z","sortByMtime":"Recently Modified","sortBySource":"Source","sortBySelected":"Selected First","noMatchDesc":"No matching prompts found. Please try different keywords or clear filters.","noPromptInGroup":"No prompts in current group","searchPrompt":"Search name, content, path...","import":"Import","exportFiltered":"Export Filtered","createPrompt":"Create Prompt","exportSelected":"Export Selected","selectAll":"Select All","cancelSelectAll":"Cancel Select All","batchSelect":"Batch Select","cancelBatchSelect":"Cancel Batch Select","cancelSelect":"Cancel Select","clearSelect":"Clear Selection","aiPromptAssistant":"AI Prompt Assistant","clearHistory":"Clear History","generating":"Generating","canConverse":"Conversational Optimization","mentionRecallHint":"Type @ to recall knowledge files, then describe your optimization goal","apply":"Apply","aiAnalyzing":"AI is analyzing and generating content...","recallKbFiles":"Recall Knowledge Files","recallLimitHint":"Supports file name and content search, recalls up to 3 files","inputAtKeyword":"Type @keyword","loadingKbFiles":"Loading knowledge files...","noRecallableKbFiles":"No knowledge files available to recall","searchingKbContent":"Searching knowledge content...","noMatchingKbFiles":"No matching knowledge files, try another keyword","continueSearchingKb":"Continuing to search for content matches...","unclassified":"Unclassified","unknownFormat":"Unknown Format","contentMatch":"Content Match","diskFile":"Disk File","fileMatch":"File Match","mentionRecallPlaceholder":"Type @ to recall knowledge files, then describe goal...","rulePreviewTitle":"Rule Detection Preview","rulePreviewAnalyzing":"Analyzing rules…","rulePreviewHint":"Rules will be auto-detected after you enter prompt content","rulePreviewNone":"No rules detected","send":"Send","chatFailed":"Chat failed — check the model configuration","chatEmptyReply":"The model returned no content","nameRequired":"Enter a name","untitled":"Untitled prompt","appliedToEditor":"Applied to the editor — review it before saving","exportedCount":"Exported {count} prompt(s)","importedCount":"Imported {count} prompt(s)","importFailed":"Import failed — make sure the JSON file is well-formed","exportOne":"Export","exportNoneSelected":"Please select the prompts to export first","deleteCustomConfirm":"Delete this custom prompt?","deleteProjectConfirm":"Delete this project record and its file?","localPrompt":"Local prompt","selectedCount":"{count} selected"},"assets":{"openFile":"Open File","openDirectory":"Open Directory"},"logs":{"backToSettings":"Back to Settings","monitorSystem":"Monitor system exceptions, API errors, and runtime issues","searchLogs":"Search logs...","refresh":"Refresh","clear":"Clear","clearConfirm":"Are you sure you want to clear all error logs?","logStorageInfo":"Logs are stored locally in","maxLoaded":"Max 500 entries loaded.","noLogsFound":"No logs found","time":"Time","level":"Level","source":"Source","message":"Message","requestId":"Req ID","function":"Function","requestContext":"Request Context","metadata":"Metadata","stackTrace":"Stack Trace","clearedFiles":"Cleared {count} error log file(s)"},"settings":{"title":"System Settings","description":"Manage interface preferences and view system overview","language":"Interface Language","languageDesc":"Select the language for the system interface","theme":"Appearance Theme","themeDesc":"Adjust light and dark themes","light":"Light","dark":"Dark","system":"System","serverStatus":"Server Status","serverStatusDesc":"Resource usage and health","status":"Status","healthy":"Healthy","unknown":"Unknown","uptime":"Uptime","days":"days","hours":"hours","minutes":"mins","cpu":"CPU","cores":"Cores","memory":"Memory Usage","embeddingConfig":"Embedding Config","embeddingConfigDesc":"Vector DB configurations","provider":"Provider","model":"Model","apiKey":"API Key","configured":"Configured","none":"None","dimensions":"Dimensions","localData":"Local Data & Storage","localDataDesc":"All data is stored locally on your machine","directory":"Directory","knowledgeBase":"Knowledge Base","localVectors":"Local Vectors","tasks":"Total Tasks","tokens":"Total Tokens","diagnostics":"Diagnostics","diagnosticsDesc":"Server-side error log (stack traces, requests, sources). Use it to find out why a generation failed.","openDiagnostics":"Open diagnostics"},"documents":{"saveDraft":"Save Draft","exportGateBlockedTitle":"Export gate not passed","exportAnywayNonDeliverable":"Export anyway (non-deliverable)","nonDeliverableExportConfirm":"The exported file will be force-marked as a non-deliverable (file-name suffix and on-page banner). It must not be submitted as a formal deliverable.","nonDeliverableExportTitle":"This export is a non-deliverable","nonDeliverableExportHint":"The export gate did not pass, so the file is force-marked as a non-deliverable (file-name suffix). It must not be submitted as a formal deliverable."},"common":{"save":"Save","cancel":"Cancel","confirm":"Confirm","delete":"Delete","edit":"Edit","add":"Add","search":"Search","loading":"Loading...","error":"Something went wrong","success":"Success","retry":"Retry","close":"Close","noData":"No data","unknown":"Unknown","never":"Never","statusWaiting":"Waiting","statusRunning":"In Progress","statusCompleted":"Completed","statusSkipped":"Skipped","statusFailed":"Failed","statusPartial":"Partial","statusReview":"Needs Review","statusAbnormal":"Abnormal","statusIndexed":"Indexed","statusOutdated":"Outdated","statusDeleted":"Deleted","statusNotIndexed":"Not Indexed","levelError":"Error","levelWarning":"Warning","levelInfo":"Info","totalRows":"{count} rows"},"jobs":{"title":"Background tasks","pageSubtitle":"Every upload, re-index and document generation run is recorded here; while a task is running this page refreshes every 2 seconds.","clearAll":"Clear all","filterAll":"All","searchPlaceholder":"Search task, file or diagnostics","filteredRecords":"{count} matched","limitNotice":"Only the latest {count}","limitHint":"Only the most recent {count} records are loaded; earlier ones were not fetched","noMatch":"No records match the filters","empty":"No background tasks","emptyHint":"Uploads, re-index runs and document generation all leave a record here.","remove":"Remove record","removeConfirm":"Remove this record from the list?","removed":"Record removed","clearConfirmTitle":"Clear all background task records?","clearConfirmContent":"Records will be deleted. Running tasks are not cancelled.","cleared":"Records cleared","clearFailed":"Failed to clear","removeFailed":"Failed to remove","colStatus":"Status","colTask":"Task","colProgress":"Progress","colActions":"Actions","messageLabel":"Message","errorLabel":"Error","typeLabel":"Type","stageLabel":"Stage","chunksLabel":"Chunks","fileLabel":"File","createdAtLabel":"Created","updatedAtLabel":"Updated","idLabel":"Record ID","diagnostics":"Diagnostics","detailsMore":"{count} more not shown","statusProcessing":"Running","statusSuccess":"Done","statusWarning":"Warning","statusError":"Failed","typeDocument":"Document generation","typeUpload":"File upload","typeReindex":"Re-index","typeDelete":"Delete","stageUploading":"Uploading","stageParsing":"Parsing","stageChunking":"Chunking","stageVectorizing":"Indexing","stageGenerating":"Generating","stageValidating":"Validating","stageDone":"Done","stageError":"Error","resident":"Persistent","residentHint":"Persistent system alert: written automatically when an issue is detected, and rewritten on the next check after removal","clearConfirmWarning":"In-flight records reappear on the next progress update, and persistent system alerts (e.g. mixed material packs) are rewritten on the next check."},"records":{"title":"Generation records","empty":"No generation records yet","batch":"Select","current":"Current","selectPage":"Select page","clearSelect":"Clear","checkedCount":"{count} selected","deleteSelected":"Delete","deletedCount":"Deleted {count} record(s)","confirmDelete":"Delete this record?","confirmDeleteSelected":"Delete the {count} selected record(s)?","deleteHint":"This cannot be undone. A running generation cannot be deleted — abort it on the canvas first.","inFlightHint":"A running generation cannot be deleted (abort it on the canvas first)","reportTitle":"Export closure report","reportEmpty":"No exports yet","reportEntry":"Export report","reportFormat":"Format","reportDuration":"Duration","reportRepaired":"Repaired","reportBlocking":"Blocking","reportRules":"Rules","reportHealthAlerts":"Health alerts","reportGateBlocked":"Not deliverable","reportChecklistTitle":"Unresolved items from the latest non-deliverable export","reportChecklistTotal":"{count} item(s)","netCharsLabel":"Repair-chain net added chars","netCharsOver":" (over the 5% target)","netCharsRatio":"{ratio}% of the text at chain start","netCharsWarn":"Repair-chain net added chars exceed the 5% target: the score is being repaired rather than written","receiptBadge":"{count} notice(s) from this export","receiptBindingAbsent":"The gate is not bound to a body fingerprint: whether this body is the one that passed cannot be checked","receiptBindingMismatch":"Body and gate fingerprint differ: the export was approved for a different body (edited or replaced after close-out)","receiptContentIssues":"{count} content issue(s): {first}","receiptFigureFailures":"{count} figure(s) not inlined: {first}","receiptGateIssues":"Gate blocking list: {count} item(s): {first}","receiptNonDeliverable":"This export is a NON-DELIVERABLE: the filename was suffixed by the server; do not submit it as a formal deliverable","receiptPdfPages":"PDF has {count} page(s)","receiptRenderBlockers":"Render audit: {count} source-level structural defect(s)","receiptRenderNotices":"Render audit: {count} notice(s): {first}","receiptTemplateWarning":"Template placeholder missing, fell back to: {detail}","receiptTitle":"Latest export receipt","reviewReportDownload":"Download .md","reviewReportHint":"The report is rendered from the repair-round ledger and the gate result at close-out","reviewReportLabel":"Delivery review report","reviewReportView":"View online"}}')},66285:()=>{},79182:(a,b,c)=>{"use strict";c.d(b,{hJ:()=>e});var d=c(8732);function e({size:a=20,className:b}){return(0,d.jsx)("svg",{width:a,height:a,viewBox:"0 0 24 24",className:b,"aria-hidden":"true",focusable:"false",children:(0,d.jsx)("g",{transform:"translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)",children:(0,d.jsx)("path",{d:"M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z",fill:"currentColor"})})})}},93065:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>o});var e=c(8732),f=c(82015),g=c(21202),h=c(9328),i=c.n(h),j=c(94487),k=c(68329),l=c(79182),m=c(60056),n=a([j]);j=(n.then?(await n)():n)[0];let p=[{href:"/overview",icon:k.HxJ,labelKey:"nav.overview"},{href:"/knowledge",icon:k.WmV,labelKey:"nav.knowledge"},{href:"/models",icon:k.fX,labelKey:"nav.models"},{href:"/prompt",icon:k.vEG,labelKey:"nav.promptManagement"},{href:"/skills",icon:k.oxo,labelKey:"nav.skills"},{href:"/canvas",icon:k.lgv,labelKey:"nav.canvas"},{href:"/guide",icon:k.Gyj,labelKey:"nav.guide"},{href:"/settings",icon:k.wB_,labelKey:"nav.settings"}];function o(){let a=(0,g.usePathname)()??"",b=(0,j.Vr)(),c=b=>!!b&&(a===b||a.startsWith(b+"/")),d=(0,f.useMemo)(()=>{let a={};for(let b of p)b.children?.some(a=>c(a.href))&&(a[b.labelKey]=!0);return a},[a]),[h,n]=(0,f.useState)({}),{collapsed:o,setCollapsed:q}=(0,j.hM)();return(0,e.jsxs)("aside",{className:`sidebar${o?" sidebarCollapsedSelf":""}`,children:[(0,e.jsxs)("div",{className:"sidebarLogoRow",children:[(0,e.jsx)(i(),{href:"/overview",prefetch:!1,className:"min-w-0 flex-1",onClick:a=>{o&&(a.preventDefault(),q(!1))},children:(0,e.jsxs)("div",{className:"sidebarLogo",children:[(0,e.jsx)("div",{className:"w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0",children:(0,e.jsx)(l.hJ,{className:"text-white dark:text-black",size:26})}),(0,e.jsx)("div",{className:"sidebarLogoTitle",children:(0,e.jsx)("span",{className:"logoGradient",children:"Customize Agent"})})]})}),!o&&(0,e.jsx)("button",{className:"sidebarCollapseBtn",onClick:()=>q(!0),"aria-label":"收起侧边栏",children:(0,e.jsx)(k.ues,{size:16})})]}),(0,e.jsx)("nav",{className:"sidebarNav mt-2",children:p.map(a=>{if(a.children){let f,g=h[a.labelKey]??d[a.labelKey]??!1,j=(f=a.children,f?.some(a=>c(a.href)));return(0,e.jsxs)("div",{children:[(0,e.jsx)(m.m_,{title:o?b(a.labelKey):"",placement:"right",children:(0,e.jsxs)("div",{className:`sidebarItem sidebarParent${j&&o?" sidebarItemActive":""}`,onClick:()=>{if(o)q(!1),n(b=>({...b,[a.labelKey]:!0}));else{var b;b=a.labelKey,n(a=>({...a,[b]:!a[b]}))}},children:[(0,e.jsx)(a.icon,{size:18}),(0,e.jsx)("span",{className:"sidebarLabel",children:b(a.labelKey)}),(0,e.jsx)("span",{className:"sidebarChevron",children:g?(0,e.jsx)(k.yQN,{size:14}):(0,e.jsx)(k.c_$,{size:14})})]})}),g&&!o&&(0,e.jsx)("div",{className:"sidebarSubmenu animateFadeIn",children:a.children.map(a=>{let d=c(a.href);return(0,e.jsx)(i(),{href:a.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem sidebarSubItem${d?" sidebarItemActive":""}`,children:[(0,e.jsx)(a.icon,{size:16}),(0,e.jsx)("span",{className:"sidebarLabel",children:b(a.labelKey)})]})},a.href)})})]},a.labelKey)}let f=c(a.href);return(0,e.jsx)(m.m_,{title:o?b(a.labelKey):"",placement:"right",children:(0,e.jsx)(i(),{href:a.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem${f?" sidebarItemActive":""}`,children:[(0,e.jsx)(a.icon,{size:18}),(0,e.jsx)("span",{className:"sidebarLabel",children:b(a.labelKey)})]})})},a.href)})})]})}d()}catch(a){d(a)}})},94487:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{PE:()=>z,Vr:()=>x,hM:()=>v,x_:()=>w});var e=c(8732),f=c(82015),g=c(49702),h=c.n(g),i=c(42583),j=c(57312),k=c(60056),l=c(2973),m=c(40107);c(36653);var n=c(4823),o=c(93065),p=c(34924),q=c(95725),r=c(13484),s=c(54506),t=c(31077),u=a([j,o,p]);[j,o,p]=u.then?(await u)():u;let A=(0,f.createContext)(null),B=(0,f.createContext)(null);function v(){let a=(0,f.useContext)(B);if(!a)throw Error("useSidebarCollapsed must be used inside Layout");return a}function w(){let a=(0,f.useContext)(A);if(!a)throw Error("useAppLocale must be used inside Layout");return a}function x(a){let{messages:b,locale:c}=w();return(0,f.useCallback)(d=>{if(!a)return(0,t._h)(b,d,c);let e=`${a}.${d}`,f=(0,t.CE)(b,e);return void 0!==f?f:(0,t._h)(b,d,c)},[b,a,c])}let C={"zh-CN":r,"en-US":s};function y({children:a}){let{resolvedTheme:b}=(0,j.useTheme)(),c=(0,i.useRouter)(),[d,g]=(0,f.useState)("zh-CN"),[r,s]=(0,f.useState)(!1),[t,u]=(0,f.useState)(!0),v="dark"===b,w=C[d]??C["zh-CN"],x=(0,f.useCallback)(a=>{document.cookie=`NEXT_LOCALE=${a};path=/;max-age=31536000;samesite=lax`,g(a)},[]),y=(0,f.useMemo)(()=>({locale:d,setLocale:x,messages:w}),[d,x,w]),z=(0,f.useMemo)(()=>({collapsed:t,setCollapsed:u}),[t]),D=(0,f.useMemo)(()=>(0,n.D)(v),[v]),E="en-US"===d?m.default:l.A;return(0,e.jsx)(A.Provider,{value:y,children:(0,e.jsx)(B.Provider,{value:z,children:(0,e.jsx)(k.sG,{theme:D,locale:E,children:(0,e.jsx)(k.qw,{children:(0,e.jsxs)(q.WE,{children:[(0,e.jsx)(h(),{children:(0,e.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1, viewport-fit=cover"})}),(0,e.jsx)(o.B,{}),(0,e.jsxs)("div",{className:"mainContent",children:[(0,e.jsx)(p.Y,{}),(0,e.jsx)("main",{className:`mainInner${c.pathname.startsWith("/canvas")?" mainInnerCanvas":""}${r?" pageTransitioning":""}`,children:a})]})]})})})})})}function z({children:a}){return(0,e.jsx)(j.ThemeProvider,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:(0,e.jsx)(y,{children:a})})}d()}catch(a){d(a)}})},95725:(a,b,c)=>{"use strict";c.d(b,{FX:()=>g,M4:()=>i,WE:()=>j});var d=c(8732),e=c(82015),f=c(22147);let g=200,h=(0,e.createContext)(null);function i(){let a=(0,e.useContext)(h);if(!a)throw Error("useBackgroundTasks must be used inside BackgroundTasksProvider");return a}function j({children:a}){let[b,c]=(0,e.useState)([]),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(!1),m=(0,e.useRef)(0);(0,e.useRef)(null);let n=(0,e.useRef)([]),[o,p]=(0,e.useState)(!1),q=(0,e.useCallback)(async()=>{try{let a=await (0,f.Qx)(void 0,g);m.current=0,p(!1),n.current=a.operations||[],c(a.operations||[]),j(!0)}catch(a){throw p(!0),a}},[]),r=(0,e.useMemo)(()=>({jobs:b,loaded:i,loadFailed:o,truncated:b.length>=g,mounted:k,reload:q}),[b,i,o,k,q]);return(0,d.jsx)(h.Provider,{value:r,children:a})}},97237:()=>{}};
|