Agent Tools

This document details the LangChain-based tools provided to the agent. These tools enable the agent to query external documentation, retrieve user-specific Jenkins contexts, inspect job configurations, and interact with the Jenkins workspace directly via the backend API.

The tools are dynamically generated and injected into the agent via the get_tool_list function, which accepts the current chat_id, the user’s context (pre-fetched from PostgreSQL), and the user_query.

Core Agent Tools

These tools are explicitly exposed to the Large Language Model (LLM) to perform actions and retrieve information.

2. General Jenkins Context Retrieval

  • Tool Name: get_general_jenkins_context()

  • Objective: Retrieve global settings for the current user’s Jenkins instance.

  • Key Detail: Returns information parsed from the user’s pre-loaded context, including the Jenkins version, master node hardware/status, active system messages, and the current UI screen the user is viewing.

3. Installed Plugins Check

  • Tool Name: get_installed_plugin_list()

  • Objective: Retrieve a complete JSON list of plugins currently active on the user’s Jenkins instance.

  • Key Detail: Used by the agent to verify dependencies before suggesting solutions (e.g., checking if the Kubernetes plugin is actually installed before providing a pod template).

4. Job Details Inspection

  • Tool Name: get_job_details()

  • Objective: Retrieve the configuration details of the specific Jenkins Job/Pipeline currently in scope.

  • Key Detail: Allows the agent to inspect the pipeline definition, repository URLs, and the raw config.xml.

6. Workspace Tree Discovery

  • Tool Name: get_workspace_tree()

  • Objective: Fetch the complete directory tree of all workspaces associated with the current build via the Jenkins API.

  • Key Detail: The agent is instructed to use this tool first when investigating files, as it provides the exact workspace_id and relative file paths necessary for reading specific file contents.

7. Workspace File Content Retriever

  • Tool Name: get_workspace_file(file_path: str, workspace_id: str)

  • Objective: Read the raw string content of a specific file within a Jenkins workspace (e.g., a Jenkinsfile, pom.xml, or package.json).

  • Key Detail: Enforces a strict system directive: the agent cannot guess paths or IDs and must rely on the output of get_workspace_tree() to call this tool successfully.


Internal Helper Services

The module also includes several private helper functions that support the exposed tools above:

  • get_build_logs(chat_id, query): Executes a filtered hybrid search against Qdrant to find specific error traces mapped to the current user’s chat_id.

  • retrieve_chunk_context(chunk, retrieval_type, useful_cb): A complex document parser that stitches together vector chunks, handles sliding window or parent-level context retrieval, removes overlaps, and reconstructs code blocks ([[CODE_BLOCK_X]]) from the database.

  • call_jenkins_api(endpoint, params): An asynchronous HTTP client handling secure communication with the custom Jenkins backend plugin, generating short-lived JWT tokens for authentication.

  • fetch_context_from_db(chat_id, db_session): Queries the PostgreSQL database (ContextEntity) to pre-load the user’s Jenkins context into memory before the agent cycle begins, minimizing redundant database queries.