memorix 1.0.7 → 1.0.8
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/CHANGELOG.md +36 -9
- package/README.md +469 -409
- package/README.zh-CN.md +468 -415
- package/TEAM.md +106 -0
- package/dist/cli/index.js +31325 -26915
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/static/app.js +49 -49
- package/dist/dashboard/static/index.html +2 -2
- package/dist/index.js +1061 -234
- package/dist/index.js.map +1 -1
- package/dist/sdk.d.ts +677 -0
- package/dist/sdk.js +18962 -0
- package/dist/sdk.js.map +1 -0
- package/dist/types.d.ts +10 -10
- package/dist/types.js +10 -10
- package/dist/types.js.map +1 -1
- package/docs/AGENT_OPERATOR_PLAYBOOK.md +684 -0
- package/docs/AI_CONTEXT.md +18 -0
- package/docs/API_REFERENCE.md +687 -0
- package/docs/ARCHITECTURE.md +488 -0
- package/docs/CLOUD_SYNC_AND_MULTI_AGENT_RESEARCH.md +470 -0
- package/docs/CONFIGURATION.md +265 -0
- package/docs/DESIGN_DECISIONS.md +358 -0
- package/docs/DEVELOPMENT.md +317 -0
- package/docs/DOCKER.md +138 -0
- package/docs/GIT_MEMORY.md +221 -0
- package/docs/KNOWN_ISSUES_AND_ROADMAP.md +149 -0
- package/docs/MEMORY_FORMATION_PIPELINE.md +224 -0
- package/docs/MODULES.md +383 -0
- package/docs/PERFORMANCE.md +64 -0
- package/docs/README.md +79 -0
- package/docs/SETUP.md +521 -0
- package/docs/hooks-architecture.md +108 -0
- package/package.json +24 -23
|
@@ -96,11 +96,11 @@ const i18n = {
|
|
|
96
96
|
noRetentionData: 'No Retention Data',
|
|
97
97
|
noRetentionDesc: 'Store observations to see memory retention scores',
|
|
98
98
|
|
|
99
|
-
// Team
|
|
100
|
-
teamTitle: '
|
|
101
|
-
teamSubtitle: '
|
|
102
|
-
teamNoData: '
|
|
103
|
-
teamNoDataHint: '
|
|
99
|
+
// Team -> Autonomous Agent Team
|
|
100
|
+
teamTitle: 'Agent Team',
|
|
101
|
+
teamSubtitle: 'Autonomous CLI agents, tasks, locks, and handoffs',
|
|
102
|
+
teamNoData: 'No autonomous agent workflow activity yet',
|
|
103
|
+
teamNoDataHint: 'Use the CLI to start an autonomous workflow or inspect team state.',
|
|
104
104
|
teamActiveAgents: 'Active Agents',
|
|
105
105
|
teamLockedFiles: 'Locked Files',
|
|
106
106
|
teamTasks: 'Tasks',
|
|
@@ -205,17 +205,17 @@ const i18n = {
|
|
|
205
205
|
projectUnresolved: 'Unresolved',
|
|
206
206
|
projectUnresolvedDesc: 'No project bound — select a project from the switcher',
|
|
207
207
|
projectResolved: 'Resolved',
|
|
208
|
-
projectScopeProject: 'Project
|
|
208
|
+
projectScopeProject: 'Project Agent Team',
|
|
209
209
|
projectScopeGlobal: 'All Projects',
|
|
210
|
-
projectScopeProjectDesc: '
|
|
211
|
-
projectScopeGlobalDesc: '
|
|
210
|
+
projectScopeProjectDesc: 'Autonomous agents and tasks for this project',
|
|
211
|
+
projectScopeGlobalDesc: 'Autonomous agents and tasks across projects',
|
|
212
212
|
|
|
213
213
|
// Team (additional)
|
|
214
214
|
teamMessages: 'Messages',
|
|
215
215
|
teamAllRead: 'All read',
|
|
216
216
|
teamUnread: 'unread',
|
|
217
|
-
teamNoAgentsProject: 'No agents
|
|
218
|
-
teamNoAgentsGlobal: 'No agents in any scope',
|
|
217
|
+
teamNoAgentsProject: 'No autonomous agents recorded for this project',
|
|
218
|
+
teamNoAgentsGlobal: 'No autonomous agents recorded in any scope',
|
|
219
219
|
teamNoFilesLocked: 'No files locked',
|
|
220
220
|
teamNoTasksCreated: 'No tasks created',
|
|
221
221
|
teamPending: 'pending',
|
|
@@ -235,13 +235,13 @@ const i18n = {
|
|
|
235
235
|
teamRecentCount: 'recent',
|
|
236
236
|
teamHistoricalCount: 'historical',
|
|
237
237
|
teamHistoricalTotal: 'Historical total',
|
|
238
|
-
teamHistoricalHint: 'Inactive for more than 7 days. Not current
|
|
238
|
+
teamHistoricalHint: 'Inactive for more than 7 days. Not current autonomous agents.',
|
|
239
239
|
teamRecentHint: 'Inactive, last seen within 7 days.',
|
|
240
240
|
teamShowHistorical: 'Show historical',
|
|
241
241
|
teamHideHistorical: 'Hide historical',
|
|
242
|
-
teamNoActiveNow: 'No active agents right now',
|
|
243
|
-
teamNoRecent: 'No agents seen in the last 7 days',
|
|
244
|
-
teamSummaryHint: '
|
|
242
|
+
teamNoActiveNow: 'No active autonomous agents right now',
|
|
243
|
+
teamNoRecent: 'No autonomous agents seen in the last 7 days',
|
|
244
|
+
teamSummaryHint: 'Only explicit autonomous agent identities appear here. Historical rows are collapsed by default.',
|
|
245
245
|
// Resume area
|
|
246
246
|
resumeTitle: 'Continue This Project',
|
|
247
247
|
resumeDesc: 'Pick up where you left off',
|
|
@@ -339,7 +339,7 @@ const i18n = {
|
|
|
339
339
|
navConfig: 'Config',
|
|
340
340
|
navIdentity: 'Identity',
|
|
341
341
|
navSessions: 'Sessions',
|
|
342
|
-
navTeam: '
|
|
342
|
+
navTeam: 'Agent Team',
|
|
343
343
|
navLabelDashboard: 'Overview',
|
|
344
344
|
navLabelGitMemory: 'Git Memory',
|
|
345
345
|
navLabelGraph: 'Graph',
|
|
@@ -348,10 +348,10 @@ const i18n = {
|
|
|
348
348
|
navLabelConfig: 'Config',
|
|
349
349
|
navLabelIdentity: 'Identity',
|
|
350
350
|
navLabelSessions: 'Sessions',
|
|
351
|
-
navLabelTeam: '
|
|
351
|
+
navLabelTeam: 'Agent Team',
|
|
352
352
|
sectionCore: 'CORE',
|
|
353
353
|
sectionHealth: 'HEALTH',
|
|
354
|
-
sectionCollaboration: '
|
|
354
|
+
sectionCollaboration: 'AGENTS',
|
|
355
355
|
themeDark: 'Dark',
|
|
356
356
|
themeLight: 'Light',
|
|
357
357
|
loading: 'Loading...',
|
|
@@ -360,8 +360,8 @@ const i18n = {
|
|
|
360
360
|
// Mode banner
|
|
361
361
|
modeStandalone: 'Standalone',
|
|
362
362
|
modeControlPlane: 'Control Plane',
|
|
363
|
-
modeStandaloneHint: '
|
|
364
|
-
modeControlPlaneHint: '
|
|
363
|
+
modeStandaloneHint: 'Standalone dashboard - memory and read-only agent team state',
|
|
364
|
+
modeControlPlaneHint: 'HTTP control plane - shared MCP access and live dashboard',
|
|
365
365
|
modeBannerProject: 'Project',
|
|
366
366
|
modeBannerMcp: 'MCP',
|
|
367
367
|
|
|
@@ -466,16 +466,16 @@ const i18n = {
|
|
|
466
466
|
noRetentionData: '暂无衰减数据',
|
|
467
467
|
noRetentionDesc: '存储观察记录以查看记忆衰减分数',
|
|
468
468
|
|
|
469
|
-
// Team
|
|
470
|
-
teamTitle: '
|
|
471
|
-
teamSubtitle: '
|
|
472
|
-
teamNoData: '
|
|
473
|
-
teamNoDataHint: '
|
|
469
|
+
// Team -> 自主 Agent 团队
|
|
470
|
+
teamTitle: 'Agent 团队',
|
|
471
|
+
teamSubtitle: '自主 CLI agents、任务、文件锁和交接状态',
|
|
472
|
+
teamNoData: '暂无自主 agent 工作流活动',
|
|
473
|
+
teamNoDataHint: '使用 CLI 启动自主工作流,或查看团队任务状态。',
|
|
474
474
|
teamActiveAgents: '活跃 Agent',
|
|
475
475
|
teamLockedFiles: '锁定文件',
|
|
476
476
|
teamTasks: '任务',
|
|
477
477
|
teamAvailable: '可领取',
|
|
478
|
-
teamAgents: 'Agent
|
|
478
|
+
teamAgents: 'Agent',
|
|
479
479
|
teamLocks: '文件锁',
|
|
480
480
|
teamTaskBoard: '任务看板',
|
|
481
481
|
// Resume area
|
|
@@ -575,17 +575,17 @@ const i18n = {
|
|
|
575
575
|
projectUnresolved: '未绑定',
|
|
576
576
|
projectUnresolvedDesc: '无项目绑定 — 请从切换器选择项目',
|
|
577
577
|
projectResolved: '已绑定',
|
|
578
|
-
projectScopeProject: '
|
|
578
|
+
projectScopeProject: '项目 Agent 团队',
|
|
579
579
|
projectScopeGlobal: '所有项目',
|
|
580
|
-
projectScopeProjectDesc: '
|
|
581
|
-
projectScopeGlobalDesc: '
|
|
580
|
+
projectScopeProjectDesc: '当前项目中的自主 agents 和任务',
|
|
581
|
+
projectScopeGlobalDesc: '所有项目中的自主 agents 和任务',
|
|
582
582
|
|
|
583
583
|
// Team (additional)
|
|
584
584
|
teamMessages: '消息',
|
|
585
585
|
teamAllRead: '全部已读',
|
|
586
586
|
teamUnread: '未读',
|
|
587
|
-
teamNoAgentsProject: '
|
|
588
|
-
teamNoAgentsGlobal: '
|
|
587
|
+
teamNoAgentsProject: '当前项目暂无自主 agent 记录',
|
|
588
|
+
teamNoAgentsGlobal: '任何范围均无自主 agent 记录',
|
|
589
589
|
teamNoFilesLocked: '无文件锁定',
|
|
590
590
|
teamNoTasksCreated: '无已创建任务',
|
|
591
591
|
teamPending: '待处理',
|
|
@@ -605,13 +605,13 @@ const i18n = {
|
|
|
605
605
|
teamRecentCount: '近期',
|
|
606
606
|
teamHistoricalCount: '历史',
|
|
607
607
|
teamHistoricalTotal: '历史累计',
|
|
608
|
-
teamHistoricalHint: '超过 7
|
|
608
|
+
teamHistoricalHint: '超过 7 天无活动,非当前自主 agent',
|
|
609
609
|
teamRecentHint: '未活跃,最近 7 天内有过心跳',
|
|
610
610
|
teamShowHistorical: '显示历史',
|
|
611
611
|
teamHideHistorical: '隐藏历史',
|
|
612
|
-
teamNoActiveNow: '
|
|
613
|
-
teamNoRecent: '最近 7
|
|
614
|
-
teamSummaryHint: '
|
|
612
|
+
teamNoActiveNow: '当前无活跃自主 agent',
|
|
613
|
+
teamNoRecent: '最近 7 天无自主 agent 活动',
|
|
614
|
+
teamSummaryHint: '这里只显示显式自主 agent 身份。历史数据默认折叠。',
|
|
615
615
|
// Resume area
|
|
616
616
|
resumeTitle: '继续此项目',
|
|
617
617
|
resumeDesc: '从上次中断处继续',
|
|
@@ -714,7 +714,7 @@ const i18n = {
|
|
|
714
714
|
navConfig: '配置溯源',
|
|
715
715
|
navIdentity: '身份健康',
|
|
716
716
|
navSessions: '会话',
|
|
717
|
-
navTeam: '
|
|
717
|
+
navTeam: 'Agent 团队',
|
|
718
718
|
navLabelDashboard: '概览',
|
|
719
719
|
navLabelGitMemory: 'Git 记忆',
|
|
720
720
|
navLabelGraph: '图谱',
|
|
@@ -723,10 +723,10 @@ const i18n = {
|
|
|
723
723
|
navLabelConfig: '配置',
|
|
724
724
|
navLabelIdentity: '身份',
|
|
725
725
|
navLabelSessions: '会话',
|
|
726
|
-
navLabelTeam: '
|
|
726
|
+
navLabelTeam: 'Agent 团队',
|
|
727
727
|
sectionCore: '核心',
|
|
728
728
|
sectionHealth: '健康',
|
|
729
|
-
sectionCollaboration: '
|
|
729
|
+
sectionCollaboration: 'Agents',
|
|
730
730
|
themeDark: '深色',
|
|
731
731
|
themeLight: '浅色',
|
|
732
732
|
loading: '加载中...',
|
|
@@ -735,8 +735,8 @@ const i18n = {
|
|
|
735
735
|
// Mode banner
|
|
736
736
|
modeStandalone: '独立模式',
|
|
737
737
|
modeControlPlane: '控制平面',
|
|
738
|
-
modeStandaloneHint: '
|
|
739
|
-
modeControlPlaneHint: '
|
|
738
|
+
modeStandaloneHint: '独立看板 - 记忆与只读 Agent 团队状态',
|
|
739
|
+
modeControlPlaneHint: 'HTTP 控制平面 - 共享 MCP 接入与实时看板',
|
|
740
740
|
modeBannerProject: '项目',
|
|
741
741
|
modeBannerMcp: 'MCP',
|
|
742
742
|
|
|
@@ -1332,7 +1332,7 @@ async function loadDashboard() {
|
|
|
1332
1332
|
<div style="flex: 1;">
|
|
1333
1333
|
${typeEntries.map(([type, count]) => `
|
|
1334
1334
|
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 8px;">
|
|
1335
|
-
<span style="width: 18px; text-align: center; font-size: 13px;">${typeIcons[type] || '
|
|
1335
|
+
<span style="width: 18px; text-align: center; font-size: 13px;">${typeIcons[type] || '[UNKNOWN]'}</span>
|
|
1336
1336
|
<span style="width: 110px; font-size: 11px; color: var(--text-secondary);">${type}</span>
|
|
1337
1337
|
<div style="flex: 1; height: 5px; background: rgba(128,128,128,0.1); border-radius: 3px; overflow: hidden;">
|
|
1338
1338
|
<div style="width: ${(count / maxTypeCount) * 100}%; height: 100%; background: var(--type-${type}, var(--accent-cyan)); border-radius: 3px;"></div>
|
|
@@ -2340,7 +2340,7 @@ async function loadObservations() {
|
|
|
2340
2340
|
</div>
|
|
2341
2341
|
<div style="display:flex;gap:8px;">
|
|
2342
2342
|
<button class="export-btn" id="btn-batch-cleanup" title="${t('batchCleanup')}">
|
|
2343
|
-
|
|
2343
|
+
[CLEANUP] ${t('batchCleanup')}
|
|
2344
2344
|
</button>
|
|
2345
2345
|
<button class="export-btn" id="btn-export" title="${t('exportData')}">
|
|
2346
2346
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 2v8M4 7l4 4 4-4M2 12v2h12v-2"/></svg>
|
|
@@ -2439,16 +2439,16 @@ function renderObsList() {
|
|
|
2439
2439
|
${batchMode ? `<input type="checkbox" class="obs-checkbox" ${isSelected ? 'checked' : ''} onclick="event.stopPropagation(); toggleObsSelect(${obs.id});" />` : ''}
|
|
2440
2440
|
<span class="obs-card-id">#${obs.id}</span>
|
|
2441
2441
|
<span class="type-badge" data-type="${obs.type || 'unknown'}">
|
|
2442
|
-
${typeIcons[obs.type] || '
|
|
2442
|
+
${typeIcons[obs.type] || '[UNKNOWN]'} ${obs.type || t('unknown')}
|
|
2443
2443
|
</span>
|
|
2444
2444
|
${isLow ? '<span class="low-quality-badge">' + t('lowQuality') + '</span>' : ''}
|
|
2445
2445
|
<span class="obs-card-title">${hl(obs.title || t('untitled'))}</span>
|
|
2446
2446
|
<span class="obs-expand-icon">▼</span>
|
|
2447
2447
|
</div>
|
|
2448
2448
|
<div class="obs-card-meta">
|
|
2449
|
-
<span
|
|
2450
|
-
${obs.createdAt ? `<span
|
|
2451
|
-
${obs.accessCount ? `<span
|
|
2449
|
+
<span>[FILES] ${hl(obs.entityName || t('unknown'))}</span>
|
|
2450
|
+
${obs.createdAt ? `<span>[TIME] ${formatTime(obs.createdAt)}</span>` : ''}
|
|
2451
|
+
${obs.accessCount ? `<span>[VIEW] ${obs.accessCount}</span>` : ''}
|
|
2452
2452
|
</div>
|
|
2453
2453
|
<div class="obs-detail" id="obs-detail-${obs.id}" style="display:none;">
|
|
2454
2454
|
<div class="obs-detail-inner">
|
|
@@ -2479,7 +2479,7 @@ async function loadRetention() {
|
|
|
2479
2479
|
|
|
2480
2480
|
const data = await api('retention');
|
|
2481
2481
|
if (!data || data.items.length === 0) {
|
|
2482
|
-
container.innerHTML = emptyState('
|
|
2482
|
+
container.innerHTML = emptyState('[RETENTION]', t('noRetentionData'), t('noRetentionDesc'));
|
|
2483
2483
|
return;
|
|
2484
2484
|
}
|
|
2485
2485
|
|
|
@@ -2647,7 +2647,7 @@ async function loadGitMemory() {
|
|
|
2647
2647
|
|
|
2648
2648
|
const [stats, allObs] = await Promise.all([api('stats'), api('observations')]);
|
|
2649
2649
|
if (!stats || !allObs) {
|
|
2650
|
-
container.innerHTML = emptyState('
|
|
2650
|
+
container.innerHTML = emptyState('[MERGE]', t('noGitMemory'), t('noGitMemoryDesc'));
|
|
2651
2651
|
return;
|
|
2652
2652
|
}
|
|
2653
2653
|
|
|
@@ -2689,7 +2689,7 @@ async function loadGitMemory() {
|
|
|
2689
2689
|
${gitObs.length === 0 ? `
|
|
2690
2690
|
<div class="panel">
|
|
2691
2691
|
<div class="panel-body" style="text-align:center;padding:48px;">
|
|
2692
|
-
<div style="font-size:36px;margin-bottom:12px;"
|
|
2692
|
+
<div style="font-size:36px;margin-bottom:12px;">[MERGE]</div>
|
|
2693
2693
|
<div style="font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:8px;">${t('noGitMemoriesYet')}</div>
|
|
2694
2694
|
<div style="font-size:13px;color:var(--text-muted);max-width:400px;margin:0 auto;">
|
|
2695
2695
|
${t('noGitMemoriesHint')}<br>
|
|
@@ -3184,7 +3184,7 @@ async function loadTeam() {
|
|
|
3184
3184
|
<div style="font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:8px;">${t('teamNoData')}</div>
|
|
3185
3185
|
<div style="font-size:13px;color:var(--text-muted);max-width:480px;margin:0 auto;line-height:1.6;">
|
|
3186
3186
|
${t('teamNoDataHint')}<br>
|
|
3187
|
-
<code style="background:var(--bg-surface);padding:4px 10px;border-radius:6px;margin-top:8px;display:inline-block;font-size:12px;">memorix
|
|
3187
|
+
<code style="background:var(--bg-surface);padding:4px 10px;border-radius:6px;margin-top:8px;display:inline-block;font-size:12px;">memorix orchestrate · memorix team status · memorix task list</code>
|
|
3188
3188
|
</div>
|
|
3189
3189
|
</div>
|
|
3190
3190
|
</div>
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
<span class="nav-label">Identity</span>
|
|
106
106
|
</button>
|
|
107
107
|
</div>
|
|
108
|
-
<div class="sidebar-section-label" data-section="collaboration">
|
|
108
|
+
<div class="sidebar-section-label" data-section="collaboration">AGENTS</div>
|
|
109
109
|
<div class="sidebar-nav">
|
|
110
110
|
<button class="nav-btn" data-page="sessions">
|
|
111
111
|
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
@@ -178,4 +178,4 @@
|
|
|
178
178
|
<script src="/app.js"></script>
|
|
179
179
|
</body>
|
|
180
180
|
|
|
181
|
-
</html>
|
|
181
|
+
</html>
|