@modusensus/dsh-mneme 0.7.4 → 0.7.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.
Files changed (147) hide show
  1. package/.github/workflows/publish.yml +38 -0
  2. package/.github/workflows/test.yml +32 -0
  3. package/CHANGELOG.md +91 -0
  4. package/CONTRIBUTING.md +245 -0
  5. package/README.md +163 -421
  6. package/SECURITY.md +674 -0
  7. package/docs/devlog/2026-08-14-dsh-mneme-dev-log.md +247 -0
  8. package/docs/devlog/2026-08-15-dsh-mneme-audit-stress-dev-log.md +145 -0
  9. package/docs/devlog/2026-08-15-dsh-mneme-pipeline-dev-log.md +56 -0
  10. package/docs/devlog/2026-08-15-dsh-mneme-reflection-dev-log.md +77 -0
  11. package/docs/devlog/2026-08-15-dsh-mneme-review-fixes-dev-log.md +64 -0
  12. package/docs/devlog/2026-08-15-dsh-mneme-semantic-dev-log.md +90 -0
  13. package/dsh-mneme/CHANGELOG.md +373 -0
  14. package/dsh-mneme/LICENSE +21 -0
  15. package/dsh-mneme/README.md +494 -0
  16. package/dsh-mneme/docs/AGENT_MEMORY_RESEARCH.md +183 -0
  17. package/dsh-mneme/docs/ENTITIES.md +245 -0
  18. package/dsh-mneme/docs/LOCAL_MODEL.md +141 -0
  19. package/dsh-mneme/docs/MIGRATION.md +127 -0
  20. package/dsh-mneme/docs/SEMANTIC.md +256 -0
  21. package/dsh-mneme/docs/SLEEP.md +163 -0
  22. package/{src → dsh-mneme/lib}/api.js +15 -0
  23. package/{lib → dsh-mneme/lib}/client.js +187 -2
  24. package/{lib → dsh-mneme/lib}/mirror.js +3 -1
  25. package/{lib → dsh-mneme/lib}/quality-filter.js +3 -1
  26. package/{src → dsh-mneme/lib}/service.js +47 -5
  27. package/{lib → dsh-mneme/lib}/store.js +57 -1
  28. package/{lib → dsh-mneme/lib}/summarize.js +2 -2
  29. package/{lib → dsh-mneme/lib}/tools.js +27 -21
  30. package/dsh-mneme/package-lock.json +1936 -0
  31. package/dsh-mneme/package.json +83 -0
  32. package/{scripts → dsh-mneme/scripts}/sync-lib.js +3 -3
  33. package/{lib → dsh-mneme/src}/api.js +15 -0
  34. package/dsh-mneme/src/client.js +2050 -0
  35. package/{src → dsh-mneme/src}/mirror.js +3 -1
  36. package/{src → dsh-mneme/src}/quality-filter.js +3 -1
  37. package/{lib → dsh-mneme/src}/service.js +47 -5
  38. package/{src → dsh-mneme/src}/store.js +57 -1
  39. package/{src → dsh-mneme/src}/summarize.js +2 -2
  40. package/{src → dsh-mneme/src}/tools.js +27 -21
  41. package/{test → dsh-mneme/test}/client.test.js +10 -5
  42. package/dsh-mneme/test/layered-types-stats.test.js +144 -0
  43. package/{test → dsh-mneme/test}/tools.test.js +133 -0
  44. package/package.json +18 -43
  45. package//346/250/252/345/271/205.png +0 -0
  46. /package/{cordis.patch.yml → dsh-mneme/cordis.patch.yml} +0 -0
  47. /package/{lib → dsh-mneme/lib}/commands.js +0 -0
  48. /package/{lib → dsh-mneme/lib}/config.js +0 -0
  49. /package/{lib → dsh-mneme/lib}/dream/clustering.js +0 -0
  50. /package/{lib → dsh-mneme/lib}/dream/decisions.js +0 -0
  51. /package/{lib → dsh-mneme/lib}/dream/sleep.js +0 -0
  52. /package/{lib → dsh-mneme/lib}/dream/tag-extractor.js +0 -0
  53. /package/{lib → dsh-mneme/lib}/dream.js +0 -0
  54. /package/{lib → dsh-mneme/lib}/embedding.js +0 -0
  55. /package/{lib → dsh-mneme/lib}/entities/extractor.js +0 -0
  56. /package/{lib → dsh-mneme/lib}/heat.js +0 -0
  57. /package/{lib → dsh-mneme/lib}/hot-memory.js +0 -0
  58. /package/{lib → dsh-mneme/lib}/index.js +0 -0
  59. /package/{lib → dsh-mneme/lib}/inject.js +0 -0
  60. /package/{lib → dsh-mneme/lib}/local-embedder.js +0 -0
  61. /package/{lib → dsh-mneme/lib}/parser/tag.js +0 -0
  62. /package/{lib → dsh-mneme/lib}/parser/wiki-link.js +0 -0
  63. /package/{lib → dsh-mneme/lib}/reranker.js +0 -0
  64. /package/{lib → dsh-mneme/lib}/search/adaptive.js +0 -0
  65. /package/{lib → dsh-mneme/lib}/search/bm25.js +0 -0
  66. /package/{lib → dsh-mneme/lib}/search/tag-boost.js +0 -0
  67. /package/{lib → dsh-mneme/lib}/settings.js +0 -0
  68. /package/{lib → dsh-mneme/lib}/vector-index.js +0 -0
  69. /package/{scripts → dsh-mneme/scripts}/benchmark-embed.js +0 -0
  70. /package/{scripts → dsh-mneme/scripts}/benchmark-recall.js +0 -0
  71. /package/{scripts → dsh-mneme/scripts}/benchmark-rerank.js +0 -0
  72. /package/{scripts → dsh-mneme/scripts}/e2e-dsh.js +0 -0
  73. /package/{scripts → dsh-mneme/scripts}/stress-dsh.js +0 -0
  74. /package/{src → dsh-mneme/src}/commands.js +0 -0
  75. /package/{src → dsh-mneme/src}/config.js +0 -0
  76. /package/{src → dsh-mneme/src}/dream/clustering.js +0 -0
  77. /package/{src → dsh-mneme/src}/dream/decisions.js +0 -0
  78. /package/{src → dsh-mneme/src}/dream/sleep.js +0 -0
  79. /package/{src → dsh-mneme/src}/dream/tag-extractor.js +0 -0
  80. /package/{src → dsh-mneme/src}/dream.js +0 -0
  81. /package/{src → dsh-mneme/src}/embedding.js +0 -0
  82. /package/{src → dsh-mneme/src}/entities/extractor.js +0 -0
  83. /package/{src → dsh-mneme/src}/heat.js +0 -0
  84. /package/{src → dsh-mneme/src}/hot-memory.js +0 -0
  85. /package/{src → dsh-mneme/src}/index.js +0 -0
  86. /package/{src → dsh-mneme/src}/inject.js +0 -0
  87. /package/{src → dsh-mneme/src}/local-embedder.js +0 -0
  88. /package/{src → dsh-mneme/src}/parser/tag.js +0 -0
  89. /package/{src → dsh-mneme/src}/parser/wiki-link.js +0 -0
  90. /package/{src → dsh-mneme/src}/reranker.js +0 -0
  91. /package/{src → dsh-mneme/src}/search/adaptive.js +0 -0
  92. /package/{src → dsh-mneme/src}/search/bm25.js +0 -0
  93. /package/{src → dsh-mneme/src}/search/tag-boost.js +0 -0
  94. /package/{src → dsh-mneme/src}/settings.js +0 -0
  95. /package/{src → dsh-mneme/src}/vector-index.js +0 -0
  96. /package/{test → dsh-mneme/test}/api.test.js +0 -0
  97. /package/{test → dsh-mneme/test}/audit.test.js +0 -0
  98. /package/{test → dsh-mneme/test}/benchmark.test.js +0 -0
  99. /package/{test → dsh-mneme/test}/boundary-v0625.test.js +0 -0
  100. /package/{test → dsh-mneme/test}/clustering.test.js +0 -0
  101. /package/{test → dsh-mneme/test}/commands.test.js +0 -0
  102. /package/{test → dsh-mneme/test}/config.test.js +0 -0
  103. /package/{test → dsh-mneme/test}/conflict-freeze.test.js +0 -0
  104. /package/{test → dsh-mneme/test}/directory.test.js +0 -0
  105. /package/{test → dsh-mneme/test}/dream.test.js +0 -0
  106. /package/{test → dsh-mneme/test}/entities.test.js +0 -0
  107. /package/{test → dsh-mneme/test}/epistemic.test.js +0 -0
  108. /package/{test → dsh-mneme/test}/fnew-0112.test.js +0 -0
  109. /package/{test → dsh-mneme/test}/fnew-03.test.js +0 -0
  110. /package/{test → dsh-mneme/test}/graph-api.test.js +0 -0
  111. /package/{test → dsh-mneme/test}/heat.test.js +0 -0
  112. /package/{test → dsh-mneme/test}/helpers/dream-mock.js +0 -0
  113. /package/{test → dsh-mneme/test}/hot-memory.test.js +0 -0
  114. /package/{test → dsh-mneme/test}/inject.test.js +0 -0
  115. /package/{test → dsh-mneme/test}/llm-audit.test.js +0 -0
  116. /package/{test → dsh-mneme/test}/local-embedder.test.js +0 -0
  117. /package/{test → dsh-mneme/test}/mirror-dirty.test.js +0 -0
  118. /package/{test → dsh-mneme/test}/mirror-edit-digest.test.js +0 -0
  119. /package/{test → dsh-mneme/test}/mirror-generation.test.js +0 -0
  120. /package/{test → dsh-mneme/test}/mirror.test.js +0 -0
  121. /package/{test → dsh-mneme/test}/normalize-decisions.test.js +0 -0
  122. /package/{test → dsh-mneme/test}/peer-blockers.test.js +0 -0
  123. /package/{test → dsh-mneme/test}/policy-epoch.test.js +0 -0
  124. /package/{test → dsh-mneme/test}/provenance.test.js +0 -0
  125. /package/{test → dsh-mneme/test}/quality-filter.test.js +0 -0
  126. /package/{test → dsh-mneme/test}/reasoning-effort.test.js +0 -0
  127. /package/{test → dsh-mneme/test}/recall-evals.test.js +0 -0
  128. /package/{test → dsh-mneme/test}/recall-layer.test.js +0 -0
  129. /package/{test → dsh-mneme/test}/recall-runs.test.js +0 -0
  130. /package/{test → dsh-mneme/test}/receipt-chain.test.js +0 -0
  131. /package/{test → dsh-mneme/test}/reflection.test.js +0 -0
  132. /package/{test → dsh-mneme/test}/reranker.test.js +0 -0
  133. /package/{test → dsh-mneme/test}/search-fusion.test.js +0 -0
  134. /package/{test → dsh-mneme/test}/semantic.test.js +0 -0
  135. /package/{test → dsh-mneme/test}/service-search.test.js +0 -0
  136. /package/{test → dsh-mneme/test}/service.test.js +0 -0
  137. /package/{test → dsh-mneme/test}/settings.test.js +0 -0
  138. /package/{test → dsh-mneme/test}/sleep-heat.test.js +0 -0
  139. /package/{test → dsh-mneme/test}/sleep.test.js +0 -0
  140. /package/{test → dsh-mneme/test}/store.test.js +0 -0
  141. /package/{test → dsh-mneme/test}/stress.test.js +0 -0
  142. /package/{test → dsh-mneme/test}/summarize.test.js +0 -0
  143. /package/{test → dsh-mneme/test}/tag-boost.test.js +0 -0
  144. /package/{test → dsh-mneme/test}/tag.test.js +0 -0
  145. /package/{test → dsh-mneme/test}/updated-at-semantics.test.js +0 -0
  146. /package/{test → dsh-mneme/test}/vector-index.test.js +0 -0
  147. /package/{test → dsh-mneme/test}/wiki-link.test.js +0 -0
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "@modusensus/dsh-mneme",
3
+ "description": "Cross-session memory plugin for DeepSeek Harness with autoDream consolidation: SQLite store, Markdown mirrors, 7 model tools, automatic injection, session summarization, user profile/rules, custom slash commands, vector (semantic) search, and a Web GUI panel",
4
+ "version": "0.7.6",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/modusensus/dsh-mneme.git"
9
+ },
10
+ "homepage": "https://github.com/modusensus/dsh-mneme#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/modusensus/dsh-mneme/issues"
13
+ },
14
+ "type": "module",
15
+ "main": "lib/index.js",
16
+ "exports": {
17
+ ".": {
18
+ "default": "./lib/index.js"
19
+ },
20
+ "./client": {
21
+ "default": "./lib/client.js"
22
+ },
23
+ "./package.json": "./package.json"
24
+ },
25
+ "files": [
26
+ "lib",
27
+ "src",
28
+ "scripts",
29
+ "test",
30
+ "cordis.patch.yml"
31
+ ],
32
+ "dsh": {
33
+ "client": {
34
+ "inject": [
35
+ "slots",
36
+ "locale",
37
+ "layout",
38
+ "connection"
39
+ ],
40
+ "platform": "web"
41
+ },
42
+ "bundle": {
43
+ "patch": "./cordis.patch.yml"
44
+ }
45
+ },
46
+ "peerDependencies": {
47
+ "@deepseek-ai/cordis": "^4.0.1",
48
+ "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
49
+ "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
50
+ "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
51
+ "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
52
+ "@deepseek-ai/schemastery": "^3.18.1"
53
+ },
54
+ "devDependencies": {
55
+ "@deepseek-ai/cordis": "^4.0.1",
56
+ "@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.6",
57
+ "@deepseek-ai/dsh-llm": "^0.1.0-rc.6",
58
+ "@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.6",
59
+ "@deepseek-ai/dsh-tools": "^0.1.0-rc.6",
60
+ "@deepseek-ai/schemastery": "^3.18.1",
61
+ "c8": "^12.0.0"
62
+ },
63
+ "scripts": {
64
+ "sync": "node scripts/sync-lib.js",
65
+ "prepack": "npm run sync",
66
+ "test": "node --test test/*.test.js",
67
+ "test:coverage": "c8 node --test test/*.test.js",
68
+ "e2e": "node scripts/e2e-dsh.js",
69
+ "stress": "node scripts/stress-dsh.js"
70
+ },
71
+ "dependencies": {
72
+ "@huggingface/transformers": "^4.2.0"
73
+ },
74
+ "overrides": {
75
+ "adm-zip": "0.6.0"
76
+ },
77
+ "c8": {
78
+ "reporter": [
79
+ "text",
80
+ "lcov"
81
+ ]
82
+ }
83
+ }
@@ -1,7 +1,7 @@
1
1
  // Sync the src/ tree into lib/ — the distributable consumed by DSH (package
2
- // main is lib/index.js). lib/client.js (the Web panel bundle) is authored
3
- // independently under lib/ and is left untouched: the sync only copies
4
- // src -> lib, it never prunes lib-only files.
2
+ // main is lib/index.js). src/ is the single source of truth for every module,
3
+ // including client.js (the Web panel bundle); the sync only copies
4
+ // src -> lib and never prunes output files.
5
5
  //
6
6
  // Usage: npm run sync (also run automatically by `npm pack`/`npm publish`
7
7
  // via the prepack hook, so a published tarball always ships a fresh lib/).
@@ -96,6 +96,21 @@ export function createApi(ctx, service, settings, commands, embedder, semantic =
96
96
  }
97
97
  });
98
98
 
99
+ register({
100
+ kind: "exact",
101
+ path: "/api/dsh-mneme/stats",
102
+ handler(req, res) {
103
+ try {
104
+ const url = new URL(req.url, "http://localhost");
105
+ const raw = url.searchParams.get("days");
106
+ const days = Math.min(30, Math.max(1, parseInt(raw ?? "7", 10) || 7));
107
+ sendJson(res, 200, service.stats({ days }));
108
+ } catch {
109
+ sendJson(res, 500, { error: "internal" });
110
+ }
111
+ }
112
+ });
113
+
99
114
  register({
100
115
  kind: "exact",
101
116
  path: "/api/dsh-mneme/search",