@sksoftofficial/mindroot 1.1.0 → 1.3.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/package.json +9 -2
- package/src/dashboard/favicon.svg +6 -0
- package/src/dashboard/graph.js +280 -24
- package/src/dashboard/index.html +350 -101
- package/src/dashboard/logo.svg +6 -0
- package/src/dashboard/workspace.css +144 -0
- package/src/embedder.js +2 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
|
|
2
|
+
<rect width="64" height="64" rx="18" fill="#b6ebce"/>
|
|
3
|
+
<path d="M16 43V21l16 14 16-14v22M32 35v14" stroke="#14251e" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<circle cx="16" cy="19" r="4" fill="#14251e"/>
|
|
5
|
+
<circle cx="48" cy="19" r="4" fill="#14251e"/>
|
|
6
|
+
</svg>
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/* Mindroot workspace: ink, parchment, and mint. */
|
|
2
|
+
:root {
|
|
3
|
+
color-scheme:dark;
|
|
4
|
+
--bg:#171e1b; --bg2:#111715; --bg3:#252f29; --hover:#2b3730;
|
|
5
|
+
--fg:#eceee6; --dim:#a1ada4; --accent:#b6ebce; --accent-strong:#b6ebce;
|
|
6
|
+
--accent-soft:#253c30; --danger:#eea49a; --ok:#b6ebce; --graph-memory:#b5b5ef;
|
|
7
|
+
--border:#ffffff12; --border-soft:#ffffff0b; --border-hover:#ffffff26; --border-accent:#b6ebce38;
|
|
8
|
+
}
|
|
9
|
+
body { font-size:14px; letter-spacing:.005em }
|
|
10
|
+
button, input, textarea, select { border-radius:8px }
|
|
11
|
+
button { transition:background-color 140ms, border-color 140ms, color 140ms }
|
|
12
|
+
button:focus-visible, input:focus-visible, select:focus-visible { outline:2px solid var(--accent); outline-offset:3px }
|
|
13
|
+
button.primary { color:#14251e; padding:8px 16px }
|
|
14
|
+
button.primary:hover { background:#c9f4dc; border-color:#c9f4dc }
|
|
15
|
+
button.danger { background:transparent; font-size:12px }
|
|
16
|
+
button.danger:hover { background:#eea49a12; border-color:#eea49a40 }
|
|
17
|
+
input, textarea { background:var(--bg2); padding:10px 12px }
|
|
18
|
+
input:focus, textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px #b6ebce0c }
|
|
19
|
+
header { height:80px; padding:18px 26px; gap:26px; box-shadow:none; border-bottom:1px solid var(--border) }
|
|
20
|
+
.brand { gap:12px; min-width:224px }
|
|
21
|
+
.brand-mark { width:38px; height:38px; background:none; border:0; box-shadow:none }
|
|
22
|
+
.brand-logo { width:38px; height:38px }
|
|
23
|
+
header h1 { font-size:21px; font-weight:650; letter-spacing:-.055em }
|
|
24
|
+
.brand-subtitle { font-size:10px; color:var(--dim); margin-top:5px; letter-spacing:.025em }
|
|
25
|
+
.header-context { font-size:12px; gap:12px }
|
|
26
|
+
#headerProject { color:var(--fg) }
|
|
27
|
+
.header-lock { border-color:var(--border); padding:0 12px; color:var(--dim) }
|
|
28
|
+
aside { width:264px; flex:none; padding:24px 16px 18px; box-shadow:none; gap:16px; border-right:1px solid var(--border) }
|
|
29
|
+
.sidebar-toggle { align-self:flex-end; width:30px; height:28px; background:transparent; border-color:transparent }
|
|
30
|
+
.sidebar-item { font-size:11px; font-weight:650; text-transform:uppercase; letter-spacing:.1em; padding:8px }
|
|
31
|
+
.sidebar-item svg { width:15px }
|
|
32
|
+
.project-search { width:100%; min-width:0; margin:12px 0; font-size:12px; background:var(--bg); }
|
|
33
|
+
#projList { margin:0; padding:0; border:0; gap:4px }
|
|
34
|
+
.proj { display:flex; align-items:center; gap:10px; padding:10px; min-height:42px; border:1px solid transparent; border-radius:8px; font-size:13px; }
|
|
35
|
+
.proj::before { content:attr(data-initial); display:grid; place-items:center; width:26px; height:26px; flex:none; border:1px solid var(--border); border-radius:7px; color:var(--dim); font:10px ui-monospace,monospace; background:#ffffff03 }
|
|
36
|
+
.project-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
|
|
37
|
+
.proj.active { color:var(--accent); background:var(--accent-soft); border-color:var(--border-accent) }
|
|
38
|
+
.proj.active::before { color:var(--accent); border-color:var(--border-accent) }
|
|
39
|
+
.sidebar-footer { margin-top:auto; padding:24px 8px 0; display:flex; align-items:baseline; gap:9px; color:var(--fg); font-size:11px }
|
|
40
|
+
.sidebar-footer small { display:block; color:var(--dim); font-size:10px; margin-top:4px }
|
|
41
|
+
.footer-dot { width:6px; height:6px; background:var(--accent); border-radius:50%; flex:none }
|
|
42
|
+
#content { padding:34px 40px 24px; background:radial-gradient(ellipse at top right,#b6ebce04,transparent 55%),var(--bg) }
|
|
43
|
+
.workspace-intro { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:30px; flex:none }
|
|
44
|
+
.eyebrow { color:var(--accent); font:10px/1.5 ui-monospace,SFMono-Regular,monospace; letter-spacing:.14em }
|
|
45
|
+
.workspace-intro h2 { margin:8px 0 6px; color:var(--fg); font-size:30px; font-weight:550; line-height:1.2; text-transform:none; letter-spacing:-.035em; overflow-wrap:anywhere }
|
|
46
|
+
.workspace-intro p { color:var(--dim); font-size:13px }
|
|
47
|
+
.workspace-badge { flex:none; border:1px solid var(--border); border-radius:20px; padding:6px 11px; font-size:10px; color:var(--dim); letter-spacing:.02em }
|
|
48
|
+
.workspace-head { margin-bottom:26px; padding-bottom:0; gap:16px; min-height:44px }
|
|
49
|
+
.tabs { gap:24px; align-self:stretch }
|
|
50
|
+
.tab { padding:10px 2px 14px; border:0; border-bottom:2px solid transparent; border-radius:0; font-size:13px }
|
|
51
|
+
.tab.active { color:var(--accent); border-color:var(--accent); background:transparent }
|
|
52
|
+
.tab:hover { background:transparent; color:var(--fg) }
|
|
53
|
+
.project-actions { padding-bottom:8px }
|
|
54
|
+
.delete-project { border-color:transparent }
|
|
55
|
+
.collection-toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:22px }
|
|
56
|
+
.collection-toolbar h3 { font-size:16px; font-weight:550; letter-spacing:-.015em; display:flex; align-items:center; gap:9px }
|
|
57
|
+
.collection-toolbar p { color:var(--dim); margin-top:5px; font-size:12px }
|
|
58
|
+
.collection-toolbar input { width:220px; font-size:12px; flex:none }
|
|
59
|
+
.count { background:var(--bg3); color:var(--dim); padding:1px 7px; border-radius:6px; font-size:10px; font-variant-numeric:tabular-nums }
|
|
60
|
+
.docrow { display:block; width:100%; padding:20px 22px; margin-bottom:10px; border-radius:12px; text-align:left; background:#1d2621; border:1px solid var(--border) }
|
|
61
|
+
.docrow:hover { background:#232f28; border-color:var(--border-accent) }
|
|
62
|
+
.doc-head { margin-bottom:8px; align-items:center }
|
|
63
|
+
.docrow .t { font-size:15px; font-weight:550; letter-spacing:-.015em; overflow-wrap:anywhere }
|
|
64
|
+
.docrow .p { font-size:10px; white-space:nowrap; color:var(--dim); flex:none }
|
|
65
|
+
.note-path { color:var(--dim); font:11px ui-monospace,SFMono-Regular,monospace; margin-bottom:12px; overflow-wrap:anywhere }
|
|
66
|
+
.sec-chip { background:#ffffff04; border:1px solid var(--border); padding:2px 8px; margin:4px 5px 0 0; border-radius:5px; color:var(--dim); font-size:11px; overflow-wrap:anywhere }
|
|
67
|
+
.skill-summary { line-height:1.7; font-size:13px }
|
|
68
|
+
.rem { background:#1d2621; padding:20px 22px; border-radius:12px; gap:18px; margin-bottom:10px }
|
|
69
|
+
.rem .txt { min-width:0; overflow-wrap:anywhere }
|
|
70
|
+
.txt-main { line-height:1.8; margin-bottom:8px }
|
|
71
|
+
.rem .meta { margin-top:9px; font-size:10px; color:var(--dim) }
|
|
72
|
+
.empty { padding:48px 24px; background:#ffffff02; border-color:var(--border-hover); border-radius:12px }
|
|
73
|
+
.editorbar { margin-bottom:20px; gap:12px }
|
|
74
|
+
.editor-title { display:block; font-size:14px }
|
|
75
|
+
.viewmode { background:var(--bg2); border-radius:9px; padding:4px }
|
|
76
|
+
.viewmode button { font-size:12px; padding:5px 14px }
|
|
77
|
+
.viewmode button.on { background:var(--accent-soft); color:var(--accent) }
|
|
78
|
+
.md { background:#1d2621; border-radius:12px; padding:36px 40px; line-height:1.85 }
|
|
79
|
+
.md h1 { font-size:30px; letter-spacing:-.04em }
|
|
80
|
+
.md h2 { margin-top:30px; letter-spacing:-.025em }
|
|
81
|
+
.md pre { background:var(--bg2); border-radius:8px; padding:16px }
|
|
82
|
+
.md blockquote { border-color:var(--accent); background:#b6ebce05; padding:8px 18px }
|
|
83
|
+
textarea.editor { padding:22px; font-size:13px; line-height:1.8 }
|
|
84
|
+
.graph-workspace { border-radius:12px }
|
|
85
|
+
.graph-legend .memory-dot { background:var(--graph-memory) }
|
|
86
|
+
#gate { width:min(440px,calc(100% - 32px)); padding:38px; border-radius:20px; text-align:left; gap:18px; box-shadow:0 24px 80px #0003 }
|
|
87
|
+
.gate-logo { margin-bottom:8px }
|
|
88
|
+
#gate h2 { font-size:25px; text-transform:none; letter-spacing:-.035em; color:var(--fg); font-weight:550 }
|
|
89
|
+
#gate p { font-size:12px; line-height:1.8 }
|
|
90
|
+
#gate b { color:var(--fg); font-weight:500 }
|
|
91
|
+
#gate .primary { min-height:44px }
|
|
92
|
+
#gateErr:empty { display:none }
|
|
93
|
+
::selection { background:#b6ebce35 }
|
|
94
|
+
.proj[hidden], .docrow[hidden], .rem[hidden], .empty[hidden] { display:none }
|
|
95
|
+
@media (min-width:701px) {
|
|
96
|
+
aside.collapsed { width:68px; padding:24px 10px }
|
|
97
|
+
aside.collapsed .sidebar-toggle { align-self:center }
|
|
98
|
+
aside.collapsed .project-search, aside.collapsed .project-name, aside.collapsed .sidebar-footer { display:none }
|
|
99
|
+
aside.collapsed .proj { justify-content:center; padding:7px 0 }
|
|
100
|
+
aside.collapsed .proj::before { font-size:10px }
|
|
101
|
+
}
|
|
102
|
+
@media (max-width:1000px) {
|
|
103
|
+
#content { padding:26px 24px 20px }
|
|
104
|
+
aside { width:220px }
|
|
105
|
+
.brand { min-width:180px }
|
|
106
|
+
.workspace-badge { display:none }
|
|
107
|
+
.collection-toolbar { align-items:flex-start }
|
|
108
|
+
.collection-toolbar input { width:180px }
|
|
109
|
+
}
|
|
110
|
+
@media (max-width:700px) {
|
|
111
|
+
header { height:68px; padding:12px 16px; gap:14px }
|
|
112
|
+
.brand { min-width:0; gap:9px }
|
|
113
|
+
.brand-mark, .brand-logo { width:32px; height:32px }
|
|
114
|
+
header h1 { font-size:19px }
|
|
115
|
+
.header-context { min-width:0; overflow:hidden }
|
|
116
|
+
.header-context svg, .header-divider { display:none }
|
|
117
|
+
.header-lock { flex:none }
|
|
118
|
+
aside { width:100%; max-height:210px; padding:8px 12px; gap:0 }
|
|
119
|
+
.sidebar-footer { display:none }
|
|
120
|
+
.project-search { margin:4px 0; padding:6px 10px }
|
|
121
|
+
#projList { margin:2px 0 4px; padding:0; gap:6px }
|
|
122
|
+
.proj { padding:7px 10px }
|
|
123
|
+
.proj::before { width:22px; height:22px }
|
|
124
|
+
#content { padding:22px 16px 16px }
|
|
125
|
+
.workspace-intro { margin-bottom:20px }
|
|
126
|
+
.workspace-intro h2 { font-size:26px }
|
|
127
|
+
.workspace-head { margin-bottom:20px; gap:6px }
|
|
128
|
+
.tabs { gap:17px }
|
|
129
|
+
.tab { padding:10px 0; min-height:44px }
|
|
130
|
+
.project-actions { padding-bottom:0 }
|
|
131
|
+
.collection-toolbar { flex-direction:column; gap:14px; margin-bottom:16px }
|
|
132
|
+
.collection-toolbar input { width:100% }
|
|
133
|
+
.docrow, .rem { padding:16px; border-radius:10px }
|
|
134
|
+
.docrow .t { font-size:14px }
|
|
135
|
+
.md { padding:24px 20px }
|
|
136
|
+
.editorbar { gap:8px }
|
|
137
|
+
.editor-title { max-width:140px; font-size:12px }
|
|
138
|
+
.editor-actions { gap:5px }
|
|
139
|
+
.editor-actions button { padding:6px 9px }
|
|
140
|
+
#gate { padding:28px }
|
|
141
|
+
}
|
|
142
|
+
@media (prefers-reduced-motion:reduce) {
|
|
143
|
+
*, *::before, *::after { transition:none !important; scroll-behavior:auto !important }
|
|
144
|
+
}
|
package/src/embedder.js
CHANGED
|
@@ -9,6 +9,8 @@ export function getEmbedder() {
|
|
|
9
9
|
env.allowLocalModels = false;
|
|
10
10
|
extractorPromise = pipeline("feature-extraction", ONNX_MODEL_ID, {
|
|
11
11
|
dtype: "q8",
|
|
12
|
+
// Avoid retaining large native inference buffers between requests.
|
|
13
|
+
session_options: { enableCpuMemArena: false },
|
|
12
14
|
});
|
|
13
15
|
}
|
|
14
16
|
return extractorPromise;
|