llmemory 0.2.4 → 0.2.6

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.
@@ -30,7 +30,11 @@ module Llmemory
30
30
  elsif meta[:text] && @cipher.enabled?
31
31
  meta[:text] = @cipher.encrypt(meta[:text].to_s)
32
32
  end
33
- @entries[key] = { embedding: embedding.to_a.map(&:to_f), metadata: meta.merge("user_id" => user_id) }
33
+ @entries[key] = {
34
+ source_id: id.to_s,
35
+ embedding: embedding.to_a.map(&:to_f),
36
+ metadata: meta.merge("user_id" => user_id)
37
+ }
34
38
  id
35
39
  end
36
40
 
@@ -38,9 +42,9 @@ module Llmemory
38
42
  query = query_embedding.to_a.map(&:to_f)
39
43
  return [] if query.empty?
40
44
  entries = user_id ? @entries.select { |k, _| k.to_s.start_with?("#{user_id}:") } : @entries
41
- scores = entries.map do |id, data|
45
+ scores = entries.map do |_key, data|
42
46
  sim = cosine_similarity(query, data[:embedding])
43
- { id: id, score: sim, metadata: decrypt_metadata(data[:metadata]) }
47
+ { id: data[:source_id], score: sim, metadata: decrypt_metadata(data[:metadata]) }
44
48
  end
45
49
  scores.sort_by { |s| -s[:score] }.first(top_k)
46
50
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Llmemory
4
- VERSION = "0.2.4"
4
+ VERSION = "0.2.6"
5
5
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :llmemory do
4
+ desc "Backfill search_tokens blind index (and name_det on skills) for encrypted keyword search. " \
5
+ "Env: FORCE=1 (re-backfill all rows), DRY_RUN=1 (count only), STORE=active_record|postgres"
6
+ task :backfill_search_tokens, [:user_id] do |_t, args|
7
+ require "llmemory"
8
+ require_relative "../llmemory/maintenance/search_tokens_backfill"
9
+
10
+ dry_run = ENV["DRY_RUN"].to_s == "1"
11
+ force = ENV["FORCE"].to_s == "1"
12
+ store = ENV["STORE"]&.to_sym
13
+
14
+ if store.nil? && !Llmemory.configuration.encryption_enabled
15
+ warn "Note: encryption_enabled is false; backfill still aligns schema but keyword search uses plaintext LIKE."
16
+ end
17
+
18
+ backfill = Llmemory::Maintenance::SearchTokensBackfill.new(
19
+ dry_run: dry_run,
20
+ force: force,
21
+ store: store
22
+ )
23
+
24
+ user_id = args[:user_id].presence
25
+ puts "Backfilling search_tokens#{user_id ? " for user_id=#{user_id}" : " (all users)"} " \
26
+ "[store=#{store || Llmemory.configuration.long_term_store}]" \
27
+ "#{dry_run ? " [DRY RUN]" : ""}#{force ? " [FORCE]" : ""}"
28
+
29
+ result = backfill.run(user_id: user_id)
30
+ summary = result.to_h
31
+
32
+ puts "Updated: items=#{summary[:items]} resources=#{summary[:resources]} " \
33
+ "episodes=#{summary[:episodes]} skills=#{summary[:skills]} " \
34
+ "(total=#{summary[:total]})"
35
+ puts "Dry run — no rows written." if dry_run
36
+ end
37
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: llmemory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - llmemory
@@ -230,6 +230,7 @@ files:
230
230
  - lib/llmemory/maintenance/consolidator.rb
231
231
  - lib/llmemory/maintenance/reindexer.rb
232
232
  - lib/llmemory/maintenance/runner.rb
233
+ - lib/llmemory/maintenance/search_tokens_backfill.rb
233
234
  - lib/llmemory/maintenance/summarizer.rb
234
235
  - lib/llmemory/maintenance/ttl_expiry.rb
235
236
  - lib/llmemory/mcp.rb
@@ -288,6 +289,7 @@ files:
288
289
  - lib/llmemory/vector_store/openai_embeddings.rb
289
290
  - lib/llmemory/version.rb
290
291
  - lib/llmemory/working_memory.rb
292
+ - lib/tasks/llmemory.rake
291
293
  - lib/tasks/release.rake
292
294
  homepage: https://github.com/entaina/llmemory
293
295
  licenses:
@@ -309,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
309
311
  - !ruby/object:Gem::Version
310
312
  version: '0'
311
313
  requirements: []
312
- rubygems_version: 4.0.10
314
+ rubygems_version: 4.0.16
313
315
  specification_version: 4
314
316
  summary: Persistent memory system for LLM agents
315
317
  test_files: []