@chendpoc/pi-memory 0.1.12 → 0.1.13

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 (170) hide show
  1. package/README.md +88 -16
  2. package/dist/cache/memoryCaches.d.ts +32 -0
  3. package/dist/cache/memoryCaches.d.ts.map +1 -0
  4. package/dist/cache/memoryCaches.js +59 -0
  5. package/dist/cache/memoryCaches.js.map +1 -0
  6. package/dist/cli.js +123 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +28 -0
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +37 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/consolidation/enqueue.d.ts +33 -0
  13. package/dist/consolidation/enqueue.d.ts.map +1 -0
  14. package/dist/consolidation/enqueue.js +145 -0
  15. package/dist/consolidation/enqueue.js.map +1 -0
  16. package/dist/consolidation/index.d.ts +19 -0
  17. package/dist/consolidation/index.d.ts.map +1 -0
  18. package/dist/consolidation/index.js +15 -0
  19. package/dist/consolidation/index.js.map +1 -0
  20. package/dist/consolidation/lock.d.ts +5 -0
  21. package/dist/consolidation/lock.d.ts.map +1 -0
  22. package/dist/consolidation/lock.js +33 -0
  23. package/dist/consolidation/lock.js.map +1 -0
  24. package/dist/consolidation/log.d.ts +8 -0
  25. package/dist/consolidation/log.d.ts.map +1 -0
  26. package/dist/consolidation/log.js +32 -0
  27. package/dist/consolidation/log.js.map +1 -0
  28. package/dist/consolidation/memoryIndex.d.ts +18 -0
  29. package/dist/consolidation/memoryIndex.d.ts.map +1 -0
  30. package/dist/consolidation/memoryIndex.js +100 -0
  31. package/dist/consolidation/memoryIndex.js.map +1 -0
  32. package/dist/consolidation/phase2/runPhase2.d.ts +23 -0
  33. package/dist/consolidation/phase2/runPhase2.d.ts.map +1 -0
  34. package/dist/consolidation/phase2/runPhase2.js +196 -0
  35. package/dist/consolidation/phase2/runPhase2.js.map +1 -0
  36. package/dist/consolidation/scheduler/launchd.d.ts +5 -0
  37. package/dist/consolidation/scheduler/launchd.d.ts.map +1 -0
  38. package/dist/consolidation/scheduler/launchd.js +54 -0
  39. package/dist/consolidation/scheduler/launchd.js.map +1 -0
  40. package/dist/consolidation/scheduler/runConsolidate.d.ts +26 -0
  41. package/dist/consolidation/scheduler/runConsolidate.d.ts.map +1 -0
  42. package/dist/consolidation/scheduler/runConsolidate.js +83 -0
  43. package/dist/consolidation/scheduler/runConsolidate.js.map +1 -0
  44. package/dist/consolidation/scheduler/setupSchedule.d.ts +3 -0
  45. package/dist/consolidation/scheduler/setupSchedule.d.ts.map +1 -0
  46. package/dist/consolidation/scheduler/setupSchedule.js +79 -0
  47. package/dist/consolidation/scheduler/setupSchedule.js.map +1 -0
  48. package/dist/consolidation/scheduler/systemd.d.ts +9 -0
  49. package/dist/consolidation/scheduler/systemd.d.ts.map +1 -0
  50. package/dist/consolidation/scheduler/systemd.js +57 -0
  51. package/dist/consolidation/scheduler/systemd.js.map +1 -0
  52. package/dist/consolidation/scheduler/types.d.ts +24 -0
  53. package/dist/consolidation/scheduler/types.d.ts.map +1 -0
  54. package/dist/consolidation/scheduler/types.js +2 -0
  55. package/dist/consolidation/scheduler/types.js.map +1 -0
  56. package/dist/consolidation/scope.d.ts +12 -0
  57. package/dist/consolidation/scope.d.ts.map +1 -0
  58. package/dist/consolidation/scope.js +51 -0
  59. package/dist/consolidation/scope.js.map +1 -0
  60. package/dist/consolidation/stage1/deltaExtract.d.ts +3 -0
  61. package/dist/consolidation/stage1/deltaExtract.d.ts.map +1 -0
  62. package/dist/consolidation/stage1/deltaExtract.js +19 -0
  63. package/dist/consolidation/stage1/deltaExtract.js.map +1 -0
  64. package/dist/consolidation/stage1/drainQueue.d.ts +21 -0
  65. package/dist/consolidation/stage1/drainQueue.d.ts.map +1 -0
  66. package/dist/consolidation/stage1/drainQueue.js +113 -0
  67. package/dist/consolidation/stage1/drainQueue.js.map +1 -0
  68. package/dist/consolidation/stage1/extractSession.d.ts +6 -0
  69. package/dist/consolidation/stage1/extractSession.d.ts.map +1 -0
  70. package/dist/consolidation/stage1/extractSession.js +47 -0
  71. package/dist/consolidation/stage1/extractSession.js.map +1 -0
  72. package/dist/consolidation/stage1/store.d.ts +45 -0
  73. package/dist/consolidation/stage1/store.d.ts.map +1 -0
  74. package/dist/consolidation/stage1/store.js +297 -0
  75. package/dist/consolidation/stage1/store.js.map +1 -0
  76. package/dist/consolidation/types.d.ts +49 -0
  77. package/dist/consolidation/types.d.ts.map +1 -0
  78. package/dist/consolidation/types.js +2 -0
  79. package/dist/consolidation/types.js.map +1 -0
  80. package/dist/fallback/llmRerank.d.ts.map +1 -1
  81. package/dist/fallback/llmRerank.js +9 -1
  82. package/dist/fallback/llmRerank.js.map +1 -1
  83. package/dist/fallback/sessionIndex.d.ts.map +1 -1
  84. package/dist/fallback/sessionIndex.js +15 -63
  85. package/dist/fallback/sessionIndex.js.map +1 -1
  86. package/dist/index.d.ts +4 -3
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +4 -3
  89. package/dist/index.js.map +1 -1
  90. package/dist/local/graphQuery.d.ts +10 -0
  91. package/dist/local/graphQuery.d.ts.map +1 -1
  92. package/dist/local/graphQuery.js +25 -0
  93. package/dist/local/graphQuery.js.map +1 -1
  94. package/dist/pi-extension.d.ts.map +1 -1
  95. package/dist/pi-extension.js +356 -22
  96. package/dist/pi-extension.js.map +1 -1
  97. package/dist/preflight/detectIntents.d.ts.map +1 -1
  98. package/dist/preflight/detectIntents.js +7 -0
  99. package/dist/preflight/detectIntents.js.map +1 -1
  100. package/dist/preflight/hook.d.ts +18 -0
  101. package/dist/preflight/hook.d.ts.map +1 -1
  102. package/dist/preflight/hook.js +52 -7
  103. package/dist/preflight/hook.js.map +1 -1
  104. package/dist/preflight/render.d.ts +16 -2
  105. package/dist/preflight/render.d.ts.map +1 -1
  106. package/dist/preflight/render.js +24 -4
  107. package/dist/preflight/render.js.map +1 -1
  108. package/dist/service.d.ts +16 -0
  109. package/dist/service.d.ts.map +1 -1
  110. package/dist/service.js +57 -0
  111. package/dist/service.js.map +1 -1
  112. package/dist/session/activeBranch.d.ts +17 -0
  113. package/dist/session/activeBranch.d.ts.map +1 -0
  114. package/dist/session/activeBranch.js +251 -0
  115. package/dist/session/activeBranch.js.map +1 -0
  116. package/dist/settings.d.ts +5 -2
  117. package/dist/settings.d.ts.map +1 -1
  118. package/dist/settings.js +18 -1
  119. package/dist/settings.js.map +1 -1
  120. package/dist/tools/memoryAppend.d.ts +14 -4
  121. package/dist/tools/memoryAppend.d.ts.map +1 -1
  122. package/dist/tools/memoryAppend.js +46 -7
  123. package/dist/tools/memoryAppend.js.map +1 -1
  124. package/dist/tools/memoryRecall.d.ts +2 -2
  125. package/dist/tools/memoryRecall.d.ts.map +1 -1
  126. package/dist/tools/memoryRecall.js +35 -9
  127. package/dist/tools/memoryRecall.js.map +1 -1
  128. package/dist/trainer/extractFacts.d.ts +1 -1
  129. package/dist/trainer/index.d.ts +1 -1
  130. package/dist/trainer/index.d.ts.map +1 -1
  131. package/dist/trainer/index.js +1 -1
  132. package/dist/trainer/index.js.map +1 -1
  133. package/dist/trainer/scheduler.d.ts +2 -0
  134. package/dist/trainer/scheduler.d.ts.map +1 -1
  135. package/dist/trainer/scheduler.js +1 -0
  136. package/dist/trainer/scheduler.js.map +1 -1
  137. package/dist/trainer/sessionLoader.d.ts +3 -0
  138. package/dist/trainer/sessionLoader.d.ts.map +1 -1
  139. package/dist/trainer/sessionLoader.js +37 -74
  140. package/dist/trainer/sessionLoader.js.map +1 -1
  141. package/package.json +14 -4
  142. package/src/cli.ts +144 -0
  143. package/src/config.ts +89 -1
  144. package/src/consolidation/enqueue.ts +205 -0
  145. package/src/consolidation/index.ts +90 -0
  146. package/src/consolidation/lock.ts +41 -0
  147. package/src/consolidation/log.ts +43 -0
  148. package/src/consolidation/memoryIndex.ts +127 -0
  149. package/src/consolidation/phase2/runPhase2.ts +255 -0
  150. package/src/consolidation/scheduler/launchd.ts +62 -0
  151. package/src/consolidation/scheduler/runConsolidate.ts +115 -0
  152. package/src/consolidation/scheduler/setupSchedule.ts +106 -0
  153. package/src/consolidation/scheduler/systemd.ts +78 -0
  154. package/src/consolidation/scheduler/types.ts +27 -0
  155. package/src/consolidation/scope.ts +58 -0
  156. package/src/consolidation/stage1/deltaExtract.ts +29 -0
  157. package/src/consolidation/stage1/drainQueue.ts +143 -0
  158. package/src/consolidation/stage1/extractSession.ts +58 -0
  159. package/src/consolidation/stage1/store.ts +411 -0
  160. package/src/consolidation/types.ts +52 -0
  161. package/src/fallback/sessionIndex.ts +14 -51
  162. package/src/index.ts +6 -0
  163. package/src/pi-extension.ts +309 -10
  164. package/src/preflight/hook.ts +16 -2
  165. package/src/preflight/render.ts +7 -0
  166. package/src/session/activeBranch.ts +294 -0
  167. package/src/settings.ts +37 -2
  168. package/src/tools/memoryAppend.ts +60 -7
  169. package/src/trainer/index.ts +1 -1
  170. package/src/trainer/sessionLoader.ts +38 -87
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/@chendpoc/pi-memory)](https://www.npmjs.com/package/@chendpoc/pi-memory)
4
4
 
5
- Local episodic memory for [Pi](https://pi.dev) coding agent. Automatically recalls past sessions, people, projects, and decisions during conversations.
5
+ Local long-term memory for [Pi](https://pi.dev) coding agent. It closes the Write → Consolidate → Retrieve loop so past sessions, preferences, projects, and decisions can re-enter future conversations automatically.
6
6
 
7
7
  **No external binaries required** --- pure TypeScript, runs entirely inside Pi.
8
8
 
@@ -10,7 +10,9 @@ Local episodic memory for [Pi](https://pi.dev) coding agent. Automatically recal
10
10
 
11
11
  - **Implicit memory preflight** --- automatically detects memory-relevant questions (Chinese/English/Japanese) and injects `<private_memory>` context before each LLM call
12
12
  - **`memory_recall` tool** --- LLM can explicitly query the knowledge graph by entity/relationship
13
- - **`memory_append` tool** --- persist user preferences and facts to `MEMORY.md`
13
+ - **`memory_append` tool** --- queues explicit user memories into stage1 so Phase2 can merge them safely
14
+ - **Offline consolidation** --- `session_shutdown` only enqueues metadata; `pi-memory consolidate` drains queue, trains graph, and updates memory files
15
+ - **MEMORY.md index** --- session-level cap injection plus scoped project memory files
14
16
  - **Local trainer** --- extracts entities, relations, and events from Pi session history (regex or LLM-powered)
15
17
  - **FTS5 search** --- SQLite full-text index for keyword fallback
16
18
  - **LLM rerank** --- reranks keyword search results using `deepseek-v4-flash` for relevance scoring
@@ -42,12 +44,17 @@ pi install npm:@chendpoc/pi-memory
42
44
  # 2. Train a memory bundle from your session history
43
45
  npx pi-memory train --full
44
46
 
45
- # 3. Restart Pi --- memory is now active
47
+ # 3. Run first consolidation and install the daily scheduler
48
+ npx pi-memory consolidate
49
+ npx pi-memory setup-schedule
50
+
51
+ # 4. Restart Pi --- memory is now active
46
52
  # Try asking: "What projects have I worked on?"
47
53
  ```
48
54
 
49
55
  After training, Pi will:
50
56
  - Show `status: ready, mode: local_graph` when you type `/memory`
57
+ - Show queue/index details when you type `/memory --verbose`
51
58
  - Automatically inject past context when you ask relationship questions
52
59
  - Let the LLM call `memory_recall` for explicit lookups
53
60
 
@@ -55,18 +62,18 @@ After training, Pi will:
55
62
 
56
63
  ```
57
64
  Pi session files (.jsonl)
58
- |
65
+ | session_shutdown
59
66
  v
60
- Trainer (regex or LLM extraction)
61
- |
67
+ pending_sessions queue (memories.sqlite)
68
+ | daily / manual consolidate
62
69
  v
63
- graph.json bundle (entities + relations + events)
70
+ stage1 outputs + graph train
64
71
  |
65
72
  v
66
- LocalGraphQuerier (in-memory graph query)
73
+ MEMORY.md / project memory + graph.json + sessions.db
67
74
  |
68
75
  v
69
- memory_recall tool / implicit preflight injection
76
+ memory_recall tool / implicit preflight injection / MEMORY.md cap
70
77
  ```
71
78
 
72
79
  ### Query Backends
@@ -85,6 +92,7 @@ The default backend is LocalGraphQuerier --- pure TypeScript, no external depend
85
92
  | Command | Description |
86
93
  |---------|-------------|
87
94
  | `/memory` | Show service status, query mode, and bundle info |
95
+ | `/memory --verbose` | Show consolidation queue, memory index usage, and recent job logs |
88
96
 
89
97
  ## CLI
90
98
 
@@ -101,6 +109,19 @@ npx pi-memory query '{"mode":"direct_relation","anchor_mentions":["Alice"]}'
101
109
  # Service diagnostics
102
110
  npx pi-memory health
103
111
  npx pi-memory status
112
+ npx pi-memory memory-status
113
+
114
+ # Offline consolidation
115
+ npx pi-memory consolidate
116
+ npx pi-memory consolidate --dry-run
117
+ npx pi-memory consolidate --phase1-only
118
+ npx pi-memory consolidate --phase2-only
119
+
120
+ # OS scheduler
121
+ npx pi-memory setup-schedule
122
+ npx pi-memory setup-schedule --hour 4
123
+ npx pi-memory setup-schedule --status
124
+ npx pi-memory setup-schedule --remove
104
125
 
105
126
  # Manage bundles
106
127
  npx pi-memory install-bundle ./path/to/bundle
@@ -112,6 +133,8 @@ npx pi-memory index
112
133
  npx pi-memory train --watch
113
134
  ```
114
135
 
136
+ `train --watch` is kept for compatibility. The long-term memory path is `pi-memory consolidate` plus the OS scheduler.
137
+
115
138
  ## Flags
116
139
 
117
140
  | Flag | Description | Default |
@@ -132,9 +155,13 @@ pi --memory-helper-model deepseek/deepseek-v4-flash
132
155
  │ │ └── graph.json # entities, edges, events
133
156
  │ ├── bundles/ # historical bundles
134
157
  │ ├── sessions.db # FTS5 search index
158
+ │ ├── memories.sqlite # pending queue + stage1 outputs
159
+ │ ├── workspace/ # raw memories + rollout summaries
160
+ │ ├── projects/<hash>/ # project-scoped MEMORY.md files
161
+ │ ├── consolidation.log # structured consolidation logs
135
162
  │ └── .train_marker # incremental training timestamp
136
163
  ├── agent/sessions/ # Pi session files (.jsonl)
137
- └── MEMORY.md # persistent notes (memory_append target)
164
+ └── MEMORY.md # global memory index
138
165
  ```
139
166
 
140
167
  ## Programmatic API
@@ -183,6 +210,7 @@ export default piMemory;
183
210
  | `src/local/graphQuery.ts` | In-process graph query engine |
184
211
  | `src/adapters/piComplete.ts` | LLM adapter via `@earendil-works/pi-ai/compat` |
185
212
  | `src/service.ts` | Service lifecycle and query routing |
213
+ | `src/consolidation/` | Queue, stage1, Phase2, scheduler, memory index, scope |
186
214
  | `src/trainer/` | Session loader, fact extraction, entity resolution, bundle builder |
187
215
  | `src/fallback/` | FTS5 index, keyword search, LLM rerank |
188
216
  | `src/preflight/` | Intent detection, private memory render/inject/strip |
@@ -194,8 +222,8 @@ On every LLM call, the `context` event:
194
222
 
195
223
  1. Detects memory-relevant intents via regex (Chinese/English/Japanese relationship patterns)
196
224
  2. Optionally calls a helper LLM (`compile_memory_intents` forced tool_use)
197
- 3. Queries the graph for matching entities/relations
198
- 4. Injects a `<private_memory>` block into the user message (deep copy, not persisted to session)
225
+ 3. Queries the graph for matching entities/relations and greps scoped MEMORY.md in parallel
226
+ 4. Injects the session memory index and dynamic recall into `<private_memory>` blocks (deep copy, not persisted to session)
199
227
  5. Results are cached per agent loop to avoid redundant queries during multi-tool turns
200
228
 
201
229
  ## Peer Dependencies
@@ -211,13 +239,57 @@ These are provided by the Pi host and should not be bundled:
211
239
 
212
240
  - `better-sqlite3` --- enables FTS5 session search index (graceful degradation if absent)
213
241
 
242
+ ## Releasing
243
+
244
+ This repo uses [Changesets](https://github.com/changesets/changesets) for semver bumps and `CHANGELOG.md`, and a **tag-triggered** workflow for GitHub Releases (and optional npm publish).
245
+
246
+ 1. After a feature/fix PR, add a changeset: `pnpm changeset`
247
+ 2. Merge to `main` — GitHub Actions opens a **Version Packages** PR (bumps version + updates `CHANGELOG.md`)
248
+ 3. Merge that PR, then tag and push:
249
+
250
+ ```bash
251
+ git pull origin main
252
+ git tag v0.1.13
253
+ git push origin v0.1.13
254
+ ```
255
+
256
+ 4. The **Tag Release** workflow (`tag-release.yml`) runs on `v*` tags: creates a GitHub Release from `CHANGELOG.md`, then publishes to npm via [OIDC trusted publishing](https://docs.npmjs.com/trusted-publishers/) (no long-lived `NPM_TOKEN`).
257
+
258
+ ### npm trusted publishing (recommended)
259
+
260
+ npm now recommends **Trusted Publishing** over Granular "bypass 2FA" tokens for CI. GitHub Actions proves its identity with a short-lived OIDC credential; no stored token, no OTP (`EOTP`).
261
+
262
+ **One-time setup on npmjs.com** (package must exist first — see below):
263
+
264
+ 1. Open `https://www.npmjs.com/package/@chendpoc/pi-memory/access` (after first publish)
265
+ 2. **Trusted Publisher** → GitHub Actions
266
+ 3. Set exactly:
267
+ - Organization or user: `chendpoc`
268
+ - Repository: `pi-memory`
269
+ - Workflow filename: `tag-release.yml`
270
+ - Environment: *(leave blank unless you add a GitHub Environment)*
271
+
272
+ **First publish:** npm requires the package to exist before you can configure trusted publishing. Either:
273
+
274
+ - Publish once locally with `npm login` + `npm publish --access public`, or
275
+ - Use [setup-npm-trusted-publish](https://github.com/azu/setup-npm-trusted-publish) to create a placeholder, configure OIDC, then publish real versions from CI.
276
+
277
+ The workflow already sets `id-token: write` and uses Node 24 (npm ≥ 11.5.1). Provenance is automatic with trusted publishing.
278
+
279
+ **Re-run without deleting a tag:** GitHub → Actions → **Tag Release** → **Run workflow**
280
+
281
+ - `tag`: `v0.1.13`
282
+ - `skip_github_release`: ✅ (release already exists)
283
+ - `publish_npm`: ✅
284
+
214
285
  ## Development
215
286
 
216
287
  ```bash
217
- npm install
218
- npm run build
219
- npm test # 129 tests
220
- npm run typecheck
288
+ pnpm install
289
+ pnpm build
290
+ pnpm test
291
+ pnpm typecheck
292
+ pnpm changeset # before opening a release PR
221
293
  ```
222
294
 
223
295
  ## License
@@ -0,0 +1,32 @@
1
+ import { LRUCache } from "lru-cache";
2
+ import type { QueryIntent } from "../types.js";
3
+ import type { RankedResult } from "../fallback/llmRerank.js";
4
+ import type { SessionSearchHit } from "../fallback/sessionSearch.js";
5
+ /**
6
+ * In-process LRU + TTL caches for pi-memory.
7
+ *
8
+ * - intentCache : helper-LLM compile_memory_intents results, keyed by
9
+ * normalised query text. TTL 15 min, LRU 128 entries.
10
+ * - rerankCache : LLM rerank results, keyed by query + hit fingerprint.
11
+ * TTL 15 min, LRU 256 entries.
12
+ * - negativeCache: queries that recently returned no usable context.
13
+ * TTL 60 s, max 512 entries.
14
+ *
15
+ * All three caches must be invalidated together (`invalidateMemoryCaches()`)
16
+ * after bundle reload so stale negative entries never block fresh graph data.
17
+ */
18
+ export declare const intentCache: LRUCache<string, QueryIntent[], unknown>;
19
+ export declare const rerankCache: LRUCache<string, RankedResult[], unknown>;
20
+ export declare const negativeCache: LRUCache<string, true, unknown>;
21
+ export declare function cacheKeyForIntents(query: string): string;
22
+ /**
23
+ * Rerank cache key combines the query with a fingerprint of the hit set so
24
+ * different FTS results for the same query get their own entry.
25
+ */
26
+ export declare function cacheKeyForRerank(query: string, hits: SessionSearchHit[]): string;
27
+ export declare function isNegativeCached(query: string): boolean;
28
+ export declare function setNegativeCache(query: string): void;
29
+ export declare function deleteNegativeCache(query: string): void;
30
+ /** Clear all three caches. Call after bundle reload or session shutdown. */
31
+ export declare function invalidateMemoryCaches(): void;
32
+ //# sourceMappingURL=memoryCaches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryCaches.d.ts","sourceRoot":"","sources":["../../src/cache/memoryCaches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,0CAGtB,CAAC;AAEH,eAAO,MAAM,WAAW,2CAGtB,CAAC;AAEH,eAAO,MAAM,aAAa,iCAGxB,CAAC;AAMH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAGjF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEvD;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C"}
@@ -0,0 +1,59 @@
1
+ import { LRUCache } from "lru-cache";
2
+ const INTENT_TTL_MS = 15 * 60_000;
3
+ const RERANK_TTL_MS = 15 * 60_000;
4
+ const NEGATIVE_TTL_MS = 60_000;
5
+ /**
6
+ * In-process LRU + TTL caches for pi-memory.
7
+ *
8
+ * - intentCache : helper-LLM compile_memory_intents results, keyed by
9
+ * normalised query text. TTL 15 min, LRU 128 entries.
10
+ * - rerankCache : LLM rerank results, keyed by query + hit fingerprint.
11
+ * TTL 15 min, LRU 256 entries.
12
+ * - negativeCache: queries that recently returned no usable context.
13
+ * TTL 60 s, max 512 entries.
14
+ *
15
+ * All three caches must be invalidated together (`invalidateMemoryCaches()`)
16
+ * after bundle reload so stale negative entries never block fresh graph data.
17
+ */
18
+ export const intentCache = new LRUCache({
19
+ max: 128,
20
+ ttl: INTENT_TTL_MS,
21
+ });
22
+ export const rerankCache = new LRUCache({
23
+ max: 256,
24
+ ttl: RERANK_TTL_MS,
25
+ });
26
+ export const negativeCache = new LRUCache({
27
+ max: 512,
28
+ ttl: NEGATIVE_TTL_MS,
29
+ });
30
+ function normalizeQuery(query) {
31
+ return query.trim();
32
+ }
33
+ export function cacheKeyForIntents(query) {
34
+ return normalizeQuery(query);
35
+ }
36
+ /**
37
+ * Rerank cache key combines the query with a fingerprint of the hit set so
38
+ * different FTS results for the same query get their own entry.
39
+ */
40
+ export function cacheKeyForRerank(query, hits) {
41
+ const hitIds = hits.map((h) => `${h.session_id}:${h.msg_index}`).join("|");
42
+ return `${normalizeQuery(query)}|${hitIds}`;
43
+ }
44
+ export function isNegativeCached(query) {
45
+ return negativeCache.has(cacheKeyForIntents(query));
46
+ }
47
+ export function setNegativeCache(query) {
48
+ negativeCache.set(cacheKeyForIntents(query), true);
49
+ }
50
+ export function deleteNegativeCache(query) {
51
+ negativeCache.delete(cacheKeyForIntents(query));
52
+ }
53
+ /** Clear all three caches. Call after bundle reload or session shutdown. */
54
+ export function invalidateMemoryCaches() {
55
+ intentCache.clear();
56
+ rerankCache.clear();
57
+ negativeCache.clear();
58
+ }
59
+ //# sourceMappingURL=memoryCaches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryCaches.js","sourceRoot":"","sources":["../../src/cache/memoryCaches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAKrC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAC;AAClC,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAwB;IAC7D,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,aAAa;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAyB;IAC9D,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,aAAa;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAe;IACtD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,eAAe;CACrB,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAwB;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,aAAa,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,sBAAsB;IACpC,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
package/dist/cli.js CHANGED
@@ -3,6 +3,11 @@ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { createStandaloneLLMClient } from "./adapters/piComplete.js";
5
5
  import { installBundle } from "./bundle/install.js";
6
+ import { getMemoryIndexStats } from "./consolidation/memoryIndex.js";
7
+ import { readRecentConsolidationLogs } from "./consolidation/log.js";
8
+ import { getConsolidationStatus } from "./consolidation/enqueue.js";
9
+ import { defaultConsolidationDbPath, runConsolidate, } from "./consolidation/scheduler/runConsolidate.js";
10
+ import { setupSchedule } from "./consolidation/scheduler/setupSchedule.js";
6
11
  import { loadMemoryConfig } from "./settings.js";
7
12
  import { openSessionIndex } from "./fallback/sessionIndex.js";
8
13
  import { SidecarClient } from "./sidecar/client.js";
@@ -66,6 +71,49 @@ async function main() {
66
71
  await service.stop();
67
72
  return;
68
73
  }
74
+ if (cmd === "memory-status") {
75
+ const dbPath = defaultConsolidationDbPath(cfg);
76
+ const status = getConsolidationStatus(dbPath);
77
+ const memoryIndex = getMemoryIndexStats(cfg.memoryMdPaths, {
78
+ maxLines: cfg.consolidation.memory_index_max_lines,
79
+ maxBytes: cfg.consolidation.memory_index_max_bytes,
80
+ });
81
+ const recentLogs = await readRecentConsolidationLogs(cfg.consolidation.schedule.log_path, 5);
82
+ const schedule = await readScheduleStatus(cfg);
83
+ console.log(JSON.stringify({
84
+ db_path: dbPath,
85
+ queue: status,
86
+ memory_index: memoryIndex,
87
+ schedule,
88
+ recent_logs: recentLogs,
89
+ }, null, 2));
90
+ return;
91
+ }
92
+ if (cmd === "consolidate") {
93
+ const flags = parseConsolidateFlags(rest);
94
+ const result = await runConsolidate({
95
+ config: cfg,
96
+ dryRun: flags.dryRun,
97
+ phase1Only: flags.phase1Only,
98
+ phase2Only: flags.phase2Only,
99
+ });
100
+ console.log(JSON.stringify(result, null, 2));
101
+ return;
102
+ }
103
+ if (cmd === "setup-schedule") {
104
+ const flags = parseScheduleFlags(rest);
105
+ const platform = resolveSchedulePlatform();
106
+ const result = await setupSchedule({
107
+ hour: flags.hour ?? cfg.consolidation.schedule.hour,
108
+ minute: flags.minute ?? cfg.consolidation.schedule.minute,
109
+ logPath: cfg.consolidation.schedule.log_path,
110
+ dryRun: flags.dryRun,
111
+ remove: flags.remove,
112
+ status: flags.status,
113
+ }, platform);
114
+ console.log(JSON.stringify(result, null, 2));
115
+ return;
116
+ }
69
117
  if (cmd === "install-bundle") {
70
118
  const bundlePath = rest[0];
71
119
  if (!bundlePath) {
@@ -204,12 +252,87 @@ function parseTrainFlags(args) {
204
252
  }
205
253
  return { sessionsDir, full, dryRun, noMerge, extractor, watch, model };
206
254
  }
255
+ function parseConsolidateFlags(args) {
256
+ return {
257
+ dryRun: args.includes("--dry-run"),
258
+ phase1Only: args.includes("--phase1-only"),
259
+ phase2Only: args.includes("--phase2-only"),
260
+ };
261
+ }
262
+ function parseScheduleFlags(args) {
263
+ let hour;
264
+ let minute;
265
+ for (let i = 0; i < args.length; i++) {
266
+ const arg = args[i];
267
+ if (arg === "--hour" && i + 1 < args.length) {
268
+ hour = Number(args[++i]);
269
+ continue;
270
+ }
271
+ if (arg === "--minute" && i + 1 < args.length) {
272
+ minute = Number(args[++i]);
273
+ continue;
274
+ }
275
+ }
276
+ return {
277
+ hour,
278
+ minute,
279
+ dryRun: args.includes("--dry-run"),
280
+ remove: args.includes("--remove"),
281
+ status: args.includes("--status"),
282
+ };
283
+ }
284
+ function resolveSchedulePlatform() {
285
+ if (process.platform === "darwin")
286
+ return "darwin";
287
+ if (process.platform === "linux")
288
+ return "linux";
289
+ throw new Error(`setup-schedule is not supported on ${process.platform}`);
290
+ }
291
+ function tryResolveSchedulePlatform() {
292
+ if (process.platform === "darwin")
293
+ return "darwin";
294
+ if (process.platform === "linux")
295
+ return "linux";
296
+ return null;
297
+ }
298
+ async function readScheduleStatus(cfg) {
299
+ const platform = tryResolveSchedulePlatform();
300
+ if (!platform) {
301
+ return {
302
+ supported: false,
303
+ platform: process.platform,
304
+ files: [],
305
+ };
306
+ }
307
+ const result = await setupSchedule({
308
+ hour: cfg.consolidation.schedule.hour,
309
+ minute: cfg.consolidation.schedule.minute,
310
+ logPath: cfg.consolidation.schedule.log_path,
311
+ status: true,
312
+ }, platform);
313
+ return {
314
+ supported: true,
315
+ platform,
316
+ files: result.files,
317
+ };
318
+ }
207
319
  function printHelp() {
208
320
  console.log(`pi-memory — local TLM episodic memory (mode B)
209
321
 
210
322
  Commands:
211
323
  health Start sidecar (if bundle present) and print /health
212
324
  status Print MemoryService status snapshot
325
+ memory-status Print consolidation queue, MEMORY.md cap, schedule status, and recent job logs
326
+ consolidate Run offline memory consolidation
327
+ --dry-run Report planned work without writing MEMORY.md/stage1
328
+ --phase1-only Drain queue and train graph only
329
+ --phase2-only Consume existing stage1 rows only
330
+ setup-schedule Install/update the OS user scheduler
331
+ --hour Local hour (default from memory.json consolidation.schedule.hour)
332
+ --minute Local minute (default from memory.json consolidation.schedule.minute)
333
+ --dry-run Print files that would be written
334
+ --remove Remove scheduler files
335
+ --status Report scheduler file existence
213
336
  query POST /query with JSON QueryIntent
214
337
  install-bundle Copy a local bundle dir into ~/.pi/memory/current
215
338
  train Build a bundle from session history (delta merge by default)
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EACL,0BAA0B,EAC1B,cAAc,GACf,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,KAAK,UAAU,gBAAgB,CAAC,GAAiB;IAC/C,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC/C,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,MAAmB,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QAC3C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,aAAa,EAAE;YACzD,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,sBAAsB;YAClD,QAAQ,EAAE,GAAG,CAAC,aAAa,CAAC,sBAAsB;SACnD,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,2BAA2B,CAClD,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EACnC,CAAC,CACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,MAAM;YACb,YAAY,EAAE,WAAW;YACzB,QAAQ;YACR,WAAW,EAAE,UAAU;SACxB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI;YACnD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM;YACzD,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ;YAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,EAAE,QAAQ,CAAC,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;YACjC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,WAAW,CAAC;QAChB,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtD,WAAW,GAAG;oBACZ,YAAY,EAAE,sBAAsB,CAAC;wBACnC,MAAM;wBACN,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc;qBACtC,CAAC;iBACH,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,8BAA8B,OAAO,4BAA4B,CAAC,CAAC;gBACjF,WAAW,GAAG,SAAS,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW;YACjD,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAA4B;gBACtC,kBAAkB,EAAE,MAAM,CAAC,iBAAiB;gBAC5C,QAAQ,EAAE,MAAM,CAAC,WAAW;gBAC5B,SAAS,EAAE,MAAM,CAAC,aAAa;gBAC/B,MAAM,EAAE,MAAM,CAAC,UAAU;gBACzB,OAAO,EAAE,MAAM,CAAC,MAAM;gBACtB,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,IAAI,IAAI;gBAClD,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI;aACvD,CAAC;YACF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,GAAG;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;oBACzB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;oBAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;iBAC9B,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,wCAAwC,QAAQ,MAAM,CAAC,CAAC;YACpE,oBAAoB,CAClB,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,EAC5G,CAAC,GAAG,EAAE,EAAE;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC,CACF,CAAC;YACF,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB;QAC/C,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,gBAAgB,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;QAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,KAAK,CAAC,CAAC;QACrD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACxD,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IASrC,IAAI,WAA+B,CAAC;IACpC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAAS,GAAoB,OAAO,CAAC;IACzC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAyB,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAChD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACrD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpD,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;YACvB,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO;gBAAE,SAAS,GAAG,GAAG,CAAC;YACtD,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAc;IAK3C,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IAOxC,IAAI,IAAwB,CAAC;IAC7B,IAAI,MAA0B,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAClC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACjD,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,GAAiB;IACjD,MAAM,QAAQ,GAAG,0BAA0B,EAAE,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI;QACrC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM;QACzC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ;QAC5C,MAAM,EAAE,IAAI;KACb,EAAE,QAAQ,CAAC,CAAC;IACb,OAAO;QACL,SAAS,EAAE,IAAI;QACf,QAAQ;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Cb,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/config.d.ts CHANGED
@@ -8,6 +8,30 @@ export interface TrainerConfig {
8
8
  /** Auto-train interval: "1h"|"6h"|"12h"|"24h"|null (default null — disabled). */
9
9
  auto_interval: string | null;
10
10
  }
11
+ export interface ConsolidationScheduleConfig {
12
+ /** Local hour for the background consolidation job (default 3). */
13
+ hour: number;
14
+ /** Local minute for the background consolidation job (default 0). */
15
+ minute: number;
16
+ /** Structured JSONL log path (default ~/.pi/memory/consolidation.log). */
17
+ log_path: string;
18
+ }
19
+ export interface ConsolidationConfig {
20
+ /** Whether session_shutdown enqueues sessions for offline consolidation. */
21
+ enabled: boolean;
22
+ /** Minimum non-empty user turns before enqueue (default 3). */
23
+ min_user_turns: number;
24
+ /** MEMORY.md session cap by line count (default 200). */
25
+ memory_index_max_lines: number;
26
+ /** MEMORY.md session cap by UTF-8 bytes (default 25KB). */
27
+ memory_index_max_bytes: number;
28
+ /** Maximum stage1 rows selected per Phase2 run (default 20). */
29
+ phase2_top_n: number;
30
+ /** M4 prune threshold by last usage (default 90 days). */
31
+ max_unused_days: number;
32
+ /** Daily OS scheduler defaults. */
33
+ schedule: ConsolidationScheduleConfig;
34
+ }
11
35
  export interface MemoryConfig {
12
36
  provider: MemoryProvider;
13
37
  tlmPath: string;
@@ -19,8 +43,12 @@ export interface MemoryConfig {
19
43
  sessionsDir: string;
20
44
  memoryMdPaths: string[];
21
45
  trainer: TrainerConfig;
46
+ consolidation: ConsolidationConfig;
22
47
  }
23
48
  export declare const defaultTrainerConfig: TrainerConfig;
49
+ export declare function defaultConsolidationConfig(overrides?: Partial<ConsolidationConfig> & {
50
+ schedule?: Partial<ConsolidationScheduleConfig>;
51
+ }): ConsolidationConfig;
24
52
  export declare function defaultMemoryConfig(overrides?: Partial<MemoryConfig>): MemoryConfig;
25
53
  /** Normalize user-supplied paths after JSON/env load. */
26
54
  export declare function normalizeMemoryConfig(raw: Partial<MemoryConfig> & Record<string, unknown>): MemoryConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,SAAS,EAAE,aAAa,CAAC;IACzB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,eAAO,MAAM,oBAAoB,EAAE,aAIlC,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACpC,YAAY,CAed;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnD,YAAY,CA2Bd"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,SAAS,EAAE,aAAa,CAAC;IACzB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,sBAAsB,EAAE,MAAM,CAAC;IAC/B,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,QAAQ,EAAE,2BAA2B,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,mBAAmB,CAAC;CACpC;AAED,eAAO,MAAM,oBAAoB,EAAE,aAIlC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,SAAS,GAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAC;CAC5C,GACL,mBAAmB,CAiBrB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACpC,YAAY,CAoBd;AAED,yDAAyD;AACzD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnD,YAAY,CA4Dd"}
package/dist/config.js CHANGED
@@ -5,8 +5,26 @@ export const defaultTrainerConfig = {
5
5
  llm_batch_size: 10,
6
6
  auto_interval: null,
7
7
  };
8
+ export function defaultConsolidationConfig(overrides = {}) {
9
+ const defaultSchedule = {
10
+ hour: 3,
11
+ minute: 0,
12
+ log_path: path.join(defaultBundleRoot(), "consolidation.log"),
13
+ };
14
+ const { schedule, ...rest } = overrides;
15
+ return {
16
+ enabled: true,
17
+ min_user_turns: 3,
18
+ memory_index_max_lines: 200,
19
+ memory_index_max_bytes: 25_600,
20
+ phase2_top_n: 20,
21
+ max_unused_days: 90,
22
+ schedule: { ...defaultSchedule, ...schedule },
23
+ ...rest,
24
+ };
25
+ }
8
26
  export function defaultMemoryConfig(overrides = {}) {
9
- const { trainer: trainerOverrides, ...rest } = overrides;
27
+ const { trainer: trainerOverrides, consolidation: consolidationOverrides, ...rest } = overrides;
10
28
  return {
11
29
  provider: "local",
12
30
  tlmPath: "tlm",
@@ -18,6 +36,7 @@ export function defaultMemoryConfig(overrides = {}) {
18
36
  sessionsDir: defaultSessionsDir(),
19
37
  memoryMdPaths: [path.join(defaultPiHome(), "MEMORY.md")],
20
38
  trainer: { ...defaultTrainerConfig, ...trainerOverrides },
39
+ consolidation: defaultConsolidationConfig(consolidationOverrides),
21
40
  ...rest,
22
41
  };
23
42
  }
@@ -25,6 +44,8 @@ export function defaultMemoryConfig(overrides = {}) {
25
44
  export function normalizeMemoryConfig(raw) {
26
45
  const base = defaultMemoryConfig();
27
46
  const rawTrainer = (raw.trainer ?? {});
47
+ const rawConsolidation = (raw.consolidation ?? {});
48
+ const rawSchedule = (rawConsolidation.schedule ?? {});
28
49
  return {
29
50
  provider: raw.provider ?? base.provider,
30
51
  tlmPath: expandPath(String(raw.tlmPath ?? base.tlmPath)),
@@ -44,6 +65,21 @@ export function normalizeMemoryConfig(raw) {
44
65
  ? rawTrainer.auto_interval
45
66
  : base.trainer.auto_interval,
46
67
  },
68
+ consolidation: {
69
+ enabled: rawConsolidation.enabled ?? base.consolidation.enabled,
70
+ min_user_turns: Number(rawConsolidation.min_user_turns ?? base.consolidation.min_user_turns),
71
+ memory_index_max_lines: Number(rawConsolidation.memory_index_max_lines ??
72
+ base.consolidation.memory_index_max_lines),
73
+ memory_index_max_bytes: Number(rawConsolidation.memory_index_max_bytes ??
74
+ base.consolidation.memory_index_max_bytes),
75
+ phase2_top_n: Number(rawConsolidation.phase2_top_n ?? base.consolidation.phase2_top_n),
76
+ max_unused_days: Number(rawConsolidation.max_unused_days ?? base.consolidation.max_unused_days),
77
+ schedule: {
78
+ hour: Number(rawSchedule.hour ?? base.consolidation.schedule.hour),
79
+ minute: Number(rawSchedule.minute ?? base.consolidation.schedule.minute),
80
+ log_path: expandPath(String(rawSchedule.log_path ?? base.consolidation.schedule.log_path)),
81
+ },
82
+ },
47
83
  };
48
84
  }
49
85
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AA4BpB,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,SAAS,EAAE,OAAO;IAClB,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,YAAmC,EAAE;IAErC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC;IACzD,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,iBAAiB,EAAE;QAC/B,UAAU,EAAE,iBAAiB,EAAE;QAC/B,qBAAqB,EAAE,MAAM;QAC7B,cAAc,EAAE,KAAK;QACrB,sBAAsB,EAAE,KAAK;QAC7B,WAAW,EAAE,kBAAkB,EAAE;QACjC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,WAAW,CAAC,CAAC;QACxD,OAAO,EAAE,EAAE,GAAG,oBAAoB,EAAE,GAAG,gBAAgB,EAAE;QACzD,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,qBAAqB,CACnC,GAAoD;IAEpD,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAA2B,CAAC;IACjE,OAAO;QACL,QAAQ,EAAG,GAAG,CAAC,QAA2B,IAAI,IAAI,CAAC,QAAQ;QAC3D,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,qBAAqB,EAAE,MAAM,CAC3B,GAAG,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CACxD;QACD,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;QACjE,sBAAsB,EAAE,MAAM,CAC5B,GAAG,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAC1D;QACD,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;QACpE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;YAC7C,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC,CAAC,IAAI,CAAC,aAAa;QACtB,OAAO,EAAE;YACP,SAAS,EAAG,UAAU,CAAC,SAA2B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;YAC5E,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;YAChF,aAAa,EAAE,UAAU,CAAC,aAAa,KAAK,SAAS;gBACnD,CAAC,CAAC,UAAU,CAAC,aAAa;gBAC1B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;SAC/B;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ConsolidationStatus, JobReport, ConsolidationStatusReport } from "./types.js";
2
+ import { type SqliteDatabase } from "./stage1/store.js";
3
+ export interface EnqueueSessionInput {
4
+ session_id: string;
5
+ session_file: string;
6
+ cwd: string;
7
+ git_root: string | null;
8
+ project_hash: string | null;
9
+ parent_session_id: string | null;
10
+ parent_session_file: string | null;
11
+ user_turn_count: number;
12
+ ended_at: string;
13
+ }
14
+ export interface EnqueueOptions {
15
+ enabled?: boolean;
16
+ minUserTurns?: number;
17
+ /** Injected sqlite handle for tests. */
18
+ db?: SqliteDatabase;
19
+ /** Force replacing existing done/skipped sessions. */
20
+ force?: boolean;
21
+ /** Override status for the newly enqueued job (default: pending). */
22
+ status?: ConsolidationStatus;
23
+ /** Optional now source for created_at / updated_at. */
24
+ now?: Date | string;
25
+ /** Test seam: production defaults to checking session file existence. */
26
+ checkFileExists?: boolean;
27
+ }
28
+ export declare function enqueueSession(dbPath: string, meta: EnqueueSessionInput, opts?: EnqueueOptions): JobReport;
29
+ export interface ConsolidationStatusQueryOptions {
30
+ db?: SqliteDatabase;
31
+ }
32
+ export declare function getConsolidationStatus(dbPath: string, opts?: ConsolidationStatusQueryOptions): ConsolidationStatusReport;
33
+ //# sourceMappingURL=enqueue.d.ts.map