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
- .append_lp(digest, str) ⇒ Object
- .canonical_signature(signature) ⇒ Object
- .compute(fqcn:, signature:, extractor_version:) ⇒ Object
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 |