@customize-agent/server 4.60.30 → 4.60.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +285 -193
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +6 -0
- package/.next/server/chunks/1243.js +1 -1
- package/.next/server/chunks/6321.js +1 -1
- package/.next/server/chunks/6822.js +1 -1
- package/.next/server/chunks/{4722.js → 7848.js} +14 -14
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9666.js +43 -42
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/api/config/embedding/healthCheck.js +2 -1
- package/.next/server/pages/api/config/embedding.js +2 -1
- package/.next/server/pages/api/config/healthCheck.js +2 -1
- package/.next/server/pages/api/config/models.js +2 -1
- package/.next/server/pages/api/config/providers/[provider].js +2 -1
- package/.next/server/pages/api/config/providers.js +2 -1
- package/.next/server/pages/api/config/reset.js +3 -0
- package/.next/server/pages/api/config/reset.js.nft.json +1 -0
- package/.next/server/pages/api/config/web-access.js +2 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/generate/preview.js +1 -1
- package/.next/server/pages/api/documents/generate.js +1 -1
- package/.next/server/pages/api/health.js +1 -1
- package/.next/server/pages/api/kb/features.js +2 -1
- package/.next/server/pages/api/prompt/chat.js +3 -2
- package/.next/server/pages/api/system/reset.js +1 -1
- package/.next/server/pages/canvas/[id].html +1 -1
- package/.next/server/pages/canvas.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/jobs.html +1 -0
- package/.next/server/pages/jobs.js.nft.json +1 -0
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/source-preview.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/skills/[id]/edit.html +1 -1
- package/.next/server/pages/skills/[id]/edit.js.nft.json +1 -1
- package/.next/server/pages/skills/[id].html +1 -1
- package/.next/server/pages/skills/[id].js.nft.json +1 -1
- package/.next/server/pages/skills/new.html +1 -1
- package/.next/server/pages/skills/new.js.nft.json +1 -1
- package/.next/server/pages/skills.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +39 -37
- package/.next/static/279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8/_buildManifest.js +1 -0
- package/.next/static/chunks/1141-d420a7685bc3623c.js +1 -0
- package/.next/static/chunks/1210-703ad87eaeee1e4e.js +15 -0
- package/.next/static/chunks/1499-ff8f02f6bb6f3d45.js +10 -0
- package/.next/static/chunks/1702-f5e99af7aface475.js +1 -0
- package/.next/static/chunks/2864-b040f2bffa08c139.js +6 -0
- package/.next/static/chunks/3456-70bb03a39473f693.js +1 -0
- package/.next/static/chunks/3980-73841c40d55ddfa1.js +1 -0
- package/.next/static/chunks/4052-199e61ca9e6a33e7.js +1 -0
- package/.next/static/chunks/4337-a670a1a94ab505d9.js +1 -0
- package/.next/static/chunks/4530-e73bdd645bb7a953.js +1 -0
- package/.next/static/chunks/4565-3c5ff667062ccec9.js +21 -0
- package/.next/static/chunks/4665-1984a3d8b0573fa1.js +1 -0
- package/.next/static/chunks/5061-80765d4a612286e0.js +1 -0
- package/.next/static/chunks/5544-d77b8289662b4c28.js +4 -0
- package/.next/static/chunks/5760-f4191aac081b12d4.js +11 -0
- package/.next/static/chunks/6409-5a3bb0fbad4f64b1.js +14 -0
- package/.next/static/chunks/6506-ac0ba7338cc84b7d.js +1 -0
- package/.next/static/chunks/6748-07b0b05bf03c72f0.js +1 -0
- package/.next/static/chunks/7217-416b8488e0d2d498.js +1 -0
- package/.next/static/chunks/7576-ba6fc03060415b0e.js +1 -0
- package/.next/static/chunks/7646-159733564c7eb8dc.js +1 -0
- package/.next/static/chunks/7795-c11ff1a81c67c5aa.js +1 -0
- package/.next/static/chunks/8318-cb3a94de1617f983.js +1 -0
- package/.next/static/chunks/8338-b2ea00050048ba9f.js +4 -0
- package/.next/static/chunks/8399-a001bb2a0cb1640b.js +16 -0
- package/.next/static/chunks/8564-ac3e2f1bf87765b3.js +1 -0
- package/.next/static/chunks/8569-1d5c61a3f4fa0e26.js +16 -0
- package/.next/static/chunks/8715-ee013bd7f5ba38e8.js +1 -0
- package/.next/static/chunks/8750-a3c55a576effb3a6.js +1 -0
- package/.next/static/chunks/{787-207289f4bb577708.js → 8787-49b1f35eb4acfac9.js} +1 -1
- package/.next/static/chunks/{964-82cc4701f08f7351.js → 8964-e959915ecfae86b2.js} +1 -1
- package/.next/static/chunks/9551-f4b09bf2213ad571.js +16 -0
- package/.next/static/chunks/9605-3dee531f8a7ecbe0.js +4 -0
- package/.next/static/chunks/9937-e4b2deadd24e3962.js +1 -0
- package/.next/static/chunks/framework-9cde5013cd555765.js +1 -0
- package/.next/static/chunks/main-b313efde54fa6d2e.js +1 -0
- package/.next/static/chunks/pages/_app-646f249ed0cc363f.js +140 -0
- package/.next/static/chunks/pages/_error-c01b6fb772028676.js +1 -0
- package/.next/static/chunks/pages/canvas/[id]-18865f1b7e3a4696.js +1 -0
- package/.next/static/chunks/pages/canvas-47a86f1679c159af.js +1 -0
- package/.next/static/chunks/pages/documents-a1af5c6be26daed2.js +1 -0
- package/.next/static/chunks/pages/guide-fdf0822dc1d28813.js +1 -0
- package/.next/static/chunks/pages/index-c572e9caa60cb278.js +1 -0
- package/.next/static/chunks/pages/jobs-ebd1877dbf788a83.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-3d1ffd43f4f0e47b.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-b796702bb5f8ac50.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-6d7b21cdca1255f2.js +1 -0
- package/.next/static/chunks/pages/knowledge/{source-preview-814c683fc3723177.js → source-preview-24936b9a746ed07f.js} +1 -1
- package/.next/static/chunks/pages/knowledge-2a776c1740386874.js +1 -0
- package/.next/static/chunks/pages/models-e679c45d71631078.js +1 -0
- package/.next/static/chunks/pages/overview-7e8018014009682e.js +1 -0
- package/.next/static/chunks/pages/prompt-11f87694feb6514c.js +1 -0
- package/.next/static/chunks/pages/settings-e8dcaba1551a0b2b.js +1 -0
- package/.next/static/chunks/pages/skills/[id]/edit-99e616d5019e80b1.js +1 -0
- package/.next/static/chunks/pages/skills/[id]-71f696be252bbf0d.js +1 -0
- package/.next/static/chunks/pages/skills/new-00886ea4c676f927.js +1 -0
- package/.next/static/chunks/pages/skills-8ad2577b4aa17f3b.js +1 -0
- package/.next/static/chunks/pages/system/logs-0856f7c65432befb.js +1 -0
- package/.next/static/chunks/{webpack-6224d37324e372cb.js → webpack-2da1769ff35eb1ed.js} +1 -1
- package/.next/static/css/808682ca3875966b.css +1 -0
- package/messages/en-US.json +35 -1
- package/messages/zh-CN.json +35 -1
- package/package.json +3 -3
- package/scripts/brand-moon-fit.cjs +0 -47
- package/scripts/generate-brand-assets.cjs +0 -41
- package/scripts/half-built-scan.allow.json +16 -6
- package/scripts/half-built-scan.baseline.json +2 -17
- package/scripts/half-built-scan.mjs +1 -84
- package/.next/server/chunks/6021.js +0 -1
- package/.next/static/chunks/127-7d37d37dab02bd10.js +0 -1
- package/.next/static/chunks/162-36b2a3e6ee7d9717.js +0 -8
- package/.next/static/chunks/257-879f095890deadad.js +0 -1
- package/.next/static/chunks/313-4b3ff7075e0ff3c3.js +0 -1
- package/.next/static/chunks/318-ca122b774ea4ee84.js +0 -1
- package/.next/static/chunks/338-19ccbaec57a7bf9c.js +0 -4
- package/.next/static/chunks/499-2233cadc6d4da647.js +0 -10
- package/.next/static/chunks/530-98c3b3fbf3fcd8e3.js +0 -1
- package/.next/static/chunks/551-446a9d48add4944f.js +0 -16
- package/.next/static/chunks/569-2bfdde9e402af5b2.js +0 -16
- package/.next/static/chunks/576-6699fed6c88502fe.js +0 -1
- package/.next/static/chunks/579-fc0a2eb64aedb001.js +0 -1
- package/.next/static/chunks/665-0634aa49137defc4.js +0 -1
- package/.next/static/chunks/711-40c1a2dbd15c2807.js +0 -21
- package/.next/static/chunks/715-6285c5942e5ec5ea.js +0 -1
- package/.next/static/chunks/717-743b697a417dd5ee.js +0 -4
- package/.next/static/chunks/748-e13db510f76568b1.js +0 -1
- package/.next/static/chunks/795-3edd02531a6d39ae.js +0 -1
- package/.next/static/chunks/808-0506edc7454b5c0e.js +0 -1
- package/.next/static/chunks/864-b06700e1a4e573f2.js +0 -6
- package/.next/static/chunks/880-64d8a15c524106d2.js +0 -1
- package/.next/static/chunks/955-f0542d4dea118b62.js +0 -1
- package/.next/static/chunks/framework-4b565b3ddc94cdac.js +0 -1
- package/.next/static/chunks/main-0c91f573696223ca.js +0 -1
- package/.next/static/chunks/pages/_app-5f5b2094ef219088.js +0 -185
- package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +0 -1
- package/.next/static/chunks/pages/canvas/[id]-792d02e3874c19c0.js +0 -1
- package/.next/static/chunks/pages/canvas-e011bb88585d3441.js +0 -1
- package/.next/static/chunks/pages/documents-e6a80f2de39c6fd2.js +0 -1
- package/.next/static/chunks/pages/guide-3185f12fbcb5a6af.js +0 -1
- package/.next/static/chunks/pages/index-cb27bfa36c212ab5.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-c34e1f995fb8316f.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-b3ef5324e4b74c4a.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-d9eaebf3a8307953.js +0 -1
- package/.next/static/chunks/pages/knowledge-3afd4bc337d44550.js +0 -1
- package/.next/static/chunks/pages/models-e07b2e29595effd7.js +0 -1
- package/.next/static/chunks/pages/overview-8713b5d37af0eeb3.js +0 -1
- package/.next/static/chunks/pages/prompt-47a1ac955831dedb.js +0 -1
- package/.next/static/chunks/pages/settings-8879d8c90bee2025.js +0 -1
- package/.next/static/chunks/pages/skills/[id]/edit-88e2490a4190467b.js +0 -1
- package/.next/static/chunks/pages/skills/[id]-4700cd743c5efe05.js +0 -1
- package/.next/static/chunks/pages/skills/new-b2204742b055565a.js +0 -1
- package/.next/static/chunks/pages/skills-1f6bcb42cd90abeb.js +0 -1
- package/.next/static/chunks/pages/system/logs-8c5dd4d06fa9d8c9.js +0 -1
- package/.next/static/css/cb79b8022e718258.css +0 -1
- package/.next/static/e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece/_buildManifest.js +0 -1
- package/scripts/capture-baseline.mjs +0 -353
- /package/.next/static/{e20217fc48f7d7bdc8b62a7ec3647e78e1695668d237c7e44f973da8621a5ece → 279fd5e41d98af82751903f8ea0267af84a75c794a35915a6e294777024190f8}/_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;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:0}.top-1{top:var(--spacing)}.top-3{top:calc(var(--spacing) * 3)}.top-5{top:calc(var(--spacing) * 5)}.left-0{left:0}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.col-span-2{grid-column:span 2/span 2}.row-1{grid-row:1}.row-17{grid-row:17}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.\!m-0{margin:0!important}.m-0{margin:0}.m-10{margin:calc(var(--spacing) * 10)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-1{margin-inline:var(--spacing)}.mx-auto{margin-inline:auto}.\!my-3{margin-block:calc(var(--spacing) * 3)!important}.my-3{margin-block:calc(var(--spacing) * 3)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0{margin-top:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.-mr-2{margin-right:calc(var(--spacing) * -2)}.mr-1{margin-right:var(--spacing)}.mr-2{margin-right:calc(var(--spacing) * 2)}.\!mb-0{margin-bottom:0!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-\[22px\]{height:22px}.h-\[calc\(100vh-140px\)\],.h-\[calc\(100vh_-_140px\)\]{height:calc(100vh - 140px)}.h-\[calc\(100vh_-_240px\)\]{height:calc(100vh - 240px)}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[190px\]{max-height:190px}.max-h-\[260px\]{max-height:260px}.max-h-\[320px\]{max-height:320px}.min-h-0{min-height:0}.min-h-\[66px\]{min-height:66px}.min-h-\[140px\]{min-height:140px}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-\[1px\]{width:1px}.w-\[22px\]{width:22px}.w-\[260px\]{width:260px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[78\%\]{max-width:78%}.max-w-\[120px\]{max-width:120px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[360px\]{max-width:360px}.max-w-\[420px\]{max-width:420px}.max-w-\[520px\]{max-width:520px}.min-w-0{min-width:0}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-64{min-width:calc(var(--spacing) * 64)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.basis-0{flex-basis:0}.basis-9{flex-basis:calc(var(--spacing) * 9)}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[22px_minmax\(0\,1fr\)_auto\]{grid-template-columns:22px minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--borderColor\)\]{border-color:var(--borderColor)}.border-\[var\(--borderColorStrong\)\]{border-color:var(--borderColorStrong)}.border-\[var\(--canvasSectionBorder\)\]{border-color:var(--canvasSectionBorder)}.border-\[var\(--colorBorderSecondary\)\]{border-color:var(--colorBorderSecondary)}.border-\[var\(--colorDanger\)\]\/20{border-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--colorDanger\)\]\/20{border-color:color-mix(in oklab,var(--colorDanger) 20%,transparent)}}.border-\[var\(--colorDanger\)\]\/30{border-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--colorDanger\)\]\/30{border-color:color-mix(in oklab,var(--colorDanger) 30%,transparent)}}.border-\[var\(--colorWarning\)\]{border-color:var(--colorWarning)}.border-\[…\]{border-color:…}.border-blue-200{border-color:var(--color-blue-200)}.border-transparent{border-color:#0000}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[var\(--borderColor\)\]{background-color:var(--borderColor)}.bg-\[var\(--colorAccent\)\]{background-color:var(--colorAccent)}.bg-\[var\(--colorBg\)\]{background-color:var(--colorBg)}.bg-\[var\(--colorBgContainer\)\]{background-color:var(--colorBgContainer)}.bg-\[var\(--colorBgElevated\)\]{background-color:var(--colorBgElevated)}.bg-\[var\(--colorBgHover\)\],.bg-\[var\(--colorBgHover\)\]\/50{background-color:var(--colorBgHover)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBgHover\)\]\/50{background-color:color-mix(in oklab,var(--colorBgHover) 50%,transparent)}}.bg-\[var\(--colorBgSecondary\)\]\/30{background-color:var(--colorBgSecondary)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBgSecondary\)\]\/30{background-color:color-mix(in oklab,var(--colorBgSecondary) 30%,transparent)}}.bg-\[var\(--colorBgSelected\)\]{background-color:var(--colorBgSelected)}.bg-\[var\(--colorBorderSecondary\)\]{background-color:var(--colorBorderSecondary)}.bg-\[var\(--colorBrand\)\]\/5{background-color:var(--colorBrand)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBrand\)\]\/5{background-color:color-mix(in oklab,var(--colorBrand) 5%,transparent)}}.bg-\[var\(--colorBrand\)\]\/10{background-color:var(--colorBrand)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorBrand\)\]\/10{background-color:color-mix(in oklab,var(--colorBrand) 10%,transparent)}}.bg-\[var\(--colorDanger\)\],.bg-\[var\(--colorDanger\)\]\/5{background-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorDanger\)\]\/5{background-color:color-mix(in oklab,var(--colorDanger) 5%,transparent)}}.bg-\[var\(--colorDanger\)\]\/10{background-color:var(--colorDanger)}@supports (color:color-mix(in lab,red,red)){.bg-\[var\(--colorDanger\)\]\/10{background-color:color-mix(in oklab,var(--colorDanger) 10%,transparent)}}.bg-\[var\(--colorFillAlter\)\]{background-color:var(--colorFillAlter)}.bg-\[var\(--colorFillQuaternary\)\]{background-color:var(--colorFillQuaternary)}.bg-\[var\(--colorFillSecondary\)\]{background-color:var(--colorFillSecondary)}.bg-\[var\(--colorOk\)\]{background-color:var(--colorOk)}.bg-\[var\(--colorText\)\]{background-color:var(--colorText)}.bg-\[var\(--colorTextTertiary\)\]{background-color:var(--colorTextTertiary)}.bg-\[var\(--colorWarning\)\]{background-color:var(--colorWarning)}.bg-\[var\(--colorWarningBg\)\]{background-color:var(--colorWarningBg)}.bg-black{background-color:var(--color-black)}.bg-blue-50\/50{background-color:#eff6ff80}@supports (color:color-mix(in lab,red,red)){.bg-blue-50\/50{background-color:color-mix(in oklab,var(--color-blue-50) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:0}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-normal{white-space:normal}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#d4d4d4\]{color:#d4d4d4}.text-\[var\(--colorAccent\)\]{color:var(--colorAccent)}.text-\[var\(--colorBg\)\]{color:var(--colorBg)}.text-\[var\(--colorBrand\)\]{color:var(--colorBrand)}.text-\[var\(--colorDanger\)\]{color:var(--colorDanger)}.text-\[var\(--colorError\)\]{color:var(--colorError)}.text-\[var\(--colorInfo\)\]{color:var(--colorInfo)}.text-\[var\(--colorOk\)\]{color:var(--colorOk)}.text-\[var\(--colorPrimary\)\]{color:var(--colorPrimary)}.text-\[var\(--colorSuccess\)\]{color:var(--colorSuccess)}.text-\[var\(--colorText\)\]{color:var(--colorText)}.text-\[var\(--colorTextSecondary\)\]{color:var(--colorTextSecondary)}.text-\[var\(--colorTextTertiary\)\]{color:var(--colorTextTertiary)}.text-\[var\(--colorWarn\)\]{color:var(--colorWarn)}.text-\[var\(--colorWarning\)\]{color:var(--colorWarning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal:ordinal}.ordinal,.tabular-nums{font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-\[var\(--shadowSurface\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadowSurface\)\]{--tw-shadow:var(--shadowSurface)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-none{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.block-7{block-size:calc(var(--spacing) * 7)}.block-9{block-size:calc(var(--spacing) * 9)}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.even\:bg-\[var\(--colorFillAlter\)\]:nth-child(2n){background-color:var(--colorFillAlter)}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:border-\[var\(--borderColorStrong\)\]:hover{border-color:var(--borderColorStrong)}.hover\:border-\[var\(--colorTextTertiary\)\]:hover{border-color:var(--colorTextTertiary)}.hover\:bg-\[var\(--colorBgContainer\)\]:hover{background-color:var(--colorBgContainer)}.hover\:bg-\[var\(--colorBgHover\)\]:hover{background-color:var(--colorBgHover)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-\[var\(--colorText\)\]:hover{color:var(--colorText)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[var\(--shadowSurfaceHover\)\]:hover{--tw-shadow:var(--shadowSurfaceHover)}.hover\:shadow-\[var\(--shadowSurfaceHover\)\]:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}}.focus\:bg-\[var\(--colorBgContainer\)\]:focus{background-color:var(--colorBgContainer)}.focus\:bg-transparent:focus{background-color:#0000}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:w-44{width:calc(var(--spacing) * 44)}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[132px_minmax\(0\,1fr\)\]{grid-template-columns:132px minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:items-baseline{align-items:baseline}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:pt-0\.5{padding-top:calc(var(--spacing) * .5)}.sm\:pt-1{padding-top:var(--spacing)}.sm\:pb-0{padding-bottom:0}}@media (min-width:48rem){.md\:w-auto{width:auto}.md\:flex-none{flex:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:gap-6{gap:calc(var(--spacing) * 6)}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:w-80{width:calc(var(--spacing) * 80)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:80rem){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (prefers-color-scheme:dark){.dark\:bg-white{background-color:var(--color-white)}.dark\:text-black{color:var(--color-black)}}.\[\&_\.ant-tag\]\:whitespace-normal .ant-tag{white-space:normal}}:root{--mainInnerPadY:32px;--mainInnerPadX:clamp(24px,4vw,48px)}@media (max-width:900px){:root{--mainInnerPadY:20px;--mainInnerPadX:20px}}@media (max-width:640px){:root{--mainInnerPadY:12px;--mainInnerPadX:12px}}.canvasRoot{flex:1;min-height:0;position:relative;overflow:hidden}.mainInner.mainInnerCanvas{flex-direction:column;padding:0;display:flex}.canvasStage{background:var(--canvasBg);-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}:root{--colorBg:#fff;--colorBgElevated:#fff;--colorBgSecondary:#fbfbfc;--colorBgHover:#f6f6f7;--colorBgSelected:#eff6ff;--colorText:#171717;--colorTextSecondary:#737373;--colorTextTertiary:#a3a3a3;--colorBrand:#06c;--colorBrandHover:#0052a3;--colorBrand2:#171717;--colorDanger:#e11d48;--colorOk:#16a34a;--colorWarn:#f59e0b;--colorInfo:#2563eb;--colorPrimary:#007aff;--colorAccent:#007aff;--colorSuccess:#34c759;--colorWarning:#ff9500;--colorError:#ff3b30;--colorBgContainer:#fff;--colorFillAlter:#00000004;--colorFillSecondary:#00000008;--colorFillTertiary:#00000006;--colorFillQuaternary:#00000004;--colorBorderSecondary:#3c3c431f;--colorTextQuaternary:#3c3c432e;--colorWarningBg:#fff8e6;--colorSuccessBg:#e8f9ee;--colorInfoBg:#e8f2ff;--colorErrorBg:#ffeceb;--glassBg:#ffffffd9;--glassBlur:saturate(180%) blur(16px);--borderColor:#00000014;--borderColorStrong:#00000026;--borderColorSelected:#3b82f6;--borderSoft:#0000000f;--textSecondary:#737373;--surfaceElevated:#fff;--shadowSoft:0 0 4px #00000008,0 0 12px #0000000a;--shadowCard:0 0 4px #0000000d,0 0 16px #0000000d;--shadowButton:0 1px 2px #0000000d;--shadowSurface:0 0 4px #0000000d,0 0 12px #0000000b;--shadowSurfaceHover:0 0 6px #00000012,0 0 18px #0000000f;--radiusSm:6px;--radiusMd:10px;--radiusLg:14px;--radiusPill:9999px;--sidebarWidth:260px;--fontSans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--canvasBg:transparent;--canvasGridDot:#00000017;--canvasNodeBg:#fff;--canvasNodeBorder:#0000001a;--canvasNodeShadow:0 1px 2px #0000000d,0 2px 8px #0000000a;--canvasNodeSelected:#007aff;--canvasNodeAffected:#ff9500;--canvasEdge:#3c3c4359;--canvasEdgeActive:#007aff;--canvasEdgeWarn:#ff9500;--canvasEdgeAffected:#ff3b30;--canvasSectionBg:#fff9;--canvasFloatBg:#ffffffd1;--canvasPanelBg:#fffffff5;--canvasSectionBorder:#00000014;--canvasBubbleBg:#fffffff7;--canvasBubbleBorder:#0000001a;--canvasBubbleText:#1c1c1e;--canvasBubbleShadow:0 2px 8px #00000024}.dark{--colorBg:#000;--colorBgElevated:#0a0a0a;--colorBgSecondary:#121212;--colorBgHover:#1a1a1a;--colorBgSelected:#3b82f626;--colorText:#ededed;--colorTextSecondary:#a3a3a3;--colorTextTertiary:#737373;--colorBrand:#3b82f6;--colorBrandHover:#60a5fa;--colorBrand2:#d4d4d4;--colorDanger:#f43f5e;--colorOk:#22c55e;--colorWarn:#fbbf24;--colorInfo:#3b82f6;--colorPrimary:#0a84ff;--colorAccent:#0a84ff;--colorSuccess:#30d158;--colorWarning:#ff9f0a;--colorError:#ff453a;--colorBgContainer:#2c2c2ec7;--colorFillAlter:#ffffff08;--colorFillSecondary:#ffffff0f;--colorFillTertiary:#ffffff0a;--colorFillQuaternary:#ffffff08;--colorBorderSecondary:#ffffff1a;--colorTextQuaternary:#ebebf53d;--colorWarningBg:#ff9f0a1f;--colorSuccessBg:#30d1581f;--colorInfoBg:#0a84ff1f;--colorErrorBg:#ff453a1f;--glassBg:#000000d9;--borderColor:#ffffff1f;--borderColorStrong:#fff3;--borderColorSelected:#60a5fa;--borderSoft:#ffffff14;--textSecondary:#a3a3a3;--surfaceElevated:#1c1c1e;--shadowSoft:0 0 4px #00000047,0 0 12px #0006;--shadowCard:0 0 4px #0000005c,0 0 16px #0006;--shadowButton:0 1px 2px #0000004d;--shadowSurface:0 0 4px #0000005c,0 0 12px #0000004d;--shadowSurfaceHover:0 0 6px #00000070,0 0 18px #0000005c;--canvasBg:transparent;--canvasGridDot:#ffffff1a;--canvasNodeBg:#1c1c1e;--canvasNodeBorder:#ffffff24;--canvasNodeShadow:0 1px 2px #0006,0 2px 10px #00000059;--canvasNodeSelected:#0a84ff;--canvasNodeAffected:#ff9f0a;--canvasEdge:#ebebf552;--canvasEdgeActive:#0a84ff;--canvasEdgeWarn:#ff9f0a;--canvasEdgeAffected:#ff453a;--canvasSectionBg:#1c1c1e99;--canvasFloatBg:#1c1c1ed1;--canvasPanelBg:#1c1c1ef5;--canvasSectionBorder:#ffffff1a;--canvasBubbleBg:#2c2c2ef5;--canvasBubbleBorder:#ffffff29;--canvasBubbleText:#f2f2f7;--canvasBubbleShadow:0 2px 10px #00000080}.canvasInputBar,.canvasToolbar{pointer-events:auto;z-index:2;position:absolute}.canvasInputPanel,.canvasToolbar{border:1px solid var(--canvasSectionBorder);background:var(--canvasFloatBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;box-shadow:0 6px 24px #00000014}.canvasToolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;top:12px}.canvasInputBar,.canvasToolbar{display:flex;left:12px;right:12px}.canvasInputBar{flex-direction:column;bottom:12px}.canvasInputPanel{padding:8px 12px}.canvasToolbar.canvasToolbarCollapsed{border-radius:999px;width:max-content;padding:4px;right:auto}.canvasToolbarBubble{color:var(--colorText);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:14px;transition:background .15s;display:inline-flex}.canvasToolbarBubble:hover{background:var(--colorBgHover)}.canvasToolbarBubble:focus-visible{outline:2px solid var(--colorAccent);outline-offset:1px}.canvasToolbar:not(.canvasToolbarCollapsed){animation:canvasPanelIn .16s ease-out}.canvasInputBar.canvasInputBarCollapsed{left:50%;right:auto;transform:translate(-50%)}.canvasInputPanel{animation:canvasPanelIn .18s ease-out}.canvasInputPanel.isLeaving{animation:canvasPanelOut .2s ease-in forwards}.canvasInputHandleRow{justify-content:center;margin-bottom:4px;display:flex}.canvasInputHandle{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);width:44px;height:30px;color:var(--colorTextSecondary);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:transform .12s,background .15s,color .15s;display:inline-flex;box-shadow:0 6px 24px #0000001f}.canvasInputHandle:hover{color:var(--colorText);transform:scale(1.06)}.canvasInputHandle:focus-visible{outline:2px solid var(--colorAccent);outline-offset:1px}@keyframes canvasPanelIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes canvasPanelOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(10px)}}.nodeInfoLayer{z-index:4;border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;flex-direction:column;display:flex;position:absolute;overflow:hidden;box-shadow:0 10px 32px #0000001f,0 2px 6px #0000000f}.nodeInfoHeader{border-bottom:1px solid var(--colorBorderSecondary);align-items:center;gap:6px;margin-bottom:10px;padding-bottom:10px;display:flex}.nodeInfoHeaderIcon{color:var(--colorTextSecondary);display:inline-flex}.nodeInfoClose{color:var(--colorTextTertiary)}.nodeInfoClose:hover{color:var(--colorText)}.nodeInfoActions{background:var(--colorFillQuaternary,var(--colorFillAlter));border-radius:8px;flex-wrap:wrap;gap:6px;margin-bottom:10px;padding:8px;display:flex}.nodeInfoPanel{width:min(460px,92vw);min-height:0;max-height:100%;padding:12px 14px;overflow:auto}.nodeInfoPanel .ant-descriptions-item-label{white-space:nowrap;width:92px;color:var(--colorTextSecondary)}.nodeInfoPanel .ant-tabs-nav{margin-bottom:12px}.nodeInfoRepair{border:1px solid var(--canvasNodeAffected);background:var(--colorWarningBg);border-radius:10px;margin-bottom:8px;padding:8px 10px}.nodeInfoRepairRun{border-top:1px dashed var(--colorSplit);flex-direction:column;gap:6px;padding-top:8px;display:flex}.nodeInfoRepairResult{background:var(--colorFillQuaternary);border-radius:6px;flex-direction:column;gap:4px;padding:6px 8px;display:flex}.canvasRecordsBall{pointer-events:auto}.canvasRecordsBallBtn{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);color:var(--colorText);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:999px;justify-content:center;align-items:center;font-size:18px;transition:transform .12s;display:flex;position:relative;box-shadow:0 6px 24px #0000001f}.canvasRecordsBallBtn:hover{transform:scale(1.06)}.canvasRecordsBallBtn:active{cursor:grabbing}.canvasRecordsBallBadge{background:var(--colorAccent);color:#fff;text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:18px;height:18px;padding:0 4px;font-size:10px;line-height:18px;position:absolute;top:-2px;right:-2px}.canvasRecordsBallBadge.isZero{background:var(--colorFillTertiary);color:var(--colorTextSecondary)}.canvasRecordsPanel{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);-webkit-backdrop-filter:saturate(180%)blur(16px);border-radius:14px;overflow:hidden;box-shadow:0 10px 32px #0000001f,0 2px 6px #0000000f}.canvasRecordsLink{color:var(--colorAccent);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px}.canvasRecordsLink:hover{text-decoration:underline}.canvasRecordsDelete{width:24px;height:24px;color:var(--colorTextTertiary);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:opacity .12s,color .12s;display:inline-flex}.canvasRecordsDelete:focus-visible,.canvasRecordsPanel>div>div:hover .canvasRecordsDelete{opacity:1}.canvasRecordsDelete:hover{color:var(--colorDanger);background:var(--colorBgHover)}.canvasRecordsDelete.isDisabled{cursor:not-allowed;opacity:0}.canvasRecordsPanel>div>div:hover .canvasRecordsDelete.isDisabled{opacity:.35}.canvasRecordsPanel>div>div:hover .canvasRecordsDelete.isDisabled:hover{color:var(--colorTextTertiary);background:0 0}.canvasRecordsDanger{border:1px solid var(--colorDanger);color:var(--colorDanger);cursor:pointer;background:0 0;border-radius:8px;align-items:center;padding:3px 10px;font-size:12px;display:inline-flex}.canvasRecordsDanger:disabled{opacity:.4;cursor:not-allowed}.canvasRecordsDanger:not(:disabled):hover{background:var(--colorDanger);color:#fff}.canvasEdgeLayer{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.canvasEdge{fill:none;stroke:var(--canvasEdge);stroke-width:1.4px}.canvasEdgeActive{stroke:var(--canvasEdgeActive);stroke-width:2px}.canvasEdgeWarn{stroke:var(--canvasEdgeWarn);stroke-width:1.8px;stroke-dasharray:5 4}.canvasEdgeAffected{stroke:var(--canvasEdgeAffected);stroke-width:2.2px}.canvasEdgeFlow{fill:none;stroke:var(--canvasEdgeActive);stroke-width:2.4px;stroke-linecap:round;stroke-dasharray:7 11;opacity:.85;animation:canvasEdgeFlow 1.1s linear infinite}@keyframes canvasEdgeFlow{0%{stroke-dashoffset:18px}to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.canvasEdgeFlow{stroke-dashoffset:0;animation:none}}.canvasAgentChip,.canvasAgentsChips{align-items:center}.canvasAgentChip{border:1px solid var(--canvasSectionBorder);background:var(--canvasPanelBg);color:inherit;font:inherit;cursor:pointer;border-radius:999px;gap:4px;padding:1px 7px 1px 6px;transition:border-color .15s,box-shadow .15s;display:inline-flex}.canvasAgentChip:hover{border-color:var(--canvasNodeSelected);box-shadow:0 0 0 2px var(--canvasNodeSelected)}.canvasAgentRole{border-radius:4px;justify-content:center;align-items:center;min-width:14px;height:14px;padding:0 2px;font-size:10px;line-height:1;display:inline-flex}.canvasAgentRole[data-role=main]{background:var(--colorPrimary);color:#fff}.canvasAgentRole[data-role=sub]{background:var(--canvasSectionBorder);color:var(--colorTextSecondary)}.canvasAgentChipMain{border-color:var(--colorPrimary)}.canvasAgentAvatar{border:1.5px solid var(--canvasEdge);background:var(--canvasNodeBg);width:22px;height:22px;color:var(--colorTextSecondary);border-radius:50%;justify-content:center;align-items:center;display:inline-flex;position:relative}.canvasAgentAvatarGlyph{font-size:12px;line-height:1;display:inline-flex}.canvasAgentAvatar[data-status=running]{border-color:var(--colorPrimary);color:var(--colorPrimary);animation:canvasAgentAvatarPulse 1.6s ease-in-out infinite}.canvasAgentAvatar[data-status=repairing]{border-color:var(--colorWarning);color:var(--colorWarning)}.canvasAgentAvatar[data-status=completed]{border-color:var(--colorSuccess);color:var(--colorSuccess)}@keyframes canvasAgentAvatarPulse{0%,to{box-shadow:0 0 #007aff59}50%{box-shadow:0 0 0 4px #007aff00}}@media (prefers-reduced-motion:reduce){.canvasAgentAvatar[data-status=running]{animation:none}}.canvasAgentIcon{color:var(--colorTextSecondary);display:inline-flex}.canvasAgentIcon[data-status=running]{color:var(--colorPrimary);animation:canvasNodePulse 1.6s ease-in-out infinite}.canvasAgentIcon[data-status=repairing]{color:var(--colorWarning)}.canvasAgentIcon[data-status=completed]{color:var(--colorSuccess)}.canvasAgentDetail{flex-direction:column;gap:6px;width:306px;display:flex}.canvasAgentDetailHead{align-items:center;gap:6px;display:flex}.canvasAgentDetailRow{align-items:baseline;gap:8px;display:flex}.canvasAgentDetailRow>:first-child{flex:0 0 46px}.canvasAgentDetailRow>:last-child{word-break:break-word;flex:1;min-width:0}.canvasAgentLocate{border:1px solid var(--canvasSectionBorder);color:var(--colorPrimary);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;margin-top:2px;padding:3px 10px;font-size:12px}.canvasAgentLocate:hover{background:var(--colorBgHover)}.canvasBubbleLayer{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.canvasBubble{offset-distance:0;will-change:offset-distance,opacity;animation-name:canvasBubbleFly;animation-timing-function:cubic-bezier(.33,0,.67,1);animation-fill-mode:forwards;position:absolute;top:0;left:0}@keyframes canvasBubbleFly{0%{offset-distance:0;opacity:0}14%{opacity:1}80%{offset-distance:100%;opacity:1}to{offset-distance:100%;opacity:0}}.canvasBubbleStatic{offset-distance:55%;opacity:1;animation:none}.canvasBubbleBody{border:1px solid var(--canvasBubbleBorder);background:var(--canvasBubbleBg);max-width:220px;box-shadow:var(--canvasBubbleShadow);color:var(--canvasBubbleText);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 9px;font-size:11px;line-height:16px;display:inline-flex;transform:translate(-50%,-50%)}.canvasBubble[data-kind=dispatch] .canvasBubbleBody{border-color:var(--canvasEdgeActive)}.canvasBubble[data-kind=report] .canvasBubbleBody{border-color:var(--canvasEdge)}.canvasBubbleText{text-overflow:ellipsis;overflow:hidden}.canvasNode{border:1px solid var(--canvasNodeBorder);background:var(--canvasNodeBg);box-shadow:var(--canvasNodeShadow);cursor:pointer;border-radius:10px;flex-direction:column;gap:4px;padding:8px 10px;transition:box-shadow .15s,border-color .15s;display:flex;position:absolute}.canvasNode:hover{border-color:var(--canvasNodeSelected)}@keyframes canvasNodeFlash{0%,to{box-shadow:var(--canvasNodeShadow)}50%{box-shadow:0 0 0 4px var(--canvasNodeSelected),var(--canvasNodeShadow)}}.canvasNodeFlashed{animation:canvasNodeFlash .6s ease-in-out 2}.canvasNodeSelected{border-color:var(--canvasNodeSelected);box-shadow:0 0 0 2px var(--canvasNodeSelected),var(--canvasNodeShadow)}.canvasNodeAffected{border-color:var(--canvasNodeAffected);box-shadow:0 0 0 2px var(--canvasNodeAffected)}.canvasNodeHeader{align-items:center;gap:6px;min-width:0;display:flex}.canvasNodeIcon{color:var(--colorTextSecondary);display:inline-flex}.canvasNodeIcon[data-status=running]{color:var(--colorPrimary);animation:canvasNodePulse 1.6s ease-in-out infinite}.canvasNodeIcon[data-status=blocked],.canvasNodeIcon[data-status=failed]{color:var(--colorError)}.canvasNodeIcon[data-status=paused],.canvasNodeIcon[data-status=repairing]{color:var(--colorWarning)}.canvasNodeMeta{gap:2px}.canvasNodeMeta,.canvasNodeMetrics{align-items:center;min-width:0;display:flex}.canvasNodeMetrics{white-space:nowrap;flex-shrink:0;gap:8px;overflow:hidden}.canvasNodeMetrics>.ant-typography{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}@keyframes canvasNodePulse{0%,to{opacity:1}50%{opacity:.35}}@media (max-width:1024px){.nodeInfoPanel{width:92vw}}.deliverablePreview{width:100%}.deliverablePreviewStack{flex-direction:column;gap:10px;width:100%;display:flex}.deliverablePreviewMeta{border-bottom:1px solid var(--colorBorderSecondary);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;padding-bottom:10px;display:flex}.deliverablePreviewPaper{border:1px solid var(--colorBorderSecondary);background:var(--colorBgContainer);border-radius:10px;width:100%;margin:0 auto;padding:28px 32px;box-shadow:0 1px 2px #00000008,0 8px 24px #0000000a}.deliverablePreviewBody{color:var(--colorText);text-align:justify;text-justify:inter-ideograph;overflow-wrap:anywhere;word-break:break-word;font-size:15px;line-height:1.9}.deliverablePreviewBody h1,.deliverablePreviewBody h2,.deliverablePreviewBody h3,.deliverablePreviewBody h4,.deliverablePreviewBody h5,.deliverablePreviewBody h6{text-align:left;margin:1.6em 0 .6em;font-weight:700;line-height:1.4}.deliverablePreviewBody h1{border-bottom:2px solid var(--colorBorder);padding-bottom:8px;font-size:1.6em}.deliverablePreviewBody h2{border-bottom:1px solid var(--colorBorderSecondary);padding-bottom:6px;font-size:1.35em}.deliverablePreviewBody h3{font-size:1.15em}.deliverablePreviewBody h4{font-size:1.02em}.deliverablePreviewBody h5,.deliverablePreviewBody h6{color:var(--colorTextSecondary);font-size:1em}.deliverablePreviewBody>:first-child{margin-top:0}.deliverablePreviewBody p{margin:.9em 0}.deliverablePreviewBody ol,.deliverablePreviewBody ul{margin:.9em 0;padding-left:1.8em}.deliverablePreviewBody ul{list-style:outside}.deliverablePreviewBody ol{list-style:decimal}.deliverablePreviewBody li{margin:.35em 0}.deliverablePreviewBody li::marker{color:var(--colorTextTertiary)}.deliverablePreviewBody li>ol,.deliverablePreviewBody li>ul{margin:.35em 0}.deliverablePreviewBody blockquote{border-left:3px solid var(--colorPrimaryBorder,var(--colorBorder));background:var(--colorFillQuaternary,var(--colorFillAlter));color:var(--colorTextSecondary);border-radius:0 6px 6px 0;margin:1em 0;padding:.6em 1.1em}.deliverablePreviewBody hr{border:none;border-top:1px solid var(--colorBorderSecondary);margin:1.8em 0}.deliverablePreviewBody a{color:var(--colorPrimary);text-underline-offset:2px;text-decoration:underline}.deliverablePreviewBody img{border-radius:6px;max-width:100%;height:auto}.deliverablePreviewBody strong{font-weight:600}.deliverablePreviewBody table{border-collapse:collapse;text-align:left;width:100%;margin:1.1em 0;font-size:13.5px}.deliverablePreviewBody td,.deliverablePreviewBody th{border:1px solid var(--colorBorderSecondary);vertical-align:top;padding:8px 10px}.deliverablePreviewBody th{background:var(--colorFillAlter);border-bottom:2px solid var(--colorBorder);white-space:nowrap;font-weight:600}.deliverablePreviewBody tbody tr:nth-child(2n) td{background:var(--colorFillQuaternary,transparent)}.deliverablePreviewBody code{background:var(--colorFillSecondary);font-family:var(--fontMono,ui-monospace,SFMono-Regular,Menlo,monospace);border-radius:4px;padding:.15em .4em;font-size:.9em}.deliverablePreviewBody pre{background:var(--colorFillAlter);text-align:left;border-radius:8px;margin:1em 0;padding:12px 14px;overflow-x:auto}.deliverablePreviewBody pre code{background:0 0;padding:0;font-size:12.5px}.deliverablePreviewEnd{border-top:1px dashed var(--colorBorderSecondary);flex-direction:column;gap:4px;width:100%;margin-top:28px;padding-top:14px;display:flex}*,:after,:before{box-sizing:border-box}html{font-family:var(--fontSans);background:var(--colorBg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.appShellPlaceholder,body{background:var(--colorBg);min-height:100vh}body{font-family:var(--fontSans);color:var(--colorText);margin:0}.ant-drawer-content-wrapper{min-width:320px;width:30%!important}a{color:inherit;text-decoration:none}*{scrollbar-width:thin;scrollbar-color:var(--borderColorStrong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-corner,::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--borderColorStrong);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:var(--colorTextTertiary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animateFadeIn{animation:fadeIn .4s cubic-bezier(.2,.8,.2,1) forwards}.stagger-1{animation-delay:50ms}.stagger-2{animation-delay:.1s}.stagger-3{animation-delay:.15s}.stagger-4{animation-delay:.2s}.stagger-5{animation-delay:.25s}.space-y-8>*+*{margin-top:32px}.space-y-6>*+*{margin-top:24px}.space-y-5>*+*{margin-top:20px}#nprogress{pointer-events:none}#nprogress .bar{background:var(--colorBrand);z-index:1031;width:100%;height:3px;position:fixed;top:0;left:0}#nprogress .peg{width:100px;height:100%;box-shadow:0 0 10px var(--colorBrand),0 0 5px var(--colorBrand);opacity:1;display:block;position:absolute;right:0;transform:rotate(3deg)translateY(-4px)}@media (max-width:1024px){:root{--sidebarWidth:200px}}@media (max-width:860px){:root{--sidebarWidth:72px}.sidebarLogo{justify-content:center;padding:16px}.sidebarItem span:not(.sidebarChevron),.sidebarLogoTitle{display:none}.sidebarItem{justify-content:center;padding:11px}.sidebarSubmenu{padding-left:0}.sidebarSubItem{padding-left:11px}.mainInner{padding:var(--mainInnerPadY) var(--mainInnerPadX);padding-bottom:calc(var(--mainInnerPadY) + env(safe-area-inset-bottom,0px))}.topbar{margin:10px 12px 0;padding:10px 16px}}@media (max-width:640px){.sidebar{top:6px;left:6px;bottom:calc(6px + env(safe-area-inset-bottom,0px))}.mainContent{margin-left:72px}.mainInner{padding:var(--mainInnerPadY) var(--mainInnerPadX);padding-bottom:calc(var(--mainInnerPadY) + env(safe-area-inset-bottom,0px))}.topbar{border-radius:16px;margin:8px 8px 0;padding:8px 12px}}.detailBack{border:1px solid var(--borderColor);background:var(--colorBgContainer);height:30px;color:var(--colorTextSecondary);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;margin:0;padding:0 12px 0 8px;font-size:13px;line-height:1;transition:background .15s,color .15s,border-color .15s,transform .12s;display:inline-flex}.detailBack svg{transition:transform .15s}.detailBack:hover{background:var(--colorBgHover);border-color:var(--borderColorStrong);color:var(--colorText)}.detailBack:hover svg{transform:translate(-2px)}.detailBack:active{transform:scale(.97)}.detailBack:focus-visible{outline:2px solid var(--colorAccent);outline-offset:2px}.tagWrap .ant-tag{white-space:normal;overflow-wrap:anywhere;max-width:100%;height:auto;min-height:22px}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sidebarWidth);display:flex;flex-direction:column;z-index:20;background:var(--colorBgSecondary);border-right:none;box-shadow:2px 0 8px rgba(0,0,0,.02);overflow:hidden;transition:width .3s cubic-bezier(.2,.8,.2,1),transform .3s ease}.sidebarCollapsedSelf{width:72px}.sidebarLogoRow{gap:4px;padding-right:8px}.sidebarLogo,.sidebarLogoRow{display:flex;align-items:center}.sidebarLogo{gap:12px;padding:24px 20px 20px;height:68px;overflow:hidden}.sidebarCollapsedSelf .sidebarLogo{justify-content:center;padding:24px 0 20px}.sidebarCollapsedSelf .sidebarLogoRow{padding-right:0}.sidebarCollapsedSelf .sidebarChevron,.sidebarCollapsedSelf .sidebarLabel,.sidebarCollapsedSelf .sidebarLogoTitle{display:none}.sidebarCollapsedSelf .sidebarItem{justify-content:center;padding:10px}.sidebarLogoTitle{font-size:16px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;opacity:1;transition:opacity .2s ease;color:var(--colorText)}.sidebarNav{flex:1;overflow-y:auto;overflow-x:hidden;flex-direction:column;gap:2px}.sidebarItem,.sidebarNav{padding:8px 12px;display:flex}.sidebarItem{align-items:center;gap:10px;border-radius:var(--radiusSm);font-size:13.5px;font-weight:500;color:var(--colorTextSecondary);transition:all .15s ease;cursor:pointer;white-space:nowrap}.sidebarLabel{transition:opacity .2s ease}.sidebarItem:hover{background:var(--colorBgHover);color:var(--colorText)}.sidebarItemActive,.sidebarItemActive:hover{background:var(--colorBgElevated);color:var(--colorText);box-shadow:none}.dark .sidebarItemActive,.dark .sidebarItemActive:hover{box-shadow:none}.sidebarCollapseBtn{width:32px;height:32px;flex-shrink:0;border-radius:var(--radiusSm);border:1px solid transparent;background:transparent;color:var(--colorTextSecondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.sidebarCollapseBtn:hover{background:var(--colorBgHover);color:var(--colorText)}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 32px;background:var(--glassBg);backdrop-filter:var(--glassBlur);-webkit-backdrop-filter:var(--glassBlur);border-bottom:none;box-shadow:0 1px 3px rgba(0,0,0,.02)}.topbarBtn{display:inline-flex;align-items:center;gap:8px;padding:6px;border-radius:var(--radiusSm);border:1px solid transparent;background:transparent;color:var(--colorTextSecondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease;outline:none}.topbarBtn:hover{background:var(--colorBgHover);color:var(--colorText)}.mainContent{margin-left:var(--sidebarWidth);flex:1;display:flex;flex-direction:column;min-height:100vh;background:var(--colorBg);transition:margin-left .3s cubic-bezier(.2,.8,.2,1)}.sidebarCollapsed .mainContent{margin-left:68px}.mainInner{flex:1;padding:var(--mainInnerPadY,32px) var(--mainInnerPadX,clamp(24px,4vw,48px));padding-bottom:calc(var(--mainInnerPadY, 32px) + env(safe-area-inset-bottom, 0px));width:100%;min-width:0;overflow-x:clip;transition:opacity .2s ease}.mainInner.pageTransitioning{opacity:.5;pointer-events:none}.ant-card{background:var(--colorBgContainer)!important;border:none!important;border-radius:20px!important;box-shadow:var(--shadowSurface)!important;margin-bottom:0!important}.ant-card-head{border-bottom:none!important;padding:20px 24px 0!important;min-height:auto!important;margin-bottom:8px}.ant-card-small>.ant-card-head{padding:16px 16px 0!important}.ant-card-body{padding-top:16px!important}.ant-card-small>.ant-card-body{padding-top:12px!important}.ant-card-head-title{font-size:16px!important;font-weight:600!important;padding:0!important}.tableFillHeight,.tableFillHeight>.ant-spin,.tableFillHeight>.ant-spin>.ant-spin-container{display:flex;flex-direction:column;min-height:0}.tableFillHeight>.ant-spin,.tableFillHeight>.ant-spin>.ant-spin-container{flex:1}.tableFillHeight .ant-table{flex:1 1 auto;min-height:0}.tableFillHeight .ant-table-container{display:flex;flex-direction:column;height:100%;min-height:0}.tableFillHeight .ant-table-body{max-height:none!important}.tableFillHeight .ant-table-body,.tableFillHeight .ant-table-content{flex:1;min-height:0;overflow:auto!important}.tableFillHeight .ant-table-pagination.ant-pagination{margin:auto 16px 12px!important}.ant-modal-content{background:var(--colorBgElevated)!important;border:1px solid var(--borderColor)!important;border-radius:var(--radiusLg)!important;box-shadow:var(--shadowCard)!important;padding:24px!important}.ant-modal-header{background:transparent!important;margin-bottom:24px!important}.ant-input,.ant-input-number,.ant-input-password,.ant-select-selector{border:1px solid transparent!important;background:var(--colorBgHover)!important;border-radius:var(--radiusSm)!important;box-shadow:none!important;transition:all .2s ease!important}.ant-input-focused,.ant-input-number-focused,.ant-input-number:focus,.ant-input-number:hover,.ant-input-password:focus,.ant-input-password:hover,.ant-input:focus,.ant-input:hover,.ant-select-focused .ant-select-selector,.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:var(--borderColorStrong)!important;background:transparent!important;box-shadow:none!important}.ant-input-affix-wrapper-outlined:focus,.ant-input-affix-wrapper-outlined:focus-within,.ant-input-number-outlined:focus,.ant-input-number-outlined:focus-within,.ant-input-outlined:focus,.ant-input-outlined:focus-within,.ant-select-outlined.ant-select-focused .ant-select-selector{box-shadow:none!important;outline:none!important;border-color:var(--borderColorStrong)!important}.modern-table .ant-table{background:transparent!important;border:none!important;border-radius:0!important}.modern-table .ant-table-container{border:none!important}.modern-table .ant-table-thead>tr>th{background:var(--colorBgSecondary)!important;border:none!important;font-size:11px!important;font-weight:600!important;color:var(--colorTextSecondary)!important;text-transform:uppercase;letter-spacing:.05em;padding:14px 16px!important}.modern-table .ant-table-thead>tr>th:first-child{border-top-left-radius:var(--radiusMd)!important;border-bottom-left-radius:var(--radiusMd)!important}.modern-table .ant-table-thead>tr>th:last-child{border-top-right-radius:var(--radiusMd)!important;border-bottom-right-radius:var(--radiusMd)!important}.modern-table .ant-table-thead>tr>th:before{display:none!important}.modern-table .ant-table-tbody>tr>td{border:none!important;background:transparent!important;padding:18px 16px!important;font-size:14px}.modern-table .ant-table-tbody>tr:last-child>td{border-bottom:none!important}.modern-table .ant-table-tbody>tr:hover>td{background:var(--colorBgHover)!important}.modern-table .ant-table-tbody>tr.ant-table-row-selected>td{background:var(--colorBgSelected)!important;border:0!important;box-shadow:none!important;outline:0!important}.ant-btn-default{border-color:var(--borderColor)!important;background:transparent!important;box-shadow:none!important}.ant-btn-default:hover{background:var(--colorBgHover)!important;border-color:var(--borderColorStrong)!important;color:var(--colorText)!important}.ant-btn-primary{background:var(--colorText)!important;color:var(--colorBg)!important;box-shadow:none!important;border:none!important}.ant-btn-primary:hover{background:var(--colorTextSecondary)!important;color:var(--colorBg)!important}.ant-row{row-gap:24px}.ant-input,.ant-input-affix-wrapper,.ant-input-number,.ant-input-password,.ant-input-search .ant-input,.ant-input-search .ant-input-group-addon .ant-btn,.ant-mentions,.ant-picker,.ant-select-selector{min-height:34px;border:1px solid var(--borderColor)!important;background:var(--colorBgSecondary)!important;border-radius:var(--radiusSm)!important;box-shadow:none!important;outline:none!important}.ant-input-affix-wrapper>input.ant-input,.ant-input-affix-wrapper>textarea.ant-input,.ant-input-number .ant-input-number-input,.ant-input-password>input.ant-input,.ant-input-search .ant-input-affix-wrapper>input.ant-input{min-height:auto;border:0!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;outline:none!important}.ant-input-affix-wrapper-focused,.ant-input-affix-wrapper:focus,.ant-input-affix-wrapper:hover,.ant-input-focused,.ant-input-number-focused,.ant-input-number:hover,.ant-input-password:hover,.ant-input:focus,.ant-input:hover,.ant-picker-focused,.ant-picker:hover,.ant-select-focused .ant-select-selector,.ant-select:not(.ant-select-disabled):hover .ant-select-selector{border-color:var(--colorBrand)!important;background:var(--colorBgElevated)!important;box-shadow:none!important;outline:none!important}.ant-btn:focus-visible,.ant-input-affix-wrapper:focus-visible,.ant-input:focus-visible,.ant-picker:focus-visible,.ant-select-selector:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:none!important;box-shadow:none!important}.ant-input-group-wrapper .ant-input-wrapper,.ant-input-search .ant-input-group{display:flex;align-items:stretch}.ant-input-search .ant-input,.ant-input-search .ant-input-affix-wrapper{border-start-end-radius:0!important;border-end-end-radius:0!important}.ant-input-search .ant-input-group-addon .ant-btn{border-start-start-radius:0!important;border-end-start-radius:0!important;border-left:0!important}.ant-input-affix-wrapper{padding-inline-start:11px!important;padding-inline-end:11px!important}.ant-input-affix-wrapper .ant-input-prefix{margin-inline-end:8px!important;color:var(--colorTextTertiary)!important}.ant-input-affix-wrapper .ant-input-suffix{margin-inline-start:8px!important}.ant-input-affix-wrapper>input.ant-input{padding-inline-start:0!important}.ant-table-wrapper,.ant-table-wrapper .ant-spin-container,.ant-table-wrapper .ant-spin-nested-loading,.ant-table-wrapper .ant-table,.ant-table-wrapper .ant-table-body,.ant-table-wrapper .ant-table-container,.ant-table-wrapper .ant-table-content{background:transparent!important;border:0!important;box-shadow:none!important}.ant-table-wrapper .ant-table-cell:before,.ant-table-wrapper .ant-table-container:after,.ant-table-wrapper .ant-table-container:before{display:none!important}.ant-table-wrapper .ant-table-thead>tr>th{height:auto!important;padding:10px 12px!important;border:0!important;background:var(--colorBgSecondary)!important;color:var(--colorTextSecondary)!important;font-size:12px!important;font-weight:600!important;line-height:1.45!important;vertical-align:middle!important}.ant-table-wrapper .ant-table-tbody>tr>td{height:auto!important;min-height:0!important;padding:11px 12px!important;border:0!important;background:transparent!important;color:var(--colorText)!important;line-height:1.5!important;vertical-align:middle!important;overflow:visible!important;white-space:normal;word-break:break-word}.ant-table-wrapper .ant-table-tbody>tr.ant-table-row:hover>td,.ant-table-wrapper .ant-table-tbody>tr:hover>td{background:var(--colorBgHover)!important}.ant-table-wrapper .ant-table-tbody>tr.ant-table-row-selected>td{background:var(--colorBgSelected)!important}.ant-table-wrapper .ant-table-expanded-row>td,.ant-table-wrapper .ant-table-placeholder>td{background:transparent!important}.ant-table-wrapper .ant-table-cell .ant-btn,.ant-table-wrapper .ant-table-cell .ant-space,.ant-table-wrapper .ant-table-cell .ant-tag{vertical-align:middle}.ant-table-wrapper .ant-table-selection-column .ant-checkbox-wrapper{vertical-align:middle;align-items:center}.ant-table-wrapper .ant-table-cell .ant-checkbox{line-height:1}.ant-table-wrapper .ant-table-cell .ant-typography,.ant-table-wrapper .ant-table-cell div,.ant-table-wrapper .ant-table-cell p,.ant-table-wrapper .ant-table-cell span{max-height:none;line-height:inherit}.ant-table-wrapper .ant-table-cell-ellipsis{white-space:normal!important}.ant-table-wrapper .ant-table-cell-ellipsis .ant-table-cell-content{display:block;overflow:visible;text-overflow:clip;white-space:normal}.ant-alert-description,.ant-alert-message,.ant-breadcrumb-link,.ant-btn,.ant-dropdown-menu-title-content,.ant-menu-title-content,.ant-select-selection-item,.ant-tabs-tab-btn,.ant-tag{display:inline-flex;align-items:center;gap:6px;min-width:0}.ant-btn{justify-content:center;line-height:1.2!important}.ant-btn .anticon,.ant-btn svg,.ant-menu-item svg,.ant-menu-item-icon,.ant-tabs-tab .anticon,.ant-tabs-tab svg,.ant-tag .anticon,.ant-tag svg,.anticon,.sidebarItem svg,.topbarBtn svg{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1;vertical-align:-.125em}.ant-space{align-items:center}.ant-alert+.ant-card,.ant-card+.ant-alert,.ant-card+.ant-card{margin-top:16px!important}.ant-card-head{margin-bottom:8px!important}.ant-card .ant-typography,.ant-card ol,.ant-card p,.ant-card ul{line-height:1.65}.ant-card .ant-typography:last-child,.ant-card ol:last-child,.ant-card p:last-child,.ant-card ul:last-child{margin-bottom:0!important}.ant-tabs>.ant-tabs-nav,.ant-tabs>div>.ant-tabs-nav{margin:0 0 18px!important;padding:0 2px!important}.ant-tabs .ant-tabs-tab{padding:10px 12px!important;margin:0 4px 0 0!important}.ant-tabs .ant-tabs-content-holder{padding-top:2px}.ant-tabs-card>.ant-tabs-nav .ant-tabs-tab{border-radius:var(--radiusSm) var(--radiusSm) 0 0!important}.ant-form-item{margin-bottom:16px!important}.ant-form-item-row{row-gap:8px!important}.ant-descriptions-small .ant-descriptions-item-content,.ant-descriptions-small .ant-descriptions-item-label{padding-top:12px!important;padding-bottom:12px!important}.ant-form-item-label>label{align-items:center;height:auto!important;color:var(--colorText)!important;font-weight:500}.ant-form-item-explain,.ant-form-item-extra{margin-top:6px;font-size:12px}.ant-collapse-header,.ant-descriptions-item,.ant-list-item{align-items:center!important}.ant-table-wrapper.modern-table,.ant-table-wrapper.modern-table *,.modern-table.ant-table-wrapper,.modern-table.ant-table-wrapper *{border-color:transparent!important}.modern-table .ant-table,.modern-table .ant-table-body,.modern-table .ant-table-container,.modern-table .ant-table-content,.modern-table .ant-table-header,.modern-table .ant-table-tbody,.modern-table .ant-table-thead,.modern-table table{border:0!important;box-shadow:none!important;outline:0!important}.modern-table .ant-table-expanded-row>td,.modern-table .ant-table-selection-column,.modern-table .ant-table-tbody>tr>td,.modern-table .ant-table-thead>tr>th{height:auto!important;min-height:0!important;border:0!important;border-inline-end:0!important;border-bottom:0!important;box-shadow:none!important;outline:0!important;line-height:1.55!important;vertical-align:middle!important}.modern-table .ant-table-tbody>tr>td{padding:10px 12px!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.modern-table .ant-table-thead>tr>th{padding:9px 12px!important;border-radius:0!important}.modern-table .ant-table-cell-ellipsis,.modern-table .truncate{overflow:visible!important;text-overflow:clip!important;white-space:normal!important;max-height:none!important}.jobsCellLine{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}.modern-table .ant-table-row-expand-icon-cell,.modern-table .ant-table-selection-column{text-align:center!important;vertical-align:middle!important;white-space:nowrap!important}.modern-table .ant-table-cell .anticon,.modern-table .ant-table-cell svg,.modern-table .ant-table-row-expand-icon{display:inline-flex!important;align-items:center!important;justify-content:center!important;vertical-align:middle!important}.modern-table .ant-table-expanded-row-fixed,.modern-table .ant-table-expanded-row>td>div{border:0!important}.modern-table .ant-table-tbody>tr{height:auto!important;min-height:44px!important}.modern-table .ant-table-cell{height:auto!important;max-height:none!important;overflow:visible!important}.modern-table .ant-table-cell .ant-tag,.modern-table .ant-table-cell .ant-typography,.modern-table .ant-table-cell a,.modern-table .ant-table-cell button,.modern-table .ant-table-cell>*{max-height:none!important;overflow:visible!important;line-height:1.45!important}.modern-table .ant-table-body{overflow-y:auto!important;overflow-x:hidden!important}[class*=Card]:not(.ant-card),[class*=card]:not(.ant-card){box-shadow:none!important}.group:hover,.hover\:border-\[var\(--borderColorStrong\)\]:hover,.hover\:border-\[var\(--colorBrand\)\]:hover{border-color:transparent!important;box-shadow:none!important}.active,.ant-list-item-selected,.ant-list-item.active,.ant-menu-item-selected,.ant-menu-submenu-selected>.ant-menu-submenu-title,.ant-segmented-item-selected,.ant-select-item-option-selected,.ant-table-row-selected>td,.ant-tabs-tab-active,.ant-tabs-tab.ant-tabs-tab-active,.ant-tree-node-selected,.selected,[aria-selected=true],[data-selected=true]{border-color:transparent!important;box-shadow:none!important;outline:0!important}
|
package/messages/en-US.json
CHANGED
|
@@ -232,6 +232,17 @@
|
|
|
232
232
|
"models": {
|
|
233
233
|
"title": "Model Configuration",
|
|
234
234
|
"description": "Manage providers and choose one model for the entire generation workflow",
|
|
235
|
+
"resetConfig": "Clear model config",
|
|
236
|
+
"resetConfigTitle": "Clear model configuration?",
|
|
237
|
+
"resetConfigBody": "This clears the selected model and the model list. Providers, API keys and embedding settings are kept by default — after clearing, click the provider card you want to use again.",
|
|
238
|
+
"resetConfigIncludeAll": "Also clear providers and API keys",
|
|
239
|
+
"resetConfigBackupNote": "Either way, the original config file is backed up first (config.backup-<timestamp>.json) in the config directory — nothing is lost.",
|
|
240
|
+
"resetConfigDone": "Model configuration cleared",
|
|
241
|
+
"resetConfigBackup": "Original file backed up to {path}",
|
|
242
|
+
"resetConfigKeptProviders": "Providers and API keys were kept: click the provider card you want to use to select a model again",
|
|
243
|
+
"resetConfigFailed": "Failed to clear",
|
|
244
|
+
"configBrokenTitle": "Failed to read model configuration",
|
|
245
|
+
"configBrokenBody": "The config file is incompatible with this version or corrupted (e.g. written by an older version). Clear it and configure again — the original file is backed up first, and providers/keys are kept by default.",
|
|
235
246
|
"modelList": "Model Services",
|
|
236
247
|
"apiKey": "API Key",
|
|
237
248
|
"baseUrl": "Base URL",
|
|
@@ -485,8 +496,14 @@
|
|
|
485
496
|
},
|
|
486
497
|
"jobs": {
|
|
487
498
|
"title": "Background tasks",
|
|
488
|
-
"
|
|
499
|
+
"pageSubtitle": "Every upload, re-index and document generation run is recorded here; while a task is running this page refreshes every 2 seconds.",
|
|
489
500
|
"clearAll": "Clear all",
|
|
501
|
+
"filterAll": "All",
|
|
502
|
+
"searchPlaceholder": "Search task, file or diagnostics",
|
|
503
|
+
"filteredRecords": "{count} matched",
|
|
504
|
+
"limitNotice": "Only the latest {count}",
|
|
505
|
+
"limitHint": "Only the most recent {count} records are loaded; earlier ones were not fetched",
|
|
506
|
+
"noMatch": "No records match the filters",
|
|
490
507
|
"empty": "No background tasks",
|
|
491
508
|
"emptyHint": "Uploads, re-index runs and document generation all leave a record here.",
|
|
492
509
|
"remove": "Remove record",
|
|
@@ -497,12 +514,21 @@
|
|
|
497
514
|
"cleared": "Records cleared",
|
|
498
515
|
"clearFailed": "Failed to clear",
|
|
499
516
|
"removeFailed": "Failed to remove",
|
|
517
|
+
"colStatus": "Status",
|
|
518
|
+
"colTask": "Task",
|
|
519
|
+
"colProgress": "Progress",
|
|
520
|
+
"colActions": "Actions",
|
|
521
|
+
"messageLabel": "Message",
|
|
522
|
+
"errorLabel": "Error",
|
|
500
523
|
"typeLabel": "Type",
|
|
501
524
|
"stageLabel": "Stage",
|
|
502
525
|
"chunksLabel": "Chunks",
|
|
503
526
|
"fileLabel": "File",
|
|
527
|
+
"createdAtLabel": "Created",
|
|
504
528
|
"updatedAtLabel": "Updated",
|
|
529
|
+
"idLabel": "Record ID",
|
|
505
530
|
"diagnostics": "Diagnostics",
|
|
531
|
+
"detailsMore": "{count} more not shown",
|
|
506
532
|
"statusProcessing": "Running",
|
|
507
533
|
"statusSuccess": "Done",
|
|
508
534
|
"statusWarning": "Warning",
|
|
@@ -511,6 +537,14 @@
|
|
|
511
537
|
"typeUpload": "File upload",
|
|
512
538
|
"typeReindex": "Re-index",
|
|
513
539
|
"typeDelete": "Delete",
|
|
540
|
+
"stageUploading": "Uploading",
|
|
541
|
+
"stageParsing": "Parsing",
|
|
542
|
+
"stageChunking": "Chunking",
|
|
543
|
+
"stageVectorizing": "Indexing",
|
|
544
|
+
"stageGenerating": "Generating",
|
|
545
|
+
"stageValidating": "Validating",
|
|
546
|
+
"stageDone": "Done",
|
|
547
|
+
"stageError": "Error",
|
|
514
548
|
"resident": "Persistent",
|
|
515
549
|
"residentHint": "Persistent system alert: written automatically when an issue is detected, and rewritten on the next check after removal",
|
|
516
550
|
"clearConfirmWarning": "In-flight records reappear on the next progress update, and persistent system alerts (e.g. mixed material packs) are rewritten on the next check."
|
package/messages/zh-CN.json
CHANGED
|
@@ -232,6 +232,17 @@
|
|
|
232
232
|
"models": {
|
|
233
233
|
"title": "模型配置",
|
|
234
234
|
"description": "管理供应商和生成模型,整个流程统一使用当前选中的模型",
|
|
235
|
+
"resetConfig": "清除模型配置",
|
|
236
|
+
"resetConfigTitle": "清除模型配置?",
|
|
237
|
+
"resetConfigBody": "会清空「当前选中的模型」与「模型列表」。供应商、API Key、嵌入模型等设置默认保留,清完点一下要用的供应商卡片即可重新选中。",
|
|
238
|
+
"resetConfigIncludeAll": "连供应商与 API Key 一起清除",
|
|
239
|
+
"resetConfigBackupNote": "无论清哪一种,原配置文件都会先备份到配置目录(config.backup-<时间>.json),不会丢。",
|
|
240
|
+
"resetConfigDone": "模型配置已清除",
|
|
241
|
+
"resetConfigBackup": "原文件已备份到 {path}",
|
|
242
|
+
"resetConfigKeptProviders": "供应商与 API Key 已保留:点一下要用的供应商卡片即可重新选中模型",
|
|
243
|
+
"resetConfigFailed": "清除失败",
|
|
244
|
+
"configBrokenTitle": "模型配置读取失败",
|
|
245
|
+
"configBrokenBody": "配置文件与当前版本不兼容或已损坏(例如旧版本写入的格式)。可一键清除后重新配置——原文件会先备份,供应商与密钥默认保留。",
|
|
235
246
|
"modelList": "模型服务",
|
|
236
247
|
"apiKey": "API Key",
|
|
237
248
|
"baseUrl": "Base URL",
|
|
@@ -485,8 +496,14 @@
|
|
|
485
496
|
},
|
|
486
497
|
"jobs": {
|
|
487
498
|
"title": "后台任务",
|
|
488
|
-
"
|
|
499
|
+
"pageSubtitle": "上传、重新解析与文档生成的运行记录都在这里;有进行中的任务时每 2 秒自动刷新。",
|
|
489
500
|
"clearAll": "清空全部",
|
|
501
|
+
"filterAll": "全部",
|
|
502
|
+
"searchPlaceholder": "搜索任务、文件或诊断",
|
|
503
|
+
"filteredRecords": "筛选出 {count} 条",
|
|
504
|
+
"limitNotice": "仅显示最近 {count} 条",
|
|
505
|
+
"limitHint": "只加载了最近 {count} 条记录,更早的没有拉取",
|
|
506
|
+
"noMatch": "没有符合筛选条件的记录",
|
|
490
507
|
"empty": "暂无后台任务",
|
|
491
508
|
"emptyHint": "上传、重新解析与文档生成都会在这里留下记录。",
|
|
492
509
|
"remove": "移除记录",
|
|
@@ -497,12 +514,21 @@
|
|
|
497
514
|
"cleared": "已清空记录",
|
|
498
515
|
"clearFailed": "清空失败",
|
|
499
516
|
"removeFailed": "移除失败",
|
|
517
|
+
"colStatus": "状态",
|
|
518
|
+
"colTask": "任务",
|
|
519
|
+
"colProgress": "进度",
|
|
520
|
+
"colActions": "操作",
|
|
521
|
+
"messageLabel": "消息",
|
|
522
|
+
"errorLabel": "错误",
|
|
500
523
|
"typeLabel": "类型",
|
|
501
524
|
"stageLabel": "阶段",
|
|
502
525
|
"chunksLabel": "切片数",
|
|
503
526
|
"fileLabel": "文件",
|
|
527
|
+
"createdAtLabel": "创建时间",
|
|
504
528
|
"updatedAtLabel": "更新时间",
|
|
529
|
+
"idLabel": "记录 ID",
|
|
505
530
|
"diagnostics": "诊断详情",
|
|
531
|
+
"detailsMore": "另有 {count} 条未显示",
|
|
506
532
|
"statusProcessing": "进行中",
|
|
507
533
|
"statusSuccess": "已完成",
|
|
508
534
|
"statusWarning": "有告警",
|
|
@@ -511,6 +537,14 @@
|
|
|
511
537
|
"typeUpload": "文件上传",
|
|
512
538
|
"typeReindex": "重新解析",
|
|
513
539
|
"typeDelete": "删除",
|
|
540
|
+
"stageUploading": "上传中",
|
|
541
|
+
"stageParsing": "解析中",
|
|
542
|
+
"stageChunking": "切片中",
|
|
543
|
+
"stageVectorizing": "建索引中",
|
|
544
|
+
"stageGenerating": "生成中",
|
|
545
|
+
"stageValidating": "校验中",
|
|
546
|
+
"stageDone": "完成",
|
|
547
|
+
"stageError": "出错",
|
|
514
548
|
"resident": "常驻",
|
|
515
549
|
"residentHint": "系统常驻告警:检测到问题时自动写入,清除后下次检查仍会出现",
|
|
516
550
|
"clearConfirmWarning": "进行中的记录会在下一次进度更新时重新出现;系统常驻告警(资料包混放等)也会在下次检查时重新写入。"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@customize-agent/server",
|
|
3
|
-
"version": "4.60.
|
|
3
|
+
"version": "4.60.32",
|
|
4
4
|
"description": "Customize Agent Web 管理控制台",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json"
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@ant-design/icons": "^6.3.2",
|
|
39
|
-
"@customize-agent/knowledge": "^5.2.
|
|
40
|
-
"@customize-agent/llm": "^3.1.
|
|
39
|
+
"@customize-agent/knowledge": "^5.2.13",
|
|
40
|
+
"@customize-agent/llm": "^3.1.5",
|
|
41
41
|
"@customize-agent/runtime": "^3.1.3",
|
|
42
42
|
"@napi-rs/canvas": "^0.1.82",
|
|
43
43
|
"@types/nprogress": "^0.2.3",
|
|
@@ -1,39 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 品牌月牙的**参数推算脚本**(2026-10-13 建;与 `src/components/BrandMoon.tsx` 配套)。
|
|
3
|
-
*
|
|
4
|
-
* 改形状的路径:调下面几个数 → `node scripts/brand-moon-fit.cjs` → 它打印
|
|
5
|
-
* `BRAND_MOON_PATH` 与 `BRAND_MOON_TRANSFORM` → 粘回组件 → `node scripts/generate-brand-assets.cjs`
|
|
6
|
-
* 重出站点图标 → **真浏览器看一眼**(形状靠读数字看不出来)。
|
|
7
|
-
*
|
|
8
|
-
* ## 形状是怎么定下来的(三段,都留了痕迹)
|
|
9
|
-
* 1. **参照**:用户给的是「🌙 类似这种」。把系统 emoji 渲成 420×420 二值掩码当靶子做 IoU 拟合。
|
|
10
|
-
* 2. **第一轮失败**:先试的是"外圆 + 更大的内圆"对称族(内圆包住外圆心那一种)——
|
|
11
|
-
* 拟合上限只有 IoU≈0.64,渲出来用户评「不协调、不弯、不该细的不细,该饱满的不饱满」。
|
|
12
|
-
* 原因很实在:对称族做不出 🌙 的关键特征——**一侧长而细的尖 + 饱满的肚子**。
|
|
13
|
-
* 3. **第二轮成功**:换成经典"**圆咬圆**"(外圆 R=10,内圆偏心 (d,e)),拟合到 **IoU 0.90**
|
|
14
|
-
* (最优 r=9.4、(2,−4.1))。
|
|
15
|
-
* 4. **第三、四、五轮是"体重与弯度"**:用户依次给了三句——「该饱满的不饱满」(要肚子)、
|
|
16
|
-
* 「整体还是有点粗」(降厚度到 0.240)、「有点不弯了」(**这暴露了我只拧了一个旋钮**)。
|
|
17
|
-
* 形状的美学由**两个**数决定,改一个必须看一眼另一个:
|
|
18
|
-
* - **厚度比**(内弧到外圆的最大径向差 / 2R):胖瘦;拟合解 0.287 → 现在 0.262;
|
|
19
|
-
* - **包角**(外弧跨过多少度 = 开口的宽窄):弯度;第四轮 209° → 现在 **248°**。
|
|
20
|
-
* 脚本会把两个数都打印出来,改参数后对一眼就知道是"细了还是粗了""弯了还是直了"。
|
|
21
|
-
*
|
|
22
|
-
* ## 朝向:**不照抄 emoji**(用户 2026-10-13 明确「方向不用改」)
|
|
23
|
-
* 拟合出的最优朝向是 −62°,而 logo 沿用原来那版的姿态:**肚子在左、两尖朝右上**。
|
|
24
|
-
* 脚本把这步写成 `postureRot()`:先把"肚子方向"转到正左(180°),再叠上原来的 −20° 倾角。
|
|
25
|
-
*
|
|
26
|
-
* ## 两个必须守住的细节(都踩过)
|
|
27
|
-
* 1. **墨迹按"旋转后的真实包围盒"居中**:月牙的肉偏在一侧,墨迹盒不是外接方框,
|
|
28
|
-
* 旋转之后包围盒中心还会再挪一点。第一版按外圆圆心定位 ⇒ 用户原话「不是居中的」。
|
|
29
|
-
* 2. **变换顺序**:`translate/scale/translate/rotate` 在 SVG 里"从右往左"作用在点上、
|
|
30
|
-
* 在 canvas 里"从左往右"作用在坐标系上——同一个书写顺序、相反的语义,写反不报错只偏心。
|
|
31
|
-
*
|
|
32
|
-
* ## 弧标志怎么来的(改结构时别自己猜)
|
|
33
|
-
* 两尖 = 两圆交点;外弧必须**经过肚子**(外圆上离内圆心最远的点)、内弧必须经过**最深处**
|
|
34
|
-
* (内圆上离外圆心最近的点)。脚本按"该弧是否包含这个点"反推 `large-arc` 与 `sweep`,
|
|
35
|
-
* 并用"解析区域 vs 路径栅格化"的 IoU 自检(实测 0.98+ 才算对)。
|
|
36
|
-
*/
|
|
37
1
|
|
|
38
2
|
const { createCanvas, Path2D } = require('@napi-rs/canvas');
|
|
39
3
|
const fs = require('node:fs');
|
|
@@ -45,17 +9,6 @@ const INNER_R = 8.5; // 内圆半径
|
|
|
45
9
|
const INNER_D = 3.399; // 内圆圆心 x
|
|
46
10
|
const INNER_E = -1.585; // 内圆圆心 y(非零才有"一侧长角"的不对称)
|
|
47
11
|
const TILT = -20; // 沿用原版的倾角
|
|
48
|
-
/**
|
|
49
|
-
* 墨迹长边在 24 格里的格数(21 = 敢占地方,小尺寸下更清晰)。
|
|
50
|
-
*
|
|
51
|
-
* ## ★ "细"和"弯"是一对反向的力——两个旋钮都要拧(2026-10-13 第五轮)
|
|
52
|
-
* 用户先嫌「粗」(0.287 → 我把**厚度比**降到 0.240),紧接着嫌「不弯了」:
|
|
53
|
-
* 厚度一降,那条弧就"直"了——因为**弯不弯是另一个旋钮**:**包角**(外弧跨过多少度,
|
|
54
|
-
* 也就是两尖之间开口的宽窄)。第四轮只顾了厚度,包角还停在 209°。
|
|
55
|
-
* 现在的取值:**包角 248°、厚度比 0.262**——比第四轮多弯 39°、体重只回了一点点。
|
|
56
|
-
* 扫描脚本按"包角 × 厚度"两个维度各取 210/230/250° × 0.26/0.29 出代表,渲图目视选的。
|
|
57
|
-
* 判据(脚本会打印):厚度比 = 内弧到外圆的最大径向差 / 2R;包角 = 360° − 2×(两尖与开口方向的夹角)。
|
|
58
|
-
*/
|
|
59
12
|
const INK = 21;
|
|
60
13
|
/**
|
|
61
14
|
* **光学微调**(格;沿"开口方向"即右上,x/y 各 ±`OPTICAL_NUDGE/√2`)。
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 把形状画到 `size×size` 的方块上(24 格 → `size*insetRatio` 像素、居中)。
|
|
3
|
-
*
|
|
4
|
-
* ★ 变换顺序与 SVG 的 transform 列表**逐项对应**(左起 = 最外层):
|
|
5
|
-
* `translate(12 12) scale(k) translate(−jx −jy) rotate(rot)` 在 SVG 里读作
|
|
6
|
-
* "先把点旋转、再平移到包围盒中心、再整体缩放、最后挪到格子中心"(变换从右往左作用在点上)。
|
|
7
|
-
* canvas 的调用顺序与 SVG 的**书写顺序**相同(都是"先写的先生效在坐标系上"),
|
|
8
|
-
* 所以这里照抄那条列表即可。写反了不会报错,只会让月亮偏心——2026-10-13 实测踩过一次
|
|
9
|
-
* (预览图里月亮缩在左下角,而同一份常数在 SVG 里是对的)。
|
|
10
|
-
*/
|
|
11
1
|
function drawShape(ctx, shape, unit) {
|
|
12
2
|
ctx.translate(shape.tx, shape.ty);
|
|
13
3
|
ctx.scale(shape.scale, shape.scale);
|
|
@@ -15,24 +5,6 @@ function drawShape(ctx, shape, unit) {
|
|
|
15
5
|
ctx.rotate((shape.rotation * Math.PI) / 180);
|
|
16
6
|
}
|
|
17
7
|
|
|
18
|
-
/**
|
|
19
|
-
* 站点图标生成(2026-10-13):从**品牌月亮组件**里读形状,写出
|
|
20
|
-
* `public/favicon.svg`、`public/favicon.ico`、`public/apple-touch-icon.png`。
|
|
21
|
-
*
|
|
22
|
-
* ## 为什么要有这个脚本(而不是手放三个文件)
|
|
23
|
-
* 用户口径是「我们网站的 icon 也需要使用这个图标」——同一轮月亮的**三份格式**。
|
|
24
|
-
* 手工放三个文件的下场是可预期的:改了侧栏的月亮,图标还是上一版的(本仓对"两处各一份"的
|
|
25
|
-
* 那一类漂移有过太多次教训)。故:形状只有 `src/components/BrandMoon.tsx` 一个来源,
|
|
26
|
-
* 本脚本从那个文件里读 `BRAND_MOON_PATH` 与 `BRAND_MOON_ROTATION`,现场渲染出全部图标。
|
|
27
|
-
*
|
|
28
|
-
* ## 跑法(改了月亮形状就跑一次,并把三个产物一起提交)
|
|
29
|
-
* ```
|
|
30
|
-
* cd apps/server && node scripts/generate-brand-assets.cjs
|
|
31
|
-
* ```
|
|
32
|
-
* 渲染用 `@napi-rs/canvas`(本身就是本包的依赖,不再引浏览器/图形工具链)。
|
|
33
|
-
* ICO 按 PNG 载荷直出(`favicon.ico` = 6 字节头 + 每尺寸 16 字节目录项 + PNG 数据)——
|
|
34
|
-
* 现代浏览器都吃这种 ICO,且不必再引一个 ico 编码库。
|
|
35
|
-
*/
|
|
36
8
|
|
|
37
9
|
const fs = require('node:fs');
|
|
38
10
|
const path = require('node:path');
|
|
@@ -42,13 +14,6 @@ const SERVER_ROOT = path.resolve(__dirname, '..');
|
|
|
42
14
|
const COMPONENT = path.join(SERVER_ROOT, 'src/components/BrandMoon.tsx');
|
|
43
15
|
const PUBLIC_DIR = path.join(SERVER_ROOT, 'public');
|
|
44
16
|
|
|
45
|
-
/**
|
|
46
|
-
* 从组件源码里取形状常量(TS 文件带类型注解,正则取字符串字面量即可,不必上编译器)。
|
|
47
|
-
*
|
|
48
|
-
* ★ 2026-10-13:形状**居中**这件事(墨迹包围盒居中 + 按旋转后外接矩形缩放)已经算进
|
|
49
|
-
* `BRAND_MOON_TRANSFORM`,所以这里直接把变换也读出来、原样应用到画布上——
|
|
50
|
-
* 组件与图标因此共用同一份几何,不再各写一份"月亮摆在哪儿"。
|
|
51
|
-
*/
|
|
52
17
|
function readBrandShape() {
|
|
53
18
|
const source = fs.readFileSync(COMPONENT, 'utf8');
|
|
54
19
|
const d = /BRAND_MOON_PATH\s*=\s*'([^']+)'/.exec(source)?.[1];
|
|
@@ -62,12 +27,6 @@ function readBrandShape() {
|
|
|
62
27
|
return { d, tx, ty, rotation, scale, ox, oy };
|
|
63
28
|
}
|
|
64
29
|
|
|
65
|
-
/**
|
|
66
|
-
* 把形状按 `BRAND_MOON_TRANSFORM` 套到画布上。
|
|
67
|
-
* ★ 顺序必须与 SVG 的 transform 列表一致(**左起 = 最外层**):translate → scale → translate → rotate。
|
|
68
|
-
* canvas 与 SVG 在这里的书写顺序相同,但含义相反——写反了不会报错,只会让月亮偏心
|
|
69
|
-
* (2026-10-13 实测踩过:预览图里月亮缩在左下角,而 SVG 里是对的)。
|
|
70
|
-
*/
|
|
71
30
|
function applyShape(ctx, shape, unit) {
|
|
72
31
|
ctx.translate(shape.tx * unit, shape.ty * unit);
|
|
73
32
|
ctx.scale(shape.scale * unit, shape.scale * unit);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"note": "
|
|
3
|
+
"note": "引用扫描登记:每项须有具体的测试、观察或内部用途;新增零引用或仅测试候选须独立核查,不能用登记掩盖未接入业务。",
|
|
4
4
|
"entries": [
|
|
5
5
|
{
|
|
6
6
|
"file": "apps/server/src/lib/api.ts",
|
|
@@ -27,11 +27,6 @@
|
|
|
27
27
|
"symbol": "__documentExportTest__",
|
|
28
28
|
"reason": "测试钩子(重置/探针):只有用例需要,生产不该调用"
|
|
29
29
|
},
|
|
30
|
-
{
|
|
31
|
-
"file": "apps/server/src/services/agent/artifacts.ts",
|
|
32
|
-
"symbol": "hasArtifact",
|
|
33
|
-
"reason": "观察面/查询面(口径可穷举):供用例与审计读,生产路径不直接调用"
|
|
34
|
-
},
|
|
35
30
|
{
|
|
36
31
|
"file": "apps/server/src/services/agent/eventBus.ts",
|
|
37
32
|
"symbol": "resetEventBusForTest",
|
|
@@ -136,6 +131,21 @@
|
|
|
136
131
|
"file": "apps/server/src/services/document-workflow/sourceVersionPolicy.ts",
|
|
137
132
|
"symbol": "isAuthenticatedSourceVersionPolicy",
|
|
138
133
|
"reason": "实际SourceVersionPolicy WeakSet认证状态只读测试面,验证伪造/恢复前后的真实来源权限;非模型声明或验收通过资格。"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"file": "apps/server/src/lib/i18n.ts",
|
|
137
|
+
"symbol": "getMissingTranslationKeys",
|
|
138
|
+
"reason": "读取真实翻译缺失缓存,供测试验证去重与告警;不写配置或授予产品能力。"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"file": "apps/server/src/services/agent/nodeLog.ts",
|
|
142
|
+
"symbol": "readNode",
|
|
143
|
+
"reason": "读取真实追加日志中单个节点,供持久化、更新投影与截断恢复回归核查。"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"file": "apps/server/src/services/document-workflow/detectorFixerRegistry.ts",
|
|
147
|
+
"symbol": "manualDispositionIssues",
|
|
148
|
+
"reason": "只读筛选现有检测器登记的人工核查项,验证危大分级等实际错误的处置属性;不自动授予修复或通过。"
|
|
139
149
|
}
|
|
140
150
|
],
|
|
141
151
|
"retirementUpdatedAt": "2026-10-10T18:16:44.738Z"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"note": "
|
|
2
|
+
"note": "引用扫描基线:已移除不存在的声明,零引用导出不允许新增;实际入口、公开接口及测试观察面分别核查。",
|
|
3
3
|
"generatedAt": "2026-09-29",
|
|
4
4
|
"scope": [
|
|
5
5
|
"apps/server/src",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"counts": {
|
|
9
9
|
"谁都不用": 0,
|
|
10
10
|
"半成品嫌疑": 22,
|
|
11
|
-
"封装暴露(只导出给测试)":
|
|
11
|
+
"封装暴露(只导出给测试)": 142,
|
|
12
12
|
"不可判(星号再导出)": 0
|
|
13
13
|
},
|
|
14
14
|
"roster": {
|
|
@@ -97,7 +97,6 @@
|
|
|
97
97
|
"apps/server/src/services/agent/writerLoopBlock.ts::unfixableDeclarationOf",
|
|
98
98
|
"apps/server/src/services/common/errorLogService.ts::createProcessErrorHandler",
|
|
99
99
|
"apps/server/src/services/common/safePath.ts::rejectRelativePath",
|
|
100
|
-
"apps/server/src/services/common/safePath.ts::resolveInsideOrNull",
|
|
101
100
|
"apps/server/src/services/common/serviceState.ts::getFirstStartedAt",
|
|
102
101
|
"apps/server/src/services/common/serviceState.ts::serviceStatePath",
|
|
103
102
|
"apps/server/src/services/document-core/generatedDocumentService.ts::buildResumeInitialRecord",
|
|
@@ -109,13 +108,7 @@
|
|
|
109
108
|
"apps/server/src/services/document-workflow/authoritativeValues.ts::cleanValueForm",
|
|
110
109
|
"apps/server/src/services/document-workflow/authoritativeValues.ts::stripTrailingOcrGarbage",
|
|
111
110
|
"apps/server/src/services/document-workflow/constructionBidStructure.ts::representativeTitleForPattern",
|
|
112
|
-
"apps/server/src/services/document-workflow/constructionProcessKnowledge.ts::CARD_TYPE_REPLACEMENTS",
|
|
113
|
-
"apps/server/src/services/document-workflow/constructionProcessKnowledge.ts::PROCESS_CARD_TYPE_BINDING_DEFERRED",
|
|
114
111
|
"apps/server/src/services/document-workflow/constructionProcessKnowledge.ts::STANDARDS_PENDING_CALIBRATION",
|
|
115
|
-
"apps/server/src/services/document-workflow/costModel.ts::DEFAULT_PRICE_PROVENANCE",
|
|
116
|
-
"apps/server/src/services/document-workflow/costModel.ts::DEFAULT_PRICE_TABLE",
|
|
117
|
-
"apps/server/src/services/document-workflow/costModel.ts::DETERIORATION_THRESHOLDS",
|
|
118
|
-
"apps/server/src/services/document-workflow/costModel.ts::applyDeteriorationActions",
|
|
119
112
|
"apps/server/src/services/document-workflow/costModel.ts::parsePriceOverride",
|
|
120
113
|
"apps/server/src/services/document-workflow/costModel.ts::priceEntryFor",
|
|
121
114
|
"apps/server/src/services/document-workflow/costModel.ts::priceKeyOf",
|
|
@@ -142,17 +135,11 @@
|
|
|
142
135
|
"apps/server/src/services/document-workflow/hazardBinding.ts::extractHazardParameters",
|
|
143
136
|
"apps/server/src/services/document-workflow/hazardBinding.ts::normalizeParameterValue",
|
|
144
137
|
"apps/server/src/services/document-workflow/integratedBlueprint/parse.ts::isStructuralOnlyBillFile",
|
|
145
|
-
"apps/server/src/services/document-workflow/integratedBlueprint/render.ts::AUTHORITY_DOMAIN_REGISTRY",
|
|
146
|
-
"apps/server/src/services/document-workflow/integratedBlueprint/render.ts::alignmentAnchorsForChapter",
|
|
147
|
-
"apps/server/src/services/document-workflow/integratedBlueprint/render.ts::assertAuthorityDomainChannels",
|
|
148
|
-
"apps/server/src/services/document-workflow/integratedBlueprint/render.ts::authorityDomainChannelReport",
|
|
149
138
|
"apps/server/src/services/document-workflow/llmCassette.ts::CASSETTE_PROMPT_VERSION",
|
|
150
139
|
"apps/server/src/services/document-workflow/llmCassette.ts::CassetteMissError",
|
|
151
140
|
"apps/server/src/services/document-workflow/llmCassette.ts::cassetteDir",
|
|
152
141
|
"apps/server/src/services/document-workflow/llmCassette.ts::cassetteMode",
|
|
153
|
-
"apps/server/src/services/document-workflow/llmClient.ts::flushScheduledLaunches",
|
|
154
142
|
"apps/server/src/services/document-workflow/llmClient.ts::judgeThinkingEnabled",
|
|
155
|
-
"apps/server/src/services/document-workflow/materialResidue.ts::drawingPointerPhraseHits",
|
|
156
143
|
"apps/server/src/services/document-workflow/planningArtifactCache.ts::PLANNING_ARTIFACT_CACHE_VERSION",
|
|
157
144
|
"apps/server/src/services/document-workflow/poolNoise.ts::penaltyTableHitCount",
|
|
158
145
|
"apps/server/src/services/document-workflow/promptRuleExtraction.ts::dedupePlannedSections",
|
|
@@ -161,8 +148,6 @@
|
|
|
161
148
|
"apps/server/src/services/document-workflow/structureIntegrityRules.ts::tailOrphanBlockIssues",
|
|
162
149
|
"apps/server/src/services/document-workflow/textMatch.ts::chineseTokenMatchScore",
|
|
163
150
|
"apps/server/src/services/document-workflow/textMatch.ts::chineseTokens",
|
|
164
|
-
"apps/server/src/services/knowledge/kbExportService.ts::stripCadMetadataLines",
|
|
165
|
-
"apps/server/src/services/knowledge/kbExportService.ts::trimChunkOverlap",
|
|
166
151
|
"apps/server/src/services/knowledge/kbExportService.ts::txtEntryNameFor",
|
|
167
152
|
"apps/server/src/services/knowledge/kbIndexWorkerService.ts::enqueueKnowledgeIndex",
|
|
168
153
|
"apps/server/src/services/knowledge/kbService.ts::getKnownProjectRoots",
|