memorix 1.1.13 → 1.2.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.
Files changed (88) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +3 -2
  3. package/README.zh-CN.md +3 -2
  4. package/dist/cli/index.js +36313 -31189
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/dashboard/static/app.js +50 -30
  7. package/dist/index.js +5348 -674
  8. package/dist/index.js.map +1 -1
  9. package/dist/maintenance-runner.d.ts +1 -1
  10. package/dist/maintenance-runner.js +3661 -293
  11. package/dist/maintenance-runner.js.map +1 -1
  12. package/dist/memcode-runtime/CHANGELOG.md +19 -0
  13. package/dist/sdk.d.ts +1 -1
  14. package/dist/sdk.js +5346 -672
  15. package/dist/sdk.js.map +1 -1
  16. package/docs/1.2.0-CLAIM-LEDGER.md +72 -0
  17. package/docs/1.2.0-CODE-STATE.md +61 -0
  18. package/docs/1.2.0-DEVELOPMENT-CHARTER.md +255 -0
  19. package/docs/1.2.0-DYNAMIC-LIFECYCLE.md +71 -0
  20. package/docs/1.2.0-EVALUATION-HARNESS.md +51 -0
  21. package/docs/1.2.0-IMPLEMENTATION-PLAN.md +554 -0
  22. package/docs/1.2.0-KNOWLEDGE-WORKFLOW-RESEARCH.md +205 -0
  23. package/docs/1.2.0-KNOWLEDGE-WORKSPACE.md +68 -0
  24. package/docs/1.2.0-PRODUCT-STORY.md +234 -0
  25. package/docs/1.2.0-PROVIDER-QUALITY.md +189 -0
  26. package/docs/1.2.0-WORKFLOW-INHERITANCE.md +101 -0
  27. package/docs/1.2.0-WORKSET-RETRIEVAL.md +80 -0
  28. package/docs/AGENT_OPERATOR_PLAYBOOK.md +6 -3
  29. package/docs/API_REFERENCE.md +25 -6
  30. package/docs/CONFIGURATION.md +21 -3
  31. package/docs/README.md +17 -2
  32. package/docs/dev-log/progress.txt +120 -40
  33. package/llms-full.txt +16 -2
  34. package/llms.txt +9 -4
  35. package/package.json +3 -2
  36. package/plugins/codex/memorix/.codex-plugin/plugin.json +1 -1
  37. package/src/cli/capability-map.ts +1 -0
  38. package/src/cli/commands/codegraph.ts +112 -9
  39. package/src/cli/commands/context.ts +2 -0
  40. package/src/cli/commands/doctor.ts +73 -4
  41. package/src/cli/commands/knowledge.ts +282 -0
  42. package/src/cli/commands/serve-http.ts +12 -1
  43. package/src/cli/index.ts +3 -1
  44. package/src/cli/tui/App.tsx +1 -1
  45. package/src/cli/tui/Panels.tsx +8 -8
  46. package/src/cli/tui/theme.ts +1 -1
  47. package/src/cli/tui/views/GraphView.tsx +8 -7
  48. package/src/cli/tui/views/KnowledgeView.tsx +9 -9
  49. package/src/codegraph/auto-context.ts +171 -9
  50. package/src/codegraph/code-state.ts +95 -0
  51. package/src/codegraph/context-pack.ts +82 -1
  52. package/src/codegraph/external-provider.ts +581 -0
  53. package/src/codegraph/lite-provider.ts +64 -19
  54. package/src/codegraph/project-context.ts +9 -1
  55. package/src/codegraph/store.ts +154 -6
  56. package/src/codegraph/types.ts +117 -0
  57. package/src/config/resolved-config.ts +28 -0
  58. package/src/config/toml-loader.ts +3 -0
  59. package/src/config/yaml-loader.ts +6 -0
  60. package/src/dashboard/server.ts +15 -1
  61. package/src/evaluation/workset-evaluation.ts +120 -0
  62. package/src/hooks/handler.ts +48 -6
  63. package/src/knowledge/claim-store.ts +267 -0
  64. package/src/knowledge/claims.ts +537 -0
  65. package/src/knowledge/markdown.ts +129 -0
  66. package/src/knowledge/types.ts +157 -0
  67. package/src/knowledge/wiki.ts +524 -0
  68. package/src/knowledge/workflow-store.ts +168 -0
  69. package/src/knowledge/workflow-types.ts +95 -0
  70. package/src/knowledge/workflows.ts +743 -0
  71. package/src/knowledge/workset.ts +515 -0
  72. package/src/knowledge/workspace-store.ts +220 -0
  73. package/src/knowledge/workspace-types.ts +106 -0
  74. package/src/knowledge/workspace.ts +220 -0
  75. package/src/memory/observations.ts +19 -0
  76. package/src/runtime/control-plane-maintenance.ts +5 -0
  77. package/src/runtime/isolated-maintenance.ts +5 -0
  78. package/src/runtime/lifecycle-status.ts +102 -0
  79. package/src/runtime/lifecycle.ts +107 -0
  80. package/src/runtime/maintenance-jobs.ts +5 -0
  81. package/src/runtime/project-maintenance.ts +190 -0
  82. package/src/server/tool-profile.ts +3 -2
  83. package/src/server.ts +354 -14
  84. package/src/store/file-lock.ts +24 -4
  85. package/src/store/sqlite-db.ts +307 -0
  86. package/src/wiki/generator.ts +4 -2
  87. package/src/wiki/knowledge-graph.ts +7 -4
  88. package/src/wiki/types.ts +16 -4
@@ -24,9 +24,9 @@ const i18n = {
24
24
  noDataDesc: 'Start using Memorix to see your dashboard',
25
25
 
26
26
  // Graph
27
- knowledgeGraph: 'Knowledge Graph',
27
+ knowledgeGraph: 'Memory Entity Map',
28
28
  noGraphData: 'No Graph Data',
29
- noGraphDataDesc: 'Create entities and relations to see your knowledge graph',
29
+ noGraphDataDesc: 'Create entities and relations to see your memory entity map',
30
30
  observation_s: 'observation(s)',
31
31
  nodes: 'nodes',
32
32
  edges: 'edges',
@@ -147,8 +147,8 @@ const i18n = {
147
147
  recentGitMemories: 'Recent Git Memories',
148
148
  commit: 'Commit',
149
149
  created: 'Created',
150
- knowledgeTitle: 'Knowledge Base',
151
- knowledgeSubtitle: 'Project-scoped engineering knowledge distilled from durable memory',
150
+ knowledgeTitle: 'Memory Overview',
151
+ knowledgeSubtitle: 'Read-only overview generated from durable project memory, not a maintained wiki',
152
152
  knowledgeObservationsUsed: 'Observations Used',
153
153
  knowledgeMiniSkillsUsed: 'Mini-skills Used',
154
154
  knowledgeRefs: 'Refs',
@@ -156,10 +156,10 @@ const i18n = {
156
156
  knowledgeQuickJump: 'Sections',
157
157
  knowledgeNoItems: 'No entries in this section yet',
158
158
  knowledgeNoItemsDesc: 'This section will fill in as durable project knowledge is stored.',
159
- knowledgeUnavailable: 'Knowledge Base Unavailable',
159
+ knowledgeUnavailable: 'Memory Overview Unavailable',
160
160
  knowledgeUnavailableDesc: 'Could not load /api/knowledge for the selected project.',
161
- knowledgeEmpty: 'No Knowledge Base Entries',
162
- knowledgeEmptyDesc: 'Store durable observations or promote mini-skills to populate this read-only project wiki.',
161
+ knowledgeEmpty: 'No Memory Overview Entries',
162
+ knowledgeEmptyDesc: 'Store durable observations or promote mini-skills to populate this read-only memory overview.',
163
163
  knowledgeProvenance: 'Provenance',
164
164
  knowledgeEntry: 'entry',
165
165
  knowledgeEntries: 'entries',
@@ -225,6 +225,10 @@ const i18n = {
225
225
  maintenanceQueued: 'queued',
226
226
  maintenanceRunning: 'running',
227
227
  maintenanceNeedsAttention: 'needs attention',
228
+ knowledgeLifecycle: 'Knowledge Lifecycle',
229
+ claimsNeedReview: 'claims need review',
230
+ pendingProposals: 'pending proposals',
231
+ knowledgeReady: 'Knowledge current',
228
232
 
229
233
  // Project states
230
234
  noProjects: 'No projects',
@@ -341,14 +345,14 @@ const i18n = {
341
345
  graphTopToBottom: 'Top → Bottom',
342
346
  graphMore: 'more',
343
347
 
344
- // Knowledge Graph (semantic)
345
- kgTitle: 'Knowledge Graph',
346
- kgSubtitle: 'Semantic knowledge topology section clusters, evidence links, provenance',
348
+ // Deterministic memory-map projection
349
+ kgTitle: 'Memory Map',
350
+ kgSubtitle: 'Deterministic links from shared entities, skill sources, and explicit relations',
347
351
  kgNodes: 'nodes',
348
352
  kgEdges: 'edges',
349
353
  kgClusters: 'clusters',
350
- kgNoData: 'No Knowledge Graph Data',
351
- kgNoDataDesc: 'Store durable observations or promote mini-skills to generate a semantic knowledge graph.',
354
+ kgNoData: 'No Memory Map Data',
355
+ kgNoDataDesc: 'Store durable observations or promote mini-skills to build a deterministic memory map.',
352
356
  kgClusterFilter: 'Section Cluster',
353
357
  kgEdgeTypeFilter: 'Edge Type',
354
358
  kgEdgeSupports: 'supports',
@@ -363,7 +367,7 @@ const i18n = {
363
367
  kgInspectorRelatedEdges: 'Related Edges',
364
368
  kgInspectorNoEdges: 'No edges',
365
369
  kgDataMode: 'Data Source',
366
- kgModeSemantic: 'Semantic KG',
370
+ kgModeSemantic: 'Inferred Memory Map',
367
371
  kgModeEntity: 'Entity Graph',
368
372
  kgViewMode: 'View Mode',
369
373
  kgFocused: 'Focused',
@@ -388,8 +392,8 @@ const i18n = {
388
392
  // Nav tooltips + labels
389
393
  navDashboard: 'Dashboard',
390
394
  navGitMemory: 'Git Memory',
391
- navKnowledge: 'Knowledge Base',
392
- navGraph: 'Knowledge Graph',
395
+ navKnowledge: 'Memory Overview',
396
+ navGraph: 'Memory Map',
393
397
  navObservations: 'Observations',
394
398
  navRetention: 'Retention',
395
399
  navConfig: 'Config',
@@ -574,8 +578,8 @@ const i18n = {
574
578
  recentGitMemories: '最近 Git 记忆',
575
579
  commit: '提交',
576
580
  created: '创建时间',
577
- knowledgeTitle: '知识库',
578
- knowledgeSubtitle: '从持久项目记忆中提炼出的工程知识',
581
+ knowledgeTitle: '记忆概览',
582
+ knowledgeSubtitle: '从持久项目记忆生成的只读概览,尚非可维护 Wiki',
579
583
  knowledgeObservationsUsed: '使用的观察',
580
584
  knowledgeMiniSkillsUsed: '使用的 Mini-skills',
581
585
  knowledgeRefs: '引用',
@@ -583,10 +587,10 @@ const i18n = {
583
587
  knowledgeQuickJump: '章节',
584
588
  knowledgeNoItems: '本章节暂无条目',
585
589
  knowledgeNoItemsDesc: '当项目中出现持久知识后,本章节会自动填充。',
586
- knowledgeUnavailable: '知识库不可用',
590
+ knowledgeUnavailable: '记忆概览不可用',
587
591
  knowledgeUnavailableDesc: '无法为所选项目加载 /api/knowledge。',
588
- knowledgeEmpty: '暂无知识库条目',
589
- knowledgeEmptyDesc: '存储持久观察或提升 mini-skill 后,此只读项目 wiki 会自动填充。',
592
+ knowledgeEmpty: '暂无记忆概览条目',
593
+ knowledgeEmptyDesc: '存储持久观察或提升 mini-skill 后,此只读记忆概览会自动填充。',
590
594
  knowledgeProvenance: '来源',
591
595
  knowledgeEntry: '条',
592
596
  knowledgeEntries: '条',
@@ -652,6 +656,10 @@ const i18n = {
652
656
  maintenanceQueued: '项排队',
653
657
  maintenanceRunning: '项运行中',
654
658
  maintenanceNeedsAttention: '项需要处理',
659
+ knowledgeLifecycle: '知识生命周期',
660
+ claimsNeedReview: '条 claim 待复核',
661
+ pendingProposals: '个提案待审',
662
+ knowledgeReady: '知识状态正常',
655
663
 
656
664
  // Project states
657
665
  noProjects: '无项目',
@@ -773,14 +781,14 @@ const i18n = {
773
781
  graphTopToBottom: '从上到下',
774
782
  graphMore: '更多',
775
783
 
776
- // Knowledge Graph (semantic)
777
- kgTitle: '知识图谱',
778
- kgSubtitle: '语义知识拓扑 — 分区聚类、证据关联、溯源',
784
+ // Deterministic memory-map projection
785
+ kgTitle: '记忆关系图',
786
+ kgSubtitle: '由共享实体、技能来源和显式关系确定性推断',
779
787
  kgNodes: '个节点',
780
788
  kgEdges: '条边',
781
789
  kgClusters: '个聚类',
782
- kgNoData: '暂无知识图谱数据',
783
- kgNoDataDesc: '存储持久观察或提升迷你技能以生成语义知识图谱。',
790
+ kgNoData: '暂无记忆关系图数据',
791
+ kgNoDataDesc: '存储持久观察或提升迷你技能以构建确定性记忆关系图。',
784
792
  kgClusterFilter: '分区聚类',
785
793
  kgEdgeTypeFilter: '边类型',
786
794
  kgEdgeSupports: '支撑',
@@ -795,7 +803,7 @@ const i18n = {
795
803
  kgInspectorRelatedEdges: '相关边',
796
804
  kgInspectorNoEdges: '无边',
797
805
  kgDataMode: '数据源',
798
- kgModeSemantic: '语义图谱',
806
+ kgModeSemantic: '推断记忆关系图',
799
807
  kgModeEntity: '实体图谱',
800
808
  kgViewMode: '视图模式',
801
809
  kgFocused: '聚焦',
@@ -820,8 +828,8 @@ const i18n = {
820
828
  // Nav tooltips
821
829
  navDashboard: '仪表盘',
822
830
  navGitMemory: 'Git 记忆',
823
- navKnowledge: '知识库',
824
- navGraph: '知识图谱',
831
+ navKnowledge: '记忆概览',
832
+ navGraph: '记忆关系图',
825
833
  navObservations: '观察记录',
826
834
  navRetention: '记忆衰减',
827
835
  navConfig: '配置溯源',
@@ -1331,6 +1339,9 @@ async function loadDashboard() {
1331
1339
  const gs = stats.gitSummary || { total: 0, recentWeek: 0, recentMemories: [] };
1332
1340
  const rs = stats.retentionSummary || { active: 0, stale: 0, archive: 0, immune: 0 };
1333
1341
  const maintenance = stats.maintenance || { pending: 0, running: 0, retrying: 0, failed: 0 };
1342
+ const lifecycle = stats.lifecycle || {};
1343
+ const lifecycleClaims = lifecycle.claims || { needsReview: 0, conflicts: 0 };
1344
+ const pendingProposals = (lifecycle.workspaces || []).reduce((total, workspace) => total + (workspace.pendingProposals || 0), 0);
1334
1345
  const queuedMaintenance = (maintenance.pending || 0) + (maintenance.retrying || 0);
1335
1346
  const activeMaintenance = maintenance.running || 0;
1336
1347
  const failedMaintenance = maintenance.failed || 0;
@@ -1341,6 +1352,11 @@ async function loadDashboard() {
1341
1352
  : queuedMaintenance > 0
1342
1353
  ? { color: 'var(--accent-amber)', text: `${queuedMaintenance} ${t('maintenanceQueued')}` }
1343
1354
  : { color: 'var(--accent-green)', text: t('maintenanceIdle') };
1355
+ const knowledgeState = lifecycleClaims.conflicts > 0 || lifecycleClaims.needsReview > 0
1356
+ ? { color: 'var(--accent-amber)', text: `${lifecycleClaims.conflicts || lifecycleClaims.needsReview} ${t('claimsNeedReview')}` }
1357
+ : pendingProposals > 0
1358
+ ? { color: 'var(--accent-blue)', text: `${pendingProposals} ${t('pendingProposals')}` }
1359
+ : { color: 'var(--accent-green)', text: t('knowledgeReady') };
1344
1360
 
1345
1361
  const typeIcons = {
1346
1362
  'session-request': '<span class="iconify" data-icon="lucide:target" style="color:#f87171;"></span>', gotcha: '<span class="iconify" data-icon="lucide:alert-octagon" style="color:#ef4444;"></span>', 'problem-solution': '<span class="iconify" data-icon="lucide:lightbulb" style="color:#fbbf24;"></span>',
@@ -1422,6 +1438,10 @@ async function loadDashboard() {
1422
1438
  <div style="font-size:14px;font-weight:600;color:${maintenanceState.color};">${maintenanceState.text}</div>
1423
1439
  ${queuedMaintenance > 0 && activeMaintenance > 0 ? `<div style="font-size:11px;color:var(--text-secondary);margin-top:2px;">${queuedMaintenance} ${t('maintenanceQueued')}</div>` : ''}
1424
1440
  </div>
1441
+ <div>
1442
+ <div style="font-size:11px;color:var(--text-muted);margin-bottom:4px;">${t('knowledgeLifecycle')}</div>
1443
+ <div style="font-size:14px;font-weight:600;color:${knowledgeState.color};">${knowledgeState.text}</div>
1444
+ </div>
1425
1445
  </div>
1426
1446
  </div>
1427
1447
  </div>
@@ -1762,7 +1782,7 @@ async function loadGraph() {
1762
1782
  const container = document.getElementById('page-graph');
1763
1783
  container.innerHTML = '<div class="loading"><div class="spinner"></div></div>';
1764
1784
 
1765
- // Try semantic Knowledge Graph first
1785
+ // Prefer the deterministic memory-map projection when it is available.
1766
1786
  try {
1767
1787
  const kg = await api('knowledge-graph');
1768
1788
  if (kg && kg.nodes && kg.nodes.length > 0) {
@@ -1829,7 +1849,7 @@ async function loadGraph() {
1829
1849
  }
1830
1850
 
1831
1851
  // ============================================================
1832
- // Semantic Knowledge Graph Renderer — Apache ECharts 5
1852
+ // Deterministic Memory Map Renderer — Apache ECharts 5
1833
1853
  // Force layout, section categories, evidence-based edges
1834
1854
  // ============================================================
1835
1855