@folterung/project-memory 0.1.19 → 0.1.20

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 (98) hide show
  1. package/README.md +13 -8
  2. package/package.json +1 -1
  3. package/packages/cli/coverage/lcov-report/chunking/chunker.ts.html +81 -81
  4. package/packages/cli/coverage/lcov-report/chunking/hash.ts.html +12 -12
  5. package/packages/cli/coverage/lcov-report/chunking/index.html +1 -1
  6. package/packages/cli/coverage/lcov-report/chunking/types.ts.html +23 -23
  7. package/packages/cli/coverage/lcov-report/config/index.html +1 -1
  8. package/packages/cli/coverage/lcov-report/config/load.ts.html +1 -1
  9. package/packages/cli/coverage/lcov-report/config/types.ts.html +1 -1
  10. package/packages/cli/coverage/lcov-report/embedding/index.html +1 -1
  11. package/packages/cli/coverage/lcov-report/embedding/stub.ts.html +1 -1
  12. package/packages/cli/coverage/lcov-report/index.html +18 -18
  13. package/packages/cli/coverage/lcov-report/qdrant/index.html +1 -1
  14. package/packages/cli/coverage/lcov-report/qdrant/upsert.ts.html +1 -1
  15. package/packages/cli/coverage/lcov-report/scope/allowlist.ts.html +51 -51
  16. package/packages/cli/coverage/lcov-report/scope/ignore.ts.html +1 -1
  17. package/packages/cli/coverage/lcov-report/scope/index.html +19 -19
  18. package/packages/cli/coverage/lcov.info +221 -213
  19. package/packages/cli/coverage/tmp/{coverage-7460-1770137208481-0.json → coverage-2869-1770174337342-0.json} +1 -1
  20. package/packages/cli/coverage/tmp/coverage-2870-1770174337389-0.json +1 -0
  21. package/packages/cli/coverage/tmp/{coverage-7462-1770137208524-0.json → coverage-2871-1770174337388-0.json} +1 -1
  22. package/packages/cli/coverage/tmp/{coverage-7463-1770137208524-0.json → coverage-2872-1770174337386-0.json} +1 -1
  23. package/packages/cli/coverage/tmp/{coverage-7464-1770137208531-0.json → coverage-2873-1770174337394-0.json} +1 -1
  24. package/packages/cli/coverage/tmp/{coverage-7465-1770137208526-0.json → coverage-2874-1770174337388-0.json} +1 -1
  25. package/packages/cli/coverage/tmp/{coverage-7466-1770137208528-0.json → coverage-2875-1770174337386-0.json} +1 -1
  26. package/packages/cli/coverage/tmp/{coverage-7467-1770137208579-0.json → coverage-2876-1770174337444-0.json} +1 -1
  27. package/packages/cli/coverage/tmp/coverage-2877-1770174337415-0.json +1 -0
  28. package/packages/cli/coverage/tmp/{coverage-7469-1770137208543-0.json → coverage-2878-1770174337404-0.json} +1 -1
  29. package/packages/cli/dist/chunking/chunker.test.js +19 -0
  30. package/packages/cli/dist/chunking/chunker.test.js.map +1 -1
  31. package/packages/cli/dist/cli/index.js +1 -1
  32. package/packages/cli/dist/cli/index.js.map +1 -1
  33. package/packages/cli/dist/phase1/pipeline.js +17 -7
  34. package/packages/cli/dist/phase1/pipeline.js.map +1 -1
  35. package/packages/cli/dist/phase2/deep-index.js +18 -6
  36. package/packages/cli/dist/phase2/deep-index.js.map +1 -1
  37. package/packages/cli/dist/scope/allowlist.test.js +14 -1
  38. package/packages/cli/dist/scope/allowlist.test.js.map +1 -1
  39. package/packages/cli/src/chunking/chunker.test.ts +21 -0
  40. package/packages/cli/src/cli/index.ts +1 -1
  41. package/packages/cli/src/phase1/pipeline.ts +15 -8
  42. package/packages/cli/src/phase2/deep-index.ts +15 -6
  43. package/packages/cli/src/scope/allowlist.test.ts +16 -1
  44. package/packages/mcp-server/dist/index.js +174 -16
  45. package/packages/mcp-server/dist/index.js.map +1 -1
  46. package/packages/mcp-server/dist/system-instructions.md +2 -0
  47. package/packages/mcp-server/src/index.ts +204 -16
  48. package/packages/mcp-server/system-instructions.md +2 -0
  49. package/packages/server/coverage/lcov-report/api/index.html +146 -0
  50. package/packages/server/coverage/lcov-report/api/points.ts.html +361 -0
  51. package/packages/server/coverage/lcov-report/api/search.ts.html +436 -0
  52. package/packages/server/coverage/lcov-report/api/store.ts.html +487 -0
  53. package/packages/server/coverage/lcov-report/embedding/index.html +116 -0
  54. package/packages/server/coverage/lcov-report/embedding/stub.ts.html +184 -0
  55. package/packages/server/coverage/lcov-report/index.html +40 -10
  56. package/packages/server/coverage/lcov-report/qdrant/client.ts.html +517 -0
  57. package/packages/server/coverage/lcov-report/qdrant/index.html +116 -0
  58. package/packages/server/coverage/lcov-report/stub.ts.html +1 -1
  59. package/packages/server/coverage/lcov.info +674 -27
  60. package/packages/server/coverage/tmp/{coverage-7549-1770137209315-0.json → coverage-2969-1770174338264-0.json} +1 -1
  61. package/packages/server/coverage/tmp/coverage-2976-1770174338504-0.json +1 -0
  62. package/packages/server/coverage/tmp/coverage-2977-1770174338496-0.json +1 -0
  63. package/packages/server/coverage/tmp/coverage-2978-1770174338502-0.json +1 -0
  64. package/packages/server/coverage/tmp/{coverage-7550-1770137209349-0.json → coverage-2979-1770174338307-0.json} +1 -1
  65. package/packages/server/dist/api/points.d.ts +24 -0
  66. package/packages/server/dist/api/points.js +60 -0
  67. package/packages/server/dist/api/points.js.map +1 -0
  68. package/packages/server/dist/api/points.test.d.ts +1 -0
  69. package/packages/server/dist/api/points.test.js +105 -0
  70. package/packages/server/dist/api/points.test.js.map +1 -0
  71. package/packages/server/dist/api/search.d.ts +16 -0
  72. package/packages/server/dist/api/search.js +26 -8
  73. package/packages/server/dist/api/search.js.map +1 -1
  74. package/packages/server/dist/api/search.test.d.ts +1 -0
  75. package/packages/server/dist/api/search.test.js +102 -0
  76. package/packages/server/dist/api/search.test.js.map +1 -0
  77. package/packages/server/dist/api/store.d.ts +7 -0
  78. package/packages/server/dist/api/store.js +50 -7
  79. package/packages/server/dist/api/store.js.map +1 -1
  80. package/packages/server/dist/api/store.test.d.ts +1 -0
  81. package/packages/server/dist/api/store.test.js +85 -0
  82. package/packages/server/dist/api/store.test.js.map +1 -0
  83. package/packages/server/dist/index.js +2 -0
  84. package/packages/server/dist/index.js.map +1 -1
  85. package/packages/server/dist/qdrant/client.d.ts +4 -0
  86. package/packages/server/dist/qdrant/client.js +12 -0
  87. package/packages/server/dist/qdrant/client.js.map +1 -1
  88. package/packages/server/package.json +1 -1
  89. package/packages/server/src/api/points.test.ts +113 -0
  90. package/packages/server/src/api/points.ts +92 -0
  91. package/packages/server/src/api/search.test.ts +110 -0
  92. package/packages/server/src/api/search.ts +59 -13
  93. package/packages/server/src/api/store.test.ts +91 -0
  94. package/packages/server/src/api/store.ts +60 -12
  95. package/packages/server/src/index.ts +2 -0
  96. package/packages/server/src/qdrant/client.ts +15 -0
  97. package/packages/cli/coverage/tmp/coverage-7461-1770137208528-0.json +0 -1
  98. package/packages/cli/coverage/tmp/coverage-7468-1770137208547-0.json +0 -1
package/README.md CHANGED
@@ -7,7 +7,7 @@ Local-first project understanding for Cursor: scoped indexing, embeddings, and C
7
7
  **Option A — Run tasks (easiest)**
8
8
  Open this repo in Cursor/VS Code, then **Terminal → Run Task** (or `Cmd+Shift+B` for default build task) and pick:
9
9
 
10
- - **Project Memory: Init** — create `.mem/config.yml` and `.memignore`
10
+ - **Project Memory: Init** — create `.mem/` (config, state dir, docker-compose copy) and `.memignore`
11
11
  - **Project Memory: Scaffold** — Phase 1: start Qdrant, build index, start memory server (default build task)
12
12
 
13
13
  Then **register the MCP server** in Cursor (or Claude Desktop) and use the agent with the [Project Memory skill](docs/skill.md).
@@ -21,7 +21,7 @@ Register the Project Memory MCP server in Cursor, Claude Desktop, or any MCP cli
21
21
  - **Logs:** Tool calls and responses are written to `/tmp/project-memory-mcp.log` on macOS/Linux, or `%TEMP%\project-memory-mcp.log` on Windows. Override with `PROJECT_MEMORY_MCP_LOG_FILE`. Every line is prefixed with `[project: <name>]` (workspace dir name or PID) so multiple projects sharing the same file are distinguishable. Use `tail -f /tmp/project-memory-mcp.log` to watch.
22
22
 
23
23
  **Option B — npm scripts**
24
- From the repo root:
24
+ From the repo root (run `mem:init` once for first-time setup):
25
25
 
26
26
  ```bash
27
27
  npm install && npm run build
@@ -30,12 +30,16 @@ npm run mem:scaffold
30
30
  ```
31
31
 
32
32
  **Option C — CLI directly**
33
- From any repo where you’ve run `mem init` (or from this repo):
34
-
35
- ```bash
36
- node packages/cli/bin/mem.js init
37
- node packages/cli/bin/mem.js scaffold
38
- ```
33
+ - **From this repo:** run from the repo root; run `init` first if you haven’t (e.g. via Option A or B), then scaffold:
34
+ ```bash
35
+ node packages/cli/bin/mem.js init
36
+ node packages/cli/bin/mem.js scaffold
37
+ ```
38
+ - **From another repo:** after `npm install -g @folterung/project-memory`, run in that repo:
39
+ ```bash
40
+ mem init
41
+ mem scaffold
42
+ ```
39
43
 
40
44
  ## Requirements
41
45
 
@@ -46,6 +50,7 @@ node packages/cli/bin/mem.js scaffold
46
50
 
47
51
  | Topic | Doc |
48
52
  |-------|-----|
53
+ | **Architecture** (diagram, pipeline, components) | [docs/architecture.md](docs/architecture.md) |
49
54
  | **Commands** (tasks, scripts, CLI) | [docs/commands.md](docs/commands.md) |
50
55
  | **Configuration** (config.yml, .memignore, defaults) | [docs/configuration.md](docs/configuration.md) |
51
56
  | **Packages** (CLI, server, MCP, skill) | [docs/packages.md](docs/packages.md) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folterung/project-memory",
3
- "version": "0.1.19",
3
+ "version": "0.1.20",
4
4
  "private": false,
5
5
  "description": "Local-first Project Memory: scoped indexing, embeddings, Cursor integration",
6
6
  "repository": "https://github.com/folterung/project-memory",
@@ -222,27 +222,65 @@
222
222
  <span class="cline-any cline-yes">1x</span>
223
223
  <span class="cline-any cline-yes">1x</span>
224
224
  <span class="cline-any cline-yes">1x</span>
225
- <span class="cline-any cline-yes">6x</span>
226
- <span class="cline-any cline-yes">6x</span>
227
- <span class="cline-any cline-yes">6x</span>
228
- <span class="cline-any cline-yes">6x</span>
229
- <span class="cline-any cline-yes">6x</span>
230
- <span class="cline-any cline-yes">6x</span>
231
- <span class="cline-any cline-yes">3x</span>
232
- <span class="cline-any cline-yes">3x</span>
233
- <span class="cline-any cline-yes">1x</span>
234
- <span class="cline-any cline-yes">4x</span>
235
- <span class="cline-any cline-yes">4x</span>
236
- <span class="cline-any cline-yes">4x</span>
237
- <span class="cline-any cline-yes">4x</span>
238
- <span class="cline-any cline-yes">4x</span>
239
- <span class="cline-any cline-yes">4x</span>
240
- <span class="cline-any cline-yes">4x</span>
241
- <span class="cline-any cline-yes">4x</span>
242
- <span class="cline-any cline-yes">4x</span>
243
- <span class="cline-any cline-yes">4x</span>
225
+ <span class="cline-any cline-yes">8x</span>
226
+ <span class="cline-any cline-yes">8x</span>
227
+ <span class="cline-any cline-yes">8x</span>
228
+ <span class="cline-any cline-yes">8x</span>
229
+ <span class="cline-any cline-yes">8x</span>
230
+ <span class="cline-any cline-yes">8x</span>
244
231
  <span class="cline-any cline-yes">4x</span>
245
232
  <span class="cline-any cline-yes">4x</span>
233
+ <span class="cline-any cline-yes">1x</span>
234
+ <span class="cline-any cline-yes">5x</span>
235
+ <span class="cline-any cline-yes">5x</span>
236
+ <span class="cline-any cline-yes">5x</span>
237
+ <span class="cline-any cline-yes">5x</span>
238
+ <span class="cline-any cline-yes">5x</span>
239
+ <span class="cline-any cline-yes">5x</span>
240
+ <span class="cline-any cline-yes">5x</span>
241
+ <span class="cline-any cline-yes">5x</span>
242
+ <span class="cline-any cline-yes">5x</span>
243
+ <span class="cline-any cline-yes">5x</span>
244
+ <span class="cline-any cline-yes">5x</span>
245
+ <span class="cline-any cline-yes">5x</span>
246
+ <span class="cline-any cline-yes">5x</span>
247
+ <span class="cline-any cline-yes">5x</span>
248
+ <span class="cline-any cline-yes">5x</span>
249
+ <span class="cline-any cline-yes">5x</span>
250
+ <span class="cline-any cline-yes">5x</span>
251
+ <span class="cline-any cline-yes">5x</span>
252
+ <span class="cline-any cline-yes">5x</span>
253
+ <span class="cline-any cline-yes">5x</span>
254
+ <span class="cline-any cline-yes">5x</span>
255
+ <span class="cline-any cline-yes">5x</span>
256
+ <span class="cline-any cline-yes">5x</span>
257
+ <span class="cline-any cline-yes">5x</span>
258
+ <span class="cline-any cline-yes">5x</span>
259
+ <span class="cline-any cline-yes">5x</span>
260
+ <span class="cline-any cline-yes">5x</span>
261
+ <span class="cline-any cline-yes">5x</span>
262
+ <span class="cline-any cline-yes">5x</span>
263
+ <span class="cline-any cline-yes">5x</span>
264
+ <span class="cline-any cline-yes">5x</span>
265
+ <span class="cline-any cline-yes">5x</span>
266
+ <span class="cline-any cline-yes">5x</span>
267
+ <span class="cline-any cline-yes">5x</span>
268
+ <span class="cline-any cline-yes">5x</span>
269
+ <span class="cline-any cline-yes">5x</span>
270
+ <span class="cline-any cline-yes">5x</span>
271
+ <span class="cline-any cline-yes">5x</span>
272
+ <span class="cline-any cline-yes">5x</span>
273
+ <span class="cline-any cline-yes">1x</span>
274
+ <span class="cline-any cline-yes">2x</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-yes">2x</span>
277
+ <span class="cline-any cline-yes">2x</span>
278
+ <span class="cline-any cline-yes">2x</span>
279
+ <span class="cline-any cline-yes">2x</span>
280
+ <span class="cline-any cline-yes">2x</span>
281
+ <span class="cline-any cline-yes">2x</span>
282
+ <span class="cline-any cline-yes">2x</span>
283
+ <span class="cline-any cline-yes">2x</span>
246
284
  <span class="cline-any cline-yes">4x</span>
247
285
  <span class="cline-any cline-yes">4x</span>
248
286
  <span class="cline-any cline-yes">4x</span>
@@ -264,68 +302,32 @@
264
302
  <span class="cline-any cline-yes">4x</span>
265
303
  <span class="cline-any cline-yes">4x</span>
266
304
  <span class="cline-any cline-yes">4x</span>
305
+ <span class="cline-any cline-yes">2x</span>
306
+ <span class="cline-any cline-yes">2x</span>
307
+ <span class="cline-any cline-yes">16x</span>
308
+ <span class="cline-any cline-yes">16x</span>
309
+ <span class="cline-any cline-yes">16x</span>
267
310
  <span class="cline-any cline-yes">4x</span>
268
311
  <span class="cline-any cline-yes">4x</span>
269
312
  <span class="cline-any cline-yes">4x</span>
313
+ <span class="cline-any cline-yes">2x</span>
314
+ <span class="cline-any cline-yes">2x</span>
270
315
  <span class="cline-any cline-yes">4x</span>
271
316
  <span class="cline-any cline-yes">4x</span>
272
317
  <span class="cline-any cline-yes">4x</span>
273
- <span class="cline-any cline-yes">1x</span>
274
- <span class="cline-any cline-yes">1x</span>
275
- <span class="cline-any cline-yes">1x</span>
276
- <span class="cline-any cline-yes">1x</span>
277
- <span class="cline-any cline-yes">1x</span>
278
- <span class="cline-any cline-yes">1x</span>
279
- <span class="cline-any cline-yes">1x</span>
280
- <span class="cline-any cline-yes">1x</span>
281
- <span class="cline-any cline-yes">1x</span>
282
- <span class="cline-any cline-yes">1x</span>
283
- <span class="cline-any cline-yes">1x</span>
284
- <span class="cline-any cline-yes">2x</span>
285
- <span class="cline-any cline-yes">2x</span>
286
- <span class="cline-any cline-yes">2x</span>
287
- <span class="cline-any cline-yes">2x</span>
318
+ <span class="cline-any cline-yes">16x</span>
319
+ <span class="cline-any cline-yes">12x</span>
320
+ <span class="cline-any cline-yes">12x</span>
321
+ <span class="cline-any cline-yes">16x</span>
288
322
  <span class="cline-any cline-yes">2x</span>
289
323
  <span class="cline-any cline-yes">2x</span>
290
324
  <span class="cline-any cline-yes">2x</span>
291
325
  <span class="cline-any cline-yes">2x</span>
292
326
  <span class="cline-any cline-yes">2x</span>
293
- <span class="cline-any cline-yes">2x</span>
294
- <span class="cline-any cline-yes">2x</span>
295
- <span class="cline-any cline-yes">2x</span>
296
- <span class="cline-any cline-yes">2x</span>
297
- <span class="cline-any cline-yes">2x</span>
298
- <span class="cline-any cline-yes">2x</span>
299
- <span class="cline-any cline-yes">2x</span>
300
- <span class="cline-any cline-yes">2x</span>
301
- <span class="cline-any cline-yes">2x</span>
302
- <span class="cline-any cline-yes">2x</span>
303
- <span class="cline-any cline-yes">2x</span>
304
- <span class="cline-any cline-yes">2x</span>
305
- <span class="cline-any cline-yes">1x</span>
306
- <span class="cline-any cline-yes">1x</span>
307
- <span class="cline-any cline-yes">8x</span>
308
- <span class="cline-any cline-yes">8x</span>
309
- <span class="cline-any cline-yes">8x</span>
310
- <span class="cline-any cline-yes">2x</span>
311
- <span class="cline-any cline-yes">2x</span>
312
- <span class="cline-any cline-yes">2x</span>
313
- <span class="cline-any cline-yes">1x</span>
314
- <span class="cline-any cline-yes">1x</span>
315
- <span class="cline-any cline-yes">2x</span>
316
- <span class="cline-any cline-yes">2x</span>
317
- <span class="cline-any cline-yes">2x</span>
318
- <span class="cline-any cline-yes">8x</span>
319
- <span class="cline-any cline-yes">6x</span>
320
- <span class="cline-any cline-yes">6x</span>
321
- <span class="cline-any cline-yes">8x</span>
322
- <span class="cline-any cline-yes">1x</span>
323
- <span class="cline-any cline-yes">1x</span>
324
- <span class="cline-any cline-yes">1x</span>
325
- <span class="cline-any cline-yes">1x</span>
326
- <span class="cline-any cline-yes">1x</span>
327
327
  <span class="cline-any cline-no">&nbsp;</span>
328
328
  <span class="cline-any cline-no">&nbsp;</span>
329
+ <span class="cline-any cline-yes">2x</span>
330
+ <span class="cline-any cline-yes">2x</span>
329
331
  <span class="cline-any cline-yes">1x</span>
330
332
  <span class="cline-any cline-yes">1x</span>
331
333
  <span class="cline-any cline-yes">1x</span>
@@ -351,20 +353,18 @@
351
353
  <span class="cline-any cline-yes">1x</span>
352
354
  <span class="cline-any cline-yes">1x</span>
353
355
  <span class="cline-any cline-yes">1x</span>
356
+ <span class="cline-any cline-yes">8x</span>
357
+ <span class="cline-any cline-yes">8x</span>
358
+ <span class="cline-any cline-yes">8x</span>
359
+ <span class="cline-any cline-yes">8x</span>
360
+ <span class="cline-any cline-yes">8x</span>
361
+ <span class="cline-any cline-yes">2x</span>
362
+ <span class="cline-any cline-yes">2x</span>
363
+ <span class="cline-any cline-yes">8x</span>
354
364
  <span class="cline-any cline-yes">1x</span>
355
365
  <span class="cline-any cline-yes">1x</span>
356
- <span class="cline-any cline-yes">6x</span>
357
- <span class="cline-any cline-yes">6x</span>
358
- <span class="cline-any cline-yes">6x</span>
359
- <span class="cline-any cline-yes">6x</span>
360
- <span class="cline-any cline-yes">6x</span>
361
- <span class="cline-any cline-yes">1x</span>
362
- <span class="cline-any cline-yes">1x</span>
363
- <span class="cline-any cline-yes">6x</span>
364
- <span class="cline-any cline-yes">1x</span>
365
- <span class="cline-any cline-yes">1x</span>
366
- <span class="cline-any cline-yes">4x</span>
367
- <span class="cline-any cline-yes">4x</span>
366
+ <span class="cline-any cline-yes">5x</span>
367
+ <span class="cline-any cline-yes">5x</span>
368
368
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { createHash } from "node:crypto";
369
369
  import { hashFileContent, chunkIdFromParts, getSchemaVersion } from "./hash.js";
370
370
  import type { Chunk, ChunkKind } from "./types.js";
@@ -523,7 +523,7 @@ export function chunkFile(path: string, content: string): Chunk[] {
523
523
  <div class='footer quiet pad2 space-top1 center small'>
524
524
  Code coverage generated by
525
525
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
526
- at 2026-02-03T16:46:48.617Z
526
+ at 2026-02-04T03:05:37.484Z
527
527
  </div>
528
528
  <script src="../prettify.js"></script>
529
529
  <script>
@@ -88,23 +88,23 @@
88
88
  <span class="cline-any cline-yes">1x</span>
89
89
  <span class="cline-any cline-yes">1x</span>
90
90
  <span class="cline-any cline-yes">1x</span>
91
- <span class="cline-any cline-yes">12x</span>
92
- <span class="cline-any cline-yes">12x</span>
93
- <span class="cline-any cline-yes">12x</span>
91
+ <span class="cline-any cline-yes">14x</span>
92
+ <span class="cline-any cline-yes">14x</span>
93
+ <span class="cline-any cline-yes">14x</span>
94
94
  <span class="cline-any cline-yes">1x</span>
95
95
  <span class="cline-any cline-yes">1x</span>
96
- <span class="cline-any cline-yes">12x</span>
97
- <span class="cline-any cline-yes">12x</span>
98
- <span class="cline-any cline-yes">12x</span>
96
+ <span class="cline-any cline-yes">14x</span>
97
+ <span class="cline-any cline-yes">14x</span>
98
+ <span class="cline-any cline-yes">14x</span>
99
99
  <span class="cline-any cline-yes">1x</span>
100
100
  <span class="cline-any cline-yes">1x</span>
101
- <span class="cline-any cline-yes">9x</span>
102
- <span class="cline-any cline-yes">9x</span>
101
+ <span class="cline-any cline-yes">12x</span>
102
+ <span class="cline-any cline-yes">12x</span>
103
103
  <span class="cline-any cline-yes">1x</span>
104
104
  <span class="cline-any cline-yes">1x</span>
105
- <span class="cline-any cline-yes">10x</span>
106
- <span class="cline-any cline-yes">10x</span>
107
- <span class="cline-any cline-yes">10x</span>
105
+ <span class="cline-any cline-yes">13x</span>
106
+ <span class="cline-any cline-yes">13x</span>
107
+ <span class="cline-any cline-yes">13x</span>
108
108
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { createHash } from "node:crypto";
109
109
  &nbsp;
110
110
  const SCHEMA_VERSION = 1;
@@ -133,7 +133,7 @@ export function chunkIdFromParts(path: string, part: string, contentHash: string
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at 2026-02-03T16:46:48.617Z
136
+ at 2026-02-04T03:05:37.484Z
137
137
  </div>
138
138
  <script src="../prettify.js"></script>
139
139
  <script>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2026-02-03T16:46:48.617Z
134
+ at 2026-02-04T03:05:37.484Z
135
135
  </div>
136
136
  <script src="../prettify.js"></script>
137
137
  <script>
@@ -127,28 +127,28 @@
127
127
  <span class="cline-any cline-yes">1x</span>
128
128
  <span class="cline-any cline-yes">1x</span>
129
129
  <span class="cline-any cline-yes">1x</span>
130
- <span class="cline-any cline-yes">9x</span>
131
- <span class="cline-any cline-yes">9x</span>
132
- <span class="cline-any cline-yes">6x</span>
133
- <span class="cline-any cline-yes">6x</span>
134
- <span class="cline-any cline-yes">1x</span>
135
- <span class="cline-any cline-yes">1x</span>
136
- <span class="cline-any cline-yes">19x</span>
137
- <span class="cline-any cline-yes">19x</span>
138
- <span class="cline-any cline-yes">19x</span>
139
- <span class="cline-any cline-yes">19x</span>
140
- <span class="cline-any cline-yes">19x</span>
141
- <span class="cline-any cline-yes">19x</span>
142
- <span class="cline-any cline-yes">19x</span>
143
- <span class="cline-any cline-yes">19x</span>
144
- <span class="cline-any cline-yes">19x</span>
145
- <span class="cline-any cline-yes">19x</span>
146
- <span class="cline-any cline-yes">19x</span>
147
- <span class="cline-any cline-yes">19x</span>
148
- <span class="cline-any cline-yes">19x</span>
149
- <span class="cline-any cline-yes">19x</span>
150
- <span class="cline-any cline-yes">19x</span>
151
- <span class="cline-any cline-yes">19x</span>
130
+ <span class="cline-any cline-yes">11x</span>
131
+ <span class="cline-any cline-yes">11x</span>
132
+ <span class="cline-any cline-yes">7x</span>
133
+ <span class="cline-any cline-yes">7x</span>
134
+ <span class="cline-any cline-yes">1x</span>
135
+ <span class="cline-any cline-yes">1x</span>
136
+ <span class="cline-any cline-yes">22x</span>
137
+ <span class="cline-any cline-yes">22x</span>
138
+ <span class="cline-any cline-yes">22x</span>
139
+ <span class="cline-any cline-yes">22x</span>
140
+ <span class="cline-any cline-yes">22x</span>
141
+ <span class="cline-any cline-yes">22x</span>
142
+ <span class="cline-any cline-yes">22x</span>
143
+ <span class="cline-any cline-yes">22x</span>
144
+ <span class="cline-any cline-yes">22x</span>
145
+ <span class="cline-any cline-yes">22x</span>
146
+ <span class="cline-any cline-yes">22x</span>
147
+ <span class="cline-any cline-yes">22x</span>
148
+ <span class="cline-any cline-yes">22x</span>
149
+ <span class="cline-any cline-yes">22x</span>
150
+ <span class="cline-any cline-yes">22x</span>
151
+ <span class="cline-any cline-yes">22x</span>
152
152
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">export type ChunkKind = "code" | "doc" | "config" | "schema" | "test" | "system_map" | "module_summary" | "entrypoint";
153
153
  &nbsp;
154
154
  export interface ChunkMetadata {
@@ -199,7 +199,7 @@ export function getLanguageFromPath(path: string): string {
199
199
  <div class='footer quiet pad2 space-top1 center small'>
200
200
  Code coverage generated by
201
201
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
202
- at 2026-02-03T16:46:48.617Z
202
+ at 2026-02-04T03:05:37.484Z
203
203
  </div>
204
204
  <script src="../prettify.js"></script>
205
205
  <script>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2026-02-03T16:46:48.617Z
119
+ at 2026-02-04T03:05:37.484Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>
@@ -169,7 +169,7 @@ export function configExists(cwd: string): boolean {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at 2026-02-03T16:46:48.617Z
172
+ at 2026-02-04T03:05:37.484Z
173
173
  </div>
174
174
  <script src="../prettify.js"></script>
175
175
  <script>
@@ -220,7 +220,7 @@ export const MEMORY_SERVER_PID_FILE = ".mem/memory-server.pid";
220
220
  <div class='footer quiet pad2 space-top1 center small'>
221
221
  Code coverage generated by
222
222
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
223
- at 2026-02-03T16:46:48.617Z
223
+ at 2026-02-04T03:05:37.484Z
224
224
  </div>
225
225
  <script src="../prettify.js"></script>
226
226
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-02-03T16:46:48.617Z
104
+ at 2026-02-04T03:05:37.484Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -214,7 +214,7 @@ export<span class="fstat-no" title="function not covered" > function textWithPat
214
214
  <div class='footer quiet pad2 space-top1 center small'>
215
215
  Code coverage generated by
216
216
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
217
- at 2026-02-03T16:46:48.617Z
217
+ at 2026-02-04T03:05:37.484Z
218
218
  </div>
219
219
  <script src="../prettify.js"></script>
220
220
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">88.03% </span>
26
+ <span class="strong">91.77% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>471/535</span>
28
+ <span class='fraction'>491/535</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">88.63% </span>
33
+ <span class="strong">87.5% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>78/88</span>
35
+ <span class='fraction'>84/96</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">85.71% </span>
40
+ <span class="strong">88.57% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>30/35</span>
42
+ <span class='fraction'>31/35</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.03% </span>
47
+ <span class="strong">91.77% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>471/535</span>
49
+ <span class='fraction'>491/535</span>
50
50
  </div>
51
51
 
52
52
 
@@ -140,17 +140,17 @@
140
140
 
141
141
  <tr>
142
142
  <td class="file high" data-value="scope"><a href="scope/index.html">scope</a></td>
143
- <td data-value="83.87" class="pic high">
144
- <div class="chart"><div class="cover-fill" style="width: 83%"></div><div class="cover-empty" style="width: 17%"></div></div>
143
+ <td data-value="100" class="pic high">
144
+ <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
145
145
  </td>
146
- <td data-value="83.87" class="pct high">83.87%</td>
147
- <td data-value="124" class="abs high">104/124</td>
148
146
  <td data-value="100" class="pct high">100%</td>
149
- <td data-value="27" class="abs high">27/27</td>
150
- <td data-value="88.88" class="pct high">88.88%</td>
151
- <td data-value="9" class="abs high">8/9</td>
152
- <td data-value="83.87" class="pct high">83.87%</td>
153
- <td data-value="124" class="abs high">104/124</td>
147
+ <td data-value="124" class="abs high">124/124</td>
148
+ <td data-value="94.28" class="pct high">94.28%</td>
149
+ <td data-value="35" class="abs high">33/35</td>
150
+ <td data-value="100" class="pct high">100%</td>
151
+ <td data-value="9" class="abs high">9/9</td>
152
+ <td data-value="100" class="pct high">100%</td>
153
+ <td data-value="124" class="abs high">124/124</td>
154
154
  </tr>
155
155
 
156
156
  </tbody>
@@ -161,7 +161,7 @@
161
161
  <div class='footer quiet pad2 space-top1 center small'>
162
162
  Code coverage generated by
163
163
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
164
- at 2026-02-03T16:46:48.617Z
164
+ at 2026-02-04T03:05:37.484Z
165
165
  </div>
166
166
  <script src="prettify.js"></script>
167
167
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-02-03T16:46:48.617Z
104
+ at 2026-02-04T03:05:37.484Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -265,7 +265,7 @@ export <span class="fstat-no" title="function not covered" >async function upser
265
265
  <div class='footer quiet pad2 space-top1 center small'>
266
266
  Code coverage generated by
267
267
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
268
- at 2026-02-03T16:46:48.617Z
268
+ at 2026-02-04T03:05:37.484Z
269
269
  </div>
270
270
  <script src="../prettify.js"></script>
271
271
  <script>