Syntropy.Agent (syntropy v0.1.0)

Copy Markdown

GenServer-backed agent state for the Syntropy scaffold.

Summary

Types

state()

@type state() :: %Syntropy.Agent{
  connections: %{
    optional(String.t()) => %{weight: float(), interactions: non_neg_integer()}
  },
  id: String.t(),
  knowledge_items: [String.t()],
  lineage_ids: [String.t()],
  name: String.t(),
  node_id: String.t(),
  parent_ids: [String.t()],
  parent_runtime_ids: [String.t()],
  pending_thinks: %{
    optional(reference()) => %{
      from: GenServer.from(),
      prompt: String.t(),
      usage_context: map() | nil
    }
  },
  perspective: String.t(),
  perspective_labels: [String.t()],
  position: float(),
  runtime_id: String.t(),
  score_vector: %{knowledge: float(), synthesis: float(), connections: float()},
  source_names: [String.t()],
  temporary: boolean()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

dissolve(agent_id)

@spec dissolve(String.t()) :: :ok

get_state(agent_id)

@spec get_state(String.t()) :: state()

refresh(agent_id, opts \\ [])

@spec refresh(
  String.t(),
  keyword()
) :: state()

start_link(opts)

@spec start_link(keyword()) :: GenServer.on_start()

think(agent_id, prompt, usage_context \\ nil)

@spec think(String.t(), String.t(), map() | nil) ::
  {:ok, String.t()} | {:error, term()}

update_connections(agent_id, connections)

@spec update_connections(String.t(), map()) :: state()