WeaveScope

BeamWeaver Core

BeamWeaver core defines the structs and behaviours shared by providers and the runtime.

Values

  • BeamWeaver.Core.Message: chat messages with roles :system, :user, :assistant, and :tool.

  • BeamWeaver.Core.Document: text documents for retrieval and data processing.

Behaviours

  • BeamWeaver.Core.ChatModel

  • BeamWeaver.Core.EmbeddingModel

  • BeamWeaver.Core.LLM

  • BeamWeaver.Core.Tool

Public helpers validate inputs and returned shapes before provider-specific code can claim success. Recoverable failures return tagged BeamWeaver.Core.Error values.

Async

Core model wrappers expose Task-backed async helpers:

task = BeamWeaver.Core.ChatModel.async_invoke(model, messages)
{:ok, message} = BeamWeaver.Core.Async.await(task)

Batch helpers return ordered task lists, so awaiting the list preserves caller input order even when work completes out of order.

Chat History

Chat history is an explicit adapter contract. Use ETS for local/test sessions or Memory-backed sessions when history should share the same store interface as graphs and agents:

history = BeamWeaver.Core.ChatHistory.ETS.new()
session = BeamWeaver.Core.ChatHistory.ETS.for_session(history, "thread-1")

:ok = BeamWeaver.Core.ChatHistory.add_user_message(session, "hello")
:ok = BeamWeaver.Core.ChatHistory.add_ai_message(session, "world")
{:ok, messages} = BeamWeaver.Core.ChatHistory.get_messages(session)

async_get_messages/2, async_add_messages/3, async_add_message/3, and async_clear/2 use the same Task-backed async helpers as model wrappers.