Class Core

java.lang.Object
me.neurodock.core.Core

public class Core extends Object
The Main class for the System, responsible for managing the OllamaObject, tools, and the Ollama API.
  • Constructor Details

    • Core

      public Core(@NotNull @NotNull PrintAdvanceMessageHandler printMessageHandler)
      Creates a new instance of Core with the provided PrintMessageHandler, defaulting the Ollama backend to localhost.
      Parameters:
      printMessageHandler - The PrintMessageHandler to use as the default output
    • Core

      public Core(@NotNull @NotNull PrintAdvanceMessageHandler printMessageHandler, @NotNull @NotNull String ollamaIP)
      Creates a new instance of Core with the provided PrintMessageHandler and a specific Ollama backend address.
      Parameters:
      printMessageHandler - The PrintMessageHandler to use as the default output
      ollamaIP - The IP or hostname of the Ollama backend
  • Method Details

    • setLogDirectory

      public static void setLogDirectory(String logDirectory)
    • ensureDir

      public static void ensureDir(String path)
      Ensures that a directory exists at the given path, creating it if it does not.
      Parameters:
      path - The path of the directory to create
    • setOllamaObject

      public void setOllamaObject(OllamaObject ollamaObject)
      Sets the ollamaObject object to the provided argument, Also adds the memory base system. See setOllamaObjectNoMemory(OllamaObject) if you don't want to add memory functions
      Parameters:
      ollamaObject - The OllamaObject to use
    • setOllamaObjectNoMemory

      public void setOllamaObjectNoMemory(OllamaObject ollamaObject)
      Sets the ollamaObject object to the provided argument, Dose not add the base system for memory. see setOllamaObject(OllamaObject) if you want to add memory function
      Parameters:
      ollamaObject - The OllamaObject to use
    • addTool

      public void addTool(OllamaFunctionTool functionTool, String source)
      Adds a new tool to the System
      Parameters:
      functionTool - The tool to add
      source - The source of the tool
    • addTools

      public void addTools(OllamaFunctionTools tools)
      Adds a list of tools to the System
      Parameters:
      tools - The tools to add
    • getFuntionTools

      public ArrayList<Pair<OllamaFunctionTool, String>> getFuntionTools()
      Gets the list of tools added to the System
      Returns:
      The list of tools added to the System compressed as Pairs of the tool and the source
    • getOllamaObject

      public OllamaObject getOllamaObject()
      Gets the Ollama Object
      Returns:
      The Ollama Object
    • removeTool

      public void removeTool(String name)
      Removes a tool with a given name
      Parameters:
      name - The tool to remove
    • flushLog

      public static void flushLog()
      Flushes the log file
    • cancel

      public void cancel()
    • qurryOllama

      public CompletableFuture<org.json.JSONObject> qurryOllama()
      Queries Ollama and resolves once the full response is available, discarding any intermediate streaming chunks along the way.

      This is a convenience overload of qurryOllama(Consumer) with a no-op chunk listener. Whether the underlying request is actually sent as a streaming or non-streaming HTTP request is determined entirely by this query's OllamaObject's stream setting — this method does not itself impose a mode. If the OllamaObject is configured to stream, each intermediate chunk is still received and parsed internally, just not exposed to the caller; use qurryOllama(Consumer) if intermediate chunks are needed.

      Returns:
      a future that resolves to the final response object once generation completes
    • qurryOllama

      public CompletableFuture<org.json.JSONObject> qurryOllama(Consumer<org.json.JSONObject> onChunk)
      Queries Ollama, invoking onChunk for each JSON object received from the server, and resolves once the final response is available.

      Whether this is a streaming or non-streaming exchange is determined by this query's OllamaObject's stream setting, not by which overload was called:

      • If stream is true, Ollama emits one JSON object per line as generation progresses; onChunk fires once per line, in order, as each arrives.
      • If stream is false, Ollama emits the entire response as a single object once generation is complete; onChunk fires exactly once with that full object.
      In both cases, the returned future resolves once, to the final (done: true) response object — onChunk is for observing progress, the returned future is for "the response is complete."

      If cancel() is called while this query is in flight, the underlying connection is closed and the returned future completes exceptionally with a CancellationException.

      Parameters:
      onChunk - callback invoked for each response object received from Ollama, in arrival order; never invoked with null
      Returns:
      a future that resolves to the final response object once generation completes
    • handleResponse

      public void handleResponse(org.json.JSONObject response)
      Handles the response from Ollama. Processes tool calls, logs information, appends messages to the OllamaObject, and prints output to the user.
      Parameters:
      response - The response from Ollama
    • writeLog

      public static void writeLog(String message)
      Writes a message to the log file
      Parameters:
      message - The message to write
    • enablePlugins

      public void enablePlugins(File pluginDirectory)