@jarkkojs/goosedump 0.12.11 → 0.12.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 (2) hide show
  1. package/README.md +53 -58
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # goosedump
2
2
 
3
3
  `goosedump` browses, searches, converts, and compacts saved coding-agent
4
- conversations. It supports Claude Code, Codex, Crush, Gemini CLI, Goose,
5
- OpenCode, and Pi.
4
+ conversations, and keeps project-scoped durable memory. It supports Claude Code,
5
+ Codex, Crush, Gemini CLI, Goose, OpenCode, and Pi.
6
6
 
7
7
  It builds on ideas from [`lllyasviel/VCC`](https://github.com/lllyasviel/VCC).
8
8
 
@@ -63,72 +63,66 @@ model pull [all|embedding|text]
63
63
  `session copy`, `session remove`, and `memory forget` print their plan by default.
64
64
  Pass `--yes` to carry out the change.
65
65
 
66
- ## Persistent memory
67
-
68
- `session compact` only creates a bounded summary; it never changes durable memory.
69
- Use `memory remember PROVIDER:ID` to retain unseen source events and extract atomic
70
- facts, decisions, preferences, procedures, and lessons with exact provenance.
71
- Remembering the same unchanged session is idempotent. When a new statement is close
72
- to an existing active memory of the same type, the older memory is marked superseded
73
- and linked to the successor. Human and JSON reports list each added statement
74
- (with `mem_` IDs) and any memories it superseded.
75
-
76
- `memory recall` searches the current project by default and fills an estimated token
77
- budget with ranked active memories. It first preserves exact lexical and entity-anchor
78
- matches (paths, crates, symbols, commands, concepts), expands through shared anchors,
79
- then fills remaining slots with BGE semantic matches. Existing databases are embedded
80
- in bounded batches; `memory status` reports indexed and pending counts. Pass `--history`
81
- to include superseded statements. Use `memory list` to browse, `memory show` to inspect
82
- provenance revision hashes, entities, and supersession links, and `memory forget` to preview
83
- deletion. Forgetting a memory ID removes the
84
- derived statement; forgetting `provider:session-id` removes that session's retained
85
- source events. Applied forgetting leaves content-free tombstones so deleted memory is
86
- not learned again accidentally.
87
-
88
- Summary output is bounded to an estimated 4096 tokens by default. Set
89
- `--summary-max-tokens NUMBER` to choose another budget, or use `0` for no limit.
90
- The bound is best-effort when preserved goals, blockers, decisions, and preferences
91
- alone exceed it.
92
-
93
- Session-index caches are versioned clean-break formats and are rebuilt when
94
- incompatible. Durable memory migrations preserve existing sources, statements, and
95
- evidence links; an unsupported schema version is rejected and must be reinitialized
96
- explicitly.
97
-
98
- ## Inference performance
99
-
100
- The custom GPT-OSS-20B CPU engine uses every logical CPU available to the
101
- process by default. Override the compute thread count:
66
+ ## Compaction
67
+
68
+ `session compact` creates a summary; it never changes durable memory. Summaries are
69
+ bounded to an estimated 4,096 tokens by default. Use `--summary-max-tokens` to
70
+ change the budget or `0` to disable it. The bound is best-effort when preserved
71
+ goals, blockers, decisions, and preferences already exceed it.
72
+
73
+ ## Durable memory
74
+
75
+ Memory is explicit and separate from compaction:
76
+
77
+ 1. **Remember:** [`gpt-oss-20b`](docs/models/gpt-oss-20b.md) extracts typed,
78
+ atomic statements with source provenance. [`bge-small-en-v1.5`](docs/models/bge-small-en-v1.5.md)
79
+ embeds each statement. SQLite stores statements and provenance, while the
80
+ bundled [`sqlite-vec`](https://github.com/asg017/sqlite-vec) extension indexes
81
+ vectors in the same database.
82
+ 2. **Recall:** lexical and entity matches come first. SQLite KNN queries over
83
+ cosine-similar BGE vectors fill the remaining slots.
84
+
85
+ Memories are classified as decisions, facts, preferences, procedures, or lessons.
86
+
87
+ `memory remember` processes only new session entries, so remembering an unchanged
88
+ session is idempotent. A new version of a memory can supersede an older active
89
+ statement of the same type.
90
+
91
+ Recall searches active memories from the current project by default. Use
92
+ `--history` for superseded statements or `--all-projects` to search everywhere.
93
+ `memory show` displays provenance, and `memory forget` leaves a tombstone so
94
+ forgotten content is not learned again accidentally.
95
+
96
+ Session-index caches are rebuilt when their format changes. Durable-memory schema
97
+ 16 intentionally breaks compatibility with earlier databases. Back up and remove
98
+ `memory.sqlite3` when upgrading from schema 15 or older.
99
+
100
+ ## Local inference
101
+
102
+ Both models run locally. Download them with `goosedump model pull`, or use
103
+ `model pull text` or `model pull embedding`. Recall still uses lexical and entity
104
+ matching when the embedding model is not cached.
105
+
106
+ Text inference uses every logical CPU by default. Override it with
107
+ `GOOSEDUMP_INFERENCE_THREADS`:
102
108
 
103
109
  ```sh
104
- GOOSEDUMP_INFERENCE_THREADS=6 \
105
- goosedump session compact pi:context-id
110
+ GOOSEDUMP_INFERENCE_THREADS=6 goosedump session compact pi:context-id
106
111
  ```
107
112
 
108
- Compaction directive selection and durable-memory extraction use goosedump's custom
109
- GPT-OSS-20B CPU engine. Semantic recall uses the pinned 36.7 MB BGE-small-en-v1.5
110
- `Q8_0` encoder. Download both ahead of time with `goosedump model pull`, or select one
111
- with `goosedump model pull text` or `goosedump model pull embedding`. Recall falls back
112
- to lexical and entity matching when the embedding model is not cached.
113
-
114
- The `bench` feature builds a standalone harness that shells out to
115
- `goosedump session compact` with `GOOSEDUMP_PROFILE_COMPACT=1` and reports
116
- end-to-end and per-stage timings:
113
+ The optional `bench` feature measures `session compact`. Keep the machine,
114
+ session range, and model cache unchanged when comparing runs:
117
115
 
118
116
  ```sh
119
- # Edit benches/bench.txt to point at a real context, then:
117
+ # Point benches/bench.txt at a real session first.
120
118
  cargo bench --features bench
121
119
  ```
122
120
 
123
- Each case emits JSON with per-run timing (including model loading), median and
124
- p95 latency, and per-stage medians and p95s. Keep the machine, context range,
125
- and model cache unchanged when comparing configurations.
126
-
127
121
  ## Pi extension
128
122
 
129
123
  The bundled [pi-goosedump extension](packages/pi-goosedump/README.md) adds
130
- session-history search, entry expansion, durable-memory recall, CWD-scoped session management,
131
- memory forget/status maintenance, and turn-driven goosedump compaction to Pi:
124
+ session search, durable memory, session management, and goosedump compaction to
125
+ Pi:
132
126
 
133
127
  ```sh
134
128
  pi install npm:pi-goosedump
@@ -152,5 +146,6 @@ The published Linux x64 and arm64 binaries are static glibc PIEs.
152
146
  ### Third Party Attribution
153
147
 
154
148
  1. GPT-OSS-20B: Apache 2.0
155
- - Downloaded on first use at run-time. The model is not distributed together
156
- with goosedump.
149
+ 2. bge-small-en-v1.5: MIT
150
+
151
+ The models are downloaded at run time and are not distributed with goosedump.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jarkkojs/goosedump",
3
- "version": "0.12.11",
3
+ "version": "0.12.13",
4
4
  "description": "Coding agent context data browser",
5
5
  "license": "Apache-2.0 AND LGPL-2.1-or-later",
6
6
  "homepage": "https://github.com/jarkkojs/goosedump#readme",
@@ -21,10 +21,10 @@
21
21
  "LICENSE-LGPL-2.1"
22
22
  ],
23
23
  "optionalDependencies": {
24
- "@jarkkojs/goosedump-darwin-arm64": "0.12.11",
25
- "@jarkkojs/goosedump-linux-arm64": "0.12.11",
26
- "@jarkkojs/goosedump-linux-x64": "0.12.11",
27
- "@jarkkojs/goosedump-win32-x64": "0.12.11"
24
+ "@jarkkojs/goosedump-darwin-arm64": "0.12.13",
25
+ "@jarkkojs/goosedump-linux-arm64": "0.12.13",
26
+ "@jarkkojs/goosedump-linux-x64": "0.12.13",
27
+ "@jarkkojs/goosedump-win32-x64": "0.12.13"
28
28
  },
29
29
  "publishConfig": {
30
30
  "access": "public"