@modusensus/dsh-mneme 0.7.10 → 0.7.12

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 (158) hide show
  1. package/README.en.md +437 -0
  2. package/README.md +364 -166
  3. package/bin/cli.mjs +603 -0
  4. package/{dsh-mneme/cordis.patch.yml → cordis.patch.yml} +1 -0
  5. package/lib/api-standalone.js +264 -0
  6. package/{dsh-mneme/lib → lib}/api.js +133 -289
  7. package/{dsh-mneme/lib → lib}/client.js +1008 -922
  8. package/{dsh-mneme/lib → lib}/config.js +54 -99
  9. package/{dsh-mneme/lib → lib}/dream/decisions.js +94 -143
  10. package/{dsh-mneme/lib → lib}/dream/sleep.js +12 -152
  11. package/{dsh-mneme/lib → lib}/dream.js +22 -168
  12. package/{dsh-mneme/src → lib}/hot-memory.js +0 -7
  13. package/{dsh-mneme/lib → lib}/index.js +45 -42
  14. package/{dsh-mneme/lib → lib}/inject.js +11 -53
  15. package/{dsh-mneme/src → lib}/mirror.js +1 -12
  16. package/{dsh-mneme/lib → lib}/quality-filter.js +1 -3
  17. package/{dsh-mneme/lib → lib}/reranker.js +1 -4
  18. package/{dsh-mneme/lib → lib}/service.js +20 -410
  19. package/{dsh-mneme/src → lib}/settings.js +34 -64
  20. package/{dsh-mneme/lib → lib}/store.js +38 -450
  21. package/{dsh-mneme/lib → lib}/summarize.js +10 -10
  22. package/lib/tools.js +274 -0
  23. package/package.json +45 -19
  24. package/{dsh-mneme/scripts → scripts}/e2e-dsh.js +3 -4
  25. package/{dsh-mneme/scripts → scripts}/sync-lib.js +5 -10
  26. package/src/api-standalone.js +264 -0
  27. package/{dsh-mneme/src → src}/api.js +133 -289
  28. package/{dsh-mneme/src → src}/config.js +54 -99
  29. package/{dsh-mneme/src → src}/dream/decisions.js +94 -143
  30. package/{dsh-mneme/src → src}/dream/sleep.js +12 -152
  31. package/{dsh-mneme/src → src}/dream.js +22 -168
  32. package/{dsh-mneme/lib → src}/hot-memory.js +0 -7
  33. package/{dsh-mneme/src → src}/index.js +45 -42
  34. package/{dsh-mneme/src → src}/inject.js +11 -53
  35. package/{dsh-mneme/lib → src}/mirror.js +1 -12
  36. package/{dsh-mneme/src → src}/quality-filter.js +1 -3
  37. package/{dsh-mneme/src → src}/reranker.js +1 -4
  38. package/{dsh-mneme/src → src}/service.js +20 -410
  39. package/{dsh-mneme/lib → src}/settings.js +34 -64
  40. package/{dsh-mneme/src → src}/store.js +38 -450
  41. package/{dsh-mneme/src → src}/summarize.js +10 -10
  42. package/src/tools.js +274 -0
  43. package/{dsh-mneme/test → test}/api.test.js +45 -156
  44. package/{dsh-mneme/test → test}/client.test.js +10 -206
  45. package/{dsh-mneme/test → test}/config.test.js +0 -21
  46. package/{dsh-mneme/test → test}/dream.test.js +1 -160
  47. package/{dsh-mneme/test → test}/graph-api.test.js +0 -34
  48. package/{dsh-mneme/test → test}/hot-memory.test.js +0 -29
  49. package/test/inject.test.js +120 -0
  50. package/{dsh-mneme/test → test}/llm-audit.test.js +4 -4
  51. package/{dsh-mneme/test → test}/reasoning-effort.test.js +0 -27
  52. package/{dsh-mneme/test → test}/recall-layer.test.js +5 -26
  53. package/{dsh-mneme/test → test}/reranker.test.js +0 -43
  54. package/{dsh-mneme/test → test}/service-search.test.js +0 -25
  55. package/{dsh-mneme/test → test}/service.test.js +0 -106
  56. package/{dsh-mneme/test → test}/settings.test.js +16 -35
  57. package/{dsh-mneme/test → test}/sleep.test.js +4 -171
  58. package/test/standalone-api.test.js +326 -0
  59. package/{dsh-mneme/test → test}/store.test.js +0 -76
  60. package/{dsh-mneme/test → test}/summarize.test.js +16 -15
  61. package/test/tools.test.js +265 -0
  62. package/.github/workflows/publish.yml +0 -58
  63. package/.github/workflows/test.yml +0 -32
  64. package/CHANGELOG.md +0 -91
  65. package/CONTRIBUTING.md +0 -293
  66. package/SECURITY.md +0 -718
  67. package/docs/devlog/2026-08-14-dsh-mneme-dev-log.md +0 -247
  68. package/docs/devlog/2026-08-15-dsh-mneme-audit-stress-dev-log.md +0 -145
  69. package/docs/devlog/2026-08-15-dsh-mneme-pipeline-dev-log.md +0 -56
  70. package/docs/devlog/2026-08-15-dsh-mneme-reflection-dev-log.md +0 -77
  71. package/docs/devlog/2026-08-15-dsh-mneme-review-fixes-dev-log.md +0 -64
  72. package/docs/devlog/2026-08-15-dsh-mneme-semantic-dev-log.md +0 -90
  73. package/dsh-mneme/CHANGELOG.md +0 -419
  74. package/dsh-mneme/LICENSE +0 -21
  75. package/dsh-mneme/README.md +0 -501
  76. package/dsh-mneme/docs/AGENT_MEMORY_RESEARCH.md +0 -183
  77. package/dsh-mneme/docs/ENTITIES.md +0 -245
  78. package/dsh-mneme/docs/LOCAL_MODEL.md +0 -141
  79. package/dsh-mneme/docs/MIGRATION.md +0 -127
  80. package/dsh-mneme/docs/SEMANTIC.md +0 -256
  81. package/dsh-mneme/docs/SLEEP.md +0 -163
  82. package/dsh-mneme/lib/dream/tag-extractor.js +0 -156
  83. package/dsh-mneme/lib/heat.js +0 -136
  84. package/dsh-mneme/lib/parser/tag.js +0 -59
  85. package/dsh-mneme/lib/parser/wiki-link.js +0 -38
  86. package/dsh-mneme/lib/search/tag-boost.js +0 -61
  87. package/dsh-mneme/lib/tools.js +0 -458
  88. package/dsh-mneme/package-lock.json +0 -1936
  89. package/dsh-mneme/package.json +0 -83
  90. package/dsh-mneme/scripts/check-sync.js +0 -42
  91. package/dsh-mneme/src/client.js +0 -2242
  92. package/dsh-mneme/src/dream/tag-extractor.js +0 -156
  93. package/dsh-mneme/src/heat.js +0 -136
  94. package/dsh-mneme/src/parser/tag.js +0 -59
  95. package/dsh-mneme/src/parser/wiki-link.js +0 -38
  96. package/dsh-mneme/src/search/tag-boost.js +0 -61
  97. package/dsh-mneme/src/tools.js +0 -458
  98. package/dsh-mneme/test/boundary-v0625.test.js +0 -82
  99. package/dsh-mneme/test/directory.test.js +0 -134
  100. package/dsh-mneme/test/heat.test.js +0 -148
  101. package/dsh-mneme/test/inject.test.js +0 -206
  102. package/dsh-mneme/test/layered-types-stats.test.js +0 -144
  103. package/dsh-mneme/test/lib-smoke.test.js +0 -109
  104. package/dsh-mneme/test/normalize-decisions.test.js +0 -120
  105. package/dsh-mneme/test/provenance.test.js +0 -103
  106. package/dsh-mneme/test/recall-runs.test.js +0 -93
  107. package/dsh-mneme/test/sleep-heat.test.js +0 -112
  108. package/dsh-mneme/test/tag-boost.test.js +0 -125
  109. package/dsh-mneme/test/tag.test.js +0 -426
  110. package/dsh-mneme/test/tools.test.js +0 -674
  111. package/dsh-mneme/test/updated-at-semantics.test.js +0 -113
  112. package/dsh-mneme/test/wiki-link.test.js +0 -332
  113. package//346/250/252/345/271/205.png +0 -0
  114. /package/{dsh-mneme/lib → lib}/commands.js +0 -0
  115. /package/{dsh-mneme/lib → lib}/dream/clustering.js +0 -0
  116. /package/{dsh-mneme/lib → lib}/embedding.js +0 -0
  117. /package/{dsh-mneme/lib → lib}/entities/extractor.js +0 -0
  118. /package/{dsh-mneme/lib → lib}/local-embedder.js +0 -0
  119. /package/{dsh-mneme/lib → lib}/search/adaptive.js +0 -0
  120. /package/{dsh-mneme/lib → lib}/search/bm25.js +0 -0
  121. /package/{dsh-mneme/lib → lib}/vector-index.js +0 -0
  122. /package/{dsh-mneme/scripts → scripts}/benchmark-embed.js +0 -0
  123. /package/{dsh-mneme/scripts → scripts}/benchmark-recall.js +0 -0
  124. /package/{dsh-mneme/scripts → scripts}/benchmark-rerank.js +0 -0
  125. /package/{dsh-mneme/scripts → scripts}/stress-dsh.js +0 -0
  126. /package/{dsh-mneme/src → src}/commands.js +0 -0
  127. /package/{dsh-mneme/src → src}/dream/clustering.js +0 -0
  128. /package/{dsh-mneme/src → src}/embedding.js +0 -0
  129. /package/{dsh-mneme/src → src}/entities/extractor.js +0 -0
  130. /package/{dsh-mneme/src → src}/local-embedder.js +0 -0
  131. /package/{dsh-mneme/src → src}/search/adaptive.js +0 -0
  132. /package/{dsh-mneme/src → src}/search/bm25.js +0 -0
  133. /package/{dsh-mneme/src → src}/vector-index.js +0 -0
  134. /package/{dsh-mneme/test → test}/audit.test.js +0 -0
  135. /package/{dsh-mneme/test → test}/benchmark.test.js +0 -0
  136. /package/{dsh-mneme/test → test}/clustering.test.js +0 -0
  137. /package/{dsh-mneme/test → test}/commands.test.js +0 -0
  138. /package/{dsh-mneme/test → test}/conflict-freeze.test.js +0 -0
  139. /package/{dsh-mneme/test → test}/entities.test.js +0 -0
  140. /package/{dsh-mneme/test → test}/epistemic.test.js +0 -0
  141. /package/{dsh-mneme/test → test}/fnew-0112.test.js +0 -0
  142. /package/{dsh-mneme/test → test}/fnew-03.test.js +0 -0
  143. /package/{dsh-mneme/test → test}/helpers/dream-mock.js +0 -0
  144. /package/{dsh-mneme/test → test}/local-embedder.test.js +0 -0
  145. /package/{dsh-mneme/test → test}/mirror-dirty.test.js +0 -0
  146. /package/{dsh-mneme/test → test}/mirror-edit-digest.test.js +0 -0
  147. /package/{dsh-mneme/test → test}/mirror-generation.test.js +0 -0
  148. /package/{dsh-mneme/test → test}/mirror.test.js +0 -0
  149. /package/{dsh-mneme/test → test}/peer-blockers.test.js +0 -0
  150. /package/{dsh-mneme/test → test}/policy-epoch.test.js +0 -0
  151. /package/{dsh-mneme/test → test}/quality-filter.test.js +0 -0
  152. /package/{dsh-mneme/test → test}/recall-evals.test.js +0 -0
  153. /package/{dsh-mneme/test → test}/receipt-chain.test.js +0 -0
  154. /package/{dsh-mneme/test → test}/reflection.test.js +0 -0
  155. /package/{dsh-mneme/test → test}/search-fusion.test.js +0 -0
  156. /package/{dsh-mneme/test → test}/semantic.test.js +0 -0
  157. /package/{dsh-mneme/test → test}/stress.test.js +0 -0
  158. /package/{dsh-mneme/test → test}/vector-index.test.js +0 -0
package/CONTRIBUTING.md DELETED
@@ -1,293 +0,0 @@
1
- # Contributing
2
-
3
- > **English** | [中文](#贡献指南)
4
-
5
- ---
6
-
7
- ## Prerequisites
8
-
9
- - **Node.js 24+** (CI runs on Node 24)
10
- - **npm** (the repo uses npm; CI installs with `npm ci`)
11
- - **git** (on Windows, watch LF/CRLF: the repo is LF-normalized and git converts automatically)
12
-
13
- ---
14
-
15
- ## Repository Layout
16
-
17
- The repository root is the publishing manifest; the actual plugin code lives in the `dsh-mneme/` subdirectory:
18
-
19
- ```
20
- dsh-mneme-1/
21
- ├── package.json # npm publishing manifest (main → dsh-mneme/lib/index.js)
22
- ├── README.md / CHANGELOG.md / SECURITY.md
23
- └── dsh-mneme/ # the plugin itself
24
- ├── src/ # source (ESM) — all feature work happens here
25
- ├── lib/ # build output; DSH actually loads lib/index.js
26
- ├── scripts/ # sync-lib.js, check-sync.js, e2e-dsh.js, stress-dsh.js, benchmark-*
27
- ├── test/ # node:test test suite
28
- ├── docs/ # SEMANTIC / SLEEP / ENTITIES / MIGRATION deep-dives
29
- ├── package.json # plugin metadata and scripts
30
- └── cordis.patch.yml # DSH injection patch
31
- ```
32
-
33
- **Key convention: `src/` is the single source of truth; `lib/` is build output.**
34
-
35
- - Write code only in `src/`, then run `npm run sync` to mirror changes into `lib/`.
36
- - **Never edit `lib/` by hand** — the next sync overwrites it.
37
- - Publish from the **repo root**: root `prepack` runs `scripts/check-sync.js`, which asserts `src/` ↔ `lib/` match file-for-file and fails the publish on any drift (issue #65). So run `npm run sync` (in `dsh-mneme/`) and commit the `lib/` changes **before** publishing.
38
-
39
- ---
40
-
41
- ## Local Development
42
-
43
- ```bash
44
- # 1. Install dependencies (inside dsh-mneme/)
45
- cd dsh-mneme
46
- npm ci
47
-
48
- # 2. After editing files under src/, mirror to lib/
49
- npm run sync
50
-
51
- # 3. Run the tests
52
- npm test # node --test test/*.test.js
53
- npm run test:coverage # c8 coverage
54
- ```
55
-
56
- Common scripts (all run under `dsh-mneme/`):
57
-
58
- | Command | Description |
59
- |---------|-------------|
60
- | `npm test` | Full unit/integration suite |
61
- | `npm run test:coverage` | Tests + c8 coverage (used by CI) |
62
- | `npm run e2e` | End-to-end smoke test (scripts/e2e-dsh.js) |
63
- | `npm run stress` | Three-axis stress test (scripts/stress-dsh.js) |
64
- | `npm run sync` | src/ → lib/ mirror |
65
-
66
- ---
67
-
68
- ## Testing Conventions
69
-
70
- - Tests use Node's built-in **`node:test` + `node:assert/strict`**; no third-party test framework.
71
- - New features require corresponding tests; **changing core logic (e.g. model routing, decision validation) must update the affected test assertions** so the suite stays green before committing.
72
- - Test files live in `test/`, named `*.test.js`; shared mocks go in `test/helpers/` (e.g. `dream-mock.js`).
73
- - Known environment dependency: a few cases in `reranker.test.js` need `@huggingface/transformers` (locally this one case fails without the package; it is unrelated to repo logic and CI installs it and passes).
74
- - The published artifact is covered too: `test/lib-smoke.test.js` imports from `lib/` and asserts `src/` ↔ `lib/` are file-for-file identical (issue #65 regression guard).
75
-
76
- ---
77
-
78
- ## Code Style & Engineering Conventions
79
-
80
- - **ESM**: the repo is `"type": "module"`; everything uses `import`/`export`.
81
- - **Comments in Chinese**, biased toward "why" — core logic, config options, and fail-safe branches must explain their intent.
82
- - **Fail-safe is a hard rule**: local failures in any background LLM path (autoDream / sleep / autoTag / summarization) must skip or degrade, **never** block the main flow (write, recall, injection).
83
- - **Config is defined centrally with schemastery in `src/config.js`** (`z.object` + `.default(...)`); new options must keep docs and default-value semantics in sync.
84
- - **Audit honesty**: a run's status (ok / noop / degraded / reconcile / failed) must reflect what actually committed — never a fake ok.
85
-
86
- ---
87
-
88
- ## Commits & Branches
89
-
90
- - Commit messages follow **Conventional Commits**:
91
-
92
- ```
93
- fix(dream): reject cross-type merge as a whole batch (Issue #26)
94
- feat(tag): add tag-weighted recall
95
- docs: expand the SEMANTIC doc
96
- release: v0.6.9 ...
97
- ```
98
-
99
- - Run `npm test` before committing and confirm green (note any environment-only known exceptions in the commit message).
100
- - **Small fixes**: can push straight to `main` (this is the project's workflow).
101
- - **Larger features / breaking changes**: open an Issue first to state the motivation and design, then submit a PR — the PR triggers CI (Node 24 + full suite + Codecov).
102
- - Release operations (version bumps, tags, Releases, npm publish) are performed by maintainers — see the next section.
103
-
104
- ---
105
-
106
- ## Scope: Platform Adaptation & Wrapper PRs
107
-
108
- DSH upstream is still in developer preview — APIs and service interfaces change frequently. Until DSH reaches a stable release (RC or GA), **PRs that adapt dsh-mneme to secondary platforms or wrap it into other hosts are not a priority** and are reviewed with extra caution:
109
-
110
- - Desktop shells (e.g. a Tauri/Electron wrapper around `dsh web`)
111
- - Standalone CLI packaging
112
- - Ports/wrappers of dsh-mneme into other plugin ecosystems
113
-
114
- These tend to bind against unstable upstream APIs: a single upstream change can break them, and the maintenance burden falls back on this project. The currently supported platform is the **Web Profile** (`dsh web`).
115
-
116
- Exceptions: if a contributor is willing to **own long-term maintenance** (track upstream changes and fix breakage), open a Discussion first to scope the work — maintainers will evaluate and review the PR.
117
-
118
- Bug-fix PRs for existing desktop compatibility issues are still welcome.
119
-
120
- ---
121
-
122
- ## Release Process (Maintainers)
123
-
124
- Versioning follows semantic versioning (`MAJOR.MINOR.PATCH`). Full flow:
125
-
126
- 1. **Update CHANGELOG**: add a version entry (`## [X.Y.Z] - date`, split into 「修复 / 新增 / 测试」) at the top of `dsh-mneme/CHANGELOG.md`; update the root `CHANGELOG.md` if it tracks the same.
127
- 2. **Bump version**: change `version` in `dsh-mneme/package.json` and `package-lock.json`; the root `package.json` is synced automatically by the `prepublishOnly` hook — no manual edit.
128
- 3. **Full test pass**: `npm test` must be green.
129
- 4. **Commit and push**: commit → `git push origin main` → `git tag vX.Y.Z` → `git push origin vX.Y.Z`.
130
- 5. **Create a GitHub Release**: title `vX.Y.Z`, body referencing the matching CHANGELOG entry (review before publishing).
131
- 6. **Publish to npm**: run `npm publish` from the **repository root** (`prepublishOnly` copies the version from `dsh-mneme/package.json` into the root `package.json`; `prepack` runs `scripts/check-sync.js` and fails if `src/` ↔ `lib/` drifted — ensure `npm run sync` + commit ran first).
132
-
133
- ---
134
-
135
- ## Contact
136
-
137
- - **General questions & contributions**: [GitHub Discussions](https://github.com/modusensus/dsh-mneme/discussions) or `work@modusensus.space`
138
- - **Security vulnerabilities**: report privately via [SECURITY.md](SECURITY.md) — never open a public issue for vulnerabilities
139
-
140
- ---
141
-
142
- ## Miscellaneous
143
-
144
- - Security issues go through [SECURITY.md](SECURITY.md) or a GitHub Security Advisory — never paste sensitive info into a public Issue.
145
- - Be respectful and constructive; PRs touching data integrity, security, or behavior must include reproduction steps and regression evidence.
146
-
147
- ---
148
-
149
- # 贡献指南
150
-
151
- > **中文** | [English](#contributing)
152
-
153
- ---
154
-
155
- ## 环境要求
156
-
157
- - **Node.js 24+**(CI 在 node 24 上运行)
158
- - **npm**(仓库使用 npm,CI 用 `npm ci`)
159
- - **git**(Windows 下注意 LF/CRLF:仓库以 LF 为准,git 会自动转换)
160
-
161
- ---
162
-
163
- ## 代码库布局
164
-
165
- 仓库根目录是发布清单,实际插件代码在 `dsh-mneme/` 子目录:
166
-
167
- ```
168
- dsh-mneme-1/
169
- ├── package.json # npm 包发布清单(main 指向 dsh-mneme/lib/index.js)
170
- ├── README.md / CHANGELOG.md / SECURITY.md
171
- └── dsh-mneme/ # 插件本体
172
- ├── src/ # 源码(ESM),所有功能都在这里开发
173
- ├── lib/ # 构建产物,DSH 实际加载的是 lib/index.js
174
- ├── scripts/ # sync-lib.js、check-sync.js、e2e-dsh.js、stress-dsh.js、benchmark-*
175
- ├── test/ # node:test 测试
176
- ├── docs/ # SEMANTIC / SLEEP / ENTITIES / MIGRATION 等专题文档
177
- ├── package.json # 插件包元数据与 scripts
178
- └── cordis.patch.yml # DSH 注入补丁
179
- ```
180
-
181
- **关键约定:`src/` 是唯一的事实来源,`lib/` 是构建产物。**
182
-
183
- - 所有代码改动只写 `src/`,改完必须运行 `npm run sync` 同步到 `lib/`。
184
- - **不要手工编辑 `lib/`**——下次 sync 会覆盖你的改动。
185
- - 发布在**仓库根**执行:root `prepack` 会跑 `scripts/check-sync.js`,逐文件断言 `src/` ↔ `lib/` 一致,有漂移直接发布失败(issue #65 教训)。所以发布前务必先在 `dsh-mneme/` 里跑 `npm run sync` 并把 `lib/` 改动一起提交。
186
-
187
- ---
188
-
189
- ## 本地开发
190
-
191
- ```bash
192
- # 1. 安装依赖(在 dsh-mneme/ 目录内)
193
- cd dsh-mneme
194
- npm ci
195
-
196
- # 2. 修改 src/ 下的文件后,同步到 lib/
197
- npm run sync
198
-
199
- # 3. 跑测试
200
- npm test # node --test test/*.test.js
201
- npm run test:coverage # c8 覆盖率
202
- ```
203
-
204
- 常用脚本(均在 `dsh-mneme/` 下):
205
-
206
- | 命令 | 说明 |
207
- |------|------|
208
- | `npm test` | 全量单元/集成测试 |
209
- | `npm run test:coverage` | 测试 + c8 覆盖率(CI 使用) |
210
- | `npm run e2e` | 端到端冒烟(scripts/e2e-dsh.js) |
211
- | `npm run stress` | 三轴线压测(scripts/stress-dsh.js) |
212
- | `npm run sync` | src/ → lib/ 同步 |
213
-
214
- ---
215
-
216
- ## 测试约定
217
-
218
- - 测试框架为 Node 内置 **`node:test` + `node:assert/strict`**,不引入第三方测试库。
219
- - 新增功能必须有对应测试;**修改核心逻辑(如模型路由、决策校验)时必须同步更新受影响用例的断言**,保证全量测试通过后提交。
220
- - 测试文件放在 `test/`,命名 `*.test.js`;共享 mock 放 `test/helpers/`(如 `dream-mock.js`)。
221
- - 已知环境依赖:`reranker.test.js` 的个别用例需要 `@huggingface/transformers`(本地未安装该包时这 1 例会失败,与本仓库逻辑无关,CI 会正常安装并通过)。
222
- - 发布产物也被覆盖:`test/lib-smoke.test.js` 从 `lib/` 直接导入复跑关键用例,并断言 src↔lib 逐文件一致(issue #65 防再犯)。
223
-
224
- ---
225
-
226
- ## 代码风格与工程约定
227
-
228
- - **ESM**:仓库 `"type": "module"`,全部使用 `import`/`export`。
229
- - **注释用中文**,且偏向"解释为什么"——核心逻辑、配置项、fail-safe 分支都要求写清意图。
230
- - **fail-safe 是硬性约定**:所有后台 LLM 链路(autoDream / sleep / autoTag / 摘要)中的局部失败只能跳过或降级,**绝不能**阻断主流程(写入、检索、注入)。
231
- - **配置项统一用 schemastery 定义在 `src/config.js`**(`z.object` + `.default(...)`),新增配置记得同步文档与默认值语义。
232
- - **审计诚实性**:任何 run 的状态(ok / noop / degraded / reconcile / failed)必须反映真实提交结果,绝不虚报。
233
-
234
- ---
235
-
236
- ## 提交与分支
237
-
238
- - 提交信息遵循 **Conventional Commits**:
239
-
240
- ```
241
- fix(dream): 修复跨类型 merge 整单拒绝(Issue #26)
242
- feat(tag): 新增标签加权召回
243
- docs: 补充 SEMANTIC 文档
244
- release: v0.6.9 ...
245
- ```
246
-
247
- - 提交前跑一遍 `npm test` 确认全绿(环境相关的已知例外需在提交说明里注明)。
248
- - **小改动 / 修复**:可直推 `main`(本项目采用此工作流)。
249
- - **较大功能 / 破坏性改动**:建议先开 Issue 说明动机与方案,再通过 PR 提交,PR 会触发 CI 校验(node 24 + 全量测试 + Codecov)。
250
- - 发布相关操作(改版本号、打 tag、发 Release、npm publish)由维护者执行,详见下节。
251
-
252
- ---
253
-
254
- ## 范围:平台适配与封装 PR
255
-
256
- DSH 上游仍处于 developer preview 阶段,API 与服务接口变动频繁。在 DSH 稳定(RC 或正式版)之前,以下方向的 PR **不作为优先项**,且会以额外谨慎的态度审查:
257
-
258
- - 桌面端适配(例如基于 `dsh web` 的 Tauri/Electron 桌面壳)
259
- - 独立 CLI 封装
260
- - 把 dsh-mneme 移植/封装到其他插件体系
261
-
262
- 这类 PR 往往绑定不稳定的上游接口——上游一次变动就可能使其失效,而维护责任会落到本项目头上。当前唯一受支持的平台是 **Web Profile**(`dsh web`)。
263
-
264
- 例外:如果贡献者愿意**承担长期维护**(跟进上游变更并修复 break),请先开 Discussion 沟通范围,维护者会评估并 review 该 PR。
265
-
266
- 针对现有 desktop 兼容问题的 **bug 修复 PR 依然欢迎**。
267
-
268
- ---
269
-
270
- ## 发布流程(维护者)
271
-
272
- 版本号遵循语义化版本(`MAJOR.MINOR.PATCH`)。完整流程:
273
-
274
- 1. **更新 CHANGELOG**:在 `dsh-mneme/CHANGELOG.md` 顶部新增版本条目(`## [X.Y.Z] - 日期`,分「修复 / 新增 / 测试」小节),根目录 `CHANGELOG.md` 如涉及同步更新。
275
- 2. **更新版本号**:改 `dsh-mneme/package.json` 的 `version` 与 `package-lock.json`;根目录 `package.json` 由 `prepublishOnly` 钩子自动同步,无需手改。
276
- 3. **全量测试**:`npm test` 确认通过。
277
- 4. **提交并推送**:commit → `git push origin main` → `git tag vX.Y.Z` → `git push origin vX.Y.Z`。
278
- 5. **创建 GitHub Release**:标题为 `vX.Y.Z`,正文引用 CHANGELOG 对应条目(发布前需人工过目)。
279
- 6. **发布 npm**:在**仓库根目录**执行 `npm publish`(`prepublishOnly` 会自动把 `dsh-mneme/package.json` 的版本号写入根 `package.json`,`prepack` 会跑 `scripts/check-sync.js` 校验 src↔lib 一致性,漂移则发布失败——发布前须先 `npm run sync` 并提交 `lib/` 改动)。
280
-
281
- ---
282
-
283
- ## 联系方式
284
-
285
- - **一般问题与贡献咨询**:[GitHub Discussions](https://github.com/modusensus/dsh-mneme/discussions) 或 `work@modusensus.space`
286
- - **安全漏洞**:请通过 [SECURITY.md](SECURITY.md) 私有提交,不要在公开 Issue 中提交漏洞
287
-
288
- ---
289
-
290
- ## 其他
291
-
292
- - 安全问题请走 [SECURITY.md](SECURITY.md) 或 GitHub Security Advisory,不要在公开 Issue 贴敏感信息。
293
- - 保持礼貌与建设性;涉及数据损坏 / 安全 / 破坏性改动的 PR 需附复现步骤与回归证据。