@bluelibs/runner-dev 4.0.0 → 4.1.1
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/AI.md +72 -2
- package/README.md +132 -11
- package/dist/cli/overview.d.ts +3 -0
- package/dist/cli/overview.js +260 -0
- package/dist/cli/overview.js.map +1 -0
- package/dist/cli/ping.d.ts +3 -0
- package/dist/cli/ping.js +62 -0
- package/dist/cli/ping.js.map +1 -0
- package/dist/cli/query.d.ts +3 -0
- package/dist/cli/query.js +84 -0
- package/dist/cli/query.js.map +1 -0
- package/dist/cli/schema.d.ts +3 -0
- package/dist/cli/schema.js +71 -0
- package/dist/cli/schema.js.map +1 -0
- package/dist/cli/shared.d.ts +18 -0
- package/dist/cli/shared.js +158 -0
- package/dist/cli/shared.js.map +1 -0
- package/dist/cli.js +27 -24
- package/dist/cli.js.map +1 -1
- package/dist/components/Documentation/Documentation.d.ts +2 -2
- package/dist/components/Documentation/Documentation.js.map +1 -1
- package/dist/components/Documentation/components/DiagnosticsPanel.d.ts +2 -2
- package/dist/components/Documentation/components/DiagnosticsPanel.js +163 -100
- package/dist/components/Documentation/components/DiagnosticsPanel.js.map +1 -1
- package/dist/components/Documentation/components/EventCard.d.ts +3 -3
- package/dist/components/Documentation/components/EventCard.js +248 -122
- package/dist/components/Documentation/components/EventCard.js.map +1 -1
- package/dist/components/Documentation/components/HookCard.d.ts +3 -3
- package/dist/components/Documentation/components/HookCard.js +257 -86
- package/dist/components/Documentation/components/HookCard.js.map +1 -1
- package/dist/components/Documentation/components/MiddlewareCard.d.ts +3 -3
- package/dist/components/Documentation/components/MiddlewareCard.js +286 -131
- package/dist/components/Documentation/components/MiddlewareCard.js.map +1 -1
- package/dist/components/Documentation/components/ResourceCard.d.ts +3 -3
- package/dist/components/Documentation/components/ResourceCard.js +202 -68
- package/dist/components/Documentation/components/ResourceCard.js.map +1 -1
- package/dist/components/Documentation/components/Sidebar.d.ts +3 -3
- package/dist/components/Documentation/components/Sidebar.js +137 -101
- package/dist/components/Documentation/components/Sidebar.js.map +1 -1
- package/dist/components/Documentation/components/TagCard.d.ts +1 -1
- package/dist/components/Documentation/components/TaskCard.d.ts +3 -3
- package/dist/components/Documentation/components/TaskCard.js +176 -57
- package/dist/components/Documentation/components/TaskCard.js.map +1 -1
- package/dist/components/ExampleComponent.d.ts +2 -2
- package/dist/components/ExampleComponent.js +72 -31
- package/dist/components/ExampleComponent.js.map +1 -1
- package/dist/generated/resolvers-types.d.ts +52 -35
- package/dist/index.d.ts +7 -6
- package/dist/mcp/projectOverview.js +1 -1
- package/dist/project-writer/AIModel.d.ts +29 -0
- package/dist/project-writer/AIModel.js +48 -0
- package/dist/project-writer/AIModel.js.map +1 -0
- package/dist/resources/dev.resource.js +6 -0
- package/dist/resources/dev.resource.js.map +1 -1
- package/dist/resources/docs.generator.resource.d.ts +1 -1
- package/dist/resources/docs.generator.resource.js +1 -1
- package/dist/resources/docs.generator.resource.js.map +1 -1
- package/dist/resources/docs.route.d.ts +23 -0
- package/dist/resources/docs.route.js +73 -0
- package/dist/resources/docs.route.js.map +1 -0
- package/dist/resources/getFileContents.task.d.ts +17 -0
- package/dist/resources/getFileContents.task.js +44 -0
- package/dist/resources/getFileContents.task.js.map +1 -0
- package/dist/resources/graphql.query.task.d.ts +41 -0
- package/dist/resources/graphql.query.task.js +53 -0
- package/dist/resources/graphql.query.task.js.map +1 -0
- package/dist/resources/http.tag.d.ts +5 -0
- package/dist/resources/http.tag.js +8 -0
- package/dist/resources/http.tag.js.map +1 -0
- package/dist/resources/introspector.resource.d.ts +1 -126
- package/dist/resources/introspector.resource.js +5 -253
- package/dist/resources/introspector.resource.js.map +1 -1
- package/dist/resources/introspector.tools.d.ts +1 -1
- package/dist/resources/models/Introspector.d.ts +177 -0
- package/dist/resources/models/Introspector.js +361 -0
- package/dist/resources/models/Introspector.js.map +1 -0
- package/dist/resources/models/initializeFromStore.d.ts +3 -0
- package/dist/resources/models/initializeFromStore.js +86 -0
- package/dist/resources/models/initializeFromStore.js.map +1 -0
- package/dist/resources/models/initializeFromStore.utils.d.ts +31 -0
- package/dist/resources/models/initializeFromStore.utils.js +332 -0
- package/dist/resources/models/initializeFromStore.utils.js.map +1 -0
- package/dist/resources/models/introspector.tools.d.ts +26 -0
- package/dist/resources/models/introspector.tools.js +195 -0
- package/dist/resources/models/introspector.tools.js.map +1 -0
- package/dist/resources/routeHandlers/createDocsServeHandler.d.ts +3 -0
- package/dist/resources/routeHandlers/createDocsServeHandler.js +50 -0
- package/dist/resources/routeHandlers/createDocsServeHandler.js.map +1 -0
- package/dist/resources/routeHandlers/getDocsData.d.ts +13 -0
- package/dist/resources/routeHandlers/getDocsData.js +23 -0
- package/dist/resources/routeHandlers/getDocsData.js.map +1 -0
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.d.ts +37 -0
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.js +44 -0
- package/dist/resources/routeHandlers/registerHttpRoutes.hook.js.map +1 -0
- package/dist/resources/server.resource.d.ts +4 -3
- package/dist/resources/server.resource.js +46 -34
- package/dist/resources/server.resource.js.map +1 -1
- package/dist/resources/swap.resource.d.ts +10 -3
- package/dist/resources/swap.resource.js +24 -0
- package/dist/resources/swap.resource.js.map +1 -1
- package/dist/resources/ui.static.d.ts +1 -0
- package/dist/resources/ui.static.js +44 -0
- package/dist/resources/ui.static.js.map +1 -0
- package/dist/schema/context.d.ts +3 -3
- package/dist/schema/index.d.ts +2 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/model.d.ts +11 -4
- package/dist/schema/model.js.map +1 -1
- package/dist/schema/mutation.js +22 -0
- package/dist/schema/mutation.js.map +1 -1
- package/dist/schema/query.js +9 -29
- package/dist/schema/query.js.map +1 -1
- package/dist/schema/types/AllType.js +11 -2
- package/dist/schema/types/AllType.js.map +1 -1
- package/dist/schema/types/BaseElementCommon.d.ts +1 -1
- package/dist/schema/types/BaseElementCommon.js +21 -3
- package/dist/schema/types/BaseElementCommon.js.map +1 -1
- package/dist/schema/types/HookType.js +10 -3
- package/dist/schema/types/HookType.js.map +1 -1
- package/dist/schema/types/SwapType.d.ts +1 -0
- package/dist/schema/types/SwapType.js +10 -1
- package/dist/schema/types/SwapType.js.map +1 -1
- package/dist/schema/types/TagType.d.ts +5 -2
- package/dist/schema/types/TagType.js +23 -1
- package/dist/schema/types/TagType.js.map +1 -1
- package/dist/ui/.vite/manifest.json +11 -0
- package/dist/ui/assets/docs-B_YMa-Rg.js +174 -0
- package/dist/ui/assets/docs-DVEzFAJo.css +1 -0
- package/dist/ui-test/assets/app.js +1 -0
- package/dist/ui-test/index.html +1 -0
- package/dist/utils/path.d.ts +7 -0
- package/dist/utils/path.js +43 -0
- package/dist/utils/path.js.map +1 -1
- package/dist/utils/react-ssr.d.ts +3 -1
- package/dist/utils/react-ssr.js +11 -6
- package/dist/utils/react-ssr.js.map +1 -1
- package/package.json +25 -6
- package/dist/ui/index.html +0 -20
- package/dist/ui/static/index-D-NS5aw1.js +0 -40
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.sidebar{position:fixed;left:0;top:0;width:300px;height:100vh;background:#2c3e50;color:#fff;padding:20px;overflow-y:auto;box-sizing:border-box}.sidebar__header{margin-bottom:40px}.sidebar__title{margin:0 0 20px;font-size:18px;color:#ecf0f1;border-bottom:2px solid #34495e;padding-bottom:10px}.sidebar__search{margin-bottom:20px}.sidebar__search-input{width:100%;padding:8px;border:1px solid #34495e;border-radius:4px;background:#34495e;color:#fff;font-size:14px;box-sizing:border-box}.sidebar__search-input::placeholder{color:#bdc3c7}.sidebar__search-input:focus{outline:none;border-color:#007acc;box-shadow:0 0 0 2px #3498db33}.sidebar__tag-filter{background:#007acc;padding:8px;border-radius:4px;margin-bottom:15px;display:flex;justify-content:space-between;align-items:center}.sidebar__tag-filter__label{font-size:11px}.sidebar__tag-filter__clear{background:transparent;border:none;color:#fff;cursor:pointer;padding:2px 4px;border-radius:2px;font-size:11px}.sidebar__tag-filter__clear:hover{background:#fff3}.sidebar__selected-tag{background:#007acc;padding:8px;border-radius:4px;margin-bottom:15px;display:flex;justify-content:space-between;align-items:center}.sidebar__selected-tag__label{font-size:11px}.sidebar__selected-tag__close{background:transparent;border:none;color:#fff;cursor:pointer;padding:2px 4px;border-radius:2px;font-size:11px}.sidebar__selected-tag__close:hover{background:#fff3}.sidebar__nav-item{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;margin:4px 0;border-radius:4px;cursor:pointer;transition:all .2s ease;border-left:4px solid transparent}.sidebar__nav-item--active{background:#007acc;border-left-color:#2980b9}.sidebar__nav-item:hover:not(.sidebar__nav-item--active){background:#34495e}.sidebar__nav-item__content{display:flex;align-items:center}.sidebar__nav-item__content .icon{margin-right:10px;font-size:16px}.sidebar__nav-item__content .label{font-size:14px;font-weight:500}.sidebar__nav-item__badges{display:flex;align-items:center;gap:8px}.sidebar__count-badge{color:#fff;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700;min-width:20px;text-align:center}.sidebar__count-badge--active{background:#2980b9}.sidebar__count-badge--inactive{background:#7f8c8d}.sidebar__diagnostic-badges{display:flex;gap:4px}.sidebar__diagnostic-badge{color:#fff;padding:2px 4px;border-radius:8px;font-size:10px;font-weight:700}.sidebar__diagnostic-badge--error{background:#dc3545}.sidebar__diagnostic-badge--warning{background:#ffc107}.sidebar__quick-tags{margin-top:40px}.sidebar__quick-tags__title{font-size:14px;color:#bdc3c7;margin:0 0 15px;text-transform:uppercase;letter-spacing:.5px}.sidebar__quick-tags__container{display:flex;flex-wrap:wrap;gap:4px}.sidebar__quick-tags__tag{border:none;padding:4px 8px;border-radius:8px;font-size:11px;cursor:pointer;transition:all .2s ease}.sidebar__quick-tags__tag--selected{background:#e67e22;color:#fff}.sidebar__quick-tags__tag--unselected{background:#7f8c8d;color:#fff}.sidebar__quick-tags__tag--unselected:hover{background:#95a5a6}dev{background:purple}.docs-app{font-family:Arial,sans-serif;background:#f8f9fa;min-height:100vh;display:flex}.docs-highlight-target{animation:docs-highlight-pulse 2s ease-in-out;border-radius:6px}@keyframes docs-highlight-pulse{0%{background-color:transparent;transform:scale(1)}50%{background-color:#3b82f633;transform:scale(1.02)}to{background-color:transparent;transform:scale(1)}}.docs-sidebar{position:fixed;left:0;top:0;width:280px;height:100vh;background:linear-gradient(180deg,#2c3e50,#34495e);color:#fff;padding:30px 20px;overflow-y:auto;overflow-x:auto;z-index:1000;box-shadow:4px 0 20px #0000001a;transition:width .2s ease;min-width:200px;max-width:600px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) rgba(255,255,255,.1)}.docs-sidebar::-webkit-scrollbar{width:8px;height:8px}.docs-sidebar::-webkit-scrollbar-track{background:#ffffff1a;border-radius:4px}.docs-sidebar::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:4px;transition:background .2s ease}.docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ffffff80}.docs-sidebar::-webkit-scrollbar-corner{background:#ffffff1a}.docs-nav-header{margin-bottom:40px}.docs-nav-header h2{margin:0 0 10px;font-size:20px;color:#ecf0f1;border-bottom:3px solid #007acc;padding-bottom:8px;font-weight:700}.docs-nav-header p{margin:0;font-size:14px;opacity:.8;line-height:1.4}.docs-view-controls{margin-bottom:20px}.docs-view-toggle{display:flex;gap:4px;margin-bottom:8px}.docs-view-toggle .docs-view-button{flex:1;padding:4px 8px;border:1px solid rgba(255,255,255,.2);background:#ffffff0d;color:#fffc;border-radius:6px;font-size:11px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:4px}.docs-view-toggle .docs-view-button:hover{background:#ffffff1a;color:#fff}.docs-view-toggle .docs-view-button.active{background:#007acc;border-color:#007acc;color:#fff;font-weight:600}.docs-tree-controls .docs-tree-type-select{width:100%;padding:4px 8px;border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#fff;border-radius:6px;font-size:11px;cursor:pointer}.docs-tree-controls .docs-tree-type-select:focus{outline:none;border-color:#007acc;background:#ffffff1f}.docs-tree-controls .docs-tree-type-select option{background:#2c3e50;color:#fff}.docs-tree-container{margin-bottom:25px;max-height:60vh;overflow-y:auto;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) rgba(255,255,255,.05)}.docs-tree-container::-webkit-scrollbar{width:6px;height:6px}.docs-tree-container::-webkit-scrollbar-track{background:#ffffff0d;border-radius:3px}.docs-tree-container::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.docs-tree-container::-webkit-scrollbar-thumb:hover{background:#fff6}.docs-tree-container .docs-tree-view .tree-node:hover{background-color:#ffffff1a}.docs-tree-container .docs-tree-view .tree-node--focused{background-color:#3b82f64d;outline-color:#3b82f699}.docs-tree-container .docs-tree-view .tree-node-label{color:#ffffffe6}.docs-tree-container .docs-tree-view .tree-node-count{background-color:#ffffff26;color:#fffc}.docs-tree-container .docs-tree-view .tree-expander:hover{background-color:#ffffff26}.docs-tree-container .docs-tree-view .tree-expander-icon{color:#ffffffb3}.docs-tree-container .docs-tree-view .tree-children{border-left-color:#fff3}.docs-tree-container .docs-tree-view .tree-search-highlight{background-color:#fbbf244d;color:#fbbf24}.docs-namespace-input{margin-bottom:25px;min-width:0}.docs-namespace-input label{display:block;font-size:11px;color:#fffc;margin-bottom:4px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.docs-namespace-input input{width:100%;min-width:120px;box-sizing:border-box;padding:8px 15px;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:#ffffff14;color:#fff;font-size:14px;transition:all .3s ease}.docs-namespace-input input::placeholder{color:#ffffff80}.docs-namespace-input input:focus{outline:none;border-color:#007acc;background:#ffffff1f;box-shadow:0 0 0 3px #3498db33}.docs-namespace-input input:hover{border-color:#ffffff40;background:#ffffff1a}.docs-nav-list{list-style:none;padding:0;margin:0}.docs-nav-list li{margin-bottom:8px}.docs-nav-link{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-radius:8px;text-decoration:none;color:#fff;transition:all .3s ease;background:#ffffff0d;border:1px solid transparent;white-space:nowrap;overflow:hidden}.docs-nav-link--home{background:#3498db26;border:1px solid rgba(52,152,219,.3)}.docs-nav-link:hover{background:#3498db40;border-color:#007acc;transform:translate(4px)}.docs-nav-content{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.docs-nav-content .icon{font-size:16px;flex-shrink:0}.docs-nav-content .text{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs-nav-badge{background:#3498db4d;color:#fff;padding:4px 8px;border-radius:8px;font-size:11px;font-weight:700;border:1px solid rgba(52,152,219,.5)}.docs-nav-stats{margin-top:40px;padding:20px;background:#3498db1a;border-radius:8px;border:1px solid rgba(52,152,219,.2)}.docs-nav-stats .label{font-size:11px;opacity:.7;margin-bottom:8px}.docs-nav-stats .value{font-size:18px;font-weight:700;color:#007acc}.docs-nav-stats .description{font-size:11px;opacity:.8}.docs-main-content{flex:1;padding:40px;transition:margin-left .2s ease}.docs-content-container{max-width:1200px;margin:0 auto}@keyframes gradient-animation{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.docs-header{text-align:center;margin-bottom:50px;color:#fff;padding:40px;border-radius:12px;box-shadow:0 8px 32px #007acc4d;position:relative;overflow:hidden;background:linear-gradient(-45deg,#ee7752,#e73c7e,#23a6d5,#23d5ab);background-size:400% 400%;animation:gradient-animation 15s ease infinite}.docs-header h1{margin:0 0 10px;font-size:36px;font-weight:700;position:relative;z-index:2}.docs-header p{margin:0;font-size:18px;opacity:.9;position:relative;z-index:2}.docs-header:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:radial-gradient(ellipse at center,#ffffff1a,#fff0 70%);z-index:1}.docs-section{margin-bottom:50px;scroll-margin-top:20px}.docs-section h2{font-size:28px;margin-bottom:30px;color:#2c3e50;display:flex;align-items:center;gap:8px}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:25px}.overview-grid .card{padding:30px;color:#fff;border-radius:12px;text-align:center;text-decoration:none;transition:all .4s cubic-bezier(.175,.885,.32,1.275);position:relative;overflow:hidden;cursor:pointer}.overview-grid .card:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.overview-grid .card:after{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);border-radius:50%;transform:translate(-50%,-50%);transition:all .6s ease}.overview-grid .card:hover{transform:translateY(-10px) scale(1.02);box-shadow:0 20px 40px #0003}.overview-grid .card:hover:before{left:100%}.overview-grid .card:hover:after{width:300px;height:300px}.overview-grid .card:hover h3{transform:scale(1.1)}.overview-grid .card:hover .count{transform:scale(1.2) rotateY(10deg);text-shadow:0 0 20px rgba(255,255,255,.5)}.overview-grid .card--tasks{background:linear-gradient(135deg,#007acc,#0056b3);box-shadow:0 4px 20px #007acc33}.overview-grid .card--tasks:hover{background:linear-gradient(135deg,#09f,#006fe6);box-shadow:0 20px 40px #007acc66}.overview-grid .card--resources{background:linear-gradient(135deg,#28a745,#1e7e34);box-shadow:0 4px 20px #28a74533}.overview-grid .card--resources:hover{background:linear-gradient(135deg,#34ce57,#28a745);box-shadow:0 20px 40px #28a74566}.overview-grid .card--events{background:linear-gradient(135deg,#ffc107,#e0a800);box-shadow:0 4px 20px #ffc10733}.overview-grid .card--events:hover{background:linear-gradient(135deg,#ffce3a,#ffc414);box-shadow:0 20px 40px #ffc10766}.overview-grid .card--middlewares{background:linear-gradient(135deg,#6f42c1,#563d7c);box-shadow:0 4px 20px #6f42c133}.overview-grid .card--middlewares:hover{background:linear-gradient(135deg,#8c68ce,#7143c5);box-shadow:0 20px 40px #6f42c166}.overview-grid .card--hooks{background:linear-gradient(135deg,#9c27b0,#673ab7);box-shadow:0 4px 20px #9c27b033}.overview-grid .card--hooks:hover{background:linear-gradient(135deg,#bc37d3,#9c27cd);box-shadow:0 20px 40px #9c27b066}.overview-grid .card h3{margin:0 0 15px;font-size:18px;transition:all .3s ease;position:relative;z-index:2}.overview-grid .card .count{font-size:36px;font-weight:700;transition:all .4s cubic-bezier(.175,.885,.32,1.275);position:relative;z-index:2}.docs-component-grid{display:grid;gap:30px}.docs-component-grid a{text-decoration:none}.docs-tags-grid{display:grid;gap:25px;grid-template-columns:1fr}@media (min-width: 768px){.docs-tags-grid{grid-template-columns:1fr 1fr}}@media (max-width: 767px){.docs-tags-grid{grid-template-columns:1fr}}.live-panel{background:#fff;border-radius:12px;box-shadow:0 8px 32px #007acc4d;padding:25px}.live-panel--loading,.live-panel--error{text-align:center;padding:40px}.live-panel .live-loading{font-size:18px;color:#dee2e6}.live-panel .live-error{color:#dc3545;font-size:14px;display:flex;flex-direction:column;gap:15px;align-items:center}.live-panel .live-error button{padding:8px 20px;background:#007acc;color:#fff;border:none;border-radius:6px;cursor:pointer;transition:all .3s ease}.live-panel .live-error button:hover{background:#007acc}.live-controls{display:flex;gap:15px;margin-bottom:25px;justify-content:flex-end}.live-controls button{padding:8px 20px;border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;transition:all .3s ease}.live-controls .live-toggle{background:#f8f9fa;color:#2c3e50;border:1px solid #dee2e6}.live-controls .live-toggle--active{background:#28a745;color:#fff;border-color:#28a745}.live-controls .live-toggle:hover{background:#e9ecef}.live-controls .live-toggle--active:hover{background:#1e7e34}.live-controls .live-refresh{background:#007acc;color:#fff;border:1px solid #007acc}.live-controls .live-refresh:hover{background:#005c99}.live-grid{display:grid;gap:25px;grid-template-columns:1fr}@media (min-width: 1024px){.live-grid{grid-template-columns:1fr 1fr}}.live-section{background:#f8f9fa;border-radius:8px;padding:20px;border:1px solid #dee2e6}.live-section h3{margin:0 0 20px;font-size:18px;color:#fff;font-weight:700;display:flex;align-items:center;gap:8px}.live-section h4{margin:0 0 20px}.live-section--health{grid-column:1/-1}.live-section--errors{border-left:4px solid #ff0000}.live-section--logs{border-left:4px solid #0000ff}.live-section--logs h3{color:#2c3e50}.live-section--events{border-left:4px solid #ffc107}.live-section--runs{border-left:4px solid #28a745}.health-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px}.metric{text-align:center;padding:20px;background:#fff;border-radius:6px;border:1px solid #dee2e6}.metric .metric-label{display:block;font-size:12px;color:#6c757d;margin-bottom:4px;font-weight:500}.metric .metric-value{display:block;font-size:18px;font-weight:700;color:#2c3e50;margin-bottom:4px}.metric .metric-detail{font-size:11px;color:#6c757d}.live-entries{max-height:300px;overflow-y:auto;overflow-x:auto;border:1px solid #dee2e6;border-radius:6px;background:#fff;scrollbar-width:thin;scrollbar-color:#dee2e6 #f8f9fa}.live-entries::-webkit-scrollbar{width:8px;height:8px}.live-entries::-webkit-scrollbar-track{background:#f8f9fa;border-radius:4px}.live-entries::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:4px;transition:background .2s ease}.live-entries::-webkit-scrollbar-thumb:hover{background:#adb5bd}.live-entry{padding:8px 15px;border-bottom:1px solid #f8f9fa;font-size:12px;line-height:1.4;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.live-entry:last-child{border-bottom:none}.live-entry--log{background:#3498db05}.live-entry--error{background:#dc354505}.live-entry--emission{background:#ffc10705}.live-entry--run{background:#28a74505}.live-entry--success{border-left:3px solid #28a745}.live-entry--failure{border-left:3px solid #ff0000}.live-entry .entry-time{font-family:monospace;color:#6c757d;font-size:11px;min-width:80px}.live-entry .entry-level{font-weight:700;font-size:11px;padding:2px 6px;border-radius:3px;background:#0000000d}.live-entry .entry-message,.live-entry .entry-event,.live-entry .entry-node{flex:1;min-width:200px;font-family:monospace}.live-entry .entry-source,.live-entry .entry-emitter,.live-entry .entry-status,.live-entry .entry-duration{font-size:11px;color:#6c757d;font-family:monospace}.live-entry .entry-error{color:#dc3545;font-family:monospace;flex:1;min-width:200px}.live-entry .entry-data,.live-entry .entry-stack,.live-entry .entry-payload{width:100%;margin-top:4px}.live-entry .entry-data summary,.live-entry .entry-stack summary,.live-entry .entry-payload summary{cursor:pointer;font-size:11px;color:#007acc;font-weight:500}.live-entry .entry-data summary:hover,.live-entry .entry-stack summary:hover,.live-entry .entry-payload summary:hover{text-decoration:underline}.live-entry .entry-data pre,.live-entry .entry-stack pre,.live-entry .entry-payload pre{margin:4px 0 0;padding:8px;background:#f8f9fa;border-radius:3px;font-size:11px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.live-entry .entry-payload-button{background:#e3f2fd;border:1px solid #bbdefb;color:#1565c0;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer;transition:all .2s ease}.live-entry .entry-payload-button:hover{background:#bbdefb;border-color:#90caf9}.docs-sidebar-resizer{position:fixed;top:0;width:8px;height:100vh;background:transparent;cursor:col-resize;z-index:1001;transition:background-color .2s ease;transform:translate(-4px)}.docs-sidebar-resizer:hover{background:#3498db4d}.docs-sidebar-resizer--active{background:#3498db80}.docs-sidebar-resizer:after{content:"";position:absolute;top:50%;left:50%;width:2px;height:60px;background:#3498db99;transform:translate(-50%,-50%);border-radius:1px;opacity:0;transition:opacity .2s ease}.docs-sidebar-resizer:hover:after,.docs-sidebar-resizer--active:after{opacity:1}.docs-app *::-webkit-scrollbar{width:8px;height:8px}.docs-app *::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.docs-app *::-webkit-scrollbar-thumb{background:#0003;border-radius:4px;transition:background .2s ease}.docs-app *::-webkit-scrollbar-thumb:hover{background:#0006}.tree-view{font-family:inherit;font-size:.9rem;-webkit-user-select:none;user-select:none}.tree-view .tree-node-container .tree-node{display:flex;align-items:center;padding:4px 8px;cursor:pointer;border-radius:4px;margin:1px 0;transition:background-color .15s ease;min-height:32px}.tree-view .tree-node-container .tree-node:hover{background-color:var(--bg-hover, rgba(0, 0, 0, .05))}.tree-view .tree-node-container .tree-node--focused{background-color:var(--bg-focused, rgba(59, 130, 246, .1));outline:2px solid var(--border-focused, rgba(59, 130, 246, .3));outline-offset:-2px}.tree-view .tree-node-container .tree-node--leaf .tree-node-label{font-weight:500}.tree-view .tree-node-container .tree-expander{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;cursor:pointer;border-radius:2px;margin-right:4px;padding:0}.tree-view .tree-node-container .tree-expander:hover{background-color:var(--bg-hover, rgba(0, 0, 0, .1))}.tree-view .tree-node-container .tree-expander--placeholder{cursor:default}.tree-view .tree-node-container .tree-expander--placeholder:hover{background:none}.tree-view .tree-node-container .tree-expander .tree-expander-icon{font-size:12px;color:var(--text-muted, #6b7280);transition:transform .15s ease;line-height:1}.tree-view .tree-node-container .tree-expander--expanded .tree-expander-icon{transform:rotate(90deg)}.tree-view .tree-node-container .tree-node-icon{margin-right:8px;font-size:16px;line-height:1;min-width:16px;text-align:center}.tree-view .tree-node-container .tree-node-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary, #fff)}.tree-view .tree-node-container .tree-node-count{margin-left:8px;font-size:.8rem;color:var(--text-muted, #6b7280);background-color:var(--bg-badge, rgba(0, 0, 0, .1));padding:2px 6px;border-radius:10px;font-weight:500;min-width:20px;text-align:center}.tree-view .tree-node-container .tree-children{border-left:1px solid var(--border-subtle, rgba(0, 0, 0, .1));margin-left:10px}.tree-search-highlight{background-color:var(--highlight-bg, #fef3c7);color:var(--highlight-text, #92400e);padding:1px 2px;border-radius:2px;font-weight:600}@media (prefers-color-scheme: dark){.tree-view .tree-node:hover{background-color:#ffffff1a}.tree-view .tree-node--focused{background-color:#3b82f633;outline-color:#3b82f680}.tree-view .tree-expander:hover{background-color:#ffffff1a}.tree-view .tree-node-label{color:#f9fafb}.tree-view .tree-node-count{color:#d1d5db;background-color:#ffffff1a}.tree-view .tree-children{border-left-color:#fff3}.tree-view .tree-expander-icon{color:#9ca3af}.tree-search-highlight{background-color:#451a03;color:#fbbf24}}.tree-children{overflow:hidden;transition:max-height .2s ease-out}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.code-modal__backdrop{position:fixed;inset:0;background:#00000073;display:flex;align-items:flex-start;justify-content:center;padding-top:5vh;z-index:9999;overflow-y:auto}.code-modal__dialog{width:min(1100px,92vw);max-height:85vh;background:#fff;border-radius:12px;box-shadow:0 8px 32px #007acc4d;overflow:hidden;display:flex;flex-direction:column}.code-modal__header{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#9c27b0,#673ab7);color:#fff;padding:20px 25px}.code-modal__title{margin:0;font-size:24px}.code-modal__subtitle{font-size:12px;opacity:.9}.code-modal__header-right{display:flex;align-items:center;gap:15px}.code-modal__esc-hint{font-size:11px;opacity:.8;font-weight:400;letter-spacing:.025em;text-transform:uppercase;white-space:nowrap}.code-modal__close{background:transparent;border:none;color:#fff;font-size:28px;line-height:1;cursor:pointer;transition:opacity .2s ease}.code-modal__close:hover{opacity:.8}.code-modal__content{padding:25px;background:#f8f9fa;overflow:auto}.code-modal__pre{margin:0;padding:25px;border-radius:8px;font-family:monospace;font-size:12px;line-height:1.5;max-height:60vh;overflow:auto;background:#0d1117!important;border:1px solid #30363d}.tags-section{margin-top:30px}.tags-section__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.tags-section__content{display:grid;gap:20px}.tags-section__items{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px;max-height:400px;overflow-y:auto;padding-right:4px}.tags-section__items::-webkit-scrollbar{width:6px}.tags-section__items::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.tags-section__items::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.tags-section__items::-webkit-scrollbar-thumb:hover{background:#999}.tags-section__tag{padding:15px;border-radius:8px;border-left:4px solid #ff6b6b;background:linear-gradient(135deg,#fff5f5,#ffe8e8);transition:all .2s ease}.tags-section__tag__title{font-weight:600;margin-bottom:4px;color:#c53030;font-size:16px}.tags-section__tag__id{font-size:11px;color:#666;font-family:monospace;margin-bottom:8px}.tags-section__tag__stats .stat{font-size:11px;color:#999;background:#ffffffb3;padding:2px 8px;border-radius:16px}.tags-section__tag-link{text-decoration:none;color:inherit;display:block}.tags-section__tag-link:hover .tags-section__tag{transform:translateY(-1px);box-shadow:0 4px 12px #ff6b6b33;background:linear-gradient(135deg,#fff0f0,#ffe0e0)}.tags-section__tag-link:hover .tags-section__tag__title{color:#a53030}.tags-section__detailed__title{margin:0 0 15px;color:#495057;font-size:16px;font-weight:600}.tags-section__detailed__items{display:grid;gap:15px}.tags-section__detailed__item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px}.tags-section__detailed__item .tag-name{font-weight:600;margin-bottom:8px}.tags-section__detailed__item .tag-name a{color:#c53030;text-decoration:none}.tags-section__detailed__item .tag-name a:hover{color:#a53030;text-decoration:underline}.tags-section__detailed__item .tag-config .config-title{font-size:12px;color:#495057;margin-bottom:4px;font-weight:500}.tags-section__detailed__item .tag-config .config-block{background:#fff;padding:8px;border-radius:6px;font-size:11px;margin:0;border:1px solid #dee2e6;line-height:1.4;font-family:monospace;color:#495057}.task-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #0000001a;margin-bottom:20px;cursor:pointer}.task-card:hover{box-shadow:0 8px 24px #00000026;transform:translateY(-2px);transition:all .3s ease}.task-card__header{background:linear-gradient(135deg,#007acc,#0056b3);color:#fff;padding:25px}.task-card__header-content{display:flex;justify-content:space-between;align-items:flex-start}.task-card__header-content .main{flex:1}.task-card__title{margin:0 0 10px;font-size:24px;font-weight:700}.task-card__id{font-size:14px;opacity:.9;font-family:monospace;margin-bottom:15px}.task-card__description{margin:0;font-size:16px;opacity:.95;line-height:1.5}.task-card__tags{display:flex;gap:4px;flex-wrap:wrap}.task-card__tags a{color:#fff;text-decoration:none}.task-card__tag{background:#fff3;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.task-card__content{padding:25px}.task-card__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.task-card__section__title{margin:0 0 15px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.task-card__section__content{display:grid;gap:15px}.task-card__info-block .label{font-weight:700;color:#495057}.task-card__info-block .value{font-family:monospace;font-size:12px;color:#6c757d;margin-top:4px;background:#f8f9fa;padding:8px;border-radius:4px}.task-card__emits-events{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.task-card__emit-event-link{display:inline-block;background:#e3f2fd;color:#1976d2;padding:4px 8px;border-radius:16px;text-decoration:none;font-size:11px;font-weight:500;border:1px solid #bbdefb;transition:all .2s ease}.task-card__emit-event-link:hover{background:#bbdefb;color:#0d47a1;text-decoration:none;transform:translateY(-1px);box-shadow:0 2px 4px #2196f333}.task-card__emit-event-link:focus{outline:2px solid #2196f3;outline-offset:2px}.task-card__emit-event-text{display:inline-block;background:#f5f5f5;color:#666;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500;border:1px solid #e0e0e0}.task-card__no-events{color:#999;font-style:italic;font-size:12px}.task-card__code-block{background:#f8f9fa;padding:20px;border-radius:8px;font-size:11px;line-height:1.6;overflow:auto;border:1px solid #e9ecef;margin:0;font-family:monospace}.task-card__alert{padding:15px;border-radius:8px}.task-card__alert--warning{background:#fff3cd;border:1px solid #ffeaa7}.task-card__alert--warning .title{color:#856404;font-weight:700}.task-card__alert--warning .content{font-size:12px;color:#856404;margin-top:8px;font-family:monospace}.task-card__relations{margin-top:30px}.task-card__relations__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.task-card__relations__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.task-card__relations__category h5{margin:0 0 15px;color:#495057;font-size:16px}.task-card__relations__items{display:grid;gap:10px}.task-card__relation-item{padding:8px 16px;border-radius:8px;border-left:4px solid;display:block}.task-card__relation-item--task{background:#e3f2fd;border-left-color:#2196f3}.task-card__relation-item--resource{background:#e8f5e8;border-left-color:#4caf50}.task-card__relation-item--event{background:#fff3e0;border-left-color:#ff9800}.task-card__relation-item .title{font-weight:600;margin-bottom:4px}.task-card__relation-item .title--task{color:#1976d2}.task-card__relation-item .title--resource{color:#2e7d32}.task-card__relation-item .title--event{color:#f57c00}.task-card__relation-item .id{font-size:11px;color:#666;font-family:monospace}.task-card__relation-link{text-decoration:none;color:inherit;transition:all .2s ease;position:relative}.task-card__relation-link:hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001a;text-decoration:none}.task-card__relation-link:hover.task-card__relation-item--task{background:#bbdefb;box-shadow:0 4px 12px #2196f333}.task-card__relation-link:hover.task-card__relation-item--resource{background:#c8e6c9;box-shadow:0 4px 12px #4caf5033}.task-card__relation-link:hover.task-card__relation-item--event{background:#ffe0b2;box-shadow:0 4px 12px #ff980033}.task-card__relation-link:focus{outline:2px solid #667eea;outline-offset:2px}.task-card__relation-link:active{transform:translateY(0)}.task-card__relation-link:after{content:"🔗";position:absolute;top:50%;right:8px;transform:translateY(-50%);opacity:0;font-size:11px;transition:opacity .2s ease}.task-card__relation-link:hover:after{opacity:.6}.task-card__middleware{margin-top:30px}.task-card__middleware__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.task-card__middleware__items{display:grid;gap:15px}.task-card__middleware__item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px}.task-card__middleware__item .title{font-weight:600;margin-bottom:10px;color:#2c3e50;font-size:16px}.task-card__middleware__item .id{font-size:11px;color:#666;font-family:monospace;margin-bottom:15px}.task-card__middleware__item .config-title{font-size:14px;color:#495057;margin-bottom:8px;font-weight:600}.task-card__middleware__item .config-block{background:#fff;padding:15px;border-radius:6px;font-size:11px;margin:0;border:1px solid #dee2e6;line-height:1.4;font-family:monospace}.resource-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #0000001a;margin-bottom:20px}.resource-card__header{background:linear-gradient(135deg,#28a745,#20c997);color:#fff;padding:25px}.resource-card__header-content{display:flex;justify-content:space-between;align-items:flex-start}.resource-card__header-content .main{flex:1}.resource-card__title{margin:0 0 10px;font-size:24px;font-weight:700}.resource-card__id{font-size:14px;opacity:.9;font-family:monospace;margin-bottom:15px}.resource-card__description{margin:0;font-size:16px;opacity:.95;line-height:1.5}.resource-card__tags{display:flex;gap:4px;flex-wrap:wrap}.resource-card__tag{background:#fff3;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.resource-card__content{padding:25px}.resource-card__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.resource-card__section__title{margin:0 0 15px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.resource-card__section__content{display:grid;gap:15px}.resource-card__info-block .label{font-weight:700;color:#495057}.resource-card__info-block .value{font-family:monospace;font-size:12px;color:#6c757d;margin-top:4px;background:#f8f9fa;padding:8px;border-radius:4px}.resource-card__config{display:grid;gap:20px}.resource-card__config__subsection h5{margin:0 0 10px;color:#495057;font-size:14px}.resource-card__config__block{background:#f8f9fa;padding:15px;border-radius:8px;font-size:11px;line-height:1.6;overflow:auto;border:1px solid #e9ecef;margin:0;font-family:monospace}.resource-card__alert{padding:15px;border-radius:8px}.resource-card__alert--warning{background:#fff3cd;border:1px solid #ffeaa7}.resource-card__alert--warning .title{color:#856404;font-weight:700}.resource-card__alert--warning .content{font-size:12px;color:#856404;margin-top:8px;font-family:monospace}.resource-card__relations{margin-top:30px}.resource-card__relations__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.resource-card__relations__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.resource-card__relations__category h5{margin:0 0 15px;color:#495057;font-size:16px}.resource-card__relations__items{display:grid;gap:10px}.resource-card__relation-item{padding:8px 16px;border-radius:8px;border-left:4px solid}.resource-card__relation-item--resource{background:#e8f5e8;border-left-color:#4caf50}.resource-card__relation-item--task{background:#e3f2fd;border-left-color:#2196f3}.resource-card__relation-item--registered{background:#f3e5f5;border-left-color:#9c27b0}.resource-card__relation-item .title{font-weight:600;margin-bottom:4px}.resource-card__relation-item .title--resource{color:#2e7d32}.resource-card__relation-item .title--task{color:#1976d2}.resource-card__relation-item .title--registered{color:#7b1fa2}.resource-card__relation-item .id{font-size:11px;color:#666;font-family:monospace}.resource-card__middleware{margin-top:30px}.resource-card__middleware__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.resource-card__middleware__items{display:grid;gap:15px}.resource-card__middleware__item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px}.resource-card__middleware__item .title{font-weight:600;margin-bottom:10px;color:#2c3e50;font-size:16px}.resource-card__middleware__item .id{font-size:11px;color:#666;font-family:monospace;margin-bottom:15px}.resource-card__middleware__item .config-title{font-size:14px;color:#495057;margin-bottom:8px;font-weight:600}.resource-card__middleware__item .config-block{background:#fff;padding:15px;border-radius:6px;font-size:11px;margin:0;border:1px solid #dee2e6;line-height:1.4;font-family:monospace}.middleware-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #0000001a;margin-bottom:20px}.middleware-card__header{background:linear-gradient(135deg,#6f42c1,#5a2b99);color:#fff;padding:25px}.middleware-card__header-content{display:flex;justify-content:space-between;align-items:flex-start}.middleware-card__header-content .main{flex:1}.middleware-card__header-content .meta{display:flex;align-items:center;gap:10px}.middleware-card__title{margin:0 0 10px;font-size:24px;font-weight:700}.middleware-card__id{font-size:14px;opacity:.9;font-family:monospace;margin-bottom:15px}.middleware-card__description{margin:0;font-size:16px;opacity:.95;line-height:1.5}.middleware-card__type-badge{padding:15px 20px;border-radius:16px;font-size:16px;font-weight:700;display:inline-flex;align-items:center;gap:6px;margin-bottom:8px}.middleware-card__type-badge--task{background:#ffffff40;color:#fff;border:1px solid rgba(255,255,255,.4)}.middleware-card__type-badge--resource{background:#ffc1074d;color:#fff;border:1px solid rgba(255,193,7,.6)}.middleware-card__global-badges{margin-top:15px;display:flex;gap:8px;flex-wrap:wrap}.middleware-card__global-badge{background:#ffffff40;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.middleware-card__tags{display:flex;gap:4px;flex-wrap:wrap;max-height:60px;overflow-y:auto;padding-right:4px}.middleware-card__tags::-webkit-scrollbar{width:4px}.middleware-card__tags::-webkit-scrollbar-track{background:#ffffff1a;border-radius:2px}.middleware-card__tags::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:2px}.middleware-card__tags::-webkit-scrollbar-thumb:hover{background:#ffffff80}.middleware-card__tag{background:#fff3;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.middleware-card__content{padding:25px}.middleware-card__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.middleware-card__section__title{margin:0 0 15px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.middleware-card__section__content{display:grid;gap:15px}.middleware-card__info-block .label{font-weight:700;color:#495057}.middleware-card__info-block .value{font-family:monospace;font-size:12px;color:#6c757d;margin-top:4px;background:#f8f9fa;padding:8px;border-radius:4px}.middleware-card__usage-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:15px;margin-top:10px}.middleware-card__usage-stat{padding:15px;border-radius:8px;text-align:center;border:2px solid}.middleware-card__usage-stat--tasks{background:#e3f2fd;border-color:#2196f3}.middleware-card__usage-stat--resources{background:#e8f5e8;border-color:#4caf50}.middleware-card__usage-stat--events{background:#fff3e0;border-color:#ff9800}.middleware-card__usage-stat .value{font-size:18px;font-weight:700;margin-bottom:4px}.middleware-card__usage-stat .value--tasks{color:#1976d2}.middleware-card__usage-stat .value--resources{color:#2e7d32}.middleware-card__usage-stat .value--events{color:#f57c00}.middleware-card__usage-stat .label{font-size:11px;font-weight:500}.middleware-card__usage-stat .label--tasks{color:#1976d2}.middleware-card__usage-stat .label--resources{color:#2e7d32}.middleware-card__usage-stat .label--events{color:#f57c00}.middleware-card__code-block{background:#f8f9fa;padding:20px;border-radius:8px;font-size:11px;line-height:1.6;overflow:auto;border:1px solid #e9ecef;margin:0;font-family:monospace}.middleware-card__global-config{background:#e8f4fd;border:1px solid #bee5eb;padding:15px;border-radius:8px}.middleware-card__global-config .title{color:#0c5460;font-weight:700}.middleware-card__global-config .content{margin-top:10px;font-size:12px;color:#0c5460}.middleware-card__global-config .content .config-item{margin-bottom:5px}.middleware-card__global-config .content .config-item strong{font-weight:600}.middleware-card__alert{padding:15px;border-radius:8px}.middleware-card__alert--warning{background:#fff3cd;border:1px solid #ffeaa7}.middleware-card__alert--warning .title{color:#856404;font-weight:700}.middleware-card__alert--warning .content{font-size:12px;color:#856404;margin-top:8px;font-family:monospace}.middleware-card__usage-details__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.middleware-card__usage-details__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.middleware-card__usage-details__category h5{margin:0 0 15px;color:#495057;font-size:16px}.middleware-card__usage-details__items{display:grid;gap:10px;max-height:400px;overflow-y:auto;padding-right:4px}.middleware-card__usage-details__items::-webkit-scrollbar{width:6px}.middleware-card__usage-details__items::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.middleware-card__usage-details__items::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.middleware-card__usage-details__items::-webkit-scrollbar-thumb:hover{background:#999}.middleware-card__usage-item{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px}.middleware-card__usage-item__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.middleware-card__usage-item__header .main{flex:1}.middleware-card__usage-item__header .main .title{font-weight:600;margin-bottom:5px;color:#2c3e50;font-size:16px}.middleware-card__usage-item__header .main .id{font-size:11px;color:#666;font-family:monospace}.middleware-card__usage-item__header .configured-badge{padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.middleware-card__usage-item__header .configured-badge--task{background:#fff;color:#1565c0}.middleware-card__usage-item__header .configured-badge--resource{background:#c8e6c9;color:#2e7d32}.middleware-card__usage-item__config .config-title{font-size:14px;color:#495057;margin-bottom:8px;font-weight:600}.middleware-card__usage-item__config .config-code{background:#fff;padding:15px;border-radius:6px;font-size:11px;margin:0;border:1px solid #dee2e6;line-height:1.4;font-family:monospace}.middleware-card__events{margin-top:40px}.middleware-card__events__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.middleware-card__events__items{display:grid;gap:10px;max-height:300px;overflow-y:auto;padding-right:4px}.middleware-card__events__items::-webkit-scrollbar{width:6px}.middleware-card__events__items::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.middleware-card__events__items::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.middleware-card__events__items::-webkit-scrollbar-thumb:hover{background:#999}.middleware-card__event-item{padding:8px 16px;background:#fff3e0;border-radius:8px;border-left:4px solid #ff9800}.middleware-card__event-item .title{font-weight:600;color:#f57c00}.middleware-card__event-item .id{font-size:11px;color:#666;font-family:monospace}.middleware-card__empty-state{margin-top:40px;color:#6c757d;font-style:italic;text-align:center;padding:40px;background:#f8f9fa;border-radius:8px}.event-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #0000001a;margin-bottom:20px}.event-card__header{background:linear-gradient(135deg,#ffc107,#ff8f00);color:#fff;padding:25px}.event-card__header-content{display:flex;justify-content:space-between;align-items:flex-start}.event-card__header-content .main{flex:1}.event-card__header-content .meta{display:flex;align-items:center;gap:10px}.event-card__title{margin:0 0 10px;font-size:24px;font-weight:700}.event-card__id{font-size:14px;opacity:.9;font-family:monospace;margin-bottom:15px}.event-card__description{margin:0;font-size:16px;opacity:.95;line-height:1.5}.event-card__stats{display:flex;gap:8px;align-items:center}.event-card__stat-badge{display:flex;align-items:center;gap:4px;background:#fff3;padding:4px 8px;border-radius:12px}.event-card__stat-badge .icon{font-size:11px}.event-card__stat-badge .count{font-size:11px;font-weight:500}.event-card__tags{display:flex;gap:4px;flex-wrap:wrap}.event-card__tag{background:#fff3;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.event-card__content{padding:25px}.event-card__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.event-card__section__title{margin:0 0 15px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.event-card__section__content{display:grid;gap:15px}.event-card__info-block .label{font-weight:700;color:#495057}.event-card__info-block .value{font-family:monospace;font-size:12px;color:#6c757d;margin-top:4px;background:#f8f9fa;padding:8px;border-radius:4px}.event-card__info-block .value--status{font-weight:500}.event-card__listeners-list{display:grid;gap:8px;margin-top:8px}.event-card__listener-item{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid #e9ecef;border-radius:4px;padding:8px;border-left:4px solid #ff9500;transition:all .2s ease}.event-card__listener-item:hover{background:#3498db0d;border-color:#3498db4d;text-decoration:none}.event-card__listener-item:visited{color:inherit}.event-card__listener-item__content .title{font-weight:600;margin-bottom:4px;color:#2c3e50;font-size:12px}.event-card__listener-item__content .id{font-size:11px;color:#666;font-family:monospace}.event-card__code-block{background:#f8f9fa;padding:20px;border-radius:8px;font-size:11px;line-height:1.6;overflow:auto;border:1px solid #e9ecef;margin:0;font-family:monospace}.event-card__alert{padding:15px;border-radius:8px}.event-card__alert--danger{background:#f8d7da;border:1px solid #f5c6cb}.event-card__alert--danger .title{color:#721c24;font-weight:700}.event-card__alert--danger .content{margin-top:8px;font-size:12px;color:#721c24}.event-card__alert--warning{background:#fff3cd;border:1px solid #ffeaa7}.event-card__alert--warning .title{color:#856404;font-weight:700}.event-card__alert--warning .content{margin-top:8px;font-size:12px;color:#856404}.event-card__flow{margin-top:30px}.event-card__flow__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.event-card__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:15px;margin-bottom:25px}.event-card__metric{padding:20px;border-radius:8px;text-align:center;border:2px solid}.event-card__metric--active{background:#d4edda;border-color:#c3e6cb;color:#155724}.event-card__metric--warning{background:#fff3cd;border-color:#ffeaa7;color:#856404}.event-card__metric--danger{background:#f8d7da;border-color:#f5c6cb;color:#721c24}.event-card__metric .value{font-size:24px;font-weight:700;margin-bottom:4px}.event-card__metric .label{font-size:14px;font-weight:500}.event-card__participants{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.event-card__participant-section a{text-decoration:none}.event-card__participant-section h5{margin:0 0 15px;color:#495057;font-size:16px}.event-card__participant-section__items{display:grid;gap:10px}.event-card__emitter{padding:8px 16px;border-radius:8px;border-left:4px solid}.event-card__emitter--task{background:#e3f2fd;border-left-color:#2196f3}.event-card__emitter--resource{background:#e8f5e8;border-left-color:#4caf50}.event-card__emitter--hook{background:#f3e5f5;border-left-color:#9c27b0}.event-card__emitter__content{display:flex;align-items:center;gap:8px}.event-card__emitter__info .title{font-weight:600;margin-bottom:4px}.event-card__emitter__info .title--task{color:#1976d2}.event-card__emitter__info .title--resource{color:#2e7d32}.event-card__emitter__info .title--hook{color:#7b1fa2}.event-card__emitter__info .id{font-size:11px;color:#666;font-family:monospace}.event-card__listener{padding:8px 16px;background:#f3e5f5;border-radius:8px;border-left:4px solid #9c27b0}.event-card__listener__content{display:flex;justify-content:space-between;align-items:flex-start}.event-card__listener__content .main{flex:1}.event-card__listener__info{display:flex;align-items:center;gap:8px}.event-card__listener__info .details .title{font-weight:600;color:#7b1fa2}.event-card__listener__info .details .id{font-size:11px;color:#666;font-family:monospace}.event-card__listener__description{font-size:11px;color:#666;margin-top:4px;font-style:italic}.event-card__listener__order-badge{background:#e1bee7;color:#4a148c;padding:4px 8px;border-radius:12px;font-size:11px;font-weight:500}.event-card__empty-state{color:#6c757d;font-style:italic;text-align:center;padding:40px;background:#f8f9fa;border-radius:8px}.hook-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #0000001a;margin-bottom:20px}.hook-card__header{background:linear-gradient(135deg,#6f42c1,#563d7c);color:#fff;padding:25px}.hook-card__header-content{display:flex;justify-content:space-between;align-items:flex-start}.hook-card__header-content .main{flex:1}.hook-card__title{margin:0 0 10px;font-size:24px;font-weight:700}.hook-card__id{font-size:14px;opacity:.9;font-family:monospace;margin-bottom:15px}.hook-card__description{margin:0;font-size:16px;opacity:.95;line-height:1.5}.hook-card__stats{display:flex;align-items:center;gap:10px}.hook-card__stat-badge{display:flex;align-items:center;gap:4px;background:#fff3;padding:4px 8px;border-radius:12px}.hook-card__stat-badge .icon{font-size:11px}.hook-card__stat-badge .count{font-size:11px;font-weight:500}.hook-card__order-badge{background:#fff3;padding:4px 8px;border-radius:12px;font-size:11px;font-weight:500}.hook-card__tags{display:flex;gap:4px;flex-wrap:wrap}.hook-card__tag{background:#fff3;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:500}.hook-card__content{padding:25px}.hook-card__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.hook-card__section__title{margin:0 0 15px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.hook-card__section__content{display:grid;gap:15px}.hook-card__info-block .label{font-weight:700;color:#495057}.hook-card__info-block .value{font-family:monospace;font-size:12px;color:#6c757d;margin-top:4px;background:#f8f9fa;padding:8px;border-radius:4px}.hook-card__info-block .value--order{color:#6f42c1;font-weight:500}.hook-card__info-block .value--order .order-description{font-size:11px;color:#6c757d;margin-top:2px;font-weight:400}.hook-card__target-event{background:#f3e5f5;border:1px solid #e1bee7;border-radius:8px;padding:20px;margin-bottom:20px}.hook-card__target-event__header{display:flex;align-items:center;gap:8px;margin-bottom:10px}.hook-card__target-event__header .icon{font-size:18px}.hook-card__target-event__header .title{margin:0;color:#4a148c;font-size:16px}.hook-card__target-event__id{font-family:monospace;font-size:12px;color:#6a1b9a;margin-bottom:10px}.hook-card__target-event__description{font-size:12px;color:#6a1b9a;line-height:1.4}.hook-card__schema-block{background:#f8f9fa;padding:15px;border-radius:8px;border:1px solid #e9ecef}.hook-card__schema-block .title{font-weight:600;margin-bottom:8px;color:#495057}.hook-card__schema-block .schema{background:#fff;padding:8px;border-radius:4px;font-size:11px;max-height:600px;margin:0;border:1px solid #dee2e6;overflow:auto;line-height:1.4;font-family:monospace}.hook-card__event-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:15px}.hook-card__event-stats__stat{text-align:center}.hook-card__event-stats__stat .value{font-size:18px;font-weight:700}.hook-card__event-stats__stat .value--emitters{color:#007acc}.hook-card__event-stats__stat .value--hooks{color:#6f42c1}.hook-card__event-stats__stat .label{font-size:11px;color:#6c757d;font-weight:500}.hook-card__alert{padding:15px;border-radius:8px}.hook-card__alert--danger{background:#f8d7da;border:1px solid #f5c6cb}.hook-card__alert--danger .title{color:#721c24;font-weight:700}.hook-card__alert--danger .content{margin-top:8px;font-size:12px;color:#721c24}.hook-card__alert--warning{background:#fff3cd;border:1px solid #ffeaa7}.hook-card__alert--warning .title{color:#856404;font-weight:700}.hook-card__alert--warning .content{font-size:12px;color:#856404;margin-top:8px;font-family:monospace}.hook-card__not-found{background:#f8d7da;border:1px solid #f5c6cb;padding:40px;border-radius:8px;text-align:center}.hook-card__not-found .icon{font-size:48px}.hook-card__not-found .title{color:#721c24;margin:15px 0 10px}.hook-card__not-found .message{color:#721c24;margin:0}.hook-card__dependencies{margin-top:40px}.hook-card__dependencies__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.hook-card__dependencies__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px}.hook-card__dependencies__category h5{margin:0 0 15px;color:#495057;font-size:16px}.hook-card__dependencies__items{display:grid;gap:10px}.hook-card__dependency-item{padding:8px 16px;border-radius:8px;border-left:4px solid;display:block}.hook-card__dependency-item--task{background:#e3f2fd;border-left-color:#2196f3}.hook-card__dependency-item--resource{background:#e8f5e8;border-left-color:#4caf50}.hook-card__dependency-item--event{background:#fff3e0;border-left-color:#ff9800}.hook-card__dependency-item .title{font-weight:600;margin-bottom:4px}.hook-card__dependency-item .title--task{color:#1976d2}.hook-card__dependency-item .title--resource{color:#2e7d32}.hook-card__dependency-item .title--event{color:#f57c00}.hook-card__dependency-item .id{font-size:11px;color:#666;font-family:monospace}.hook-card__global-badge{background:linear-gradient(135deg,#ff6b6b,#feca57);color:#fff;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:600;margin-left:8px;box-shadow:0 2px 4px #0000001a;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 2px 4px #0000001a}50%{box-shadow:0 2px 8px #ff6b6b66}to{box-shadow:0 2px 4px #0000001a}}.hook-card__global-event .global-indicator{color:#ff6b6b;font-weight:600;font-size:12px}.hook-card__global-event .global-description{font-size:11px;color:#6c757d;margin-top:4px;font-style:italic}.hook-card__global-info{display:grid;gap:20px}.hook-card__global-message{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:8px;padding:20px}.hook-card__global-message__header{display:flex;align-items:center;gap:8px;margin-bottom:15px}.hook-card__global-message__header .icon{font-size:18px}.hook-card__global-message__header .title{margin:0;font-size:16px;font-weight:600}.hook-card__global-message__content{font-size:12px;line-height:1.5;opacity:.95}.hook-card__global-benefits{display:grid;gap:8px}.hook-card__global-benefits .benefit{display:flex;align-items:center;gap:8px;padding:8px;background:#ffffff0d;border-radius:4px;border-left:3px solid #667eea}.hook-card__global-benefits .benefit .icon{font-size:12px}.hook-card__global-benefits .benefit .text{font-size:12px;color:#495057}.hook-card__dependency-link{text-decoration:none;color:inherit;transition:all .2s ease;position:relative}.hook-card__dependency-link:hover{transform:translateY(-1px);box-shadow:0 4px 8px #0000001a;text-decoration:none}.hook-card__dependency-link:hover.hook-card__dependency-item--task{background:#bbdefb;box-shadow:0 4px 12px #2196f333}.hook-card__dependency-link:hover.hook-card__dependency-item--resource{background:#c8e6c9;box-shadow:0 4px 12px #4caf5033}.hook-card__dependency-link:hover.hook-card__dependency-item--event{background:#ffe0b2;box-shadow:0 4px 12px #ff980033}.hook-card__dependency-link:focus{outline:2px solid #667eea;outline-offset:2px}.hook-card__dependency-link:active{transform:translateY(0)}.hook-card__dependency-link:after{content:"🔗";position:absolute;top:50%;right:8px;transform:translateY(-50%);opacity:0;font-size:11px;transition:opacity .2s ease}.hook-card__dependency-link:hover:after{opacity:.6}.tag-card{background:#fff;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;box-shadow:0 6px 20px #0000001a;margin-bottom:20px;width:100%}.tag-card__header{background:linear-gradient(135deg,#ff6b6b,#ee5a52);color:#fff;padding:20px 25px}.tag-card__header-content{display:flex;justify-content:space-between;align-items:flex-start}.tag-card__header-content .main{flex:1}.tag-card__title{margin:0 0 10px;font-size:24px;font-weight:700}.tag-card__id{font-size:14px;opacity:.9;font-family:monospace;margin-bottom:15px}.tag-card__description{margin:0;font-size:16px;opacity:.95;line-height:1.5}.tag-card__content{padding:25px}.tag-card__grid{display:grid;grid-template-columns:1fr;gap:20px}.tag-card__section__title{margin:0 0 15px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.tag-card__section__content{display:grid;gap:15px}.tag-card__summary{margin-bottom:15px}.tag-card__total{text-align:center;padding:15px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a}.tag-card__total .value{display:block;font-size:28px;font-weight:700;margin-bottom:4px}.tag-card__total .label{font-size:12px;opacity:.9;text-transform:uppercase;letter-spacing:.5px}.tag-card__stats{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}@media (max-width: 768px){.tag-card__stats{grid-template-columns:repeat(3,1fr)}}@media (max-width: 480px){.tag-card__stats{grid-template-columns:repeat(2,1fr)}}.tag-card__stat{text-align:center;padding:8px;background:#f8f9fa;border-radius:8px}.tag-card__stat__value{font-size:18px;font-weight:700;display:block}.tag-card__stat__label{font-size:11px;color:#6c757d;margin-top:4px;display:block}.tag-card__stat--tasks .tag-card__stat__value{color:#007acc}.tag-card__stat--resources .tag-card__stat__value{color:#28a745}.tag-card__stat--events .tag-card__stat__value{color:#ffc107}.tag-card__stat--middlewares .tag-card__stat__value{color:#6f42c1}.tag-card__stat--hooks .tag-card__stat__value{color:#17a2b8}.tag-card__config{display:grid;gap:20px}.tag-card__config__block{background:#f8f9fa;padding:15px;border-radius:8px;font-size:11px;line-height:1.6;overflow:auto;border:1px solid #e9ecef;margin:0;font-family:monospace}.tag-card__relations{margin-top:30px}.tag-card__relations__title{margin:0 0 20px;color:#2c3e50;font-size:18px;border-bottom:2px solid #e9ecef;padding-bottom:8px}.tag-card__relations__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}.tag-card__relations__category h5{margin:0 0 15px;color:#495057;font-size:16px}.tag-card__relations__items{display:grid;gap:10px;max-height:300px;overflow-y:auto;padding-right:4px}.tag-card__relations__items::-webkit-scrollbar{width:6px}.tag-card__relations__items::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.tag-card__relations__items::-webkit-scrollbar-thumb{background:#e9ecef;border-radius:3px}.tag-card__relations__items::-webkit-scrollbar-thumb:hover{background:#999}.tag-card__relation-item{padding:8px 16px;border-radius:8px;border-left:4px solid}.tag-card__relation-item--resource{background:#e8f5e8;border-left-color:#4caf50}.tag-card__relation-item--task{background:#e3f2fd;border-left-color:#2196f3}.tag-card__relation-item--middleware{background:#f3e5f5;border-left-color:#9c27b0}.tag-card__relation-item--event{background:#fff8e1;border-left-color:#ffc107}.tag-card__relation-item--hook{background:#e0f7fa;border-left-color:#17a2b8}.tag-card__relation-item .title{font-weight:600;margin-bottom:4px}.tag-card__relation-item .title--resource{color:#2e7d32}.tag-card__relation-item .title--task{color:#1976d2}.tag-card__relation-item .title--middleware{color:#7b1fa2}.tag-card__relation-item .title--event{color:#f57c00}.tag-card__relation-item .title--hook{color:#00695c}.tag-card__relation-item .id{font-size:11px;color:#666;font-family:monospace}.tag-card__relation-link{text-decoration:none;color:inherit;transition:all .2s ease}.tag-card__relation-link:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.diagnostics-panel__summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:15px}.diagnostics-panel__detailed-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;margin-bottom:30px}.diagnostics-panel__summary-card{background:#fff;border:1px solid;border-radius:6px;padding:16px;border-left:4px solid}.diagnostics-panel__summary-card__header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.diagnostics-panel__summary-card__header .icon{font-size:18px}.diagnostics-panel__summary-card__header h4{margin:0}.diagnostics-panel__summary-card__value{font-size:24px;font-weight:700;margin-bottom:4px}.diagnostics-panel__summary-card__description{font-size:11px;color:#6c757d}.diagnostics-panel__tabs{display:flex;border-bottom:1px solid #e9ecef;margin-bottom:20px;gap:0;flex-wrap:wrap}.diagnostics-panel__tab{padding:8px 16px;border:none;background:transparent;color:#6c757d;cursor:pointer;border-radius:4px 4px 0 0;font-weight:400;transition:all .2s ease;display:flex;align-items:center;gap:8px}.diagnostics-panel__tab--active{background:#007acc;color:#fff}.diagnostics-panel__tab:hover:not(.diagnostics-panel__tab--active){background:#3498db1a}.diagnostics-panel__tab-count{padding:2px 6px;border-radius:10px;font-size:11px;font-weight:700;min-width:18px;text-align:center}.diagnostics-panel__tab--active .diagnostics-panel__tab-count{background:#ffffff4d;color:#fff}.diagnostics-panel__tab:not(.diagnostics-panel__tab--active) .diagnostics-panel__tab-count{background:#dee2e6;color:#495057}.diagnostics-panel__click-indicator{color:#6c757d;font-size:12px;opacity:.7}.diagnostics-panel__items{display:grid;gap:10px}.diagnostics-panel__item{background:#fff;border:1px solid #e9ecef;border-radius:4px;padding:8px;border-left:4px solid}.diagnostics-panel__item--error{border-left-color:#dc3545}.diagnostics-panel__item--warning{border-left-color:#ffc107}.diagnostics-panel__item--info{border-left-color:#17a2b8}.diagnostics-panel__item--clickable{cursor:pointer;text-decoration:none;color:inherit;transition:all .2s ease}.diagnostics-panel__item--clickable:hover{background:#3498db0d;border-color:#3498db4d;text-decoration:none}.diagnostics-panel__item--clickable:visited{color:inherit}.diagnostics-panel__item-content{display:flex;align-items:flex-start;gap:8px}.diagnostics-panel__item-content .icon{font-size:16px}.diagnostics-panel__item-content .main{flex:1}.diagnostics-panel__item-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.diagnostics-panel__severity-badge{color:#fff;padding:2px 8px;border-radius:8px;font-size:11px;font-weight:500;text-transform:uppercase}.diagnostics-panel__severity-badge--error{background:#dc3545}.diagnostics-panel__severity-badge--warning{background:#ffc107}.diagnostics-panel__severity-badge--info{background:#17a2b8}.diagnostics-panel__code-badge{background:#f8f9fa;color:#495057;padding:2px 8px;border-radius:8px;font-size:11px;font-family:monospace}.diagnostics-panel__message{margin-bottom:8px;line-height:1.4}.diagnostics-panel__node-info{display:flex;gap:8px;font-size:11px;color:#6c757d}.diagnostics-panel__node-info strong{font-weight:600}.diagnostics-panel__special-section h4{margin:0 0 15px;color:#495057;display:flex;align-items:center;gap:8px}.diagnostics-panel__special-section h4 .icon{font-size:18px}.diagnostics-panel__special-section__items{display:grid;gap:8px}.diagnostics-panel__special-section__item{background:#fff;border:1px solid #e9ecef;border-radius:4px;padding:8px;border-left:4px solid}.diagnostics-panel__special-section__item--orphan{border-left-color:#6f42c1}.diagnostics-panel__special-section__item--unused{border-left-color:#ffc107}.diagnostics-panel__special-section__item--conflict{border-left-color:#dc3545}.diagnostics-panel__special-section__item .title{font-weight:500;margin-bottom:4px}.diagnostics-panel__special-section__item .id{font-size:11px;color:#666;font-family:monospace}.diagnostics-panel__special-section__item--clickable{cursor:pointer;text-decoration:none;color:inherit;transition:all .2s ease;display:flex;justify-content:space-between;align-items:center}.diagnostics-panel__special-section__item--clickable:hover{background:#3498db0d;border-color:#3498db4d;text-decoration:none}.diagnostics-panel__special-section__item--clickable:visited{color:inherit}.diagnostics-panel__conflict-item .diagnostics-panel__conflict-link{color:#007acc;text-decoration:none;font-weight:600}.diagnostics-panel__conflict-item .diagnostics-panel__conflict-link:hover{text-decoration:underline}.diagnostics-panel__conflict-item .diagnostics-panel__conflict-link:visited{color:#007acc}.diagnostics-panel__empty-state{color:#6c757d;font-style:italic;text-align:center;padding:20px;background:#f8f9fa;border-radius:4px}.diagnostics-panel__empty-state .celebration{font-size:24px;margin-bottom:8px}.diagnostics-panel__success-state{color:#28a745;text-align:center;padding:40px;background:#d4edda;border-radius:4px;border:1px solid #c3e6cb}.diagnostics-panel__success-state .icon{font-size:48px;margin-bottom:8px}.diagnostics-panel__success-state h4{color:#155724;margin:10px 0}.diagnostics-panel__success-state p{color:#155724;margin:0}.diagnostics-panel__view-all{text-align:center;margin-top:8px}.diagnostics-panel__view-all button{padding:8px 16px;border:1px solid #007acc;background:transparent;color:#007acc;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s ease}.diagnostics-panel__view-all button:hover{background:#007acc;color:#fff}.diagnostics-panel__summary-card--errors{border-color:#dc354520;border-left-color:#dc3545}.diagnostics-panel__summary-card--errors h4,.diagnostics-panel__summary-card--errors .diagnostics-panel__summary-card__value{color:#dc3545}.diagnostics-panel__summary-card--warnings{border-color:#ffc10720;border-left-color:#ffc107}.diagnostics-panel__summary-card--warnings h4,.diagnostics-panel__summary-card--warnings .diagnostics-panel__summary-card__value{color:#ffc107}.diagnostics-panel__summary-card--orphans{border-color:#6f42c120;border-left-color:#6f42c1}.diagnostics-panel__summary-card--orphans h4,.diagnostics-panel__summary-card--orphans .diagnostics-panel__summary-card__value{color:#6f42c1}.diagnostics-panel__summary-card--unused{border-color:#ffc10720;border-left-color:#ffc107}.diagnostics-panel__summary-card--unused h4,.diagnostics-panel__summary-card--unused .diagnostics-panel__summary-card__value{color:#ffc107}.diagnostics-panel__summary-card--conflicts{border-color:#dc354520;border-left-color:#dc3545}.diagnostics-panel__summary-card--conflicts h4,.diagnostics-panel__summary-card--conflicts .diagnostics-panel__summary-card__value{color:#dc3545}.diagnostics-panel__summary-card--total{border-color:#6c757d20;border-left-color:#6c757d}.diagnostics-panel__summary-card--total h4,.diagnostics-panel__summary-card--total .diagnostics-panel__summary-card__value{color:#6c757d}.diagnostics-panel__summary-card--info{border-color:#17a2b820;border-left-color:#17a2b8}.diagnostics-panel__summary-card--info h4,.diagnostics-panel__summary-card--info .diagnostics-panel__summary-card__value{color:#17a2b8}.json-viewer{font-family:monospace;font-size:12px;background-color:#f4f4f4;padding:15px;border-radius:6px;overflow-x:auto}.json-node{margin-left:20px;position:relative}.json-node.expanded>.json-children{display:block}.json-toggle{cursor:pointer;position:absolute;left:-20px;top:0;color:#999;-webkit-user-select:none;user-select:none}.json-toggle:hover{color:#007acc}.json-children{display:none;padding-left:15px;border-left:1px dotted #ccc}.json-key-value{display:flex;align-items:flex-start}.json-key{color:brown;margin-right:8px;white-space:nowrap}.json-value--string{color:green}.json-value--number{color:#00f}.json-value--boolean{color:#f0f}.json-value--null{color:gray}.json-ellipsis{color:#999;margin:0 4px}.input__autocomplete-container{position:relative;width:100%}.input__field{width:100%;box-sizing:border-box;padding:12px;border:none;border-radius:6px;font-size:14px;background:#fff;box-shadow:0 1px 3px #0000001a}.input__field:focus{outline:none;box-shadow:0 0 0 2px #007acc33,0 1px 3px #0000001a}.input__autocomplete{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;border-top:none;border-radius:0 0 4px 4px;max-height:200px;overflow-y:auto;z-index:1000;box-shadow:0 2px 8px #0000001a}.input__autocomplete-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid #f0f0f0}.input__autocomplete-item:hover{background-color:#f5f5f5}.input__autocomplete-item:last-child{border-bottom:none}.input__autocomplete-id{font-weight:600;color:#333;font-size:14px}.input__autocomplete-title{font-size:12px;color:#666;margin-top:2px}.input__autocomplete-description{font-size:11px;color:#999;margin-top:1px;line-height:1.3}.live-runs__title{margin:0 0 20px;color:#333;font-size:18px;font-weight:600}.live-runs__grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.live-runs__panel{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:20px}.live-runs__panel:hover{border-color:#dee2e6;box-shadow:0 2px 4px #0000000d}.live-runs__panel-title{margin:0 0 16px;color:#495057;font-size:16px;font-weight:500}.live-runs__form{display:flex;flex-direction:column;gap:12px}.live-runs__autocomplete-container{position:relative}.live-runs__autocomplete-container input{display:block}.live-runs__autocomplete{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ced4da;border-top:none;border-radius:0 0 6px 6px;box-shadow:0 4px 6px #0000001a;max-height:200px;overflow-y:auto;z-index:1000}.live-runs__autocomplete-item{padding:8px 12px;cursor:pointer;border-bottom:1px solid #f1f3f4;transition:background-color .15s ease-in-out}.live-runs__autocomplete-item:hover{background-color:#f8f9fa}.live-runs__autocomplete-item:last-child{border-bottom:none}.live-runs__autocomplete-id{font-weight:600;color:#495057;font-size:14px;margin-bottom:2px}.live-runs__autocomplete-title{font-size:12px;color:#6c757d;font-weight:500;margin-bottom:2px}.live-runs__autocomplete-description{font-size:11px;color:#868e96;line-height:1.3}.live-runs__input{width:100%;box-sizing:border-box;border-radius:6px;font-size:14px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.live-runs__input:focus{outline:none;border-color:#80bdff;box-shadow:0 0 0 .2rem #007bff40}.live-runs__input::placeholder{color:#6c757d}.live-runs__textarea{width:100%;box-sizing:border-box;padding:8px;border:1px solid #e9ecef;border-radius:6px;font-size:12px;font-family:monospace;resize:vertical;min-height:80px;transition:all .2s ease;position:relative;z-index:2;background:transparent}.live-runs__textarea:focus{outline:none;border-color:#007acc;box-shadow:0 0 0 2px #007acc1a}.live-runs__textarea::placeholder{color:#6c757d}.live-runs__checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.live-runs__checkbox input[type=checkbox]{width:16px;height:16px;margin:0;cursor:pointer;accent-color:#007bff}.live-runs__checkbox-label{font-size:14px;color:#495057;font-weight:500}.live-runs__button{padding:8px 15px;border:1px solid #e9ecef;border-radius:6px;font-size:12px;font-weight:400;cursor:pointer;transition:all .2s ease;background:#fff;color:#495057}.live-runs__button:hover:not(.live-runs__button--disabled){background:#f8f9fa;border-color:#6c757d}.live-runs__button:active:not(.live-runs__button--disabled){background:#e9ecef}.live-runs__button--primary{border-color:#e1f5fe;background:#f3f9ff;color:#1976d2}.live-runs__button--primary:hover:not(.live-runs__button--disabled){background:#e3f2fd;border-color:#bbdefb;color:#1565c0}.live-runs__button--success{border-color:#e8f5e8;background:#f1f8e9;color:#388e3c}.live-runs__button--success:hover:not(.live-runs__button--disabled){background:#e8f5e8;border-color:#c8e6c9;color:#2e7d32}.live-runs__button--disabled{background:#f8f9fa;border-color:#e9ecef;color:#6c757d;cursor:not-allowed}.live-runs__result{padding:12px;border-radius:6px;font-size:14px;line-height:1.4}.live-runs__result--success{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.live-runs__result--error{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}@media (max-width: 768px){.live-runs__grid{grid-template-columns:1fr;gap:16px}.live-runs__panel{padding:16px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
console.log('__API_URL__','__OPENAI_API_BASE_URL__','__OPENAI_API_KEY__')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<div id="root"></div>
|
package/dist/utils/path.d.ts
CHANGED
|
@@ -14,3 +14,10 @@ export declare function sanitizePath(input: unknown): string | null;
|
|
|
14
14
|
* Clears cached roots. Useful for tests.
|
|
15
15
|
*/
|
|
16
16
|
export declare function __resetPathRootsCache(): void;
|
|
17
|
+
/**
|
|
18
|
+
* Attempts to resolve a sanitized/friendly path (eg. "workspace:src/index.ts",
|
|
19
|
+
* "node_modules:@scope/pkg/index.js", "home:.") back to an absolute path.
|
|
20
|
+
* If the input is already absolute, it is normalized and returned.
|
|
21
|
+
* Returns null when it cannot be resolved.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolvePathInput(input: unknown): string | null;
|
package/dist/utils/path.js
CHANGED
|
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.getPathRoots = getPathRoots;
|
|
27
27
|
exports.sanitizePath = sanitizePath;
|
|
28
28
|
exports.__resetPathRootsCache = __resetPathRootsCache;
|
|
29
|
+
exports.resolvePathInput = resolvePathInput;
|
|
29
30
|
const path = __importStar(require("path"));
|
|
30
31
|
const os = __importStar(require("os"));
|
|
31
32
|
function normalizeAbsolute(p) {
|
|
@@ -98,4 +99,46 @@ function sanitizePath(input) {
|
|
|
98
99
|
function __resetPathRootsCache() {
|
|
99
100
|
cachedRoots = null;
|
|
100
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Attempts to resolve a sanitized/friendly path (eg. "workspace:src/index.ts",
|
|
104
|
+
* "node_modules:@scope/pkg/index.js", "home:.") back to an absolute path.
|
|
105
|
+
* If the input is already absolute, it is normalized and returned.
|
|
106
|
+
* Returns null when it cannot be resolved.
|
|
107
|
+
*/
|
|
108
|
+
function resolvePathInput(input) {
|
|
109
|
+
if (typeof input !== "string" || input.length === 0)
|
|
110
|
+
return null;
|
|
111
|
+
// If already absolute, normalize and return
|
|
112
|
+
try {
|
|
113
|
+
const absTry = path.resolve(input);
|
|
114
|
+
// heuristic: if input starts with '/' (posix) or has drive letter (win), treat as absolute
|
|
115
|
+
const isAbsolute = path.isAbsolute(input) || /^[A-Za-z]:[\\/]/.test(input);
|
|
116
|
+
if (isAbsolute)
|
|
117
|
+
return absTry;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// continue
|
|
121
|
+
}
|
|
122
|
+
const idx = input.indexOf(":");
|
|
123
|
+
if (idx > 0) {
|
|
124
|
+
const prefix = input.slice(0, idx);
|
|
125
|
+
const rest = input.slice(idx + 1);
|
|
126
|
+
const roots = getPathRoots();
|
|
127
|
+
const root = roots.find((r) => r.name === prefix);
|
|
128
|
+
if (!root)
|
|
129
|
+
return null;
|
|
130
|
+
const rel = rest === "." ? "" : rest.replace(/^\/*/, "");
|
|
131
|
+
return path.join(root.path, rel);
|
|
132
|
+
}
|
|
133
|
+
// Inputs like "…/a/b/c" cannot be resolved reliably
|
|
134
|
+
if (input.startsWith("…/"))
|
|
135
|
+
return null;
|
|
136
|
+
// Fallback: treat as relative to cwd
|
|
137
|
+
try {
|
|
138
|
+
return path.resolve(input);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
101
144
|
//# sourceMappingURL=path.js.map
|
package/dist/utils/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,oCAaC;AAaD,oCAiBC;AAKD,sDAEC;
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,oCAaC;AAaD,oCAiBC;AAKD,sDAEC;AAQD,4CAgCC;AAtHD,2CAA6B;AAC7B,uCAAyB;AAIzB,SAAS,iBAAiB,CAAC,CAAS;IAClC,IAAI,CAAC;QACH,+CAA+C;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAe;QACxB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE;QAChC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;KAC7B,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,WAAW,GAAsB,IAAI,CAAC;AAE1C,SAAgB,YAAY;IAC1B,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC;QAC/B,6DAA6D;SAC5D,MAAM,CAAwB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI;YAAE,OAAO,GAAG,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;SACZ,MAAM,EAAE,CAAC;IACZ,8DAA8D;IAC9D,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9E,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,KAAa;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;QACzB,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,KAAK,MAAM,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB;IACnC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,4CAA4C;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,2FAA2F;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAI,UAAU;YAAE,OAAO,MAAM,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,oDAAoD;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,qCAAqC;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import React from
|
|
1
|
+
import React from "react";
|
|
2
2
|
export interface ReactSSROptions {
|
|
3
3
|
title?: string;
|
|
4
4
|
meta?: Record<string, string>;
|
|
5
5
|
stylesheets?: string[];
|
|
6
6
|
scripts?: string[];
|
|
7
|
+
moduleScripts?: string[];
|
|
8
|
+
inlineScript?: string;
|
|
7
9
|
}
|
|
8
10
|
export declare function renderReactToString(component: React.ReactElement, options?: ReactSSROptions): string;
|
|
9
11
|
export declare function renderReactComponentOnly(component: React.ReactElement): string;
|
package/dist/utils/react-ssr.js
CHANGED
|
@@ -5,16 +5,19 @@ exports.renderReactComponentOnly = renderReactComponentOnly;
|
|
|
5
5
|
const server_1 = require("react-dom/server");
|
|
6
6
|
function renderReactToString(component, options = {}) {
|
|
7
7
|
const html = (0, server_1.renderToString)(component);
|
|
8
|
-
const { title =
|
|
8
|
+
const { title = "React App", meta = {}, stylesheets = [], scripts = [], moduleScripts = [], inlineScript, } = options;
|
|
9
9
|
const metaTags = Object.entries(meta)
|
|
10
10
|
.map(([name, content]) => `<meta name="${name}" content="${content}">`)
|
|
11
|
-
.join(
|
|
11
|
+
.join("\n ");
|
|
12
12
|
const stylesheetLinks = stylesheets
|
|
13
|
-
.map(href => `<link rel="stylesheet" href="${href}">`)
|
|
14
|
-
.join(
|
|
13
|
+
.map((href) => `<link rel="stylesheet" href="${href}">`)
|
|
14
|
+
.join("\n ");
|
|
15
15
|
const scriptTags = scripts
|
|
16
|
-
.map(src => `<script src="${src}"></script>`)
|
|
17
|
-
.join(
|
|
16
|
+
.map((src) => `<script src="${src}"></script>`)
|
|
17
|
+
.join("\n ");
|
|
18
|
+
const moduleScriptTags = moduleScripts
|
|
19
|
+
.map((src) => `<script type="module" src="${src}"></script>`)
|
|
20
|
+
.join("\n ");
|
|
18
21
|
return `<!DOCTYPE html>
|
|
19
22
|
<html lang="en">
|
|
20
23
|
<head>
|
|
@@ -26,6 +29,8 @@ function renderReactToString(component, options = {}) {
|
|
|
26
29
|
</head>
|
|
27
30
|
<body>
|
|
28
31
|
<div id="root">${html}</div>
|
|
32
|
+
${inlineScript ? `<script>${inlineScript}</script>` : ""}
|
|
33
|
+
${moduleScriptTags}
|
|
29
34
|
${scriptTags}
|
|
30
35
|
</body>
|
|
31
36
|
</html>`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-ssr.js","sourceRoot":"","sources":["../../src/utils/react-ssr.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"react-ssr.js","sourceRoot":"","sources":["../../src/utils/react-ssr.tsx"],"names":[],"mappings":";;AAYA,kDA+CC;AAED,4DAIC;AAhED,6CAAkD;AAWlD,SAAgB,mBAAmB,CACjC,SAA6B,EAC7B,UAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,EACJ,KAAK,GAAG,WAAW,EACnB,IAAI,GAAG,EAAE,EACT,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,EAAE,EACZ,aAAa,GAAG,EAAE,EAClB,YAAY,GACb,GAAG,OAAO,CAAC;IAEZ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,eAAe,IAAI,cAAc,OAAO,IAAI,CAAC;SACtE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,MAAM,eAAe,GAAG,WAAW;SAChC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gCAAgC,IAAI,IAAI,CAAC;SACvD,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,GAAG,aAAa,CAAC;SAC9C,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,MAAM,gBAAgB,GAAG,aAAa;SACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,8BAA8B,GAAG,aAAa,CAAC;SAC5D,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElB,OAAO;;;;;aAKI,KAAK;MACZ,QAAQ;MACR,eAAe;;;qBAGA,IAAI;MACnB,YAAY,CAAC,CAAC,CAAC,WAAW,YAAY,WAAW,CAAC,CAAC,CAAC,EAAE;MACtD,gBAAgB;MAChB,UAAU;;QAER,CAAC;AACT,CAAC;AAED,SAAgB,wBAAwB,CACtC,SAA6B;IAE7B,OAAO,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;AACnC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bluelibs/runner-dev",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "BlueLibs Runner DevTools",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -8,22 +8,31 @@
|
|
|
8
8
|
"url": "https://github.com/bluelibs/runner-dev"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
11
|
+
"build": "tsc && npm run build:ui",
|
|
12
12
|
"watch": "tsc -w",
|
|
13
13
|
"clean": "rm -rf dist",
|
|
14
14
|
"start": "node dist/main.js",
|
|
15
15
|
"dev": "npm run build && npm run start",
|
|
16
|
+
"build:ui": "cd src/ui && vite build",
|
|
17
|
+
"dev:ui": "cd src/ui && vite",
|
|
18
|
+
"preview:ui": "cd src/ui && vite preview --port 5173",
|
|
19
|
+
"build:ui:watch": "cd src/ui && vite build --watch --clearScreen=false",
|
|
20
|
+
"play:server": "ts-node-dev --respawn src/__tests__/dummy/dummyServer.ts --watch src/**/*",
|
|
16
21
|
"test": "jest --verbose --runInBand",
|
|
17
22
|
"test:dev": "jest --verbose --watch",
|
|
18
23
|
"coverage": "jest --verbose --coverage",
|
|
19
24
|
"test:clean": "jest --clearCache",
|
|
20
25
|
"testonly": "npm test",
|
|
21
|
-
"test:ci": "npm run
|
|
26
|
+
"test:ci": "npm run build && npm run test",
|
|
22
27
|
"prepublishOnly": "npm run build",
|
|
23
28
|
"typedoc": "typedoc --options typedoc.json",
|
|
24
29
|
"codegen": "graphql-codegen --config codegen.ts",
|
|
25
30
|
"prebuild": "npm run codegen",
|
|
26
|
-
"play": "
|
|
31
|
+
"play": "concurrently -k -n UI,SRV -c blue,green \"npm:build:ui:watch\" \"npm:play:server\"",
|
|
32
|
+
"play:cli": "npm run play:server",
|
|
33
|
+
"demo:ping": "ENDPOINT=http://localhost:31337/graphql node dist/cli.js ping",
|
|
34
|
+
"demo:query": "ENDPOINT=http://localhost:31337/graphql node dist/cli.js query 'query { tasks { id } }' --format pretty",
|
|
35
|
+
"demo:overview": "ENDPOINT=http://localhost:31337/graphql node dist/cli.js overview --details 5"
|
|
27
36
|
},
|
|
28
37
|
"bin": {
|
|
29
38
|
"runner-dev": "dist/cli.js"
|
|
@@ -38,25 +47,34 @@
|
|
|
38
47
|
"@types/graphql": "^0.11.3",
|
|
39
48
|
"@types/jest": "^27.0.0",
|
|
40
49
|
"@types/node": "^20.0.0",
|
|
50
|
+
"@types/prismjs": "^1.26.5",
|
|
41
51
|
"@types/react": "^18.3.11",
|
|
42
52
|
"@types/react-dom": "^18.3.7",
|
|
53
|
+
"@types/supertest": "^6.0.3",
|
|
43
54
|
"@typescript-eslint/eslint-plugin": "8.39.0",
|
|
44
55
|
"@typescript-eslint/parser": "8.39.0",
|
|
56
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
45
57
|
"benchmark": "^2.1.4",
|
|
58
|
+
"concurrently": "^9.2.0",
|
|
46
59
|
"eslint": "^9.32.0",
|
|
47
60
|
"eslint-config-prettier": "6.3.0",
|
|
48
61
|
"eslint-plugin-prettier": "3.1.1",
|
|
49
62
|
"express": "^5.1.0",
|
|
50
63
|
"jest": "^29.0.0",
|
|
51
64
|
"jest-junit": "^10.0.0",
|
|
65
|
+
"openai": "^5.15.0",
|
|
52
66
|
"prettier": "^2.0.5",
|
|
53
67
|
"reflect-metadata": "^0.2.2",
|
|
68
|
+
"sass-embedded": "^1.90.0",
|
|
54
69
|
"source-map-support": "^0.5.13",
|
|
70
|
+
"supertest": "^7.1.4",
|
|
55
71
|
"ts-jest": "^29.0.0",
|
|
56
72
|
"ts-node": "^10.9.2",
|
|
73
|
+
"ts-node-dev": "^2.0.0",
|
|
57
74
|
"typedoc": "^0.26.7",
|
|
58
75
|
"typedoc-material-theme": "^1.1.0",
|
|
59
|
-
"typescript": "^5.6.2"
|
|
76
|
+
"typescript": "^5.6.2",
|
|
77
|
+
"vite": "^7.1.3"
|
|
60
78
|
},
|
|
61
79
|
"typings": "dist/index.d.ts",
|
|
62
80
|
"typescript": {
|
|
@@ -72,12 +90,13 @@
|
|
|
72
90
|
"graphql": "^16.11.0",
|
|
73
91
|
"graphql-voyager": "^1.3.0",
|
|
74
92
|
"lru-cache": "^11.1.0",
|
|
93
|
+
"prismjs": "^1.30.0",
|
|
75
94
|
"react": "^18.3.1",
|
|
76
95
|
"react-dom": "^18.3.1",
|
|
77
96
|
"zod": "^3.25.76",
|
|
78
97
|
"zod-to-json-schema": "^3.23.5"
|
|
79
98
|
},
|
|
80
99
|
"peerDependencies": {
|
|
81
|
-
"@bluelibs/runner": "
|
|
100
|
+
"@bluelibs/runner": "^4.1.1"
|
|
82
101
|
}
|
|
83
102
|
}
|
package/dist/ui/index.html
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Runner Dev Documentation</title>
|
|
7
|
-
<meta name="description" content="Interactive documentation for your Runner application">
|
|
8
|
-
<script type="module" crossorigin src="/static/index-D-NS5aw1.js"></script>
|
|
9
|
-
</head>
|
|
10
|
-
<body>
|
|
11
|
-
<div id="root"></div>
|
|
12
|
-
<script>
|
|
13
|
-
// Runtime config placeholders - will be replaced by server
|
|
14
|
-
window.__RUNNER_DEV_CONFIG__ = {
|
|
15
|
-
API_URL: '__API_URL__',
|
|
16
|
-
INTROSPECTOR_DATA: '__INTROSPECTOR_DATA__'
|
|
17
|
-
};
|
|
18
|
-
</script>
|
|
19
|
-
</body>
|
|
20
|
-
</html>
|