@polderlabs/bizar 4.4.13 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/bizar-dash/CHANGELOG.md +37 -276
  2. package/bizar-dash/dist/assets/__vite-browser-external-BIHI7g3E.js +2 -0
  3. package/bizar-dash/dist/assets/__vite-browser-external-BIHI7g3E.js.map +1 -0
  4. package/bizar-dash/dist/assets/main-eWZ4NlCL.css +1 -0
  5. package/bizar-dash/dist/assets/main-usWhlPWa.js +362 -0
  6. package/bizar-dash/dist/assets/main-usWhlPWa.js.map +1 -0
  7. package/bizar-dash/dist/assets/{mobile-DSb-t42Y.js → mobile-DQLFCjwJ.js} +2 -2
  8. package/bizar-dash/dist/assets/{mobile-DSb-t42Y.js.map → mobile-DQLFCjwJ.js.map} +1 -1
  9. package/bizar-dash/dist/assets/mobile-O6ANdD4W.js +352 -0
  10. package/bizar-dash/dist/assets/mobile-O6ANdD4W.js.map +1 -0
  11. package/bizar-dash/dist/index.html +3 -3
  12. package/bizar-dash/dist/mobile.html +2 -2
  13. package/bizar-dash/skills/agent-baseline/SKILL.md +80 -0
  14. package/bizar-dash/skills/bizar/SKILL.md +116 -0
  15. package/bizar-dash/skills/chat/SKILL.md +74 -0
  16. package/bizar-dash/skills/headroom/SKILL.md +94 -0
  17. package/bizar-dash/skills/lightrag/SKILL.md +86 -0
  18. package/bizar-dash/skills/minimax/SKILL.md +80 -0
  19. package/bizar-dash/skills/obsidian/SKILL.md +68 -0
  20. package/bizar-dash/skills/providers/SKILL.md +75 -0
  21. package/bizar-dash/skills/sdk/SKILL.md +138 -0
  22. package/bizar-dash/skills/self-improvement/SKILL.md +53 -0
  23. package/bizar-dash/skills/skills-cli/SKILL.md +94 -0
  24. package/bizar-dash/skills/usage/SKILL.md +62 -0
  25. package/bizar-dash/src/server/api.mjs +18 -0
  26. package/bizar-dash/src/server/headroom.mjs +645 -0
  27. package/bizar-dash/src/server/memory-lightrag.mjs +272 -2
  28. package/bizar-dash/src/server/memory-obsidian.mjs +230 -0
  29. package/bizar-dash/src/server/memory-store.mjs +189 -0
  30. package/bizar-dash/src/server/minimax-usage-store.mjs +372 -0
  31. package/bizar-dash/src/server/minimax.mjs +196 -5
  32. package/bizar-dash/src/server/providers-store.mjs +956 -0
  33. package/bizar-dash/src/server/routes/_shared.mjs +17 -0
  34. package/bizar-dash/src/server/routes/config.mjs +52 -1
  35. package/bizar-dash/src/server/routes/env-vars.mjs +165 -0
  36. package/bizar-dash/src/server/routes/headroom.mjs +126 -0
  37. package/bizar-dash/src/server/routes/lightrag.mjs +154 -0
  38. package/bizar-dash/src/server/routes/memory.mjs +668 -1
  39. package/bizar-dash/src/server/routes/opencode-session-detail.mjs +14 -29
  40. package/bizar-dash/src/server/routes/opencode-sessions.mjs +205 -3
  41. package/bizar-dash/src/server/routes/providers.mjs +266 -5
  42. package/bizar-dash/src/server/routes/skills.mjs +32 -43
  43. package/bizar-dash/src/server/routes/update.mjs +340 -0
  44. package/bizar-dash/src/server/routes/usage.mjs +136 -0
  45. package/bizar-dash/src/server/serve-info.mjs +135 -4
  46. package/bizar-dash/src/server/server.mjs +20 -0
  47. package/bizar-dash/src/server/skills-store.mjs +152 -262
  48. package/bizar-dash/src/web/App.tsx +120 -29
  49. package/bizar-dash/src/web/components/EnvVarManager.tsx +247 -0
  50. package/bizar-dash/src/web/components/HeadroomSettings.tsx +418 -0
  51. package/bizar-dash/src/web/components/HeadroomStatus.tsx +158 -0
  52. package/bizar-dash/src/web/components/SettingsSearch.tsx +213 -0
  53. package/bizar-dash/src/web/components/Topbar.tsx +2 -1
  54. package/bizar-dash/src/web/components/UsageChart.tsx +250 -0
  55. package/bizar-dash/src/web/components/UsageTable.tsx +90 -0
  56. package/bizar-dash/src/web/components/chat/ChatComposer.tsx +21 -25
  57. package/bizar-dash/src/web/components/chat/ChatInfoPanel.tsx +199 -37
  58. package/bizar-dash/src/web/components/chat/ChatThread.tsx +29 -17
  59. package/bizar-dash/src/web/components/chat/FloatingComposer.tsx +7 -1
  60. package/bizar-dash/src/web/components/chat/InfoPanel.tsx +71 -6
  61. package/bizar-dash/src/web/components/chat/useChat.ts +751 -257
  62. package/bizar-dash/src/web/lib/api.ts +43 -0
  63. package/bizar-dash/src/web/lib/types.ts +16 -0
  64. package/bizar-dash/src/web/main.tsx +2 -0
  65. package/bizar-dash/src/web/mobile/views/MobileChat.tsx +110 -35
  66. package/bizar-dash/src/web/styles/chat.css +135 -1
  67. package/bizar-dash/src/web/styles/main.css +46 -0
  68. package/bizar-dash/src/web/styles/memory.css +955 -0
  69. package/bizar-dash/src/web/styles/minimax-usage.css +335 -0
  70. package/bizar-dash/src/web/styles/settings.css +418 -0
  71. package/bizar-dash/src/web/styles/skills.css +302 -0
  72. package/bizar-dash/src/web/styles/tasks.css +288 -0
  73. package/bizar-dash/src/web/views/Chat.tsx +276 -48
  74. package/bizar-dash/src/web/views/Config.tsx +3 -2065
  75. package/bizar-dash/src/web/views/Memory.tsx +140 -0
  76. package/bizar-dash/src/web/views/MiniMaxUsage.tsx +476 -461
  77. package/bizar-dash/src/web/views/Overview.tsx +3 -0
  78. package/bizar-dash/src/web/views/Settings.tsx +36 -0
  79. package/bizar-dash/src/web/views/Skills.tsx +208 -260
  80. package/bizar-dash/src/web/views/Tasks.tsx +348 -1119
  81. package/bizar-dash/src/web/views/memory/ConfigPanel.tsx +289 -0
  82. package/bizar-dash/src/web/views/memory/GitSyncPanel.tsx +220 -0
  83. package/bizar-dash/src/web/views/memory/LightragPanel.tsx +307 -0
  84. package/bizar-dash/src/web/views/memory/MemoryOverview.tsx +354 -0
  85. package/bizar-dash/src/web/views/memory/MemoryStatusCard.tsx +160 -0
  86. package/bizar-dash/src/web/views/memory/ObsidianPanel.tsx +642 -0
  87. package/bizar-dash/src/web/views/memory/SemanticSearchPanel.tsx +194 -0
  88. package/bizar-dash/tests/chat-session-create.test.mjs +391 -0
  89. package/bizar-dash/tests/chat-session-stream.test.mjs +308 -0
  90. package/bizar-dash/tests/env-vars-store.test.mjs +216 -0
  91. package/bizar-dash/tests/headroom-install.test.mjs +173 -0
  92. package/bizar-dash/tests/headroom-settings.test.mjs +126 -0
  93. package/bizar-dash/tests/headroom-status.test.mjs +117 -0
  94. package/bizar-dash/tests/lightrag-defaults.node.test.mjs +118 -0
  95. package/bizar-dash/tests/memory-lightrag-extended.test.mjs +162 -0
  96. package/bizar-dash/tests/memory-obsidian.test.mjs +269 -0
  97. package/bizar-dash/tests/memory-tab.test.mjs +322 -0
  98. package/bizar-dash/tests/minimax-chat-usage.test.mjs +178 -0
  99. package/bizar-dash/tests/minimax-usage-store.node.test.mjs +293 -0
  100. package/bizar-dash/tests/mod-upgrade.node.test.mjs +1 -1
  101. package/bizar-dash/tests/opencode-sessions-detail.test.mjs +12 -9
  102. package/bizar-dash/tests/providers-store-backup-keys.node.test.mjs +479 -3
  103. package/bizar-dash/tests/providers-store-search.node.test.mjs +166 -0
  104. package/bizar-dash/tests/skills-list.test.mjs +232 -0
  105. package/bizar-dash/tests/skills-search.test.mjs +222 -0
  106. package/bizar-dash/tests/submit-feedback.test.mjs +6 -6
  107. package/bizar-dash/tests/tasks-create.test.mjs +187 -0
  108. package/bizar-dash/tests/update-check.test.mjs +127 -0
  109. package/bizar-dash/tests/update-run.test.mjs +266 -0
  110. package/cli/bin.mjs +247 -1
  111. package/cli/provision.mjs +118 -4
  112. package/config/agents/_shared/SKILLS.md +109 -0
  113. package/package.json +1 -1
  114. package/bizar-dash/dist/assets/main-BB5mJurD.js +0 -352
  115. package/bizar-dash/dist/assets/main-BB5mJurD.js.map +0 -1
  116. package/bizar-dash/dist/assets/main-BsnQLXdh.css +0 -1
  117. package/bizar-dash/dist/assets/mobile-Dl1q7Cyq.js +0 -354
  118. package/bizar-dash/dist/assets/mobile-Dl1q7Cyq.js.map +0 -1
@@ -0,0 +1,160 @@
1
+ // src/web/views/memory/MemoryStatusCard.tsx — overview status card for the Memory subsystem.
2
+ //
3
+ // Slimmed-down version of MemoryOverview: a single Card with lightrag status,
4
+ // vault note count, git sync state, and a button to open the full Memory tab.
5
+ import { useEffect, useState } from 'react';
6
+ import {
7
+ Activity,
8
+ Brain,
9
+ ExternalLink,
10
+ FileText,
11
+ GitBranch,
12
+ RefreshCw,
13
+ } from 'lucide-react';
14
+ import { Button } from '../../components/Button';
15
+ import { Card, CardMeta, CardTitle } from '../../components/Card';
16
+ import { api } from '../../lib/api';
17
+ import { formatTime, cn } from '../../lib/utils';
18
+
19
+ type MemoryCardData = {
20
+ initialized: boolean;
21
+ mode?: string;
22
+ projectId?: string;
23
+ vaultRoot?: string;
24
+ branch?: string;
25
+ gitClean?: boolean | null;
26
+ noteCount?: number;
27
+ healthScore?: number;
28
+ healthStatus?: 'healthy' | 'degraded' | 'unhealthy' | 'unconfigured';
29
+ lightrag?: { running: boolean; indexedApprox: number };
30
+ };
31
+
32
+ type Props = {
33
+ setActiveTab: (id: string) => void;
34
+ refreshKey?: number;
35
+ };
36
+
37
+ export function MemoryStatusCard({ setActiveTab, refreshKey = 0 }: Props) {
38
+ const [data, setData] = useState<MemoryCardData | null>(null);
39
+ const [loading, setLoading] = useState(true);
40
+
41
+ const reload = async () => {
42
+ setLoading(true);
43
+ try {
44
+ const [status, health, lightrag] = await Promise.all([
45
+ api.get<MemoryCardData>('/memory/status').catch(() => null),
46
+ api.get<{ score: number; status: 'healthy' | 'degraded' | 'unhealthy' | 'unconfigured' }>(
47
+ '/memory/health',
48
+ ).catch(() => null),
49
+ api.get<{ running: boolean; indexedApprox: number }>('/memory/lightrag/stats').catch(() => null),
50
+ ]);
51
+ setData({
52
+ initialized: !!status?.initialized,
53
+ mode: status?.mode,
54
+ projectId: status?.projectId,
55
+ vaultRoot: status?.vaultRoot,
56
+ branch: status?.branch,
57
+ gitClean: status?.gitClean,
58
+ noteCount: status?.noteCount || 0,
59
+ healthScore: health?.score,
60
+ healthStatus: health?.status,
61
+ lightrag: lightrag ? { running: lightrag.running, indexedApprox: lightrag.indexedApprox } : undefined,
62
+ });
63
+ } catch {
64
+ setData({ initialized: false });
65
+ } finally {
66
+ setLoading(false);
67
+ }
68
+ };
69
+
70
+ useEffect(() => {
71
+ reload();
72
+ // eslint-disable-next-line react-hooks/exhaustive-deps
73
+ }, [refreshKey]);
74
+
75
+ const openMemory = () => setActiveTab('memory');
76
+
77
+ const healthColor =
78
+ data?.healthStatus === 'healthy' ? 'var(--success)' :
79
+ data?.healthStatus === 'degraded' ? 'var(--warning)' :
80
+ data?.healthStatus === 'unhealthy' ? 'var(--error)' :
81
+ 'var(--text-dim)';
82
+
83
+ return (
84
+ <Card className="memory-overview-card">
85
+ <CardTitle>
86
+ <Brain size={14} /> Memory
87
+ <Button variant="ghost" size="sm" style={{ marginLeft: 'auto' }} onClick={openMemory}>
88
+ Open Memory <ExternalLink size={12} />
89
+ </Button>
90
+ <Button variant="ghost" size="sm" onClick={reload} aria-label="Refresh" title="Refresh">
91
+ <RefreshCw size={12} />
92
+ </Button>
93
+ </CardTitle>
94
+ <CardMeta>
95
+ LightRAG + Obsidian vault + git sync — opens the dedicated Memory tab.
96
+ </CardMeta>
97
+
98
+ {!data?.initialized ? (
99
+ <div className="muted">
100
+ Memory not initialised. Click <strong>Open Memory</strong> to set it up.
101
+ </div>
102
+ ) : (
103
+ <div className="memory-status-card-grid">
104
+ <div className="memory-status-card-cell">
105
+ <div className="memory-status-card-label">
106
+ <Activity size={11} /> Health
107
+ </div>
108
+ <div className="memory-status-card-value" style={{ color: healthColor }}>
109
+ {data.healthScore !== undefined ? `${data.healthScore}/100` : '—'}
110
+ </div>
111
+ <div className="memory-status-card-sub muted">{data.healthStatus || '—'}</div>
112
+ </div>
113
+
114
+ <div className="memory-status-card-cell">
115
+ <div className="memory-status-card-label">
116
+ <Brain size={11} /> LightRAG
117
+ </div>
118
+ <div className="memory-status-card-value">
119
+ {data.lightrag?.running ? 'running' : 'stopped'}
120
+ </div>
121
+ <div className="memory-status-card-sub muted">
122
+ {data.lightrag ? `${data.lightrag.indexedApprox} chunks` : '—'}
123
+ </div>
124
+ </div>
125
+
126
+ <div className="memory-status-card-cell">
127
+ <div className="memory-status-card-label">
128
+ <FileText size={11} /> Vault
129
+ </div>
130
+ <div className="memory-status-card-value">{data.noteCount} notes</div>
131
+ <div className="memory-status-card-sub muted ellipsis" title={data.vaultRoot || ''}>
132
+ {data.vaultRoot ? data.vaultRoot.split('/').slice(-2).join('/') : '—'}
133
+ </div>
134
+ </div>
135
+
136
+ <div className="memory-status-card-cell">
137
+ <div className="memory-status-card-label">
138
+ <GitBranch size={11} /> Git
139
+ </div>
140
+ <div className="memory-status-card-value">
141
+ {data.gitClean === null
142
+ ? data.mode === 'local-only' ? 'local-only' : '—'
143
+ : data.gitClean ? 'clean' : 'dirty'}
144
+ </div>
145
+ <div className="memory-status-card-sub muted">
146
+ {data.branch ? `branch ${data.branch}` : formatTime(data.branch || '') || '—'}
147
+ </div>
148
+ </div>
149
+ </div>
150
+ )}
151
+
152
+ {loading && !data && (
153
+ <div className="muted text-sm">Loading…</div>
154
+ )}
155
+ </Card>
156
+ );
157
+ }
158
+
159
+ // Allow css class composition without TS complaining about missing module declarations.
160
+ void cn;