Module: OllamaAgent::Topology::SymbolIdentity

Defined in:
lib/ollama_agent/topology/symbol_identity.rb

Overview

Stable opaque ids for topology symbols (extractor-versioned).

Class Method Summary collapse

Class Method Details

.append_lp(digest, str) ⇒ Object



35
36
37
38
39
# File 'lib/ollama_agent/topology/symbol_identity.rb', line 35

def append_lp(digest, str)
  bytes = str.to_s.b
  digest.update([bytes.bytesize].pack("Q>"))
  digest.update(bytes)
end

.canonical_signature(signature) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/ollama_agent/topology/symbol_identity.rb', line 23

def canonical_signature(signature)
  return SignatureNormalizer.normalize(signature) unless signature.is_a?(Hash)

  if signature.key?(:fqcn) || signature.key?("fqcn")
    fq = signature[:fqcn] || signature["fqcn"]
    meth = signature[:methods] || signature["methods"]
    SignatureNormalizer.normalize_class(class_fqcn: fq, methods: meth)
  else
    SignatureNormalizer.normalize(signature)
  end
end

.compute(fqcn:, signature:, extractor_version:) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/ollama_agent/topology/symbol_identity.rb', line 14

def compute(fqcn:, signature:, extractor_version:)
  canon = canonical_signature(signature)
  digest = Digest::SHA256.new
  append_lp(digest, fqcn.to_s)
  append_lp(digest, JSON.generate(canon))
  append_lp(digest, extractor_version.to_s)
  digest.hexdigest
end