entari-plugin-hyw 3.2.105__py3-none-any.whl → 3.5.0rc6__py3-none-any.whl
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.
- entari_plugin_hyw/__init__.py +120 -428
- entari_plugin_hyw/assets/card-dist/index.html +396 -0
- entari_plugin_hyw/assets/card-dist/logos/anthropic.svg +1 -0
- entari_plugin_hyw/assets/card-dist/logos/cerebras.svg +9 -0
- entari_plugin_hyw/assets/card-dist/logos/deepseek.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/gemini.svg +1 -0
- entari_plugin_hyw/assets/card-dist/logos/google.svg +1 -0
- entari_plugin_hyw/assets/card-dist/logos/grok.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/huggingface.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/microsoft.svg +15 -0
- entari_plugin_hyw/assets/card-dist/logos/minimax.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/mistral.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/nvida.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/openai.svg +1 -0
- entari_plugin_hyw/assets/card-dist/logos/openrouter.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/perplexity.svg +24 -0
- entari_plugin_hyw/assets/card-dist/logos/qwen.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/xai.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/xiaomi.png +0 -0
- entari_plugin_hyw/assets/card-dist/logos/zai.png +0 -0
- entari_plugin_hyw/assets/card-dist/vite.svg +1 -0
- entari_plugin_hyw/assets/icon/cerebras.svg +9 -0
- entari_plugin_hyw/assets/icon/huggingface.png +0 -0
- entari_plugin_hyw/assets/icon/xiaomi.png +0 -0
- entari_plugin_hyw/card-ui/.gitignore +24 -0
- entari_plugin_hyw/card-ui/README.md +5 -0
- entari_plugin_hyw/card-ui/index.html +16 -0
- entari_plugin_hyw/card-ui/package-lock.json +2342 -0
- entari_plugin_hyw/card-ui/package.json +31 -0
- entari_plugin_hyw/card-ui/public/logos/anthropic.svg +1 -0
- entari_plugin_hyw/card-ui/public/logos/cerebras.svg +9 -0
- entari_plugin_hyw/card-ui/public/logos/deepseek.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/gemini.svg +1 -0
- entari_plugin_hyw/card-ui/public/logos/google.svg +1 -0
- entari_plugin_hyw/card-ui/public/logos/grok.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/huggingface.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/microsoft.svg +15 -0
- entari_plugin_hyw/card-ui/public/logos/minimax.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/mistral.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/nvida.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/openai.svg +1 -0
- entari_plugin_hyw/card-ui/public/logos/openrouter.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/perplexity.svg +24 -0
- entari_plugin_hyw/card-ui/public/logos/qwen.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/xai.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/xiaomi.png +0 -0
- entari_plugin_hyw/card-ui/public/logos/zai.png +0 -0
- entari_plugin_hyw/card-ui/public/vite.svg +1 -0
- entari_plugin_hyw/card-ui/src/App.vue +412 -0
- entari_plugin_hyw/card-ui/src/assets/vue.svg +1 -0
- entari_plugin_hyw/card-ui/src/components/HelloWorld.vue +41 -0
- entari_plugin_hyw/card-ui/src/components/MarkdownContent.vue +386 -0
- entari_plugin_hyw/card-ui/src/components/SectionCard.vue +41 -0
- entari_plugin_hyw/card-ui/src/components/StageCard.vue +237 -0
- entari_plugin_hyw/card-ui/src/main.ts +5 -0
- entari_plugin_hyw/card-ui/src/style.css +29 -0
- entari_plugin_hyw/card-ui/src/test_regex.js +103 -0
- entari_plugin_hyw/card-ui/src/types.ts +52 -0
- entari_plugin_hyw/card-ui/tsconfig.app.json +16 -0
- entari_plugin_hyw/card-ui/tsconfig.json +7 -0
- entari_plugin_hyw/card-ui/tsconfig.node.json +26 -0
- entari_plugin_hyw/card-ui/vite.config.ts +16 -0
- entari_plugin_hyw/{core/history.py → history.py} +25 -1
- entari_plugin_hyw/image_cache.py +274 -0
- entari_plugin_hyw/{utils/misc.py → misc.py} +38 -3
- entari_plugin_hyw/pipeline.py +1338 -0
- entari_plugin_hyw/prompts.py +108 -0
- entari_plugin_hyw/render_vue.py +314 -0
- entari_plugin_hyw/search.py +696 -0
- entari_plugin_hyw-3.5.0rc6.dist-info/METADATA +116 -0
- entari_plugin_hyw-3.5.0rc6.dist-info/RECORD +88 -0
- entari_plugin_hyw/assets/libs/highlight.css +0 -10
- entari_plugin_hyw/assets/libs/highlight.js +0 -1213
- entari_plugin_hyw/assets/libs/katex-auto-render.js +0 -1
- entari_plugin_hyw/assets/libs/katex.css +0 -1
- entari_plugin_hyw/assets/libs/katex.js +0 -1
- entari_plugin_hyw/assets/libs/tailwind.css +0 -1
- entari_plugin_hyw/assets/tailwind.config.js +0 -12
- entari_plugin_hyw/assets/tailwind.input.css +0 -235
- entari_plugin_hyw/assets/template.html +0 -157
- entari_plugin_hyw/core/__init__.py +0 -0
- entari_plugin_hyw/core/config.py +0 -36
- entari_plugin_hyw/core/hyw.py +0 -41
- entari_plugin_hyw/core/pipeline.py +0 -816
- entari_plugin_hyw/core/render.py +0 -926
- entari_plugin_hyw/utils/__init__.py +0 -3
- entari_plugin_hyw/utils/browser.py +0 -61
- entari_plugin_hyw/utils/mcp_playwright.py +0 -128
- entari_plugin_hyw/utils/playwright_tool.py +0 -46
- entari_plugin_hyw/utils/prompts.py +0 -91
- entari_plugin_hyw/utils/search.py +0 -193
- entari_plugin_hyw-3.2.105.dist-info/METADATA +0 -141
- entari_plugin_hyw-3.2.105.dist-info/RECORD +0 -42
- {entari_plugin_hyw-3.2.105.dist-info → entari_plugin_hyw-3.5.0rc6.dist-info}/WHEEL +0 -0
- {entari_plugin_hyw-3.2.105.dist-info → entari_plugin_hyw-3.5.0rc6.dist-info}/top_level.txt +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-bottom:1rem;margin-top:1rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.\!mb-0{margin-bottom:0!important}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-0\.5{margin-left:.125rem}.mt-0\.5{margin-top:.125rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.box-border{box-sizing:border-box}.line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-2{height:.5rem}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.w-2{width:.5rem}.w-3{width:.75rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.max-w-\[450px\]{max-width:450px}.max-w-\[60\%\]{max-width:60%}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-default{cursor:default}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-hidden{overflow-y:hidden}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.\!border-none{border-style:none!important}.border-blue-100{--tw-border-opacity:1;border-color:rgb(219 234 254/var(--tw-border-opacity,1))}.border-cyan-100{--tw-border-opacity:1;border-color:rgb(207 250 254/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-green-100{--tw-border-opacity:1;border-color:rgb(220 252 231/var(--tw-border-opacity,1))}.border-orange-100{--tw-border-opacity:1;border-color:rgb(255 237 213/var(--tw-border-opacity,1))}.border-pink-100{--tw-border-opacity:1;border-color:rgb(252 231 243/var(--tw-border-opacity,1))}.border-purple-100{--tw-border-opacity:1;border-color:rgb(243 232 255/var(--tw-border-opacity,1))}.\!bg-transparent{background-color:transparent!important}.bg-\[\#f2f2f2\]{--tw-bg-opacity:1;background-color:rgb(242 242 242/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgb(253 242 248/var(--tw-bg-opacity,1))}.bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity,1))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/60{background-color:hsla(0,0%,100%,.6)}.bg-white\/80{background-color:hsla(0,0%,100%,.8)}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-pink-300{--tw-gradient-from:#f9a8d4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,168,212,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-pink-200{--tw-gradient-to:#fbcfe8 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.\!p-0{padding:0!important}.p-0{padding:0}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.\!pb-0{padding-bottom:0!important}.pb-3{padding-bottom:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-7{padding-left:1.75rem}.pr-2{padding-right:.5rem}.text-left{text-align:left}.font-mono{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.font-sans{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-7{line-height:1.75rem}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.tracking-wide{letter-spacing:.025em}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-inherit{color:inherit}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity,1))}.text-pink-600{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1))}.text-pink-700{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.decoration-pink-300{text-decoration-color:#f9a8d4}.underline-offset-2{text-underline-offset:2px}.\!shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}pre::-webkit-scrollbar{background-color:transparent;height:8px}pre::-webkit-scrollbar-thumb{background-color:hsla(0,0%,100%,.2);border-radius:4px}.markdown-body h1{border-bottom-width:1px;margin-bottom:1rem;margin-top:1.5rem;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1));font-size:1.5rem;font-weight:700;line-height:2rem;padding-bottom:.5rem;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.markdown-body h2{font-size:1.25rem;margin-bottom:.75rem;margin-top:1.25rem}.markdown-body h2,.markdown-body h3{font-weight:700;line-height:1.75rem;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.markdown-body h3{font-size:1.125rem;margin-bottom:.5rem;margin-top:1rem}.markdown-body h4{font-size:1rem;font-weight:700;line-height:1.5rem;margin-bottom:.5rem;margin-top:.75rem;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.markdown-body p{line-height:1.75rem;margin-bottom:1rem;--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.markdown-body ul{list-style-type:disc;margin-bottom:1rem}.markdown-body ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.markdown-body ul{padding-left:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.markdown-body ol{list-style-type:decimal;margin-bottom:1rem}.markdown-body ol>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.markdown-body ol{padding-left:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.markdown-body li{padding-left:.25rem}.markdown-body li>p{margin-bottom:.25rem}.markdown-body a{--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1));text-decoration-color:#f9a8d4;text-decoration-line:underline;text-underline-offset:2px;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.markdown-body a:hover{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity,1));text-decoration-color:#be185d}.markdown-body blockquote{border-bottom-right-radius:.25rem;border-left-width:4px;border-top-right-radius:.25rem;margin-bottom:1rem;margin-top:1rem;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1));font-style:italic;padding:.5rem .5rem .5rem 1rem;--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hljs-built_in,.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#db2777!important}.hljs-addition,.hljs-attribute,.hljs-literal,.hljs-section,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type{color:#d97706!important}.hljs-comment,.hljs-deletion,.hljs-meta,.hljs-quote{color:#9ca3af!important}.hljs-bullet,.hljs-number,.hljs-symbol{color:#ea580c!important}.hljs-doctag,.hljs-keyword,.hljs-literal,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-strong,.hljs-title,.hljs-type{font-weight:700}.markdown-body code{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1));font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem;line-height:1.25rem;padding:.125rem .375rem;--tw-text-opacity:1;color:rgb(219 39 119/var(--tw-text-opacity,1))}.markdown-body pre{border-radius:.5rem;border-width:1px;margin-bottom:1rem;overflow-x:auto;--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));font-size:.875rem;line-height:1.25rem;line-height:1.5;padding:1rem;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.markdown-body pre code{background-color:transparent;border-style:none;padding:0;--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.markdown-body img{border-radius:.5rem;border-width:1px;height:auto;margin-bottom:1rem;margin-top:1rem;max-width:60%;--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1));--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.markdown-body table{border-collapse:collapse;font-size:.875rem;line-height:1.25rem;margin-bottom:1rem;width:100%}.markdown-body th{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1));font-weight:600;text-align:left;--tw-text-opacity:1}.markdown-body td,.markdown-body th{border-color:rgb(209 213 219/var(--tw-border-opacity,1));border-width:1px;color:rgb(55 65 81/var(--tw-text-opacity,1));padding:.5rem 1rem}.markdown-body td{--tw-border-opacity:1;--tw-text-opacity:1}.markdown-body hr{margin-bottom:1.5rem;margin-top:1.5rem;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.markdown-body>:last-child{margin-bottom:0}.katex-display{overflow-x:auto;overflow-y:hidden;padding-bottom:.5rem;padding-top:.5rem}.mermaid{border-radius:.5rem;border-width:1px;display:flex;justify-content:center;margin-bottom:1rem;margin-top:1rem;--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1));padding:1rem}.citation-ref{align-items:center;background-color:#fdf2f8;border:1px solid #fce7f3;border-radius:9999px;box-shadow:none!important;color:#db2777;cursor:pointer;display:inline-flex;font-size:.75em;font-weight:700;height:1.4em;justify-content:center;line-height:1;margin-left:2px;position:relative;text-decoration:none!important;transition:all .2s;vertical-align:super;width:1.4em}.citation-ref:hover{background-color:#db2777;color:#fff;text-decoration:none!important}.citation-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:8px;bottom:100%;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);color:#374151;font-size:12px;font-weight:400;left:50%;line-height:1.4;margin-bottom:8px;max-width:300px;opacity:0;padding:8px 12px;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition:all .2s;visibility:hidden;width:-moz-max-content;width:max-content;z-index:50}.citation-ref:hover .citation-tooltip{opacity:1;transform:translateX(-50%) translateY(-4px);visibility:visible}.citation-tooltip-title{color:#111827;display:block;font-weight:600;margin-bottom:2px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.citation-tooltip-url{align-items:center;color:#6b7280;display:flex;font-size:10px;gap:4px}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:text-pink-700:hover{--tw-text-opacity:1;color:rgb(190 24 93/var(--tw-text-opacity,1))}.hover\:decoration-pink-700:hover{text-decoration-color:#be185d}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.hover\:shadow-md:hover,.hover\:shadow:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
content: ["./template.html", "../core/render.py"],
|
|
3
|
-
theme: {
|
|
4
|
-
extend: {
|
|
5
|
-
fontFamily: {
|
|
6
|
-
sans: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'],
|
|
7
|
-
mono: ['SFMono-Regular', 'Consolas', 'Liberation Mono', 'Menlo', 'monospace'],
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
plugins: [],
|
|
12
|
-
}
|
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
@tailwind base;
|
|
2
|
-
@tailwind components;
|
|
3
|
-
@tailwind utilities;
|
|
4
|
-
|
|
5
|
-
/* Custom scrollbar for code blocks */
|
|
6
|
-
pre::-webkit-scrollbar {
|
|
7
|
-
height: 8px;
|
|
8
|
-
background-color: transparent;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
pre::-webkit-scrollbar-thumb {
|
|
12
|
-
background-color: rgba(255, 255, 255, 0.2);
|
|
13
|
-
border-radius: 4px;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/* Markdown Styles Override/Enhancement */
|
|
17
|
-
.markdown-body h1 {
|
|
18
|
-
@apply text-2xl font-bold mt-6 mb-4 text-gray-800 border-b border-gray-200 pb-2;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.markdown-body h2 {
|
|
22
|
-
@apply text-xl font-bold mt-5 mb-3 text-gray-800;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.markdown-body h3 {
|
|
26
|
-
@apply text-lg font-bold mt-4 mb-2 text-gray-800;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.markdown-body h4 {
|
|
30
|
-
@apply text-base font-bold mt-3 mb-2 text-gray-800;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.markdown-body p {
|
|
34
|
-
@apply mb-4 leading-7 text-gray-700;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.markdown-body ul {
|
|
38
|
-
@apply list-disc pl-5 mb-4 space-y-1 text-gray-700;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.markdown-body ol {
|
|
42
|
-
@apply list-decimal pl-5 mb-4 space-y-1 text-gray-700;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.markdown-body li {
|
|
46
|
-
@apply pl-1;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.markdown-body li>p {
|
|
50
|
-
@apply mb-1;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.markdown-body a {
|
|
54
|
-
@apply text-pink-600 underline decoration-pink-300 underline-offset-2 hover:text-pink-700 hover:decoration-pink-700 transition-colors;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.markdown-body blockquote {
|
|
58
|
-
@apply border-l-4 border-gray-300 pl-4 italic text-gray-600 my-4 bg-gray-50 py-2 pr-2 rounded-r;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Code Highlight Customization (Pink & Warm Theme) */
|
|
62
|
-
.hljs-keyword,
|
|
63
|
-
.hljs-selector-tag,
|
|
64
|
-
.hljs-built_in,
|
|
65
|
-
.hljs-name,
|
|
66
|
-
.hljs-tag {
|
|
67
|
-
color: #db2777 !important;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/* pink-600 */
|
|
71
|
-
.hljs-string,
|
|
72
|
-
.hljs-title,
|
|
73
|
-
.hljs-section,
|
|
74
|
-
.hljs-attribute,
|
|
75
|
-
.hljs-literal,
|
|
76
|
-
.hljs-template-tag,
|
|
77
|
-
.hljs-template-variable,
|
|
78
|
-
.hljs-type,
|
|
79
|
-
.hljs-addition {
|
|
80
|
-
color: #d97706 !important;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/* amber-600 */
|
|
84
|
-
.hljs-comment,
|
|
85
|
-
.hljs-quote,
|
|
86
|
-
.hljs-deletion,
|
|
87
|
-
.hljs-meta {
|
|
88
|
-
color: #9ca3af !important;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/* gray-400 */
|
|
92
|
-
.hljs-number,
|
|
93
|
-
.hljs-symbol,
|
|
94
|
-
.hljs-bullet {
|
|
95
|
-
color: #ea580c !important;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/* orange-600 */
|
|
99
|
-
.hljs-keyword,
|
|
100
|
-
.hljs-selector-tag,
|
|
101
|
-
.hljs-literal,
|
|
102
|
-
.hljs-title,
|
|
103
|
-
.hljs-section,
|
|
104
|
-
.hljs-doctag,
|
|
105
|
-
.hljs-type,
|
|
106
|
-
.hljs-name,
|
|
107
|
-
.hljs-strong {
|
|
108
|
-
font-weight: bold;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.markdown-body code {
|
|
112
|
-
@apply bg-gray-100 px-1.5 py-0.5 rounded text-sm font-mono text-pink-600;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.markdown-body pre {
|
|
116
|
-
@apply bg-white p-4 rounded-lg overflow-x-auto mb-4 text-sm leading-normal border border-gray-100 shadow-sm;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
.markdown-body pre code {
|
|
120
|
-
@apply bg-transparent p-0 text-gray-800 border-none;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.markdown-body img {
|
|
124
|
-
@apply max-w-[60%] h-auto rounded-lg my-4 shadow-sm border border-gray-100;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.markdown-body table {
|
|
128
|
-
@apply w-full border-collapse mb-4 text-sm;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
.markdown-body th {
|
|
132
|
-
@apply border border-gray-300 px-4 py-2 bg-gray-50 font-semibold text-left text-gray-700;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.markdown-body td {
|
|
136
|
-
@apply border border-gray-300 px-4 py-2 text-gray-700;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
.markdown-body hr {
|
|
140
|
-
@apply my-6 border-gray-200;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
.markdown-body>*:last-child {
|
|
144
|
-
@apply mb-0;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/* KaTeX adjustments */
|
|
148
|
-
.katex-display {
|
|
149
|
-
@apply overflow-x-auto overflow-y-hidden py-2;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/* Mermaid adjustments */
|
|
153
|
-
.mermaid {
|
|
154
|
-
@apply flex justify-center my-4 bg-gray-50 p-4 rounded-lg border border-gray-100;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/* Citation Styles */
|
|
158
|
-
.citation-ref {
|
|
159
|
-
display: inline-flex;
|
|
160
|
-
align-items: center;
|
|
161
|
-
justify-content: center;
|
|
162
|
-
vertical-align: super;
|
|
163
|
-
font-size: 0.75em;
|
|
164
|
-
font-weight: bold;
|
|
165
|
-
color: #db2777;
|
|
166
|
-
background-color: #fdf2f8;
|
|
167
|
-
border: 1px solid #fce7f3;
|
|
168
|
-
border-radius: 9999px;
|
|
169
|
-
width: 1.4em;
|
|
170
|
-
height: 1.4em;
|
|
171
|
-
margin-left: 2px;
|
|
172
|
-
cursor: pointer;
|
|
173
|
-
text-decoration: none !important;
|
|
174
|
-
transition: all 0.2s;
|
|
175
|
-
position: relative;
|
|
176
|
-
line-height: 1;
|
|
177
|
-
box-shadow: none !important;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.citation-ref:hover {
|
|
181
|
-
background-color: #db2777;
|
|
182
|
-
color: white;
|
|
183
|
-
text-decoration: none !important;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
.citation-tooltip {
|
|
187
|
-
position: absolute;
|
|
188
|
-
bottom: 100%;
|
|
189
|
-
left: 50%;
|
|
190
|
-
transform: translateX(-50%);
|
|
191
|
-
margin-bottom: 8px;
|
|
192
|
-
background: white;
|
|
193
|
-
border: 1px solid #e5e7eb;
|
|
194
|
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
195
|
-
border-radius: 8px;
|
|
196
|
-
padding: 8px 12px;
|
|
197
|
-
width: max-content;
|
|
198
|
-
max-width: 300px;
|
|
199
|
-
z-index: 50;
|
|
200
|
-
opacity: 0;
|
|
201
|
-
visibility: hidden;
|
|
202
|
-
transition: all 0.2s;
|
|
203
|
-
pointer-events: none;
|
|
204
|
-
font-size: 12px;
|
|
205
|
-
line-height: 1.4;
|
|
206
|
-
color: #374151;
|
|
207
|
-
text-align: left;
|
|
208
|
-
font-weight: normal;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.citation-ref:hover .citation-tooltip {
|
|
212
|
-
opacity: 1;
|
|
213
|
-
visibility: visible;
|
|
214
|
-
transform: translateX(-50%) translateY(-4px);
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
.citation-tooltip-title {
|
|
219
|
-
font-weight: 600;
|
|
220
|
-
color: #111827;
|
|
221
|
-
margin-bottom: 2px;
|
|
222
|
-
display: block;
|
|
223
|
-
white-space: nowrap;
|
|
224
|
-
overflow: hidden;
|
|
225
|
-
text-overflow: ellipsis;
|
|
226
|
-
max-width: 280px;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.citation-tooltip-url {
|
|
230
|
-
color: #6b7280;
|
|
231
|
-
font-size: 10px;
|
|
232
|
-
display: flex;
|
|
233
|
-
align-items: center;
|
|
234
|
-
gap: 4px;
|
|
235
|
-
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>Entari Render</title>
|
|
8
|
-
<!-- @formatter:off -->
|
|
9
|
-
<!-- prettier-ignore -->
|
|
10
|
-
<!-- IMPORTANT: Asset placeholders MUST be {{ name }} on single line! -->
|
|
11
|
-
<style>
|
|
12
|
-
{
|
|
13
|
-
{
|
|
14
|
-
tailwind_css
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
</style>
|
|
18
|
-
<style>
|
|
19
|
-
{
|
|
20
|
-
{
|
|
21
|
-
highlight_css
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
</style>
|
|
25
|
-
<script>{ { highlight_js } }</script>
|
|
26
|
-
<style>
|
|
27
|
-
{
|
|
28
|
-
{
|
|
29
|
-
katex_css
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
</style>
|
|
33
|
-
<script>{ { katex_js } }</script>
|
|
34
|
-
<script>{ { katex_auto_render_js } }</script>
|
|
35
|
-
<!-- @formatter:on -->
|
|
36
|
-
<style>
|
|
37
|
-
#markdown-content h1,
|
|
38
|
-
#markdown-content h2,
|
|
39
|
-
#markdown-content h3,
|
|
40
|
-
#markdown-content h4,
|
|
41
|
-
#markdown-content h5,
|
|
42
|
-
#markdown-content h6 {
|
|
43
|
-
color: #db2777;
|
|
44
|
-
/* text-pink-600 */
|
|
45
|
-
}
|
|
46
|
-
</style>
|
|
47
|
-
</head>
|
|
48
|
-
|
|
49
|
-
<body class="bg-[#f2f2f2] p-0 box-border m-0 font-sans text-gray-800">
|
|
50
|
-
<div id="main-container" class="w-full max-w-[450px] flex flex-col gap-4 mx-auto bg-[#f2f2f2] p-0 font-sans h-fit">
|
|
51
|
-
<!-- Response Card (Content First) -->
|
|
52
|
-
<div class="bg-[#f2f2f2] rounded-2xl p-5 overflow-hidden">
|
|
53
|
-
<div id="markdown-content" class="markdown-body text-[15px] leading-relaxed text-gray-800">
|
|
54
|
-
{{ content_html }}
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<!-- Speculation Card (Optional) -->
|
|
61
|
-
{{ suggestions }}
|
|
62
|
-
|
|
63
|
-
<!-- Model Header (Moved to Bottom) -->
|
|
64
|
-
<div class="bg-[#f2f2f2] rounded-2xl p-5 overflow-hidden">
|
|
65
|
-
{{ response_header }}
|
|
66
|
-
<!-- Pipeline Stages -->
|
|
67
|
-
{{ stages }}
|
|
68
|
-
</div>
|
|
69
|
-
|
|
70
|
-
<!-- Stats Footer -->
|
|
71
|
-
{{ stats }}
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
<script>window.REFERENCES = {{ references_json }};</script>
|
|
75
|
-
|
|
76
|
-
<script>
|
|
77
|
-
document.addEventListener("DOMContentLoaded", () => {
|
|
78
|
-
// Render Math (KaTeX)
|
|
79
|
-
const contentDiv = document.getElementById("markdown-content");
|
|
80
|
-
renderMathInElement(contentDiv, {
|
|
81
|
-
delimiters: [
|
|
82
|
-
{ left: "$$", right: "$$", display: true },
|
|
83
|
-
{ left: "$", right: "$", display: false },
|
|
84
|
-
{ left: "\\(", right: "\\)", display: false },
|
|
85
|
-
{ left: "\\[", right: "\\]", display: true }
|
|
86
|
-
],
|
|
87
|
-
throwOnError: false
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
// Process Citations
|
|
91
|
-
function processCitations(rootNode) {
|
|
92
|
-
const walker = document.createTreeWalker(
|
|
93
|
-
rootNode,
|
|
94
|
-
NodeFilter.SHOW_TEXT,
|
|
95
|
-
null,
|
|
96
|
-
false
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
const nodesToReplace = [];
|
|
100
|
-
let node;
|
|
101
|
-
while (node = walker.nextNode()) {
|
|
102
|
-
if (node.parentElement.tagName === "SCRIPT" || node.parentElement.tagName === "STYLE" || node.parentElement.tagName === "A") continue;
|
|
103
|
-
if (/\[\d+\]/.test(node.nodeValue)) {
|
|
104
|
-
nodesToReplace.push(node);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
nodesToReplace.forEach(textNode => {
|
|
109
|
-
const fragment = document.createDocumentFragment();
|
|
110
|
-
let lastIndex = 0;
|
|
111
|
-
const text = textNode.nodeValue;
|
|
112
|
-
const regex = /\[(\d+)\]/g;
|
|
113
|
-
let match;
|
|
114
|
-
|
|
115
|
-
while ((match = regex.exec(text)) !== null) {
|
|
116
|
-
fragment.appendChild(document.createTextNode(text.substring(lastIndex, match.index)));
|
|
117
|
-
|
|
118
|
-
const id = match[1];
|
|
119
|
-
const ref = window.REFERENCES ? window.REFERENCES.find(r => r.id == id) : null;
|
|
120
|
-
|
|
121
|
-
if (ref) {
|
|
122
|
-
const span = document.createElement("span");
|
|
123
|
-
const title = ref.title.replace(/"/g, """);
|
|
124
|
-
const url = ref.url;
|
|
125
|
-
let domain = "unknown";
|
|
126
|
-
try { domain = new URL(url).hostname; } catch (e) { }
|
|
127
|
-
const favicon = `https://www.google.com/s2/favicons?domain=${domain}&sz=32`;
|
|
128
|
-
|
|
129
|
-
span.innerHTML = `<a href="${url}" target="_blank" class="citation-ref" data-id="${id}">
|
|
130
|
-
${id}
|
|
131
|
-
<span class="citation-tooltip">
|
|
132
|
-
<span class="citation-tooltip-title">${title}</span>
|
|
133
|
-
<span class="citation-tooltip-url">
|
|
134
|
-
<img src="${favicon}" style="width:12px;height:12px;vertical-align:middle;margin-right:4px;">
|
|
135
|
-
${domain}
|
|
136
|
-
</span>
|
|
137
|
-
</span>
|
|
138
|
-
</a>`;
|
|
139
|
-
fragment.appendChild(span.firstElementChild);
|
|
140
|
-
} else {
|
|
141
|
-
fragment.appendChild(document.createTextNode(match[0]));
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
lastIndex = regex.lastIndex;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
fragment.appendChild(document.createTextNode(text.substring(lastIndex)));
|
|
148
|
-
textNode.parentNode.replaceChild(fragment, textNode);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
processCitations(contentDiv);
|
|
153
|
-
});
|
|
154
|
-
</script>
|
|
155
|
-
</body>
|
|
156
|
-
|
|
157
|
-
</html>
|
|
File without changes
|
entari_plugin_hyw/core/config.py
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
|
-
from typing import Optional, Dict, Any, List
|
|
3
|
-
|
|
4
|
-
@dataclass
|
|
5
|
-
class HYWConfig:
|
|
6
|
-
api_key: str
|
|
7
|
-
model_name: str
|
|
8
|
-
vision_model_name: Optional[str] = None
|
|
9
|
-
vision_api_key: Optional[str] = None
|
|
10
|
-
vision_base_url: Optional[str] = None
|
|
11
|
-
base_url: str = "https://openrouter.ai/api/v1"
|
|
12
|
-
fusion_mode: bool = False
|
|
13
|
-
save_conversation: bool = False
|
|
14
|
-
headless: bool = True
|
|
15
|
-
intruct_model_name: Optional[str] = None
|
|
16
|
-
intruct_api_key: Optional[str] = None
|
|
17
|
-
intruct_base_url: Optional[str] = None
|
|
18
|
-
search_base_url: str = "https://duckduckgo.com/?q={query}&format=json&results_per_page={limit}"
|
|
19
|
-
image_search_base_url: str = "https://duckduckgo.com/?q={query}&iax=images&ia=images&format=json&results_per_page={limit}"
|
|
20
|
-
extra_body: Optional[Dict[str, Any]] = None
|
|
21
|
-
temperature: float = 0.4
|
|
22
|
-
max_turns: int = 10
|
|
23
|
-
icon: str = "openai" # logo for primary model
|
|
24
|
-
vision_icon: Optional[str] = None # logo for vision model (falls back to icon when absent)
|
|
25
|
-
enable_browser_fallback: bool = False
|
|
26
|
-
vision_system_prompt: Optional[str] = None
|
|
27
|
-
intruct_system_prompt: Optional[str] = None
|
|
28
|
-
agent_system_prompt: Optional[str] = None
|
|
29
|
-
playwright_mcp_command: str = "npx"
|
|
30
|
-
playwright_mcp_args: Optional[List[str]] = None
|
|
31
|
-
input_price: Optional[float] = None # $ per 1M input tokens
|
|
32
|
-
output_price: Optional[float] = None # $ per 1M output tokens
|
|
33
|
-
vision_input_price: Optional[float] = None
|
|
34
|
-
vision_output_price: Optional[float] = None
|
|
35
|
-
intruct_input_price: Optional[float] = None
|
|
36
|
-
intruct_output_price: Optional[float] = None
|
entari_plugin_hyw/core/hyw.py
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
from typing import Any, Dict, List, Optional
|
|
2
|
-
from loguru import logger
|
|
3
|
-
from .config import HYWConfig
|
|
4
|
-
from .pipeline import ProcessingPipeline
|
|
5
|
-
|
|
6
|
-
class HYW:
|
|
7
|
-
"""
|
|
8
|
-
V2 Core Wrapper (Facade).
|
|
9
|
-
Delegates all logic to ProcessingPipeline.
|
|
10
|
-
Ensures safe lifecycle management.
|
|
11
|
-
"""
|
|
12
|
-
def __init__(self, config: HYWConfig):
|
|
13
|
-
self.config = config
|
|
14
|
-
self.pipeline = ProcessingPipeline(config)
|
|
15
|
-
logger.info(f"HYW V2 (Ironclad) initialized - Model: {config.model_name}")
|
|
16
|
-
|
|
17
|
-
async def agent(self, user_input: str, conversation_history: List[Dict] = None, images: List[str] = None,
|
|
18
|
-
selected_model: str = None, selected_vision_model: str = None, local_mode: bool = False) -> Dict[str, Any]:
|
|
19
|
-
"""
|
|
20
|
-
Main entry point for the plugin (called by __init__.py).
|
|
21
|
-
"""
|
|
22
|
-
# Note: 'images' handling is skipped for V2 initial stability MVP as per user focus on 'search hangs'.
|
|
23
|
-
# We can re-integrate vision later, but for now we focus on Text/Search stability.
|
|
24
|
-
|
|
25
|
-
# Delegate completely to pipeline
|
|
26
|
-
result = await self.pipeline.execute(
|
|
27
|
-
user_input,
|
|
28
|
-
conversation_history or [],
|
|
29
|
-
model_name=selected_model,
|
|
30
|
-
images=images,
|
|
31
|
-
selected_vision_model=selected_vision_model,
|
|
32
|
-
)
|
|
33
|
-
return result
|
|
34
|
-
|
|
35
|
-
async def close(self):
|
|
36
|
-
"""Explicit async close method. NO __del__."""
|
|
37
|
-
if self.pipeline:
|
|
38
|
-
await self.pipeline.close()
|
|
39
|
-
|
|
40
|
-
# Legacy Compatibility (optional attributes just to prevent blind attribute errors if referenced externally)
|
|
41
|
-
# in V2 we strongly discourage accessing internal tools directly.
|