pmem-ai 0.5.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 (99) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/LICENSE +21 -0
  3. package/README.md +349 -0
  4. package/dist/commands/ask.d.ts +3 -0
  5. package/dist/commands/ask.d.ts.map +1 -0
  6. package/dist/commands/ask.js +303 -0
  7. package/dist/commands/ask.js.map +1 -0
  8. package/dist/commands/distill.d.ts +6 -0
  9. package/dist/commands/distill.d.ts.map +1 -0
  10. package/dist/commands/distill.js +425 -0
  11. package/dist/commands/distill.js.map +1 -0
  12. package/dist/commands/graph.d.ts +6 -0
  13. package/dist/commands/graph.d.ts.map +1 -0
  14. package/dist/commands/graph.js +216 -0
  15. package/dist/commands/graph.js.map +1 -0
  16. package/dist/commands/init.d.ts +5 -0
  17. package/dist/commands/init.d.ts.map +1 -0
  18. package/dist/commands/init.js +566 -0
  19. package/dist/commands/init.js.map +1 -0
  20. package/dist/commands/integration.d.ts +2 -0
  21. package/dist/commands/integration.d.ts.map +1 -0
  22. package/dist/commands/integration.js +216 -0
  23. package/dist/commands/integration.js.map +1 -0
  24. package/dist/commands/migrate.d.ts +6 -0
  25. package/dist/commands/migrate.d.ts.map +1 -0
  26. package/dist/commands/migrate.js +379 -0
  27. package/dist/commands/migrate.js.map +1 -0
  28. package/dist/commands/rebuild.d.ts +8 -0
  29. package/dist/commands/rebuild.d.ts.map +1 -0
  30. package/dist/commands/rebuild.js +299 -0
  31. package/dist/commands/rebuild.js.map +1 -0
  32. package/dist/commands/recall.d.ts +3 -0
  33. package/dist/commands/recall.d.ts.map +1 -0
  34. package/dist/commands/recall.js +140 -0
  35. package/dist/commands/recall.js.map +1 -0
  36. package/dist/commands/session.d.ts +3 -0
  37. package/dist/commands/session.d.ts.map +1 -0
  38. package/dist/commands/session.js +147 -0
  39. package/dist/commands/session.js.map +1 -0
  40. package/dist/commands/status.d.ts +5 -0
  41. package/dist/commands/status.d.ts.map +1 -0
  42. package/dist/commands/status.js +275 -0
  43. package/dist/commands/status.js.map +1 -0
  44. package/dist/commands/update.d.ts +14 -0
  45. package/dist/commands/update.d.ts.map +1 -0
  46. package/dist/commands/update.js +536 -0
  47. package/dist/commands/update.js.map +1 -0
  48. package/dist/commands/verify.d.ts +4 -0
  49. package/dist/commands/verify.d.ts.map +1 -0
  50. package/dist/commands/verify.js +296 -0
  51. package/dist/commands/verify.js.map +1 -0
  52. package/dist/core/db.d.ts +47 -0
  53. package/dist/core/db.d.ts.map +1 -0
  54. package/dist/core/db.js +326 -0
  55. package/dist/core/db.js.map +1 -0
  56. package/dist/core/format.d.ts +3 -0
  57. package/dist/core/format.d.ts.map +1 -0
  58. package/dist/core/format.js +221 -0
  59. package/dist/core/format.js.map +1 -0
  60. package/dist/core/fs.d.ts +16 -0
  61. package/dist/core/fs.d.ts.map +1 -0
  62. package/dist/core/fs.js +175 -0
  63. package/dist/core/fs.js.map +1 -0
  64. package/dist/core/git.d.ts +6 -0
  65. package/dist/core/git.d.ts.map +1 -0
  66. package/dist/core/git.js +20 -0
  67. package/dist/core/git.js.map +1 -0
  68. package/dist/core/hash.d.ts +10 -0
  69. package/dist/core/hash.d.ts.map +1 -0
  70. package/dist/core/hash.js +25 -0
  71. package/dist/core/hash.js.map +1 -0
  72. package/dist/core/manifest.d.ts +6 -0
  73. package/dist/core/manifest.d.ts.map +1 -0
  74. package/dist/core/manifest.js +207 -0
  75. package/dist/core/manifest.js.map +1 -0
  76. package/dist/core/yaml.d.ts +11 -0
  77. package/dist/core/yaml.d.ts.map +1 -0
  78. package/dist/core/yaml.js +94 -0
  79. package/dist/core/yaml.js.map +1 -0
  80. package/dist/index.d.ts +3 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +167 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/types.d.ts +351 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +4 -0
  87. package/dist/types.js.map +1 -0
  88. package/docs/Voorlopige projekidee.md +695 -0
  89. package/docs/handover-v0.3.md +355 -0
  90. package/docs/handover-v0.4.md +367 -0
  91. package/docs/prd.md +318 -0
  92. package/docs/project-roadmap.md +279 -0
  93. package/docs/release-checklist-v0.5.md +109 -0
  94. package/docs/v0.2 pre-design.md +182 -0
  95. package/docs/v0.2 pre-roadmap.md +270 -0
  96. package/docs/v0.3 pre-design.md +686 -0
  97. package/docs/v0.4 pre-design.md +417 -0
  98. package/docs/v0.5 pre-design.md +481 -0
  99. package/package.json +67 -0
@@ -0,0 +1,270 @@
1
+ # v0.2 前置路线图
2
+
3
+ 本文档定义 v0.2 的目标架构、命令优先级和实现顺序。设计依据来自 `v0.2 pre-design.md`,不与 `Voorlopige projekidee.md` 中的长期愿景冲突。
4
+
5
+ ---
6
+
7
+ ## 一、v0.2 主题
8
+
9
+ > **可信地长期使用** — 冷启动不空、并发不丢、卡片不乱、版本可迁、记忆可持续。
10
+
11
+ v0.1 证明了"能记"。v0.2 要证明"值得长期记"。
12
+
13
+ ---
14
+
15
+ ## 二、v0.2 目录结构
16
+
17
+ ```txt
18
+ .pmem/
19
+ manifest.yml
20
+
21
+ index.md
22
+ state.md
23
+ next.md
24
+
25
+ modules/
26
+ features/
27
+ decisions/
28
+ tasks/
29
+ traces/
30
+ risks/
31
+ summaries/
32
+
33
+ candidates/ # 新增:冷启动扫描候选项
34
+ modules.generated.md
35
+
36
+ indexes/
37
+ graph.json
38
+ bm25.json
39
+ card_hashes.json # 新增:乐观锁快照
40
+
41
+ skills/
42
+ recall.md
43
+ update.md
44
+ distill.md # 新增
45
+
46
+ integrations/
47
+ claude-code/
48
+ cursor/
49
+ codex/
50
+
51
+ backups/ # 新增:迁移前自动备份
52
+ migrations/ # 新增:项目自定义迁移(预留)
53
+
54
+ AGENTS.md
55
+ ```
56
+
57
+ **变化点:**
58
+ - 新增 `risks/` — 风险卡片目录
59
+ - 新增 `candidates/` — 冷启动扫描产物,不直接进入 `modules/`
60
+ - 新增 `indexes/card_hashes.json` — 乐观锁快照
61
+ - 新增 `backups/`、`migrations/` — 迁移基础设施
62
+ - 新增 `skills/distill.md` — 蒸馏操作手册
63
+
64
+ ---
65
+
66
+ ## 三、v0.2 manifest 目标形态
67
+
68
+ ```yml
69
+ pmem:
70
+ schema_version: "0.2"
71
+ protocol_version: "0.2"
72
+ created_by: "0.2.0"
73
+ last_migrated_by: null
74
+
75
+ project:
76
+ name: ""
77
+ language: "zh-CN"
78
+ status: "active"
79
+
80
+ memory_status:
81
+ completeness: "incomplete" # incomplete | partial | usable | mature
82
+ initialized_mode: "guided" # minimal | guided | from_manifest | imported
83
+ dirty: false
84
+ dirty_since: null
85
+ dirty_reason: null
86
+
87
+ source_of_truth:
88
+ type: markdown_cards
89
+ card_globs:
90
+ - ".pmem/modules/**/*.md"
91
+ - ".pmem/features/**/*.md"
92
+ - ".pmem/decisions/**/*.md"
93
+ - ".pmem/tasks/**/*.md"
94
+ - ".pmem/traces/**/*.md"
95
+ - ".pmem/risks/**/*.md"
96
+
97
+ indexes:
98
+ path: ".pmem/indexes"
99
+ generated: true
100
+ graph:
101
+ mode: single
102
+ path: ".pmem/indexes/graph.json"
103
+ keyword:
104
+ mode: bm25
105
+ path: ".pmem/indexes/bm25.json"
106
+ hashes:
107
+ path: ".pmem/indexes/card_hashes.json"
108
+
109
+ concurrency:
110
+ lock: file
111
+ lock_path: ".pmem/.lock"
112
+ timeout: "5s"
113
+ stale_after: "60s"
114
+ on_timeout: "abort"
115
+ optimistic_lock: true
116
+ atomic_write: true
117
+
118
+ auto_update:
119
+ enabled: true
120
+ on_code_change: mark_dirty
121
+ on_doc_change: mark_dirty
122
+ on_memory_change: rebuild_indexes
123
+ on_session_end: prompt
124
+ min_trace_interval: "30m"
125
+ max_auto_traces_per_day: 5
126
+ trace_policy:
127
+ require_meaningful_change: true
128
+ require_summary: true
129
+ require_related_node: true
130
+
131
+ card_policy:
132
+ id_pattern: "^(project|module|feature|task|decision|trace|risk|assumption|resource|integration)\\.[a-z0-9._-]+$"
133
+ max_tokens:
134
+ module: 1200
135
+ feature: 1000
136
+ decision: 800
137
+ task: 600
138
+ trace: 1000
139
+ max_sections:
140
+ module: 8
141
+ feature: 8
142
+ decision: 6
143
+ task: 6
144
+ warn_when_related_count_gt: 12
145
+
146
+ distill:
147
+ enabled: true
148
+ cadence: weekly
149
+ max_undistilled_traces: 20
150
+ require_confirmation: true
151
+ suggest_card_splits: true
152
+
153
+ freshness:
154
+ default_ttl: "14d"
155
+ stale_on_related_code_change: true
156
+ require_last_verified: true
157
+
158
+ integrations:
159
+ active: []
160
+ compatibility: {}
161
+
162
+ migrations:
163
+ applied: []
164
+ ```
165
+
166
+ ---
167
+
168
+ ## 四、命令优先级
169
+
170
+ ### P0 — 必须完成(工程底座)
171
+
172
+ | 命令 | 说明 |
173
+ |------|------|
174
+ | `pmem init --guided` | 交互式冷启动,v0.2 核心功能 |
175
+ | `pmem init` | 增强:生成 candidates、标记 memory_incomplete |
176
+ | `pmem verify` | 增强:检查 schema_version、card_policy 违规、card 过大 |
177
+ | `pmem rebuild` | 增强:生成 card_hashes.json、支持乐观锁快照 |
178
+ | `pmem migrate --dry-run` | 预览迁移变更 |
179
+ | `pmem migrate --to 0.2` | 执行迁移(带自动备份) |
180
+ | `pmem mark-dirty` | 增强:更新 memory_status.dirty |
181
+
182
+ ### P1 — 应该完成(长期可用性)
183
+
184
+ | 命令 | 说明 |
185
+ |------|------|
186
+ | `pmem distill` | trace → card 蒸馏(建议模式,需确认) |
187
+ | `pmem distill --suggest-splits` | 建议拆分过大卡片 |
188
+ | `pmem lock status` | 查看锁状态 |
189
+ | `pmem update --auto --mode=suggest` | 增强:冲突检测、乐观锁检查 |
190
+ | `pmem update --confirm` | 增强:atomic write、锁保护 |
191
+
192
+ ### P2 — 可延后
193
+
194
+ | 命令 | 说明 |
195
+ |------|------|
196
+ | `pmem split --interactive` | 交互式拆分卡片 |
197
+ | `pmem update --merge` | section-level 安全合并 |
198
+ | `pmem init --from <file>` | 声明式初始化 |
199
+ | `pmem bootstrap-scan --deep` | 深度学习项目结构 |
200
+
201
+ ---
202
+
203
+ ## 五、实现顺序
204
+
205
+ ```
206
+ Phase 1: 类型与 manifest 升级
207
+ ├── 新增 v0.2 类型(CardPolicy, ConcurrencyConfig, MemoryStatus, MigrationRecord 等)
208
+ ├── 升级 Manifest 类型
209
+ ├── 升级 manifest 序列化/反序列化
210
+ └── 更新默认 manifest 模板
211
+
212
+ Phase 2: 迁移系统
213
+ ├── pmem migrate --dry-run
214
+ ├── pmem migrate --to 0.2(0.1→0.2 迁移规则)
215
+ ├── 自动备份(.pmem/backups/)
216
+ └── pmem verify 版本检查
217
+
218
+ Phase 3: 并发保护
219
+ ├── file lock(.pmem/.lock)
220
+ ├── atomic write(.tmp → fsync → rename)
221
+ ├── card_hashes.json 乐观锁
222
+ ├── 冲突检测与报告
223
+ └── pmem lock status
224
+
225
+ Phase 4: 冷启动
226
+ ├── pmem init --guided(交互式问答)
227
+ ├── pmem init 增强(扫描、candidates/、memory_incomplete)
228
+ ├── 降级 recall 输出
229
+ └── pmem init --from <file>(P2,可延后)
230
+
231
+ Phase 5: 卡片治理
232
+ ├── card_policy 校验(ID 命名、大小阈值)
233
+ ├── pmem verify 增强(card_policy 违规检测)
234
+ ├── pmem distill(trace → card 蒸馏建议)
235
+ └── pmem distill --suggest-splits
236
+
237
+ Phase 6: 收尾
238
+ ├── skills/distill.md
239
+ ├── .pmem/integrations/ 模板更新
240
+ ├── 端到端测试
241
+ └── 文档更新
242
+ ```
243
+
244
+ ---
245
+
246
+ ## 六、从 v0.1 到 v0.2 的关键架构变化
247
+
248
+ | 方面 | v0.1 | v0.2 |
249
+ |------|------|------|
250
+ | 主数据类型 | `CardFrontmatter` 8 字段 | 新增 `schema_version`, `version`, `content_hash` |
251
+ | 并发 | 无保护 | 文件锁 + 乐观锁 + 原子写 |
252
+ | init | 空骨架 | 三种模式 + candidates + memory_incomplete |
253
+ | verify | index 一致性 | + schema 版本 + card_policy 违规 + 过大卡片 |
254
+ | manifest | 无版本标识 | `pmem.schema_version` + `migrations.applied` |
255
+ | rebuild | graph.json 单一索引 | + card_hashes.json |
256
+ | update | 直接写入 | atomic write + 冲突检测 |
257
+ | 卡片粒度 | 无约束 | card_policy 强制校验 |
258
+
259
+ ---
260
+
261
+ ## 七、不在此版本的内容
262
+
263
+ - embeddings / semantic search → v0.3
264
+ - SQLite 图索引 → v0.3
265
+ - `pmem serve` HTTP API / MCP Server → v0.3
266
+ - graph 分片存储 → v0.3
267
+ - 增量 rebuild → v0.3
268
+ - 记忆质量评分 → v0.3
269
+ - 自动拆分卡片 → v0.3
270
+ - section-level merge → v0.2 P2(可延后)