test/support/memory/semantic_worker_test_provider.ex

main at 58e6347eeb72 · 707 B

defmodule OpenAgents.Memory.SemanticWorkerTestProvider do
  @moduledoc false

  @behaviour OpenAgents.Memory.EmbeddingProvider

  @impl true
  def embed(_text, %{dimensions: dimensions}) do
    case Application.fetch_env!(:openagents, :semantic_worker_test_mode) do
      :success ->
        {:ok, List.duplicate(0.0, dimensions)}

      :failure ->
        {:error, :semantic_provider_offline}

      {:block, observer} when is_pid(observer) ->
        send(observer, {:semantic_provider_started, self()})

        receive do
          :release_semantic_provider -> {:ok, List.duplicate(0.0, dimensions)}
        after
          60_000 -> {:error, :semantic_provider_timeout}
        end
    end
  end
end