total-recall-brain 3.41.5 → 3.41.6
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/bin/total-recall.mjs +7 -4
- package/frontend/dist/assets/index-4tGQfTa2.js +5605 -0
- package/frontend/dist/assets/index-DtwsDyFM.css +1 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +11 -0
- package/frontend/src/App.tsx +47 -122
- package/frontend/src/components/plugins/plugin-frame.ts +1 -0
- package/frontend/src/index.css +152 -86
- package/frontend/src/pages/HelpPage.tsx +13 -10
- package/frontend/src/pages/MemoryPage.tsx +28 -30
- package/frontend/src/pages/NetworkPage.tsx +3 -3
- package/frontend/src/pages/PluginsPage.tsx +6 -5
- package/frontend/src/pages/RulesPage.tsx +16 -12
- package/package.json +3 -2
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/code-quality/package.json +3 -0
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package.json +3 -0
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/embeddings/package.json +3 -0
- package/scaffold/.agent/skills/total-recall/plugins/git-sentinel/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/git-sentinel/package.json +3 -0
- package/scaffold/.agent/skills/total-recall/plugins/mesh/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/mesh/package.json +4 -1
- package/scaffold/.agent/skills/total-recall/plugins/mesh/src/core/mesh.mjs +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/capability/index.mjs +136 -7
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/cli.mjs +135 -26
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/package.json +4 -1
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/plugin.json +228 -9
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/skills/meta-harness/SKILL.md +24 -30
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/alerts.mjs +29 -16
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/cascade.mjs +73 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/coordinator.mjs +182 -365
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/dispatch.mjs +33 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/documentation.mjs +9 -3
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/executor.mjs +4 -4
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/agy.mjs +187 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/claude.mjs +275 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/cline.mjs +132 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/codex.mjs +187 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/cursor.mjs +158 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/devin.mjs +157 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/dsh.mjs +183 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/grok.mjs +132 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/hermes.mjs +173 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/index.mjs +87 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/openclaw.mjs +173 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate-adapters/pi.mjs +129 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/gate.mjs +12 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/json-reply.mjs +22 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/learner.mjs +72 -70
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/model-catalog.mjs +195 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/paths.mjs +11 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/pool.mjs +36 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/review.mjs +169 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/router.mjs +136 -346
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/runtime.mjs +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/ssss-store.mjs +20 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/telemetry.mjs +43 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/threads.mjs +156 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/worker.mjs +117 -35
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/worktree.mjs +51 -0
- package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/card.js +398 -57
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/cli.mjs +10 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/package-lock.json +3 -3
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/package.json +3 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/plugin.json +42 -190
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/vendor/openwiki.mjs +1 -1
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/vendor/skills/mermaid-diagrams/SKILL.md +44 -0
- package/scaffold/.agent/skills/total-recall/plugins/openwiki/vendor/skills/write-connector/SKILL.md +56 -0
- package/scaffold/.agent/skills/total-recall/plugins/security/package-lock.json +8 -8
- package/scaffold/.agent/skills/total-recall/plugins/security/package.json +3 -0
- package/src/cli/agent.mjs +12 -1
- package/src/cli/compact.mjs +2 -2
- package/src/cli/connect.mjs +56 -1
- package/src/cli/context.mjs +10 -7
- package/src/cli/doctor.mjs +5 -2
- package/src/cli/harness.mjs +62 -50
- package/src/cli/memory-entry.mjs +2 -2
- package/src/cli/preflight.mjs +152 -16
- package/src/cli/remember.mjs +19 -1
- package/src/cli/rules.mjs +54 -12
- package/src/cli/startup.mjs +1 -1
- package/src/cli/status.mjs +12 -2
- package/src/core/claude-hooks.mjs +41 -3
- package/src/core/cli-semantic-index.mjs +3 -2
- package/src/core/conflict-detector.mjs +23 -12
- package/src/core/context-compactor.mjs +2 -0
- package/src/core/context-policy.mjs +20 -0
- package/src/core/duplicate-guard.mjs +350 -0
- package/src/core/meta-harness.mjs +31 -11
- package/src/core/preflight-gate.mjs +2 -2
- package/src/core/preflight-receipt.mjs +28 -0
- package/src/core/scaffold-plugins.mjs +7 -0
- package/src/core/stdio-flush.mjs +23 -0
- package/src/core/surface.mjs +33 -10
- package/src/server/routes/plugins.mjs +2 -2
- package/frontend/dist/assets/index-BIQmqDKP.css +0 -1
- package/frontend/dist/assets/index-WT3gs-x6.js +0 -5631
- package/frontend/src/components/DaemonLogsTab.tsx +0 -54
- package/frontend/src/components/ResearchAgendaTab.tsx +0 -712
- package/frontend/src/components/TaskQueueTab.tsx +0 -193
- package/frontend/src/components/VoiceInput.tsx +0 -112
- package/frontend/src/pages/ChatPage.tsx +0 -1059
- package/frontend/src/pages/CollabPage.tsx +0 -470
- package/frontend/src/pages/DesignDocsPage.tsx +0 -621
- package/frontend/src/pages/FilesPage.tsx +0 -393
- package/frontend/src/pages/HealthPage.tsx +0 -359
- package/frontend/src/pages/InboxPage.tsx +0 -83
- package/frontend/src/pages/InstructionsPage.tsx +0 -583
- package/frontend/src/pages/IntegrationsPage.tsx +0 -761
- package/frontend/src/pages/MeshPage.css +0 -58
- package/frontend/src/pages/MeshPage.tsx +0 -1219
- package/frontend/src/pages/OkfPage.tsx +0 -535
- package/frontend/src/pages/SandboxPage.tsx +0 -113
- package/frontend/src/pages/SkillsPage.tsx +0 -1994
- package/frontend/src/pages/TasksPage.tsx +0 -427
- package/frontend/src/pages/UsagePage.tsx +0 -702
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/README.md +0 -65
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/cli.mjs +0 -76
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/package.json +0 -19
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/plugin.json +0 -266
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/src/adapters/dsh.mjs +0 -446
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/src/documentation.mjs +0 -152
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/src/executor.mjs +0 -71
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/src/runtime.mjs +0 -36
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/src/setup.mjs +0 -35
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/src/worker.mjs +0 -175
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/ui/DESIGN.md +0 -32
- package/scaffold/.agent/skills/total-recall/plugins/cli-agents/ui/card.js +0 -575
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState, useEffect, useCallback } from "react"
|
|
2
2
|
import { useSearchParams } from "react-router-dom"
|
|
3
|
-
import { listMemory, searchMemory, readMemory, fetchConflicts, resolveConflict, saveMemory, createMemory, deleteMemory, fetchSessions, deleteSession } from "../api"
|
|
3
|
+
import { listMemory, searchMemory, readMemory, fetchConflicts, resolveConflict, saveMemory, createMemory, deleteMemory, fetchSessions, deleteSession, getApiBase } from "../api"
|
|
4
4
|
import type { MemoryNode, Conflict } from "../types"
|
|
5
5
|
import type { SessionSummary } from "../api"
|
|
6
6
|
|
|
@@ -297,9 +297,10 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
297
297
|
}
|
|
298
298
|
}, [urlSlug, activeBrainId, nodes])
|
|
299
299
|
|
|
300
|
-
// Wire SSE Live Agent Monitor Streaming
|
|
300
|
+
// Wire SSE Live Agent Monitor Streaming
|
|
301
301
|
useEffect(() => {
|
|
302
|
-
const
|
|
302
|
+
const base = getApiBase() || window.location.origin
|
|
303
|
+
const sseUrl = `${base.replace(/\/+$/, '')}/stream`
|
|
303
304
|
const eventSource = new EventSource(sseUrl)
|
|
304
305
|
|
|
305
306
|
eventSource.onmessage = (event) => {
|
|
@@ -529,9 +530,9 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
529
530
|
|
|
530
531
|
{/* Action Buttons */}
|
|
531
532
|
<div style={{ display: "flex", justifyContent: "flex-end", gap: 12, marginTop: 12 }}>
|
|
532
|
-
<button className="btn btn-ghost" type="button" onClick={onCancel} style={{ fontSize: 13 }}>Cancel</button>
|
|
533
|
-
<button className="btn btn-purple" type="button" onClick={onSubmit} style={{ fontSize: 13 }}>
|
|
534
|
-
{isNew ? "
|
|
533
|
+
<button className="btn btn-ghost" type="button" onClick={onCancel} style={{ fontSize: 13, minHeight: 44, padding: "0 18px", borderRadius: "var(--radius-md, 10px)" }}>Cancel</button>
|
|
534
|
+
<button className="btn btn-purple" type="button" onClick={onSubmit} style={{ fontSize: 13, minHeight: 44, padding: "0 18px", borderRadius: "var(--radius-md, 10px)" }}>
|
|
535
|
+
{isNew ? "Create Memory Node" : "Save Changes"}
|
|
535
536
|
</button>
|
|
536
537
|
</div>
|
|
537
538
|
</div>
|
|
@@ -552,20 +553,20 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
552
553
|
</div>
|
|
553
554
|
|
|
554
555
|
{/* Tab Selection */}
|
|
555
|
-
<div style={{ display: "flex", background: "rgba(
|
|
556
|
+
<div style={{ display: "flex", background: "rgba(12, 18, 32, 0.72)", backdropFilter: "blur(16px)", padding: 4, borderRadius: "var(--radius-md, 10px)", border: "1px solid var(--border)" }}>
|
|
556
557
|
<button
|
|
557
558
|
className={`btn btn-sm ${activeTab === "vault" ? "btn-purple" : "btn-ghost"}`}
|
|
558
559
|
onClick={() => { setActiveTab("vault"); setSelected(null); setSearchParams({}); }}
|
|
559
|
-
style={{ borderRadius: 6, fontSize: 12, padding: "6px
|
|
560
|
+
style={{ borderRadius: 6, fontSize: 12, minHeight: 36, padding: "6px 14px", fontWeight: 600 }}
|
|
560
561
|
>
|
|
561
|
-
|
|
562
|
+
Active Nodes
|
|
562
563
|
</button>
|
|
563
564
|
<button
|
|
564
565
|
className={`btn btn-sm ${activeTab === "conflicts" ? "btn-cyan" : "btn-ghost"}`}
|
|
565
566
|
onClick={() => { setActiveTab("conflicts"); setSelected(null); setSearchParams({}); }}
|
|
566
|
-
style={{ borderRadius: 6, fontSize: 12, padding: "6px
|
|
567
|
+
style={{ borderRadius: 6, fontSize: 12, minHeight: 36, padding: "6px 14px", fontWeight: 600, display: "flex", alignItems: "center", gap: 6 }}
|
|
567
568
|
>
|
|
568
|
-
|
|
569
|
+
Quarantined Conflicts
|
|
569
570
|
{conflicts.length > 0 && (
|
|
570
571
|
<span style={{ background: "#ef4444", color: "#fff", fontSize: 9, padding: "1px 5px", borderRadius: 10, fontWeight: 700 }}>
|
|
571
572
|
{conflicts.length}
|
|
@@ -575,9 +576,9 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
575
576
|
<button
|
|
576
577
|
className={`btn btn-sm ${activeTab === "sessions" ? "btn-purple" : "btn-ghost"}`}
|
|
577
578
|
onClick={() => { setActiveTab("sessions"); setSelected(null); setSearchParams({}); }}
|
|
578
|
-
style={{ borderRadius: 6, fontSize: 12, padding: "6px
|
|
579
|
+
style={{ borderRadius: 6, fontSize: 12, minHeight: 36, padding: "6px 14px", fontWeight: 600 }}
|
|
579
580
|
>
|
|
580
|
-
|
|
581
|
+
Sessions
|
|
581
582
|
{sessionsTotal > 0 && (
|
|
582
583
|
<span style={{ background: "rgba(139,92,246,0.3)", color: "#a78bfa", fontSize: 9, padding: "1px 5px", borderRadius: 10, fontWeight: 700, marginLeft: 4 }}>
|
|
583
584
|
{sessionsTotal}
|
|
@@ -587,7 +588,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
587
588
|
</div>
|
|
588
589
|
</div>
|
|
589
590
|
|
|
590
|
-
{error && <div className="badge badge-error" style={{ alignSelf: "flex-start", marginBottom: 15 }}
|
|
591
|
+
{error && <div className="badge badge-error" style={{ alignSelf: "flex-start", marginBottom: 15 }}>{error}</div>}
|
|
591
592
|
|
|
592
593
|
{activeTab === "vault" ? (
|
|
593
594
|
<div className="memory-layout">
|
|
@@ -599,7 +600,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
599
600
|
className={`category-btn ${category === c ? "active" : ""}`}
|
|
600
601
|
onClick={() => { setCategory(c); setSearchParams({}); setIsCreating(false); setIsEditing(false); }}
|
|
601
602
|
>
|
|
602
|
-
<span>{c === "all" ? "
|
|
603
|
+
<span>{c === "all" ? "All Nodes" : c}</span>
|
|
603
604
|
{c === "all"
|
|
604
605
|
? <span className="category-count">{nodes.length}</span>
|
|
605
606
|
: categoryCounts[c]
|
|
@@ -611,7 +612,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
611
612
|
|
|
612
613
|
<button
|
|
613
614
|
className="btn btn-purple"
|
|
614
|
-
style={{ width: "100%", marginTop: 20, display: "flex", alignItems: "center", justifyContent: "center", gap: 8, fontSize: 13 }}
|
|
615
|
+
style={{ width: "100%", marginTop: 20, display: "flex", alignItems: "center", justifyContent: "center", gap: 8, fontSize: 13, minHeight: 44, borderRadius: "var(--radius-md, 10px)", fontWeight: 600 }}
|
|
615
616
|
onClick={() => {
|
|
616
617
|
setSelected(null);
|
|
617
618
|
setSearchParams({});
|
|
@@ -632,7 +633,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
632
633
|
setEditSupersedes("");
|
|
633
634
|
}}
|
|
634
635
|
>
|
|
635
|
-
|
|
636
|
+
Create New Node
|
|
636
637
|
</button>
|
|
637
638
|
</div>
|
|
638
639
|
<div className="memory-main">
|
|
@@ -710,14 +711,14 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
710
711
|
}}
|
|
711
712
|
style={{ fontSize: 12, border: "1px solid var(--border)" }}
|
|
712
713
|
>
|
|
713
|
-
|
|
714
|
+
Edit Node
|
|
714
715
|
</button>
|
|
715
716
|
<button
|
|
716
717
|
className="btn btn-ghost btn-sm"
|
|
717
718
|
onClick={() => handleDelete(selected.slug)}
|
|
718
|
-
style={{ fontSize: 12, borderColor: "rgba(239,68,68,0.2)", color: "#fca5a5" }}
|
|
719
|
+
style={{ fontSize: 12, minHeight: 36, padding: "0 12px", borderColor: "rgba(239,68,68,0.2)", color: "#fca5a5" }}
|
|
719
720
|
>
|
|
720
|
-
|
|
721
|
+
Delete
|
|
721
722
|
</button>
|
|
722
723
|
</div>
|
|
723
724
|
</div>
|
|
@@ -900,13 +901,13 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
900
901
|
)}
|
|
901
902
|
</div>
|
|
902
903
|
<div style={{ display: "flex", flexWrap: "wrap", gap: 16, fontSize: 11, color: "var(--text-tertiary)", marginTop: 8 }}>
|
|
903
|
-
<span
|
|
904
|
+
<span>{n.category}</span>
|
|
904
905
|
{n.importance !== undefined && (
|
|
905
906
|
<span style={{ color: "#fbbf24" }}>★ {n.importance}/5</span>
|
|
906
907
|
)}
|
|
907
908
|
{n.confidence !== undefined && (
|
|
908
909
|
<span style={{ display: "flex", alignItems: "center", gap: 4 }}>
|
|
909
|
-
|
|
910
|
+
{Math.round(n.confidence * 100)}%
|
|
910
911
|
</span>
|
|
911
912
|
)}
|
|
912
913
|
</div>
|
|
@@ -929,8 +930,7 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
929
930
|
|
|
930
931
|
{conflicts.length === 0 ? (
|
|
931
932
|
<div style={{ textAlign: "center", padding: 60, background: "rgba(255,255,255,0.02)", borderRadius: 12, border: "1px dashed var(--border)", color: "var(--text-tertiary)" }}>
|
|
932
|
-
<
|
|
933
|
-
<h4 style={{ color: "#fff", marginBottom: 6 }}>All Clear!</h4>
|
|
933
|
+
<h4 style={{ color: "#fff", marginBottom: 6 }}>All Clear</h4>
|
|
934
934
|
No memory conflicts enqueued or quarantined in `.agent/memory-inbox/conflicts/`.
|
|
935
935
|
</div>
|
|
936
936
|
) : (
|
|
@@ -1040,8 +1040,8 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
1040
1040
|
{activeTab === "sessions" && (
|
|
1041
1041
|
<div className="health-log" style={{ background: "rgba(15,23,42,0.45)", backdropFilter: "blur(12px)", border: "1px solid var(--border)", borderRadius: 12, padding: 24 }}>
|
|
1042
1042
|
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "center", marginBottom: 16 }}>
|
|
1043
|
-
<h2 style={{ margin: 0, color: "#fff", fontSize: 16 }}
|
|
1044
|
-
<button className="btn btn-ghost btn-sm" onClick={loadSessions} style={{ fontSize: 12 }}
|
|
1043
|
+
<h2 style={{ margin: 0, color: "#fff", fontSize: 16 }}>IDE Sessions ({sessionsTotal})</h2>
|
|
1044
|
+
<button className="btn btn-ghost btn-sm" onClick={loadSessions} style={{ fontSize: 12, minHeight: 36, padding: "0 12px" }}>Refresh</button>
|
|
1045
1045
|
</div>
|
|
1046
1046
|
|
|
1047
1047
|
{sessionsLoading ? (
|
|
@@ -1050,7 +1050,6 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
1050
1050
|
</div>
|
|
1051
1051
|
) : sessionsList.length === 0 ? (
|
|
1052
1052
|
<div style={{ textAlign: "center", padding: 40, color: "var(--text-tertiary)" }}>
|
|
1053
|
-
<span style={{ fontSize: 32, display: "block", marginBottom: 8 }}>📝</span>
|
|
1054
1053
|
No sessions ingested yet. Sessions appear here when the relay ships IDE conversation data.
|
|
1055
1054
|
</div>
|
|
1056
1055
|
) : (
|
|
@@ -1072,7 +1071,6 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
1072
1071
|
codex: "#10b981",
|
|
1073
1072
|
vscode: "#3b82f6",
|
|
1074
1073
|
cursor: "#06b6d4",
|
|
1075
|
-
"gemini-cli": "#ec4899",
|
|
1076
1074
|
}
|
|
1077
1075
|
const color = sourceColors[s.source || ""] || "var(--text-secondary)"
|
|
1078
1076
|
return (
|
|
@@ -1106,9 +1104,9 @@ export default function MemoryPage({ activeBrainId }: { activeBrainId?: string }
|
|
|
1106
1104
|
<button
|
|
1107
1105
|
className="btn btn-ghost btn-sm"
|
|
1108
1106
|
onClick={() => handleDeleteSession(s.id)}
|
|
1109
|
-
style={{ fontSize:
|
|
1107
|
+
style={{ fontSize: 11, padding: "4px 8px", color: "#fca5a5", borderColor: "rgba(239,68,68,0.2)" }}
|
|
1110
1108
|
>
|
|
1111
|
-
|
|
1109
|
+
Delete
|
|
1112
1110
|
</button>
|
|
1113
1111
|
</td>
|
|
1114
1112
|
</tr>
|
|
@@ -199,7 +199,7 @@ export default function NetworkPage() {
|
|
|
199
199
|
{/* Firewall Blocklist */}
|
|
200
200
|
<div className="card">
|
|
201
201
|
<div className="section-title">
|
|
202
|
-
|
|
202
|
+
Firewall Blocklist
|
|
203
203
|
<span className="badge badge-warning">{policy?.blocked_domains?.length ?? 0}</span>
|
|
204
204
|
</div>
|
|
205
205
|
|
|
@@ -247,7 +247,7 @@ export default function NetworkPage() {
|
|
|
247
247
|
|
|
248
248
|
{/* Global Limits Editor */}
|
|
249
249
|
<div className="card">
|
|
250
|
-
<div className="section-title"
|
|
250
|
+
<div className="section-title">Global Limits</div>
|
|
251
251
|
<div className="limits-form">
|
|
252
252
|
<div className="limits-row">
|
|
253
253
|
<span className="limits-label">Max Global Concurrency</span>
|
|
@@ -302,7 +302,7 @@ export default function NetworkPage() {
|
|
|
302
302
|
|
|
303
303
|
{/* Audit Log */}
|
|
304
304
|
<div className="card network-section-full">
|
|
305
|
-
<div className="section-title"
|
|
305
|
+
<div className="section-title">Audit Log</div>
|
|
306
306
|
|
|
307
307
|
<div className="audit-filters">
|
|
308
308
|
<input
|
|
@@ -632,17 +632,18 @@ export default function PluginsPage({ activeBrainId }: PluginsPageProps) {
|
|
|
632
632
|
|
|
633
633
|
const closeDetail = () => {
|
|
634
634
|
setDetail(null)
|
|
635
|
-
if (searchParams.has("id")) {
|
|
635
|
+
if (searchParams.has("id") || searchParams.has("plugin")) {
|
|
636
636
|
const next = new URLSearchParams(searchParams)
|
|
637
637
|
next.delete("id")
|
|
638
|
+
next.delete("plugin")
|
|
638
639
|
setSearchParams(next)
|
|
639
640
|
}
|
|
640
641
|
}
|
|
641
642
|
|
|
642
643
|
useEffect(() => {
|
|
643
|
-
const id = searchParams.get("id")
|
|
644
|
+
const id = searchParams.get("id") || searchParams.get("plugin")
|
|
644
645
|
if (!id || detail?.id === id) return
|
|
645
|
-
const match = installed.find((p) => p.id === id)
|
|
646
|
+
const match = installed.find((p) => p.id === id || p.id === `tr-plugin-${id}` || p.name === id)
|
|
646
647
|
if (match) openDetail(match)
|
|
647
648
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
648
649
|
}, [searchParams, installed])
|
|
@@ -1331,14 +1332,14 @@ export default function PluginsPage({ activeBrainId }: PluginsPageProps) {
|
|
|
1331
1332
|
|
|
1332
1333
|
<div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: "12px" }}>
|
|
1333
1334
|
<div style={{ background: "var(--bg-tertiary)", padding: "12px", borderRadius: "8px", border: "1px solid var(--border)" }}>
|
|
1334
|
-
<div style={{ fontWeight: 600, color: "#38bdf8", marginBottom: "4px" }}
|
|
1335
|
+
<div style={{ fontWeight: 600, color: "#38bdf8", marginBottom: "4px" }}>Private Plugins</div>
|
|
1335
1336
|
<div style={{ ...muted, fontSize: "12px", lineHeight: 1.4 }}>
|
|
1336
1337
|
Store directly inside <code style={mono}>.agent/skills/total-recall/plugins/<id></code> or link locally. Never shared outside this machine or project. Zero cloud exposure.
|
|
1337
1338
|
</div>
|
|
1338
1339
|
</div>
|
|
1339
1340
|
|
|
1340
1341
|
<div style={{ background: "var(--bg-tertiary)", padding: "12px", borderRadius: "8px", border: "1px solid var(--border)" }}>
|
|
1341
|
-
<div style={{ fontWeight: 600, color: "#a855f7", marginBottom: "4px" }}
|
|
1342
|
+
<div style={{ fontWeight: 600, color: "#a855f7", marginBottom: "4px" }}>Plugin Store Distribution</div>
|
|
1342
1343
|
<div style={{ ...muted, fontSize: "12px", lineHeight: 1.4 }}>
|
|
1343
1344
|
Deploy to the store via <code style={mono}>total-recall deploy-store <id></code>. Cryptographically signed and distributed across the mesh for team consumption.
|
|
1344
1345
|
</div>
|
|
@@ -81,21 +81,25 @@ export default function RulesPage({ activeBrainId }: { activeBrainId: string })
|
|
|
81
81
|
key={`${rule.scope}:${rule.slug}`}
|
|
82
82
|
data-testid="rule-card"
|
|
83
83
|
style={{
|
|
84
|
-
border: `1px solid ${isArchived ? '
|
|
84
|
+
border: `1px solid ${isArchived ? 'rgba(148, 163, 184, 0.12)' : colorCode}`,
|
|
85
85
|
opacity: isArchived ? 0.6 : 1,
|
|
86
|
-
borderRadius:
|
|
87
|
-
padding:
|
|
88
|
-
marginBottom:
|
|
89
|
-
background: '
|
|
86
|
+
borderRadius: 12,
|
|
87
|
+
padding: 18,
|
|
88
|
+
marginBottom: 14,
|
|
89
|
+
background: 'rgba(12, 18, 32, 0.72)',
|
|
90
|
+
backdropFilter: 'blur(16px)',
|
|
91
|
+
WebkitBackdropFilter: 'blur(16px)',
|
|
92
|
+
boxShadow: '0 4px 16px rgba(0, 0, 0, 0.25)',
|
|
90
93
|
display: 'flex',
|
|
91
94
|
flexDirection: 'column',
|
|
92
|
-
gap:
|
|
95
|
+
gap: 10,
|
|
96
|
+
transition: 'all var(--transition-fast)',
|
|
93
97
|
}}
|
|
94
98
|
>
|
|
95
99
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
96
|
-
<h4 style={{ margin: 0, fontSize: 16, color: 'var(--text-primary)' }}>{rule.title}</h4>
|
|
100
|
+
<h4 style={{ margin: 0, fontSize: 16, fontWeight: 600, color: 'var(--text-primary)' }}>{rule.title}</h4>
|
|
97
101
|
<div style={{ display: 'flex', gap: 8, alignItems: 'center' }}>
|
|
98
|
-
<span style={{ fontSize:
|
|
102
|
+
<span style={{ fontSize: 11, fontWeight: 500, color: 'var(--text-secondary)', background: 'rgba(148, 163, 184, 0.12)', border: '1px solid rgba(148, 163, 184, 0.15)', padding: '2px 8px', borderRadius: 6 }}>
|
|
99
103
|
{rule.scope} brain
|
|
100
104
|
</span>
|
|
101
105
|
<span style={{ fontSize: 12, color: 'gold' }} aria-label={`Importance ${stars} of 5`}>
|
|
@@ -103,21 +107,21 @@ export default function RulesPage({ activeBrainId }: { activeBrainId: string })
|
|
|
103
107
|
</span>
|
|
104
108
|
</div>
|
|
105
109
|
</div>
|
|
106
|
-
<div style={{ fontSize:
|
|
110
|
+
<div style={{ fontSize: 13.5, lineHeight: 1.6, color: 'var(--text-secondary)', whiteSpace: 'pre-wrap' }}>
|
|
107
111
|
{rule.body || '(no body)'}
|
|
108
112
|
</div>
|
|
109
|
-
<div style={{ display: 'flex', justifyContent: 'flex-end', marginTop:
|
|
113
|
+
<div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: 6 }}>
|
|
110
114
|
{isArchived ? (
|
|
111
115
|
<button
|
|
112
116
|
onClick={() => handleRestore(rule)}
|
|
113
|
-
style={{ padding: '
|
|
117
|
+
style={{ padding: '6px 12px', borderRadius: 6, background: 'rgba(148, 163, 184, 0.1)', border: '1px solid var(--border)', cursor: 'pointer', color: 'var(--text-primary)', fontSize: 12, fontWeight: 500 }}
|
|
114
118
|
>
|
|
115
119
|
Restore
|
|
116
120
|
</button>
|
|
117
121
|
) : (
|
|
118
122
|
<button
|
|
119
123
|
onClick={() => handleArchive(rule)}
|
|
120
|
-
style={{ padding: '
|
|
124
|
+
style={{ padding: '6px 12px', borderRadius: 6, background: 'rgba(148, 163, 184, 0.1)', border: '1px solid var(--border)', cursor: 'pointer', color: 'var(--text-primary)', fontSize: 12, fontWeight: 500 }}
|
|
121
125
|
>
|
|
122
126
|
Archive
|
|
123
127
|
</button>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "total-recall-brain",
|
|
3
|
-
"version": "3.41.
|
|
3
|
+
"version": "3.41.6",
|
|
4
4
|
"description": "The Vibe Coding Brain & Autonomous Software Factory: memory, rules, secrets, and 33 visual plugins automatically managed across all your devices.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -121,6 +121,7 @@
|
|
|
121
121
|
},
|
|
122
122
|
"overrides": {
|
|
123
123
|
"proxy-addr": "2.0.8",
|
|
124
|
-
"argparse": "2.0.1"
|
|
124
|
+
"argparse": "2.0.1",
|
|
125
|
+
"minimatch": "^11.0.4"
|
|
125
126
|
}
|
|
126
127
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@gregiteen/ssss-cli": "0.14.4"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"total-recall-brain": "3.41.
|
|
15
|
+
"total-recall-brain": "3.41.5"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"node_modules/@alcalzone/ansi-tokenize": {
|
|
@@ -1580,9 +1580,9 @@
|
|
|
1580
1580
|
},
|
|
1581
1581
|
"node_modules/@ssss/cli": {
|
|
1582
1582
|
"name": "@gregiteen/ssss-cli",
|
|
1583
|
-
"version": "0.14.
|
|
1584
|
-
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.
|
|
1585
|
-
"integrity": "sha512-
|
|
1583
|
+
"version": "0.14.4",
|
|
1584
|
+
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.4.tgz",
|
|
1585
|
+
"integrity": "sha512-R6JIgPRvS9xXp0xb6BYO3rauv+72r35GIiDrJcvbjPdTSHFZXr8/jRxFOgoF8yTed/5xyGFF3ey3DI9bOjmHVA==",
|
|
1586
1586
|
"dev": true,
|
|
1587
1587
|
"license": "ISC",
|
|
1588
1588
|
"bin": {
|
|
@@ -5543,9 +5543,9 @@
|
|
|
5543
5543
|
}
|
|
5544
5544
|
},
|
|
5545
5545
|
"node_modules/total-recall-brain": {
|
|
5546
|
-
"version": "3.41.
|
|
5547
|
-
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.
|
|
5548
|
-
"integrity": "sha512-
|
|
5546
|
+
"version": "3.41.5",
|
|
5547
|
+
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.5.tgz",
|
|
5548
|
+
"integrity": "sha512-gaW46xAtnFf+zfkv8LHYQLMzt27JjelyFggc8zAZafCnCJRbNSP8D02cbbcx49f3a70t/hkgA9RhJOY8HTqRFg==",
|
|
5549
5549
|
"dev": true,
|
|
5550
5550
|
"license": "MIT",
|
|
5551
5551
|
"workspaces": [
|
|
@@ -5553,7 +5553,7 @@
|
|
|
5553
5553
|
],
|
|
5554
5554
|
"dependencies": {
|
|
5555
5555
|
"@simplewebauthn/server": "^13.3.2",
|
|
5556
|
-
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.
|
|
5556
|
+
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.4",
|
|
5557
5557
|
"bcrypt": "^6.0.0",
|
|
5558
5558
|
"better-sqlite3": "^12.11.1",
|
|
5559
5559
|
"cookie-parser": "^1.4.7",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@gregiteen/ssss-cli": "0.14.4"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"total-recall-brain": "3.41.
|
|
15
|
+
"total-recall-brain": "3.41.5"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"node_modules/@alcalzone/ansi-tokenize": {
|
|
@@ -1580,9 +1580,9 @@
|
|
|
1580
1580
|
},
|
|
1581
1581
|
"node_modules/@ssss/cli": {
|
|
1582
1582
|
"name": "@gregiteen/ssss-cli",
|
|
1583
|
-
"version": "0.14.
|
|
1584
|
-
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.
|
|
1585
|
-
"integrity": "sha512-
|
|
1583
|
+
"version": "0.14.4",
|
|
1584
|
+
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.4.tgz",
|
|
1585
|
+
"integrity": "sha512-R6JIgPRvS9xXp0xb6BYO3rauv+72r35GIiDrJcvbjPdTSHFZXr8/jRxFOgoF8yTed/5xyGFF3ey3DI9bOjmHVA==",
|
|
1586
1586
|
"dev": true,
|
|
1587
1587
|
"license": "ISC",
|
|
1588
1588
|
"bin": {
|
|
@@ -5543,9 +5543,9 @@
|
|
|
5543
5543
|
}
|
|
5544
5544
|
},
|
|
5545
5545
|
"node_modules/total-recall-brain": {
|
|
5546
|
-
"version": "3.41.
|
|
5547
|
-
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.
|
|
5548
|
-
"integrity": "sha512-
|
|
5546
|
+
"version": "3.41.5",
|
|
5547
|
+
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.5.tgz",
|
|
5548
|
+
"integrity": "sha512-gaW46xAtnFf+zfkv8LHYQLMzt27JjelyFggc8zAZafCnCJRbNSP8D02cbbcx49f3a70t/hkgA9RhJOY8HTqRFg==",
|
|
5549
5549
|
"dev": true,
|
|
5550
5550
|
"license": "MIT",
|
|
5551
5551
|
"workspaces": [
|
|
@@ -5553,7 +5553,7 @@
|
|
|
5553
5553
|
],
|
|
5554
5554
|
"dependencies": {
|
|
5555
5555
|
"@simplewebauthn/server": "^13.3.2",
|
|
5556
|
-
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.
|
|
5556
|
+
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.4",
|
|
5557
5557
|
"bcrypt": "^6.0.0",
|
|
5558
5558
|
"better-sqlite3": "^12.11.1",
|
|
5559
5559
|
"cookie-parser": "^1.4.7",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@gregiteen/ssss-cli": "0.14.4"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"total-recall-brain": "3.41.
|
|
15
|
+
"total-recall-brain": "3.41.5"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"node_modules/@alcalzone/ansi-tokenize": {
|
|
@@ -1590,9 +1590,9 @@
|
|
|
1590
1590
|
},
|
|
1591
1591
|
"node_modules/@ssss/cli": {
|
|
1592
1592
|
"name": "@gregiteen/ssss-cli",
|
|
1593
|
-
"version": "0.14.
|
|
1594
|
-
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.
|
|
1595
|
-
"integrity": "sha512-
|
|
1593
|
+
"version": "0.14.4",
|
|
1594
|
+
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.4.tgz",
|
|
1595
|
+
"integrity": "sha512-R6JIgPRvS9xXp0xb6BYO3rauv+72r35GIiDrJcvbjPdTSHFZXr8/jRxFOgoF8yTed/5xyGFF3ey3DI9bOjmHVA==",
|
|
1596
1596
|
"dev": true,
|
|
1597
1597
|
"license": "ISC",
|
|
1598
1598
|
"bin": {
|
|
@@ -5539,9 +5539,9 @@
|
|
|
5539
5539
|
}
|
|
5540
5540
|
},
|
|
5541
5541
|
"node_modules/total-recall-brain": {
|
|
5542
|
-
"version": "3.41.
|
|
5543
|
-
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.
|
|
5544
|
-
"integrity": "sha512-
|
|
5542
|
+
"version": "3.41.5",
|
|
5543
|
+
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.5.tgz",
|
|
5544
|
+
"integrity": "sha512-gaW46xAtnFf+zfkv8LHYQLMzt27JjelyFggc8zAZafCnCJRbNSP8D02cbbcx49f3a70t/hkgA9RhJOY8HTqRFg==",
|
|
5545
5545
|
"dev": true,
|
|
5546
5546
|
"license": "MIT",
|
|
5547
5547
|
"workspaces": [
|
|
@@ -5549,7 +5549,7 @@
|
|
|
5549
5549
|
],
|
|
5550
5550
|
"dependencies": {
|
|
5551
5551
|
"@simplewebauthn/server": "^13.3.2",
|
|
5552
|
-
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.
|
|
5552
|
+
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.4",
|
|
5553
5553
|
"bcrypt": "^6.0.0",
|
|
5554
5554
|
"better-sqlite3": "^12.11.1",
|
|
5555
5555
|
"cookie-parser": "^1.4.7",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@gregiteen/ssss-cli": "0.14.4"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"total-recall-brain": "3.41.
|
|
15
|
+
"total-recall-brain": "3.41.5",
|
|
16
16
|
"vitest": "^4.1.10"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
@@ -1888,9 +1888,9 @@
|
|
|
1888
1888
|
},
|
|
1889
1889
|
"node_modules/@ssss/cli": {
|
|
1890
1890
|
"name": "@gregiteen/ssss-cli",
|
|
1891
|
-
"version": "0.14.
|
|
1892
|
-
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.
|
|
1893
|
-
"integrity": "sha512-
|
|
1891
|
+
"version": "0.14.4",
|
|
1892
|
+
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.4.tgz",
|
|
1893
|
+
"integrity": "sha512-R6JIgPRvS9xXp0xb6BYO3rauv+72r35GIiDrJcvbjPdTSHFZXr8/jRxFOgoF8yTed/5xyGFF3ey3DI9bOjmHVA==",
|
|
1894
1894
|
"dev": true,
|
|
1895
1895
|
"license": "ISC",
|
|
1896
1896
|
"bin": {
|
|
@@ -6533,9 +6533,9 @@
|
|
|
6533
6533
|
}
|
|
6534
6534
|
},
|
|
6535
6535
|
"node_modules/total-recall-brain": {
|
|
6536
|
-
"version": "3.41.
|
|
6537
|
-
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.
|
|
6538
|
-
"integrity": "sha512-
|
|
6536
|
+
"version": "3.41.5",
|
|
6537
|
+
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.5.tgz",
|
|
6538
|
+
"integrity": "sha512-gaW46xAtnFf+zfkv8LHYQLMzt27JjelyFggc8zAZafCnCJRbNSP8D02cbbcx49f3a70t/hkgA9RhJOY8HTqRFg==",
|
|
6539
6539
|
"dev": true,
|
|
6540
6540
|
"license": "MIT",
|
|
6541
6541
|
"workspaces": [
|
|
@@ -6543,7 +6543,7 @@
|
|
|
6543
6543
|
],
|
|
6544
6544
|
"dependencies": {
|
|
6545
6545
|
"@simplewebauthn/server": "^13.3.2",
|
|
6546
|
-
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.
|
|
6546
|
+
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.4",
|
|
6547
6547
|
"bcrypt": "^6.0.0",
|
|
6548
6548
|
"better-sqlite3": "^12.11.1",
|
|
6549
6549
|
"cookie-parser": "^1.4.7",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"jsdom": "^29.1.1",
|
|
17
17
|
"supertest": "^7.3.1",
|
|
18
|
-
"total-recall-brain": "3.41.
|
|
18
|
+
"total-recall-brain": "3.41.5",
|
|
19
19
|
"vitest": "^4.1.12"
|
|
20
20
|
}
|
|
21
21
|
},
|
|
@@ -2136,9 +2136,9 @@
|
|
|
2136
2136
|
},
|
|
2137
2137
|
"node_modules/@ssss/cli": {
|
|
2138
2138
|
"name": "@gregiteen/ssss-cli",
|
|
2139
|
-
"version": "0.14.
|
|
2140
|
-
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.
|
|
2141
|
-
"integrity": "sha512-
|
|
2139
|
+
"version": "0.14.4",
|
|
2140
|
+
"resolved": "https://registry.npmjs.org/@gregiteen/ssss-cli/-/ssss-cli-0.14.4.tgz",
|
|
2141
|
+
"integrity": "sha512-R6JIgPRvS9xXp0xb6BYO3rauv+72r35GIiDrJcvbjPdTSHFZXr8/jRxFOgoF8yTed/5xyGFF3ey3DI9bOjmHVA==",
|
|
2142
2142
|
"dev": true,
|
|
2143
2143
|
"license": "ISC",
|
|
2144
2144
|
"bin": {
|
|
@@ -7177,9 +7177,9 @@
|
|
|
7177
7177
|
}
|
|
7178
7178
|
},
|
|
7179
7179
|
"node_modules/total-recall-brain": {
|
|
7180
|
-
"version": "3.41.
|
|
7181
|
-
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.
|
|
7182
|
-
"integrity": "sha512-
|
|
7180
|
+
"version": "3.41.5",
|
|
7181
|
+
"resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.41.5.tgz",
|
|
7182
|
+
"integrity": "sha512-gaW46xAtnFf+zfkv8LHYQLMzt27JjelyFggc8zAZafCnCJRbNSP8D02cbbcx49f3a70t/hkgA9RhJOY8HTqRFg==",
|
|
7183
7183
|
"dev": true,
|
|
7184
7184
|
"license": "MIT",
|
|
7185
7185
|
"workspaces": [
|
|
@@ -7187,7 +7187,7 @@
|
|
|
7187
7187
|
],
|
|
7188
7188
|
"dependencies": {
|
|
7189
7189
|
"@simplewebauthn/server": "^13.3.2",
|
|
7190
|
-
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.
|
|
7190
|
+
"@ssss/cli": "npm:@gregiteen/ssss-cli@0.14.4",
|
|
7191
7191
|
"bcrypt": "^6.0.0",
|
|
7192
7192
|
"better-sqlite3": "^12.11.1",
|
|
7193
7193
|
"cookie-parser": "^1.4.7",
|
|
@@ -88,7 +88,7 @@ function normalizeNode(node, self = false) {
|
|
|
88
88
|
hostname: normalizeHostname(node?.DNSName) || node?.HostName || null,
|
|
89
89
|
// The name the machine reports for itself, which is what the control
|
|
90
90
|
// server lists it under. It differs from the DNS name whenever the node was
|
|
91
|
-
// renamed (a
|
|
91
|
+
// renamed (a host listed as `web-1` answers as `cloud.mesh…`),
|
|
92
92
|
// and it is not unique, so it is an identity to match, never a key.
|
|
93
93
|
os_hostname: node?.HostName || null,
|
|
94
94
|
ip: node?.TailscaleIPs?.[0] || null,
|