@customize-agent/server 4.60.31 → 4.60.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +34 -31
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +1 -1
  5. package/.next/server/chunks/1243.js +1 -1
  6. package/.next/server/chunks/1936.js +8 -8
  7. package/.next/server/chunks/2328.js +1 -1
  8. package/.next/server/chunks/6321.js +1 -1
  9. package/.next/server/chunks/6822.js +1 -1
  10. package/.next/server/chunks/{4722.js → 7848.js} +27 -27
  11. package/.next/server/chunks/8204.js +1 -1
  12. package/.next/server/chunks/9666.js +56 -55
  13. package/.next/server/instrumentation.js +1 -1
  14. package/.next/server/instrumentation.js.nft.json +1 -1
  15. package/.next/server/middleware-build-manifest.js +1 -1
  16. package/.next/server/pages/404.html +1 -1
  17. package/.next/server/pages/500.html +1 -1
  18. package/.next/server/pages/api/config/embedding/healthCheck.js +2 -1
  19. package/.next/server/pages/api/config/embedding.js +2 -1
  20. package/.next/server/pages/api/config/healthCheck.js +2 -1
  21. package/.next/server/pages/api/config/models.js +2 -1
  22. package/.next/server/pages/api/config/providers/[provider].js +2 -1
  23. package/.next/server/pages/api/config/providers.js +2 -1
  24. package/.next/server/pages/api/config/reset.js +3 -0
  25. package/.next/server/pages/api/config/reset.js.nft.json +1 -0
  26. package/.next/server/pages/api/config/web-access.js +2 -1
  27. package/.next/server/pages/api/documents/export.js +1 -1
  28. package/.next/server/pages/api/documents/generate/preview.js +1 -1
  29. package/.next/server/pages/api/documents/generate.js +1 -1
  30. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js +1 -1
  31. package/.next/server/pages/api/health.js +1 -1
  32. package/.next/server/pages/api/kb/features.js +2 -1
  33. package/.next/server/pages/api/prompt/chat.js +3 -2
  34. package/.next/server/pages/api/system/reset.js +1 -1
  35. package/.next/server/pages/canvas/[id].html +1 -1
  36. package/.next/server/pages/canvas.html +1 -1
  37. package/.next/server/pages/documents.html +1 -1
  38. package/.next/server/pages/guide.html +1 -1
  39. package/.next/server/pages/index.html +1 -1
  40. package/.next/server/pages/jobs.html +1 -1
  41. package/.next/server/pages/knowledge/file-detail.html +1 -1
  42. package/.next/server/pages/knowledge/files.html +1 -1
  43. package/.next/server/pages/knowledge/manage.html +1 -1
  44. package/.next/server/pages/knowledge/source-preview.html +1 -1
  45. package/.next/server/pages/knowledge.html +1 -1
  46. package/.next/server/pages/models.html +1 -1
  47. package/.next/server/pages/overview.html +1 -1
  48. package/.next/server/pages/prompt.html +1 -1
  49. package/.next/server/pages/settings.html +1 -1
  50. package/.next/server/pages/skills/[id]/edit.html +1 -1
  51. package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
  52. package/.next/server/pages/skills/[id].html +1 -1
  53. package/.next/server/pages/skills/[id].js.nft.json +1 -1
  54. package/.next/server/pages/skills/new.html +1 -1
  55. package/.next/server/pages/skills/new.js.nft.json +1 -1
  56. package/.next/server/pages/skills.html +1 -1
  57. package/.next/server/pages/system/logs.html +1 -1
  58. package/.next/server/pages-manifest.json +34 -33
  59. package/.next/static/84adacede7ff442362a497aa3e621351f0c7ab051b72c5c491f09a03bf4751e3/_buildManifest.js +1 -0
  60. package/.next/static/chunks/1141-d420a7685bc3623c.js +1 -0
  61. package/.next/static/chunks/2864-b040f2bffa08c139.js +6 -0
  62. package/.next/static/chunks/3456-70bb03a39473f693.js +1 -0
  63. package/.next/static/chunks/3980-73841c40d55ddfa1.js +1 -0
  64. package/.next/static/chunks/4337-a670a1a94ab505d9.js +1 -0
  65. package/.next/static/chunks/4530-8b9788da40548ec6.js +1 -0
  66. package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +1 -0
  67. package/.next/static/chunks/6748-07b0b05bf03c72f0.js +1 -0
  68. package/.next/static/chunks/9937-e4b2deadd24e3962.js +1 -0
  69. package/.next/static/chunks/pages/{_app-73e5b40b24a7fe7d.js → _app-51c48c5efcf5c721.js} +13 -13
  70. package/.next/static/chunks/pages/canvas/{[id]-45da860b862e0743.js → [id]-18865f1b7e3a4696.js} +1 -1
  71. package/.next/static/chunks/pages/canvas-1d3589790493e955.js +1 -0
  72. package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +1 -0
  73. package/.next/static/chunks/pages/knowledge/{source-preview-40ff4936b832787e.js → source-preview-24936b9a746ed07f.js} +1 -1
  74. package/.next/static/chunks/pages/models-8a89dd5bf0f81242.js +1 -0
  75. package/.next/static/chunks/pages/skills/[id]/{edit-35892def57c4975f.js → edit-99e616d5019e80b1.js} +1 -1
  76. package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +1 -0
  77. package/.next/static/chunks/pages/skills/{new-a279e6ca2f7aded7.js → new-00886ea4c676f927.js} +1 -1
  78. package/.next/static/css/9eb02c1a401fd278.css +1 -0
  79. package/messages/en-US.json +13 -1
  80. package/messages/zh-CN.json +13 -1
  81. package/package.json +4 -4
  82. package/scripts/brand-moon-fit.cjs +0 -47
  83. package/scripts/generate-brand-assets.cjs +0 -41
  84. package/scripts/half-built-scan.allow.json +16 -6
  85. package/scripts/half-built-scan.baseline.json +2 -17
  86. package/scripts/half-built-scan.mjs +1 -84
  87. package/.next/server/chunks/6021.js +0 -1
  88. package/.next/static/0fdab21c22b65a3042c22ee4ac8e49fbfd22e365df64d5e9b709ccb05aecf02e/_buildManifest.js +0 -1
  89. package/.next/static/chunks/2378-c6d25abe02815666.js +0 -1
  90. package/.next/static/chunks/2864-67ba808c5092c2f9.js +0 -6
  91. package/.next/static/chunks/3456-8b609f8475ae5030.js +0 -1
  92. package/.next/static/chunks/4530-e73bdd645bb7a953.js +0 -1
  93. package/.next/static/chunks/5046-abead1022185a99a.js +0 -1
  94. package/.next/static/chunks/5257-915621e439b56580.js +0 -1
  95. package/.next/static/chunks/6505-012e90937e1e8dae.js +0 -1
  96. package/.next/static/chunks/6748-04b5429330e1451e.js +0 -1
  97. package/.next/static/chunks/7955-3a7ee8cda4f857b9.js +0 -1
  98. package/.next/static/chunks/pages/canvas-a15773d02c97b7a6.js +0 -1
  99. package/.next/static/chunks/pages/knowledge/file-detail-5859f0c25af34ffe.js +0 -1
  100. package/.next/static/chunks/pages/models-0aaff5bfadc7b62f.js +0 -1
  101. package/.next/static/chunks/pages/skills/[id]-19c352e150e05c27.js +0 -1
  102. package/.next/static/css/837ac5def44e2eba.css +0 -1
  103. package/scripts/capture-baseline.mjs +0 -353
  104. /package/.next/static/{0fdab21c22b65a3042c22ee4ac8e49fbfd22e365df64d5e9b709ccb05aecf02e → 84adacede7ff442362a497aa3e621351f0c7ab051b72c5c491f09a03bf4751e3}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[95],{2232:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>P});var r=s(65321),a=s(97109),l=s(1873),n=s.n(l),c=s(86109),i=s(33442),o=s(14932),d=s(85114),x=s(85493),h=s(48318),m=s(75174),u=s(57271),p=s(42700),j=s(84253),v=s(68787),g=s(11702),f=s(76506),y=s(58569),b=s(88762),N=s(99271),w=s(37510),C=s(99811),k=s(6578),S=s(85979);let A={whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:0,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5,lineHeight:1.75};function T(e){let{children:t,maxHeight:s=520}=e;return(0,r.jsx)("div",{className:"rounded-xl border border-[var(--borderColor)] bg-[var(--colorFillAlter)] px-3 py-2.5",style:{maxHeight:s,overflow:"auto"},children:t})}function z(e){let{zoom:t,onChange:s,viewportRef:a}=e,l=e=>Math.min(4,Math.max(.2,Math.round(100*e)/100));return(0,r.jsxs)(i.A,{size:4,align:"center",children:[(0,r.jsx)(o.A,{title:"缩小(Ctrl/⌘ + 滚轮同效)",children:(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(N.A,{}),"aria-label":"缩小",onClick:()=>s(l(t-.1))})}),(0,r.jsxs)("span",{className:"text-xs tabular-nums text-[var(--colorTextSecondary)] w-12 text-center",children:[Math.round(100*t),"%"]}),(0,r.jsx)(o.A,{title:"放大(Ctrl/⌘ + 滚轮同效)",children:(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(w.A,{}),"aria-label":"放大",onClick:()=>s(l(t+.1))})}),(0,r.jsx)(d.Ay,{size:"small",onClick:()=>{let e=a.current,r=null==e?void 0:e.firstElementChild;if(!e||!r)return;let n=r.clientWidth/t;n&&s(l((e.clientWidth-2)/n))},children:"适应宽度"}),(0,r.jsx)(d.Ay,{size:"small",disabled:1===t,onClick:()=>s(1),children:"原始比例"})]})}function M(e){let{zoom:t,viewportRef:s,children:a}=e;return(0,r.jsx)("div",{ref:s,className:"rounded-xl border border-[var(--borderColor)] bg-[var(--colorBgContainer)] p-3 overflow-auto",style:{maxHeight:"68vh"},children:1===t?a:(0,r.jsx)("div",{style:{zoom:t},children:a})})}function R(e){var t,s,a;let{block:l,parts:n}=e;if("undefined"==typeof DOMParser)return(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:l.text})});let c=null!=(a=null==(t=/<[^!?][^>]*?\s([^>]*)>/u.exec(null!=(s=n[l.part])?s:""))?void 0:t[1])?a:'xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"',i=new DOMParser().parseFromString("<root ".concat(c,">").concat(l.xml,"</root>"),"application/xml"),o=i.documentElement.firstElementChild;if(!o||i.querySelector("parsererror"))return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{type:"warning",message:"表格XML显示未完成,保留原文及结构供核查"}),(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:l.text})})]});let d=[...o.children].filter(e=>"tr"===e.localName).map(e=>{let t=0;return[...e.children].filter(e=>"tc"===e.localName).map(e=>{var s,r,a;let l=Number(null!=(r=null==(s=e.getElementsByTagName("w:gridSpan")[0])?void 0:s.getAttribute("w:val"))?r:1),n=e.getElementsByTagName("w:vMerge")[0],c={column:t,span:l,merge:n?null!=(a=n.getAttribute("w:val"))?a:"continue":void 0,text:[...e.getElementsByTagName("w:t")].map(e=>{var t;return null!=(t=e.textContent)?t:""}).join("")};return t+=l,c})});return(0,r.jsx)("table",{className:"w-full border-collapse my-3 text-sm",children:(0,r.jsx)("tbody",{children:d.map((e,t)=>(0,r.jsx)("tr",{className:"even:bg-[var(--colorFillAlter)]",children:e.filter(e=>"continue"!==e.merge).map(e=>{var s,a;let l=1;if("restart"===e.merge)for(;(null==(a=d[t+l])||null==(s=a.find(t=>t.column===e.column))?void 0:s.merge)==="continue";)l++;return(0,r.jsx)("td",{className:"border border-[var(--borderColor)] p-2 align-top whitespace-pre-wrap",colSpan:e.span,rowSpan:l,children:e.text},e.column)})},t))})})}function I(e){let{sheet:t,zoom:s,viewportRef:l}=e,[n,c]=(0,a.useState)(1),[i,o]=(0,a.useState)(1),d=t.cells.reduce((e,t)=>Math.max(e,t.row),t.merges.reduce((e,t)=>Math.max(e,t.endRow),1)),x=t.cells.reduce((e,t)=>Math.max(e,t.col),t.merges.reduce((e,t)=>Math.max(e,t.endCol),1)),u=(0,a.useMemo)(()=>new Map(t.cells.map(e=>["".concat(e.row,":").concat(e.col),e])),[t]),p=(n-1)*50+1,j=Math.min(d,p+49),v=Math.min(x,i+19);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mb-3 text-xs text-[var(--colorTextSecondary)]",children:[(0,r.jsx)("span",{children:"原工作表物理坐标;公式使用已保存缓存值"}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-2",children:["起始列 ",(0,r.jsx)(h.A,{size:"small",min:1,max:x,value:i,onChange:e=>o(null!=e?e:1)})]})]}),(0,r.jsx)(M,{zoom:s,viewportRef:l,children:(0,r.jsxs)("table",{className:"border-collapse text-xs",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"border border-[var(--borderColor)] bg-[var(--colorFillSecondary)] px-2 py-1 sticky top-0 left-0 z-[2]",children:"行"}),Array.from({length:v-i+1},(e,t)=>(0,r.jsxs)("th",{className:"border border-[var(--borderColor)] bg-[var(--colorFillSecondary)] px-2 py-1 sticky top-0 z-[1] min-w-24",children:["C",i+t]},t))]})}),(0,r.jsx)("tbody",{children:Array.from({length:j-p+1},(e,s)=>{let a=p+s;return(0,r.jsxs)("tr",{className:"even:bg-[var(--colorFillAlter)]",children:[(0,r.jsxs)("th",{className:"border border-[var(--borderColor)] bg-[var(--colorFillSecondary)] px-2 py-1 text-[var(--colorTextSecondary)] sticky left-0 z-[1]",children:["R",a]}),Array.from({length:v-i+1},(e,s)=>{var l,n,c;let o=i+s,d=u.get("".concat(a,":").concat(o)),x=t.merges.find(e=>a>=e.startRow&&a<=e.endRow&&o>=e.startCol&&o<=e.endCol);if(x&&(a!==Math.max(p,x.startRow)||o!==Math.max(i,x.startCol)))return null;let h=x?u.get("".concat(x.startRow,":").concat(x.startCol)):d,m=null!=(l=null==h?void 0:h.display)?l:"";return(0,r.jsxs)("td",{className:"border border-[var(--borderColor)] px-2 py-1 whitespace-pre-wrap align-top ".concat("number"==typeof m||"string"==typeof m&&/^-?[\d,]+(\.\d+)?$/u.test(m.trim())?"text-right tabular-nums":""," ").concat(""===m?"bg-[var(--colorFillQuaternary)]":""),rowSpan:x?Math.min(j,x.endRow)-Math.max(p,x.startRow)+1:1,colSpan:x?Math.min(v,x.endCol)-Math.max(i,x.startCol)+1:1,title:"".concat(null!=(n=null==h?void 0:h.address)?n:"R".concat(a,"C").concat(o),"\n原值: ").concat(String(null!=(c=null==h?void 0:h.value)?c:"")).concat((null==h?void 0:h.formula)?"\n公式: =".concat(h.formula):""),children:[m,(null==h?void 0:h.formula)&&(0,r.jsxs)("div",{className:"text-[10px] text-[var(--colorTextTertiary)]",children:["=",h.formula]})]},o)})]},a)})})]})}),(0,r.jsx)("div",{className:"mt-3 flex justify-end",children:(0,r.jsx)(m.A,{size:"small",current:n,pageSize:50,total:d,showSizeChanger:!1,onChange:c})})]})}function F(e){let{frameIds:t,endpoint:s,zoom:l,viewportRef:c}=e,[i,o]=(0,a.useState)(0),[d,h]=(0,a.useState)(""),[m,v]=(0,a.useState)(),[g,f]=(0,a.useState)(""),[y,b]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=!0;h(""),f(""),v(void 0);let r=t[i];if(r)return b(!0),(0,k.x6)("".concat(s,"&frame=").concat(encodeURIComponent(r),"&format=json")).then(t=>{e&&(h(t.image),v(t.receipt))}).catch(t=>{e&&f(String(t))}).finally(()=>{e&&b(!1)}),()=>{e=!1}},[i,t,s]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[(0,r.jsx)(u.A,{size:"small",className:"min-w-64",value:i,onChange:o,options:t.map((e,t)=>({value:t,label:e}))}),(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:"显示实际库内实体与块实例;绘制限制不等同数据丢失。"})]}),(0,r.jsxs)(p.A,{spinning:y,children:[g&&(0,r.jsx)(x.A,{type:"warning",message:"图框显示未完成",description:"".concat(g,";请区分已入库结构和绘制能力,已有库内文字仍可读取。")}),d?(0,r.jsx)(M,{zoom:l,viewportRef:c,children:(0,r.jsx)("div",{className:"bg-white inline-block p-2",children:(0,r.jsx)(n(),{unoptimized:!0,width:2400,height:1800,src:d,alt:"已解析CAD图框",style:{width:"100%",height:"auto",display:"block"}})})}):!y&&!g&&(0,r.jsx)(j.A,{description:"尚未识别到可显示图框"}),void 0!==m&&(0,r.jsxs)("details",{className:"mt-3",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextSecondary)]",children:"本次绘制回执与限制"}),(0,r.jsx)(T,{maxHeight:260,children:(0,r.jsx)("pre",{style:A,children:JSON.stringify(m,null,2)})})]})]})]})}function O(e){let{structure:t,endpoint:s,zoom:l,viewportRef:c}=e,[i,o]=(0,a.useState)(0);if(t.spreadsheet){let e=t.spreadsheet.sheets;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsx)(u.A,{size:"small",className:"min-w-64",value:i,options:e.map((e,t)=>({value:t,label:e.name})),onChange:o})}),e[i]&&(0,r.jsx)(I,{sheet:e[i],zoom:l,viewportRef:c},i)]})}if(t.docx)return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(M,{zoom:l,viewportRef:c,children:(0,r.jsxs)("div",{className:"mx-auto",style:{maxWidth:860},children:[t.docx.blocks.map(e=>(0,r.jsxs)("div",{id:e.id,className:"mb-4",children:[(0,r.jsxs)("div",{className:"mb-1 text-[10px] text-[var(--colorTextTertiary)]",children:[e.part," \xb7 第 ",e.index+1," 块"]}),"table"===e.kind?(0,r.jsx)(R,{block:e,parts:t.docx.parts}):(0,r.jsx)("p",{className:e.headingLevel?"font-semibold text-lg whitespace-pre-wrap mt-2":"whitespace-pre-wrap leading-8 text-sm",children:e.text}),(0,r.jsxs)("details",{children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextTertiary)]",children:"来源 XML"}),(0,r.jsx)(T,{maxHeight:260,children:(0,r.jsx)("pre",{style:A,children:e.xml})})]})]},e.id)),t.docx.images.map(e=>(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsx)("div",{className:"mb-1 text-xs text-[var(--colorTextSecondary)]",children:e.name}),/^image\/(?:png|jpeg|gif|webp|svg\+xml|bmp)$/u.test(e.mediaType)?(0,r.jsx)(n(),{unoptimized:!0,width:1200,height:900,src:"".concat(s,"&image=").concat(encodeURIComponent(e.name)),alt:e.name,style:{maxWidth:"100%",height:"auto"}}):(0,r.jsx)(x.A,{type:"info",message:"已保留".concat(e.mediaType,"图片数据,浏览器未声明支持显示")})]},e.name))]})})});if(t.pdf){var d,h,p,v;let e=t.pdf.pages,s=e[i],a=null!=(h=null!=(d=null==s?void 0:s.width)?d:null==s?void 0:s.glyphs.reduce((e,t)=>Math.max(e,t.x+t.width+20),600))?h:600,n=null!=(v=null!=(p=null==s?void 0:s.height)?p:null==s?void 0:s.glyphs.reduce((e,t)=>Math.max(e,t.y+t.height+20),800))?v:800;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center justify-between gap-3",children:[(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:"显示库内已保存文字与位置;可选原版本对照不影响本页及后续生成。"}),(0,r.jsx)(m.A,{size:"small",current:i+1,pageSize:1,total:e.length,showSizeChanger:!1,onChange:e=>o(e-1)})]}),s&&(0,r.jsxs)(M,{zoom:l,viewportRef:c,children:[(0,r.jsx)("div",{className:"mx-auto bg-white shadow-sm border border-[var(--borderColor)]",style:{width:a},children:(0,r.jsx)("svg",{viewBox:"0 0 ".concat(a," ").concat(n),width:"100%",role:"img","aria-label":"解析第".concat(s.page,"页"),children:s.glyphs.map(e=>(0,r.jsx)("text",{x:e.x,y:n-e.y,fontSize:Math.max(6,e.height),children:e.str},e.id))})}),s.ocrText&&(0,r.jsxs)("div",{className:"mt-3",children:[(0,r.jsx)("div",{className:"mb-1 text-xs text-[var(--colorTextSecondary)]",children:"该页 OCR 文本"}),(0,r.jsx)(T,{maxHeight:260,children:(0,r.jsx)("pre",{style:A,children:s.ocrText})})]}),!s.glyphs.length&&!s.ocrText&&(0,r.jsx)(j.A,{description:"该页没有可展示文字,不能据此断言原页为空"})]})]})}return t.cad?(0,r.jsx)(F,{frameIds:t.cad.frameIds,endpoint:s,zoom:l,viewportRef:c}):(0,r.jsx)(j.A,{description:"此解析结果尚无结构显示适配,完整解析文字仍可查看"})}function E(e){let{data:t}=e,s=t.conservation,a=[{key:"chars",label:"文本覆盖",value:"".concat(s.coveredNonWhitespaceChars," / ").concat(s.sourceNonWhitespaceChars," 个非空白字符"),trouble:s.coveredNonWhitespaceChars!==s.sourceNonWhitespaceChars,...s.uncovered.length?{detail:(0,r.jsxs)(r.Fragment,{children:[s.uncovered.slice(0,5).map((e,t)=>(0,r.jsxs)("div",{className:"mb-1",children:["字符 ",e.start,"–",e.end,":",e.text.slice(0,120)]},t)),s.uncovered.length>5?(0,r.jsxs)("div",{children:["…还有 ",s.uncovered.length-5," 段"]}):null]})}:{}},{key:"chunks",label:"切片数",value:"".concat(t.totalChunks," 块(库内登记 ").concat(s.registeredChunkCount,",与底稿一致:").concat(s.chunkCountMatches?"是":"否",")"),trouble:!s.chunkCountMatches},{key:"stale",label:"身份过期的切片",value:s.staleChunkIdentities.length?"".concat(s.staleChunkIdentities.length," 块"):"无",trouble:s.staleChunkIdentities.length>0,...s.staleChunkIdentities.length?{detail:(0,r.jsxs)("div",{children:["切片序号:",s.staleChunkIdentities.slice(0,20).join(", "),s.staleChunkIdentities.length>20?" …":""]})}:{}},{key:"unmapped",label:"未能映射回底稿的切片",value:s.unmapped.length?"".concat(s.unmapped.length," 块"):"无",trouble:s.unmapped.length>0,...s.unmapped.length?{detail:(0,r.jsxs)(r.Fragment,{children:[s.unmapped.slice(0,5).map(e=>(0,r.jsxs)("div",{className:"mb-1",children:["切片 ",e.chunkIndex,":",e.text.slice(0,120)]},e.chunkIndex)),s.unmapped.length>5?(0,r.jsxs)("div",{children:["…还有 ",s.unmapped.length-5," 块"]}):null]})}:{}},{key:"order",label:"切片顺序",value:s.outOfOrderChunks.length?"乱序 ".concat(s.outOfOrderChunks.length," 块"):"与底稿一致",trouble:s.outOfOrderChunks.length>0,...s.outOfOrderChunks.length?{detail:(0,r.jsxs)("div",{children:["切片序号:",s.outOfOrderChunks.slice(0,20).join(", ")]})}:{}},{key:"repeated",label:"重复上下文跨度",value:"".concat(s.repeatedContextSpans," 处"),trouble:!1}];return(0,r.jsx)("div",{className:"flex flex-col",children:a.map(e=>(0,r.jsxs)("div",{className:"flex flex-col sm:flex-row gap-1 sm:gap-3 py-2 border-b border-[var(--colorBorderSecondary)] last:border-0",children:[(0,r.jsx)("div",{className:"sm:w-44 shrink-0 text-xs text-[var(--colorTextTertiary)] sm:pt-0.5",children:e.label}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 text-sm",children:[(0,r.jsx)("span",{className:e.trouble?"text-[var(--colorError)]":"text-[var(--colorText)]",children:e.value}),e.detail&&(0,r.jsxs)("details",{className:"mt-1",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextSecondary)]",children:"展开明细"}),(0,r.jsx)(T,{maxHeight:220,children:(0,r.jsx)("div",{className:"text-xs text-[var(--colorTextSecondary)]",children:e.detail})})]})]})]},e.key))})}function P(){let e=(0,c.useRouter)(),t="string"==typeof e.query.relativePath?e.query.relativePath:"",s="string"==typeof e.query.projectRoot?e.query.projectRoot:"",[l,n]=(0,a.useState)(),[o,h]=(0,a.useState)(""),[u,N]=(0,a.useState)(!1),[w,M]=(0,a.useState)(1),[R,I]=(0,a.useState)("structure"),F=(0,a.useRef)(null),P=(0,a.useRef)(0),_=new URLSearchParams({relativePath:t,...s?{projectRoot:s}:{}}),H="/api/kb/files/source-preview?".concat(_),W="".concat(H).concat((null==l?void 0:l.status)==="recorded"?"&snapshotId=".concat(l.identity.snapshotId):""),B=(0,a.useCallback)(async e=>{let t=++P.current;N(!0),h("");try{let s=await (0,k.x6)(e);t===P.current&&n(s)}catch(e){t===P.current&&h(e instanceof Error?e.message:String(e))}finally{t===P.current&&N(!1)}},[]);(0,a.useEffect)(()=>{n(void 0),t&&B(H)},[t,H,B]);let D=null==l?void 0:l.pdfCoverage,q=D&&"complete"!==D.status?(0,r.jsx)(x.A,{showIcon:!0,type:"warning",message:"unmeasured"===D.status?"PDF 页覆盖未记录":"PDF 页覆盖不完整",description:(0,r.jsxs)(i.A,{direction:"vertical",size:2,children:[D.pageCount?(0,r.jsx)("span",{children:"已处理页:".concat(D.processedPages,"/").concat(D.pageCount)}):(0,r.jsx)("span",{children:'没有记录到声明页数,无法据此断言"处理了几页"。'}),D.missingPages.length>0&&(0,r.jsx)("span",{children:"缺少页:".concat(D.missingPages.join(", "))}),D.failedPages.length>0&&(0,r.jsx)("span",{children:"失败页:".concat(D.failedPages.join(", "))}),(0,r.jsx)("span",{children:"这条读数只说明解析侧处理了哪些页,不证明内容、版式或专业采用正确。"})]})}):null;return(0,r.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,r.jsx)(S.k,{backHref:"/knowledge/file-detail?".concat(_),backLabel:"返回切片详情",title:"解析核查预览",description:t,extra:(0,r.jsxs)(i.A,{wrap:!0,children:["structure"===R&&(0,r.jsx)(z,{zoom:w,onChange:M,viewportRef:F}),(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(C.A,{}),onClick:()=>{B(H)},loading:u,children:"刷新"})]})}),o&&(0,r.jsx)(x.A,{type:"error",message:o}),(0,r.jsx)(p.A,{spinning:u,children:(null==l?void 0:l.status)==="not-recorded"?(0,r.jsxs)(v.A,{className:"rounded-2xl border-[var(--borderColor)]",children:[(0,r.jsx)(x.A,{type:"warning",message:"独立解析底稿尚未记录",description:l.reason}),q&&(0,r.jsx)("div",{className:"mt-3",children:q}),(0,r.jsx)(d.Ay,{className:"mt-4",onClick:()=>{(async()=>{try{await (0,k.HC)(t,s||void 0),h("重新解析任务已提交,请在处理完成后刷新本页。")}catch(e){h(String(e))}})()},children:"重新解析此文件"}),(0,r.jsx)("p",{className:"mt-4 mb-2 text-sm text-[var(--colorTextSecondary)]",children:"当前实际库内切片(不是独立底稿):"}),l.chunks.map(e=>(0,r.jsxs)("div",{className:"my-3",children:[(0,r.jsxs)(g.A,{children:["切片 ",e.chunkIndex]}),(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:e.content})})]},e.id)),(0,r.jsx)("div",{className:"mt-3 flex justify-end",children:(0,r.jsx)(m.A,{current:Math.floor(l.offset/30)+1,pageSize:30,total:l.totalChunks,showSizeChanger:!1,onChange:e=>{B("".concat(H,"&offset=").concat((e-1)*30))}})})]}):(null==l?void 0:l.status)==="recorded"?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(v.A,{className:"rounded-2xl border-[var(--borderColor)] mb-5",children:[(0,r.jsx)(E,{data:l}),(0,r.jsx)("p",{className:"mt-3 mb-0 text-xs text-[var(--colorTextSecondary)]",children:"这项检查只证明独立解析文字与切片的内容覆盖,不证明原文件解析、版式、工程理解或专业采用全部正确。"}),q&&(0,r.jsx)("div",{className:"mt-3",children:q}),l.identity.limitations.map(e=>(0,r.jsx)("p",{className:"mt-2 mb-0 text-xs text-[var(--colorTextSecondary)]",children:e},e)),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(d.Ay,{size:"small",href:"".concat(W,"&original=1"),target:"_blank",children:"查看/下载入库原版本"}),(0,r.jsx)(d.Ay,{size:"small",onClick:()=>{(0,k.tn)(t,"source-version",s||void 0).catch(e=>h("可选原版本对照不可用:".concat(String(e),";库内数据仍可读取")))},children:"本机打开入库原版本"})]}),(0,r.jsxs)("details",{className:"mt-4",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextSecondary)]",children:"技术详情(原文件哈希 / 解析版本 / 解析身份 / 核查口径)"}),(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsxs)(f.A,{size:"small",column:1,bordered:!0,styles:{label:{width:"120px",background:"var(--colorFillAlter)",color:"var(--colorTextSecondary)"}},children:[(0,r.jsx)(f.A.Item,{label:"原文件SHA256",children:(0,r.jsx)("span",{className:"break-all text-xs",children:l.identity.sourceHash})}),(0,r.jsx)(f.A.Item,{label:"解析版本",children:(0,r.jsx)("span",{className:"text-xs",children:l.identity.parserVersion})}),(0,r.jsx)(f.A.Item,{label:"解析身份",children:(0,r.jsx)("span",{className:"break-all text-xs",children:l.identity.snapshotId})}),(0,r.jsx)(f.A.Item,{label:"核查口径",children:(0,r.jsxs)("span",{className:"text-xs",children:[l.conservation.version," \xb7 ",l.conservation.scope," \xb7 入库状态 ",l.conservation.ingestionStatus]})}),(0,r.jsx)(f.A.Item,{label:"底稿快照",children:(0,r.jsx)("span",{className:"break-all text-xs",children:l.conservation.snapshotId})})]})})]})]}),(0,r.jsx)(y.A,{className:"documents-tabs",activeKey:R,onChange:I,items:[{key:"structure",label:"解析结构",children:(0,r.jsx)(v.A,{className:"rounded-2xl border-[var(--borderColor)]",onWheelCapture:e=>{(e.ctrlKey||e.metaKey)&&(e.preventDefault(),M(t=>Math.min(4,Math.max(.2,Math.round((t-.1*Math.sign(e.deltaY))*100)/100))))},children:(0,r.jsx)(O,{structure:l.structure,endpoint:W,zoom:w,viewportRef:F},l.identity.snapshotId)})},{key:"chunks",label:"实际切片重组",children:(0,r.jsxs)(v.A,{className:"rounded-2xl border-[var(--borderColor)]",children:[(0,r.jsxs)("p",{className:"text-xs text-[var(--colorTextSecondary)]",children:["当前展示切片 ",l.offset+1," 至 ",l.offset+l.chunks.length,",共 ",l.totalChunks," 块;分页不代表其余内容不存在。"]}),l.chunks.map(e=>(0,r.jsxs)("div",{className:"my-4",children:[(0,r.jsxs)(i.A,{size:4,wrap:!0,children:[(0,r.jsxs)(g.A,{children:["切片 ",e.chunkIndex]}),e.sectionTitle?(0,r.jsx)(g.A,{color:"cyan",children:e.sectionTitle}):null]}),(0,r.jsx)("div",{className:"mt-2",children:(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:e.content})})}),(0,r.jsxs)("details",{className:"mt-2",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextTertiary)]",children:"库内解析底稿区间"}),(0,r.jsx)(T,{maxHeight:240,children:(0,r.jsx)("pre",{style:A,children:JSON.stringify(e.sourceSpans,null,2)})})]})]},e.id)),(0,r.jsx)("div",{className:"mt-3 flex justify-end",children:(0,r.jsx)(m.A,{current:Math.floor(l.offset/30)+1,pageSize:30,total:l.totalChunks,showSizeChanger:!1,onChange:e=>{B("".concat(W,"&offset=").concat((e-1)*30))}})})]})}]})]}):u?(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)(b.A,{active:!0,title:!1,paragraph:{rows:3}}),(0,r.jsx)(b.A,{active:!0,title:!1,paragraph:{rows:6}})]}):(0,r.jsx)(j.A,{description:"选择文件后查看解析结果"})})]})}},59528:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/knowledge/source-preview",function(){return s(2232)}])},85979:(e,t,s)=>{"use strict";s.d(t,{k:()=>c});var r=s(65321),a=s(43220),l=s.n(a),n=s(91648);function c(e){let{backHref:t,backLabel:s,title:a,description:c,extra:i}=e;return(0,r.jsx)("div",{className:"mb-6 bg-[var(--colorBgContainer)] rounded-2xl overflow-hidden border border-[var(--borderColor)] p-6",children:(0,r.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end justify-between gap-4 md:gap-6",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,r.jsxs)(l(),{href:t,prefetch:!1,className:"detailBack",children:[(0,r.jsx)(n.A,{size:16,strokeWidth:2,"aria-hidden":!0}),(0,r.jsx)("span",{children:s})]}),(0,r.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,r.jsx)("h1",{className:"text-2xl font-bold text-[var(--colorText)] m-0 truncate",children:a}),c?(0,r.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)] m-0 break-all",children:c}):null]})]}),i?(0,r.jsx)("div",{className:"shrink-0 flex items-center gap-2",children:i}):null]})})}}},e=>{e.O(0,[6409,1702,5544,9551,4665,1499,8569,8787,5046,8318,7955,636,6593,8792],()=>e(e.s=59528)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[95],{2232:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>P});var r=s(65321),a=s(97109),l=s(1873),n=s.n(l),c=s(86109),i=s(33442),o=s(14932),d=s(85114),x=s(85493),h=s(48318),m=s(75174),u=s(57271),p=s(42700),j=s(84253),v=s(68787),g=s(11702),f=s(76506),y=s(58569),b=s(88762),N=s(99271),w=s(37510),C=s(99811),k=s(6578),S=s(85979);let A={whiteSpace:"pre-wrap",overflowWrap:"anywhere",margin:0,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5,lineHeight:1.75};function T(e){let{children:t,maxHeight:s=520}=e;return(0,r.jsx)("div",{className:"rounded-xl border border-[var(--borderColor)] bg-[var(--colorFillAlter)] px-3 py-2.5",style:{maxHeight:s,overflow:"auto"},children:t})}function z(e){let{zoom:t,onChange:s,viewportRef:a}=e,l=e=>Math.min(4,Math.max(.2,Math.round(100*e)/100));return(0,r.jsxs)(i.A,{size:4,align:"center",children:[(0,r.jsx)(o.A,{title:"缩小(Ctrl/⌘ + 滚轮同效)",children:(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(N.A,{}),"aria-label":"缩小",onClick:()=>s(l(t-.1))})}),(0,r.jsxs)("span",{className:"text-xs tabular-nums text-[var(--colorTextSecondary)] w-12 text-center",children:[Math.round(100*t),"%"]}),(0,r.jsx)(o.A,{title:"放大(Ctrl/⌘ + 滚轮同效)",children:(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(w.A,{}),"aria-label":"放大",onClick:()=>s(l(t+.1))})}),(0,r.jsx)(d.Ay,{size:"small",onClick:()=>{let e=a.current,r=null==e?void 0:e.firstElementChild;if(!e||!r)return;let n=r.clientWidth/t;n&&s(l((e.clientWidth-2)/n))},children:"适应宽度"}),(0,r.jsx)(d.Ay,{size:"small",disabled:1===t,onClick:()=>s(1),children:"原始比例"})]})}function M(e){let{zoom:t,viewportRef:s,children:a}=e;return(0,r.jsx)("div",{ref:s,className:"rounded-xl border border-[var(--borderColor)] bg-[var(--colorBgContainer)] p-3 overflow-auto",style:{maxHeight:"68vh"},children:1===t?a:(0,r.jsx)("div",{style:{zoom:t},children:a})})}function R(e){var t,s,a;let{block:l,parts:n}=e;if("undefined"==typeof DOMParser)return(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:l.text})});let c=null!=(a=null==(t=/<[^!?][^>]*?\s([^>]*)>/u.exec(null!=(s=n[l.part])?s:""))?void 0:t[1])?a:'xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"',i=new DOMParser().parseFromString("<root ".concat(c,">").concat(l.xml,"</root>"),"application/xml"),o=i.documentElement.firstElementChild;if(!o||i.querySelector("parsererror"))return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x.A,{type:"warning",message:"表格XML显示未完成,保留原文及结构供核查"}),(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:l.text})})]});let d=[...o.children].filter(e=>"tr"===e.localName).map(e=>{let t=0;return[...e.children].filter(e=>"tc"===e.localName).map(e=>{var s,r,a;let l=Number(null!=(r=null==(s=e.getElementsByTagName("w:gridSpan")[0])?void 0:s.getAttribute("w:val"))?r:1),n=e.getElementsByTagName("w:vMerge")[0],c={column:t,span:l,merge:n?null!=(a=n.getAttribute("w:val"))?a:"continue":void 0,text:[...e.getElementsByTagName("w:t")].map(e=>{var t;return null!=(t=e.textContent)?t:""}).join("")};return t+=l,c})});return(0,r.jsx)("table",{className:"w-full border-collapse my-3 text-sm",children:(0,r.jsx)("tbody",{children:d.map((e,t)=>(0,r.jsx)("tr",{className:"even:bg-[var(--colorFillAlter)]",children:e.filter(e=>"continue"!==e.merge).map(e=>{var s,a;let l=1;if("restart"===e.merge)for(;(null==(a=d[t+l])||null==(s=a.find(t=>t.column===e.column))?void 0:s.merge)==="continue";)l++;return(0,r.jsx)("td",{className:"border border-[var(--borderColor)] p-2 align-top whitespace-pre-wrap",colSpan:e.span,rowSpan:l,children:e.text},e.column)})},t))})})}function I(e){let{sheet:t,zoom:s,viewportRef:l}=e,[n,c]=(0,a.useState)(1),[i,o]=(0,a.useState)(1),d=t.cells.reduce((e,t)=>Math.max(e,t.row),t.merges.reduce((e,t)=>Math.max(e,t.endRow),1)),x=t.cells.reduce((e,t)=>Math.max(e,t.col),t.merges.reduce((e,t)=>Math.max(e,t.endCol),1)),u=(0,a.useMemo)(()=>new Map(t.cells.map(e=>["".concat(e.row,":").concat(e.col),e])),[t]),p=(n-1)*50+1,j=Math.min(d,p+49),v=Math.min(x,i+19);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3 mb-3 text-xs text-[var(--colorTextSecondary)]",children:[(0,r.jsx)("span",{children:"原工作表物理坐标;公式使用已保存缓存值"}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-2",children:["起始列 ",(0,r.jsx)(h.A,{size:"small",min:1,max:x,value:i,onChange:e=>o(null!=e?e:1)})]})]}),(0,r.jsx)(M,{zoom:s,viewportRef:l,children:(0,r.jsxs)("table",{className:"border-collapse text-xs",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{className:"border border-[var(--borderColor)] bg-[var(--colorFillSecondary)] px-2 py-1 sticky top-0 left-0 z-[2]",children:"行"}),Array.from({length:v-i+1},(e,t)=>(0,r.jsxs)("th",{className:"border border-[var(--borderColor)] bg-[var(--colorFillSecondary)] px-2 py-1 sticky top-0 z-[1] min-w-24",children:["C",i+t]},t))]})}),(0,r.jsx)("tbody",{children:Array.from({length:j-p+1},(e,s)=>{let a=p+s;return(0,r.jsxs)("tr",{className:"even:bg-[var(--colorFillAlter)]",children:[(0,r.jsxs)("th",{className:"border border-[var(--borderColor)] bg-[var(--colorFillSecondary)] px-2 py-1 text-[var(--colorTextSecondary)] sticky left-0 z-[1]",children:["R",a]}),Array.from({length:v-i+1},(e,s)=>{var l,n,c;let o=i+s,d=u.get("".concat(a,":").concat(o)),x=t.merges.find(e=>a>=e.startRow&&a<=e.endRow&&o>=e.startCol&&o<=e.endCol);if(x&&(a!==Math.max(p,x.startRow)||o!==Math.max(i,x.startCol)))return null;let h=x?u.get("".concat(x.startRow,":").concat(x.startCol)):d,m=null!=(l=null==h?void 0:h.display)?l:"";return(0,r.jsxs)("td",{className:"border border-[var(--borderColor)] px-2 py-1 whitespace-pre-wrap align-top ".concat("number"==typeof m||"string"==typeof m&&/^-?[\d,]+(\.\d+)?$/u.test(m.trim())?"text-right tabular-nums":""," ").concat(""===m?"bg-[var(--colorFillQuaternary)]":""),rowSpan:x?Math.min(j,x.endRow)-Math.max(p,x.startRow)+1:1,colSpan:x?Math.min(v,x.endCol)-Math.max(i,x.startCol)+1:1,title:"".concat(null!=(n=null==h?void 0:h.address)?n:"R".concat(a,"C").concat(o),"\n原值: ").concat(String(null!=(c=null==h?void 0:h.value)?c:"")).concat((null==h?void 0:h.formula)?"\n公式: =".concat(h.formula):""),children:[m,(null==h?void 0:h.formula)&&(0,r.jsxs)("div",{className:"text-[10px] text-[var(--colorTextTertiary)]",children:["=",h.formula]})]},o)})]},a)})})]})}),(0,r.jsx)("div",{className:"mt-3 flex justify-end",children:(0,r.jsx)(m.A,{size:"small",current:n,pageSize:50,total:d,showSizeChanger:!1,onChange:c})})]})}function F(e){let{frameIds:t,endpoint:s,zoom:l,viewportRef:c}=e,[i,o]=(0,a.useState)(0),[d,h]=(0,a.useState)(""),[m,v]=(0,a.useState)(),[g,f]=(0,a.useState)(""),[y,b]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=!0;h(""),f(""),v(void 0);let r=t[i];if(r)return b(!0),(0,k.x6)("".concat(s,"&frame=").concat(encodeURIComponent(r),"&format=json")).then(t=>{e&&(h(t.image),v(t.receipt))}).catch(t=>{e&&f(String(t))}).finally(()=>{e&&b(!1)}),()=>{e=!1}},[i,t,s]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center gap-3",children:[(0,r.jsx)(u.A,{size:"small",className:"min-w-64",value:i,onChange:o,options:t.map((e,t)=>({value:t,label:e}))}),(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:"显示实际库内实体与块实例;绘制限制不等同数据丢失。"})]}),(0,r.jsxs)(p.A,{spinning:y,children:[g&&(0,r.jsx)(x.A,{type:"warning",message:"图框显示未完成",description:"".concat(g,";请区分已入库结构和绘制能力,已有库内文字仍可读取。")}),d?(0,r.jsx)(M,{zoom:l,viewportRef:c,children:(0,r.jsx)("div",{className:"bg-white inline-block p-2",children:(0,r.jsx)(n(),{unoptimized:!0,width:2400,height:1800,src:d,alt:"已解析CAD图框",style:{width:"100%",height:"auto",display:"block"}})})}):!y&&!g&&(0,r.jsx)(j.A,{description:"尚未识别到可显示图框"}),void 0!==m&&(0,r.jsxs)("details",{className:"mt-3",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextSecondary)]",children:"本次绘制回执与限制"}),(0,r.jsx)(T,{maxHeight:260,children:(0,r.jsx)("pre",{style:A,children:JSON.stringify(m,null,2)})})]})]})]})}function O(e){let{structure:t,endpoint:s,zoom:l,viewportRef:c}=e,[i,o]=(0,a.useState)(0);if(t.spreadsheet){let e=t.spreadsheet.sheets;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsx)(u.A,{size:"small",className:"min-w-64",value:i,options:e.map((e,t)=>({value:t,label:e.name})),onChange:o})}),e[i]&&(0,r.jsx)(I,{sheet:e[i],zoom:l,viewportRef:c},i)]})}if(t.docx)return(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(M,{zoom:l,viewportRef:c,children:(0,r.jsxs)("div",{className:"mx-auto",style:{maxWidth:860},children:[t.docx.blocks.map(e=>(0,r.jsxs)("div",{id:e.id,className:"mb-4",children:[(0,r.jsxs)("div",{className:"mb-1 text-[10px] text-[var(--colorTextTertiary)]",children:[e.part," \xb7 第 ",e.index+1," 块"]}),"table"===e.kind?(0,r.jsx)(R,{block:e,parts:t.docx.parts}):(0,r.jsx)("p",{className:e.headingLevel?"font-semibold text-lg whitespace-pre-wrap mt-2":"whitespace-pre-wrap leading-8 text-sm",children:e.text}),(0,r.jsxs)("details",{children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextTertiary)]",children:"来源 XML"}),(0,r.jsx)(T,{maxHeight:260,children:(0,r.jsx)("pre",{style:A,children:e.xml})})]})]},e.id)),t.docx.images.map(e=>(0,r.jsxs)("div",{className:"mb-4",children:[(0,r.jsx)("div",{className:"mb-1 text-xs text-[var(--colorTextSecondary)]",children:e.name}),/^image\/(?:png|jpeg|gif|webp|svg\+xml|bmp)$/u.test(e.mediaType)?(0,r.jsx)(n(),{unoptimized:!0,width:1200,height:900,src:"".concat(s,"&image=").concat(encodeURIComponent(e.name)),alt:e.name,style:{maxWidth:"100%",height:"auto"}}):(0,r.jsx)(x.A,{type:"info",message:"已保留".concat(e.mediaType,"图片数据,浏览器未声明支持显示")})]},e.name))]})})});if(t.pdf){var d,h,p,v;let e=t.pdf.pages,s=e[i],a=null!=(h=null!=(d=null==s?void 0:s.width)?d:null==s?void 0:s.glyphs.reduce((e,t)=>Math.max(e,t.x+t.width+20),600))?h:600,n=null!=(v=null!=(p=null==s?void 0:s.height)?p:null==s?void 0:s.glyphs.reduce((e,t)=>Math.max(e,t.y+t.height+20),800))?v:800;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"mb-3 flex flex-wrap items-center justify-between gap-3",children:[(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:"显示库内已保存文字与位置;可选原版本对照不影响本页及后续生成。"}),(0,r.jsx)(m.A,{size:"small",current:i+1,pageSize:1,total:e.length,showSizeChanger:!1,onChange:e=>o(e-1)})]}),s&&(0,r.jsxs)(M,{zoom:l,viewportRef:c,children:[(0,r.jsx)("div",{className:"mx-auto bg-white shadow-sm border border-[var(--borderColor)]",style:{width:a},children:(0,r.jsx)("svg",{viewBox:"0 0 ".concat(a," ").concat(n),width:"100%",role:"img","aria-label":"解析第".concat(s.page,"页"),children:s.glyphs.map(e=>(0,r.jsx)("text",{x:e.x,y:n-e.y,fontSize:Math.max(6,e.height),children:e.str},e.id))})}),s.ocrText&&(0,r.jsxs)("div",{className:"mt-3",children:[(0,r.jsx)("div",{className:"mb-1 text-xs text-[var(--colorTextSecondary)]",children:"该页 OCR 文本"}),(0,r.jsx)(T,{maxHeight:260,children:(0,r.jsx)("pre",{style:A,children:s.ocrText})})]}),!s.glyphs.length&&!s.ocrText&&(0,r.jsx)(j.A,{description:"该页没有可展示文字,不能据此断言原页为空"})]})]})}return t.cad?(0,r.jsx)(F,{frameIds:t.cad.frameIds,endpoint:s,zoom:l,viewportRef:c}):(0,r.jsx)(j.A,{description:"此解析结果尚无结构显示适配,完整解析文字仍可查看"})}function E(e){let{data:t}=e,s=t.conservation,a=[{key:"chars",label:"文本覆盖",value:"".concat(s.coveredNonWhitespaceChars," / ").concat(s.sourceNonWhitespaceChars," 个非空白字符"),trouble:s.coveredNonWhitespaceChars!==s.sourceNonWhitespaceChars,...s.uncovered.length?{detail:(0,r.jsxs)(r.Fragment,{children:[s.uncovered.slice(0,5).map((e,t)=>(0,r.jsxs)("div",{className:"mb-1",children:["字符 ",e.start,"–",e.end,":",e.text.slice(0,120)]},t)),s.uncovered.length>5?(0,r.jsxs)("div",{children:["…还有 ",s.uncovered.length-5," 段"]}):null]})}:{}},{key:"chunks",label:"切片数",value:"".concat(t.totalChunks," 块(库内登记 ").concat(s.registeredChunkCount,",与底稿一致:").concat(s.chunkCountMatches?"是":"否",")"),trouble:!s.chunkCountMatches},{key:"stale",label:"身份过期的切片",value:s.staleChunkIdentities.length?"".concat(s.staleChunkIdentities.length," 块"):"无",trouble:s.staleChunkIdentities.length>0,...s.staleChunkIdentities.length?{detail:(0,r.jsxs)("div",{children:["切片序号:",s.staleChunkIdentities.slice(0,20).join(", "),s.staleChunkIdentities.length>20?" …":""]})}:{}},{key:"unmapped",label:"未能映射回底稿的切片",value:s.unmapped.length?"".concat(s.unmapped.length," 块"):"无",trouble:s.unmapped.length>0,...s.unmapped.length?{detail:(0,r.jsxs)(r.Fragment,{children:[s.unmapped.slice(0,5).map(e=>(0,r.jsxs)("div",{className:"mb-1",children:["切片 ",e.chunkIndex,":",e.text.slice(0,120)]},e.chunkIndex)),s.unmapped.length>5?(0,r.jsxs)("div",{children:["…还有 ",s.unmapped.length-5," 块"]}):null]})}:{}},{key:"order",label:"切片顺序",value:s.outOfOrderChunks.length?"乱序 ".concat(s.outOfOrderChunks.length," 块"):"与底稿一致",trouble:s.outOfOrderChunks.length>0,...s.outOfOrderChunks.length?{detail:(0,r.jsxs)("div",{children:["切片序号:",s.outOfOrderChunks.slice(0,20).join(", ")]})}:{}},{key:"repeated",label:"重复上下文跨度",value:"".concat(s.repeatedContextSpans," 处"),trouble:!1}];return(0,r.jsx)("div",{className:"flex flex-col",children:a.map(e=>(0,r.jsxs)("div",{className:"flex flex-col sm:flex-row gap-1 sm:gap-3 py-2 border-b border-[var(--colorBorderSecondary)] last:border-0",children:[(0,r.jsx)("div",{className:"sm:w-44 shrink-0 text-xs text-[var(--colorTextTertiary)] sm:pt-0.5",children:e.label}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 text-sm",children:[(0,r.jsx)("span",{className:e.trouble?"text-[var(--colorError)]":"text-[var(--colorText)]",children:e.value}),e.detail&&(0,r.jsxs)("details",{className:"mt-1",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextSecondary)]",children:"展开明细"}),(0,r.jsx)(T,{maxHeight:220,children:(0,r.jsx)("div",{className:"text-xs text-[var(--colorTextSecondary)]",children:e.detail})})]})]})]},e.key))})}function P(){let e=(0,c.useRouter)(),t="string"==typeof e.query.relativePath?e.query.relativePath:"",s="string"==typeof e.query.projectRoot?e.query.projectRoot:"",[l,n]=(0,a.useState)(),[o,h]=(0,a.useState)(""),[u,N]=(0,a.useState)(!1),[w,M]=(0,a.useState)(1),[R,I]=(0,a.useState)("structure"),F=(0,a.useRef)(null),P=(0,a.useRef)(0),_=new URLSearchParams({relativePath:t,...s?{projectRoot:s}:{}}),H="/api/kb/files/source-preview?".concat(_),W="".concat(H).concat((null==l?void 0:l.status)==="recorded"?"&snapshotId=".concat(l.identity.snapshotId):""),B=(0,a.useCallback)(async e=>{let t=++P.current;N(!0),h("");try{let s=await (0,k.x6)(e);t===P.current&&n(s)}catch(e){t===P.current&&h(e instanceof Error?e.message:String(e))}finally{t===P.current&&N(!1)}},[]);(0,a.useEffect)(()=>{n(void 0),t&&B(H)},[t,H,B]);let D=null==l?void 0:l.pdfCoverage,q=D&&"complete"!==D.status?(0,r.jsx)(x.A,{showIcon:!0,type:"warning",message:"unmeasured"===D.status?"PDF 页覆盖未记录":"PDF 页覆盖不完整",description:(0,r.jsxs)(i.A,{direction:"vertical",size:2,children:[D.pageCount?(0,r.jsx)("span",{children:"已处理页:".concat(D.processedPages,"/").concat(D.pageCount)}):(0,r.jsx)("span",{children:'没有记录到声明页数,无法据此断言"处理了几页"。'}),D.missingPages.length>0&&(0,r.jsx)("span",{children:"缺少页:".concat(D.missingPages.join(", "))}),D.failedPages.length>0&&(0,r.jsx)("span",{children:"失败页:".concat(D.failedPages.join(", "))}),(0,r.jsx)("span",{children:"这条读数只说明解析侧处理了哪些页,不证明内容、版式或专业采用正确。"})]})}):null;return(0,r.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,r.jsx)(S.k,{backHref:"/knowledge/file-detail?".concat(_),backLabel:"返回切片详情",title:"解析核查预览",description:t,extra:(0,r.jsxs)(i.A,{wrap:!0,children:["structure"===R&&(0,r.jsx)(z,{zoom:w,onChange:M,viewportRef:F}),(0,r.jsx)(d.Ay,{size:"small",icon:(0,r.jsx)(C.A,{}),onClick:()=>{B(H)},loading:u,children:"刷新"})]})}),o&&(0,r.jsx)(x.A,{type:"error",message:o}),(0,r.jsx)(p.A,{spinning:u,children:(null==l?void 0:l.status)==="not-recorded"?(0,r.jsxs)(v.A,{className:"rounded-2xl border-[var(--borderColor)]",children:[(0,r.jsx)(x.A,{type:"warning",message:"独立解析底稿尚未记录",description:l.reason}),q&&(0,r.jsx)("div",{className:"mt-3",children:q}),(0,r.jsx)(d.Ay,{className:"mt-4",onClick:()=>{(async()=>{try{await (0,k.HC)(t,s||void 0),h("重新解析任务已提交,请在处理完成后刷新本页。")}catch(e){h(String(e))}})()},children:"重新解析此文件"}),(0,r.jsx)("p",{className:"mt-4 mb-2 text-sm text-[var(--colorTextSecondary)]",children:"当前实际库内切片(不是独立底稿):"}),l.chunks.map(e=>(0,r.jsxs)("div",{className:"my-3",children:[(0,r.jsxs)(g.A,{children:["切片 ",e.chunkIndex]}),(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:e.content})})]},e.id)),(0,r.jsx)("div",{className:"mt-3 flex justify-end",children:(0,r.jsx)(m.A,{current:Math.floor(l.offset/30)+1,pageSize:30,total:l.totalChunks,showSizeChanger:!1,onChange:e=>{B("".concat(H,"&offset=").concat((e-1)*30))}})})]}):(null==l?void 0:l.status)==="recorded"?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(v.A,{className:"rounded-2xl border-[var(--borderColor)] mb-5",children:[(0,r.jsx)(E,{data:l}),(0,r.jsx)("p",{className:"mt-3 mb-0 text-xs text-[var(--colorTextSecondary)]",children:"这项检查只证明独立解析文字与切片的内容覆盖,不证明原文件解析、版式、工程理解或专业采用全部正确。"}),q&&(0,r.jsx)("div",{className:"mt-3",children:q}),l.identity.limitations.map(e=>(0,r.jsx)("p",{className:"mt-2 mb-0 text-xs text-[var(--colorTextSecondary)]",children:e},e)),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[(0,r.jsx)(d.Ay,{size:"small",href:"".concat(W,"&original=1"),target:"_blank",children:"查看/下载入库原版本"}),(0,r.jsx)(d.Ay,{size:"small",onClick:()=>{(0,k.tn)(t,"source-version",s||void 0).catch(e=>h("可选原版本对照不可用:".concat(String(e),";库内数据仍可读取")))},children:"本机打开入库原版本"})]}),(0,r.jsxs)("details",{className:"mt-4",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextSecondary)]",children:"技术详情(原文件哈希 / 解析版本 / 解析身份 / 核查口径)"}),(0,r.jsx)("div",{className:"mt-3",children:(0,r.jsxs)(f.A,{size:"small",column:1,bordered:!0,styles:{label:{width:"120px",background:"var(--colorFillAlter)",color:"var(--colorTextSecondary)"}},children:[(0,r.jsx)(f.A.Item,{label:"原文件SHA256",children:(0,r.jsx)("span",{className:"break-all text-xs",children:l.identity.sourceHash})}),(0,r.jsx)(f.A.Item,{label:"解析版本",children:(0,r.jsx)("span",{className:"text-xs",children:l.identity.parserVersion})}),(0,r.jsx)(f.A.Item,{label:"解析身份",children:(0,r.jsx)("span",{className:"break-all text-xs",children:l.identity.snapshotId})}),(0,r.jsx)(f.A.Item,{label:"核查口径",children:(0,r.jsxs)("span",{className:"text-xs",children:[l.conservation.version," \xb7 ",l.conservation.scope," \xb7 入库状态 ",l.conservation.ingestionStatus]})}),(0,r.jsx)(f.A.Item,{label:"底稿快照",children:(0,r.jsx)("span",{className:"break-all text-xs",children:l.conservation.snapshotId})})]})})]})]}),(0,r.jsx)(y.A,{className:"documents-tabs",activeKey:R,onChange:I,items:[{key:"structure",label:"解析结构",children:(0,r.jsx)(v.A,{className:"rounded-2xl border-[var(--borderColor)]",onWheelCapture:e=>{(e.ctrlKey||e.metaKey)&&(e.preventDefault(),M(t=>Math.min(4,Math.max(.2,Math.round((t-.1*Math.sign(e.deltaY))*100)/100))))},children:(0,r.jsx)(O,{structure:l.structure,endpoint:W,zoom:w,viewportRef:F},l.identity.snapshotId)})},{key:"chunks",label:"实际切片重组",children:(0,r.jsxs)(v.A,{className:"rounded-2xl border-[var(--borderColor)]",children:[(0,r.jsxs)("p",{className:"text-xs text-[var(--colorTextSecondary)]",children:["当前展示切片 ",l.offset+1," 至 ",l.offset+l.chunks.length,",共 ",l.totalChunks," 块;分页不代表其余内容不存在。"]}),l.chunks.map(e=>(0,r.jsxs)("div",{className:"my-4",children:[(0,r.jsxs)(i.A,{size:4,wrap:!0,children:[(0,r.jsxs)(g.A,{children:["切片 ",e.chunkIndex]}),e.sectionTitle?(0,r.jsx)(g.A,{color:"cyan",children:e.sectionTitle}):null]}),(0,r.jsx)("div",{className:"mt-2",children:(0,r.jsx)(T,{children:(0,r.jsx)("pre",{style:A,children:e.content})})}),(0,r.jsxs)("details",{className:"mt-2",children:[(0,r.jsx)("summary",{className:"text-xs cursor-pointer text-[var(--colorTextTertiary)]",children:"库内解析底稿区间"}),(0,r.jsx)(T,{maxHeight:240,children:(0,r.jsx)("pre",{style:A,children:JSON.stringify(e.sourceSpans,null,2)})})]})]},e.id)),(0,r.jsx)("div",{className:"mt-3 flex justify-end",children:(0,r.jsx)(m.A,{current:Math.floor(l.offset/30)+1,pageSize:30,total:l.totalChunks,showSizeChanger:!1,onChange:e=>{B("".concat(W,"&offset=").concat((e-1)*30))}})})]})}]})]}):u?(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)(b.A,{active:!0,title:!1,paragraph:{rows:3}}),(0,r.jsx)(b.A,{active:!0,title:!1,paragraph:{rows:6}})]}):(0,r.jsx)(j.A,{description:"选择文件后查看解析结果"})})]})}},59528:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/knowledge/source-preview",function(){return s(2232)}])},85979:(e,t,s)=>{"use strict";s.d(t,{k:()=>c});var r=s(65321),a=s(43220),l=s.n(a),n=s(91648);function c(e){let{backHref:t,backLabel:s,title:a,description:c,extra:i}=e;return(0,r.jsx)("div",{className:"mb-6 bg-[var(--colorBgContainer)] rounded-2xl overflow-hidden border border-[var(--borderColor)] p-6",children:(0,r.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end justify-between gap-4 md:gap-6",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,r.jsxs)(l(),{href:t,prefetch:!1,className:"detailBack",children:[(0,r.jsx)(n.A,{size:16,strokeWidth:2,"aria-hidden":!0}),(0,r.jsx)("span",{children:s})]}),(0,r.jsxs)("div",{className:"min-w-0 space-y-1",children:[(0,r.jsx)("h1",{className:"text-2xl font-bold text-[var(--colorText)] m-0 truncate",children:a}),c?(0,r.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)] m-0 break-all",children:c}):null]})]}),i?(0,r.jsx)("div",{className:"shrink-0 flex items-center gap-2",children:i}):null]})})}}},e=>{e.O(0,[6409,1702,5544,9551,4665,1499,8569,8787,6506,8318,1141,636,6593,8792],()=>e(e.s=59528)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4046],{22708:(e,a,l)=>{"use strict";l.r(a),l.d(a,{default:()=>R});var s=l(65321),r=l(97109),o=l(39507),t=l(93360),n=l(17807),i=l(88762),d=l(85493),c=l(85114),m=l(25258),x=l(56985),p=l(84253),h=l(88278),v=l(33442),u=l(32965),g=l(11702),b=l(57271),j=l(7576),y=l(48318),f=l(34052),A=l(63455),N=l(44534),w=l(8383),C=l(54746),k=l(29071),S=l(59188),T=l(4216),B=l(13114),E=l(99650),P=l(58209),I=l(76981),K=l(61825),U=l(6578),H=l(85310),_=l(82238);let z=[{labelKey:"models.openAICompatible",value:"openai"},{labelKey:"models.anthropic",value:"anthropic"},{labelKey:"models.google",value:"google"},{labelKey:"models.ollama",value:"ollama"},{labelKey:"models.openRouter",value:"openrouter"}],D=[{key:"imageGeneration",labelKey:"models.imageGeneration"},{key:"imageUnderstanding",labelKey:"models.imageUnderstanding"},{key:"fileUnderstanding",labelKey:"models.fileUnderstanding"},{key:"audio",labelKey:"models.audioCapability"},{key:"video",labelKey:"models.videoCapability"}],F="••••••••",O=e=>e.includes("•");function R(){let e=(0,o.Vr)(),{message:a}=n.A.useApp(),[l,R]=(0,r.useState)(!0),[Z,G]=(0,r.useState)([]),[L,X]=(0,r.useState)(null),[q,M]=(0,r.useState)(!1),[V,J]=(0,r.useState)(null),[Q,W]=(0,r.useState)(!1),[Y,$]=(0,r.useState)(!1),[ee,ea]=(0,r.useState)(null),[el,es]=(0,r.useState)(null),[er,eo]=(0,r.useState)({}),[et,en]=(0,r.useState)(!1),[ei,ed]=(0,r.useState)(!1),[ec,em]=(0,r.useState)(""),[ex,ep]=(0,r.useState)(""),[eh,ev]=(0,r.useState)(""),[eu,eg]=(0,r.useState)(""),[eb,ej]=(0,r.useState)(""),[ey,ef]=(0,r.useState)("openai"),[eA,eN]=(0,r.useState)(!1),[ew,eC]=(0,r.useState)({}),[ek,eS]=(0,r.useState)(!1),[eT,eB]=(0,r.useState)(!1),[eE,eP]=(0,r.useState)(!1),[eI,eK]=(0,r.useState)(!0),[eU,eH]=(0,r.useState)(!1),[e_,ez]=(0,r.useState)([]),eD=async()=>{R(!0);try{let e=[],a=(a,l,s)=>l.catch(()=>(e.push(a),s)),[l,s,r]=await Promise.all([a("模型供应商",(0,U.Z3)(),null),a("生成模型",(0,U.zr)(),null),a("嵌入配置",(0,U.II)(),null)]);ez(e),l&&G(l),s&&X(s),r&&J(r)}catch(l){a.error(e("common.error"))}finally{R(!1)}};(0,r.useEffect)(()=>{eD()},[]);let eF=async()=>{eH(!0);try{let l=await (0,U.jU)(eI?"all":"models");eP(!1),eK(!1),a.success(e("models.resetConfigDone")),l.backupPath&&a.info(e("models.resetConfigBackup").replace("{path}",l.backupPath),8),"models"===l.mode&&a.info(e("models.resetConfigKeptProviders"),8),await eD()}catch(l){a.error(l instanceof Error?l.message:e("models.resetConfigFailed"))}finally{eH(!1)}},eO=e_.includes("模型供应商"),eR=e_.includes("生成模型"),eZ=async e=>{var a,l,s,r;ed(!0),em(e.name),ep(e.name),ev(null!=(s=null==L||null==(a=L.list.find(a=>a.provider===e.name))?void 0:a.name)?s:e.name),eg(""),ej(e.baseUrl||""),eN(!0===e.directEndpoint),ef(e.protocol||e.detectedProtocol||"openai"),eC(e.capabilities||{}),eS(!!(null==(l=e.capabilities)?void 0:l.webSearch));try{let a=await (0,U.Bh)(e.name);eg(a.apiKey?F:""),ej(a.baseUrl||""),eC(a.capabilities||{}),eN(!0===a.directEndpoint),eS(!!(null==(r=a.capabilities)?void 0:r.webSearch))}catch(e){}en(!0)},eG=async()=>{if(ex.trim()){eB(!0);try{let l=ei&&O(eu)?void 0:eu||void 0,s={...ew,webSearch:ek};await (0,U._m)(ex.trim(),{modelName:eh.trim()||ex.trim(),oldName:ei?ec:void 0,apiKey:l,baseUrl:eb||void 0,protocol:ey,directEndpoint:eA,capabilities:s}),en(!1),await eD(),a.success(e("common.success"))}catch(l){a.error(e("common.error"))}finally{eB(!1)}}},eL=async l=>{try{await (0,U.h1)(l),await eD(),a.success(e("common.success"))}catch(l){a.error(e("common.error"))}},eX=async l=>{es(l);try{let s=await (0,U.bZ)(l);eo(e=>({...e,[l]:s.success}));let r=s.success?e("models.connected"):"".concat(e("models.connectionFailed")).concat(s.message?":".concat(s.message):"").concat(s.requestId?" (".concat(s.requestId,")"):"");a[s.success?"success":"error"](r)}catch(s){eo(e=>({...e,[l]:!1})),a.error(s instanceof Error?s.message:e("models.connectionFailed"))}finally{es(null)}},eq=async l=>{if(q)return!1;M(!0);try{let e=await (0,U.aP)(l);return X(e.models),!0}catch(l){return a.error(l instanceof Error?l.message:e("common.error")),!1}finally{M(!1)}},eM=async l=>{if(!L)return;let s=L.list.find(e=>e.provider===l),r=null!=s?s:{provider:l,name:l};await eq({active:{provider:r.provider,name:r.name},list:s?L.list:[...L.list,r]})&&!s&&a.info(e("models.modelIdentifierDefaulted").replace("{name}",l),8)},eV=async()=>{if(V){W(!0);try{let l=await (0,U.dd)(V);J(l),ea(null),a.success(e("common.success"))}catch(l){a.error(e("common.error"))}finally{W(!1)}}},eJ=async()=>{$(!0);try{let l=await (0,U.u6)();ea(l.success),a[l.success?"success":"error"](l.message||(l.success?e("models.connected"):e("models.connectionFailed")))}catch(e){ea(!1)}finally{$(!1)}};return l?(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsx)(i.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,s.jsx)("div",{className:"p-4 bg-[var(--colorBgHover)] rounded-xl border border-[var(--borderColor)]",children:(0,s.jsx)(i.A,{active:!0,paragraph:{rows:6}})}),(0,s.jsx)("div",{className:"p-4 bg-[var(--colorBgHover)] rounded-xl border border-[var(--borderColor)]",children:(0,s.jsx)(i.A,{active:!0,paragraph:{rows:4}})}),(0,s.jsx)("div",{className:"p-4 bg-[var(--colorBgHover)] rounded-xl border border-[var(--borderColor)]",children:(0,s.jsx)(i.A,{active:!0,paragraph:{rows:3}})})]}):(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsx)(_.X,{failures:e_}),e_.length>0&&(0,s.jsx)(d.A,{type:"error",showIcon:!0,message:e("models.configBrokenTitle"),description:(0,s.jsxs)("div",{className:"text-xs",children:[(0,s.jsx)("div",{children:e("models.configBrokenBody")}),(0,s.jsx)(c.Ay,{className:"mt-2",size:"small",danger:!0,icon:(0,s.jsx)(w.A,{}),onClick:()=>eP(!0),children:e("models.resetConfig")})]})}),(0,s.jsx)(t.z,{title:e("models.title"),description:e("models.description"),extra:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(c.Ay,{danger:!0,icon:(0,s.jsx)(w.A,{}),onClick:()=>eP(!0),children:e("models.resetConfig")}),(0,s.jsx)(c.Ay,{type:"primary",icon:(0,s.jsx)(C.A,{}),onClick:()=>{ed(!1),em(""),ep(""),ev(""),eg(""),ej(""),ef("openai"),eN(!1),eC({}),eS(!1),en(!0)},children:e("models.addProvider")})]})}),(0,s.jsx)(m.A,{open:eE,title:e("models.resetConfigTitle"),okText:e("models.resetConfig"),cancelText:e("common.cancel"),okButtonProps:{danger:!0,loading:eU},onOk:()=>void eF(),onCancel:()=>{eP(!1),eK(!0)},children:(0,s.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,s.jsx)("div",{children:e("models.resetConfigBody")}),(0,s.jsx)(x.A,{checked:eI,onChange:e=>eK(e.target.checked),children:e("models.resetConfigIncludeAll")}),(0,s.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)]",children:e("models.resetConfigBackupNote")})]})}),(0,s.jsx)(H.Zk,{title:e("models.modelList"),count:eO?void 0:Z.length,description:e("models.modelListDesc"),children:eO?(0,s.jsx)("div",{className:"py-10 rounded-xl border border-dashed border-[var(--borderColorStrong)] bg-[var(--colorBgHover)] text-center",children:(0,s.jsx)("span",{className:"text-sm text-[var(--colorTextTertiary)]",children:"—"})}):0===Z.length?(0,s.jsx)("div",{className:"py-10 rounded-xl border border-dashed border-[var(--borderColorStrong)] bg-[var(--colorBgHover)]",children:(0,s.jsx)(p.A,{image:p.A.PRESENTED_IMAGE_SIMPLE,description:(0,s.jsx)("span",{className:"text-[var(--colorTextTertiary)] text-sm",children:e("models.noProviders")})})}):(0,s.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5",children:Z.map(a=>{var l,r,o;let t=null==L?void 0:L.list.find(e=>e.provider===a.name),n=null!=(o=null==t?void 0:t.name)?o:a.name,i=(null==L||null==(l=L.active)?void 0:l.provider)===a.name&&L.active.name===n;return(0,s.jsxs)("div",{role:"group","aria-label":a.name,className:"group p-5 ".concat(H.wD," flex flex-col"),children:[(0,s.jsxs)("div",{className:"flex items-start justify-between gap-3 mb-4 min-w-0",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)(h.Ay,{name:"generation-model-service",checked:i,disabled:eR||!L||q,onChange:()=>{eM(a.name)},children:(0,s.jsx)("span",{className:"font-bold text-base text-[var(--colorText)]",children:a.name})}),n!==a.name&&(0,s.jsx)("div",{className:"text-xs text-[var(--colorTextSecondary)] mt-1 break-all",children:n}),(0,s.jsxs)("div",{className:"text-xs text-[var(--colorTextTertiary)] flex items-center gap-1 uppercase tracking-wider font-semibold",children:[(0,s.jsx)(k.A,{})," ",a.protocol||a.detectedProtocol||"openai"]})]}),(0,s.jsxs)(v.A,{size:0,className:"-mr-2 opacity-0 group-hover:opacity-100 focus-within:opacity-100 transition-opacity",children:[(0,s.jsx)(c.Ay,{type:"text",size:"small",loading:el===a.name,title:e("models.testConnection"),"aria-label":e("models.testConnection"),onClick:e=>{e.stopPropagation(),eX(a.name)},icon:!0===er[a.name]?(0,s.jsx)(S.A,{className:"text-[var(--colorOk)]"}):!1===er[a.name]?(0,s.jsx)(T.A,{className:"text-[var(--colorDanger)]"}):(0,s.jsx)(B.A,{className:"text-[var(--colorTextSecondary)]"})}),(0,s.jsx)(c.Ay,{type:"text",size:"small",title:e("common.edit"),icon:(0,s.jsx)(E.A,{className:"text-[var(--colorTextSecondary)]"}),onClick:e=>{e.stopPropagation(),eZ(a)}}),(0,s.jsx)(u.A,{title:e("models.deleteProviderConfirm"),onConfirm:e=>{null==e||e.stopPropagation(),eL(a.name)},onCancel:e=>null==e?void 0:e.stopPropagation(),children:(0,s.jsx)(c.Ay,{type:"text",size:"small",danger:!0,title:e("common.delete"),icon:(0,s.jsx)(P.A,{}),onClick:e=>e.stopPropagation()})})]})]}),(0,s.jsxs)("div",{className:"flex flex-col gap-3 mt-auto pt-4 border-t border-[var(--borderColor)]",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--colorTextSecondary)]",children:[(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)(I.A,{})," ",e("models.apiKey")]}),(0,s.jsx)("span",{className:"font-mono text-[var(--colorTextTertiary)]",children:a.hasApiKey?F:e("models.none")})]}),a.baseUrl&&(0,s.jsxs)("div",{className:"flex items-center justify-between text-xs text-[var(--colorTextSecondary)]",children:[(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)(K.A,{})," URL"]}),(0,s.jsx)("span",{className:"truncate max-w-[120px] font-mono text-[var(--colorTextTertiary)]",title:a.baseUrl,children:a.baseUrl.replace(/^https?:\/\//,"")})]}),(0,s.jsxs)("div",{className:"flex flex-wrap gap-1 mt-2",children:[D.filter(e=>{var l;return null==(l=a.capabilities)?void 0:l[e.key]}).map(a=>(0,s.jsx)(g.A,{color:"blue",bordered:!1,className:"m-0 text-[10px] bg-[var(--colorBrand)]/5 text-[var(--colorBrand)] leading-[18px]",children:e(a.labelKey)},a.key)),(null==(r=a.capabilities)?void 0:r.webSearch)&&(0,s.jsx)(g.A,{color:"green",bordered:!1,className:"m-0 text-[10px] leading-[18px]",children:e("models.webEnhancement")})]})]})]},a.name)})})}),(0,s.jsx)(H.Zk,{title:e("models.embeddingConfig"),description:e("models.embeddingConfigDesc"),extra:(0,s.jsxs)(v.A,{size:6,children:[V?(0,s.jsx)(g.A,{color:"blue",bordered:!1,className:"m-0",children:"transformers-local"===V.provider?e("models.localEmbedding"):e("models.openAICompatible")}):(0,s.jsx)(g.A,{bordered:!1,className:"m-0",children:"—"}),!0===ee&&(0,s.jsx)(g.A,{color:"success",bordered:!1,className:"m-0",icon:(0,s.jsx)(S.A,{}),children:e("models.connected")}),!1===ee&&(0,s.jsx)(g.A,{color:"error",bordered:!1,className:"m-0",icon:(0,s.jsx)(T.A,{}),children:e("models.connectionFailed")})]}),children:V?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(H.dh,{children:e("models.embeddingProvider")}),(0,s.jsx)(b.A,{value:V.provider,className:"w-full h-10",variant:"borderless",style:{background:"var(--colorBgHover)",borderRadius:"8px"},options:[{label:e("models.localRecommended"),value:"transformers-local"},{label:e("models.externalAdvanced"),value:"openai-compatible"}],onChange:e=>J(a=>a?{...a,provider:e,model:"transformers-local"===e?a.model||"BAAI/bge-small-zh-v1.5":a.model,dimensions:"transformers-local"===e?512:a.dimensions||1024}:a)})]}),"openai-compatible"===V.provider&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(H.dh,{children:e("models.baseUrl")}),(0,s.jsx)(j.A,{className:"h-10 px-4 bg-[var(--colorBgHover)]",value:V.baseUrl,onChange:e=>J(a=>a?{...a,baseUrl:e.target.value}:a),placeholder:"http://localhost:11434/v1"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)(H.dh,{children:e("models.model")}),(0,s.jsx)(j.A,{className:"h-10 px-4 bg-[var(--colorBgHover)]",value:V.model,onChange:e=>J(a=>a?{...a,model:e.target.value}:a),placeholder:"bge-m3"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)(H.dh,{children:e("models.apiKey")}),(0,s.jsx)(j.A.Password,{className:"h-10 px-4 bg-[var(--colorBgHover)]",value:V.apiKey,onFocus:()=>{V.apiKey&&O(V.apiKey)&&J(e=>e?{...e,apiKey:""}:e)},onChange:e=>J(a=>a?{...a,apiKey:e.target.value}:a),placeholder:e("models.optional")})]})]}),"transformers-local"===V.provider&&(0,s.jsxs)("div",{children:[(0,s.jsx)(H.dh,{children:e("models.model")}),(0,s.jsx)(j.A,{className:"h-10 px-4 bg-[var(--colorBgHover)]",disabled:!0,value:V.model,placeholder:"BAAI/bge-small-zh-v1.5"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)(H.dh,{children:e("models.dimensions")}),(0,s.jsx)(y.A,{className:"w-full h-10 px-2 bg-[var(--colorBgHover)] border-transparent flex items-center",min:1,value:V.dimensions,onChange:e=>J(a=>a?{...a,dimensions:Number(e||("transformers-local"===a.provider?512:1024))}:a)})]})]}),(0,s.jsxs)("div",{className:"mt-6 flex flex-wrap gap-3",children:[(0,s.jsx)(c.Ay,{type:"primary",className:"h-10 px-6 font-medium shadow-none",loading:Q,onClick:()=>{eV()},children:e("models.saveEmbedding")}),(0,s.jsx)(c.Ay,{className:"h-10 px-6 font-medium shadow-none bg-[var(--colorBgHover)] border-transparent hover:border-[var(--borderColorStrong)]",loading:Y,onClick:()=>{eJ()},children:e("models.testEmbedding")})]})]}):(0,s.jsx)("div",{className:"text-sm text-[var(--colorTextTertiary)]",children:"—"})}),(0,s.jsx)(f.A,{title:ei?e("models.editProvider"):e("models.addProvider"),open:et,onClose:()=>en(!1),size:"large",styles:{body:{padding:"24px 32px"},header:{padding:"16px 32px",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:(0,s.jsx)(v.A,{children:(0,s.jsx)(c.Ay,{type:"primary",loading:eT,onClick:()=>{eG()},children:e("common.save")})}),children:(0,s.jsxs)(A.A,{layout:"vertical",children:[(0,s.jsx)(A.A.Item,{label:e("models.providerName"),children:(0,s.jsx)(j.A,{value:ex,onChange:e=>ep(e.target.value),placeholder:e("models.providerNamePlaceholder")})}),(0,s.jsx)(A.A.Item,{label:e("models.modelIdentifier"),help:e("models.modelIdentifierHint"),children:(0,s.jsx)(j.A,{value:eh,onChange:e=>ev(e.target.value),placeholder:ex||e("models.modelIdentifierPlaceholder")})}),(0,s.jsx)(A.A.Item,{label:e("models.apiKey"),help:ei?e("models.apiKeyEditHint"):void 0,children:(0,s.jsx)(j.A.Password,{value:eu,onFocus:()=>{ei&&O(eu)&&eg("")},onChange:e=>eg(e.target.value),placeholder:ei?e("models.apiKeyEditPlaceholder"):"sk-..."})}),(0,s.jsx)(A.A.Item,{label:e("models.baseUrl"),children:(0,s.jsx)(j.A,{value:eb,onChange:e=>ej(e.target.value),placeholder:"https://api.openai.com/v1"})}),(0,s.jsx)(A.A.Item,{label:e("models.protocol"),children:(0,s.jsx)(b.A,{value:ey,onChange:ef,options:z.map(a=>({label:e(a.labelKey),value:a.value}))})}),(0,s.jsx)(A.A.Item,{label:e("models.directEndpoint"),children:(0,s.jsx)(x.A,{checked:eA,onChange:e=>eN(e.target.checked),children:e("models.directEndpointDesc")})}),(0,s.jsxs)(A.A.Item,{label:e("models.webEnhancement"),children:[(0,s.jsx)(N.A,{checked:ek,onChange:eS}),(0,s.jsx)("span",{className:"ml-3 text-xs text-[var(--colorTextSecondary)]",children:e("models.webEnhancementDesc")})]}),(0,s.jsx)(A.A.Item,{label:e("models.capabilities"),children:(0,s.jsx)(x.A.Group,{value:D.filter(e=>ew[e.key]).map(e=>e.key),options:D.map(a=>({label:e(a.labelKey),value:a.key})),onChange:e=>eC(Object.fromEntries(D.map(a=>[a.key,e.includes(a.key)])))})})]})})]})}},77305:(e,a,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/models",function(){return l(22708)}])},82238:(e,a,l)=>{"use strict";l.d(a,{X:()=>r});var s=l(65321);function r(e){let{failures:a,note:l}=e;return 0===a.length?null:(0,s.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:["".concat(a.length," 项数据读取失败:").concat(a.join("、"),"——相关读数显示为「—」(未知),**不代表 0**;请稍后重试或查看服务端日志。"),l?(0,s.jsx)("div",{className:"mt-1 text-xs opacity-90",children:l}):null]})}},85310:(e,a,l)=>{"use strict";l.d(a,{Zk:()=>o,dh:()=>t,wD:()=>r});var s=l(65321);l(97109);let r="rounded-xl bg-[var(--colorBgContainer)] shadow-[var(--shadowSurface)] hover:shadow-[var(--shadowSurfaceHover)] transition-shadow";function o(e){let{title:a,count:l,description:r,extra:o,className:t,children:n}=e;return(0,s.jsxs)("section",{className:"rounded-2xl bg-[var(--colorBgContainer)] shadow-[var(--shadowSurface)] p-6 animateFadeIn ".concat(null!=t?t:""),children:[(0,s.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-start justify-between gap-3 mb-5",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("h2",{className:"text-base font-semibold text-[var(--colorText)] tracking-wide flex items-center gap-2 m-0",children:[a,void 0!==l&&(0,s.jsx)("span",{className:"text-[var(--colorTextTertiary)] font-normal text-sm",children:l})]}),r&&(0,s.jsx)("p",{className:"text-xs text-[var(--colorTextTertiary)] mt-1.5 mb-0 leading-relaxed max-w-3xl",children:r})]}),o]}),n]})}function t(e){let{children:a}=e;return(0,s.jsx)("div",{className:"text-xs font-semibold uppercase tracking-wider mb-2 text-[var(--colorTextTertiary)]",children:a})}},93360:(e,a,l)=>{"use strict";l.d(a,{z:()=>o});var s=l(65321);l(97109);var r=l(33442);function o(e){let{title:a,description:l,extra:o,bottomContent:t}=e;return(0,s.jsxs)("div",{className:"animateFadeIn",children:[(0,s.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-end justify-between gap-4 pb-6 border-b border-[var(--borderColor)]",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("h1",{className:"text-3xl font-extrabold tracking-tight text-[var(--colorText)] mb-2",children:a}),l&&(0,s.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)] m-0",children:l})]}),o&&(0,s.jsx)(r.A,{className:"w-full sm:w-auto overflow-x-auto pb-1 sm:pb-0 shrink-0",size:"middle",wrap:!1,children:o})]}),t&&(0,s.jsx)("div",{className:"mt-6",children:t})]})}}},e=>{e.O(0,[6409,1210,1702,5544,9551,7576,8338,5061,3980,2864,4052,8318,4337,636,6593,8792],()=>e(e.s=77305)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2975],{31268:(e,i,u)=>{"use strict";u.r(i),u.d(i,{default:()=>t});var d=u(65321),n=u(86109),s=u(75257);function t(){let e=(0,n.useRouter)(),i="string"==typeof e.query.id?e.query.id:void 0;return(0,d.jsx)(s.q,{mode:"edit",skillId:i},null!=i?i:"loading")}},39928:(e,i,u)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/skills/[id]/edit",function(){return u(31268)}])}},e=>{e.O(0,[6409,1210,5544,9551,4665,8399,7576,8569,8787,2864,6505,6748,5257,636,6593,8792],()=>e(e.s=39928)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2975],{31268:(e,i,u)=>{"use strict";u.r(i),u.d(i,{default:()=>t});var d=u(65321),n=u(86109),s=u(48476);function t(){let e=(0,n.useRouter)(),i="string"==typeof e.query.id?e.query.id:void 0;return(0,d.jsx)(s.q,{mode:"edit",skillId:i},null!=i?i:"loading")}},39928:(e,i,u)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/skills/[id]/edit",function(){return u(31268)}])}},e=>{e.O(0,[6409,1210,5544,9551,4665,8399,7576,8569,8787,3980,2864,6748,9937,636,6593,8792],()=>e(e.s=39928)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9388],{71922:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>A});var t=s(65321),n=s(86109),r=s(43220),a=s.n(r),i=s(88762),o=s(85493),c=s(84253),d=s(85114),m=s(99650),p=s(97109),x=s(85979),u=s(48399),h=s(68787),j=s(11702),g=s(14524),v=s(35071);let{Text:b}=u.A;function y(e){let{label:l,children:s}=e;return(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("div",{className:"text-xs text-[var(--colorTextTertiary)] mb-1",children:l}),(0,t.jsx)("div",{className:"text-sm font-medium text-[var(--colorText)] break-words",children:s})]})}function f(e){var l,s,n,r,a;let{skill:i,options:o,labelMap:c}=e,d=e=>{var l;return null!=(l=c.get(e))?l:e},m=i.chapterChecklist,p=m?[{label:"章内检索词",values:null!=(l=m.queries)?l:[]},{label:"必含事实",values:null!=(s=m.requiredFacts)?s:[]},{label:"要求成表的小节",values:null!=(n=m.tableSections)?n:[]},{label:"表格形态要求",values:null!=(r=m.tableRequirements)?r:[]},{label:"钉住的证据文件",values:null!=(a=m.pinnedEvidenceFilePaths)?a:[]}].filter(e=>e.values.length>0):[];return(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(h.A,{className:"rounded-2xl border-[var(--borderColor)]",children:(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-3 xl:grid-cols-4 gap-x-6 gap-y-4",children:[(0,t.jsx)(y,{label:"技能 ID",children:(0,t.jsx)(b,{code:!0,className:"text-xs",children:i.id})}),(0,t.jsxs)(y,{label:"来源",children:[i.builtIn?(0,t.jsx)(j.A,{color:"gold",className:"m-0",children:"内置"}):(0,t.jsx)(j.A,{className:"m-0",children:"用户"}),(0,t.jsxs)(b,{type:"secondary",className:"text-xs ml-2",children:["技能格式 v",i.version]})]}),(0,t.jsx)(y,{label:"状态",children:(0,t.jsx)(j.A,{color:i.enabled?"green":"default",className:"m-0 border-0",children:i.enabled?"已启用":"已停用"})}),(0,t.jsx)(y,{label:"章域",children:(0,t.jsx)(j.A,{color:"blue",className:"m-0",children:d(i.match.chapterDomain)})}),(0,t.jsx)(y,{label:"适用工程类型",children:0===i.match.projectTypes.length?(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"全类型(不限定工程类型)"}):(0,t.jsx)("div",{className:"tagWrap flex flex-wrap gap-1 min-w-0",children:i.match.projectTypes.map(e=>(0,t.jsx)(j.A,{className:"m-0",children:d(e)},e))})}),(0,t.jsx)(y,{label:"文档名称建议",children:i.outputTitle?(0,t.jsx)("span",{children:i.outputTitle}):(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"未声明(不对文档名称表态)"})}),(0,t.jsx)(y,{label:"章职责",children:(null==m?void 0:m.purpose)?(0,t.jsx)("span",{children:m.purpose}):(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"未声明"})}),(0,t.jsx)(y,{label:"提供内容",children:(0,t.jsxs)("div",{className:"tagWrap flex flex-wrap gap-1 min-w-0",children:[(0,t.jsxs)(j.A,{className:"m-0",children:[i.structure.length," 个专业主题"]}),(0,t.jsxs)(j.A,{color:"green",className:"m-0",children:[i.acceptance.reduce((e,l)=>e+l.items.length,0)," 条核对提示"]})]})})]})}),(0,t.jsxs)("div",{className:"grid grid-cols-1 xl:grid-cols-2 gap-4 items-start",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(g.PZ,{title:"相关专业主题",description:"本条技能提供的专业内容主题。",hint:"".concat(i.structure.length," 项"),children:0===i.structure.length?(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"未声明专业主题"}):(0,t.jsx)("ol",{className:"m-0 pl-5 text-sm leading-7",children:i.structure.map((e,l)=>{var s;return(0,t.jsxs)("li",{children:[e.title,(0,t.jsx)(b,{type:"secondary",className:"text-xs ml-2",children:(null==(s=e.required)?void 0:s.join(";"))||"按具体对象组织内容"})]},"".concat(e.title,"-").concat(l))})})}),(0,t.jsxs)(g.PZ,{title:"匹配条件",description:"这条技能在什么章域、工程类型与章节标题下被选用。",children:[(0,t.jsx)(g.RU,{label:"小节标题关键词",children:(0,t.jsx)(g.n$,{empty:"未限定小节标题关键词",items:i.match.sectionKeywords.map(e=>(0,t.jsx)(j.A,{className:"m-0 border-0 bg-[var(--colorFillSecondary)]",children:e},e))})}),(0,t.jsx)(g.RU,{label:"小节标题匹配表达式",children:i.match.sectionRegex?(0,t.jsx)(b,{code:!0,className:"text-xs",children:i.match.sectionRegex}):void 0})]}),(0,t.jsx)(g.PZ,{title:"工艺知识引用",description:"写作时可加载的专业参考(按工艺卡名称显示)。",children:0===i.knowledge.length?(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"未声明知识引用"}):(0,t.jsx)("div",{className:"flex flex-col gap-2",children:i.knowledge.map((e,l)=>{var s,n,r,a;return(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--borderColor)] bg-[var(--colorFillAlter)] px-3 py-2.5",children:[(0,t.jsxs)("div",{className:"tagWrap flex flex-wrap items-center gap-1.5 min-w-0",children:[(0,t.jsx)(j.A,{color:"blue",className:"m-0",children:(n=e.kind,null!=(a=null==o||null==(r=o.knowledgeKinds.find(e=>e.value===n))?void 0:r.label)?a:n)}),(null!=(s=e.ids)?s:[]).map(e=>{var l,s;return(0,t.jsx)(j.A,{className:"m-0 border-0 bg-[var(--colorFillSecondary)]",children:null!=(s=null==o||null==(l=o.processCards.find(l=>l.value===e))?void 0:l.label)?s:e},e)})]}),e.note?(0,t.jsx)("p",{className:"m-0 mt-2 text-xs leading-relaxed text-[var(--colorTextSecondary)]",children:e.note}):null]},"".concat(e.kind,"-").concat(l))})})}),o&&o.isolationRules.length>0&&(0,t.jsx)(g.PZ,{title:"资料与采用边界",description:"以下边界由软件统一执行,技能不能扩大或豁免。",children:(0,t.jsx)("div",{className:"flex flex-col gap-2",children:o.isolationRules.map(e=>(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-baseline gap-1 sm:gap-2",children:[(0,t.jsx)(b,{className:"text-sm shrink-0",children:e.label}),(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:e.note})]},e.id))})})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsx)(g.PZ,{title:"所需项目资料",description:"本次任务要先查证的项目事实;标为必需而查不到时会被上游拦下。",children:(0,t.jsx)(g.n$,{empty:"未声明必需事实",items:i.requires.map(e=>(0,t.jsxs)(j.A,{color:e.required?"red":"default",className:"mb-1",children:[e.key," \xb7 ",d(e.source),e.required?" \xb7 必需":" \xb7 可选"]},e.key))})}),(0,t.jsx)(g.PZ,{title:"文档业务提示",description:"给本次规划的章级候选内容与资料检索提示。",children:0===p.length?(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"未声明章级清单"}):p.map(e=>(0,t.jsx)(g.RU,{label:e.label,children:(0,t.jsx)(g.n$,{items:e.values.map(e=>(0,t.jsx)(j.A,{className:"m-0 border-0 bg-[var(--colorFillSecondary)]",children:e},e))})},e.label))}),(0,t.jsx)(g.PZ,{title:"禁写项",description:"这条技能明确要求避免的内容或表达。",children:(0,t.jsx)(g.n$,{empty:"没有禁写项",items:i.forbidden.map(e=>(0,t.jsx)(j.A,{color:"red",className:"m-0 border-0",children:(0,v.Oz)(e)},(0,v.Oz)(e)))})}),(0,t.jsx)(g.PZ,{title:"专业写作核对提示",description:"按本任务对象和工况选用,不是数量要求或验收通过证明。",children:0===i.acceptance.flatMap(e=>e.items).length?(0,t.jsx)(b,{type:"secondary",className:"text-xs",children:"没有核对提示"}):(0,t.jsx)("ul",{className:"m-0 pl-5 text-sm leading-7",children:i.acceptance.flatMap(e=>e.items).map(e=>(0,t.jsx)("li",{children:e},e))})}),(0,t.jsx)(g.PZ,{title:"表达示例",description:"示例供理解专业表达,不能作为本项目事实。",children:(0,t.jsx)(g.RU,{label:"是否带示例",children:i.examples?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(j.A,{color:"green",className:"m-0 border-0",children:"带正例/反例"}),(0,t.jsx)(b,{type:"secondary",className:"text-xs ml-2",children:"本编辑器保留原示例。"})]}):void 0})})]})]})]})}var N=s(33061);function $(e){let{skillId:l}=e,s=(0,N.G)(),n=(0,p.useMemo)(()=>l?s.skills.find(e=>e.id===l):void 0,[s.skills,l]),r=(0,p.useMemo)(()=>{var e,l,t,n,r,a;return new Map([...null!=(n=null==(e=s.options)?void 0:e.chapterDomains)?n:[],...null!=(r=null==(l=s.options)?void 0:l.projectTypes)?r:[],...null!=(a=null==(t=s.options)?void 0:t.factSources)?a:[]].map(e=>[e.value,e.label]))},[s.options]),u=!l,h=!s.loading&&!s.failed&&!!s.options&&!n;return u||s.loading?(0,t.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,t.jsx)(i.A,{active:!0,title:!0,paragraph:{rows:2}}),(0,t.jsx)(i.A,{active:!0,paragraph:{rows:10}})]}):s.failed?(0,t.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,t.jsx)(x.k,{backHref:"/skills",backLabel:"返回技能库",title:"技能预览"}),(0,t.jsx)(o.A,{type:"error",showIcon:!0,message:"技能库读取失败",description:"".concat(s.failed,';这不是"技能不存在",请核对服务端状态后重试。')})]}):h||!n?(0,t.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,t.jsx)(x.k,{backHref:"/skills",backLabel:"返回技能库",title:"技能预览"}),(0,t.jsx)(c.A,{description:"技能库里没有「".concat(l,"」这条技能(可能已被删除或改名)"),children:(0,t.jsx)(a(),{href:"/skills",children:(0,t.jsx)(d.Ay,{type:"primary",children:"返回技能库"})})})]}):(0,t.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,t.jsx)(x.k,{backHref:"/skills",backLabel:"返回技能库",title:"技能预览 \xb7 ".concat(n.displayName),description:"只读查看这条技能声明了什么;要改内容进编辑页,保存前会做字段与引用校验。",extra:(0,t.jsx)(a(),{href:"/skills/".concat(encodeURIComponent(n.id),"/edit"),children:(0,t.jsx)(d.Ay,{type:"primary",icon:(0,t.jsx)(m.A,{}),disabled:n.builtIn,title:n.builtIn?v.F:void 0,children:"编辑"})})}),n.builtIn&&(0,t.jsx)(o.A,{type:"info",showIcon:!0,message:v.F}),(0,t.jsx)(f,{skill:n,options:s.options,labelMap:r})]})}function A(){let e=(0,n.useRouter)(),l="string"==typeof e.query.id?e.query.id:void 0;return(0,t.jsx)($,{skillId:l})}},85493:(e,l,s)=>{"use strict";s.d(l,{A:()=>S});var t=s(97109),n=s(59188),r=s(4216),a=s(45042),i=s(97137),o=s(62188),c=s(67189),d=s(42644),m=s(3638),p=s(92162),x=s(26047),u=s(74567),h=s(15561),j=s(7961),g=s(10540);let v=(e,l,s)=>({background:e,[`${s}-icon`]:{color:l}}),b=(0,g.OF)("Alert",e=>[(e=>{let{componentCls:l,motionDurationSlow:s,marginXS:t,marginSM:n,fontSize:r,fontSizeLG:a,lineHeight:i,borderRadiusLG:o,motionEaseInOutCirc:c,withDescriptionIconSize:d,colorText:m,colorTextHeading:p,withDescriptionPadding:x,defaultPadding:u,lineWidth:g,lineType:v,colorSuccessBorder:b,colorWarningBorder:y,colorErrorBorder:f,colorInfoBorder:N}=e;return{[l]:{...(0,j.dF)(e),position:"relative",display:"flex",alignItems:"center",padding:u,wordWrap:"break-word",borderRadius:o,borderWidth:(0,h.zA)(g),borderStyle:v,[`&${l}-success`]:{borderColor:b},[`&${l}-info`]:{borderColor:N},[`&${l}-warning`]:{borderColor:y},[`&${l}-error`]:{borderColor:f},[`&${l}-filled`]:{borderColor:"transparent"},[`&${l}-rtl`]:{direction:"rtl"},[`${l}-section`]:{flex:1,minWidth:0},[`${l}-icon`]:{marginInlineEnd:t,lineHeight:0},"&-description":{display:"none",fontSize:r,lineHeight:i},"&-title":{color:p},[`&${l}-motion-leave`]:{overflow:"hidden",opacity:1,transition:["max-height","opacity","padding-top","padding-bottom","margin-bottom"].map(e=>`${e} ${s} ${c}`).join(", ")},[`&${l}-motion-leave-active`]:{maxHeight:0,marginBottom:"0 !important",paddingTop:0,paddingBottom:0,opacity:0},[`&${l}-with-description`]:{alignItems:"flex-start",padding:x,[`${l}-icon`]:{marginInlineEnd:n,fontSize:d,lineHeight:0},[`${l}-title`]:{display:"block",marginBottom:t,color:p,fontSize:a},[`${l}-description`]:{display:"block",color:m}},[`&${l}-banner`]:{marginBottom:0,border:"0 !important",borderRadius:0}}}})(e),(e=>{let{componentCls:l,colorSuccess:s,colorSuccessBg:t,colorWarning:n,colorWarningBg:r,colorError:a,colorErrorBg:i,colorInfo:o,colorInfoBg:c}=e;return{[l]:{"&-success":v(t,s,l),"&-info":v(c,o,l),"&-warning":v(r,n,l),"&-error":{...v(i,a,l),[`${l}-description > pre`]:{margin:0,padding:0}}}}})(e),(e=>{let{componentCls:l,iconCls:s,motionDurationMid:t,marginXS:n,fontSizeIcon:r,colorIcon:a,colorIconHover:i}=e;return{[l]:{[`${l}-actions`]:{marginInlineStart:n},[`${l}-close-icon`]:{marginInlineStart:n,padding:0,overflow:"hidden",fontSize:r,lineHeight:(0,h.zA)(r),backgroundColor:"transparent",border:"none",cursor:"pointer",...(0,j.K8)(e),[`${s}-close`]:{color:a,transition:`color ${t}`,"&:hover":{color:i}}},"&-close-text":{color:a,transition:`color ${t}`,"&:hover":{color:i}}}}})(e)],e=>({withDescriptionIconSize:e.fontSizeHeading3,defaultPadding:`${e.paddingContentVerticalSM}px 12px`,withDescriptionPadding:`${e.paddingMD}px ${e.paddingContentHorizontalLG}px`})),y=e=>{let{icon:l,type:s,className:a,style:c,successIcon:d,infoIcon:m,warningIcon:p,errorIcon:x}=e,u={success:d??t.createElement(n.A,null),info:m??t.createElement(o.A,null),error:x??t.createElement(r.A,null),warning:p??t.createElement(i.A,null)};return t.createElement("span",{className:a,style:c},l??u[s])},f=e=>{let{isClosable:l,prefixCls:s,closeIcon:n,handleClose:r,ariaProps:i,className:o,style:c}=e,d=!0===n||void 0===n?t.createElement(a.A,null):n;return l?t.createElement("button",{type:"button",onClick:r,className:(0,m.$)(`${s}-close-icon`,o),tabIndex:0,style:c,...i},d):null},N=t.forwardRef((e,l)=>{let{description:s,prefixCls:n,message:r,title:a,banner:i,className:o,rootClassName:h,style:j,onMouseEnter:g,onMouseLeave:v,onClick:N,afterClose:$,showIcon:A,closable:k,closeText:w,closeIcon:I,action:E,id:C,styles:S,classNames:R,...P}=e,F=a??r,[T,M]=t.useState(!1),H=t.useRef(null);t.useImperativeHandle(l,()=>({nativeElement:H.current}));let{getPrefixCls:_,direction:z,variant:q,closable:Z,closeIcon:D,className:L,style:K,classNames:W,styles:B,successIcon:O,infoIcon:Q,warningIcon:U,errorIcon:X}=(0,u.TP)("alert"),G=_("alert",n),[V,J]=b(G),{onClose:Y,afterClose:ee}=(0,x.Qd)(k)?k:{},el=l=>{M(!0),(Y??e.onClose)?.(l)},es=t.useMemo(()=>void 0!==e.type?e.type:i?"warning":"info",[e.type,i]),et=e.variant??q??"outlined",en=t.useMemo(()=>!!(0,x.Qd)(k)&&!!k.closeIcon||!!w||("boolean"==typeof k?k:!!(!1!==I&&(0,x.R)(I))||!!Z),[w,I,k,Z]),er=!!i&&void 0===A||A,ea={...e,prefixCls:G,variant:et,type:es,showIcon:er,closable:en},ei=(0,p.XT)(K),eo=(0,p.XT)(j),[ec,ed]=(0,p.AV)([W,R],[B,ei,S,eo],{props:ea}),em=(0,m.$)(G,`${G}-${es}`,`${G}-${et}`,{[`${G}-with-description`]:!!s,[`${G}-no-icon`]:!er,[`${G}-banner`]:!!i,[`${G}-rtl`]:"rtl"===z},L,o,h,ec.root,J,V),ep=(0,d.KE)(P,{aria:!0,data:!0}),ex=t.useMemo(()=>(0,x.Qd)(k)&&k.closeIcon?k.closeIcon:w||(void 0!==I?I:(0,x.Qd)(Z)&&Z.closeIcon?Z.closeIcon:D),[I,k,Z,w,D]),eu=t.useMemo(()=>{let e=k??Z;return(0,x.Qd)(e)?(0,d.KE)(e,{data:!0,aria:!0}):{}},[k,Z]);return t.createElement(c.Ay,{visible:!T,motionName:`${G}-motion`,motionAppear:!1,motionEnter:!1,onLeaveStart:e=>({maxHeight:e.offsetHeight}),onLeaveEnd:ee??$},({className:l,style:n},r)=>t.createElement("div",{id:C,ref:(0,d.K4)(H,r),"data-show":!T,className:(0,m.$)(em,l),style:{...ed.root,...n},onMouseEnter:g,onMouseLeave:v,onClick:N,role:"alert",...ep},er?t.createElement(y,{className:(0,m.$)(`${G}-icon`,ec.icon),style:ed.icon,description:s,icon:e.icon,prefixCls:G,type:es,successIcon:O,infoIcon:Q,warningIcon:U,errorIcon:X}):null,t.createElement("div",{className:(0,m.$)(`${G}-section`,ec.section),style:ed.section},F?t.createElement("div",{className:(0,m.$)(`${G}-title`,ec.title),style:ed.title},F):null,s?t.createElement("div",{className:(0,m.$)(`${G}-description`,ec.description),style:ed.description},s):null),E?t.createElement("div",{className:(0,m.$)(`${G}-actions`,ec.actions),style:ed.actions},E):null,t.createElement(f,{className:ec.close,style:ed.close,isClosable:en,prefixCls:G,closeIcon:ex,handleClose:el,ariaProps:eu})))});var $=s(41113),A=s(49939),k=s(90218),w=s(13076),I=s(83784),E=s(15472);let C=function(e){function l(){var e,s,t;return(0,$.A)(this,l),s=l,t=arguments,s=(0,k.A)(s),(e=(0,I.A)(this,(0,w.A)()?Reflect.construct(s,t||[],(0,k.A)(this).constructor):s.apply(this,t))).state={error:void 0,info:{}},e}return(0,E.A)(l,e),(0,A.A)(l,[{key:"componentDidCatch",value:function(e,l){this.setState({error:e,info:l})}},{key:"render",value:function(){let{message:e,title:l,description:s,id:n,children:r}=this.props,{error:a,info:i}=this.state,o=l??e,c=i?.componentStack||null,d=(0,x.R)(o)?o:a?.toString(),m=(0,x.R)(s)?s:c;return a?t.createElement(N,{id:n,type:"error",title:d,description:t.createElement("pre",{style:{fontSize:"0.9em",overflowX:"auto"}},m)}):r}}])}(t.PureComponent);N.ErrorBoundary=C;let S=N},95195:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/skills/[id]",function(){return s(71922)}])}},e=>{e.O(0,[6409,1210,1702,5544,4665,8399,8569,8787,6748,636,6593,8792],()=>e(e.s=95195)),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5677],{34698:(e,_,n)=>{"use strict";n.r(_),n.d(_,{default:()=>r});var s=n(65321),u=n(75257);function r(){return(0,s.jsx)(u.q,{mode:"create"})}},84788:(e,_,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/skills/new",function(){return n(34698)}])}},e=>{e.O(0,[6409,1210,5544,9551,4665,8399,7576,8569,8787,2864,6505,6748,5257,636,6593,8792],()=>e(e.s=84788)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5677],{34698:(e,_,n)=>{"use strict";n.r(_),n.d(_,{default:()=>r});var s=n(65321),u=n(48476);function r(){return(0,s.jsx)(u.q,{mode:"create"})}},84788:(e,_,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/skills/new",function(){return n(34698)}])}},e=>{e.O(0,[6409,1210,5544,9551,4665,8399,7576,8569,8787,3980,2864,6748,9937,636,6593,8792],()=>e(e.s=84788)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:0}.top-1{top:var(--spacing)}.top-3{top:calc(var(--spacing) * 3)}.top-5{top:calc(var(--spacing) * 5)}.left-0{left:0}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.col-span-2{grid-column:span 2/span 2}.row-1{grid-row:1}.row-17{grid-row:17}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.\!m-0{margin:0!important}.m-0{margin:0}.m-10{margin:calc(var(--spacing) * 10)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-1{margin-inline:var(--spacing)}.mx-auto{margin-inline:auto}.\!my-3{margin-block:calc(var(--spacing) * 3)!important}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.-mr-2{margin-right:calc(var(--spacing) * -2)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.\!mb-0{margin-bottom:0!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-\[22px\]{height:22px}.h-\[calc\(100vh-140px\)\],.h-\[calc\(100vh_-_140px\)\]{height:calc(100vh - 140px)}.h-\[calc\(100vh_-_240px\)\]{height:calc(100vh - 240px)}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[190px\]{max-height:190px}.max-h-\[260px\]{max-height:260px}.max-h-\[320px\]{max-height:320px}.min-h-0{min-height:0}.min-h-\[66px\]{min-height:66px}.min-h-\[140px\]{min-height:140px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-\[1px\]{width:1px}.w-\[22px\]{width:22px}.w-\[260px\]{width:260px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[78\%\]{max-width:78%}.max-w-\[120px\]{max-width:120px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[360px\]{max-width:360px}.max-w-\[420px\]{max-width:420px}.max-w-\[520px\]{max-width:520px}.min-w-0{min-width:0}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-64{min-width:calc(var(--spacing) * 64)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-0{flex-basis:0}.basis-9{flex-basis:calc(var(--spacing) * 9)}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[22px_minmax\(0\,1fr\)_auto\]{grid-template-columns:22px minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--borderColor\)\]{border-color:var(--borderColor)}.border-\[var\(--borderColorStrong\)\]{border-color:var(--borderColorStrong)}.border-\[var\(--canvasSectionBorder\)\]{border-color:var(--canvasSectionBorder)}.border-\[var\(--colorBorderSecondary\)\]{border-color:var(--colorBorderSecondary)}.border-\[var\(--colorDanger\)\]\/20{border-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--colorDanger\)\]\/20{border-color:color-mix(in oklab,var(--colorDanger) 20%,transparent)}}.border-\[var\(--colorDanger\)\]\/30{border-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--colorDanger\)\]\/30{border-color:color-mix(in oklab,var(--colorDanger) 30%,transparent)}}.border-\[var\(--colorWarning\)\]{border-color:var(--colorWarning)}.border-\[…\]{border-color:…}.border-blue-200{border-color:var(--color-blue-200)}.border-transparent{border-color:#0000}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[var\(--borderColor\)\]{background-color:var(--borderColor)}.bg-\[var\(--colorAccent\)\]{background-color:var(--colorAccent)}.bg-\[var\(--colorBg\)\]{background-color:var(--colorBg)}.bg-\[var\(--colorBgContainer\)\]{background-color:var(--colorBgContainer)}.bg-\[var\(--colorBgElevated\)\]{background-color:var(--colorBgElevated)}.bg-\[var\(--colorBgHover\)\],.bg-\[var\(--colorBgHover\)\]\/50{background-color:var(--colorBgHover)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBgHover\)\]\/50{background-color:color-mix(in oklab,var(--colorBgHover) 50%,transparent)}}.bg-\[var\(--colorBgSecondary\)\]\/30{background-color:var(--colorBgSecondary)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBgSecondary\)\]\/30{background-color:color-mix(in oklab,var(--colorBgSecondary) 30%,transparent)}}.bg-\[var\(--colorBgSelected\)\]{background-color:var(--colorBgSelected)}.bg-\[var\(--colorBorderSecondary\)\]{background-color:var(--colorBorderSecondary)}.bg-\[var\(--colorBrand\)\]\/5{background-color:var(--colorBrand)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBrand\)\]\/5{background-color:color-mix(in oklab,var(--colorBrand) 5%,transparent)}}.bg-\[var\(--colorBrand\)\]\/10{background-color:var(--colorBrand)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBrand\)\]\/10{background-color:color-mix(in oklab,var(--colorBrand) 10%,transparent)}}.bg-\[var\(--colorDanger\)\],.bg-\[var\(--colorDanger\)\]\/5{background-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorDanger\)\]\/5{background-color:color-mix(in oklab,var(--colorDanger) 5%,transparent)}}.bg-\[var\(--colorDanger\)\]\/10{background-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorDanger\)\]\/10{background-color:color-mix(in oklab,var(--colorDanger) 10%,transparent)}}.bg-\[var\(--colorFillAlter\)\]{background-color:var(--colorFillAlter)}.bg-\[var\(--colorFillQuaternary\)\]{background-color:var(--colorFillQuaternary)}.bg-\[var\(--colorFillSecondary\)\]{background-color:var(--colorFillSecondary)}.bg-\[var\(--colorOk\)\]{background-color:var(--colorOk)}.bg-\[var\(--colorText\)\]{background-color:var(--colorText)}.bg-\[var\(--colorTextTertiary\)\]{background-color:var(--colorTextTertiary)}.bg-\[var\(--colorWarning\)\]{background-color:var(--colorWarning)}.bg-\[var\(--colorWarningBg\)\]{background-color:var(--colorWarningBg)}.bg-black{background-color:var(--color-black)}.bg-blue-50\/50{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/50{background-color:color-mix(in oklab,var(--color-blue-50) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#d4d4d4\]{color:#d4d4d4}.text-\[var\(--colorAccent\)\]{color:var(--colorAccent)}.text-\[var\(--colorBg\)\]{color:var(--colorBg)}.text-\[var\(--colorBrand\)\]{color:var(--colorBrand)}.text-\[var\(--colorDanger\)\]{color:var(--colorDanger)}.text-\[var\(--colorError\)\]{color:var(--colorError)}.text-\[var\(--colorInfo\)\]{color:var(--colorInfo)}.text-\[var\(--colorOk\)\]{color:var(--colorOk)}.text-\[var\(--colorPrimary\)\]{color:var(--colorPrimary)}.text-\[var\(--colorSuccess\)\]{color:var(--colorSuccess)}.text-\[var\(--colorText\)\]{color:var(--colorText)}.text-\[var\(--colorTextSecondary\)\]{color:var(--colorTextSecondary)}.text-\[var\(--colorTextTertiary\)\]{color:var(--colorTextTertiary)}.text-\[var\(--colorWarn\)\]{color:var(--colorWarn)}.text-\[var\(--colorWarning\)\]{color:var(--colorWarning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal:ordinal}.ordinal,.tabular-nums{font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-\[var\(--shadowSurface\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadowSurface\)\]{--tw-shadow:var(--shadowSurface)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-none{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.block-7{block-size:calc(var(--spacing) * 7)}.block-9{block-size:calc(var(--spacing) * 9)}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.even\:bg-\[var\(--colorFillAlter\)\]:nth-child(2n){background-color:var(--colorFillAlter)}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:border-\[var\(--borderColorStrong\)\]:hover{border-color:var(--borderColorStrong)}.hover\:border-\[var\(--colorTextTertiary\)\]:hover{border-color:var(--colorTextTertiary)}.hover\:bg-\[var\(--colorBgContainer\)\]:hover{background-color:var(--colorBgContainer)}.hover\:bg-\[var\(--colorBgHover\)\]:hover{background-color:var(--colorBgHover)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-\[var\(--colorText\)\]:hover{color:var(--colorText)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[var\(--shadowSurfaceHover\)\]:hover{--tw-shadow:var(--shadowSurfaceHover)}.hover\:shadow-\[var\(--shadowSurfaceHover\)\]:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}}.focus\:bg-\[var\(--colorBgContainer\)\]:focus{background-color:var(--colorBgContainer)}.focus\:bg-transparent:focus{background-color:#0000}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:w-44{width:calc(var(--spacing) * 44)}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[132px_minmax\(0\,1fr\)\]{grid-template-columns:132px minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:items-baseline{align-items:baseline}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:pt-0\.5{padding-top:calc(var(--spacing) * .5)}.sm\:pt-1{padding-top:var(--spacing)}.sm\:pb-0{padding-bottom:0}}@media (min-width:48rem){.md\:w-auto{width:auto}.md\:flex-none{flex:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:gap-6{gap:calc(var(--spacing) * 6)}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:w-80{width:calc(var(--spacing) * 80)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:80rem){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\:bg-white{background-color:var(--color-white)}.dark\:text-black{color:var(--color-black)}}.\[\&_\.ant-tag\]\:whitespace-normal .ant-tag{white-space:normal}}:root{--mainInnerPadY:32px;--mainInnerPadX:clamp(24px,4vw,48px)}@media (max-width:900px){:root{--mainInnerPadY:20px;--mainInnerPadX:20px}}@media (max-width:640px){:root{--mainInnerPadY:12px;--mainInnerPadX:12px}}.canvasRoot{flex:1;min-height:0;position:relative;overflow:hidden}.mainInner.mainInnerCanvas{flex-direction:column;padding:0;display:flex}.canvasStage{background:var(--canvasBg);-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}:root{--colorBg:#fff;--colorBgElevated:#fff;--colorBgSecondary:#fbfbfc;--colorBgHover:#f6f6f7;--colorBgSelected:#eff6ff;--colorText:#171717;--colorTextSecondary:#737373;--colorTextTertiary:#a3a3a3;--colorBrand:#06c;--colorBrandHover:#0052a3;--colorBrand2:#171717;--colorDanger:#e11d48;--colorOk:#16a34a;--colorWarn:#f59e0b;--colorInfo:#2563eb;--colorPrimary:#007aff;--colorAccent:#007aff;--colorSuccess:#34c759;--colorWarning:#ff9500;--colorError:#ff3b30;--colorBgContainer:#fff;--colorFillAlter:#00000004;--colorFillSecondary:#00000008;--colorFillTertiary:#00000006;--colorFillQuaternary:#00000004;--colorBorderSecondary:#3c3c431f;--colorTextQuaternary:#3c3c432e;--colorWarningBg:#fff8e6;--colorSuccessBg:#e8f9ee;--colorInfoBg:#e8f2ff;--colorErrorBg:#ffeceb;--glassBg:#ffffffd9;--glassBlur:saturate(180%) blur(16px);--borderColor:#00000014;--borderColorStrong:#00000026;--borderColorSelected:#3b82f6;--borderSoft:#0000000f;--textSecondary:#737373;--surfaceElevated:#fff;--shadowSoft:0 0 4px #00000008,0 0 12px #0000000a;--shadowCard:0 0 4px #0000000d,0 0 16px #0000000d;--shadowButton:0 1px 2px #0000000d;--shadowSurface:0 0 4px #0000000d,0 0 12px #0000000b;--shadowSurfaceHover:0 0 6px #00000012,0 0 18px #0000000f;--radiusSm:6px;--radiusMd:10px;--radiusLg:14px;--radiusPill:9999px;--sidebarWidth:260px;--fontSans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--canvasBg:transparent;--canvasGridDot:#00000017;--canvasNodeBg:#fff;--canvasNodeBorder:#0000001a;--canvasNodeShadow:0 1px 2px #0000000d,0 2px 8px #0000000a;--canvasNodeSelected:#007aff;--canvasNodeAffected:#ff9500;--canvasEdge:#3c3c4359;--canvasEdgeActive:#007aff;--canvasEdgeWarn:#ff9500;--canvasEdgeAffected:#ff3b30;--canvasSectionBg:#fff9;--canvasFloatBg:#ffffffd1;--canvasPanelBg:#fffffff5;--canvasSectionBorder:#00000014;--canvasBubbleBg:#fffffff7;--canvasBubbleBorder:#0000001a;--canvasBubbleText:#1c1c1e;--canvasBubbleShadow:0 2px 8px #00000024}.dark{--colorBg:#000;--colorBgElevated:#0a0a0a;--colorBgSecondary:#121212;--colorBgHover:#1a1a1a;--colorBgSelected:#3b82f626;--colorText:#ededed;--colorTextSecondary:#a3a3a3;--colorTextTertiary:#737373;--colorBrand:#3b82f6;--colorBrandHover:#60a5fa;--colorBrand2:#d4d4d4;--colorDanger:#f43f5e;--colorOk:#22c55e;--colorWarn:#fbbf24;--colorInfo:#3b82f6;--colorPrimary:#0a84ff;--colorAccent:#0a84ff;--colorSuccess:#30d158;--colorWarning:#ff9f0a;--colorError:#ff453a;--colorBgContainer:#2c2c2ec7;--colorFillAlter:#ffffff08;--colorFillSecondary:#ffffff0f;--colorFillTertiary:#ffffff0a;--colorFillQuaternary:#ffffff08;--colorBorderSecondary:#ffffff1a;--colorTextQuaternary:#ebebf53d;--colorWarningBg:#ff9f0a1f;--colorSuccessBg:#30d1581f;--colorInfoBg:#0a84ff1f;--colorErrorBg:#ff453a1f;--glassBg:#000000d9;--borderColor:#ffffff1f;--borderColorStrong:#fff3;--borderColorSelected:#60a5fa;--borderSoft:#ffffff14;--textSecondary:#a3a3a3;--surfaceElevated:#1c1c1e;--shadowSoft:0 0 4px #00000047,0 0 12px #0006;--shadowCard:0 0 4px #0000005c,0 0 16px #0006;--shadowButton:0 1px 2px #0000004d;--shadowSurface:0 0 4px #0000005c,0 0 12px #0000004d;--shadowSurfaceHover:0 0 6px #00000070,0 0 18px #0000005c;--canvasBg:transparent;--canvasGridDot:#ffffff1a;--canvasNodeBg:#1c1c1e;--canvasNodeBorder:#ffffff24;--canvasNodeShadow:0 1px 2px #0006,0 2px 10px #00000059;--canvasNodeSelected:#0a84ff;--canvasNodeAffected:#ff9f0a;--canvasEdge:#ebebf552;--canvasEdgeActive:#0a84ff;--canvasEdgeWarn:#ff9f0a;--canvasEdgeAffected:#ff453a;--canvasSectionBg:#1c1c1e99;--canvasFloatBg:#1c1c1ed1;--canvasPanelBg:#1c1c1ef5;--canvasSectionBorder:#ffffff1a;--canvasBubbleBg:#2c2c2ef5;--canvasBubbleBorder:#ffffff29;--canvasBubbleText:#f2f2f7;--canvasBubbleShadow:0 2px 10px #00000080}.canvasInputBar,.canvasToolbar{pointer-events:auto;z-index:2;position:absolute}.canvasInputPanel,.canvasToolbar{border:1px solid var(--canvasSectionBorder);background:var(--canvasFloatBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;box-shadow:0 6px 24px #00000014}.canvasToolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;top:12px}.canvasInputBar,.canvasToolbar{display:flex;left:12px;right:12px}.canvasInputBar{flex-direction:column;bottom:12px}.canvasInputPanel{padding:8px 12px}.canvasToolbar.canvasToolbarCollapsed{border-radius:999px;width:max-content;padding:4px;right:auto}.canvasToolbarBubble{color:var(--colorText);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:14px;transition:background .15s;display:inline-flex}.canvasToolbarBubble:hover{background:var(--colorBgHover)}.canvasToolbarBubble:focus-visible{outline:2px solid var(--colorAccent);outline-offset:1px}.canvasToolbar:not(.canvasToolbarCollapsed){animation:canvasPanelIn .16s ease-out}.canvasInputBar.canvasInputBarCollapsed{left:50%;right:auto;transform:translate(-50%)}.canvasInputPanel{animation:canvasPanelIn .18s ease-out}.canvasInputPanel.isLeaving{animation:canvasPanelOut .2s ease-in forwards}.canvasComposer{border-radius:var(--radiusSm);background:var(--colorBgHover);border:1px solid #0000;flex-direction:column;gap:2px;padding:5px 8px;transition:background .2s,border-color .2s;display:flex}.canvasComposer:focus-within{border-color:var(--borderColorStrong);background:0 0}.canvasComposer.isDisabled{opacity:.6}.canvasComposerChips{gap:4px;padding:2px 2px 0}.canvasComposerChips,.canvasInputTopRow{flex-wrap:wrap;align-items:center;display:flex}.canvasInputTopRow{gap:8px;margin-bottom:8px}.canvasInputRow{align-items:stretch;gap:8px;display:flex}.canvasInputRow .canvasComposer{flex:auto;min-width:0}.canvasInputRow>.ant-btn{flex:none}.canvasInputRow .ant-btn{height:auto}.canvasInputRow>.ant-tooltip-disabled-compatible-wrapper{flex:none;display:flex}.canvasInputRow .ant-tooltip-disabled-compatible-wrapper .ant-btn{height:auto}.canvasComposerInput{flex:auto;min-width:0}.canvasComposer .canvasComposerInput.ant-input,.canvasComposer .canvasComposerInput.ant-input:focus,.canvasComposer .canvasComposerInput.ant-input:focus-within,.canvasComposer .canvasComposerInput.ant-input:hover{box-shadow:none!important;resize:none!important;background:0 0!important;border:0!important;padding:4px 2px!important}.canvasInputHandleRow{justify-content:center;margin-bottom:4px;display:flex}.canvasInputHandle{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);width:44px;height:30px;color:var(--colorTextSecondary);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:transform .12s,background .15s,color .15s;display:inline-flex;box-shadow:0 6px 24px #0000001f}.canvasInputHandle:hover{color:var(--colorText);transform:scale(1.06)}.canvasInputHandle:focus-visible{outline:2px solid var(--colorAccent);outline-offset:1px}@keyframes canvasPanelIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes canvasPanelOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}.nodeInfoLayer{z-index:4;border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:hidden;box-shadow:0 10px 32px #0000001f,0 2px 6px #0000000f}.nodeInfoHeader{border-bottom:1px solid var(--colorBorderSecondary);align-items:center;gap:6px;margin-bottom:10px;padding-bottom:10px;display:flex}.nodeInfoHeaderIcon{color:var(--colorTextSecondary);display:inline-flex}.nodeInfoClose{color:var(--colorTextTertiary)}.nodeInfoClose:hover{color:var(--colorText)}.nodeInfoActions{background:var(--colorFillQuaternary,var(--colorFillAlter));border-radius:8px;flex-wrap:wrap;gap:6px;margin-bottom:10px;padding:8px;display:flex}.nodeInfoPanel{width:min(460px,92vw);min-height:0;max-height:100%;padding:12px 14px;overflow:auto}.nodeInfoPanel .ant-descriptions-item-label{white-space:nowrap;width:92px;color:var(--colorTextSecondary)}.nodeInfoPanel .ant-tabs-nav{margin-bottom:12px}.nodeInfoRepair{border:1px solid var(--canvasNodeAffected);background:var(--colorWarningBg);border-radius:10px;margin-bottom:8px;padding:8px 10px}.nodeInfoRepairRun{border-top:1px dashed var(--colorSplit);flex-direction:column;gap:6px;padding-top:8px;display:flex}.nodeInfoRepairResult{background:var(--colorFillQuaternary);border-radius:6px;flex-direction:column;gap:4px;padding:6px 8px;display:flex}.canvasRecordsBall{pointer-events:auto}.canvasRecordsBallBtn{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);color:var(--colorText);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:999px;justify-content:center;align-items:center;font-size:18px;transition:transform .12s;display:flex;position:relative;box-shadow:0 6px 24px #0000001f}.canvasRecordsBallBtn:hover{transform:scale(1.06)}.canvasRecordsBallBtn:active{cursor:grabbing}.canvasRecordsBallBadge{background:var(--colorAccent);color:#fff;text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:18px;height:18px;padding:0 4px;font-size:10px;line-height:18px;position:absolute;top:-2px;right:-2px}.canvasRecordsBallBadge.isZero{background:var(--colorFillTertiary);color:var(--colorTextSecondary)}.canvasRecordsPanel{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;overflow:hidden;box-shadow:0 10px 32px #0000001f,0 2px 6px #0000000f}.canvasRecordsLink{color:var(--colorAccent);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px}.canvasRecordsLink:hover{text-decoration:underline}.canvasRecordsDelete{width:24px;height:24px;color:var(--colorTextTertiary);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:opacity .12s,color .12s;display:inline-flex}.canvasRecordsDelete:focus-visible,.canvasRecordsPanel>div>div:hover .canvasRecordsDelete{opacity:1}.canvasRecordsDelete:hover{color:var(--colorDanger);background:var(--colorBgHover)}.canvasRecordsDelete.isDisabled{cursor:not-allowed;opacity:0}.canvasRecordsPanel>div>div:hover .canvasRecordsDelete.isDisabled{opacity:.35}.canvasRecordsPanel>div>div:hover .canvasRecordsDelete.isDisabled:hover{color:var(--colorTextTertiary);background:0 0}.canvasRecordsDanger{border:1px solid var(--colorDanger);color:var(--colorDanger);cursor:pointer;background:0 0;border-radius:8px;align-items:center;padding:3px 10px;font-size:12px;display:inline-flex}.canvasRecordsDanger:disabled{opacity:.4;cursor:not-allowed}.canvasRecordsDanger:not(:disabled):hover{background:var(--colorDanger);color:#fff}.canvasEdgeLayer{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.canvasEdge{fill:none;stroke:var(--canvasEdge);stroke-width:1.4px}.canvasEdgeActive{stroke:var(--canvasEdgeActive);stroke-width:2px}.canvasEdgeWarn{stroke:var(--canvasEdgeWarn);stroke-width:1.8px;stroke-dasharray:5 4}.canvasEdgeAffected{stroke:var(--canvasEdgeAffected);stroke-width:2.2px}.canvasEdgeFlow{fill:none;stroke:var(--canvasEdgeActive);stroke-width:2.4px;stroke-linecap:round;stroke-dasharray:7 11;opacity:.85;animation:canvasEdgeFlow 1.1s linear infinite}@keyframes canvasEdgeFlow{0%{stroke-dashoffset:18px}to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.canvasEdgeFlow{stroke-dashoffset:0;animation:none}}.canvasAgentChip,.canvasAgentsChips{align-items:center}.canvasAgentChip{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);color:inherit;font:inherit;cursor:pointer;border-radius:999px;gap:4px;padding:1px 7px 1px 6px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.canvasAgentChip:hover{border-color:var(--canvasNodeSelected);box-shadow:0 0 0 2px var(--canvasNodeSelected)}.canvasAgentRole{border-radius:4px;justify-content:center;align-items:center;min-width:14px;height:14px;padding:0 2px;font-size:10px;line-height:1;display:inline-flex}.canvasAgentRole[data-role=main]{background:var(--colorPrimary);color:#fff}.canvasAgentRole[data-role=sub]{background:var(--canvasSectionBorder);color:var(--colorTextSecondary)}.canvasAgentChipMain{border-color:var(--colorPrimary)}.canvasAgentAvatar{border:1.5px solid var(--canvasEdge);background:var(--canvasNodeBg);width:22px;height:22px;color:var(--colorTextSecondary);border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:relative}.canvasAgentAvatarGlyph{font-size:12px;line-height:1;display:inline-flex}.canvasAgentAvatar[data-status=running]{border-color:var(--colorPrimary);color:var(--colorPrimary);animation:canvasAgentAvatarPulse 1.6s ease-in-out infinite}.canvasAgentAvatar[data-status=repairing]{border-color:var(--colorWarning);color:var(--colorWarning)}.canvasAgentAvatar[data-status=completed]{border-color:var(--colorSuccess);color:var(--colorSuccess)}@keyframes canvasAgentAvatarPulse{0%,to{box-shadow:0 0 #007aff59}50%{box-shadow:0 0 0 4px #007aff00}}@media (prefers-reduced-motion:reduce){.canvasAgentAvatar[data-status=running]{animation:none}}.canvasAgentIcon{color:var(--colorTextSecondary);display:inline-flex}.canvasAgentIcon[data-status=running]{color:var(--colorPrimary);animation:canvasNodePulse 1.6s ease-in-out infinite}.canvasAgentIcon[data-status=repairing]{color:var(--colorWarning)}.canvasAgentIcon[data-status=completed]{color:var(--colorSuccess)}.canvasAgentDetail{flex-direction:column;gap:6px;width:306px;display:flex}.canvasAgentDetailHead{align-items:center;gap:6px;display:flex}.canvasAgentDetailRow{align-items:baseline;gap:8px;display:flex}.canvasAgentDetailRow>:first-child{flex:0 0 46px}.canvasAgentDetailRow>:last-child{word-break:break-word;flex:1;min-width:0}.canvasAgentLocate{border:1px solid var(--canvasSectionBorder);color:var(--colorPrimary);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;margin-top:2px;padding:3px 10px;font-size:12px}.canvasAgentLocate:hover{background:var(--colorBgHover)}.canvasBubbleLayer{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.canvasBubble{offset-distance:0;will-change:offset-distance,opacity;animation-name:canvasBubbleFly;animation-timing-function:cubic-bezier(.33,0,.67,1);animation-fill-mode:forwards;position:absolute;top:0;left:0}@keyframes canvasBubbleFly{0%{offset-distance:0;opacity:0}14%{opacity:1}80%{offset-distance:100%;opacity:1}to{offset-distance:100%;opacity:0}}.canvasBubbleStatic{offset-distance:55%;opacity:1;animation:none}.canvasBubbleBody{border:1px solid var(--canvasBubbleBorder);background:var(--canvasBubbleBg);max-width:220px;box-shadow:var(--canvasBubbleShadow);color:var(--canvasBubbleText);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 9px;font-size:11px;line-height:16px;display:inline-flex;transform:translate(-50%,-50%)}.canvasBubble[data-kind=dispatch] .canvasBubbleBody{border-color:var(--canvasEdgeActive)}.canvasBubble[data-kind=report] .canvasBubbleBody{border-color:var(--canvasEdge)}.canvasBubbleText{text-overflow:ellipsis;overflow:hidden}.canvasNode{border:1px solid var(--canvasNodeBorder);background:var(--canvasNodeBg);box-shadow:var(--canvasNodeShadow);cursor:pointer;border-radius:10px;flex-direction:column;gap:4px;padding:8px 10px;transition:box-shadow .15s,border-color .15s;display:flex;position:absolute}.canvasNode:hover{border-color:var(--canvasNodeSelected)}@keyframes canvasNodeFlash{0%,to{box-shadow:var(--canvasNodeShadow)}50%{box-shadow:0 0 0 4px var(--canvasNodeSelected),var(--canvasNodeShadow)}}.canvasNodeFlashed{animation:canvasNodeFlash .6s ease-in-out 2}.canvasNodeSelected{border-color:var(--canvasNodeSelected);box-shadow:0 0 0 2px var(--canvasNodeSelected),var(--canvasNodeShadow)}.canvasNodeAffected{border-color:var(--canvasNodeAffected);box-shadow:0 0 0 2px var(--canvasNodeAffected)}.canvasNodeHeader{align-items:center;gap:6px;min-width:0;display:flex}.canvasNodeIcon{color:var(--colorTextSecondary);display:inline-flex}.canvasNodeIcon[data-status=running]{color:var(--colorPrimary);animation:canvasNodePulse 1.6s ease-in-out infinite}.canvasNodeIcon[data-status=blocked],.canvasNodeIcon[data-status=failed]{color:var(--colorError)}.canvasNodeIcon[data-status=paused],.canvasNodeIcon[data-status=repairing]{color:var(--colorWarning)}.canvasNodeMeta{gap:2px}.canvasNodeMeta,.canvasNodeMetrics{align-items:center;min-width:0;display:flex}.canvasNodeMetrics{white-space:nowrap;flex-shrink:0;gap:8px;overflow:hidden}.canvasNodeMetrics>.ant-typography{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}@keyframes canvasNodePulse{0%,to{opacity:1}50%{opacity:.35}}@media (max-width:1024px){.nodeInfoPanel{width:92vw}}.deliverablePreview{width:100%}.deliverablePreviewStack{flex-direction:column;gap:10px;width:100%;display:flex}.deliverablePreviewMeta{border-bottom:1px solid var(--colorBorderSecondary);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;padding-bottom:10px;display:flex}.deliverablePreviewPaper{border:1px solid var(--colorBorderSecondary);background:var(--colorBgContainer);border-radius:10px;width:100%;margin:0 auto;padding:28px 32px;box-shadow:0 1px 2px #00000008,0 8px 24px #0000000a}.deliverablePreviewBody{color:var(--colorText);text-align:justify;text-justify:inter-ideograph;overflow-wrap:anywhere;word-break:break-word;font-size:15px;line-height:1.9}.deliverablePreviewBody h1,.deliverablePreviewBody h2,.deliverablePreviewBody h3,.deliverablePreviewBody h4,.deliverablePreviewBody h5,.deliverablePreviewBody h6{text-align:left;margin:1.6em 0 .6em;font-weight:700;line-height:1.4}.deliverablePreviewBody h1{border-bottom:2px solid var(--colorBorder);padding-bottom:8px;font-size:1.6em}.deliverablePreviewBody h2{border-bottom:1px solid var(--colorBorderSecondary);padding-bottom:6px;font-size:1.35em}.deliverablePreviewBody h3{font-size:1.15em}.deliverablePreviewBody h4{font-size:1.02em}.deliverablePreviewBody h5,.deliverablePreviewBody h6{color:var(--colorTextSecondary);font-size:1em}.deliverablePreviewBody>:first-child{margin-top:0}.deliverablePreviewBody p{margin:.9em 0}.deliverablePreviewBody ol,.deliverablePreviewBody ul{margin:.9em 0;padding-left:1.8em}.deliverablePreviewBody ul{list-style:outside}.deliverablePreviewBody ol{list-style:decimal}.deliverablePreviewBody li{margin:.35em 0}.deliverablePreviewBody li::marker{color:var(--colorTextTertiary)}.deliverablePreviewBody li>ol,.deliverablePreviewBody li>ul{margin:.35em 0}.deliverablePreviewBody blockquote{border-left:3px solid var(--colorPrimaryBorder,var(--colorBorder));background:var(--colorFillQuaternary,var(--colorFillAlter));color:var(--colorTextSecondary);border-radius:0 6px 6px 0;margin:1em 0;padding:.6em 1.1em}.deliverablePreviewBody hr{border:none;border-top:1px solid var(--colorBorderSecondary);margin:1.8em 0}.deliverablePreviewBody a{color:var(--colorPrimary);text-underline-offset:2px;text-decoration:underline}.deliverablePreviewBody img{border-radius:6px;max-width:100%;height:auto}.deliverablePreviewBody strong{font-weight:600}.deliverablePreviewBody table{border-collapse:collapse;text-align:left;width:100%;margin:1.1em 0;font-size:13.5px}.deliverablePreviewBody td,.deliverablePreviewBody th{border:1px solid var(--colorBorderSecondary);vertical-align:top;padding:8px 10px}.deliverablePreviewBody th{background:var(--colorFillAlter);border-bottom:2px solid var(--colorBorder);white-space:nowrap;font-weight:600}.deliverablePreviewBody tbody tr:nth-child(2n) td{background:var(--colorFillQuaternary,transparent)}.deliverablePreviewBody code{background:var(--colorFillSecondary);font-family:var(--fontMono,ui-monospace,SFMono-Regular,Menlo,monospace);border-radius:4px;padding:.15em .4em;font-size:.9em}.deliverablePreviewBody pre{background:var(--colorFillAlter);text-align:left;border-radius:8px;margin:1em 0;padding:12px 14px;overflow-x:auto}.deliverablePreviewBody pre code{background:0 0;padding:0;font-size:12.5px}.deliverablePreviewEnd{border-top:1px dashed var(--colorBorderSecondary);flex-direction:column;gap:4px;width:100%;margin-top:28px;padding-top:14px;display:flex}*,:after,:before{box-sizing:border-box}html{font-family:var(--fontSans);background:var(--colorBg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.appShellPlaceholder,body{background:var(--colorBg);min-height:100vh}body{font-family:var(--fontSans);color:var(--colorText);margin:0}.ant-drawer-content-wrapper{min-width:320px;width:30%!important}a{color:inherit;text-decoration:none}*{scrollbar-width:thin;scrollbar-color:var(--borderColorStrong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--borderColorStrong);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:var(--colorTextTertiary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animateFadeIn{animation:fadeIn .4s cubic-bezier(.2,.8,.2,1) forwards}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.space-y-8>*+*{margin-top:32px}.space-y-6>*+*{margin-top:24px}.space-y-5>*+*{margin-top:20px}#nprogress{pointer-events:none}#nprogress .bar{background:var(--colorBrand);z-index:1031;width:100%;height:3px;position:fixed;top:0;left:0}#nprogress .peg{width:100px;height:100%;box-shadow:0 0 10px var(--colorBrand),0 0 5px var(--colorBrand);opacity:1;display:block;position:absolute;right:0;transform:rotate(3deg)translateY(-4px)}@media (max-width:1024px){:root{--sidebarWidth:200px}}@media (max-width:860px){:root{--sidebarWidth:72px}.sidebarLogo{justify-content:center;padding:16px}.sidebarItem span:not(.sidebarChevron),.sidebarLogoTitle{display:none}.sidebarItem{justify-content:center;padding:11px}.sidebarSubmenu{padding-left:0}.sidebarSubItem{padding-left:11px}.mainInner{padding:var(--mainInnerPadY) var(--mainInnerPadX);padding-bottom:calc(var(--mainInnerPadY) + env(safe-area-inset-bottom,0px))}.topbar{margin:10px 12px 0;padding:10px 16px}}@media (max-width:640px){.sidebar{top:6px;left:6px;bottom:calc(6px + env(safe-area-inset-bottom,0px))}.mainContent{margin-left:72px}.mainInner{padding:var(--mainInnerPadY) var(--mainInnerPadX);padding-bottom:calc(var(--mainInnerPadY) + env(safe-area-inset-bottom,0px))}.topbar{border-radius:16px;margin:8px 8px 0;padding:8px 12px}}.detailBack{border:1px solid var(--borderColor);background:var(--colorBgContainer);height:30px;color:var(--colorTextSecondary);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;margin:0;padding:0 12px 0 8px;font-size:13px;line-height:1;transition:background .15s,color .15s,border-color .15s,transform .12s;display:inline-flex}.detailBack svg{transition:transform .15s}.detailBack:hover{background:var(--colorBgHover);border-color:var(--borderColorStrong);color:var(--colorText)}.detailBack:hover svg{transform:translate(-2px)}.detailBack:active{transform:scale(.97)}.detailBack:focus-visible{outline:2px solid var(--colorAccent);outline-offset:2px}.tagWrap .ant-tag{white-space:normal;overflow-wrap:anywhere;max-width:100%;height:auto;min-height:22px}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sidebarWidth);display:flex;flex-direction:column;z-index:20;background:var(--colorBgSecondary);border-right:none;box-shadow:2px 0 8px rgba(0,0,0,.02);overflow:hidden;transition:width .3s cubic-bezier(.2,.8,.2,1),transform .3s ease}.sidebarCollapsedSelf{width:72px}.sidebarLogoRow{gap:4px;padding-right:8px}.sidebarLogo,.sidebarLogoRow{display:flex;align-items:center}.sidebarLogo{gap:12px;padding:24px 20px 20px;height:68px;overflow:hidden}.sidebarCollapsedSelf .sidebarLogo{justify-content:center;padding:24px 0 20px}.sidebarCollapsedSelf .sidebarLogoRow{padding-right:0}.sidebarCollapsedSelf .sidebarChevron,.sidebarCollapsedSelf .sidebarLabel,.sidebarCollapsedSelf .sidebarLogoTitle{display:none}.sidebarCollapsedSelf .sidebarItem{justify-content:center;padding:10px}.sidebarLogoTitle{font-size:16px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;opacity:1;transition:opacity .2s ease;color:var(--colorText)}.sidebarNav{flex:1;overflow-y:auto;overflow-x:hidden;flex-direction:column;gap:2px}.sidebarItem,.sidebarNav{padding:8px 12px;display:flex}.sidebarItem{align-items:center;gap:10px;border-radius:var(--radiusSm);font-size:13.5px;font-weight:500;color:var(--colorTextSecondary);transition:all .15s ease;cursor:pointer;white-space:nowrap}.sidebarLabel{transition:opacity .2s ease}.sidebarItem:hover{background:var(--colorBgHover);color:var(--colorText)}.sidebarItemActive,.sidebarItemActive:hover{background:var(--colorBgElevated);color:var(--colorText);box-shadow:none}.dark .sidebarItemActive,.dark .sidebarItemActive:hover{box-shadow:none}.sidebarCollapseBtn{width:32px;height:32px;flex-shrink:0;border-radius:var(--radiusSm);border:1px solid transparent;background:transparent;color:var(--colorTextSecondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.sidebarCollapseBtn:hover{background:var(--colorBgHover);color:var(--colorText)}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 32px;background:var(--glassBg);backdrop-filter:var(--glassBlur);-webkit-backdrop-filter:var(--glassBlur);border-bottom:none;box-shadow:0 1px 3px rgba(0,0,0,.02)}.topbarBtn{display:inline-flex;align-items:center;gap:8px;padding:6px;border-radius:var(--radiusSm);border:1px solid transparent;background:transparent;color:var(--colorTextSecondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;outline:none}.topbarBtn:hover{background:var(--colorBgHover);color:var(--colorText)}.mainContent{margin-left:var(--sidebarWidth);flex:1;display:flex;flex-direction:column;min-height:100vh;background:var(--colorBg);transition:margin-left .3s cubic-bezier(.2,.8,.2,1)}.sidebarCollapsed .mainContent{margin-left:68px}.mainInner{flex:1;padding:var(--mainInnerPadY,32px) var(--mainInnerPadX,clamp(24px,4vw,48px));padding-bottom:calc(var(--mainInnerPadY, 32px) + env(safe-area-inset-bottom, 0px));width:100%;min-width:0;overflow-x:clip;transition:opacity .2s ease}.mainInner.pageTransitioning{opacity:.5;pointer-events:none}.ant-card{background:var(--colorBgContainer)!important;border:none!important;border-radius:20px!important;box-shadow:var(--shadowSurface)!important;margin-bottom:0!important}.ant-card-head{border-bottom:none!important;padding:20px 24px 0!important;min-height:auto!important;margin-bottom:8px}.ant-card-small>.ant-card-head{padding:16px 16px 0!important}.ant-card-body{padding-top:16px!important}.ant-card-small>.ant-card-body{padding-top:12px!important}.ant-card-head-title{font-size:16px!important;font-weight:600!important;padding:0!important}.tableFillHeight,.tableFillHeight>.ant-spin,.tableFillHeight>.ant-spin>.ant-spin-container{display:flex;flex-direction:column;min-height:0}.tableFillHeight>.ant-spin,.tableFillHeight>.ant-spin>.ant-spin-container{flex:1}.tableFillHeight .ant-table{flex:1 1 auto;min-height:0}.tableFillHeight .ant-table-container{display:flex;flex-direction:column;height:100%;min-height:0}.tableFillHeight .ant-table-body{max-height:none!important}.tableFillHeight .ant-table-body,.tableFillHeight .ant-table-content{flex:1;min-height:0;overflow:auto!important}.tableFillHeight .ant-table-pagination.ant-pagination{margin:auto 16px 12px!important}.ant-modal-content{background:var(--colorBgElevated)!important;border:1px solid var(--borderColor)!important;border-radius:var(--radiusLg)!important;box-shadow:var(--shadowCard)!important;padding:24px!important}.ant-modal-header{background:transparent!important;margin-bottom:24px!important}.ant-input,.ant-input-number,.ant-input-password,.ant-select-selector{border:1px solid transparent!important;background:var(--colorBgHover)!important;border-radius:var(--radiusSm)!important;box-shadow:none!important;transition:all .2s ease!important}.ant-input-focused,.ant-input-number-focused,.ant-input-number:focus,.ant-input-number:hover,.ant-input-password:focus,.ant-input-password:hover,.ant-input:focus,.ant-input:hover,.ant-select-focused .ant-select-selector,.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:var(--borderColorStrong)!important;background:transparent!important;box-shadow:none!important}.ant-input-affix-wrapper-outlined:focus,.ant-input-affix-wrapper-outlined:focus-within,.ant-input-number-outlined:focus,.ant-input-number-outlined:focus-within,.ant-input-outlined:focus,.ant-input-outlined:focus-within,.ant-select-outlined.ant-select-focused .ant-select-selector{box-shadow:none!important;outline:none!important;border-color:var(--borderColorStrong)!important}.modern-table .ant-table{background:transparent!important;border:none!important;border-radius:0!important}.modern-table .ant-table-container{border:none!important}.modern-table .ant-table-thead>tr>th{background:var(--colorBgSecondary)!important;border:none!important;font-size:11px!important;font-weight:600!important;color:var(--colorTextSecondary)!important;text-transform:uppercase;letter-spacing:.05em;padding:14px 16px!important}.modern-table .ant-table-thead>tr>th:first-child{border-top-left-radius:var(--radiusMd)!important;border-bottom-left-radius:var(--radiusMd)!important}.modern-table .ant-table-thead>tr>th:last-child{border-top-right-radius:var(--radiusMd)!important;border-bottom-right-radius:var(--radiusMd)!important}.modern-table .ant-table-thead>tr>th:before{display:none!important}.modern-table .ant-table-tbody>tr>td{border:none!important;background:transparent!important;padding:18px 16px!important;font-size:14px}.modern-table .ant-table-tbody>tr:last-child>td{border-bottom:none!important}.modern-table .ant-table-tbody>tr:hover>td{background:var(--colorBgHover)!important}.modern-table .ant-table-tbody>tr.ant-table-row-selected>td{background:var(--colorBgSelected)!important;border:0!important;box-shadow:none!important;outline:0!important}.ant-btn-default{border-color:var(--borderColor)!important;background:transparent!important;box-shadow:none!important}.ant-btn-default:hover{background:var(--colorBgHover)!important;border-color:var(--borderColorStrong)!important;color:var(--colorText)!important}.ant-btn-primary{background:var(--colorText)!important;color:var(--colorBg)!important;box-shadow:none!important;border:none!important}.ant-btn-primary:hover{background:var(--colorTextSecondary)!important;color:var(--colorBg)!important}.ant-row{row-gap:24px}.ant-input,.ant-input-affix-wrapper,.ant-input-number,.ant-input-password,.ant-input-search .ant-input,.ant-input-search .ant-input-group-addon .ant-btn,.ant-mentions,.ant-picker,.ant-select-selector{min-height:34px;border:1px solid var(--borderColor)!important;background:var(--colorBgSecondary)!important;border-radius:var(--radiusSm)!important;box-shadow:none!important;outline:none!important}.ant-input-affix-wrapper>input.ant-input,.ant-input-affix-wrapper>textarea.ant-input,.ant-input-number .ant-input-number-input,.ant-input-password>input.ant-input,.ant-input-search .ant-input-affix-wrapper>input.ant-input{min-height:auto;border:0!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;outline:none!important}.ant-input-affix-wrapper-focused,.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper:hover,.ant-input-focused,.ant-input-number-focused,.ant-input-number:hover,.ant-input-password:hover,.ant-input:focus,.ant-input:hover,.ant-picker-focused,.ant-picker:hover,.ant-select-focused .ant-select-selector,.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:var(--colorBrand)!important;background:var(--colorBgElevated)!important;box-shadow:none!important;outline:none!important}.ant-btn:focus-visible,.ant-input-affix-wrapper:focus-visible,.ant-input:focus-visible,.ant-picker:focus-visible,.ant-select-selector:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:none!important;box-shadow:none!important}.ant-input-group-wrapper .ant-input-wrapper,.ant-input-search .ant-input-group{display:flex;align-items:stretch}.ant-input-search .ant-input,.ant-input-search .ant-input-affix-wrapper{border-start-end-radius:0!important;border-end-end-radius:0!important}.ant-input-search .ant-input-group-addon .ant-btn{border-start-start-radius:0!important;border-end-start-radius:0!important;border-left:0!important}.ant-input-affix-wrapper{padding-inline-start:11px!important;padding-inline-end:11px!important}.ant-input-affix-wrapper .ant-input-prefix{margin-inline-end:8px!important;color:var(--colorTextTertiary)!important}.ant-input-affix-wrapper .ant-input-suffix{margin-inline-start:8px!important}.ant-input-affix-wrapper>input.ant-input{padding-inline-start:0!important}.ant-table-wrapper,.ant-table-wrapper .ant-spin-container,.ant-table-wrapper .ant-spin-nested-loading,.ant-table-wrapper .ant-table,.ant-table-wrapper .ant-table-body,.ant-table-wrapper .ant-table-container,.ant-table-wrapper .ant-table-content{background:transparent!important;border:0!important;box-shadow:none!important}.ant-table-wrapper .ant-table-cell:before,.ant-table-wrapper .ant-table-container:after,.ant-table-wrapper .ant-table-container:before{display:none!important}.ant-table-wrapper .ant-table-thead>tr>th{height:auto!important;padding:10px 12px!important;border:0!important;background:var(--colorBgSecondary)!important;color:var(--colorTextSecondary)!important;font-size:12px!important;font-weight:600!important;line-height:1.45!important;vertical-align:middle!important}.ant-table-wrapper .ant-table-tbody>tr>td{height:auto!important;min-height:0!important;padding:11px 12px!important;border:0!important;background:transparent!important;color:var(--colorText)!important;line-height:1.5!important;vertical-align:middle!important;overflow:visible!important;white-space:normal;word-break:break-word}.ant-table-wrapper .ant-table-tbody>tr.ant-table-row:hover>td,.ant-table-wrapper .ant-table-tbody>tr:hover>td{background:var(--colorBgHover)!important}.ant-table-wrapper .ant-table-tbody>tr.ant-table-row-selected>td{background:var(--colorBgSelected)!important}.ant-table-wrapper .ant-table-expanded-row>td,.ant-table-wrapper .ant-table-placeholder>td{background:transparent!important}.ant-table-wrapper .ant-table-cell .ant-btn,.ant-table-wrapper .ant-table-cell .ant-space,.ant-table-wrapper .ant-table-cell .ant-tag{vertical-align:middle}.ant-table-wrapper .ant-table-selection-column .ant-checkbox-wrapper{vertical-align:middle;align-items:center}.ant-table-wrapper .ant-table-cell .ant-checkbox{line-height:1}.ant-table-wrapper .ant-table-cell .ant-typography,.ant-table-wrapper .ant-table-cell div,.ant-table-wrapper .ant-table-cell p,.ant-table-wrapper .ant-table-cell span{max-height:none;line-height:inherit}.ant-table-wrapper .ant-table-cell-ellipsis{white-space:normal!important}.ant-table-wrapper .ant-table-cell-ellipsis .ant-table-cell-content{display:block;overflow:visible;text-overflow:clip;white-space:normal}.ant-alert-description,.ant-alert-message,.ant-breadcrumb-link,.ant-btn,.ant-dropdown-menu-title-content,.ant-menu-title-content,.ant-select-selection-item,.ant-tabs-tab-btn,.ant-tag{display:inline-flex;align-items:center;gap:6px;min-width:0}.ant-btn{justify-content:center;line-height:1.2!important}.ant-btn .anticon,.ant-btn svg,.ant-menu-item svg,.ant-menu-item-icon,.ant-tabs-tab .anticon,.ant-tabs-tab svg,.ant-tag .anticon,.ant-tag svg,.anticon,.sidebarItem svg,.topbarBtn svg{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1;vertical-align:-.125em}.ant-space{align-items:center}.ant-alert+.ant-card,.ant-card+.ant-alert,.ant-card+.ant-card{margin-top:16px!important}.ant-card-head{margin-bottom:8px!important}.ant-card .ant-typography,.ant-card ol,.ant-card p,.ant-card ul{line-height:1.65}.ant-card .ant-typography:last-child,.ant-card ol:last-child,.ant-card p:last-child,.ant-card ul:last-child{margin-bottom:0!important}.ant-tabs>.ant-tabs-nav,.ant-tabs>div>.ant-tabs-nav{margin:0 0 18px!important;padding:0 2px!important}.ant-tabs .ant-tabs-tab{padding:10px 12px!important;margin:0 4px 0 0!important}.ant-tabs .ant-tabs-content-holder{padding-top:2px}.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab{border-radius:var(--radiusSm) var(--radiusSm) 0 0!important}.ant-form-item{margin-bottom:16px!important}.ant-form-item-row{row-gap:8px!important}.ant-descriptions-small .ant-descriptions-item-content,.ant-descriptions-small .ant-descriptions-item-label{padding-top:12px!important;padding-bottom:12px!important}.ant-form-item-label>label{align-items:center;height:auto!important;color:var(--colorText)!important;font-weight:500}.ant-form-item-explain,.ant-form-item-extra{margin-top:6px;font-size:12px}.ant-collapse-header,.ant-descriptions-item,.ant-list-item{align-items:center!important}.ant-table-wrapper.modern-table,.ant-table-wrapper.modern-table *,.modern-table.ant-table-wrapper,.modern-table.ant-table-wrapper *{border-color:transparent!important}.modern-table .ant-table,.modern-table .ant-table-body,.modern-table .ant-table-container,.modern-table .ant-table-content,.modern-table .ant-table-header,.modern-table .ant-table-tbody,.modern-table .ant-table-thead,.modern-table table{border:0!important;box-shadow:none!important;outline:0!important}.modern-table .ant-table-expanded-row>td,.modern-table .ant-table-selection-column,.modern-table .ant-table-tbody>tr>td,.modern-table .ant-table-thead>tr>th{height:auto!important;min-height:0!important;border:0!important;border-inline-end:0!important;border-bottom:0!important;box-shadow:none!important;outline:0!important;line-height:1.55!important;vertical-align:middle!important}.modern-table .ant-table-tbody>tr>td{padding:10px 12px!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.modern-table .ant-table-thead>tr>th{padding:9px 12px!important;border-radius:0!important}.modern-table .ant-table-cell-ellipsis,.modern-table .truncate{overflow:visible!important;text-overflow:clip!important;white-space:normal!important;max-height:none!important}.jobsCellLine{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.modern-table .ant-table-row-expand-icon-cell,.modern-table .ant-table-selection-column{text-align:center!important;vertical-align:middle!important;white-space:nowrap!important}.modern-table .ant-table-cell .anticon,.modern-table .ant-table-cell svg,.modern-table .ant-table-row-expand-icon{display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle!important}.modern-table .ant-table-expanded-row-fixed,.modern-table .ant-table-expanded-row>td>div{border:0!important}.modern-table .ant-table-tbody>tr{height:auto!important;min-height:44px!important}.modern-table .ant-table-cell{height:auto!important;max-height:none!important;overflow:visible!important}.modern-table .ant-table-cell .ant-tag,.modern-table .ant-table-cell .ant-typography,.modern-table .ant-table-cell a,.modern-table .ant-table-cell button,.modern-table .ant-table-cell>*{max-height:none!important;overflow:visible!important;line-height:1.45!important}.modern-table .ant-table-body{overflow-y:auto!important;overflow-x:hidden!important}[class*=Card]:not(.ant-card),[class*=card]:not(.ant-card){box-shadow:none!important}.group:hover,.hover\:border-\[var\(--borderColorStrong\)\]:hover,.hover\:border-\[var\(--colorBrand\)\]:hover{border-color:transparent!important;box-shadow:none!important}.active,.ant-list-item-selected,.ant-list-item.active,.ant-menu-item-selected,.ant-menu-submenu-selected>.ant-menu-submenu-title,.ant-segmented-item-selected,.ant-select-item-option-selected,.ant-table-row-selected>td,.ant-tabs-tab-active,.ant-tabs-tab.ant-tabs-tab-active,.ant-tree-node-selected,.selected,[aria-selected=true],[data-selected=true]{border-color:transparent!important;box-shadow:none!important;outline:0!important}
@@ -232,6 +232,17 @@
232
232
  "models": {
233
233
  "title": "Model Configuration",
234
234
  "description": "Manage providers and choose one model for the entire generation workflow",
235
+ "resetConfig": "Clear model config",
236
+ "resetConfigTitle": "Clear model configuration?",
237
+ "resetConfigBody": "Clears the selected model and the model list, and by default also removes providers, API keys and the embedding config (untick below to keep them). Re-add your service afterwards — protocol, endpoint and key from older versions are the usual source of incompatibility.",
238
+ "resetConfigIncludeAll": "Also clear providers and API keys",
239
+ "resetConfigBackupNote": "Either way, the original config file is backed up first (config.backup-<timestamp>.json) in the config directory — nothing is lost.",
240
+ "resetConfigDone": "Model configuration cleared",
241
+ "resetConfigBackup": "Original file backed up to {path}",
242
+ "resetConfigKeptProviders": "Providers and API keys were kept: click the provider card you want to use (the model id falls back to the service name — edit it if the provider needs a concrete model)",
243
+ "resetConfigFailed": "Failed to clear",
244
+ "configBrokenTitle": "Failed to read model configuration",
245
+ "configBrokenBody": "The config file is incompatible with this version or corrupted (e.g. written by an older version). Clear it and configure again — the original file is backed up first, and providers/keys are kept by default.",
235
246
  "modelList": "Model Services",
236
247
  "apiKey": "API Key",
237
248
  "baseUrl": "Base URL",
@@ -281,7 +292,8 @@
281
292
  "providerNamePlaceholder": "For example, deepseek-v4-pro",
282
293
  "modelIdentifier": "Model Identifier",
283
294
  "modelIdentifierPlaceholder": "For example, deepseek-v4-pro",
284
- "modelIdentifierHint": "Leave blank to use the service name as the model identifier, or enter the actual identifier accepted by the service."
295
+ "modelIdentifierHint": "Leave blank to use the service name as the model identifier, or enter the actual identifier accepted by the service.",
296
+ "modelIdentifierDefaulted": "Selected “{name}”: the model id is using the service name. If the provider requires a concrete model id (e.g. deepseek-chat, glm-4.6), edit it once."
285
297
  },
286
298
  "prompt": {
287
299
  "title": "Prompt Management",
@@ -232,6 +232,17 @@
232
232
  "models": {
233
233
  "title": "模型配置",
234
234
  "description": "管理供应商和生成模型,整个流程统一使用当前选中的模型",
235
+ "resetConfig": "清除模型配置",
236
+ "resetConfigTitle": "清除模型配置?",
237
+ "resetConfigBody": "会清空「当前选中的模型」与「模型列表」,并默认一并清除供应商与 API Key、嵌入模型(想保留钥匙的,取消下面那个勾选)。清完重新添加服务即可——旧版本留下的协议、地址、钥匙是最容易不兼容的地方,一起清掉最干净。",
238
+ "resetConfigIncludeAll": "连供应商与 API Key 一起清除",
239
+ "resetConfigBackupNote": "无论清哪一种,原配置文件都会先备份到配置目录(config.backup-<时间>.json),不会丢。",
240
+ "resetConfigDone": "模型配置已清除",
241
+ "resetConfigBackup": "原文件已备份到 {path}",
242
+ "resetConfigKeptProviders": "供应商与 API Key 已保留:点一下要用的供应商卡片即可重新选中模型(模型标识会先按服务名顶上,服务方要求具体型号时点「编辑」填一次)",
243
+ "resetConfigFailed": "清除失败",
244
+ "configBrokenTitle": "模型配置读取失败",
245
+ "configBrokenBody": "配置文件与当前版本不兼容或已损坏(例如旧版本写入的格式)。可一键清除后重新配置——原文件会先备份,供应商与密钥默认保留。",
235
246
  "modelList": "模型服务",
236
247
  "apiKey": "API Key",
237
248
  "baseUrl": "Base URL",
@@ -281,7 +292,8 @@
281
292
  "providerNamePlaceholder": "例如 deepseek-v4-pro",
282
293
  "modelIdentifier": "模型标识",
283
294
  "modelIdentifierPlaceholder": "例如 deepseek-v4-pro",
284
- "modelIdentifierHint": "不填时使用服务名称作为模型标识;需要时填写服务实际接受的标识。"
295
+ "modelIdentifierHint": "不填时使用服务名称作为模型标识;需要时填写服务实际接受的标识。",
296
+ "modelIdentifierDefaulted": "已选中「{name}」:模型标识暂用服务名。若服务方要求具体型号(如 deepseek-chat、glm-4.6),点「编辑」填一次。"
285
297
  },
286
298
  "prompt": {
287
299
  "title": "提示词管理",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customize-agent/server",
3
- "version": "4.60.31",
3
+ "version": "4.60.33",
4
4
  "description": "Customize Agent Web 管理控制台",
5
5
  "exports": {
6
6
  "./package.json": "./package.json"
@@ -36,9 +36,9 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@ant-design/icons": "^6.3.2",
39
- "@customize-agent/knowledge": "^5.2.12",
40
- "@customize-agent/llm": "^3.1.4",
41
- "@customize-agent/runtime": "^3.1.3",
39
+ "@customize-agent/knowledge": "^5.2.13",
40
+ "@customize-agent/llm": "^3.1.5",
41
+ "@customize-agent/runtime": "^3.1.4",
42
42
  "@napi-rs/canvas": "^0.1.82",
43
43
  "@types/nprogress": "^0.2.3",
44
44
  "antd": "^6.5.0",
@@ -1,39 +1,3 @@
1
- /**
2
- * 品牌月牙的**参数推算脚本**(2026-10-13 建;与 `src/components/BrandMoon.tsx` 配套)。
3
- *
4
- * 改形状的路径:调下面几个数 → `node scripts/brand-moon-fit.cjs` → 它打印
5
- * `BRAND_MOON_PATH` 与 `BRAND_MOON_TRANSFORM` → 粘回组件 → `node scripts/generate-brand-assets.cjs`
6
- * 重出站点图标 → **真浏览器看一眼**(形状靠读数字看不出来)。
7
- *
8
- * ## 形状是怎么定下来的(三段,都留了痕迹)
9
- * 1. **参照**:用户给的是「🌙 类似这种」。把系统 emoji 渲成 420×420 二值掩码当靶子做 IoU 拟合。
10
- * 2. **第一轮失败**:先试的是"外圆 + 更大的内圆"对称族(内圆包住外圆心那一种)——
11
- * 拟合上限只有 IoU≈0.64,渲出来用户评「不协调、不弯、不该细的不细,该饱满的不饱满」。
12
- * 原因很实在:对称族做不出 🌙 的关键特征——**一侧长而细的尖 + 饱满的肚子**。
13
- * 3. **第二轮成功**:换成经典"**圆咬圆**"(外圆 R=10,内圆偏心 (d,e)),拟合到 **IoU 0.90**
14
- * (最优 r=9.4、(2,−4.1))。
15
- * 4. **第三、四、五轮是"体重与弯度"**:用户依次给了三句——「该饱满的不饱满」(要肚子)、
16
- * 「整体还是有点粗」(降厚度到 0.240)、「有点不弯了」(**这暴露了我只拧了一个旋钮**)。
17
- * 形状的美学由**两个**数决定,改一个必须看一眼另一个:
18
- * - **厚度比**(内弧到外圆的最大径向差 / 2R):胖瘦;拟合解 0.287 → 现在 0.262;
19
- * - **包角**(外弧跨过多少度 = 开口的宽窄):弯度;第四轮 209° → 现在 **248°**。
20
- * 脚本会把两个数都打印出来,改参数后对一眼就知道是"细了还是粗了""弯了还是直了"。
21
- *
22
- * ## 朝向:**不照抄 emoji**(用户 2026-10-13 明确「方向不用改」)
23
- * 拟合出的最优朝向是 −62°,而 logo 沿用原来那版的姿态:**肚子在左、两尖朝右上**。
24
- * 脚本把这步写成 `postureRot()`:先把"肚子方向"转到正左(180°),再叠上原来的 −20° 倾角。
25
- *
26
- * ## 两个必须守住的细节(都踩过)
27
- * 1. **墨迹按"旋转后的真实包围盒"居中**:月牙的肉偏在一侧,墨迹盒不是外接方框,
28
- * 旋转之后包围盒中心还会再挪一点。第一版按外圆圆心定位 ⇒ 用户原话「不是居中的」。
29
- * 2. **变换顺序**:`translate/scale/translate/rotate` 在 SVG 里"从右往左"作用在点上、
30
- * 在 canvas 里"从左往右"作用在坐标系上——同一个书写顺序、相反的语义,写反不报错只偏心。
31
- *
32
- * ## 弧标志怎么来的(改结构时别自己猜)
33
- * 两尖 = 两圆交点;外弧必须**经过肚子**(外圆上离内圆心最远的点)、内弧必须经过**最深处**
34
- * (内圆上离外圆心最近的点)。脚本按"该弧是否包含这个点"反推 `large-arc` 与 `sweep`,
35
- * 并用"解析区域 vs 路径栅格化"的 IoU 自检(实测 0.98+ 才算对)。
36
- */
37
1
 
38
2
  const { createCanvas, Path2D } = require('@napi-rs/canvas');
39
3
  const fs = require('node:fs');
@@ -45,17 +9,6 @@ const INNER_R = 8.5; // 内圆半径
45
9
  const INNER_D = 3.399; // 内圆圆心 x
46
10
  const INNER_E = -1.585; // 内圆圆心 y(非零才有"一侧长角"的不对称)
47
11
  const TILT = -20; // 沿用原版的倾角
48
- /**
49
- * 墨迹长边在 24 格里的格数(21 = 敢占地方,小尺寸下更清晰)。
50
- *
51
- * ## ★ "细"和"弯"是一对反向的力——两个旋钮都要拧(2026-10-13 第五轮)
52
- * 用户先嫌「粗」(0.287 → 我把**厚度比**降到 0.240),紧接着嫌「不弯了」:
53
- * 厚度一降,那条弧就"直"了——因为**弯不弯是另一个旋钮**:**包角**(外弧跨过多少度,
54
- * 也就是两尖之间开口的宽窄)。第四轮只顾了厚度,包角还停在 209°。
55
- * 现在的取值:**包角 248°、厚度比 0.262**——比第四轮多弯 39°、体重只回了一点点。
56
- * 扫描脚本按"包角 × 厚度"两个维度各取 210/230/250° × 0.26/0.29 出代表,渲图目视选的。
57
- * 判据(脚本会打印):厚度比 = 内弧到外圆的最大径向差 / 2R;包角 = 360° − 2×(两尖与开口方向的夹角)。
58
- */
59
12
  const INK = 21;
60
13
  /**
61
14
  * **光学微调**(格;沿"开口方向"即右上,x/y 各 ±`OPTICAL_NUDGE/√2`)。