mop-agent 0.1.11 → 0.1.12
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.
|
@@ -127,7 +127,6 @@ export default function AssistantPage() {
|
|
|
127
127
|
);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
const selectStyle: CSSProperties = { color: "#2d4a3e", border: "1px solid rgba(45,74,62,.42)", padding: "6px 8px", background: "#fffdf2" };
|
|
131
130
|
const assistantLogo: CSSProperties = { width: 86, height: 86, display: "grid", placeItems: "center" };
|
|
132
131
|
const promptGrid: CSSProperties = { width: "min(100%, 650px)", display: "grid", gridTemplateColumns: "repeat(2,minmax(0,1fr))", gap: 10, marginTop: 28 };
|
|
133
132
|
const promptCard: CSSProperties = { display: "flex", justifyContent: "space-between", padding: "14px 15px", border: "1px solid rgba(45,74,62,.38)", borderBottomWidth: 3, background: "#fffdf2", color: "#2d4a3e", cursor: "pointer", textAlign: "left" };
|
package/apps/web/app/globals.css
CHANGED
|
@@ -247,28 +247,35 @@ button {
|
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
.mop-nav-section nav { display: grid; gap: 4px; }
|
|
250
|
-
.mop-nav-section a
|
|
250
|
+
.mop-nav-section a,
|
|
251
|
+
.mop-nav-section button {
|
|
251
252
|
display: flex;
|
|
252
253
|
align-items: center;
|
|
253
254
|
gap: 11px;
|
|
255
|
+
width: 100%;
|
|
254
256
|
min-height: 43px;
|
|
255
257
|
padding: 8px 12px;
|
|
256
258
|
color: rgba(254, 249, 225, .78);
|
|
257
259
|
border: 1px solid transparent;
|
|
260
|
+
background: transparent;
|
|
261
|
+
text-align: left;
|
|
258
262
|
text-decoration: none;
|
|
259
263
|
font-family: "SFMono-Regular", Consolas, monospace;
|
|
260
264
|
font-size: 12px;
|
|
261
265
|
font-weight: 800;
|
|
262
266
|
letter-spacing: .055em;
|
|
263
267
|
text-transform: uppercase;
|
|
268
|
+
cursor: pointer;
|
|
264
269
|
}
|
|
265
270
|
|
|
266
|
-
.mop-nav-section a:hover
|
|
271
|
+
.mop-nav-section a:hover,
|
|
272
|
+
.mop-nav-section button:hover {
|
|
267
273
|
color: var(--mop-cream);
|
|
268
274
|
background: rgba(254, 249, 225, .07);
|
|
269
275
|
}
|
|
270
276
|
|
|
271
|
-
.mop-nav-section a.is-active
|
|
277
|
+
.mop-nav-section a.is-active,
|
|
278
|
+
.mop-nav-section button.is-active {
|
|
272
279
|
color: #ff8a3d;
|
|
273
280
|
border-color: rgba(254, 249, 225, .18);
|
|
274
281
|
background: rgba(254, 249, 225, .09);
|
|
@@ -378,15 +385,53 @@ button {
|
|
|
378
385
|
flex-direction: column;
|
|
379
386
|
}
|
|
380
387
|
|
|
388
|
+
/* Toolbar lives inside the dark maroon topbar, so its text is light. */
|
|
381
389
|
.mop-assistant-toolbar {
|
|
382
|
-
|
|
390
|
+
width: 100%;
|
|
383
391
|
display: flex;
|
|
384
392
|
align-items: center;
|
|
385
393
|
justify-content: space-between;
|
|
386
394
|
gap: 16px;
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
395
|
+
}
|
|
396
|
+
.mop-assistant-status {
|
|
397
|
+
display: flex;
|
|
398
|
+
align-items: center;
|
|
399
|
+
gap: 9px;
|
|
400
|
+
min-width: 0;
|
|
401
|
+
}
|
|
402
|
+
.mop-assistant-status strong {
|
|
403
|
+
font-family: "SFMono-Regular", Consolas, monospace;
|
|
404
|
+
font-size: 13px;
|
|
405
|
+
letter-spacing: .08em;
|
|
406
|
+
text-transform: uppercase;
|
|
407
|
+
color: var(--mop-cream);
|
|
408
|
+
}
|
|
409
|
+
.mop-assistant-provider {
|
|
410
|
+
overflow: hidden;
|
|
411
|
+
text-overflow: ellipsis;
|
|
412
|
+
white-space: nowrap;
|
|
413
|
+
color: rgba(254, 249, 225, .66);
|
|
414
|
+
font-size: 12px;
|
|
415
|
+
}
|
|
416
|
+
.mop-assistant-scope {
|
|
417
|
+
display: flex;
|
|
418
|
+
align-items: center;
|
|
419
|
+
gap: 8px;
|
|
420
|
+
flex: 0 0 auto;
|
|
421
|
+
color: rgba(254, 249, 225, .82);
|
|
422
|
+
font-family: "SFMono-Regular", Consolas, monospace;
|
|
423
|
+
font-size: 10px;
|
|
424
|
+
font-weight: 800;
|
|
425
|
+
letter-spacing: .12em;
|
|
426
|
+
text-transform: uppercase;
|
|
427
|
+
}
|
|
428
|
+
.mop-assistant-scope select {
|
|
429
|
+
color: var(--mop-green);
|
|
430
|
+
background: var(--mop-paper);
|
|
431
|
+
border: 1px solid rgba(254, 249, 225, .32);
|
|
432
|
+
padding: 6px 8px;
|
|
433
|
+
font-family: "SFMono-Regular", Consolas, monospace;
|
|
434
|
+
font-size: 12px;
|
|
390
435
|
}
|
|
391
436
|
|
|
392
437
|
.mop-assistant-conversation { flex: 1; overflow-y: auto; padding: 0 28px; }
|
|
@@ -417,26 +462,6 @@ button {
|
|
|
417
462
|
}
|
|
418
463
|
|
|
419
464
|
|
|
420
|
-
.mop-settings-nav { padding: 9px; }
|
|
421
|
-
.mop-settings-nav button {
|
|
422
|
-
width: 100%;
|
|
423
|
-
display: flex;
|
|
424
|
-
align-items: center;
|
|
425
|
-
gap: 10px;
|
|
426
|
-
padding: 12px;
|
|
427
|
-
border: 1px solid transparent;
|
|
428
|
-
background: transparent;
|
|
429
|
-
color: var(--mop-green);
|
|
430
|
-
text-align: left;
|
|
431
|
-
cursor: pointer;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
.mop-settings-nav button.is-active {
|
|
435
|
-
color: var(--mop-cream);
|
|
436
|
-
border-color: var(--mop-red);
|
|
437
|
-
background: var(--mop-red);
|
|
438
|
-
}
|
|
439
|
-
|
|
440
465
|
.mop-settings-content { padding: clamp(18px, 3vw, 30px); }
|
|
441
466
|
.mop-settings-content th,
|
|
442
467
|
.mop-settings-content td {
|
|
@@ -498,41 +523,12 @@ button {
|
|
|
498
523
|
}
|
|
499
524
|
.mop-app-main { min-height: calc(100vh - 62px); }
|
|
500
525
|
.mop-assistant-page { min-height: calc(100vh - 62px); }
|
|
501
|
-
.mop-assistant-toolbar {
|
|
526
|
+
.mop-assistant-toolbar { gap: 9px; }
|
|
527
|
+
.mop-assistant-status { display: none; }
|
|
502
528
|
.mop-assistant-conversation { padding: 0 16px; }
|
|
503
529
|
.mop-assistant-composer-wrap { padding: 26px 12px 12px; }
|
|
504
530
|
.mop-settings-grid { grid-template-columns: 1fr; }
|
|
505
|
-
.mop-settings-nav { display: flex; gap: 7px; }
|
|
506
|
-
.mop-settings-nav button { justify-content: center; }
|
|
507
531
|
.mop-user-invite-form { grid-template-columns: 1fr !important; }
|
|
508
|
-
.mop-settings-sidebar {
|
|
509
|
-
position: fixed;
|
|
510
|
-
top: 62px;
|
|
511
|
-
left: 0;
|
|
512
|
-
bottom: 0;
|
|
513
|
-
width: min(82vw, 280px);
|
|
514
|
-
height: auto;
|
|
515
|
-
transform: translateX(-105%);
|
|
516
|
-
transition: transform 160ms steps(4, end);
|
|
517
|
-
display: flex !important;
|
|
518
|
-
flex-direction: column !important;
|
|
519
|
-
}
|
|
520
|
-
.mop-settings-sidebar.is-open {
|
|
521
|
-
transform: translateX(0);
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
.mop-settings-sidebar {
|
|
526
|
-
grid-area: sidebar;
|
|
527
|
-
position: sticky;
|
|
528
|
-
top: 70px;
|
|
529
|
-
height: calc(100vh - 70px);
|
|
530
|
-
z-index: 40;
|
|
531
|
-
display: flex;
|
|
532
|
-
flex-direction: column;
|
|
533
|
-
overflow-y: auto;
|
|
534
|
-
padding: 15px 9px 12px;
|
|
535
|
-
border-right: 2px solid rgba(45, 74, 62, .46);
|
|
536
532
|
}
|
|
537
533
|
|
|
538
534
|
.mop-back-workspace-btn {
|
|
@@ -33,9 +33,6 @@ export function useMemoryCore() {
|
|
|
33
33
|
return context;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const selectStyle = { color: "#2d4a3e", border: "1px solid rgba(45,74,62,.42)", padding: "6px 8px", background: "#fffdf2" };
|
|
37
|
-
|
|
38
|
-
|
|
39
36
|
function pageTitle(pathname: string): string {
|
|
40
37
|
if (pathname === "/assistant") return "Assistant";
|
|
41
38
|
if (pathname === "/brain/graph") return "Knowledge Graph";
|
|
@@ -107,16 +104,17 @@ export function AppShell({ viewer, children }: { viewer: AppViewer; children: Re
|
|
|
107
104
|
☰
|
|
108
105
|
</button>
|
|
109
106
|
{pathname === "/assistant" ? (
|
|
110
|
-
<div className="mop-assistant-toolbar"
|
|
111
|
-
<div>
|
|
112
|
-
<
|
|
113
|
-
<
|
|
107
|
+
<div className="mop-assistant-toolbar">
|
|
108
|
+
<div className="mop-assistant-status">
|
|
109
|
+
<span className="mop-live-dot" />
|
|
110
|
+
<strong>LIVE ASSISTANT</strong>
|
|
111
|
+
<span className="mop-assistant-provider">
|
|
114
112
|
{provider.configured ? `${provider.provider}${provider.model ? ` · ${provider.model}` : ""}` : "offline demo"}
|
|
115
113
|
</span>
|
|
116
114
|
</div>
|
|
117
|
-
<label
|
|
118
|
-
MEMORY SCOPE
|
|
119
|
-
<select value={selectedProject} onChange={(e) => setSelectedProject(e.target.value)}
|
|
115
|
+
<label className="mop-assistant-scope">
|
|
116
|
+
MEMORY SCOPE
|
|
117
|
+
<select value={selectedProject} onChange={(e) => setSelectedProject(e.target.value)}>
|
|
120
118
|
<option value="">All memory</option>
|
|
121
119
|
{projects.map((project) => <option key={project.id} value={project.id}>{project.name}</option>)}
|
|
122
120
|
</select>
|
|
@@ -131,7 +129,7 @@ export function AppShell({ viewer, children }: { viewer: AppViewer; children: Re
|
|
|
131
129
|
<div className="mop-topbar-center">MOP MEMORYCORE</div>
|
|
132
130
|
<div className="mop-topbar-meta">
|
|
133
131
|
<span>{isAdmin ? "ADMIN" : "MEMBER"}</span>
|
|
134
|
-
<span className="mop-version">v0.1.
|
|
132
|
+
<span className="mop-version">v0.1.12</span>
|
|
135
133
|
</div>
|
|
136
134
|
</>
|
|
137
135
|
)}
|
|
@@ -140,19 +138,21 @@ export function AppShell({ viewer, children }: { viewer: AppViewer; children: Re
|
|
|
140
138
|
|
|
141
139
|
{menuOpen && <button className="mop-sidebar-scrim" aria-label="Close navigation" onClick={() => setMenuOpen(false)} />}
|
|
142
140
|
|
|
143
|
-
<aside className={
|
|
144
|
-
? `mop-settings-nav mop-panel mop-settings-sidebar${menuOpen ? " is-open" : ""}`
|
|
145
|
-
: `mop-app-sidebar${menuOpen ? " is-open" : ""}`}
|
|
146
|
-
>
|
|
141
|
+
<aside className={`mop-app-sidebar${menuOpen ? " is-open" : ""}`}>
|
|
147
142
|
{isSettings ? (
|
|
148
|
-
|
|
149
|
-
<
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
143
|
+
<div className="mop-nav-section">
|
|
144
|
+
<p>SETTINGS</p>
|
|
145
|
+
<nav>
|
|
146
|
+
<button className={settingsSection === "providers" ? "is-active" : ""} onClick={() => { selectSection("providers"); setMenuOpen(false); }}>
|
|
147
|
+
<span className="mop-nav-icon">◇</span>
|
|
148
|
+
<span>Providers</span>
|
|
149
|
+
</button>
|
|
150
|
+
<button className={settingsSection === "users" ? "is-active" : ""} onClick={() => { selectSection("users"); setMenuOpen(false); }}>
|
|
151
|
+
<span className="mop-nav-icon">♙</span>
|
|
152
|
+
<span>Users</span>
|
|
153
|
+
</button>
|
|
154
|
+
</nav>
|
|
155
|
+
</div>
|
|
156
156
|
) : (
|
|
157
157
|
<>
|
|
158
158
|
<div className="mop-nav-section">
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mop-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "mop-agent",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.12",
|
|
10
10
|
"license": "UNLICENSED",
|
|
11
11
|
"workspaces": [
|
|
12
12
|
"packages/*",
|
package/package.json
CHANGED