@lukawi/toporealm 0.1.0
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/LICENSE +21 -0
- package/README.en.md +113 -0
- package/README.md +115 -0
- package/dist/cli/index.d.ts +46 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +276 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/main.d.ts +3 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +48 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/core/errors.d.ts +16 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +40 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +9 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/store.d.ts +27 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +390 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/types.d.ts +108 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validate.d.ts +16 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +32 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/distribution/hosts.d.ts +12 -0
- package/dist/distribution/hosts.d.ts.map +1 -0
- package/dist/distribution/hosts.js +122 -0
- package/dist/distribution/hosts.js.map +1 -0
- package/dist/distribution/index.d.ts +4 -0
- package/dist/distribution/index.d.ts.map +1 -0
- package/dist/distribution/index.js +4 -0
- package/dist/distribution/index.js.map +1 -0
- package/dist/distribution/installer.d.ts +23 -0
- package/dist/distribution/installer.d.ts.map +1 -0
- package/dist/distribution/installer.js +179 -0
- package/dist/distribution/installer.js.map +1 -0
- package/dist/distribution/skills.d.ts +11 -0
- package/dist/distribution/skills.d.ts.map +1 -0
- package/dist/distribution/skills.js +20 -0
- package/dist/distribution/skills.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/skills/toporealm/SKILL.md +19 -0
- package/dist/integrations/skills/toporealm/agents/openai.yaml +6 -0
- package/dist/integrations/skills/toporealm-design/SKILL.md +14 -0
- package/dist/integrations/skills/toporealm-design/agents/openai.yaml +6 -0
- package/dist/integrations/skills/toporealm-grilling/SKILL.md +26 -0
- package/dist/integrations/skills/toporealm-grilling/agents/openai.yaml +6 -0
- package/dist/integrations/skills/toporealm-join/SKILL.md +18 -0
- package/dist/integrations/skills/toporealm-join/agents/openai.yaml +6 -0
- package/dist/mcp/index.d.ts +31 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +128 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/module-sdk/actions.d.ts +33 -0
- package/dist/module-sdk/actions.d.ts.map +1 -0
- package/dist/module-sdk/actions.js +56 -0
- package/dist/module-sdk/actions.js.map +1 -0
- package/dist/module-sdk/index.d.ts +47 -0
- package/dist/module-sdk/index.d.ts.map +1 -0
- package/dist/module-sdk/index.js +7 -0
- package/dist/module-sdk/index.js.map +1 -0
- package/dist/module-sdk/registry.d.ts +81 -0
- package/dist/module-sdk/registry.d.ts.map +1 -0
- package/dist/module-sdk/registry.js +294 -0
- package/dist/module-sdk/registry.js.map +1 -0
- package/dist/server/index.d.ts +14 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +168 -0
- package/dist/server/index.js.map +1 -0
- package/dist/web/index.d.ts +26 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +107 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web-assets/assets/index-BUAvvLwY.js +35 -0
- package/dist/web-assets/assets/index-DtKFY9Hh.css +1 -0
- package/dist/web-assets/index.html +175 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.canvas-wrapper.svelte-7bxg53{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--bg)}.sky-bg.svelte-7bxg53{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:hidden}.graph-canvas.svelte-7bxg53{position:relative;z-index:2;width:100%;height:100%;display:block}.sky-band.svelte-7bxg53{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;background:linear-gradient(162deg,transparent 40%,rgba(207,216,255,.05) 49%,rgba(232,236,255,.032) 52%,transparent 60%)}.sky-dust.svelte-7bxg53{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.node-tooltip.svelte-7bxg53{position:absolute;background:var(--surface-2);border:1px solid var(--line);color:var(--ink);font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm);pointer-events:none;display:none;z-index:var(--z-tooltip);white-space:nowrap;letter-spacing:var(--track-label)}.nodes>g.node.dimmed,.edges>g.edge-group.dimmed{opacity:.3}@keyframes star-breathe{0%,to{opacity:.82;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@keyframes star-sparkle{0%,to{opacity:.9}42%{opacity:.55}58%{opacity:.95}}@keyframes core-glint{0%,to{opacity:1}50%{opacity:.86}}@keyframes prism-shift{0%,to{transform:translate(0);opacity:.5}50%{transform:translate(.6px,-.4px);opacity:.32}}@keyframes ring-bloom{0%{opacity:.9;transform:scale(.5)}to{opacity:0;transform:scale(1.7)}}@keyframes flash-pulse{0%{opacity:0}18%{opacity:.6}to{opacity:0}}.nodes g.node .star-sky{pointer-events:none;transform-origin:center;transform-box:fill-box}.nodes g.node .hover-flash{opacity:0;transform-origin:center;transform-box:fill-box}.nodes g.node .hover-ring{opacity:0;transform:scale(.5);transform-origin:center;transform-box:fill-box}.nodes g.node:hover .hover-ring,.nodes g.node.is-focused .hover-ring{animation:ring-bloom .8s var(--ease-out-quart)}.nodes g.node:hover .hover-flash,.nodes g.node.is-focused .hover-flash{animation:flash-pulse .4s var(--ease-out-quart)}.nodes g.node:hover .star-spikes,.nodes g.node.is-focused .star-spikes,.nodes g.node.is-selected .star-spikes,.nodes g.node.edge-hilite .star-spikes{filter:brightness(1.35)}.nodes g.node.is-selected .node-label,.nodes g.node.is-selected .kind-label{fill:var(--ink)}.nodes g.node.is-dragging{cursor:grabbing}.nodes g.node .star-halo{animation:star-breathe 3.6s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.nodes g.node .star-spikes{animation:star-sparkle 5.2s ease-in-out infinite;transform-origin:center;transform-box:fill-box;transition:filter .14s var(--ease-out-quart)}.nodes g.node .star-core{animation:core-glint 2.8s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.nodes g.node .prism-r{animation:prism-shift 2.2s ease-in-out infinite;transform-box:fill-box}.nodes g.node .prism-b{animation:prism-shift 2.2s ease-in-out -1.1s infinite;transform-box:fill-box}@media(prefers-reduced-motion:reduce){.nodes g.node .star-halo,.nodes g.node .star-spikes,.nodes g.node .star-core,.nodes g.node .prism-r,.nodes g.node .prism-b{animation:none}.nodes g.node:hover .hover-ring,.nodes g.node.is-focused .hover-ring,.nodes g.node:hover .hover-flash,.nodes g.node.is-focused .hover-flash{animation:none}.nodes g.node .star-spikes{transition:none}.sky-dust .dust-tw{animation:none}}.graph-canvas.svelte-7bxg53 g.node:focus{outline:none}.sky-dust .dust{fill:#ffffff52}.sky-dust .dust-tw{animation:dust-tw 4.5s ease-in-out infinite}@keyframes dust-tw{0%,to{opacity:.14}50%{opacity:.5}}.zoom-hint.svelte-7bxg53{position:absolute;bottom:var(--sp-4);left:50%;transform:translate(-50%);font-family:var(--font-sans);font-size:var(--text-2xs);color:var(--ink-faint);pointer-events:none;background:var(--glass);-webkit-backdrop-filter:var(--blur-panel);backdrop-filter:var(--blur-panel);padding:var(--sp-1) var(--sp-3);border-radius:999px;border:1px solid var(--glass-line);z-index:5;letter-spacing:.02em;transition:color .2s var(--ease-out-quart)}.canvas-wrapper.svelte-7bxg53:hover .zoom-hint:where(.svelte-7bxg53){color:var(--ink-muted)}.hint-key.svelte-7bxg53{color:var(--ink-muted);font-weight:500;font-family:var(--font-mono)}.hint-sep.svelte-7bxg53{margin:0 var(--sp-1);color:var(--ink-faint)}@media(max-width:1000px){.zoom-hint.svelte-7bxg53{display:none}}@media(prefers-reduced-motion:reduce){.zoom-hint.svelte-7bxg53{transition:none}}.drawer.svelte-9ocgkg{position:fixed;right:12px;top:calc(var(--header-h) + 12px);bottom:12px;background:var(--glass-strong);-webkit-backdrop-filter:var(--blur-panel);backdrop-filter:var(--blur-panel);border:1px solid var(--glass-line);border-radius:var(--r-xl);box-shadow:var(--shadow-float);color:var(--ink);display:flex;flex-direction:column;z-index:var(--z-panel);overflow:hidden;transform:translate(calc(100% + 24px));transition:transform .22s var(--ease-out-quint)}.drawer.visible.svelte-9ocgkg{transform:translate(0)}.drawer-header.svelte-9ocgkg{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-3) 0 var(--sp-5);min-height:52px;border-bottom:1px solid var(--line);flex-shrink:0}.drawer-title.svelte-9ocgkg{font-family:var(--font-sans);font-size:13px;font-weight:650;color:var(--ink);flex:1}.drawer-kbd.svelte-9ocgkg{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint);border:1px solid var(--line);border-radius:6px;padding:1px var(--sp-1)}.drawer-close.svelte-9ocgkg{background:none;border:none;color:var(--ink-muted);cursor:pointer;border-radius:var(--r);min-width:var(--tap);min-height:var(--tap);margin-right:calc((var(--tap) - 32px) / -2);display:flex;align-items:center;justify-content:center;transition:background .13s var(--ease-out-quart),color .13s var(--ease-out-quart)}.drawer-close.svelte-9ocgkg:hover{background:var(--wash-2);color:var(--ink)}.drawer-close.svelte-9ocgkg:active{background:var(--wash-3)}.drawer-body.svelte-9ocgkg{padding:var(--sp-5);overflow-y:auto;flex:1}.drawer-body.svelte-9ocgkg .entity-title{font-family:var(--font-sans);font-size:var(--text-xl);font-weight:700;margin:0 0 var(--sp-4);color:var(--ink);line-height:1.25;letter-spacing:var(--track-tight);text-wrap:balance}.drawer-body.svelte-9ocgkg .meta-grid{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-bottom:var(--sp-5);padding-bottom:var(--sp-4);border-bottom:1px solid var(--line)}.drawer-body.svelte-9ocgkg .meta-tag{font-family:var(--font-mono);font-size:var(--text-2xs);padding:4px 10px;border-radius:8px;background:var(--wash-1);color:var(--ink-muted);border:1px solid var(--line);font-weight:500;display:inline-flex;align-items:center;gap:var(--sp-1);letter-spacing:.02em;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-body.svelte-9ocgkg .id-tag{color:var(--ink);border-color:var(--line-strong);background:var(--wash-2)}.drawer-body.svelte-9ocgkg .section{margin-bottom:var(--sp-5);padding-top:var(--sp-3);border-top:1px solid var(--line)}.drawer-body.svelte-9ocgkg .section-title{font-family:var(--font-sans);font-size:var(--text-xs);font-weight:650;margin:0 0 var(--sp-3);color:var(--ink);display:flex;align-items:center;gap:var(--sp-2)}.drawer-body.svelte-9ocgkg .section-count{margin-left:auto;color:var(--ink-faint);font-variant-numeric:tabular-nums;font-family:var(--font-mono);font-size:var(--text-2xs);background:var(--wash-1);border-radius:999px;padding:1px 8px}.drawer-body.svelte-9ocgkg .plan-desc{font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.7;color:var(--ink-muted);margin:0}.drawer-body.svelte-9ocgkg .chip{font-family:var(--font-mono);font-size:var(--text-2xs);background:var(--wash-1);padding:4px 10px;border-radius:8px;color:var(--ink-muted);border:1px solid var(--line);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-body.svelte-9ocgkg .chip-link{cursor:pointer;transition:background .13s var(--ease-out-quart),color .13s var(--ease-out-quart)}.drawer-body.svelte-9ocgkg .chip-link:hover{background:var(--wash-3);color:var(--ink)}.drawer-body.svelte-9ocgkg .sub-list{margin-top:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}.drawer-body.svelte-9ocgkg .sub-list.column{flex-direction:column;align-items:stretch}.drawer-body.svelte-9ocgkg .sub-label{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint)}@media(max-width:1000px){.drawer.svelte-9ocgkg{top:12px}}@media(max-width:768px){.drawer.svelte-9ocgkg{width:auto!important;max-width:100%;left:12px;top:12px;bottom:76px;transform:translateY(calc(100% + 24px))}.drawer.visible.svelte-9ocgkg{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.drawer.svelte-9ocgkg{transition:none}}.json-block.svelte-o53x5{border:1px solid var(--line);border-radius:var(--r);background:var(--wash-1);margin-bottom:var(--sp-2);overflow:hidden}.json-head.svelte-o53x5{display:flex;align-items:center;justify-content:space-between}.json-toggle.svelte-o53x5{display:flex;align-items:center;gap:var(--sp-2);flex:1;background:none;border:none;color:var(--ink-muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;padding:var(--sp-2) var(--sp-3);cursor:pointer;text-align:left;transition:background .13s var(--ease-out-quart),color .13s var(--ease-out-quart)}.json-toggle.svelte-o53x5:hover{background:var(--wash-2);color:var(--ink)}.json-toggle.svelte-o53x5:focus-visible{outline:2px solid var(--interactive);outline-offset:-2px}.json-toggle.svelte-o53x5 svg:where(.svelte-o53x5){transition:transform .15s var(--ease-out-quart);flex-shrink:0}.json-toggle.svelte-o53x5 svg.open:where(.svelte-o53x5){transform:rotate(90deg)}.json-copy.svelte-o53x5{background:transparent;border:1px solid var(--line-strong);border-radius:var(--r-sm);color:var(--ink-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:600;padding:2px var(--sp-2);margin-right:var(--sp-2);cursor:pointer;transition:color .13s var(--ease-out-quart),border-color .13s var(--ease-out-quart)}.json-copy.svelte-o53x5:hover{color:var(--ink);border-color:var(--ink-faint)}.json-body.svelte-o53x5{margin:0;padding:var(--sp-2) var(--sp-3);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.55;color:var(--ink-muted);white-space:pre-wrap;word-break:break-word;max-height:240px;overflow-y:auto;border-top:1px solid var(--line)}.kind-dot.svelte-nf0sji{width:7px;height:7px;border-radius:50%;flex-shrink:0}.object-actions.svelte-nf0sji{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-4)}.action-btn.svelte-nf0sji{background:var(--wash-2);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;padding:var(--sp-2) var(--sp-3);cursor:pointer;transition:background .13s var(--ease-out-quart)}.action-btn.svelte-nf0sji:hover:not(:disabled){background:var(--wash-3)}.action-btn.svelte-nf0sji:disabled{opacity:.4;cursor:not-allowed}.action-btn.svelte-nf0sji:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.action-error.svelte-nf0sji{display:flex;align-items:flex-start;gap:var(--sp-2);flex-wrap:wrap;margin-top:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:#e5504f1a;border:1px solid rgba(229,80,79,.4);border-radius:var(--r);font-family:var(--font-sans);font-size:var(--text-xs);line-height:1.55;color:var(--status-failed)}.action-error-code.svelte-nf0sji{font-family:var(--font-mono);font-weight:700;letter-spacing:var(--track-caps)}.action-error-text.svelte-nf0sji{color:var(--ink-muted);flex:1;min-width:0}.degraded.svelte-nf0sji{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-4);padding:var(--sp-3);background:#f0a73a1a;border:1px solid rgba(240,167,58,.3);border-radius:var(--r);font-family:var(--font-sans);font-size:var(--text-xs);line-height:1.6;color:var(--status-running)}.degraded-tag.svelte-nf0sji{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--track-caps);flex-shrink:0;margin-top:1px}.relation-row.svelte-nf0sji{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--wash-1);border:1px solid var(--line);border-radius:var(--r);cursor:pointer;text-align:left;transition:background .13s var(--ease-out-quart),border-color .13s var(--ease-out-quart)}.relation-row.svelte-nf0sji:hover{background:var(--wash-2);border-color:var(--line-strong)}.relation-row.svelte-nf0sji:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.relation-dir.svelte-nf0sji{font-family:var(--font-mono);color:var(--ink-faint);flex-shrink:0}.relation-name.svelte-nf0sji{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.relation-endpoint.svelte-nf0sji{margin-left:auto;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint);flex-shrink:0;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kind-dot.svelte-n9davv{width:7px;height:7px;border-radius:50%;flex-shrink:0}.relation-actions.svelte-n9davv{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-4)}.action-btn.svelte-n9davv{background:var(--wash-2);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;padding:var(--sp-2) var(--sp-3);cursor:pointer;transition:background .13s var(--ease-out-quart)}.action-btn.svelte-n9davv:hover:not(:disabled){background:var(--wash-3)}.action-btn.svelte-n9davv:disabled{opacity:.4;cursor:not-allowed}.action-btn.svelte-n9davv:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.degraded.svelte-n9davv{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-4);padding:var(--sp-3);background:#f0a73a1a;border:1px solid rgba(240,167,58,.3);border-radius:var(--r);font-family:var(--font-sans);font-size:var(--text-xs);line-height:1.6;color:var(--status-running)}.degraded-tag.svelte-n9davv{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--track-caps);flex-shrink:0;margin-top:1px}.endpoint-row.svelte-n9davv{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2)}.endpoint-label.svelte-n9davv{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint);text-transform:lowercase;letter-spacing:.02em;width:44px;flex-shrink:0}.endpoint-link.svelte-n9davv{background:none;border:none;padding:0;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-sm);cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px;transition:text-decoration-color .13s var(--ease-out-quart);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.endpoint-link.svelte-n9davv:hover{text-decoration-color:var(--ink)}.endpoint-link.svelte-n9davv:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.editor-form.svelte-y9fra9{display:flex;flex-direction:column;gap:var(--sp-4)}.readonly-note.svelte-y9fra9{padding:var(--sp-2) var(--sp-3);background:#f0a73a1a;border:1px solid rgba(240,167,58,.3);border-radius:var(--r);color:var(--status-running);font-family:var(--font-sans);font-size:var(--text-xs)}.field.svelte-y9fra9{display:flex;flex-direction:column;gap:var(--sp-1)}.field-label.svelte-y9fra9{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint);letter-spacing:.02em}.field-input.svelte-y9fra9{background:var(--wash-1);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-sm);padding:var(--sp-2) var(--sp-3);outline:none;transition:border-color .13s var(--ease-out-quart),background .13s var(--ease-out-quart);width:100%}.field-input.mono.svelte-y9fra9{font-family:var(--font-mono);font-size:var(--text-xs)}.field-input.svelte-y9fra9:hover:not(:disabled){border-color:var(--line-strong)}.field-input.svelte-y9fra9:focus:not(:disabled){background:var(--wash-2);border-color:var(--line-strong)}.field-input.svelte-y9fra9:disabled{opacity:.45;cursor:not-allowed}.field-input.svelte-y9fra9::placeholder{color:var(--ink-faint)}select.field-input.svelte-y9fra9 option:where(.svelte-y9fra9){background:var(--bg-chrome);color:var(--ink)}textarea.field-input.svelte-y9fra9{resize:vertical;min-height:80px;line-height:1.55}.field-pair.svelte-y9fra9{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.field-hint.svelte-y9fra9{font-family:var(--font-sans);font-size:var(--text-2xs);color:var(--ink-faint);line-height:1.5}.form-error.svelte-y9fra9{display:flex;align-items:flex-start;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) var(--sp-3);background:#e5504f1a;border:1px solid rgba(229,80,79,.4);border-radius:var(--r);font-family:var(--font-sans);font-size:var(--text-xs);line-height:1.55;color:var(--status-failed)}.error-code.svelte-y9fra9{font-family:var(--font-mono);font-weight:700;letter-spacing:var(--track-caps)}.error-text.svelte-y9fra9{color:var(--ink-muted);flex:1;min-width:0}.mini-btn.svelte-y9fra9{background:transparent;border:1px solid rgba(229,80,79,.4);border-radius:var(--r-sm);color:var(--ink-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:600;padding:1px var(--sp-2);cursor:pointer}.mini-btn.svelte-y9fra9:hover{color:var(--ink)}.form-actions.svelte-y9fra9{display:flex;gap:var(--sp-2)}.primary-btn.svelte-y9fra9{flex:1;background:var(--interactive);color:#000;border:none;border-radius:var(--r);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:650;padding:var(--sp-2) var(--sp-4);cursor:pointer;transition:opacity .13s var(--ease-out-quart)}.primary-btn.svelte-y9fra9:hover:not(:disabled){opacity:.88}.primary-btn.svelte-y9fra9:disabled{opacity:.4;cursor:not-allowed}.ghost-btn.svelte-y9fra9{background:transparent;border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink-muted);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;padding:var(--sp-2) var(--sp-4);cursor:pointer;transition:color .13s var(--ease-out-quart),border-color .13s var(--ease-out-quart)}.ghost-btn.svelte-y9fra9:hover:not(:disabled){color:var(--ink);border-color:var(--ink-faint)}.ghost-btn.svelte-y9fra9:disabled{opacity:.4;cursor:not-allowed}.primary-btn.svelte-y9fra9:focus-visible,.ghost-btn.svelte-y9fra9:focus-visible,.danger-btn.svelte-y9fra9:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.danger-zone.svelte-y9fra9{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;padding-top:var(--sp-3);border-top:1px solid var(--line)}.confirm-text.svelte-y9fra9{font-family:var(--font-sans);font-size:var(--text-2xs);color:var(--status-failed);flex:1;min-width:100%}.danger-btn.svelte-y9fra9{background:#e5504f1f;border:1px solid rgba(229,80,79,.4);border-radius:var(--r);color:var(--status-failed);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;padding:var(--sp-2) var(--sp-4);cursor:pointer;transition:background .13s var(--ease-out-quart)}.danger-btn.svelte-y9fra9:hover:not(:disabled){background:#e5504f33}.danger-btn.svelte-y9fra9:disabled{opacity:.4;cursor:not-allowed}.app.svelte-1n46o8q{display:flex;flex-direction:column;height:100vh;background:var(--bg-chrome);color:var(--ink);overflow:hidden}.topbar.svelte-1n46o8q{display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-4);height:48px;flex-shrink:0;border-bottom:1px solid var(--line);box-shadow:inset 0 1px 0 var(--hi-line);background:var(--bg-chrome);-webkit-user-select:none;user-select:none;white-space:nowrap}.brand.svelte-1n46o8q{display:flex;align-items:center;gap:var(--sp-2);color:var(--ink-muted);flex-shrink:0}.brand-text.svelte-1n46o8q{display:flex;flex-direction:column;gap:1px;min-width:0}.title.svelte-1n46o8q{font-family:var(--font-sans);font-size:13px;font-weight:650;letter-spacing:-.01em;color:var(--ink);line-height:1.2}.graph-label.svelte-1n46o8q{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint);letter-spacing:.02em;max-width:200px;overflow:hidden;text-overflow:ellipsis}.status-bar.svelte-1n46o8q{display:flex;align-items:center;gap:2px;padding:3px;background:var(--wash-1);border-radius:11px;overflow-x:auto;scrollbar-width:none;min-width:0;flex-shrink:1}.status-bar.svelte-1n46o8q::-webkit-scrollbar{display:none}.sb-total.svelte-1n46o8q{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-muted);padding:3px var(--sp-2);font-variant-numeric:tabular-nums;align-self:center;flex-shrink:0}.sb-n.svelte-1n46o8q{color:var(--ink);font-weight:600}.sb-total.svelte-1n46o8q .sb-n:where(.svelte-1n46o8q){margin-right:3px}.sb-chip.svelte-1n46o8q{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-muted);background:transparent;border:none;border-radius:999px;padding:3px 9px;cursor:pointer;font-variant-numeric:tabular-nums;flex-shrink:0;transition:background .13s var(--ease-out-quart),color .13s var(--ease-out-quart)}.sb-chip.svelte-1n46o8q:hover{background:var(--wash-2);color:var(--ink)}.sb-chip[aria-pressed=true].svelte-1n46o8q{background:var(--wash-3);color:var(--ink)}.sb-chip.svelte-1n46o8q:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.sb-chip.zero.svelte-1n46o8q{opacity:.45}.sb-dot.svelte-1n46o8q{width:7px;height:7px;border-radius:50%;flex-shrink:0}.sb-label.svelte-1n46o8q{letter-spacing:.02em}.sb-clear.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:600;color:var(--ink);background:var(--wash-3);border:none;border-radius:999px;padding:3px 10px;cursor:pointer;flex-shrink:0;transition:background .13s var(--ease-out-quart)}.sb-clear.svelte-1n46o8q:hover{background:#ffffff2e}.sb-clear.svelte-1n46o8q:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.topbar-right.svelte-1n46o8q{margin-left:auto;display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.stats.svelte-1n46o8q{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-muted);font-variant-numeric:tabular-nums;letter-spacing:.02em;display:flex;align-items:center;gap:var(--sp-2);padding-left:var(--sp-2)}.stat.svelte-1n46o8q{color:var(--ink);font-weight:500}.stat-unit.svelte-1n46o8q{color:var(--ink-faint);margin-left:1px}.stat-divider.svelte-1n46o8q{color:var(--ink-faint)}.conn-off.svelte-1n46o8q{color:var(--status-running);font-size:var(--text-2xs);border:1px solid rgba(240,167,58,.5);border-radius:999px;padding:1px var(--sp-2)}.search-box.svelte-1n46o8q{position:relative;display:flex;align-items:center}.search-icon.svelte-1n46o8q{position:absolute;left:10px;color:var(--ink-faint);pointer-events:none}.search-input.svelte-1n46o8q{background:var(--wash-1);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-xs);padding:5px var(--sp-2) 5px 28px;width:210px;outline:none;transition:border-color .13s var(--ease-out-quart),background .13s var(--ease-out-quart)}.search-input.svelte-1n46o8q::placeholder{color:var(--ink-faint)}.search-input.svelte-1n46o8q:hover{border-color:var(--line-strong)}.search-input.svelte-1n46o8q:focus{background:var(--wash-2);border-color:var(--line-strong)}.search-input.svelte-1n46o8q:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.main.svelte-1n46o8q{flex:1 1 0%;min-height:0;position:relative;overflow:hidden}.filter-chip.svelte-1n46o8q,.action-chip.svelte-1n46o8q{position:absolute;top:var(--sp-3);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--sp-2);background:var(--glass);-webkit-backdrop-filter:var(--blur-panel);backdrop-filter:var(--blur-panel);border:1px solid var(--glass-line);border-radius:999px;box-shadow:var(--shadow-float);padding:var(--sp-1) var(--sp-3);font-size:var(--text-2xs);font-family:var(--font-mono);color:var(--ink);z-index:var(--z-overlay);font-variant-numeric:tabular-nums;max-width:calc(100% - 48px)}.action-chip.svelte-1n46o8q{top:auto;bottom:var(--sp-4)}.action-chip.recovery.svelte-1n46o8q{border-color:#e5504f73}.recovery-code.svelte-1n46o8q{color:var(--status-failed);font-weight:700;letter-spacing:var(--track-caps)}.recovery-text.svelte-1n46o8q{font-family:var(--font-sans);color:var(--ink-muted)}.filter-clear.svelte-1n46o8q{background:transparent;border:1px solid var(--line-strong);border-radius:var(--r-sm);color:var(--ink-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:600;padding:1px var(--sp-2);cursor:pointer;flex-shrink:0;transition:color .13s var(--ease-out-quart),border-color .13s var(--ease-out-quart)}.filter-clear.svelte-1n46o8q:hover{color:var(--ink);border-color:var(--ink-faint)}.tool-rail.svelte-1n46o8q{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:var(--rail-w);display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;background:var(--glass);-webkit-backdrop-filter:var(--blur-panel);backdrop-filter:var(--blur-panel);border:1px solid var(--glass-line, var(--line));border-radius:16px;box-shadow:var(--shadow-float),inset 0 1px 0 var(--hi-line);z-index:var(--z-overlay);transition:transform .22s var(--ease-out-quint),opacity .22s var(--ease-out-quint)}.rail-btn.svelte-1n46o8q{position:relative;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--r);color:var(--ink-muted);cursor:pointer;transition:background .13s var(--ease-out-quart),color .13s var(--ease-out-quart)}.rail-btn.svelte-1n46o8q:hover{background:var(--wash-2);color:var(--ink)}.rail-btn.active.svelte-1n46o8q{background:var(--wash-3);color:var(--ink)}.rail-btn.svelte-1n46o8q:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.rail-btn.svelte-1n46o8q:disabled{opacity:.35;cursor:not-allowed}.rail-badge.svelte-1n46o8q{position:absolute;top:3px;right:3px;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:var(--wash-3);border:1px solid var(--line-strong);color:var(--ink);font-family:var(--font-mono);font-size:9px;font-weight:600;line-height:12px;text-align:center;font-variant-numeric:tabular-nums;pointer-events:none}.rail-sep.svelte-1n46o8q{width:18px;height:1px;background:var(--line);margin:var(--sp-1) 0;flex-shrink:0}.rail-flyout.svelte-1n46o8q{position:absolute;left:calc(var(--rail-w) + 20px);top:50%;transform:translateY(-50%);background:var(--glass-strong);-webkit-backdrop-filter:var(--blur-panel);backdrop-filter:var(--blur-panel);border:1px solid var(--glass-line, var(--line));border-radius:var(--r-lg);box-shadow:var(--shadow-float),inset 0 1px 0 var(--hi-line);padding:var(--sp-3);z-index:var(--z-panel);min-width:210px;display:flex;flex-direction:column;gap:var(--sp-1);max-height:70vh;overflow-y:auto}.graphs-flyout.svelte-1n46o8q{min-width:260px}.raw-flyout.svelte-1n46o8q{min-width:380px;max-width:480px}.flyout-title.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:650;color:var(--ink-faint);padding:0 var(--sp-1) var(--sp-1)}.flyout-hint.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-2xs);color:var(--ink-faint);line-height:1.6;margin:0;padding:0 var(--sp-1)}.flyout-actions.svelte-1n46o8q{display:flex;gap:var(--sp-2);padding:0 var(--sp-1) var(--sp-1)}.flyout-btn.svelte-1n46o8q{flex:1;background:var(--wash-2);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;padding:var(--sp-2) var(--sp-3);cursor:pointer;transition:background .13s var(--ease-out-quart)}.flyout-btn.svelte-1n46o8q:hover{background:var(--wash-3)}.flyout-btn.svelte-1n46o8q:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.graph-item.svelte-1n46o8q{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2);border:none;background:transparent;border-radius:var(--r);cursor:pointer;text-align:left;transition:background .13s var(--ease-out-quart)}.graph-item.svelte-1n46o8q:hover{background:var(--wash-2)}.graph-item.active.svelte-1n46o8q{background:var(--wash-3)}.graph-item.svelte-1n46o8q:focus-visible{outline:2px solid var(--interactive);outline-offset:1px}.graph-item-body.svelte-1n46o8q{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.graph-item-name.svelte-1n46o8q{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graph-item-label.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-2xs);color:var(--ink-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graph-item-count.svelte-1n46o8q{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-faint);background:var(--wash-2);border-radius:999px;padding:1px 8px;font-variant-numeric:tabular-nums;flex-shrink:0}.validation-summary.svelte-1n46o8q{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:#e5504f14;border:1px solid rgba(229,80,79,.35);border-radius:var(--r)}.validation-summary.valid.svelte-1n46o8q{background:#16a34a14;border-color:#16a34a59}.validation-verdict.svelte-1n46o8q{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--status-failed)}.validation-summary.valid.svelte-1n46o8q .validation-verdict:where(.svelte-1n46o8q){color:var(--status-passed)}.validation-list.svelte-1n46o8q{margin:0;padding-left:var(--sp-4);font-family:var(--font-sans);font-size:var(--text-2xs);line-height:1.6;color:var(--ink-muted);display:flex;flex-direction:column;gap:2px}.validation-list.errors.svelte-1n46o8q{color:var(--status-failed)}.validation-list.warnings.svelte-1n46o8q{color:var(--status-running)}.module-item.svelte-1n46o8q{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-1);font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink-muted);flex-wrap:wrap}.module-dot.svelte-1n46o8q{width:7px;height:7px;border-radius:50%;background:var(--status-failed);flex-shrink:0}.module-dot.ok.svelte-1n46o8q{background:var(--status-passed)}.module-name.svelte-1n46o8q{color:var(--ink)}.module-state.svelte-1n46o8q{margin-left:auto;color:var(--status-failed)}.module-state.ok.svelte-1n46o8q{color:var(--status-passed)}.module-reason.svelte-1n46o8q{flex-basis:100%;color:var(--ink-faint);padding-left:var(--sp-3)}.raw-snapshot.svelte-1n46o8q{margin:0;font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.5;color:var(--ink-muted);white-space:pre-wrap;word-break:break-word;max-height:50vh;overflow-y:auto;background:var(--wash-1);border:1px solid var(--line);border-radius:var(--r);padding:var(--sp-2)}.loading-state.svelte-1n46o8q,.empty-state.svelte-1n46o8q,.error-state.svelte-1n46o8q{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);color:var(--ink-muted);background:var(--bg)}.skeleton-graph.svelte-1n46o8q{position:relative;width:400px;height:300px;opacity:.4}.skeleton-node.svelte-1n46o8q{position:absolute;width:40px;height:40px;border-radius:50%;background:var(--surface-2);border:2px solid var(--line-strong);animation:svelte-1n46o8q-skeleton-pulse 1.5s ease-in-out infinite}.skeleton-node.svelte-1n46o8q:nth-child(1){animation-delay:0s}.skeleton-node.svelte-1n46o8q:nth-child(2){animation-delay:.1s}.skeleton-node.svelte-1n46o8q:nth-child(3){animation-delay:.2s}.skeleton-node.svelte-1n46o8q:nth-child(4){animation-delay:.3s}.skeleton-node.svelte-1n46o8q:nth-child(5){animation-delay:.4s}.skeleton-node.svelte-1n46o8q:nth-child(6){animation-delay:.5s}.skeleton-edges.svelte-1n46o8q{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.skeleton-edge.svelte-1n46o8q{stroke:var(--line-strong);stroke-width:.5;stroke-dasharray:2 1;animation:svelte-1n46o8q-skeleton-pulse 1.5s ease-in-out infinite}.skeleton-edge.svelte-1n46o8q:nth-child(1){animation-delay:.1s}.skeleton-edge.svelte-1n46o8q:nth-child(2){animation-delay:.2s}.skeleton-edge.svelte-1n46o8q:nth-child(3){animation-delay:.3s}.skeleton-edge.svelte-1n46o8q:nth-child(4){animation-delay:.4s}.skeleton-edge.svelte-1n46o8q:nth-child(5){animation-delay:.5s}@keyframes svelte-1n46o8q-skeleton-pulse{0%,to{opacity:.3}50%{opacity:.6}}.loading-text.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--ink-muted);margin:0}.error-title.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-base);font-weight:650;color:var(--ink);margin:0}.error-hint.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--ink-faint);margin:0;max-width:44ch;text-align:center;line-height:1.6}.retry-btn.svelte-1n46o8q{background:var(--interactive);color:#000;border:none;border-radius:var(--r);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;padding:var(--sp-2) var(--sp-4);cursor:pointer;transition:opacity .13s var(--ease-out-quart)}.retry-btn.svelte-1n46o8q:hover{opacity:.88}.empty-title.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:650;margin:var(--sp-2) 0 0;color:var(--ink-muted)}.empty-hint.svelte-1n46o8q{font-family:var(--font-sans);font-size:var(--text-xs);margin:0;color:var(--ink-faint)}@media(prefers-reduced-motion:reduce){.sb-chip.svelte-1n46o8q,.rail-btn.svelte-1n46o8q,.tool-rail.svelte-1n46o8q,.rail-flyout.svelte-1n46o8q{transition:none}.skeleton-node.svelte-1n46o8q,.skeleton-edge.svelte-1n46o8q{animation:none;opacity:.5}}@media(max-width:768px){.topbar.svelte-1n46o8q{padding:0 var(--sp-3);gap:var(--sp-2)}.stats.svelte-1n46o8q,.graph-label.svelte-1n46o8q{display:none}.search-input.svelte-1n46o8q{width:130px}.tool-rail.svelte-1n46o8q{top:auto;bottom:12px;left:50%;transform:translate(-50%);width:auto;height:56px;flex-direction:row;padding:0 8px;border-radius:18px}.rail-btn.svelte-1n46o8q{width:var(--tap);height:var(--tap)}.rail-sep.svelte-1n46o8q{width:1px;height:20px;margin:0 var(--sp-1)}.rail-flyout.svelte-1n46o8q{left:var(--sp-2);right:var(--sp-2);top:auto;bottom:76px;transform:none}}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<meta name="theme-color" content="#0a0b0e" />
|
|
7
|
+
<title>TopoRealm — 拓扑图工作空间</title>
|
|
8
|
+
<style>
|
|
9
|
+
/* ── Design tokens: deep-space instrument glass(与 Super Plumber 参考实现逐项一致,
|
|
10
|
+
见 D:/LUKAWI/AI_project/projects/topological-tool/web-ui/index.html;TopoRealm 侧
|
|
11
|
+
仅彩色语义不同:画布彩色表达对象 kind/模块,而非工作流状态)── */
|
|
12
|
+
:root {
|
|
13
|
+
/* Surfaces:画布纯黑舞台不变;chrome = 冷调近黑玻璃分层 */
|
|
14
|
+
--bg: #000000;
|
|
15
|
+
--bg-chrome: #0a0b0e;
|
|
16
|
+
--glass: rgba(13, 15, 20, 0.72); /* 浮层玻璃基(dock/图例/提示/胶囊) */
|
|
17
|
+
--glass-strong: rgba(15, 17, 22, 0.88); /* 抽屉玻璃(正文可读优先) */
|
|
18
|
+
--glass-line: rgba(255, 255, 255, 0.08); /* 玻璃边线 */
|
|
19
|
+
--hi-line: rgba(255, 255, 255, 0.06); /* 玻璃顶部内高光 */
|
|
20
|
+
|
|
21
|
+
/* Washes(白色洗刷阶梯:容器底/hover/active,替代不透明灰阶) */
|
|
22
|
+
--wash-1: rgba(255, 255, 255, 0.04);
|
|
23
|
+
--wash-2: rgba(255, 255, 255, 0.07);
|
|
24
|
+
--wash-3: rgba(255, 255, 255, 0.12);
|
|
25
|
+
|
|
26
|
+
/* Ink(白阶梯:文本最低档 0.52 ≈ 5.7:1,全部 ≥ AA) */
|
|
27
|
+
--ink: #ffffff;
|
|
28
|
+
--ink-muted: rgba(255, 255, 255, 0.72);
|
|
29
|
+
--ink-faint: rgba(255, 255, 255, 0.52);
|
|
30
|
+
|
|
31
|
+
/* Lines & borders */
|
|
32
|
+
--line: rgba(255, 255, 255, 0.08);
|
|
33
|
+
--line-strong: rgba(255, 255, 255, 0.16);
|
|
34
|
+
|
|
35
|
+
/* 交互色:白。focus/选中/开关一律明度表达 */
|
|
36
|
+
--interactive: #ffffff;
|
|
37
|
+
|
|
38
|
+
/* 浮层唯一投影档(玻璃深度)+ 模糊 */
|
|
39
|
+
--shadow-float: 0 12px 32px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.35);
|
|
40
|
+
--blur-panel: blur(20px) saturate(140%);
|
|
41
|
+
--blur-bar: blur(24px) saturate(140%);
|
|
42
|
+
|
|
43
|
+
/* 兼容别名(旧 surface 语义 → wash 映射,防止漏改处裸退) */
|
|
44
|
+
--surface-1: var(--wash-1);
|
|
45
|
+
--surface-2: var(--wash-2);
|
|
46
|
+
--surface-3: var(--wash-3);
|
|
47
|
+
|
|
48
|
+
/* Status colors — 校验/历史等状态语义沿用参考实现的 OKLCH 色档 */
|
|
49
|
+
--status-pending: #8a8f98;
|
|
50
|
+
--status-ready: #4a93e8;
|
|
51
|
+
--status-running: #f0a73a;
|
|
52
|
+
--status-passed: #16a34a;
|
|
53
|
+
--status-failed: #e5504f;
|
|
54
|
+
--status-blocked: #a574e6;
|
|
55
|
+
--status-cancelled: #7e848d;
|
|
56
|
+
|
|
57
|
+
/* Fonts */
|
|
58
|
+
--font-sans:
|
|
59
|
+
-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "PingFang SC",
|
|
60
|
+
"Microsoft YaHei", sans-serif;
|
|
61
|
+
--font-mono:
|
|
62
|
+
ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
|
|
63
|
+
|
|
64
|
+
/* Type scale(--text-2xs 11px:废除 10px 功能文本)*/
|
|
65
|
+
--text-2xs: 0.6875rem; /* 11px */
|
|
66
|
+
--text-xs: 0.75rem; /* 12px */
|
|
67
|
+
--text-sm: 0.8125rem; /* 13px */
|
|
68
|
+
--text-base: 0.875rem; /* 14px */
|
|
69
|
+
--text-md: 1rem; /* 16px */
|
|
70
|
+
--text-lg: 1.25rem; /* 20px */
|
|
71
|
+
--text-xl: 1.75rem; /* 28px */
|
|
72
|
+
|
|
73
|
+
/* Letter-spacing scale */
|
|
74
|
+
--track-tight: -0.015em;
|
|
75
|
+
--track-body: 0.01em;
|
|
76
|
+
--track-label: 0.04em;
|
|
77
|
+
--track-caps: 0.08em;
|
|
78
|
+
|
|
79
|
+
/* Spacing (4pt base) */
|
|
80
|
+
--sp-1: 4px;
|
|
81
|
+
--sp-2: 8px;
|
|
82
|
+
--sp-3: 12px;
|
|
83
|
+
--sp-4: 16px;
|
|
84
|
+
--sp-5: 20px;
|
|
85
|
+
--sp-6: 24px;
|
|
86
|
+
--sp-8: 32px;
|
|
87
|
+
--sp-10: 40px;
|
|
88
|
+
--sp-12: 48px;
|
|
89
|
+
--sp-16: 64px;
|
|
90
|
+
|
|
91
|
+
/* Radii(6/10/14/18 + pill:玻璃仪器的圆角阶梯)*/
|
|
92
|
+
--r-sm: 6px;
|
|
93
|
+
--r: 10px;
|
|
94
|
+
--r-lg: 14px;
|
|
95
|
+
--r-xl: 18px;
|
|
96
|
+
|
|
97
|
+
/* Easings */
|
|
98
|
+
--ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
|
|
99
|
+
--ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);
|
|
100
|
+
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
|
101
|
+
|
|
102
|
+
/* z-index scale(工具轨/浮层 10 < 面板 100 < tooltip 1000)*/
|
|
103
|
+
--z-canvas: 1;
|
|
104
|
+
--z-overlay: 10;
|
|
105
|
+
--z-panel: 100;
|
|
106
|
+
--z-tooltip: 1000;
|
|
107
|
+
|
|
108
|
+
/* 布局常量 */
|
|
109
|
+
--header-h: 48px; /* 单排仪器条高度 */
|
|
110
|
+
--rail-w: 48px; /* 左缘浮动玻璃 dock 宽(含内衬) */
|
|
111
|
+
|
|
112
|
+
/* Touch targets */
|
|
113
|
+
--tap: 44px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
* {
|
|
117
|
+
margin: 0;
|
|
118
|
+
padding: 0;
|
|
119
|
+
box-sizing: border-box;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
html,
|
|
123
|
+
body {
|
|
124
|
+
height: 100%;
|
|
125
|
+
background: var(--bg-chrome);
|
|
126
|
+
color: var(--ink);
|
|
127
|
+
font-family: var(--font-sans);
|
|
128
|
+
font-size: var(--text-base);
|
|
129
|
+
line-height: 1.55;
|
|
130
|
+
-webkit-font-smoothing: antialiased;
|
|
131
|
+
-moz-osx-font-smoothing: grayscale;
|
|
132
|
+
font-feature-settings:
|
|
133
|
+
"tnum" 1,
|
|
134
|
+
"lnum" 1;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* 键盘焦点全局可见(白环;鼠标点击不触发)*/
|
|
138
|
+
:focus-visible {
|
|
139
|
+
outline: 2px solid var(--interactive);
|
|
140
|
+
outline-offset: 1px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
body {
|
|
144
|
+
letter-spacing: var(--track-body);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* Scrollbar */
|
|
148
|
+
::-webkit-scrollbar {
|
|
149
|
+
width: 6px;
|
|
150
|
+
height: 6px;
|
|
151
|
+
}
|
|
152
|
+
::-webkit-scrollbar-track {
|
|
153
|
+
background: transparent;
|
|
154
|
+
}
|
|
155
|
+
::-webkit-scrollbar-thumb {
|
|
156
|
+
background: var(--wash-3);
|
|
157
|
+
border-radius: 999px;
|
|
158
|
+
}
|
|
159
|
+
::-webkit-scrollbar-thumb:hover {
|
|
160
|
+
background: rgba(255, 255, 255, 0.2);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Selection */
|
|
164
|
+
::selection {
|
|
165
|
+
background: rgba(255, 255, 255, 0.12);
|
|
166
|
+
color: var(--ink);
|
|
167
|
+
}
|
|
168
|
+
</style>
|
|
169
|
+
<script type="module" crossorigin src="/assets/index-BUAvvLwY.js"></script>
|
|
170
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DtKFY9Hh.css">
|
|
171
|
+
</head>
|
|
172
|
+
<body>
|
|
173
|
+
<div id="app"></div>
|
|
174
|
+
</body>
|
|
175
|
+
</html>
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lukawi/toporealm",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Domain-neutral graph foundation with CLI, MCP, Web UI, module SDK, and agent integrations",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/LUKAWI/toporealm.git"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/LUKAWI/toporealm/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/LUKAWI/toporealm#readme",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=20"
|
|
16
|
+
},
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" },
|
|
21
|
+
"./core": { "types": "./dist/core/index.d.ts", "import": "./dist/core/index.js" },
|
|
22
|
+
"./module-sdk": { "types": "./dist/module-sdk/index.d.ts", "import": "./dist/module-sdk/index.js" },
|
|
23
|
+
"./cli": { "types": "./dist/cli/index.d.ts", "import": "./dist/cli/index.js" },
|
|
24
|
+
"./mcp": { "types": "./dist/mcp/index.d.ts", "import": "./dist/mcp/index.js" },
|
|
25
|
+
"./server": { "types": "./dist/server/index.d.ts", "import": "./dist/server/index.js" },
|
|
26
|
+
"./web": { "types": "./dist/web/index.d.ts", "import": "./dist/web/index.js" },
|
|
27
|
+
"./distribution": { "types": "./dist/distribution/index.d.ts", "import": "./dist/distribution/index.js" },
|
|
28
|
+
"./package.json": "./package.json"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"type": "module",
|
|
34
|
+
"bin": {
|
|
35
|
+
"toporealm": "dist/cli/main.js"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public",
|
|
39
|
+
"tag": "preview"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "tsc -p tsconfig.json && npm run web:build && node scripts/copy-web-assets.mjs",
|
|
43
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
44
|
+
"pretest": "npm run build",
|
|
45
|
+
"test": "vitest run",
|
|
46
|
+
"web:build": "npm --prefix web-ui run build",
|
|
47
|
+
"web:typecheck": "npm --prefix web-ui run typecheck",
|
|
48
|
+
"web:test": "npm --prefix web-ui run test",
|
|
49
|
+
"web:browser-smoke": "vitest run tests/browser-smoke.test.ts",
|
|
50
|
+
"web:verify": "npm run web:typecheck && npm run web:build && npm run web:test",
|
|
51
|
+
"verify": "npm run typecheck && npm test && npm run web:typecheck && npm run web:test && npm run test:package",
|
|
52
|
+
"prepack": "npm run build",
|
|
53
|
+
"test:package": "node scripts/package-smoke.mjs"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
57
|
+
"yaml": "^2.7.0",
|
|
58
|
+
"zod": "^3.25.76"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^22.10.0",
|
|
62
|
+
"typescript": "^5.7.2",
|
|
63
|
+
"vitest": "^2.1.8"
|
|
64
|
+
}
|
|
65
|
+
}
|