@customize-agent/server 4.60.2 → 4.60.3

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 (95) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +56 -54
  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/2328.js +1 -1
  7. package/.next/server/chunks/{7848.js → 4683.js} +86 -85
  8. package/.next/server/chunks/5304.js +1 -1
  9. package/.next/server/chunks/6321.js +1 -1
  10. package/.next/server/chunks/6822.js +1 -1
  11. package/.next/server/chunks/8204.js +1 -1
  12. package/.next/server/chunks/9399.js +1 -0
  13. package/.next/server/chunks/9666.js +55 -54
  14. package/.next/server/instrumentation.js +1 -1
  15. package/.next/server/instrumentation.js.nft.json +1 -1
  16. package/.next/server/middleware-build-manifest.js +1 -1
  17. package/.next/server/pages/404.html +1 -1
  18. package/.next/server/pages/500.html +1 -1
  19. package/.next/server/pages/api/documents/export.js +2 -2
  20. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  21. package/.next/server/pages/api/documents/generate/preview.js +1 -1
  22. package/.next/server/pages/api/documents/generate.js +1 -1
  23. package/.next/server/pages/api/health.js +1 -1
  24. package/.next/server/pages/canvas/[id].html +1 -1
  25. package/.next/server/pages/canvas.html +1 -1
  26. package/.next/server/pages/documents.html +1 -1
  27. package/.next/server/pages/guide.html +1 -1
  28. package/.next/server/pages/index.html +1 -1
  29. package/.next/server/pages/knowledge/file-detail.html +1 -1
  30. package/.next/server/pages/knowledge/files.html +1 -1
  31. package/.next/server/pages/knowledge/manage.html +1 -1
  32. package/.next/server/pages/knowledge/source-preview.html +1 -1
  33. package/.next/server/pages/knowledge.html +1 -1
  34. package/.next/server/pages/models.html +1 -1
  35. package/.next/server/pages/overview.html +1 -1
  36. package/.next/server/pages/prompt.html +1 -1
  37. package/.next/server/pages/settings.html +1 -1
  38. package/.next/server/pages/skills/[id]/edit.html +1 -1
  39. package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
  40. package/.next/server/pages/skills/[id].html +1 -1
  41. package/.next/server/pages/skills/[id].js.nft.json +1 -1
  42. package/.next/server/pages/skills/new.html +1 -1
  43. package/.next/server/pages/skills/new.js.nft.json +1 -1
  44. package/.next/server/pages/skills.html +1 -1
  45. package/.next/server/pages/system/logs.html +1 -1
  46. package/.next/server/pages-manifest.json +29 -29
  47. package/.next/static/7ea0ee326182fc159e629b4cd9354c5c800c7d5e156fcd6533182444b20d26cf/_buildManifest.js +1 -0
  48. package/.next/static/chunks/2-8570cd2beee4da6e.js +1 -0
  49. package/.next/static/chunks/257-3ea888b096943bc8.js +1 -0
  50. package/.next/static/chunks/280-3ce590d421b5c47d.js +16 -0
  51. package/.next/static/chunks/425-42f2568bcdd98f4c.js +1 -0
  52. package/.next/static/chunks/530-a5a65dc8adb1ee11.js +1 -0
  53. package/.next/static/chunks/564-d3426eef3e3e415b.js +4 -0
  54. package/.next/static/chunks/576-6699fed6c88502fe.js +1 -0
  55. package/.next/static/chunks/579-fc0a2eb64aedb001.js +1 -0
  56. package/.next/static/chunks/{795-1a33b085051ecf2b.js → 795-1c1cb3bf1f600e99.js} +1 -1
  57. package/.next/static/chunks/819-96247c9054ad9683.js +1 -0
  58. package/.next/static/chunks/{964-82cc4701f08f7351.js → 964-569c27befeaff602.js} +2 -2
  59. package/.next/static/chunks/pages/{_app-3df96a32b2c9a6ca.js → _app-10f13111671af8a4.js} +3 -3
  60. package/.next/static/chunks/pages/canvas/[id]-534b45f39f39630c.js +1 -0
  61. package/.next/static/chunks/pages/{canvas-8372faba7b5bb116.js → canvas-ffb08963e5cf9558.js} +1 -1
  62. package/.next/static/chunks/pages/knowledge/{file-detail-6c8b86752d2ddf88.js → file-detail-4ccc50ced6382dab.js} +1 -1
  63. package/.next/static/chunks/pages/knowledge/source-preview-56ce59763fa015db.js +1 -0
  64. package/.next/static/chunks/pages/knowledge-84e386d765ddd311.js +1 -0
  65. package/.next/static/chunks/pages/{models-dde7dc26b2ee4b83.js → models-5eee2d09deb081fb.js} +1 -1
  66. package/.next/static/chunks/pages/prompt-f00bf2272142bfa1.js +1 -0
  67. package/.next/static/chunks/pages/{settings-8ebbd4413f976a60.js → settings-f6dfff648cf9ac0e.js} +1 -1
  68. package/.next/static/chunks/pages/skills/[id]/{edit-334c249d48dc651d.js → edit-89bbed9a3a854b04.js} +1 -1
  69. package/.next/static/chunks/pages/skills/[id]-101d753aa8fbf7a9.js +1 -0
  70. package/.next/static/chunks/pages/skills/{new-750c28325b6c869a.js → new-124599c772150a1d.js} +1 -1
  71. package/.next/static/chunks/pages/{skills-25f02f34e4a24e7e.js → skills-476714776be63ce5.js} +1 -1
  72. package/.next/static/chunks/pages/system/logs-40edb648d89b0749.js +1 -0
  73. package/.next/static/css/e67420f8d0ea180d.css +1 -0
  74. package/package.json +1 -1
  75. package/public/apple-touch-icon.png +0 -0
  76. package/public/favicon.ico +0 -0
  77. package/public/favicon.svg +7 -0
  78. package/scripts/generate-brand-assets.cjs +109 -0
  79. package/.next/static/cf07df1d78876548cb59ce9935b756d62660ad2a6b02180bef97865f98fcc4c8/_buildManifest.js +0 -1
  80. package/.next/static/chunks/257-9484b4285bd5f43b.js +0 -1
  81. package/.next/static/chunks/530-ccc3837d353bcf74.js +0 -1
  82. package/.next/static/chunks/573-c52901488f5731dd.js +0 -4
  83. package/.next/static/chunks/576-052a39d403d5d32e.js +0 -1
  84. package/.next/static/chunks/638-29ddb55b708c7969.js +0 -1
  85. package/.next/static/chunks/712-1f2d7c40d613f4d8.js +0 -1
  86. package/.next/static/chunks/815-585fb0b4aa9b369c.js +0 -16
  87. package/.next/static/chunks/933-e9c4889bb9f825ce.js +0 -1
  88. package/.next/static/chunks/pages/canvas/[id]-996d9a43ff45a4b3.js +0 -1
  89. package/.next/static/chunks/pages/knowledge/source-preview-c803a44df4b1d2f2.js +0 -1
  90. package/.next/static/chunks/pages/knowledge-135c4c9260f07108.js +0 -1
  91. package/.next/static/chunks/pages/prompt-7559b2569b3934a5.js +0 -1
  92. package/.next/static/chunks/pages/skills/[id]-eb1bdec00ba09ad2.js +0 -1
  93. package/.next/static/chunks/pages/system/logs-e08749c3a8f9a104.js +0 -1
  94. package/.next/static/css/5bab0d7ea874d4e0.css +0 -1
  95. /package/.next/static/{cf07df1d78876548cb59ce9935b756d62660ad2a6b02180bef97865f98fcc4c8 → 7ea0ee326182fc159e629b4cd9354c5c800c7d5e156fcd6533182444b20d26cf}/_ssgManifest.js +0 -0
@@ -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;--container-7xl:80rem;--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)}.mr-4{margin-right:calc(var(--spacing) * 4)}.\!mb-0{margin-bottom:0!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.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-caption{display:table-caption}.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-auto{height:auto}.h-full{height:100%}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-\[170px\]{max-height:170px}.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-16{width:calc(var(--spacing) * 16)}.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-7xl{max-width:var(--container-7xl)}.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-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-y-1{row-gap:var(--spacing)}.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-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-5{padding-inline:calc(var(--spacing) * 5)}.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-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.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)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-16{padding-top:calc(var(--spacing) * 16)}.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)}.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\: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\,2fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}.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}}@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\: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-2{grid-column:span 2/span 2}.xl\:grid-cols-2{grid-template-columns:repeat(2,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)}}}: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;border:1px solid var(--canvasSectionBorder);background:var(--canvasFloatBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;position:absolute;box-shadow:0 6px 24px #00000014}.canvasToolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex;top:12px}.canvasInputBar,.canvasToolbar{padding:8px 12px;left:12px;right:12px}.canvasInputBar{display:block;bottom: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{box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:0;padding:0;left:50%;right:auto;transform:translate(-50%)}.canvasInputPanel{animation:canvasPanelIn .18s ease-out}.canvasInputPanel.isLeaving{animation:canvasPanelOut .2s ease-in forwards}.canvasInputHandleRow{justify-content:center;margin-bottom:4px;display:flex}.canvasInputHandle{width:44px;height:18px;color:var(--colorTextTertiary);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:background .15s,color .15s;display:inline-flex}.canvasInputHandle:hover{background:var(--colorBgHover);color:var(--colorText)}.canvasInputHandle:focus-visible{outline:2px solid var(--colorAccent);outline-offset:1px}.canvasInputHandle.isCollapsed{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);height:30px;color:var(--colorTextSecondary);box-shadow:0 6px 24px #0000001f}.canvasInputHandle.isCollapsed:hover{color:var(--colorText);transform:scale(1.06)}@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}}:root{--pageStickyTop:68px}.skillStickyHeader{top:var(--pageStickyTop);z-index:5;background:linear-gradient(to bottom,var(--colorBg) 82%,transparent);padding-bottom:12px;position:sticky}@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:hidden;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:0!important;min-height:auto!important;margin-bottom:16px}.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:14px!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:18px!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}.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}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@customize-agent/server",
3
- "version": "4.60.2",
3
+ "version": "4.60.3",
4
4
  "description": "Customize Agent Web 管理控制台",
5
5
  "exports": {
6
6
  "./package.json": "./package.json"
Binary file
Binary file
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-label="Customize Agent">
2
+ <!-- 由 scripts/generate-brand-assets.cjs 从 src/components/BrandMoon.tsx 生成,勿手改 -->
3
+ <rect width="24" height="24" rx="5.76" fill="#111111"/>
4
+ <g transform="translate(12 12) rotate(-20) scale(0.7800) translate(-12 -12)">
5
+ <path d="M12 2 A10 10 0 1 0 12 22 A11 11 0 0 1 12 2 Z" fill="#ffffff"/>
6
+ </g>
7
+ </svg>
@@ -0,0 +1,109 @@
1
+ /**
2
+ * 站点图标生成(2026-10-13):从**品牌月亮组件**里读形状,写出
3
+ * `public/favicon.svg`、`public/favicon.ico`、`public/apple-touch-icon.png`。
4
+ *
5
+ * ## 为什么要有这个脚本(而不是手放三个文件)
6
+ * 用户口径是「我们网站的 icon 也需要使用这个图标」——同一轮月亮的**三份格式**。
7
+ * 手工放三个文件的下场是可预期的:改了侧栏的月亮,图标还是上一版的(本仓对"两处各一份"的
8
+ * 那一类漂移有过太多次教训)。故:形状只有 `src/components/BrandMoon.tsx` 一个来源,
9
+ * 本脚本从那个文件里读 `BRAND_MOON_PATH` 与 `BRAND_MOON_ROTATION`,现场渲染出全部图标。
10
+ *
11
+ * ## 跑法(改了月亮形状就跑一次,并把三个产物一起提交)
12
+ * ```
13
+ * cd apps/server && node scripts/generate-brand-assets.cjs
14
+ * ```
15
+ * 渲染用 `@napi-rs/canvas`(本身就是本包的依赖,不再引浏览器/图形工具链)。
16
+ * ICO 按 PNG 载荷直出(`favicon.ico` = 6 字节头 + 每尺寸 16 字节目录项 + PNG 数据)——
17
+ * 现代浏览器都吃这种 ICO,且不必再引一个 ico 编码库。
18
+ */
19
+
20
+ const fs = require('node:fs');
21
+ const path = require('node:path');
22
+ const { createCanvas, Path2D } = require('@napi-rs/canvas');
23
+
24
+ const SERVER_ROOT = path.resolve(__dirname, '..');
25
+ const COMPONENT = path.join(SERVER_ROOT, 'src/components/BrandMoon.tsx');
26
+ const PUBLIC_DIR = path.join(SERVER_ROOT, 'public');
27
+
28
+ /** 从组件源码里取形状常量(TS 文件带类型注解,正则取字符串字面量即可,不必上编译器) */
29
+ function readBrandShape() {
30
+ const source = fs.readFileSync(COMPONENT, 'utf8');
31
+ const d = /BRAND_MOON_PATH\s*=\s*'([^']+)'/.exec(source)?.[1];
32
+ const rotation = Number(/BRAND_MOON_ROTATION\s*=\s*(-?\d+)/.exec(source)?.[1]);
33
+ if (!d || !Number.isFinite(rotation)) {
34
+ throw new Error(`${COMPONENT} 里找不到 BRAND_MOON_PATH / BRAND_MOON_ROTATION(脚本的正则口径失效了)`);
35
+ }
36
+ return { d, rotation };
37
+ }
38
+
39
+ /**
40
+ * 画一枚图标:**深色圆角方块 + 白色细弯月**(用户选定的形态:
41
+ * 「黑底圆角方块 + 白弯月,暗色下自动反色」)。
42
+ * 深色用 `#111`(与侧栏那个方块同一个色:全局样式里是 `bg-black`,纯黑在深色屏幕上会糊边,
43
+ * 这里取近黑,观感一致且边缘干净)。
44
+ */
45
+ function renderIcon({ d, rotation }, size, { background = '#111111', moon = '#ffffff', radiusRatio = 0.24, insetRatio = 0.78 } = {}) {
46
+ const canvas = createCanvas(size, size);
47
+ const ctx = canvas.getContext('2d');
48
+ if (background) {
49
+ ctx.fillStyle = background;
50
+ ctx.beginPath();
51
+ ctx.roundRect(0, 0, size, size, size * radiusRatio);
52
+ ctx.fill();
53
+ }
54
+ const box = size * insetRatio;
55
+ const k = box / 24;
56
+ ctx.save();
57
+ ctx.translate(size / 2, size / 2);
58
+ ctx.rotate((rotation * Math.PI) / 180);
59
+ ctx.scale(k, k);
60
+ ctx.translate(-12, -12);
61
+ ctx.fillStyle = moon;
62
+ ctx.fill(new Path2D(d));
63
+ ctx.restore();
64
+ return canvas.toBuffer('image/png');
65
+ }
66
+
67
+ /** 单张 PNG 装进 ICO 容器(ICONDIR + ICONDIRENTRY + PNG 载荷) */
68
+ function buildIco(entries) {
69
+ const header = Buffer.alloc(6);
70
+ header.writeUInt16LE(0, 0); // reserved
71
+ header.writeUInt16LE(1, 2); // type: 1 = icon
72
+ header.writeUInt16LE(entries.length, 4);
73
+ const dir = Buffer.alloc(16 * entries.length);
74
+ let offset = 6 + dir.length;
75
+ entries.forEach((entry, index) => {
76
+ const at = index * 16;
77
+ dir.writeUInt8(entry.size >= 256 ? 0 : entry.size, at); // 宽(256 记 0)
78
+ dir.writeUInt8(entry.size >= 256 ? 0 : entry.size, at + 1); // 高
79
+ dir.writeUInt8(0, at + 2); // 调色板数
80
+ dir.writeUInt8(0, at + 3); // 保留
81
+ dir.writeUInt16LE(1, at + 4); // 颜色平面
82
+ dir.writeUInt16LE(32, at + 6); // 位深
83
+ dir.writeUInt32LE(entry.png.length, at + 8);
84
+ dir.writeUInt32LE(offset, at + 12);
85
+ offset += entry.png.length;
86
+ });
87
+ return Buffer.concat([header, dir, ...entries.map(entry => entry.png)]);
88
+ }
89
+
90
+ /** SVG 版图标:现代浏览器优先用它(矢量、任意缩放都锐利) */
91
+ function buildSvg({ d, rotation }, { background = '#111111', moon = '#ffffff', radiusRatio = 0.24, insetRatio = 0.78 } = {}) {
92
+ const box = 24 * insetRatio;
93
+ const scale = box / 24;
94
+ return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-label="Customize Agent">
95
+ <!-- 由 scripts/generate-brand-assets.cjs 从 src/components/BrandMoon.tsx 生成,勿手改 -->
96
+ <rect width="24" height="24" rx="${(24 * radiusRatio).toFixed(2)}" fill="${background}"/>
97
+ <g transform="translate(12 12) rotate(${rotation}) scale(${scale.toFixed(4)}) translate(-12 -12)">
98
+ <path d="${d}" fill="${moon}"/>
99
+ </g>
100
+ </svg>
101
+ `;
102
+ }
103
+
104
+ const shape = readBrandShape();
105
+ fs.writeFileSync(path.join(PUBLIC_DIR, 'favicon.svg'), buildSvg(shape));
106
+ const icoSizes = [16, 32, 48];
107
+ fs.writeFileSync(path.join(PUBLIC_DIR, 'favicon.ico'), buildIco(icoSizes.map(size => ({ size, png: renderIcon(shape, size) }))));
108
+ fs.writeFileSync(path.join(PUBLIC_DIR, 'apple-touch-icon.png'), renderIcon(shape, 180, { radiusRatio: 0.22, insetRatio: 0.74 }));
109
+ console.log(`[brand] 已生成 favicon.svg / favicon.ico(${icoSizes.join(',')}) / apple-touch-icon.png(形状来自 ${path.relative(SERVER_ROOT, COMPONENT)})`);
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(s,e,a,c,t,i,n,d,k,l,u,g,f,h,b,j,r,o,p,w,m,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:0,errorRate:1e-4,numBits:0,numHashes:h,bitArray:[]},__routerFilterDynamic:{numItems:l,errorRate:1e-4,numBits:l,numHashes:h,bitArray:[]},"/":[b,j,"static/chunks/pages/index-cb27bfa36c212ab5.js"],"/_error":["static/chunks/pages/_error-282257fbdcc167b4.js"],"/canvas":[s,e,c,t,r,o,"static/chunks/pages/canvas-8372faba7b5bb116.js"],"/canvas/[id]":[s,e,a,c,i,t,u,r,"static/chunks/638-29ddb55b708c7969.js",o,"static/chunks/pages/canvas/[id]-996d9a43ff45a4b3.js"],"/documents":["static/chunks/pages/documents-e6a80f2de39c6fd2.js"],"/guide":[s,a,i,n,"static/chunks/162-a5be07e04aedf98a.js","static/chunks/pages/guide-82ae330966139191.js"],"/knowledge":[s,e,a,c,t,d,k,p,"static/chunks/pages/knowledge-135c4c9260f07108.js"],"/knowledge/file-detail":[s,e,a,c,i,t,n,d,k,u,p,"static/chunks/pages/knowledge/file-detail-6c8b86752d2ddf88.js"],"/knowledge/files":["static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js"],"/knowledge/manage":["static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js"],"/knowledge/source-preview":[s,e,a,c,i,t,n,u,w,"static/chunks/781-a6b83dbcd1a33cab.js","static/chunks/pages/knowledge/source-preview-c803a44df4b1d2f2.js"],"/models":[s,e,c,d,g,w,"static/chunks/pages/models-dde7dc26b2ee4b83.js"],"/overview":[b,j,"static/chunks/pages/overview-8713b5d37af0eeb3.js"],"/prompt":[s,e,a,c,t,d,k,"static/chunks/711-40c1a2dbd15c2807.js","static/chunks/pages/prompt-7559b2569b3934a5.js"],"/settings":["static/chunks/pages/settings-8ebbd4413f976a60.js"],"/skills":[s,e,a,i,t,n,d,k,"static/chunks/712-1f2d7c40d613f4d8.js","static/chunks/pages/skills-25f02f34e4a24e7e.js"],"/skills/new":[s,e,a,c,i,n,g,m,_,"static/chunks/pages/skills/new-750c28325b6c869a.js"],"/skills/[id]":[a,i,n,"static/chunks/573-c52901488f5731dd.js","static/chunks/pages/skills/[id]-eb1bdec00ba09ad2.js"],"/skills/[id]/edit":[s,e,a,c,i,n,g,m,_,"static/chunks/pages/skills/[id]/edit-334c249d48dc651d.js"],"/system/logs":[s,e,a,c,t,d,k,"static/chunks/pages/system/logs-e08749c3a8f9a104.js"],sortedPages:["/","/_app","/_error","/canvas","/canvas/[id]","/documents","/guide","/knowledge","/knowledge/file-detail","/knowledge/files","/knowledge/manage","/knowledge/source-preview","/models","/overview","/prompt","/settings","/skills","/skills/new","/skills/[id]","/skills/[id]/edit","/system/logs"]}}("static/chunks/324-650dc02536b071bf.js","static/chunks/815-585fb0b4aa9b369c.js","static/chunks/665-0634aa49137defc4.js","static/chunks/576-052a39d403d5d32e.js","static/chunks/499-2233cadc6d4da647.js","static/chunks/569-2bfdde9e402af5b2.js","static/chunks/787-207289f4bb577708.js","static/chunks/338-19ccbaec57a7bf9c.js","static/chunks/964-82cc4701f08f7351.js",0,"static/chunks/808-0506edc7454b5c0e.js","static/chunks/864-b06700e1a4e573f2.js",1e-4,NaN,"static/chunks/880-64d8a15c524106d2.js","static/chunks/795-1a33b085051ecf2b.js","static/chunks/127-7d37d37dab02bd10.js","static/chunks/530-ccc3837d353bcf74.js","static/css/2da1c822e3bdb4bb.css","static/chunks/318-ca122b774ea4ee84.js","static/chunks/933-e9c4889bb9f825ce.js","static/chunks/257-9484b4285bd5f43b.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[257],{33061:(e,s,t)=>{t.d(s,{G:()=>a});var l=t(97109),r=t(35071);function a(){let[e,s]=(0,l.useState)([]),[t,a]=(0,l.useState)(),[i,n]=(0,l.useState)([]),[c,d]=(0,l.useState)(!0),[o,m]=(0,l.useState)(""),h=(0,l.useCallback)(async()=>{d(!0);let e=await (0,r.SS)("/api/skills");if(e.ok){var t;s(e.data.skills),a(e.data.options),n(null!=(t=e.data.invalid)?t:[]),m("")}else m(e.message);d(!1)},[]);return(0,l.useEffect)(()=>{h()},[h]),{skills:e,options:t,invalid:i,loading:c,failed:o,reload:h,applySkills:s}}},35071:(e,s,t)=>{t.d(s,{F:()=>a,Ie:()=>d,Oz:()=>n,RW:()=>h,SS:()=>r,eT:()=>l,m6:()=>c});let l={"Content-Type":"application/json"};async function r(e,s){try{let l,r=await fetch(e,s),a=await r.text();try{l=a?JSON.parse(a):void 0}catch(e){l=void 0}if(!r.ok){var t;let e=null!=l?l:{};return{ok:!1,status:r.status,message:null!=(t=e.error)?t:"HTTP ".concat(r.status),issues:Array.isArray(e.errors)?e.errors:[]}}return{ok:!0,data:l}}catch(e){return{ok:!1,status:0,message:e instanceof Error?e.message:"网络请求失败",issues:[]}}}let a="内置技能只读,随应用版本更新。可新建用户技能进行配置。";function i(e){return[...new Set((null!=e?e:[]).map(e=>e.trim()).filter(e=>e.length>0))]}function n(e){return"string"==typeof e?e:e.phrase}function c(e){return{id:e.id,enabled:e.enabled,match:{chapterDomain:e.match.chapterDomain,projectTypes:[...e.match.projectTypes],sectionKeywords:[...e.match.sectionKeywords],...e.match.sectionRegex?{sectionRegex:e.match.sectionRegex}:{}},requires:e.requires.map(e=>({...e})),structure:e.structure.map(e=>{var s;return{title:e.title,required:[...null!=(s=e.required)?s:[]]}}),forbidden:e.forbidden.map(n),knowledge:e.knowledge.map(e=>({kind:e.kind,...e.ids?{ids:[...e.ids]}:{},...e.note?{note:e.note}:{}})),acceptance:e.acceptance.map(e=>({kind:"llmChecklist",checklistItems:[...e.items]})),...void 0!==e.outputTitle?{outputTitle:e.outputTitle}:{},...e.chapterChecklist?{chapterChecklist:{...e.chapterChecklist,...e.chapterChecklist.sections?{sections:[...e.chapterChecklist.sections]}:{}}}:{}}}function d(){return{id:"skill-".concat(Date.now()),enabled:!0,match:{projectTypes:[],sectionKeywords:[]},requires:[{source:"boq",required:!1}],structure:[{}],forbidden:[],knowledge:[],acceptance:[{kind:"llmChecklist",checklistItems:[]}]}}function o(e){var s;return(null!=(s=e.ids)?s:[]).length>0}function m(e){var s;return(null!=(s=e.checklistItems)?s:[]).length>0}function h(e,s,t){var l,r,a,n,c,d,h,u,x,p;let j={chapterDomain:null==(l=e.match)?void 0:l.chapterDomain,projectTypes:[...null!=(d=null==(r=e.match)?void 0:r.projectTypes)?d:[]],sectionKeywords:i(null==(a=e.match)?void 0:a.sectionKeywords),...(null==(c=e.match)||null==(n=c.sectionRegex)?void 0:n.trim())?{sectionRegex:e.match.sectionRegex.trim()}:{}},A=(null!=(h=e.requires)?h:[]).filter(e=>{var s;return(null!=(s=e.key)?s:"").trim().length>0}).map(e=>{var s;return{key:(null!=(s=e.key)?s:"").trim(),source:e.source,required:!0===e.required}}),y=(null!=(u=e.structure)?u:[]).filter(e=>{var s;return(null!=(s=e.title)?s:"").trim().length>0}).map(e=>{var s;return{title:(null!=(s=e.title)?s:"").trim(),required:i(e.required)}}),g=(null!=(x=e.knowledge)?x:[]).filter(o).map(e=>{var s;return{kind:"processCard",ids:i(e.ids),...(null==(s=e.note)?void 0:s.trim())?{note:e.note.trim()}:{}}}),v=(null!=(p=e.acceptance)?p:[]).filter(m).map(e=>({kind:"llmChecklist",items:i(e.checklistItems),nonDeterministic:!0}));return{id:e.id.trim(),version:s,source:"user",enabled:!1!==e.enabled,match:j,requires:A,structure:y,forbidden:i(e.forbidden),knowledge:g,acceptance:v,...function(e){var s,t,l,r;let a=null!=(r=null==(s=e.outputTitle)?void 0:s.trim())?r:"",n=e.chapterChecklist,c={sections:i(null==n?void 0:n.sections),queries:i(null==n?void 0:n.queries),requiredFacts:i(null==n?void 0:n.requiredFacts),tableSections:i(null==n?void 0:n.tableSections),tableRequirements:i(null==n?void 0:n.tableRequirements),pinnedEvidenceFilePaths:i(null==n?void 0:n.pinnedEvidenceFilePaths)},d=!!(null==n||null==(t=n.purpose)?void 0:t.trim())||Object.values(c).some(e=>e.length>0);return{...a?{outputTitle:a}:{},...d?{chapterChecklist:{...(null==n||null==(l=n.purpose)?void 0:l.trim())?{purpose:n.purpose.trim()}:{},...Object.fromEntries(Object.entries(c).filter(e=>{let[,s]=e;return s.length>0}))}}:{}}}(e),...t?{examples:t}:{}}}},62561:(e,s,t)=>{t.d(s,{e:()=>n});var l=t(65321),r=t(43220),a=t.n(r),i=t(47210);function n(e){let{title:s,description:t,extra:r}=e;return(0,l.jsx)("div",{className:"bg-[var(--colorBgContainer)] rounded-2xl border border-[var(--borderColor)] p-6 mb-6",children:(0,l.jsxs)("div",{className:"flex flex-col md:flex-row md:items-center justify-between gap-6",children:[(0,l.jsxs)("div",{className:"flex items-center min-w-0",children:[(0,l.jsxs)(a(),{href:"/skills",className:"mr-4 text-sm text-[var(--colorTextSecondary)] hover:text-[var(--colorText)] inline-flex items-center gap-1 shrink-0",children:[(0,l.jsx)(i.A,{})," 返回技能库"]}),(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("h1",{className:"text-2xl font-bold text-[var(--colorText)] mb-1 truncate",children:s}),t?(0,l.jsx)("p",{className:"text-sm text-[var(--colorTextSecondary)] m-0",children:t}):null]})]}),r?(0,l.jsx)("div",{className:"shrink-0 flex items-center gap-2",children:r}):null]})})}},75257:(e,s,t)=>{t.d(s,{q:()=>z});var l=t(65321),r=t(97109),a=t(86109),i=t(48399),n=t(17807),c=t(63455),d=t(88762),o=t(85493),m=t(84253),h=t(85114),u=t(33442),x=t(99650),p=t(67547),j=t(43220),A=t.n(j),y=t(62561),g=t(7576),v=t(44534),k=t(68787),f=t(57271),b=t(11702),w=t(58209),I=t(54746),C=t(86193),N=t(32244);let{Paragraph:S,Text:q}=i.A;function T(e){var s,t;let{form:r,options:a,idLocked:i}=e,n=(0,N.Vr)(),d=a.chapterDomains.map(e=>({value:e.value,label:e.label,title:e.note})),m=a.projectTypes.map(e=>({value:e.value,label:e.label})),x=a.factSources.map(e=>({value:e.value,label:e.label})),p=a.processCards.map(e=>({value:e.value,label:e.label}));return(0,l.jsxs)(c.A,{form:r,layout:"vertical",children:[(0,l.jsx)(c.A.Item,{name:"id",label:"技能 ID",rules:[{required:!0,message:"技能 ID 必填"}],extra:"技能的唯一标识:使用小写字母、数字和连字符,以字母开头。",children:(0,l.jsx)(g.A,{disabled:i,placeholder:"例如 c02-major-content-building"})}),(0,l.jsx)(c.A.Item,{name:"enabled",label:"启用",valuePropName:"checked",children:(0,l.jsx)(v.A,{})}),(0,l.jsxs)(k.A,{size:"small",title:"匹配条件",className:"rounded-2xl mb-4",children:[(0,l.jsx)(c.A.Item,{name:["match","chapterDomain"],label:"章域",rules:[{required:!0,message:"章域必选"}],extra:"选择技能相关的专业内容范围。",children:(0,l.jsx)(f.A,{options:d,placeholder:"选择本章所属的内容域"})}),(0,l.jsx)(c.A.Item,{name:["match","projectTypes"],label:"适用工程类型",extra:"留空表示不限定工程类型,使用时仍需核对具体对象与工况。",children:(0,l.jsx)(f.A,{mode:"multiple",allowClear:!0,options:m,placeholder:"全类型"})}),(0,l.jsx)(c.A.Item,{name:["match","sectionKeywords"],label:"小节标题关键词",extra:"用于匹配相关小节标题,可输入多个关键词。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","," "],placeholder:"输入后回车,例如:主要施工 / 分部分项"})}),(0,l.jsx)(c.A.Item,{name:["match","sectionRegex"],label:"小节标题匹配表达式(可选)",extra:"填写正则表达式文本;复杂或不安全的表达式会被校验拒绝。",children:(0,l.jsx)(g.A,{placeholder:"例如 交通导改|导行|管线保护"})})]}),(0,l.jsx)(k.A,{size:"small",title:"所需项目资料",className:"rounded-2xl mb-4",children:(0,l.jsx)(c.A.List,{name:"requires",children:(e,s)=>{let{add:t,remove:r}=s;return(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:s,name:t,...a}=e;return(0,l.jsxs)(u.A,{align:"baseline",className:"w-full",wrap:!0,children:[(0,l.jsx)(c.A.Item,{...a,name:[t,"key"],rules:[{required:!0,message:"事实键必填"}],children:(0,l.jsx)(g.A,{placeholder:"事实键,如 boq.divisions",style:{width:260}})}),(0,l.jsx)(c.A.Item,{...a,name:[t,"source"],rules:[{required:!0,message:"来源必选"}],children:(0,l.jsx)(f.A,{options:x,placeholder:"事实来源",style:{width:160}})}),(0,l.jsx)(c.A.Item,{...a,name:[t,"required"],valuePropName:"checked",children:(0,l.jsx)(v.A,{checkedChildren:"必需",unCheckedChildren:"可选"})}),(0,l.jsx)(h.Ay,{type:"text",danger:!0,icon:(0,l.jsx)(w.A,{}),onClick:()=>r(t)})]},s)}),(0,l.jsxs)(h.Ay,{type:"dashed",icon:(0,l.jsx)(I.A,{}),onClick:()=>t({source:"boq",required:!1}),children:[n("common.add"),"事实需求"]})]})}})}),(0,l.jsx)(k.A,{size:"small",title:"相关专业主题",className:"rounded-2xl mb-4",children:(0,l.jsx)(c.A.List,{name:"structure",children:(e,s)=>{let{add:t,remove:r}=s;return(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:s,name:t,...a}=e;return(0,l.jsxs)(u.A,{align:"baseline",className:"w-full",wrap:!0,children:[(0,l.jsx)(c.A.Item,{...a,name:[t,"title"],rules:[{required:!0,message:"专业主题标题必填"}],children:(0,l.jsx)(g.A,{placeholder:"专业主题标题",style:{width:420}})}),(0,l.jsx)(c.A.Item,{...a,name:[t,"required"],extra:"描述该主题的专业内容;按实际对象选用,不写固定字数或参数数量。",children:(0,l.jsx)(f.A,{mode:"tags",style:{minWidth:320},placeholder:"工序、适用条件、控制要点或验收要求"})}),(0,l.jsx)(h.Ay,{type:"text",danger:!0,icon:(0,l.jsx)(w.A,{}),onClick:()=>r(t)})]},s)}),(0,l.jsxs)(h.Ay,{type:"dashed",icon:(0,l.jsx)(I.A,{}),onClick:()=>t({required:[]}),children:[n("common.add"),"专业主题"]})]})}})}),(0,l.jsxs)(k.A,{size:"small",title:"文档业务提示",className:"rounded-2xl mb-4",children:[(0,l.jsx)(c.A.Item,{name:"outputTitle",extra:"提供文档名称建议,实际名称由本次生成配置确定。",children:(0,l.jsx)(g.A,{placeholder:"留空 = 本技能不对文档名称表态",style:{maxWidth:420}})}),(0,l.jsxs)("div",{className:"mt-2 mb-1",children:[(0,l.jsx)(q,{strong:!0,children:"章级清单"}),(0,l.jsx)(q,{type:"secondary",className:"text-xs ml-2",children:"提供章级候选内容与资料检索提示,实际职责由本次规划确定;专业主题在上方单独填写。"})]}),(0,l.jsx)(c.A.Item,{name:["chapterChecklist","purpose"],label:"章级内容提示",extra:"说明本章关注的专业内容。",children:(0,l.jsx)(g.A,{placeholder:"例如:说明本工程的安全管理目标与危大工程清单",style:{maxWidth:640}})}),(0,l.jsxs)(u.A,{wrap:!0,align:"start",children:[(0,l.jsx)(c.A.Item,{name:["chapterChecklist","queries"],label:"资料检索词",extra:"帮助定位相关资料。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","],style:{minWidth:260},placeholder:"回车添加"})}),(0,l.jsx)(c.A.Item,{name:["chapterChecklist","requiredFacts"],label:"待核事实提示",extra:"提示应查证的项目事实。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","],style:{minWidth:260},placeholder:"回车添加"})})]}),(0,l.jsxs)(u.A,{wrap:!0,align:"start",children:[(0,l.jsx)(c.A.Item,{name:["chapterChecklist","tableSections"],label:"成表内容建议",extra:"提示适合用表格表达的内容。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","],style:{minWidth:260},placeholder:"回车添加"})}),(0,l.jsx)(c.A.Item,{name:["chapterChecklist","tableRequirements"],label:"表格表达提示",extra:"提示表格列项与表达方式。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","],style:{minWidth:260},placeholder:"回车添加"})})]}),(0,l.jsx)(c.A.Item,{name:["chapterChecklist","pinnedEvidenceFilePaths"],label:"相关证据文件",extra:"填写需要关注的文件名;实际读取范围和来源资格仍由本次任务核对。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","],style:{maxWidth:640},placeholder:"回车添加文件名"})}),(null!=(t=null==(s=a.absentCarriers)?void 0:s.length)?t:0)>0&&(0,l.jsx)(o.A,{type:"info",showIcon:!0,className:"mt-3",message:"排版设置",description:(0,l.jsx)("div",{className:"text-xs",children:a.absentCarriers.map(e=>(0,l.jsxs)("div",{children:[e.label,":","formatting"===e.id?"排版要求由招标资料与导出设置管理,技能编辑器提供专业内容。":e.note]},e.id))})})]}),(0,l.jsx)(k.A,{size:"small",title:"禁写项",className:"rounded-2xl mb-4",children:(0,l.jsx)(c.A.Item,{name:"forbidden",extra:"填写需避免的不适用内容或表达;没有禁写项时留空。",children:(0,l.jsx)(f.A,{mode:"tags",tokenSeparators:[",",","],placeholder:"输入后回车,例如:管道闭水试验"})})}),(0,l.jsx)(k.A,{size:"small",title:"可加载工艺知识",className:"rounded-2xl mb-4",children:(0,l.jsx)(c.A.List,{name:"knowledge",children:(e,s)=>{let{add:t,remove:r}=s;return(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:s,name:t,...a}=e;return(0,l.jsxs)(u.A,{align:"baseline",wrap:!0,children:[(0,l.jsx)(c.A.Item,{...a,name:[t,"ids"],rules:[{required:!0,type:"array",min:1,message:"请选择实际工艺卡"}],children:(0,l.jsx)(f.A,{mode:"multiple",showSearch:!0,optionFilterProp:"label",options:p,style:{minWidth:360},placeholder:"按工艺卡名称搜索"})}),(0,l.jsx)(c.A.Item,{...a,name:[t,"note"],children:(0,l.jsx)(g.A,{placeholder:"适用条件说明(可选)"})}),(0,l.jsx)(h.Ay,{type:"text",danger:!0,icon:(0,l.jsx)(w.A,{}),onClick:()=>r(t)})]},s)}),(0,l.jsxs)(h.Ay,{type:"dashed",icon:(0,l.jsx)(I.A,{}),onClick:()=>t({kind:"processCard",ids:[]}),children:[n("common.add"),"工艺知识"]})]})}})}),(0,l.jsxs)(k.A,{size:"small",title:"专业写作核对提示",className:"rounded-2xl mb-4",children:[(0,l.jsx)(S,{type:"secondary",children:"写清适用对象、方法和检验注意。提示供作者按具体任务选用,不构成评分、字数或参数数量要求。"}),(0,l.jsx)(c.A.List,{name:"acceptance",children:(e,s)=>{let{add:t,remove:r}=s;return(0,l.jsxs)("div",{className:"flex flex-col gap-2",children:[e.map(e=>{let{key:s,name:t,...a}=e;return(0,l.jsxs)(u.A,{align:"baseline",wrap:!0,children:[(0,l.jsx)(c.A.Item,{...a,name:[t,"checklistItems"],rules:[{required:!0,type:"array",min:1,message:"请输入专业注意事项"}],children:(0,l.jsx)(f.A,{mode:"tags",style:{minWidth:460},placeholder:"例如:保留实际检验对象、触发条件和转序要求"})}),(0,l.jsx)(h.Ay,{type:"text",danger:!0,icon:(0,l.jsx)(w.A,{}),onClick:()=>r(t)})]},s)}),(0,l.jsxs)(h.Ay,{type:"dashed",icon:(0,l.jsx)(I.A,{}),onClick:()=>t({kind:"llmChecklist",checklistItems:[]}),children:[n("common.add"),"专业提示"]})]})}})]}),(0,l.jsx)(k.A,{size:"small",title:(0,l.jsxs)(u.A,{children:[(0,l.jsx)(C.A,{}),"资料与采用边界"]}),className:"rounded-2xl",children:a.isolationRules.map(e=>(0,l.jsxs)("div",{className:"mb-1",children:[(0,l.jsx)(b.A,{children:e.label}),(0,l.jsx)(q,{type:"secondary",className:"text-xs",children:e.note})]},e.id))})]})}var F=t(33061),R=t(35071);let{Text:W}=i.A;function z(e){let{mode:s,skillId:t}=e,{message:i}=n.A.useApp(),j=(0,a.useRouter)(),[g]=c.A.useForm(),v=(0,F.G)(),[k,f]=(0,r.useState)(!1),[b,w]=(0,r.useState)([]),I=(0,r.useMemo)(()=>"edit"===s&&t?v.skills.find(e=>e.id===t):void 0,[s,t,v.skills]),C="edit"===s&&!t,N="edit"===s&&!v.loading&&!v.failed&&!I&&void 0!==v.options,[S,q]=(0,r.useState)(!1);(0,r.useEffect)(()=>{if(S||v.loading||!v.options)return;if("create"===s){g.resetFields(),g.setFieldsValue((0,R.Ie)()),q(!0);return}if(!I)return;let e=I.promptBindings;Array.isArray(e)&&e.length>0&&i.warning("「".concat(I.id,"」里还留着 ").concat(e.length," 条已退休的提示词绑定(promptBindings):该字段已随角色配置页删除,本次保存会把它从技能里移除。")),g.resetFields(),g.setFieldsValue((0,R.m6)(I)),q(!0)},[S,v.loading,v.options,s,I,g,i]);let z=async()=>{let e;if(!v.options)return;try{e=await g.validateFields()}catch(e){return}let s=(0,R.RW)(e,v.options.contractVersion,null==I?void 0:I.examples);f(!0),w([]);try{var t,l,r;let a=await (0,R.SS)("/api/skills/validate",{method:"POST",headers:R.eT,body:JSON.stringify(s)});if(!a.ok){i.error("校验请求失败:".concat(a.message)),w(a.issues);return}if(!a.data.ok){w(a.data.errors),i.error("校验未通过:".concat(a.data.errors.length," 处问题,请核对技能字段和工艺卡引用。"));return}let n=I?await (0,R.SS)("/api/skills/".concat(encodeURIComponent(I.id)),{method:"PUT",headers:R.eT,body:JSON.stringify(s)}):await (0,R.SS)("/api/skills",{method:"POST",headers:R.eT,body:JSON.stringify(s)});if(!n.ok){w(n.issues),i.error("保存失败:".concat(n.message));return}(null==(t=n.data.warnings)?void 0:t.length)&&i.warning("已保存,但有 ".concat(n.data.warnings.length," 条提示:").concat(n.data.warnings.map(e=>e.message).join(";"))),i.success("已保存"),await j.push("/skills/".concat(encodeURIComponent(null!=(r=null==(l=n.data.skill)?void 0:l.id)?r:e.id)))}finally{f(!1)}};return C||v.loading?(0,l.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,l.jsx)(d.A,{active:!0,title:!0,paragraph:{rows:2}}),(0,l.jsx)(d.A,{active:!0,paragraph:{rows:12}})]}):v.failed?(0,l.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,l.jsx)(y.e,{title:"create"===s?"新建技能":"编辑技能"}),(0,l.jsx)(o.A,{type:"error",showIcon:!0,message:"技能库读取失败",description:"".concat(v.failed,';这不是"技能不存在",请核对服务端状态后重试。')})]}):N?(0,l.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,l.jsx)(y.e,{title:"编辑技能"}),(0,l.jsx)(m.A,{description:"技能库里没有「".concat(t,"」这条技能(可能已被删除或改名)"),children:(0,l.jsx)(A(),{href:"/skills",children:(0,l.jsx)(h.Ay,{type:"primary",children:"返回技能库"})})})]}):v.options?(null==I?void 0:I.builtIn)?(0,l.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,l.jsx)(y.e,{title:"编辑技能 \xb7 ".concat(I.displayName),description:"内置技能随应用版本更新,不能在这里修改。",extra:(0,l.jsx)(A(),{href:"/skills/".concat(encodeURIComponent(I.id)),children:(0,l.jsx)(h.Ay,{icon:(0,l.jsx)(x.A,{}),children:"查看预览"})})}),(0,l.jsx)(o.A,{type:"info",showIcon:!0,message:"内置技能",description:R.F}),(0,l.jsx)("div",{children:(0,l.jsx)(A(),{href:"/skills/new",children:(0,l.jsx)(h.Ay,{type:"primary",children:"新建用户技能"})})})]}):(0,l.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,l.jsx)(y.e,{title:I?"编辑技能 \xb7 ".concat(I.displayName):"新建技能",description:I?"改动会在保存前做一次字段与工艺卡引用校验,通过后写入技能文件。":"技能提供专业主题、资料需求、工艺知识和写作核对提示;保存前同样会做引用校验。",extra:(0,l.jsxs)(l.Fragment,{children:[I?(0,l.jsx)(A(),{href:"/skills/".concat(encodeURIComponent(I.id)),children:(0,l.jsx)(h.Ay,{children:"放弃改动并返回预览"})}):(0,l.jsx)(A(),{href:"/skills",children:(0,l.jsx)(h.Ay,{children:"取消"})}),(0,l.jsxs)(u.A,{size:4,children:[(0,l.jsx)(W,{type:"secondary",className:"text-xs",children:"保存后自动进入预览"}),(0,l.jsx)(h.Ay,{type:"primary",icon:(0,l.jsx)(p.A,{}),loading:k,onClick:()=>{z()},children:"保存"})]})]})}),(null==I?void 0:I.examples)&&(0,l.jsx)(o.A,{type:"info",showIcon:!0,message:"该技能带表达示例",description:"示例供理解专业表达,不能作为本项目事实;本编辑器不修改示例,保存时原样保留。"}),b.length>0&&(0,l.jsx)(o.A,{type:"error",showIcon:!0,message:"校验未通过:".concat(b.length," 处"),description:(0,l.jsx)("div",{className:"text-xs",children:b.map((e,s)=>{var t;return(0,l.jsxs)("div",{children:[(0,l.jsx)(W,{code:!0,children:e.path||"(root)"})," ",e.message]},"".concat(null!=(t=e.path)?t:"root","-").concat(s))})})}),(0,l.jsx)(T,{form:g,options:v.options,idLocked:!!I})]}):null}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[530],{8090:(e,t,n)=>{n.d(t,{EL:()=>et,zT:()=>ee,II:()=>$,bJ:()=>eo,Jr:()=>V,O0:()=>eh,uj:()=>U,GC:()=>H,qj:()=>es,x8:()=>Z,Kg:()=>el,uH:()=>ep,Qs:()=>J,PI:()=>ei,dB:()=>eg,Jy:()=>em,uv:()=>O,vp:()=>Q,m_:()=>P,kH:()=>K,z9:()=>X,Aq:()=>ed,RV:()=>ec,Kq:()=>en});var r=n(97109),l=n(84662),a=n(30486),o=n(4527),i=n(80042),c=n(99650),s=n(25345),u=n(7851),d=n(33555),m=n(43240),p=n(26619),f=n(23216),h=n(46791),g=n(8579),v=n(26631),x=n(35459),y=n(64629),w=n(76824),b=n(83374),k=n(81668),j=n(39356),A=n(8263),I=n(61024),S=n(32919),M=n(96538);let C=["failed","paused","repairing","blocked","running","pending","completed"],E=["chars","costUsd"];function R(e,t){return e.seq!==t.seq?e.seq-t.seq:e.id===t.id?0:e.id<t.id?-1:1}function N(e){let t=new Map;for(let n of e){if(void 0===n.parentId)continue;let e=t.get(n.parentId);e?e.push(n):t.set(n.parentId,[n])}for(let e of t.values())e.sort(R);return t}function _(e){let t=new Map(e.map(e=>[e.id,e])),n=new Map;for(let r of e){let e=0,l=r,a=new Set([r.id]);for(;(null==l?void 0:l.parentId)!==void 0;){let n=t.get(l.parentId);if(!n||a.has(n.id))break;a.add(n.id),e+=1,l=n}n.set(r.id,e)}return n}let T=new Set(["prepare","understand","plan","blueprint","write","close","deliver","chapter","block","turn","round","round.decide","round.fix","repair.request","repair.localize","repair.impact","repair.transaction","repair.recheck","supervisor","resume.plan","skill.load"]),B=new Set(["failed","paused","repairing","blocked","running","pending","completed"]);var D=n(94394);let q={pending:{key:"common.statusWaiting",text:"等待中",color:"default"},running:{key:"common.statusRunning",text:D.uh.running,color:"processing"},completed:{key:"common.statusCompleted",text:D.uh.success,color:"success"},paused:{key:"common.statusPaused",text:"已暂停",color:"gold"},repairing:{key:"common.statusRepairing",text:"修复中",color:"warning"},blocked:{key:"common.statusBlocked",text:"已放弃(阻塞)",color:"warning"},failed:{key:"common.statusAbnormal",text:"异常",color:"error"}};function z(e,t,n,r){let l=e[t];if(!l)return"未知".concat(n,"(").concat(t||"空",")");if(l.key&&r){let e=r(l.key);if(e&&e!==l.key)return e}return l.text}function P(e,t){return z(q,e,"状态",t)}function O(e){var t,n;return null!=(n=null==(t=q[e])?void 0:t.color)?n:"default"}let F={queued:{key:"common.statusWaiting",text:"排队中",color:"default"},generating:{key:"common.statusRunning",text:"生成中",color:"processing"},paused:{key:"common.statusPaused",text:"已暂停",color:"gold"},completed:{key:"common.statusCompleted",text:"已完成",color:"success"},completed_with_issues:{key:"common.statusReview",text:"完成(有需复核项)",color:"warning"},warning:{key:"common.statusReview",text:"需复核",color:"warning"},failed:{key:"common.statusAbnormal",text:"失败",color:"error"},aborted:{key:"common.statusAbnormal",text:"已中止",color:"default"}};function H(e,t){return z(F,e,"记录状态",t)}function U(e){var t,n;return null!=(n=null==(t=F[e])?void 0:t.color)?n:"default"}let L=["failed","paused","repairing","blocked","running","pending","completed"];function Q(e){let t=L.indexOf(e);return t>=0?t:L.length}let Y={prepare:"生成准备",understand:"资料理解",plan:"规划",blueprint:"蓝图",write:"正文撰写",close:"收口",deliver:"交付",chapter:"章节",block:"块",turn:"轮次",round:"收口轮","round.decide":"收口\xb7判定","round.fix":"收口\xb7修复","repair.request":"修复\xb7请求","repair.localize":"修复\xb7定位","repair.impact":"修复\xb7影响面","repair.transaction":"修复\xb7事务","repair.recheck":"修复\xb7复检","skill.load":"技能命中",supervisor:"调度决策","resume.plan":"续跑任务书"};function X(e){var t;return e?null!=(t=Y[e])?t:e:"未知节点"}let G={role_binding:(0,r.createElement)(l.A),knowledge_retrieval:(0,r.createElement)(a.A),file_understanding:(0,r.createElement)(o.A),fact_extraction:(0,r.createElement)(i.A),chapter_generation:(0,r.createElement)(c.A),llm_review:(0,r.createElement)(s.A),validation:(0,r.createElement)(u.A),reference:(0,r.createElement)(d.A),prepare:(0,r.createElement)(m.A),understand:(0,r.createElement)(p.A),plan:(0,r.createElement)(f.A),blueprint:(0,r.createElement)(h.A),write:(0,r.createElement)(g.A),chapter:(0,r.createElement)(v.A),block:(0,r.createElement)(x.A),turn:(0,r.createElement)(y.A),round:(0,r.createElement)(w.A),close:(0,r.createElement)(b.A),deliver:(0,r.createElement)(k.A),repair:(0,r.createElement)(j.A),skill:(0,r.createElement)(A.A),supervisor:(0,r.createElement)(I.A),resume:(0,r.createElement)(S.A),default:(0,r.createElement)(m.A)};function K(e){var t;return null!=(t=G[e.split(".")[0]||e])?t:G.default}function J(e){var t;return null!=(t=G[e])?t:G.default}function W(e){var t,n;let r=e.issues;return{id:e.id,...void 0!==e.parentId?{parentId:e.parentId}:{},type:e.type||"block",title:null!=(t=e.title)?t:"",seq:"number"==typeof e.seq&&Number.isFinite(e.seq)?e.seq:0,status:"string"==typeof(n=e.status)&&B.has(n)?e.status:"failed",startedAt:"number"==typeof e.startedAt&&Number.isFinite(e.startedAt)&&e.startedAt>0?e.startedAt:0,...void 0!==e.completedAt?{completedAt:e.completedAt}:{},...e.progress?{progress:e.progress}:{},...e.metrics?{metrics:e.metrics}:{},...Array.isArray(r)&&r.length>0?{issues:r}:{},...void 0!==e.payloadRef?{payloadRef:e.payloadRef}:{}}}function V(e,t){let n=new Map(e.map(e=>[e.id,e]));return(function(e,t){let n=function(e){let t=N(e),n=_(e),r=[...e].sort((e,t)=>{var r,l;return(null!=(r=n.get(t.id))?r:0)-(null!=(l=n.get(e.id))?l:0)||R(e,t)}),l=new Map(e.map(e=>[e.id,e]));for(let e of r){let n=t.get(e.id);if(!n||0===n.length)continue;let r=n.map(e=>{var t;return null!=(t=l.get(e.id))?t:e});l.set(e.id,function(e,t){var n,r,l;if(0===t.length)return{...e};let a=[...t].sort(R),o={...null!=(r=e.metrics)?r:{}};for(let t of E){let n=function(e,t,n){var r,l;let a=0,o=!1,i=null==(r=e.metrics)?void 0:r[n];for(let e of("number"==typeof i&&Number.isFinite(i)&&(a+=i,o=!0),t)){let t=null==(l=e.metrics)?void 0:l[n];"number"==typeof t&&Number.isFinite(t)&&(a+=t,o=!0)}return o?a:void 0}(e,a,t);void 0===n?delete o[t]:o[t]=n}let i=null==(n=e.progress)?void 0:n.label,c={current:a.filter(e=>"completed"===e.status).length,total:a.length,...void 0!==i?{label:i}:{}},s=function(e){let t=new Set,n=[];for(let l of e){var r;let e=null==(r=l.provenance)?void 0:r.fingerprint;if("string"==typeof e&&e.length>0){if(t.has(e))continue;t.add(e)}n.push(l)}return n}(a.flatMap(e=>{var t;return null!=(t=e.issues)?t:[]})),u=null!=(l=function(e){let t,n=1/0;for(let r of e){let e=function(e){let t=C.indexOf(e);return t>=0?t:0}(r);e<n&&(n=e,t=r)}return t}(a.map(e=>e.status)))?l:e.status;return{...e,status:u,progress:c,...Object.keys(o).length>0?{metrics:o}:{},...s.length>0?{issues:s}:{}}}(e,r))}return[...e].sort(R).map(e=>{var t;return null!=(t=l.get(e.id))?t:e})}(e),r=N(n),l=new Set(n.map(e=>e.id)),a=1/0,o=(e,t)=>{var n;let l=t+1<a?(null!=(n=r.get(e.id))?n:[]).filter(t=>t.id!==e.id).map(e=>o(e,t+1)):[];return{...e,children:l}},i=n.filter(e=>void 0===e.parentId||!l.has(e.parentId)).sort(R).map(e=>o(e,0)),c=new Set,s=e=>{for(let t of e)c.add(t.id),s(t.children)};for(let e of(s(i),n))c.has(e.id)||i.push(o(e,0));return i})(function(e,t){if(void 0===t)return[...e];let n=_(e),r=Math.max(0,Math.floor(t));return e.filter(e=>{var t;return(null!=(t=n.get(e.id))?t:0)<r})}(e.map(W),t)).map(e=>(function e(t,n){var r,l;let a=n.get(t.id),o=null!=(r=null==a?void 0:a.type)?r:String(t.type),i=t.issues;return{id:t.id,...void 0!==t.parentId?{parentId:t.parentId}:{},type:o,unknownType:!("string"==typeof o&&T.has(o)),title:t.title||X(o),seq:t.seq,status:t.status,..."number"==typeof t.startedAt&&t.startedAt>0?{startedAt:t.startedAt}:{},...void 0!==t.completedAt?{completedAt:t.completedAt}:{},...t.progress?{progress:t.progress}:{},metrics:null!=(l=t.metrics)?l:{},issues:Array.isArray(i)?i:[],...void 0!==t.payloadRef?{payloadRef:t.payloadRef}:{},children:t.children.map(t=>e(t,n))}})(e,n))}function Z(e){let t=[],n=e=>{for(let r of e)t.push(r),n(r.children)};return n(e),t.sort(R)}function $(e,t){let n=[],r=(e,l)=>{for(let a of e){if(a.id===t)return n.push(...l),!0;if(r(a.children,[...l,a.id]))return!0}return!1};return r(e,[]),n}let ee=236,et=76;function en(e,t){var n;if(!t)return e;let r=new Map(e),l=null!=(n=r.get(t.id))?n:{dx:0,dy:0};return r.set(t.id,{dx:l.dx+t.dx,dy:l.dy+t.dy}),r}let er=new Set(["running","repairing"]);function el(e){let t=new Set(e.nodes.filter(e=>er.has(e.node.status)).map(e=>e.node.id));if(0===t.size)return ea;let n=new Set;for(let r of e.edges)t.has(r.fromId)&&n.add(r.id);return n}let ea=new Set;function eo(e,t){if(0===t.size)return e;let n=e.nodes.map(e=>{let n=t.get(e.node.id);return n?{...e,x:e.x+n.dx,y:e.y+n.dy}:e}),r=e.edges.map(e=>{var n,r,l,a;let o=t.get(e.fromId),i=t.get(e.toId);return o||i?{...e,x1:e.x1+(null!=(n=null==o?void 0:o.dx)?n:0),y1:e.y1+(null!=(r=null==o?void 0:o.dy)?r:0),x2:e.x2+(null!=(l=null==i?void 0:i.dx)?l:0),y2:e.y2+(null!=(a=null==i?void 0:i.dy)?a:0)}:e});return{...e,nodes:n,edges:r}}function ei(e){let t=[],n=[],r=0,l=(e,a)=>{let o,i=e.children,c=40+a*(ee+72),s=i.map(e=>({id:e.id,...l(e,a+1)}));for(let l of(0===s.length?(o=40+r*(et+22),r+=1):o=(s[0].y+s[s.length-1].y)/2,t.push({node:e,x:c,y:o,depth:a}),s))n.push({id:"".concat(e.id,"->").concat(l.id),fromId:e.id,toId:l.id,x1:c+ee/2,y1:o+et,x2:l.x+ee/2,y2:l.y});return{x:c,y:o}};for(let t of e)l(t,0),r+=1;let a=t.reduce((e,t)=>Math.max(e,t.x+ee),0),o=t.reduce((e,t)=>Math.max(e,t.y+et),0);return{nodes:t,edges:n,width:a+40,height:o+40}}function ec(e,t){let n=["影响面:".concat(t.kind),"波及 ".concat(t.affectedNodeIds.length," 个节点"),...t.escalate?["超出阈值需人工确认"]:[],...t.rollbackable?[]:["不可回滚:按 11.1 需回滚或重新校准,不得当普通改动提交"]];return"请修复节点「".concat(e,"」(").concat(n.join(","),")")}function es(e,t){let n=t>0?t:1;return{dx:e.dx/n,dy:e.dy/n}}let eu=(e,t)=>e.left<t.right&&e.right>t.left&&e.top<t.bottom&&e.bottom>t.top;function ed(e){var t;let{node:n,view:r,box:l,panelWidth:a,panelHeight:o,gap:i=12,margin:c=8,obstacles:s=[]}=e,u=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),d=Math.min(a,Math.max(0,l.width-2*c)),m=n.x*r.k+r.x,p=n.y*r.k+r.y,f=p+et*r.k,h={left:m,top:p,right:m+ee*r.k,bottom:f},g=l.width-d-c,v=(e,t)=>{let n=s.filter(n=>n.top>=t&&n.left<e+d&&n.right>e).map(e=>e.top-i);return Math.max(0,Math.min(l.height-c,...n,l.height-c)-t)},x=e=>{let t=l.height-e-c,n=(n,r)=>{if(n<c||r<c||n>g||r>t)return!1;let l={left:n,top:r,right:n+d,bottom:r+e};return!s.some(e=>eu(l,e))},a=m+(ee+i)*r.k,o=m-d-i*r.k,x=f+i,y=p-e-i;for(let[e,t]of[[a,x],[a,y],[o,x],[o,y]])if(n(e,t))return{left:e,top:t,maxHeight:Math.max(0,Math.min(v(e,t),l.height-t-c))};let w=[a,o,c,g],b=[x,y,c,t,...s.flatMap(t=>[t.bottom+i,t.top-e-i])],k=null,j=1/0;for(let r of w)for(let l of b){let a=u(r,c,g),o=u(l,c,Math.max(c,t));if(!n(a,o))continue;let i={left:a,top:o,right:a+d,bottom:o+e},s=Math.max(Math.max(0,h.left-i.right,i.left-h.right),Math.max(0,h.top-i.bottom,i.top-h.bottom))+1e3*!!eu(i,h);s<j&&(j=s,k={left:a,top:o})}return k?{...k,maxHeight:v(k.left,k.top)}:null};if(e.pin){let t=u(e.pin.left,c,g),n=u(e.pin.top,c,Math.max(c,l.height-2*c));return{left:t,top:n,maxHeight:Math.max(0,Math.min(v(t,n),l.height-n-c))}}let y=Math.min(o,Math.max(0,l.height-2*c)),w=x(y);if(w)return w;let b=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:8,r=e.height-n,l=t.map(e=>({start:Math.max(n,e.top),end:Math.min(r,e.bottom)})).filter(e=>e.end>e.start).sort((e,t)=>e.start-t.start),a=0,o=n;for(let e of l)e.start>o&&(a=Math.max(a,e.start-o)),o=Math.max(o,e.end);return Math.max(a,r-o)}(l,s,c)-i;if(b>0&&b<y){let e=x(Math.max(120,b));if(e)return e}return null!=(t=null!=w?w:x(Math.max(120,b)))?t:{left:u(m+(ee+i)*r.k,c,g),top:c,maxHeight:Math.max(0,l.height-2*c)}}function em(e){var t;if("number"!=typeof e.startedAt||(null==(t=e.metrics)?void 0:t.instantEvent)===!0)return;let n=("number"==typeof e.completedAt?e.completedAt:Date.now())-e.startedAt;return n>=0?n:void 0}function ep(e){return void 0===e?"—":(0,M.a)(e,{unit:"ms",style:"fine"})}let ef=[{key:"note",format:e=>String(e)},{key:"chars",format:e=>"".concat(Number(e).toLocaleString()," 字")},{key:"turn",format:e=>"第 ".concat(e," 轮")},{key:"residual",format:e=>"残余 ".concat(e)},{key:"toolCalls",format:e=>"工具 ".concat(e," 次")},{key:"attempt",format:e=>"第 ".concat(e," 次尝试")},{key:"failureKinds",format:e=>String(e)},{key:"chapters",format:e=>"".concat(e," 章")},{key:"facts",format:e=>"".concat(e," 条事实")}];function eh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,n=[];for(let{key:r,format:l}of ef){let a=e[r];if(void 0===a||""===a||!1===a)continue;let o=l(a);if(o.trim()&&(n.push(o),n.length>=t))break}return n}function eg(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6;return Object.entries(e).slice(0,t).map(e=>{let[t,n]=e;return{key:t,text:"number"==typeof n?"".concat(t,": ").concat(Number.isInteger(n)?n:n.toFixed(2)):"".concat(t,": ").concat(String(n))}})}},8665:(e,t,n)=>{n.d(t,{_:()=>x});var r=n(65321),l=n(97109),a=n(48399),o=n(33442),i=n(14932),c=n(11702),s=n(85114),u=n(55897),d=n(57271),m=n(7576),p=n(54746),f=n(7492),h=n(60470),g=n(96651);let{Text:v}=a.A;function x(e){let{value:t,onChange:n,onSend:a,generating:x,submitting:y,disabled:w,disabledReason:b,selectedNode:k,onMentionSelected:j,resumable:A,onContinue:I,quickActions:S,requireGenerationSetup:M=!1,promptOptions:C=[],projectOptions:E=[],selectedPrompts:R=[],selectedProject:N=null,onSelectPrompts:_,onSelectProject:T,onPreviewStructure:B,collapsed:D=!1,onToggleCollapsed:q}=e,[z,P]=(0,l.useState)(!D);(0,l.useEffect)(()=>{if(!D)return void P(!0);let e=window.setTimeout(()=>P(!1),200);return()=>window.clearTimeout(e)},[D]);let O=(0,l.useRef)(null);(0,l.useEffect)(()=>{var e;D||null==(e=O.current)||e.focus()},[D,z]);let[F,H]=(0,l.useState)(!1),U=M?[0===R.length?"提示词":"",!N?"项目":""].filter(Boolean):[],L=U.length>0,Q=w?b||"当前不可发起生成":L?"请先用左侧「+」选择".concat(U.join(" 与 "),"——未选齐时不能发起生成"):x?"有任务正在运行:发送将加入生成队列(前面任务完成后自动开始)":"发送后将创建生成任务,画布随节点日志实时增长";return(0,r.jsxs)("div",{className:"canvasInputBar".concat(D&&!z?" canvasInputBarCollapsed":""),children:[z&&(0,r.jsxs)("div",{className:"canvasInputPanel".concat(D?" isLeaving":""),children:[(0,r.jsxs)(o.A,{wrap:!0,size:6,style:{marginBottom:6},children:[k&&(0,r.jsx)(i.A,{title:"把「@".concat(k.title,"」插入输入框(可见文本,可自行修改)"),children:(0,r.jsx)(c.A,{color:"blue",style:{cursor:"pointer"},onClick:j,children:"@ ".concat(k.title)})}),!k&&(0,r.jsx)(v,{type:"secondary",style:{fontSize:12},children:"点选一个节点后可 @ 提及它"}),A&&!x&&(0,r.jsx)(s.Ay,{size:"small",type:"link",onClick:I,children:"继续生成"}),null==S?void 0:S.map(e=>(0,r.jsx)(s.Ay,{size:"small",type:"link",onClick:e.onClick,children:e.label},e.key))]}),(0,r.jsxs)(o.A,{wrap:!0,size:10,style:{marginBottom:8},children:[(0,r.jsx)(u.A,{trigger:"click",placement:"topLeft",open:F,onOpenChange:H,content:(0,r.jsxs)("div",{style:{width:360,display:"flex",flexDirection:"column",gap:8},children:[M&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{children:[(0,r.jsx)(v,{strong:!0,style:{fontSize:13},children:"提示词"}),(0,r.jsx)(d.A,{mode:"multiple",style:{width:"100%",marginTop:4},value:R.map(e=>e.value),placeholder:0===C.length?"该项目暂无提示词":"选择提示词(至少一份;可多选)",options:C,onChange:e=>null==_?void 0:_(e)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(v,{strong:!0,style:{fontSize:13},children:"项目"}),(0,r.jsx)(d.A,{style:{width:"100%",marginTop:4},value:null==N?void 0:N.value,showSearch:!0,optionFilterProp:"label",placeholder:0===E.length?"本项目知识库里还没有资料:先到知识库页上传并入库":"选择项目(= 知识库里这个项目的资料,决定本次用哪份材料)",options:E,onChange:e=>null==T?void 0:T(e)})]}),(0,r.jsx)(v,{type:"secondary",style:{fontSize:12},children:"两者选齐后才能点「生成」。「项目」选的是入库到本地知识库的那份项目资料(清单/图纸/招标文件都在其中)——本次生成只用它,不会把库里别的项目材料混进来。提示词的正文按名字进入对应链路(总控/写作 → 写作链,清单/图纸/提取 → 事实抽取链,排版 → 格式链);章节大纲取自其中带 <OUTLINE> 的那一份,且只能有一份声明大纲。"})]}),!M&&(0,r.jsx)(v,{type:"secondary",style:{fontSize:12},children:"提示词与项目取自这条记录本身(章节结构由记录里那份提示词的大纲派生),不需要在这里再选。"}),(0,r.jsx)("div",{children:(0,r.jsx)(s.Ay,{size:"small",block:!0,disabled:L,onClick:()=>{H(!1),null==B||B()},children:"结构预览(章清单与小节)"})})]}),children:(0,r.jsx)(s.Ay,{style:{marginLeft:"5px"},size:"small",icon:(0,r.jsx)(p.A,{}),type:L?"primary":"default",children:"提示词 / 项目"})}),R.map(e=>(0,r.jsx)(c.A,{color:"blue",closable:!0,onClose:t=>{t.preventDefault(),null==_||_(R.filter(t=>t.value!==e.value).map(e=>e.value))},children:"提示词:".concat(e.label)},e.value)),N&&(0,r.jsx)(c.A,{color:"geekblue",closable:!0,onClose:e=>{e.preventDefault(),null==T||T("")},children:"项目:".concat(N.label)})]}),(0,r.jsxs)(o.A.Compact,{style:{width:"100%"},children:[(0,r.jsx)(m.A.TextArea,{ref:O,value:t,onChange:e=>n(e.target.value),onPressEnter:e=>{!e.shiftKey&&(e.preventDefault(),w||y||a())},autoSize:{minRows:1,maxRows:5},placeholder:"描述你的需求;可用上面的 @ 提及把节点带进正文(Enter 发送,Shift+Enter 换行)。篇幅由招标文件页数上限与标书类型自动决定:需求里写字数/页数不会改变篇幅目标",disabled:w}),(0,r.jsx)(i.A,{title:Q,children:(0,r.jsx)(s.Ay,{type:"primary",icon:(0,r.jsx)(f.A,{}),loading:y,disabled:w||L||!t.trim(),onClick:a,children:x?"排队提交":"生成"})})]}),(0,r.jsx)("div",{className:"canvasInputHandleRow",children:(0,r.jsx)(i.A,{title:"收起输入框(画布上只留一个把手,随时点回来)",placement:"top",children:(0,r.jsx)("button",{type:"button",className:"canvasInputHandle","aria-label":"收起输入框",onClick:()=>null==q?void 0:q(!0),children:(0,r.jsx)(h.A,{})})})})]}),D&&!z&&(0,r.jsx)(i.A,{title:"展开输入框:写要求、@ 节点、发起或排队生成",placement:"top",children:(0,r.jsx)("button",{type:"button",className:"canvasInputHandle isCollapsed","aria-expanded":!1,"aria-label":"展开输入框",onClick:()=>null==q?void 0:q(!1),children:(0,r.jsx)(g.A,{})})})]})}},28629:(e,t,n)=>{n.d(t,{p:()=>r});function r(e,t){let n="/canvas/".concat(encodeURIComponent(e));return t?"".concat(n,"?projectRoot=").concat(encodeURIComponent(t)):n}},34038:(e,t,n)=>{n.d(t,{B:()=>u});var r=n(65321),l=n(48399),a=n(25258),o=n(85114),i=n(85493),c=n(38332);let{Paragraph:s}=l.A;function u(e){let{open:t,title:n,chapters:l,outlineSource:u,materialScope:d,onClose:m}=e,p=l.length>0?"结构预览:".concat(n,"(").concat(l.length," 章").concat(u?",大纲来源:".concat(u):"",")"):"结构预览:".concat(n);return(0,r.jsxs)(a.A,{open:t,title:p,centered:!0,onCancel:m,width:640,styles:{container:{maxHeight:"calc(100vh - 48px)",display:"flex",flexDirection:"column"},body:{overflowY:"auto",flex:1,minHeight:0}},footer:(0,r.jsx)(o.Ay,{type:"primary",onClick:m,children:"知道了"}),children:[(0,r.jsx)(s,{type:"secondary",style:{fontSize:12,marginBottom:8},children:"章和已声明小节来自用户提示词大纲。技能候选尚未确定位置;生成时会结合真实资料和技术职责进行专业规划,可能合并、调整或归入其他章节。 最终目录以完成规划后的文档为准。"}),d&&(0,r.jsx)(i.A,{type:"info",showIcon:!0,style:{marginBottom:8},message:"本次项目资料:".concat(d.root||"(未指定)","(").concat(d.fileCount," 份文件)"),description:"资料范围已锁定在所选项目资料内:库里其它项目的材料不会进入本篇。"}),0===l.length&&(0,r.jsx)(i.A,{type:"info",showIcon:!0,message:"本次没有派生出章清单",description:"派生的硬约束是提示词(或输入框要求)里要有 ≥2 章的显式大纲;缺大纲时服务端会直接拒绝这次生成,并在提示里说清缺什么。"}),(0,r.jsx)(c.A,{size:"small",dataSource:l,renderItem:(e,t)=>{var n;return(0,r.jsx)(c.A.Item,{children:(0,r.jsx)(c.A.Item.Meta,{title:"".concat(t+1,". ").concat(e.title),description:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{children:["用户声明:",(0,r.jsx)("span",{children:e.sections.length>0?e.sections.join("、"):"(未声明小节)"})]}),(null==(n=e.candidateSections)?void 0:n.length)?(0,r.jsxs)("div",{children:["技能候选(待规划):",(0,r.jsx)("span",{children:e.candidateSections.join("、")})]}):null]})})})}})]})}},45551:(e,t,n)=>{n.d(t,{Jm:()=>c,fw:()=>a,je:()=>r.j,mc:()=>s,z3:()=>l});var r=n(96538);function l(e){if(0===e)return"0 B";let t=Math.floor(Math.log(e)/Math.log(1024)),n=e/Math.pow(1024,t);return"".concat(n.toFixed(+(0!==t))," ").concat(["B","KB","MB","GB","TB"][t])}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"zh-CN";if(!e||e<=0)return"en-US"===t?"Never":"从未";let n=Math.floor(Math.floor((Date.now()-e)/1e3)/60),r=Math.floor(n/60),l=Math.floor(r/24);return l>30?new Date(e).toLocaleDateString(t):"en-US"===t?l>0?"".concat(l,"d ago"):r>0?"".concat(r,"h ago"):n>0?"".concat(n,"m ago"):"Just now":l>0?"".concat(l," 天前"):r>0?"".concat(r," 小时前"):n>0?"".concat(n," 分钟前"):"刚刚"}let o={document:"文档",spreadsheet:"表格",image:"图片",cad:"图纸",code:"代码",data:"数据",web:"网页",diagram:"图表",archive:"压缩包",other:"其他"},i={document:"Document",spreadsheet:"Spreadsheet",image:"Image",cad:"CAD",code:"Code",data:"Data",web:"Web",diagram:"Diagram",archive:"Archive",other:"Other"};function c(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"zh-CN";return null!=(t=("en-US"===n?i:o)[e])?t:e}let s={active:"common.statusIndexed",outdated:"common.statusOutdated",error:"common.statusAbnormal",deleted:"common.statusDeleted",disk:"common.statusNotIndexed"}},52057:(e,t,n)=>{n.d(t,{B:()=>s,VF:()=>a,WF:()=>i,be:()=>c,s_:()=>u,xA:()=>o});var r=n(97109),l=n(8090);let a=24;function o(e,t,n,r){let l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.15,a=r&&r.right>r.left&&r.bottom>r.top?r:{left:0,top:0,right:n.width,bottom:n.height},o=Math.max(1,a.right-a.left),i=Math.max(1,a.bottom-a.top),c=e.x*t.k+t.x,s=e.y*t.k+t.y,u=c+e.width*t.k,d=s+e.height*t.k,m=a.left+o*l,p=a.right-o*l,f=a.top+i*l,h=a.bottom-i*l;return c<m||s<f||u>p||d>h}let i=12e3;function c(e){if(!e.following)return{label:"跟随最新",title:"跟随已关闭:点一下重新打开(打开后会跟着当前活跃节点走)",paused:!1};if(e.pausedUntil>e.now){let t=Math.max(1,Math.ceil((e.pausedUntil-e.now)/1e3));return{label:"跟随暂停中",title:"跟随暂停:".concat(t,"s 后自动恢复(你刚动过视口;不是关掉了)"),paused:!0}}return e.node?{label:"跟随中",title:"正在跟随:".concat(e.node.title).concat(void 0!==e.node.round?"(第 ".concat(e.node.round," 轮)"):""),paused:!1}:{label:"跟随中",title:"跟随中:当前没有活跃节点可跟(生成开始后会自动跟上)",paused:!1}}function s(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:24,l=t.x,a=t.y,o=t.x+e.width*t.k,i=t.y+e.height*t.k,c=Math.min(o,n.right)-Math.max(l,n.left),s=Math.min(i,n.bottom)-Math.max(a,n.top);return c>=r&&s>=r?{dx:0,dy:0}:{dx:n.left+r-l,dy:n.top+r-a}}function u(){let[e,t]=(0,r.useState)({x:0,y:0,k:1}),n=(0,r.useRef)(null),a=(0,r.useRef)(null),o=(0,r.useRef)(e);(0,r.useEffect)(()=>{o.current=e},[e]);let i=(0,r.useCallback)((e,r,l)=>{t(t=>{var a;let o=Math.min(2,Math.max(.1,t.k*e)),i=null==(a=n.current)?void 0:a.getBoundingClientRect();if(!i||void 0===r||void 0===l)return{...t,k:o};let c=(r-i.left-t.x)/t.k,s=(l-i.top-t.y)/t.k;return{k:o,x:r-i.left-c*o,y:l-i.top-s*o}})},[]),[c,s]=(0,r.useState)(null);(0,r.useEffect)(()=>{var e,t;let r=null!=(t=null==(e=n.current)?void 0:e.parentElement)?t:n.current;r&&r!==c&&s(r)}),(0,r.useEffect)(()=>{if(!c)return;let e=e=>{(e=>{for(let t=e;t&&t!==c;t=t.parentElement)if(t.scrollHeight>t.clientHeight+1){let e=getComputedStyle(t).overflowY;if("auto"===e||"scroll"===e)return!0}return!1})(e.target)||(e.preventDefault(),i(Math.exp(-e.deltaY/320),e.clientX,e.clientY))};return c.addEventListener("wheel",e,{passive:!1}),()=>c.removeEventListener("wheel",e)},[c,i]);let u=(0,r.useCallback)(e=>{if(0!==e.button)return;e.currentTarget.setPointerCapture(e.pointerId);let t=o.current;a.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originX:t.x,originY:t.y}},[]),d=(0,r.useCallback)(e=>{let n=a.current;n&&n.pointerId===e.pointerId&&t(t=>({...t,x:n.originX+(e.clientX-n.startX),y:n.originY+(e.clientY-n.startY)}))},[]),m=(0,r.useCallback)(()=>{a.current=null},[]),p=(0,r.useCallback)(()=>t({x:0,y:0,k:1}),[]),f=(e,t)=>null!=t?t:{left:0,top:0,right:e.width,bottom:e.height},h=(0,r.useCallback)((e,r,l)=>{t(t=>{var a;let o=null==(a=n.current)?void 0:a.getBoundingClientRect();if(!o||e<=0||r<=0)return{...t,x:0,y:0};let i=f(o,l),c=Math.max(1,i.right-i.left),s=Math.max(1,i.bottom-i.top),u=Math.min(2,Math.max(.1,Math.min(c/e,s/r)));return{k:u,x:i.left+(c-e*u)/2,y:i.top+(s-r*u)/2}})},[]),g=(0,r.useCallback)((e,r,a,o)=>{t(t=>{var i;let c=null==(i=n.current)?void 0:i.getBoundingClientRect();if(!c)return t;let s=f(c,o),u=null!=a?a:t.k,d=(s.left+s.right)/2,m=(s.top+s.bottom)/2;return{k:u,x:d-(e+l.zT/2)*u,y:m-(r+l.EL/2)*u}})},[]);return{view:e,containerRef:n,zoomAt:i,onPointerDown:u,onPointerMove:d,endDrag:m,reset:p,fit:h,centerOn:g,panBy:(0,r.useCallback)((e,n)=>{(0!==e||0!==n)&&t(t=>({...t,x:t.x+e,y:t.y+n}))},[])}}},57481:(e,t,n)=>{n.d(t,{_:()=>x});var r=n(65321),l=n(97109),a=n(17807),o=n(42700),i=n(84253),c=n(32965),s=n(14932),u=n(75174),d=n(1310),m=n(58209),p=n(32244),f=n(6578),h=n(93533),g=n(45551);let v="canvas:recordsBallPos";function x(e){let{currentDocumentId:t,projectRoot:n,onSelect:x,onCurrentDeleted:w}=e,b=(0,p.Vr)(),{message:k}=a.A.useApp(),j=(0,l.useRef)(null),[A,I]=(0,l.useState)([]),[S,M]=(0,l.useState)(!1),[C,E]=(0,l.useState)(!1),[R,N]=(0,l.useState)(1),[_,T]=(0,l.useState)(!1),[B,D]=(0,l.useState)([]),[q,z]=(0,l.useState)(!1),[P,O]=(0,l.useState)(null),[F,H]=(0,l.useState)(!0),U=(0,l.useRef)(null);(0,l.useEffect)(()=>{var e,t;let n=function(){try{let e=window.localStorage.getItem(v);if(!e)return null;let t=JSON.parse(e);return"number"==typeof(null==t?void 0:t.left)&&"number"==typeof(null==t?void 0:t.top)?{left:t.left,top:t.top}:null}catch(e){return null}}();if(!n)return;let r=null==(t=j.current)||null==(e=t.parentElement)?void 0:e.getBoundingClientRect();if(!r)return void O(n);O({left:Math.min(Math.max(8,n.left),Math.max(8,r.width-44-8)),top:Math.min(Math.max(8,n.top),Math.max(8,r.height-44-8))})},[]);let L=(0,l.useCallback)(async()=>{M(!0);try{let e=await (0,f.cQ)(n||void 0);I(e.documents||[])}catch(e){I([])}finally{M(!1)}},[n]);(0,l.useEffect)(()=>{L()},[L]),(0,l.useEffect)(()=>{C&&L()},[C,L]),(0,l.useEffect)(()=>{let e=setInterval(()=>{L()},3e3);return()=>clearInterval(e)},[L]),(0,l.useEffect)(()=>{N(1),D([])},[C]);let Q=(0,l.useMemo)(()=>A.slice((R-1)*8,8*R),[A,R]),Y=(0,l.useCallback)(e=>!(0,h.Ce)(e.status),[]),X=Q.filter(Y).map(e=>e.id),G=()=>{if(!C){var e,t,n;let r=null==(t=j.current)||null==(e=t.parentElement)?void 0:e.getBoundingClientRect(),l=null==(n=j.current)?void 0:n.getBoundingClientRect();H(!r||!l||l.top-r.top>252)}E(e=>!e)},K=async e=>{try{await (0,f.QG)(e.id,e.projectRoot||n||void 0),k.success(b("common.success")),D(t=>t.filter(t=>t!==e.id)),e.id===t&&w(),await L()}catch(e){k.error(b("common.error"))}},J=async()=>{let e=A.filter(e=>B.includes(e.id)&&Y(e));if(0!==e.length){z(!0);try{await Promise.all(e.map(e=>(0,f.QG)(e.id,e.projectRoot||n||void 0))),k.success(b("records.deletedCount").replace("{count}",String(e.length))),t&&e.some(e=>e.id===t)&&w(),D([]),T(!1),await L()}catch(e){k.error(b("common.error"))}finally{z(!1)}}},W=P?{left:P.left,top:P.top}:{right:24,bottom:96};return(0,r.jsxs)("div",{className:"canvasRecordsBall",ref:j,style:{position:"absolute",zIndex:3,...W},children:[C&&(0,r.jsxs)("div",{className:"canvasRecordsPanel",style:{position:"absolute",right:0,width:320,maxHeight:420,display:"flex",flexDirection:"column",...F?{bottom:52}:{top:52}},children:[(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-b border-[var(--canvasSectionBorder)] shrink-0",children:[(0,r.jsxs)("span",{className:"text-[13px] font-semibold text-[var(--colorText)]",children:[b("records.title"),(0,r.jsx)("span",{className:"ml-2 font-normal text-xs text-[var(--colorTextTertiary)]",children:A.length})]}),(0,r.jsx)("button",{type:"button",className:"canvasRecordsLink",onClick:()=>{T(e=>!e),D([])},children:_?b("common.cancel"):b("records.batch")})]}),(0,r.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:S&&0===A.length?(0,r.jsx)("div",{className:"py-10 text-center",children:(0,r.jsx)(o.A,{size:"small"})}):0===A.length?(0,r.jsx)("div",{className:"py-8",children:(0,r.jsx)(i.A,{image:i.A.PRESENTED_IMAGE_SIMPLE,description:(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextTertiary)]",children:b("records.empty")})})}):Q.map(e=>{var n;let l=e.id===t,a=Y(e);return(0,r.jsxs)("div",{className:"group flex items-start gap-2 px-3 py-2 border-b border-[var(--canvasSectionBorder)] last:border-b-0 transition-colors ".concat(l?"bg-[var(--colorBgSelected)]":"hover:bg-[var(--colorBgHover)]"),children:[_&&(0,r.jsx)("input",{type:"checkbox",className:"mt-1 shrink-0",disabled:!a,checked:B.includes(e.id),onChange:t=>D(n=>t.target.checked?[...n,e.id]:n.filter(t=>t!==e.id))}),(0,r.jsxs)("button",{type:"button",className:"min-w-0 flex-1 text-left bg-transparent border-0 p-0 cursor-pointer",title:e.title,onClick:()=>{x(e),E(!1)},children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-1.5 h-1.5 shrink-0 rounded-full ".concat(null!=(n=y[e.status])?n:"bg-[var(--colorTextTertiary)]")}),(0,r.jsx)("span",{className:"truncate text-[13px] ".concat(l?"font-semibold text-[var(--colorText)]":"text-[var(--colorText)]"),children:e.title}),l&&(0,r.jsx)("span",{className:"shrink-0 text-[10px] text-[var(--colorTextTertiary)]",children:b("records.current")})]}),(0,r.jsxs)("div",{className:"mt-0.5 pl-3 text-[11px] text-[var(--colorTextTertiary)]",children:[(0,r.jsx)(d.A,{className:"mr-1"}),(0,g.fw)(e.updatedAt,"zh-CN")]})]}),!_&&a&&(0,r.jsx)(c.A,{title:b("records.confirmDelete"),description:b("records.deleteHint"),onConfirm:()=>{K(e)},okText:b("common.confirm"),cancelText:b("common.cancel"),children:(0,r.jsx)("button",{type:"button",className:"canvasRecordsDelete",title:b("common.delete"),children:(0,r.jsx)(m.A,{})})}),!_&&!a&&(0,r.jsx)(s.A,{title:b("records.inFlightHint"),children:(0,r.jsx)("span",{className:"canvasRecordsDelete isDisabled",children:(0,r.jsx)(m.A,{})})})]},e.id)})}),A.length>8&&(0,r.jsx)("div",{className:"flex justify-center px-3 py-2 border-t border-[var(--canvasSectionBorder)] shrink-0",children:(0,r.jsx)(u.A,{size:"small",simple:!0,current:R,total:A.length,pageSize:8,onChange:N})}),_&&(0,r.jsxs)("div",{className:"flex items-center justify-between gap-2 px-3 py-2 border-t border-[var(--canvasSectionBorder)] shrink-0",children:[(0,r.jsx)("span",{className:"text-xs text-[var(--colorTextSecondary)]",children:b("records.checkedCount").replace("{count}",String(B.length))}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("button",{type:"button",className:"canvasRecordsLink",onClick:()=>D(B.length===X.length?[]:X),children:B.length===X.length&&X.length>0?b("records.clearSelect"):b("records.selectPage")}),(0,r.jsx)(c.A,{title:b("records.confirmDeleteSelected").replace("{count}",String(B.length)),description:b("records.deleteHint"),disabled:0===B.length,onConfirm:()=>{J()},okText:b("common.confirm"),cancelText:b("common.cancel"),children:(0,r.jsxs)("button",{type:"button",className:"canvasRecordsDanger",disabled:0===B.length||q,children:[(0,r.jsx)(m.A,{className:"mr-1"}),b("records.deleteSelected")]})})]})]})]}),(0,r.jsxs)("div",{className:"canvasRecordsBallBtn",role:"button",tabIndex:0,"aria-label":"".concat(b("records.title"),"(").concat(A.length,")"),style:{width:44,height:44},onPointerDown:e=>{var t,n,r;let l=null==(n=j.current)||null==(t=n.parentElement)?void 0:t.getBoundingClientRect(),a=null==(r=j.current)?void 0:r.getBoundingClientRect();if(l&&a){U.current={pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originLeft:a.left-l.left,originTop:a.top-l.top,moved:!1};try{e.currentTarget.setPointerCapture(e.pointerId)}catch(e){}}},onPointerMove:e=>{var t,n;let r=U.current,l=null==(n=j.current)||null==(t=n.parentElement)?void 0:t.getBoundingClientRect();if(!r||r.pointerId!==e.pointerId||!l)return;let a=e.clientX-r.startX,o=e.clientY-r.startY;!r.moved&&5>Math.hypot(a,o)||(r.moved=!0,O({left:Math.min(Math.max(8,r.originLeft+a),Math.max(8,l.width-44-8)),top:Math.min(Math.max(8,r.originTop+o),Math.max(8,l.height-44-8))}))},onPointerUp:e=>{let t=U.current;U.current=null;try{e.currentTarget.releasePointerCapture(e.pointerId)}catch(e){}if(t){if(t.moved)return void O(e=>{if(e)try{window.localStorage.setItem(v,JSON.stringify(e))}catch(e){}return e});G()}},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),G())},children:[(0,r.jsx)(d.A,{}),(0,r.jsx)("span",{className:"canvasRecordsBallBadge".concat(0===A.length?" isZero":""),children:A.length>99?"99+":A.length})]})]})}let y={completed:"bg-[var(--colorOk)]",completed_with_issues:"bg-[var(--colorDanger)]",warning:"bg-[var(--colorWarning)]",failed:"bg-[var(--colorDanger)]",aborted:"bg-[var(--colorTextTertiary)]",generating:"bg-[var(--colorAccent)]",queued:"bg-[var(--colorTextTertiary)]",paused:"bg-[var(--colorWarning)]"}},93533:(e,t,n)=>{n.d(t,{Ce:()=>k,tl:()=>A});var r=n(97109),l=n(96538),a=n(94394),o=n(23216),i=n(26619),c=n(8263),s=n(16285),u=n(8579),d=n(29071),m=n(7851),p=n(1310),f=n(26631),h=n(83914),g=n(6578);async function v(e){let t,n=0;for(;;){var r,l;let a;if(e.cancelled())throw Error("用户中止");try{a=await e.read(t)}catch(t){if(e.cancelled())throw Error("用户中止",{cause:t});1===(n+=1)&&(null==(r=e.connectionInterrupted)||r.call(e,t)),await e.delay(Math.min(2e3*n,15e3));continue}n=0;let o=a.document;if(!o){if(!a.unchanged&&!a.status)throw Error("未找到生成记录,无法读取该任务进度");["paused","failed","aborted","completed","completed_with_issues","warning"].includes(null!=(l=a.status)?l:"")&&(t=void 0),await e.delay(1500);continue}if(t=o.updatedAt,e.apply(o),"paused"===o.status)return o;if("failed"===o.status||"aborted"===o.status)throw Error(o.error||("aborted"===o.status?"生成已中止":"生成失败"));if(["completed","completed_with_issues","warning"].includes(o.status)){if(o.draft)return o;throw Error(o.error||"服务任务已结束,但最终成稿未完成;已保存的正文可在生成记录中查看")}await e.delay(1500)}}let x=null,y=!1;function w(){null==x||x.listeners.forEach(e=>e())}let b=a.i_;function k(e){return"completed"!==e&&"completed_with_issues"!==e&&"warning"!==e&&"failed"!==e&&"aborted"!==e&&"paused"!==e}function j(e){var t,n,l,a,h,g,v,x,y;let w=null==(t=e.agentWorkflow)?void 0:t.nodes;if(!w||0===w.length)return null;let k=[...w].sort((e,t)=>{var n,r;return(null!=(n=e.seq)?n:0)-(null!=(r=t.seq)?r:0)}).map(e=>{let t=b[e.type]||e.title||e.type||"节点",n="failed"===e.status||"blocked"===e.status?"error":"paused"===e.status||"repairing"===e.status?"warning":"running"===e.status?"process":"pending"===e.status?"wait":"finish",l=Object.entries(e.metrics||{}).slice(0,4).map(e=>{let[t,n]=e;return"".concat(t,":").concat(String(n))}).join(" ");return{key:e.id,title:t,subtitle:e.progress?"".concat(e.progress.label||"进度",":").concat(e.progress.current,"/").concat(e.progress.total):"",description:l,status:n,icon:function(e){let t=e.split(".")[0]||e;return"role_binding"===e||"prepare"===t?(0,r.createElement)(o.A):"knowledge_retrieval"===e||"understand"===t?(0,r.createElement)(i.A):"file_understanding"===e||"skill"===t?(0,r.createElement)(c.A):"fact_extraction"===e?(0,r.createElement)(s.A):"chapter_generation"===e||"chapter"===t||"write"===t?(0,r.createElement)(u.A):"llm_review"===e||"turn"===t||"round"===t?(0,r.createElement)(d.A):"validation"===e||"repair"===t||"recheck"===t?(0,r.createElement)(m.A):"plan"===t||"blueprint"===t?(0,r.createElement)(o.A):"rollback"===t||"snapshot"===t?(0,r.createElement)(p.A):(0,r.createElement)(f.A)}(e.type),subSteps:[]}}),j="generating"===e.status||"queued"===e.status?null!=(v=null!=(g=null==(n=k.find(e=>"process"===e.status))?void 0:n.key)?g:null==(l=k.at(-1))?void 0:l.key)?v:null:("failed"===e.status||"aborted"===e.status)&&null!=(y=null!=(x=null==(a=k.find(e=>"error"===e.status))?void 0:a.key)?x:null==(h=k.at(-1))?void 0:h.key)?y:null;return{steps:k,activeKey:j}}function A(){var e,t;let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{projectRoot:a,documents:o,onNotice:i,t:c,onGenerated:s}=n,[u,d]=(0,r.useState)([]),[m,p]=(0,r.useState)(null),[f,b]=(0,r.useState)(!1),[A,I]=(0,r.useState)(null),[S,M]=(0,r.useState)(""),[C,E]=(0,r.useState)(null),[R,N]=(0,r.useState)(null!=(e=n.documentId)?e:null),[_,T]=(0,r.useState)(null),[B,D]=(0,r.useState)(null!=o?o:[]),[q,z]=(0,r.useState)(0),[P,O]=(0,r.useState)(null),[F,H]=(0,r.useState)([]),[U,L]=(0,r.useState)(null),[Q,Y]=(0,r.useState)(null),X=(0,r.useRef)(""),G=(0,r.useRef)(new Map),K=(0,r.useRef)(new Map),J=(0,r.useRef)(!1),W=(0,r.useRef)(a),V=(0,r.useRef)(R),Z=(0,r.useRef)(u),$=(0,r.useRef)(m),ee=(0,r.useRef)(f),et=(0,r.useRef)(c),en=(0,r.useRef)(i),er=(0,r.useRef)(s);(0,r.useEffect)(()=>{W.current=a},[a]),(0,r.useEffect)(()=>{V.current=R},[R]),(0,r.useEffect)(()=>{Z.current=u},[u]),(0,r.useEffect)(()=>{$.current=m},[m]),(0,r.useEffect)(()=>{ee.current=f},[f]),(0,r.useEffect)(()=>{et.current=c},[c]),(0,r.useEffect)(()=>{en.current=i},[i]),(0,r.useEffect)(()=>{er.current=s},[s]);let el=(0,r.useMemo)(()=>"activeGenDocId:".concat(a||"default"),[a]),ea=(0,r.useCallback)(e=>{var t;null==(t=en.current)||t.call(en,e)},[]),eo=(0,r.useCallback)((e,t)=>{var n,r;return null!=(r=null==(n=et.current)?void 0:n.call(et,e))?r:t},[]);(0,r.useEffect)(()=>{let e=()=>{let e=x;e&&(d(e.flowSteps),p(e.activeFlowKey),b(e.loading),e.documentId&&N(e.documentId),e.draft&&I(e.draft),void 0!==e.content&&M(e.content))},t=x;return null==t||t.listeners.add(e),e(),()=>{null==t||t.listeners.delete(e)}},[]);let ei=(0,r.useRef)(!1),ec=(0,r.useCallback)(async()=>{try{D((await (0,g.cQ)(W.current||void 0)).documents),ei.current=!1}catch(e){ei.current||(ei.current=!0,ea({kind:"error",text:"生成记录列表读取失败——界面显示的可能不是最新内容,请稍后重试或查看服务端日志"}))}},[ea]);(0,r.useEffect)(()=>{o&&D(o)},[o]),(0,r.useEffect)(()=>{void 0!==n.documentId&&null!==n.documentId&&N(n.documentId)},[n.documentId]);let es=(0,r.useCallback)(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ee.current;(null==x?void 0:x.loading)&&(x.flowSteps=e,x.activeFlowKey=t,x.loading=n,w())},[]),eu=(0,r.useCallback)(e=>{let t=Date.now();for(let n of e){let e=G.current.get(n.key);"process"!==n.status||e?("finish"===n.status||"error"===n.status||"warning"===n.status)&&e&&!e.endedAt&&G.current.set(n.key,{...e,endedAt:t}):G.current.set(n.key,{startedAt:t})}},[]),ed=(0,r.useCallback)(e=>{var t,n,r,l,a,o,i,c,s,u,m;let f=(null==(t=e.agentWorkflow)?void 0:t.nodes)||[],h="".concat(e.id,"|").concat(e.updatedAt,"|").concat(e.status,"|").concat(e.error||"","|n").concat(f.length,":").concat(f.map(e=>{var t,n,r,l;return"".concat(e.id,"=").concat(e.status,":").concat(null!=(r=null==(t=e.progress)?void 0:t.current)?r:0,"/").concat(null!=(l=null==(n=e.progress)?void 0:n.total)?l:0)}).join(","));if(X.current===h)return;X.current=h,E(e);let{steps:g,activeKey:v}=function(e){var t;return arguments.length>1&&void 0!==arguments[1]&&arguments[1],null!=(t=j(e))?t:{steps:[],activeKey:null}}(e);eu(g);let x=k(e.status);d(g),p(v),b(x),es(g,v,x),T("failed"===e.status||"aborted"===e.status?e.error||("aborted"===e.status?"生成已中止":"生成失败"):null),("completed"===e.status||"completed_with_issues"===e.status||"warning"===e.status)&&(e.draft&&I(e.draft),M(e.editedMarkdown||e.markdown),H(e.exportReports||[]),Y({docId:e.id,...(null==(n=e.deliveryQuality)?void 0:n.receipt)||(null==(r=e.reviewMetadata)?void 0:r.contractQuality)?{contractQuality:null!=(u=null==(l=e.deliveryQuality)?void 0:l.receipt)?u:e.reviewMetadata.contractQuality}:{},...(null==(a=e.deliveryQuality)?void 0:a.stale)||(null==(o=e.reviewMetadata)?void 0:o.contractQualityStale)?{contractQualityStale:null!=(m=null==(i=e.deliveryQuality)?void 0:i.stale)?m:e.reviewMetadata.contractQualityStale}:{},...e.projectRoot?{projectRoot:e.projectRoot}:{},...(null==(s=e.reviewMetadata)||null==(c=s.telemetry)?void 0:c.repairChainNetChars)?{netChars:e.reviewMetadata.telemetry.repairChainNetChars}:{}}))},[es,eu]),em=(0,r.useCallback)(e=>{e.id&&N(e.id),ed(e)},[ed]),ep=(0,r.useCallback)((e,t)=>v({cancelled:()=>!!(null==t?void 0:t.aborted),apply:ed,delay:e=>new Promise(t=>window.setTimeout(t,e)),connectionInterrupted:()=>ea({kind:"warning",text:"暂时无法读取生成进度,正在重新连接;生成状态以服务端回执为准"}),read:async n=>{let r=new AbortController;t&&(t.pollController=r);try{return await (0,g.v7)(e,!0,W.current||void 0,r.signal,n)}finally{(null==t?void 0:t.pollController)===r&&(t.pollController=void 0)}}}),[ed,ea]),ef=(0,r.useCallback)(async(e,t)=>{if(!e.specId)return;let n=e.title,l=e.promptIds,a=e.projectRoot||W.current;if((null==x?void 0:x.aborted)&&(x=null),null==x?void 0:x.loading){if(J.current)return;if(!a)return void ea({kind:"error",text:"未识别当前项目,请先选择或打开项目后再生成文件"});J.current=!0;try{let e=await (0,g.OX)({promptIds:l,...n?{title:n}:{},requirement:t,projectRoot:a});await ec(),ea({kind:"info",text:e.queuePosition?"已加入生成队列(第 ".concat(e.queuePosition," 位):前面任务完成后将自动开始"):"生成任务已创建"})}catch(e){ea({kind:"error",text:e instanceof Error?e.message:"创建生成任务失败"})}finally{J.current=!1}return}if(!a)return void ea({kind:"error",text:"未识别当前项目,请先选择或打开项目后再生成文件"});b(!0);let o=Z.current,i=o.length>0?o:[{key:"prepare",title:"正在创建生成任务",description:"系统正在创建后台生成任务,请稍候。",status:"process",icon:(0,r.createElement)(h.A),subSteps:[{key:"start",title:"准备生成任务",status:"process"}]}],c=$.current||"prepare";d(i),p(c);let s=(0,g.OX)({promptIds:l,...n?{title:n}:{},requirement:t,projectRoot:a});x={id:Date.now(),specId:e.specId,loading:!0,flowSteps:i,activeFlowKey:c,promise:s,listeners:new Set};try{var u,m,f,v,k,A;let t=await s;t.documentId&&(localStorage.setItem(el,t.documentId),N(t.documentId),(null==x?void 0:x.promise)===s&&(x.documentId=t.documentId)),await ec(),t.queuePosition&&ea({kind:"info",text:"已加入生成队列(第 ".concat(t.queuePosition," 位):前面任务完成后将自动开始")});let n=t.documentId?await ep(t.documentId,(null==x?void 0:x.promise)===s?x:void 0):void 0;if((null==n?void 0:n.status)==="paused"){(null==x?void 0:x.promise)===s&&(x.loading=!1,w(),x=null),localStorage.removeItem(el),await ec(),ea({kind:"info",text:"生成已在节点边界暂停,已保存实际正文和执行状态"});return}let r=t.draft||(null==n?void 0:n.draft);if(!r)throw Error("生成结果为空");(t.documentId||(null==n?void 0:n.id))&&N(t.documentId||n.id),I(r),M((null==n?void 0:n.editedMarkdown)||(null==n?void 0:n.markdown)||r.markdown),(null==x?void 0:x.promise)===s&&(x.draft=r,x.content=(null==n?void 0:n.editedMarkdown)||(null==n?void 0:n.markdown)||r.markdown);let l=n||{id:t.documentId||"draft-".concat(Date.now()),templateId:(null==(u=t.record)?void 0:u.templateId)||(null==(m=t.documentSpec)?void 0:m.id)||e.specId,templateName:(null==(f=t.record)?void 0:f.templateName)||(null==(v=t.documentSpec)?void 0:v.title),title:r.title,requirement:r.requirement,projectRoot:r.projectRoot||W.current,projectId:r.projectId,markdown:r.markdown,status:r.validationIssues.some(e=>"error"===e.level||"warning"===e.level)||!r.exportGate.passed?"completed_with_issues":"completed",draft:r,executionStages:r.executionStages,assets:r.assets||[],createdAt:r.generatedAt,updatedAt:Date.now()},{steps:a}=null!=(A=j(l))?A:{steps:[],activeKey:null};d(a),es(a,"done",!1),p("done"),(null==x?void 0:x.promise)===s&&(x.activeFlowKey="done",x.loading=!1,w(),x=null),localStorage.removeItem(el),await ec(),ea("completed"===l.status?{kind:"success",text:"生成完成,专业交付检查已通过"}:{kind:"warning",text:"本轮运行已结束,实际稿仍有问题待复核,可导出审阅稿"}),(t.documentId||(null==n?void 0:n.id))&&(null==(k=er.current)||k.call(er,t.documentId||n.id))}catch(r){localStorage.removeItem(el);let e=r instanceof Error?r.message:eo("common.error","出错了"),t=y;y=!1;let n=!t&&"用户中止"===e;T(e),t||d(t=>{let n=t.map(t=>"process"===t.status?{...t,status:"error",description:e,subSteps:t.subSteps.map((e,t)=>({...e,status:0===t?"error":e.status}))}:t);return es(n,$.current,!1),n}),(null==x?void 0:x.promise)===s&&(x.loading=!1,x.error=e,w(),x=null),await ec(),n?ea({kind:"warning",text:"生成任务已被中止(可能来自其他窗口):可在列表中点击「继续生成」恢复"}):t||ea({kind:"error",text:e})}finally{b(!1),y=!1,(null==x?void 0:x.promise)===s&&(x.loading=!1,w())}},[ea,ec,es,el,eo,ep]),eh=(0,r.useCallback)(e=>{let t=K.current.get(e);t&&(clearInterval(t),K.current.delete(e))},[]),eg=(0,r.useCallback)((e,t)=>{eh(e);let n=setInterval(()=>{(async()=>{try{let{document:n}=await (0,g.v7)(e,!0,t||W.current||void 0);if(!n)return;ed(n),await ec(),k(n.status)||(eh(e),localStorage.removeItem(el))}catch(e){}})()},2e3);K.current.set(e,n)},[ed,ec,eh,el]);(0,r.useEffect)(()=>()=>{for(let e of K.current.values())clearInterval(e);K.current.clear()},[]),(0,r.useEffect)(()=>{if(0===B.length)return;let e=localStorage.getItem(el);if(!e)return;if(!B.find(t=>t.id===e&&("generating"===t.status||"queued"===t.status)))return void localStorage.removeItem(el);N(e);let t=setInterval(()=>{(async()=>{try{let{document:n}=await (0,g.v7)(e,!1,W.current||void 0);if(!n)return;await ec(),"generating"!==n.status&&"queued"!==n.status&&(localStorage.removeItem(el),clearInterval(t))}catch(e){clearInterval(t)}})()},3e3);return()=>clearInterval(t)},[B,ec,el]),(0,r.useEffect)(()=>{var e;if(!R)return;let t=B.find(e=>e.id===R),n=null!=(e=null==t?void 0:t.status)?e:null==C?void 0:C.status;n&&k(n)?eg(R,(null==t?void 0:t.projectRoot)||W.current):eh(R)},[R,B,eg,eh,null==C?void 0:C.status]),(0,r.useEffect)(()=>{if(!f||!m)return;let e=window.setInterval(()=>d(e=>{let t=e.map(e=>{if(e.key!==m||"process"!==e.status)return e;let t=e.subSteps.findIndex(e=>"process"===e.status),n=t<0?0:Math.min(t+1,e.subSteps.length-1);return{...e,subSteps:e.subSteps.map((e,t)=>t<n?{...e,status:"finish"}:t===n?{...e,status:"process"}:{...e,status:"wait"})}});return es(t,m),t}),1400);return()=>window.clearInterval(e)},[m,f,es]),(0,r.useEffect)(()=>{if(!f)return;let e=window.setInterval(()=>z(e=>e+1),1e3);return()=>window.clearInterval(e)},[f]);let ev=(0,r.useCallback)(e=>{var t;let n=G.current.get(e);if(!n)return null;let r=null!=(t=n.endedAt)?t:Date.now(),a=(0,l.a)(r-n.startedAt,{unit:"ms",style:"fine"});return n.endedAt?a:"".concat(a,"(运行中)")},[q]),ex=(0,r.useCallback)(async e=>{x&&(y=!0);let t=V.current,n=null;if(t&&await (0,g.r)(t,e||W.current||void 0).catch(e=>{n=e}),x){var r;x.aborted=!0,null==(r=x.pollController)||r.abort(),x.loading=!1,x.error="用户中止",w(),x=null}for(let e of(localStorage.removeItem(el),K.current.values()))clearInterval(e);K.current.clear(),b(!1),d([]),p(null),T("用户中止"),await ec(),ea(n?{kind:"error",text:"本地已停止跟踪,但服务端未确认中止(".concat(n instanceof Error?n.message:String(n),")——任务可能仍在后台运行,请稍后重试或查看服务端日志")}:{kind:"success",text:"已中止生成任务"})},[ea,ec,el]),ey=(0,r.useCallback)(async e=>{if((null==x?void 0:x.loading)&&x.documentId===e.id){var t;y=!0,x.aborted=!0,null==(t=x.pollController)||t.abort(),x.loading=!1,x.error="用户中止",w(),x=null,b(!1)}localStorage.removeItem(el),eh(e.id);try{await (0,g.r)(e.id,e.projectRoot||W.current||void 0),ea({kind:"success",text:"queued"===e.status?"已取消排队任务":"已中止生成任务"})}catch(e){ea({kind:"info",text:"任务已不在运行,已刷新状态"})}finally{await ec(),V.current===e.id&&(N(null),E(null),I(null),M(""))}},[ea,ec,eh,el]),ew=(0,r.useCallback)(async e=>{try{N(e.id),b(!0);let t=await (0,g.UQ)(e.id,e.projectRoot||W.current||void 0);localStorage.setItem(el,t.documentId),await ec();let n=await ep(t.documentId);n.draft&&(I(n.draft),M(n.editedMarkdown||n.markdown||n.draft.markdown)),localStorage.removeItem(el),await ec(),ea("paused"===n.status?{kind:"info",text:"生成已暂停,实际稿已保存"}:"completed"===n.status?{kind:"success",text:"已继续生成并通过专业交付检查"}:{kind:"warning",text:"继续生成已结束,实际稿仍待复核,可导出审阅稿"})}catch(e){ea({kind:"error",text:e instanceof Error?e.message:"继续生成失败"})}finally{b(!1)}},[ea,ec,el,ep]),eb=(0,r.useCallback)(async(e,t)=>{let n=await fetch("/api/documents/generated/".concat(encodeURIComponent(e),"/pause"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:t||W.current||void 0})});if(!n.ok)throw Error(await n.text()||"HTTP ".concat(n.status));let r=await n.json();return ea({kind:"success",text:r.message||"已请求暂停:正在取消模型调用并保存已完成正文"}),await ec(),eg(e,t),r},[ea,ec,eg]),ek=(0,r.useCallback)(async(e,t)=>{let n=await fetch("/api/documents/generated/".concat(encodeURIComponent(e),"/resume-generate"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectRoot:t||W.current||void 0})});if(!n.ok)throw Error(await n.text()||"HTTP ".concat(n.status));let r=await n.json().catch(()=>void 0),l=null==r?void 0:r.resumeReuse;ea(l?{kind:0===l.blockers.length?"info":"warning",text:"已请求继续:".concat(l.reason)}:{kind:"info",text:"已请求继续:将复用已保存的检查点"}),await ec()},[ea,ec]),ej=(0,r.useCallback)((e,t,n)=>{let r=new Blob([e],{type:n}),l=URL.createObjectURL(r),a=document.createElement("a");a.href=l,a.download=t,a.target="_self",a.rel="noopener",a.style.display="none",document.body.appendChild(a),a.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,view:window})),a.remove(),window.setTimeout(()=>URL.revokeObjectURL(l),1e3)},[]),eA=(0,r.useCallback)(async(e,t)=>{let n=await (0,g.hU)(e,t);ej(n.blob,n.filename,"application/json;charset=utf-8")},[ej]),eI=(0,r.useCallback)(async(e,t,n)=>{try{let{blob:r,filename:l,receipt:a,gateIssues:o}=await (0,g.UE)(e);ej(r,l||t,n),L("review"===a.exportPurpose?{at:Date.now(),count:o.length,issues:o}:null),a.issuesReport&&await eA(e,a.issuesReport)}catch(t){throw t instanceof g.GA&&t.receipt.issuesReport&&await eA(e,t.receipt.issuesReport),t}},[ej,eA]),eS=(0,r.useMemo)(()=>({markdown:"text/markdown;charset=utf-8",html:"text/html;charset=utf-8",pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}),[]),eM=(0,r.useCallback)(async(e,t)=>{var n,r;let l=void 0!==e.editedMarkdown?e.editedMarkdown:e.markdown||(null==(n=e.draft)?void 0:n.markdown)||"",a=void 0===e.editedMarkdown&&(null==(r=e.checkpointChapters)?void 0:r.some(e=>{var t;return null==(t=e.content)?void 0:t.trim()}));if(!l.trim()&&!a)return void ea({kind:"warning",text:"该记录暂无可导出的正文内容"});O(t);let o={exportPurpose:"review",documentId:e.id,title:e.title,format:t,projectRoot:e.projectRoot||W.current||void 0};try{await eI(o,"".concat(e.title,".").concat("markdown"===t?"md":t),eS[t])}catch(e){ea({kind:"error",text:e instanceof Error?e.message:"导出失败"})}finally{O(null)}},[eI,eS,ea]),eC=(0,r.useCallback)(async e=>{if(!A)return;O(e);let t={exportPurpose:"review",documentId:V.current||void 0,title:A.title,markdown:S,format:e,exportGate:A.exportGate,useClientMarkdown:!0,projectRoot:A.projectRoot||W.current||void 0};try{if(await eI(t,"".concat(A.title,".").concat("markdown"===e?"md":e),eS[e]),V.current)try{let{document:e}=await (0,g.v7)(V.current,!1,A.projectRoot||W.current||void 0);e&&H(e.exportReports||[])}catch(e){}}catch(e){ea({kind:"error",text:e instanceof Error?e.message:"导出失败"})}finally{O(null)}},[S,eI,A,eS,ea]),eE=R&&null!=(t=B.find(e=>e.id===R))?t:C,eR=function(e,t){if(!e)return t?"running":"idle";switch(e){case"queued":return"queued";case"generating":return"running";case"paused":return"paused";case"failed":case"aborted":return"stopped";case"completed_with_issues":case"warning":return"issues";case"completed":return"done";default:return"idle"}}(null==eE?void 0:eE.status,f);return{flowSteps:u,activeFlowKey:m,loading:f,draft:A,content:S,workflowRecord:C,documentId:R,documents:B,error:_,phase:eR,flowTick:q,boundRecord:eE,canResume:function(e){var t,n,r,l,a,o,i,c;if(!e)return{resumable:!1,kind:"not-resumable",reason:"记录不存在"};let s=String(e.status||""),u=null!=(r=null==(t=e.checkpointChapters)?void 0:t.length)?r:0,d=u>0,m="number"==typeof e.interruptedAt||!!e.interruptionReason;if(null!=(l=e.running)?l:"generating"===s||"queued"===s)return{resumable:!1,kind:"not-resumable",reason:"这次生成还在跑(续跑入口不该在运行态出现)"};if("paused"===s)return{resumable:!0,kind:"paused",reason:"暂停是可逆的:从检查点接着跑,未受影响的章会被复用"};if(m)return d?{resumable:!0,kind:"interrupted",reason:"上次运行被中断(".concat(null!=(a=e.interruptionReason)?a:"中断标记",")且留有 ").concat(u," 个检查点章:续跑只补未完成的章")}:{resumable:!1,kind:"not-resumable",reason:"这次运行被中断且**没有检查点章**:续跑等于全量重跑,请用新建生成(这里不伪装成续跑)"};if("warning"===s)return d?{resumable:!0,kind:"interrupted",reason:"上次运行留下了 ".concat(u," 个检查点章(状态 warning):续跑只补未完成的章")}:{resumable:!1,kind:"not-resumable",reason:"warning 且没有检查点章:没有可接着跑的东西,请用新建生成"};let p=null!=(o=null==(n=e.draft)?void 0:n.exportGate)?o:e.exportGate;if((null==p?void 0:p.passed)===!1){let e=null!=(c=null==(i=p.blockingIssues)?void 0:i.length)?c:0;return{resumable:!0,kind:"gate-blocked-repair",reason:"门禁未过(".concat(e>0?"".concat(e," 项阻断"):"阻断清单未随记录落盘","):续跑把阻断项交回生成侧修复(回源修复,不是重新生成)")}}return"completed"===s?{resumable:!1,kind:"not-resumable",reason:'这份稿已完成:要再跑请新建生成("继续"会把已定的交付物再推一遍)'}:"completed_with_issues"===s||"failed"===s||"aborted"===s?{resumable:!0,kind:"resumable-terminal",reason:"completed_with_issues"===s?"已收口但有未过项:续跑把未过项交回生成侧修复(回源修复,不是重新生成)".concat(d?";复用 ".concat(u," 个检查点章"):""):"aborted"===s?"这份稿被中止过:续跑从中断处接着跑".concat(d?"(复用 ".concat(u," 个检查点章)"):"(无检查点 ⇒ 全量重跑)"):"上次生成失败:续跑接着跑".concat(d?"(复用 ".concat(u," 个检查点章)"):"(无检查点 ⇒ 全量重跑)")}:{resumable:!1,kind:"not-resumable",reason:"当前状态(".concat(s||"未知",")没有可续跑的线索")}}(eE).resumable,startGeneration:ef,abortGeneration:ex,abortDocument:ey,resumeDocument:ew,pauseDocument:eb,resumePausedDocument:ek,applyRecord:em,refreshDocuments:ec,waitForDoc:ep,stepDurationText:ev,setDraft:I,setContent:M,setExportReports:H,export:{exporting:P,nonDeliverableExport:U,exportRecord:eM,exportEditor:eC,downloadExport:eI,exportReports:F},deliveryReadings:Q}}},94394:(e,t,n)=>{n.d(t,{i_:()=>r,uh:()=>l});let r={role_binding:"项目角色配置绑定",knowledge_retrieval:"知识库证据检索",file_understanding:"项目资料理解",fact_extraction:"事实抽取",chapter_generation:"章节正文生成",llm_review:"独立复核",validation:"规则与准入校验",reference:"资料增强"},l={success:"完成",running:"进行中",failed:"失败",skipped:"跳过",partial:"部分生效",pending:"等待中"}},96538:(e,t,n)=>{n.d(t,{a:()=>l,j:()=>a});let r={coarse:function(e,t){let n=Math.floor(e/1e3),r=Math.floor(n/86400),l=Math.floor(n%86400/3600),a=Math.floor(n%3600/60),o="en-US"===t;return r>0?o?"".concat(r,"d ").concat(l,"h"):"".concat(r," 天 ").concat(l," 小时"):l>0?o?"".concat(l,"h ").concat(a,"m"):"".concat(l," 小时 ").concat(a," 分"):a>0?o?"".concat(a,"m"):"".concat(a," 分"):o?"Just now":"刚刚"},fine:function(e){let t=Math.round(e/1e3);if(t<60)return"".concat(t," 秒");let n=Math.floor(t/60);return n<60?"".concat(n," 分 ").concat(t%60," 秒"):"".concat(Math.floor(n/60)," 小时 ").concat(n%60," 分")},"fine-decimal":function(e){return e>=6e4?"".concat(Math.floor(e/6e4)," 分 ").concat(Math.round(e%6e4/1e3)," 秒"):"".concat((e/1e3).toFixed(1)," 秒")},metric:function(e){return e<1e3?"".concat(Math.round(e),"ms"):e<6e4?"".concat((e/1e3).toFixed(1),"s"):"".concat((e/6e4).toFixed(1),"min")}};function l(e,t){var n;return r[t.style](function(e,t){let n="s"===t?1e3*e:e;return Number.isFinite(n)&&n>0?n:0}(e,t.unit),null!=(n=t.locale)?n:"zh-CN")}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"zh-CN";return l(e,{unit:"s",style:"coarse",locale:t})}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[573],{47210:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(97109),o=n(58970),i=n(88483);function a(){return(a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}let l=r.forwardRef((e,t)=>r.createElement(i.A,a({},e,{ref:t,icon:o.A})))},58970:(e,t)=>{t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M872 474H286.9l350.2-304c5.6-4.9 2.2-14-5.2-14h-88.5c-3.9 0-7.6 1.4-10.5 3.9L155 487.8a31.96 31.96 0 000 48.3L535.1 866c1.5 1.3 3.3 2 5.2 2h91.5c7.4 0 10.8-9.2 5.2-14L286.9 550H872c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z"}}]},name:"arrow-left",theme:"outlined"}},61910:(e,t,n)=>{n.d(t,{A:()=>b});var r=n(64446),o=n(97109),i=n(3638),a=n(20008),l=n(73473);let s=void 0,c=o.forwardRef(function(e,t){let n,{prefixCls:l,invalidate:c,item:d,renderItem:m,responsive:u,responsiveDisabled:f,registerSize:p,itemKey:g,className:y,style:v,children:h,display:$,order:b,component:E="div",...w}=e,A=u&&!$;o.useEffect(()=>()=>{p(g,null)},[]);let S=m&&d!==s?m(d,{index:b}):h;c||(n={opacity:+!A,height:A?0:s,overflowY:A?"hidden":s,order:u?b:s,pointerEvents:A?"none":s,position:A?"absolute":s});let I={};A&&(I["aria-hidden"]=!0);let O=o.createElement(E,(0,r.A)({className:(0,i.$)(!c&&l,y),style:{...n,...v}},I,w,{ref:t}),S);return u&&(O=o.createElement(a.Ay,{onResize:({offsetWidth:e})=>{p(g,e)},disabled:f},O)),O});var d=n(19750),m=n(61222),u=n(49127);function f(e,t){let[n,r]=o.useState(t);return[n,(0,d.A)(t=>{e(()=>{r(t)})})]}let p=o.createContext(null),g=o.forwardRef((e,t)=>{let n=o.useContext(p);if(!n){let{component:n="div",...i}=e;return o.createElement(n,(0,r.A)({},i,{ref:t}))}let{className:a,...l}=n,{className:s,...d}=e;return o.createElement(p.Provider,{value:null},o.createElement(c,(0,r.A)({ref:t,className:(0,i.$)(a,s)},l,d)))}),y="responsive",v="invalidate";function h(e){return`+ ${e.length} ...`}let $=o.forwardRef(function(e,t){let{prefixCls:n="rc-overflow",data:s=[],renderItem:d,renderRawItem:g,itemKey:$,itemWidth:b=10,ssr:E,style:w,className:A,maxCount:S,renderRest:I,renderRawRest:O,prefix:M,suffix:C,component:N="div",itemComponent:x,onVisibleChange:k,...R}=e,z="full"===E,K=function(){let e=o.useRef(null);return t=>{if(!e.current){e.current=[];var n=()=>{(0,m.unstable_batchedUpdates)(()=>{e.current.forEach(e=>{e()}),e.current=null})};if("undefined"==typeof MessageChannel)(0,u.A)(n);else{let e=new MessageChannel;e.port1.onmessage=()=>n(),e.port2.postMessage(void 0)}}e.current.push(t)}}(),[X,L]=f(K,null),P=X||0,[D,H]=f(K,new Map),[Y,_]=f(K,0),[T,j]=f(K,0),[Q,B]=f(K,0),[F,G]=f(K,0),[U,V]=(0,o.useState)(null),[W,J]=(0,o.useState)(null),Z=o.useMemo(()=>null===W&&z?Number.MAX_SAFE_INTEGER:W||0,[W,X]),[q,ee]=(0,o.useState)(!1),et=`${n}-item`,en=Math.max(Y,T),er=S===y,eo=s.length&&er,ei=S===v,ea=eo||"number"==typeof S&&s.length>S,el=(0,o.useMemo)(()=>{let e=s;return eo?e=null===X&&z?s:s.slice(0,Math.min(s.length,P/b)):"number"==typeof S&&(e=s.slice(0,S)),e},[s,b,X,S,eo]),es=(0,o.useMemo)(()=>eo?s.slice(Z+1):s.slice(el.length),[s,el,eo,Z]),ec=(0,o.useCallback)((e,t)=>"function"==typeof $?$(e):($&&e?.[$])??t,[$]),ed=(0,o.useCallback)(d||(e=>e),[d]);function em(e,t,n){(W!==e||void 0!==t&&t!==U)&&(J(e),n||(ee(e<s.length-1),k?.(e)),void 0!==t&&V(t))}function eu(e,t){H(n=>{let r=new Map(n);return null===t?r.delete(e):r.set(e,t),r})}function ef(e){return D.get(ec(el[e],e))}(0,l.A)(()=>{if(P&&"number"==typeof en&&el){let e=Q+F,t=el.length,n=t-1;if(!t)return void em(0,null);for(let r=0;r<t;r+=1){let t=ef(r);if(z&&(t=t||0),void 0===t){em(r-1,void 0,!0);break}if(e+=t,0===n&&e<=P||r===n-1&&e+ef(n)<=P){em(n,null);break}if(e+en>P){em(r-1,e-t-F+T);break}}C&&ef(0)+F>P&&V(null)}},[P,D,T,Q,F,ec,el]);let ep=q&&!!es.length,eg={};null!==U&&eo&&(eg={position:"absolute",top:0,insetInlineStart:U});let ey={prefixCls:et,responsive:eo,component:x,invalidate:ei},ev=g?(e,t)=>{let n=ec(e,t);return o.createElement(p.Provider,{key:n,value:{...ey,order:t,item:e,itemKey:n,registerSize:eu,display:t<=Z}},g(e,t))}:(e,t)=>{let n=ec(e,t);return o.createElement(c,(0,r.A)({},ey,{order:t,key:n,item:e,renderItem:ed,itemKey:n,registerSize:eu,display:t<=Z}))},eh={order:ep?Z:Number.MAX_SAFE_INTEGER,className:`${et}-rest`,registerSize:function(e,t){j(t),_(T)},display:ep},e$=I||h,eb=O?o.createElement(p.Provider,{value:{...ey,...eh}},O(es)):o.createElement(c,(0,r.A)({},ey,eh),"function"==typeof e$?e$(es):e$),eE=o.createElement(N,(0,r.A)({className:(0,i.$)(!ei&&n,A),style:w,ref:t},R),M&&o.createElement(c,(0,r.A)({},ey,{responsive:er,responsiveDisabled:!eo,order:-1,className:`${et}-prefix`,registerSize:function(e,t){B(t)},display:!0}),M),el.map(ev),ea?eb:null,C&&o.createElement(c,(0,r.A)({},ey,{responsive:er,responsiveDisabled:!eo,order:Z,className:`${et}-suffix`,registerSize:function(e,t){G(t)},display:!0,style:eg}),C));return er?o.createElement(a.Ay,{onResize:function(e,t){L(t.clientWidth)},disabled:!eo},eE):eE});$.Item=g,$.RESPONSIVE=y,$.INVALIDATE=v;let b=$},64446:(e,t,n)=>{n.d(t,{A:()=>r});function r(){return(r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(null,arguments)}},85493:(e,t,n)=>{n.d(t,{A:()=>x});var r=n(97109),o=n(59188),i=n(4216),a=n(45042),l=n(97137),s=n(62188),c=n(67189),d=n(42644),m=n(3638),u=n(92162),f=n(26047),p=n(74567),g=n(15561),y=n(7961),v=n(10540);let h=(e,t,n)=>({background:e,[`${n}-icon`]:{color:t}}),$=(0,v.OF)("Alert",e=>[(e=>{let{componentCls:t,motionDurationSlow:n,marginXS:r,marginSM:o,fontSize:i,fontSizeLG:a,lineHeight:l,borderRadiusLG:s,motionEaseInOutCirc:c,withDescriptionIconSize:d,colorText:m,colorTextHeading:u,withDescriptionPadding:f,defaultPadding:p,lineWidth:v,lineType:h,colorSuccessBorder:$,colorWarningBorder:b,colorErrorBorder:E,colorInfoBorder:w}=e;return{[t]:{...(0,y.dF)(e),position:"relative",display:"flex",alignItems:"center",padding:p,wordWrap:"break-word",borderRadius:s,borderWidth:(0,g.zA)(v),borderStyle:h,[`&${t}-success`]:{borderColor:$},[`&${t}-info`]:{borderColor:w},[`&${t}-warning`]:{borderColor:b},[`&${t}-error`]:{borderColor:E},[`&${t}-filled`]:{borderColor:"transparent"},[`&${t}-rtl`]:{direction:"rtl"},[`${t}-section`]:{flex:1,minWidth:0},[`${t}-icon`]:{marginInlineEnd:r,lineHeight:0},"&-description":{display:"none",fontSize:i,lineHeight:l},"&-title":{color:u},[`&${t}-motion-leave`]:{overflow:"hidden",opacity:1,transition:["max-height","opacity","padding-top","padding-bottom","margin-bottom"].map(e=>`${e} ${n} ${c}`).join(", ")},[`&${t}-motion-leave-active`]:{maxHeight:0,marginBottom:"0 !important",paddingTop:0,paddingBottom:0,opacity:0},[`&${t}-with-description`]:{alignItems:"flex-start",padding:f,[`${t}-icon`]:{marginInlineEnd:o,fontSize:d,lineHeight:0},[`${t}-title`]:{display:"block",marginBottom:r,color:u,fontSize:a},[`${t}-description`]:{display:"block",color:m}},[`&${t}-banner`]:{marginBottom:0,border:"0 !important",borderRadius:0}}}})(e),(e=>{let{componentCls:t,colorSuccess:n,colorSuccessBg:r,colorWarning:o,colorWarningBg:i,colorError:a,colorErrorBg:l,colorInfo:s,colorInfoBg:c}=e;return{[t]:{"&-success":h(r,n,t),"&-info":h(c,s,t),"&-warning":h(i,o,t),"&-error":{...h(l,a,t),[`${t}-description > pre`]:{margin:0,padding:0}}}}})(e),(e=>{let{componentCls:t,iconCls:n,motionDurationMid:r,marginXS:o,fontSizeIcon:i,colorIcon:a,colorIconHover:l}=e;return{[t]:{[`${t}-actions`]:{marginInlineStart:o},[`${t}-close-icon`]:{marginInlineStart:o,padding:0,overflow:"hidden",fontSize:i,lineHeight:(0,g.zA)(i),backgroundColor:"transparent",border:"none",cursor:"pointer",...(0,y.K8)(e),[`${n}-close`]:{color:a,transition:`color ${r}`,"&:hover":{color:l}}},"&-close-text":{color:a,transition:`color ${r}`,"&:hover":{color:l}}}}})(e)],e=>({withDescriptionIconSize:e.fontSizeHeading3,defaultPadding:`${e.paddingContentVerticalSM}px 12px`,withDescriptionPadding:`${e.paddingMD}px ${e.paddingContentHorizontalLG}px`})),b=e=>{let{icon:t,type:n,className:a,style:c,successIcon:d,infoIcon:m,warningIcon:u,errorIcon:f}=e,p={success:d??r.createElement(o.A,null),info:m??r.createElement(s.A,null),error:f??r.createElement(i.A,null),warning:u??r.createElement(l.A,null)};return r.createElement("span",{className:a,style:c},t??p[n])},E=e=>{let{isClosable:t,prefixCls:n,closeIcon:o,handleClose:i,ariaProps:l,className:s,style:c}=e,d=!0===o||void 0===o?r.createElement(a.A,null):o;return t?r.createElement("button",{type:"button",onClick:i,className:(0,m.$)(`${n}-close-icon`,s),tabIndex:0,style:c,...l},d):null},w=r.forwardRef((e,t)=>{let{description:n,prefixCls:o,message:i,title:a,banner:l,className:s,rootClassName:g,style:y,onMouseEnter:v,onMouseLeave:h,onClick:w,afterClose:A,showIcon:S,closable:I,closeText:O,closeIcon:M,action:C,id:N,styles:x,classNames:k,...R}=e,z=a??i,[K,X]=r.useState(!1),L=r.useRef(null);r.useImperativeHandle(t,()=>({nativeElement:L.current}));let{getPrefixCls:P,direction:D,variant:H,closable:Y,closeIcon:_,className:T,style:j,classNames:Q,styles:B,successIcon:F,infoIcon:G,warningIcon:U,errorIcon:V}=(0,p.TP)("alert"),W=P("alert",o),[J,Z]=$(W),{onClose:q,afterClose:ee}=(0,f.Qd)(I)?I:{},et=t=>{X(!0),(q??e.onClose)?.(t)},en=r.useMemo(()=>void 0!==e.type?e.type:l?"warning":"info",[e.type,l]),er=e.variant??H??"outlined",eo=r.useMemo(()=>!!(0,f.Qd)(I)&&!!I.closeIcon||!!O||("boolean"==typeof I?I:!!(!1!==M&&(0,f.R)(M))||!!Y),[O,M,I,Y]),ei=!!l&&void 0===S||S,ea={...e,prefixCls:W,variant:er,type:en,showIcon:ei,closable:eo},el=(0,u.XT)(j),es=(0,u.XT)(y),[ec,ed]=(0,u.AV)([Q,k],[B,el,x,es],{props:ea}),em=(0,m.$)(W,`${W}-${en}`,`${W}-${er}`,{[`${W}-with-description`]:!!n,[`${W}-no-icon`]:!ei,[`${W}-banner`]:!!l,[`${W}-rtl`]:"rtl"===D},T,s,g,ec.root,Z,J),eu=(0,d.KE)(R,{aria:!0,data:!0}),ef=r.useMemo(()=>(0,f.Qd)(I)&&I.closeIcon?I.closeIcon:O||(void 0!==M?M:(0,f.Qd)(Y)&&Y.closeIcon?Y.closeIcon:_),[M,I,Y,O,_]),ep=r.useMemo(()=>{let e=I??Y;return(0,f.Qd)(e)?(0,d.KE)(e,{data:!0,aria:!0}):{}},[I,Y]);return r.createElement(c.Ay,{visible:!K,motionName:`${W}-motion`,motionAppear:!1,motionEnter:!1,onLeaveStart:e=>({maxHeight:e.offsetHeight}),onLeaveEnd:ee??A},({className:t,style:o},i)=>r.createElement("div",{id:N,ref:(0,d.K4)(L,i),"data-show":!K,className:(0,m.$)(em,t),style:{...ed.root,...o},onMouseEnter:v,onMouseLeave:h,onClick:w,role:"alert",...eu},ei?r.createElement(b,{className:(0,m.$)(`${W}-icon`,ec.icon),style:ed.icon,description:n,icon:e.icon,prefixCls:W,type:en,successIcon:F,infoIcon:G,warningIcon:U,errorIcon:V}):null,r.createElement("div",{className:(0,m.$)(`${W}-section`,ec.section),style:ed.section},z?r.createElement("div",{className:(0,m.$)(`${W}-title`,ec.title),style:ed.title},z):null,n?r.createElement("div",{className:(0,m.$)(`${W}-description`,ec.description),style:ed.description},n):null),C?r.createElement("div",{className:(0,m.$)(`${W}-actions`,ec.actions),style:ed.actions},C):null,r.createElement(E,{className:ec.close,style:ed.close,isClosable:eo,prefixCls:W,closeIcon:ef,handleClose:et,ariaProps:ep})))});var A=n(41113),S=n(49939),I=n(90218),O=n(13076),M=n(83784),C=n(15472);let N=function(e){function t(){var e,n,r;return(0,A.A)(this,t),n=t,r=arguments,n=(0,I.A)(n),(e=(0,M.A)(this,(0,O.A)()?Reflect.construct(n,r||[],(0,I.A)(this).constructor):n.apply(this,r))).state={error:void 0,info:{}},e}return(0,C.A)(t,e),(0,S.A)(t,[{key:"componentDidCatch",value:function(e,t){this.setState({error:e,info:t})}},{key:"render",value:function(){let{message:e,title:t,description:n,id:o,children:i}=this.props,{error:a,info:l}=this.state,s=t??e,c=l?.componentStack||null,d=(0,f.R)(s)?s:a?.toString(),m=(0,f.R)(n)?n:c;return a?r.createElement(w,{id:o,type:"error",title:d,description:r.createElement("pre",{style:{fontSize:"0.9em",overflowX:"auto"}},m)}):i}}])}(r.PureComponent);w.ErrorBoundary=N;let x=w},86827:(e,t,n)=>{n.d(t,{EZ:()=>u,J6:()=>d,L2:()=>m,YU:()=>s,_j:()=>p,gx:()=>c,nP:()=>l,ox:()=>i,vR:()=>a});var r=n(15561),o=n(5688);let i=new r.Mo("antSlideUpIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1}}),a=new r.Mo("antSlideUpOut",{"0%":{transform:"scaleY(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"0% 0%",opacity:0}}),l=new r.Mo("antSlideDownIn",{"0%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0},"100%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1}}),s=new r.Mo("antSlideDownOut",{"0%":{transform:"scaleY(1)",transformOrigin:"100% 100%",opacity:1},"100%":{transform:"scaleY(0.8)",transformOrigin:"100% 100%",opacity:0}}),c=new r.Mo("antSlideLeftIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1}}),d=new r.Mo("antSlideLeftOut",{"0%":{transform:"scaleX(1)",transformOrigin:"0% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"0% 0%",opacity:0}}),m=new r.Mo("antSlideRightIn",{"0%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0},"100%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1}}),u=new r.Mo("antSlideRightOut",{"0%":{transform:"scaleX(1)",transformOrigin:"100% 0%",opacity:1},"100%":{transform:"scaleX(0.8)",transformOrigin:"100% 0%",opacity:0}}),f={"slide-up":{inKeyframes:i,outKeyframes:a},"slide-down":{inKeyframes:l,outKeyframes:s},"slide-left":{inKeyframes:c,outKeyframes:d},"slide-right":{inKeyframes:m,outKeyframes:u}},p=(e,t)=>{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=f[t];return[(0,o.b)(r,i,a,e.motionDurationMid),{[`
2
- ${r}-enter,
3
- ${r}-appear
4
- `]:{transform:"scale(0)",transformOrigin:"0% 0%",opacity:0,animationTimingFunction:e.motionEaseOutQuint,"&-prepare":{transform:"scale(1)"}},[`${r}-leave`]:{animationTimingFunction:e.motionEaseInQuint}}]}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[576],{7576:(e,t,n)=>{n.d(t,{A:()=>H});var r=n(97109),a=n(3638),l=n(74567),s=n(55359),o=n(33442),i=n(44390),u=n(78902),c=n(9750),p=n(42644),d=n(92162),m=n(26047),f=n(4034),h=n(27273),b=n(10540),g=n(28403),$=n(84767);let v=(0,b.OF)(["Input","OTP"],e=>(e=>{let{componentCls:t,paddingXS:n}=e;return{[t]:{display:"inline-flex",alignItems:"center",flexWrap:"nowrap",columnGap:n,[`${t}-input-wrapper`]:{position:"relative",[`${t}-mask-icon`]:{position:"absolute",zIndex:"1",top:"50%",right:"50%",transform:"translate(50%, -50%)",pointerEvents:"none"},[`${t}-mask-input`]:{color:"transparent",caretColor:e.colorText,"&::selection":{color:"transparent"}},[`${t}-mask-input[type=number]::-webkit-inner-spin-button`]:{"-webkit-appearance":"none",margin:0},[`${t}-mask-input[type=number]`]:{"-moz-appearance":"textfield"}},"&-rtl":{direction:"rtl"},[`${t}-input`]:{textAlign:"center",paddingInline:e.paddingXXS},[`&${t}-sm ${t}-input`]:{paddingInline:e.calc(e.paddingXXS).div(2).equal()},[`&${t}-lg ${t}-input`]:{paddingInline:e.paddingXS}}}})((0,g.oX)(e,(0,$.C)(e))),$.b),y=r.forwardRef((e,t)=>{let{className:n,value:s,onChange:o,onActiveChange:i,index:c,mask:d,onFocus:m,...f}=e,{getPrefixCls:h}=r.useContext(l.QO),b=h("otp"),g="string"==typeof d?d:s,$=r.useRef(null);r.useImperativeHandle(t,()=>$.current);let v=()=>{(0,p.er)(()=>{let e=$.current?.input;document.activeElement===e&&e&&e.select()})};return r.createElement("span",{className:`${b}-input-wrapper`,role:"presentation"},d&&""!==s&&void 0!==s&&r.createElement("span",{className:`${b}-mask-icon`,"aria-hidden":"true"},g),r.createElement(u.A,{"aria-label":`OTP Input ${c+1}`,type:!0===d?"password":"text",...f,ref:$,value:s,onInput:e=>{o(c,e.target.value)},onFocus:e=>{m?.(e),v()},onKeyDown:e=>{let{key:t,ctrlKey:n,metaKey:r}=e;"ArrowLeft"===t?i(c-1):"ArrowRight"===t?i(c+1):"z"===t&&(n||r)?e.preventDefault():"Backspace"!==t||s||i(c-1),v()},onMouseDown:v,onMouseUp:v,className:(0,a.$)(n,{[`${b}-mask-input`]:d})}))});function A(e){return(e||"").split("")}let E=e=>{let{index:t,prefixCls:n,separator:l,className:s,style:o}=e,i=(0,m.Tn)(l)?l(t):l;return i?r.createElement("span",{className:(0,a.$)(`${n}-separator`,s),style:o},i):null},k=r.forwardRef((e,t)=>{let{prefixCls:n,length:o=6,size:i,defaultValue:u,value:m,onChange:b,formatter:g,separator:$,variant:k,disabled:C,status:w,autoFocus:x,mask:N,type:z,autoComplete:M,onInput:I,onFocus:S,inputMode:O,classNames:P,styles:F,className:T,style:R,...D}=e,{classNames:L,styles:_,getPrefixCls:Q,direction:X,style:q,className:B}=(0,l.TP)("otp"),H=Q("otp",n),W={...e,length:o},j=(0,d.XT)(q),K=(0,d.XT)(R),[V,G]=(0,d.AV)([L,P],[_,j,F,K],{props:W}),J=(0,p.KE)(D,{aria:!0,data:!0,attr:!0}),[U,Y]=v(H),Z=(0,h.A)(e=>i??e),ee=r.useContext(s.$W),et=(0,f.v)(ee.status,w),en=r.useMemo(()=>({...ee,status:et,hasFeedback:!1,feedbackIcon:null}),[ee,et]),er=r.useRef(null),ea=r.useRef({});r.useImperativeHandle(t,()=>({focus:()=>{ea.current[0]?.focus()},blur:()=>{for(let e=0;e<o;e+=1)ea.current[e]?.blur()},nativeElement:er.current}));let el=e=>g?g(e):e,[es,eo]=r.useState(()=>A(el(u||"")));r.useEffect(()=>{void 0!==m&&eo(A(m))},[m]);let ei=(0,p._q)(e=>{eo(e),I&&I(e),b&&e.length===o&&e.every(e=>e)&&e.some((e,t)=>es[t]!==e)&&b(e.join(""))}),eu=(0,p._q)((e,t)=>{let n=(0,c.A)(es);for(let t=0;t<e;t+=1)n[t]||(n[t]="");t.length<=1?n[e]=t:n=n.slice(0,e).concat(A(t)),n=n.slice(0,o);for(let e=n.length-1;e>=0&&!n[e];e-=1)n.pop();return n=A(el(n.map(e=>e||" ").join(""))).map((e,t)=>" "!==e||n[t]?e:n[t])}),ec=(e,t)=>{let n=eu(e,t),r=Math.min(e+t.length,o-1);r!==e&&void 0!==n[e]&&ea.current[r]?.focus(),ei(n)},ep=e=>{ea.current[e]?.focus()},ed={variant:k,disabled:C,status:et,mask:N,type:z,inputMode:O,autoComplete:M};return r.createElement("div",{...J,ref:er,className:(0,a.$)(T,H,{[`${H}-sm`]:"small"===Z,[`${H}-lg`]:"large"===Z,[`${H}-rtl`]:"rtl"===X},Y,U,B,V.root),style:G.root,role:"group"},r.createElement(s.$W.Provider,{value:en},Array.from({length:o}).map((e,t)=>{let n=`otp-${t}`,l=es[t]||"";return r.createElement(r.Fragment,{key:n},r.createElement(y,{ref:e=>{ea.current[t]=e},index:t,size:Z,htmlSize:1,className:(0,a.$)(V.input,`${H}-input`),style:G.input,onChange:ec,value:l,onActiveChange:ep,autoFocus:0===t&&x,onFocus:e=>((e,t)=>{for(let e=0;e<t;e+=1)if(!ea.current[e]?.input?.value){ea.current[e]?.focus();break}S?.(e)})(e,t),...ed}),t<o-1&&r.createElement(E,{separator:$,index:t,prefixCls:H,className:(0,a.$)(V.separator),style:G.separator}))})))});var C=n(70542),w=n(88483);function x(){return(x=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}let N=r.forwardRef((e,t)=>r.createElement(w.A,x({},e,{ref:t,icon:C.A})));var z=n(8263),M=n(6831),I=n(69925),S=n(62116);let O={click:"onClick",hover:"onMouseOver"},P=r.forwardRef((e,t)=>{let{disabled:n,action:s="click",visibilityToggle:o=!0,iconRender:i,prefixCls:c,inputPrefixCls:f,suffix:h,className:b,style:g,classNames:$,styles:v,...y}=e,{getPrefixCls:A,className:E,style:k,classNames:C,styles:w,iconRender:x}=(0,l.TP)("inputPassword"),[P]=(0,I.A)("global"),F=r.useContext(M.A),T=n??F,R={...e,disabled:T},[D,L]=(0,d.AV)([C,$],[w,v],{props:R}),_=(0,m.Qd)(o)&&void 0!==o.visible,[Q,X]=(0,r.useState)(()=>!!_&&o.visible),q=(0,r.useRef)(null);r.useEffect(()=>{_&&X(o.visible)},[_,o]);let B=(0,S.A)(q),H=()=>{if(T)return;Q&&B();let e=!Q;X(e),(0,m.Qd)(o)&&o.onVisibleChange?.(e)},W=A("input",f),j=A("input-password",c),K=o&&(e=>{let t=O[s]||"",n=(i||x||(e=>e?r.createElement(z.A,null):r.createElement(N,null)))(Q),a=(0,m.Qd)(o)?o.tabIndex:void 0;return r.createElement("span",{key:"passwordIcon",role:"button",tabIndex:T?-1:a??0,className:`${e}-icon`,"aria-disabled":T,"aria-pressed":Q,"aria-label":Q?P.hide:P.show,onMouseDown:e=>{e.preventDefault()},onMouseUp:e=>{e.preventDefault()},onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),H())},[t]:H},n)})(j),V=(0,a.$)(j,E,b,{[`${j}-${e.size}`]:!!e.size}),G={...y,type:Q?"text":"password",prefixCls:W,suffix:r.createElement(r.Fragment,null,K,h),disabled:T,className:V,style:{...k,...g},classNames:D,styles:L};return r.createElement(u.A,{ref:(0,p.K4)(t,q),...G})});var F=n(30486),T=n(112),R=n(52690),D=n(9290),L=n(49644),_=n(15561);let Q=(0,b.OF)(["Input","Search"],e=>(e=>{let{componentCls:t,antCls:n,calc:r,max:a}=e,l=`${t}-btn`,[s,o]=(0,b.PN)(n,"input-search"),i=e.inputFontSizeSM??e.fontSize,u=a(e.controlHeightSM,r(i).mul(e.lineHeight).add(r(e.paddingBlockSM).mul(2)).add(r(e.lineWidth).mul(2)).equal());return{[t]:{[s("btn-height")]:(0,_.zA)(e.controlHeight),width:"100%",[l]:{height:o("btn-height"),[`&${n}-btn-icon-only`]:{width:o("btn-height")},"&-filled":{background:e.colorFillTertiary,"&:not(:disabled)":{"&:hover":{background:e.colorFillSecondary},"&:active":{background:e.colorFill}}}},[`&${t}-large`]:{[s("btn-height")]:(0,_.zA)(e.controlHeightLG)},[`&${t}-small`]:{[s("btn-height")]:(0,_.zA)(e.controlHeightSM)},[`&${t}-small ${l}`]:{minHeight:u,[`&${e.antCls}-btn-icon-only`]:{minWidth:u}}}}})((0,g.oX)(e,(0,$.C)(e))),$.b),X=r.forwardRef((e,t)=>{let n,{prefixCls:s,inputPrefixCls:o,className:i,size:c,style:m,enterButton:f=!1,searchIcon:b,addonAfter:g,loading:$,disabled:v,onSearch:y,onChange:A,onCompositionStart:E,onCompositionEnd:k,variant:C,onPressEnter:w,classNames:x,styles:N,hidden:z,...M}=e,{direction:I,getPrefixCls:S,className:O,style:P,classNames:_,styles:X,searchIcon:q}=(0,l.TP)("inputSearch"),B={...e,enterButton:f},[H,W]=(0,d.AV)([_,x],[X,N],{props:B},{button:{_default:"root"}}),j=r.useRef(!1),K=S("input-search",s),V=S("input",o),[G,J]=Q(K),{compactSize:U}=(0,L.RQ)(K,I),Y=(0,h.A)(e=>c??U??e),Z=r.useRef(null),ee=e=>{document.activeElement===Z.current?.input&&e.preventDefault()},et=e=>{y&&y(Z.current?.input?.value,e,{source:"input"})},en="boolean"==typeof f?(0,T.A)(b,q,r.createElement(F.A,null)):null,er=`${K}-btn`,ea=(0,a.$)(er,{[`${er}-${C}`]:C}),el=f||{},es=el.type&&!0===el.type.__ANT_BUTTON;if(es||"button"===el.type){let e=el.props;n=(0,R.Ob)(el,{onMouseDown:ee,onClick:e=>{el?.props?.onClick?.(e),et(e)},key:"enterButton",...es?{className:(0,a.$)(ea,e.className),size:Y}:{}})}else n=r.createElement(D.A,{classNames:H.button,styles:W.button,className:ea,color:f?"primary":"default",size:Y,disabled:v,key:"enterButton",onMouseDown:ee,onClick:et,loading:$,icon:en,variant:"borderless"===C||"filled"===C||"underlined"===C?"text":f?"solid":void 0},f);g&&(n=[n,(0,R.Ob)(g,{key:"addonAfter"})]);let eo=(0,a.$)(K,J,{[`${K}-rtl`]:"rtl"===I,[`${K}-${Y}`]:!!Y,[`${K}-with-button`]:!!f},i,O,G,H.root),ei=(0,p.KE)(M,{data:!0}),eu=(0,p.cJ)({...M,classNames:(0,p.cJ)(H,["button","root"]),styles:(0,p.cJ)(W,["button","root"]),prefixCls:V,type:"search",size:Y,variant:C,onPressEnter:e=>{j.current||$||(w?.(e),et(e))},onCompositionStart:e=>{j.current=!0,E?.(e)},onCompositionEnd:e=>{j.current=!1,k?.(e)},onChange:e=>{e?.target&&"click"===e.type&&y&&y(e.target.value,e,{source:"clear"}),A?.(e)},disabled:v},Object.keys(ei));return r.createElement(L.Ay,{className:eo,style:{...W.root,...P,...m},...ei,hidden:z},r.createElement(u.A,{ref:(0,p.K4)(Z,t),...eu}),n)});var q=n(1210);let B=u.A;B.Group=e=>{let{getPrefixCls:t,direction:n}=(0,r.useContext)(l.QO),{prefixCls:u,className:c}=e,p=t("input-group",u),d=t("input"),[m,f]=(0,i.Ay)(d),h=(0,a.$)(p,f,{[`${p}-lg`]:"large"===e.size,[`${p}-sm`]:"small"===e.size,[`${p}-compact`]:e.compact,[`${p}-rtl`]:"rtl"===n},m,c),b=(0,r.useContext)(s.$W),g=(0,r.useMemo)(()=>({...b,isFormItemInput:!1}),[b]);return r.createElement(s.$W.Provider,{value:g},r.createElement(o.A.Compact,{className:h,style:e.style,onMouseEnter:e.onMouseEnter,onMouseLeave:e.onMouseLeave,onFocus:e.onFocus,onBlur:e.onBlur},e.children))},B.Search=X,B.TextArea=q.A,B.Password=P,B.OTP=k;let H=B},70542:(e,t)=>{t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z"}},{tag:"path",attrs:{d:"M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z"}}]},name:"eye-invisible",theme:"outlined"}}}]);