Module: Kward::MessageAccess

Defined in:
lib/kward/message_access.rb

Overview

Compatibility reader for persisted conversation message hashes.

Kward stores transcript entries as plain hashes because model payloads, JSONL sessions, plugins, and RPC normalizers all need to pass them around without framework objects. Restored sessions may contain either symbol keys, string keys, or Tauren-style camelCase aliases. MessageAccess centralizes those lookup rules so callers do not grow one-off compatibility branches.

Class Method Summary collapse

Class Method Details

.content(message) ⇒ Object?

Returns raw message content.

Returns:

  • (Object, nil)

    raw message content



32
33
34
# File 'lib/kward/message_access.rb', line 32

def content(message)
  value(message, :content)
end

.display_content(message) ⇒ String?

Returns UI-facing content preserved separately from model input.

Returns:

  • (String, nil)

    UI-facing content preserved separately from model input



37
38
39
# File 'lib/kward/message_access.rb', line 37

def display_content(message)
  value(message, :display_content) || value(message, :displayContent)
end

.name(message) ⇒ Object



45
46
47
# File 'lib/kward/message_access.rb', line 45

def name(message)
  value(message, :name)
end

.role(message) ⇒ String?

Returns message role such as user, assistant, or tool.

Returns:

  • (String, nil)

    message role such as user, assistant, or tool



27
28
29
# File 'lib/kward/message_access.rb', line 27

def role(message)
  value(message, :role)
end

.summary(message) ⇒ Object



41
42
43
# File 'lib/kward/message_access.rb', line 41

def summary(message)
  value(message, :summary)
end

.tool_call_id(message) ⇒ Object



49
50
51
# File 'lib/kward/message_access.rb', line 49

def tool_call_id(message)
  value(message, :tool_call_id) || value(message, :toolCallId)
end

.tool_calls(message) ⇒ Array<Hash>

Returns assistant tool calls, or an empty array.

Returns:

  • (Array<Hash>)

    assistant tool calls, or an empty array



58
59
60
61
# File 'lib/kward/message_access.rb', line 58

def tool_calls(message)
  calls = value(message, :tool_calls) || value(message, :toolCalls)
  calls.is_a?(Array) ? calls : []
end

.tool_name(message) ⇒ Object



53
54
55
# File 'lib/kward/message_access.rb', line 53

def tool_name(message)
  value(message, :name) || value(message, :toolName)
end

.value(object, key) ⇒ Object?

Reads a field from a hash-like object using symbol or string keys.

Parameters:

  • object (#key?, nil)

    hash-like object to read

  • key (String, Symbol)

    canonical field name

Returns:

  • (Object, nil)

    stored value when present



18
19
20
21
22
23
24
# File 'lib/kward/message_access.rb', line 18

def value(object, key)
  return nil unless object.respond_to?(:key?)
  return object[key] if object.key?(key)
  return object[key.to_s] if object.key?(key.to_s)

  nil
end