### Start Open Jules Development Servers Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This command concurrently starts both the frontend (Vite) and backend (Express) development servers for the Open Jules application. The frontend typically becomes available at 'http://localhost:5173', while the backend listens on 'http://localhost:3001'. This allows you to access and interact with the application in your web browser. ```bash npm run dev ``` -------------------------------- ### Install Node.js Project Dependencies Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This command installs all necessary Node.js package dependencies for the Open Jules project. It utilizes 'npm', the Node Package Manager, to read the 'package.json' file and download required modules. Ensure Node.js is installed before running this command. ```bash npm install ``` -------------------------------- ### Clone Open Jules Git Repository Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This command clones the Open Jules project repository from GitHub to your local machine. After cloning, you must navigate into the newly created 'open-jules' directory. This is the first step to setting up the project locally. ```bash git clone https://github.com/open-jules/open-jules.git cd open-jules ``` -------------------------------- ### NPM Development and Build Scripts for Open Jules Ollama Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This section details the available npm scripts for managing the Open Jules Ollama project's development, build, and testing processes. These scripts provide granular control over starting services, compiling the frontend, and ensuring code quality. ```Shell npm run frontend # Starts only the Vite development server for the frontend. npm run server # Starts only the Node.js/Express backend server. npm run build # Compiles and bundles the React frontend for production. The output is typically placed in a `dist` folder. npm run preview # Serves the production build locally, allowing you to test the optimized version before deployment. npm run lint # Runs ESLint across the project to check for code style issues and potential errors. ``` -------------------------------- ### Open Jules Ollama Client-Server Architecture and AI Agents Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This documentation outlines the client-server architecture of Open Jules, detailing its integration with Ollama for AI capabilities and GitHub for repository management. It describes the roles of the frontend, backend, Ollama, and various specialized AI agents in automating tasks. ```APIDOC { "ArchitectureOverview": { "type": "Client-Server", "integrations": [ "Ollama", "GitHub" ], "components": [ { "name": "Frontend", "technology": "React/TypeScript SPA (Vite)", "location": "N/A", "purpose": "User interface for GitHub authentication, repository/branch selection, task input, Ollama model configuration, real-time progress display." }, { "name": "Backend", "technology": "Express.js server", "location": "backend/server.js", "purpose": "Exposes APIs, orchestrates AI tasks, manages simple-git and octokit interactions, coordinates AI agents.", "integrations": [ "simple-git", "octokit" ] }, { "name": "OllamaIntegration", "technology": "Local Ollama instance", "location": "backend/services/ollama.js", "purpose": "Utilizes open-source language models for agent functionalities, ensuring data privacy and model customization." }, { "name": "AIAgents", "location": "backend/agents/", "description": "Core logic of task automation, each powered by an Ollama model with a specific role.", "agents": [ { "name": "PlannerAgent", "role": "Deconstructs high-level task into a step-by-step plan." }, { "name": "BranchNamingAgent", "role": "Generates concise Git branch name." }, { "name": "EmbedderAgent", "role": "(If applicable) Analyzes codebase for contextual understanding." }, { "name": "DeveloperAgent", "role": "Implements code changes based on plan and context." }, { "name": "ReviewerAgent", "role": "Reviews generated code for quality, correctness, and improvements." }, { "name": "PRWriterAgent", "role": "Drafts comprehensive title and body for pull request." } ] } ], "TypicalWorkflow": { "steps": [ "User configures settings and submits task via frontend.", "Backend receives task and initiates multi-agent workflow.", "Agents (via local Ollama) perform specialized functions sequentially:", "- Task Planning", "- Branch Naming", "- Repository Cloning & Branch Creation", "- Codebase Analysis (Embedding)", "- Code Implementation", "- Code Review & Refinement", "- Committing & Pushing Changes", "- Pull Request Content Generation", "- Pull Request Creation on GitHub", "Backend streams status updates (SSE) to frontend's console.", "Final output: New branch with implemented changes and open pull request." ] } } } ``` -------------------------------- ### Open Jules Project Directory Structure Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This snippet illustrates the hierarchical file and directory layout of the Open Jules project. It highlights the distinct 'backend' and 'src' (frontend) directories, along with key configuration files, providing a foundational understanding of the project's modular design. ```plaintext open-jules/ ├── backend/ # Contains all backend Node.js/Express server code │ ├── agents/ # Logic for the specialized AI agents (Planner, Developer, Reviewer, etc.) │ │ ├── planner.js │ │ ├── developer.js │ │ └── ... (other agent files) │ ├── git/ # `GitManager` class for abstracting `simple-git` operations │ │ └── git-manager.js │ ├── github/ # `GitHubManager` class for `octokit` interactions with the GitHub API │ │ └── github-manager.js │ ├── services/ # External service integrations, primarily Ollama │ │ └── ollama.js │ └── server.js # Main entry point for the Express backend server, defines API routes. │ ├── public/ # Static assets served directly (e.g., favicon, initial `index.html` for Vite) │ ├── src/ # Frontend React/TypeScript application source code (managed by Vite) │ ├── components/ # Reusable UI components (e.g., RepoSelector, SettingsModal, StatusConsole) │ │ ├── RepoSelector.tsx │ │ └── ... (other component files) │ ├── App.tsx # The main root component of the React application. │ ├── main.tsx # The entry point for the React application, renders App.tsx. │ ├── index.css # Global styles and TailwindCSS base directives. │ └── vite-env.d.ts # TypeScript definitions for Vite environment variables. │ ├── .gitignore # Specifies intentionally untracked files that Git should ignore. ├── CONTRIBUTING.md # Guidelines for contributing to the project. ├── eslint.config.js # ESLint configuration file. ├── LICENSE # Contains the MIT License text. ├── package.json # Lists project dependencies, scripts (npm run dev, etc.), and metadata. ├── package-lock.json # Records exact versions of dependencies. ├── postcss.config.js # Configuration for PostCSS (used with TailwindCSS). ├── README.md # This file: project documentation. ├── tailwind.config.js # Configuration for TailwindCSS. ├── tsconfig.json # TypeScript compiler options for the project. ├── tsconfig.app.json # TypeScript compiler options specific to the frontend app. ├── tsconfig.node.json # TypeScript compiler options specific to the backend (if it were TS). └── vite.config.ts # Configuration file for Vite (frontend build tool). ``` -------------------------------- ### Open Jules Interaction Flow Overview Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Describes the general interaction pattern between the user and Open Jules. This flow outlines the steps from issue provision to task completion and submission, including plan approval and tool usage. It serves as a guide for how to effectively collaborate with Open Jules. ```APIDOC Interaction Flow: 1. You Provide an Issue: User gives Open Jules a task or problem. 2. Create a Plan: Open Jules analyzes the issue and proposes a plan using `set_plan`. 3. You Approve the Plan: Open Jules waits for user approval (using `request_user_input` and `record_user_approval_for_plan`). User can provide feedback. 4. Execute Step-by-Step: - Open Jules tackles one plan step at a time, often by calling `run_subtask`. - After each step/subtask, Open Jules informs user using `plan_step_complete`. 5. Tool Usage: Open Jules uses various tools (file system, plan management, communication) throughout. 6. Completion and Submission: Once all plan steps are done and confident, Open Jules uses `submit` to commit changes (including tests). 7. Feedback Loop: User can provide feedback; Open Jules adjusts. `message_user` for general communication, `request_user_input` for specific responses. ``` -------------------------------- ### GitHub Bug Reporting Guidelines for Open Jules Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/CONTRIBUTING.md This guide details how to report bugs effectively using GitHub's issue tracker for the Open Jules project. It emphasizes including a summary, steps to reproduce, expected vs. actual behavior, and any relevant notes or attempted solutions to ensure comprehensive bug reports. ```Text **Great Bug Reports** tend to have: - A quick summary and/or background - Steps to reproduce - Be specific! - Give sample code if you can. - What you expected would happen - What actually happens - Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) ``` -------------------------------- ### Pull Ollama Language Models Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/TECHNICAL_DETAILS.md This command pulls a specified language model from the Ollama registry to your local Ollama instance. It's crucial for ensuring AI agents have access to the models they need. Replace 'llama3' with the desired model name, such as 'codellama' or 'mistral'. ```bash ollama pull llama3 ``` -------------------------------- ### Set Task Plan with Python `set_plan` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Defines the overall plan for the current task. This tool is used by Open Jules to outline the steps it intends to take to solve an issue. The plan is provided as a descriptive string. ```APIDOC Tool: set_plan Purpose: Sets the plan for the task. Arguments: - plan (str): A string describing the plan. Returns: - None ``` -------------------------------- ### Record User Plan Approval with Python `record_user_approval_for_plan` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Registers that the user has approved the proposed plan. This tool is crucial for ensuring user consent before Open Jules proceeds with executing the task plan. It takes no arguments. ```APIDOC Tool: record_user_approval_for_plan Purpose: Records that the user has approved the plan. Arguments: None Returns: - None ``` -------------------------------- ### Open Jules Coding Style Guidelines Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/CONTRIBUTING.md This section specifies the coding style conventions for contributing to Open Jules. It mandates the use of TypeScript for type safety, 2 spaces for indentation rather than tabs, and suggests running `npm run lint` for style unification to maintain code consistency. ```TypeScript * Use TypeScript for type safety * 2 spaces for indentation rather than tabs * You can try running `npm run lint` for style unification ``` -------------------------------- ### Fetch Website Content with Python `view_text_website` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Fetches the content of a given URL as plain text. This tool is useful for accessing external documentation, API references, or any web-based information required for task completion. It takes a single URL as input. ```APIDOC Tool: view_text_website Purpose: Fetches the content of a website as plain text. Useful for accessing documentation or external resources. Arguments: - url (str): The URL of the website to fetch. Returns: - str: The plain text content of the website. ``` -------------------------------- ### Execute Subtask with Python `run_subtask` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Initiates the execution of a defined subtask. This tool allows Open Jules to break down complex problems into smaller, manageable units. A description of the subtask to be run is provided. ```APIDOC Tool: run_subtask Purpose: Runs a subtask. Arguments: - subtask (str): A description of the subtask to run. Returns: - None ``` -------------------------------- ### Request User Input with Python `request_user_input` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Prompts the user for specific input. This tool is used when Open Jules requires a direct response or decision from the user to proceed with the task. A message is displayed to the user explaining what input is needed. ```APIDOC Tool: request_user_input Purpose: Requests input from the user. Arguments: - message (str): The message to display to the user when requesting input. Returns: - None ``` -------------------------------- ### GitHub Pull Request Workflow for Open Jules Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/CONTRIBUTING.md This section outlines the steps for submitting pull requests to the Open Jules project. It covers forking, branching, adding tests, updating documentation, ensuring test suite passes, linting, and finally issuing the pull request. Contributions are accepted under the MIT Software License. ```Text 1. Fork the repo and create your branch from `main`. 2. If you've added code that should be tested, add tests. 3. If you've changed APIs, update the documentation. 4. Ensure the test suite passes. 5. Make sure your code lints. 6. Issue that pull request! ``` -------------------------------- ### List Git-Tracked Files with Python `ls` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Lists git-tracked files and directories within the repository. This tool provides visibility into the project's file structure, defaulting to the repository root if no directory path is specified. It helps in exploring the codebase. ```APIDOC Tool: ls Purpose: Lists git-tracked files/directories under the given directory in the repo (defaults to repo root). Arguments: - directory_path (str, optional): The path to the directory to list. Defaults to the repository root. Returns: - list[str]: A list of file and directory names. ``` -------------------------------- ### Mark Plan Step Complete with Python `plan_step_complete` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Notifies the user that a specific step in the current plan has been completed. This tool provides progress updates and helps in tracking the execution of the task. A descriptive message for the completed step is required. ```APIDOC Tool: plan_step_complete Purpose: Marks a step in the plan as complete. Arguments: - message (str): A message describing the completed step. Returns: - None ``` -------------------------------- ### Read File Contents with Python `read_files` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Retrieves the content of specified files within the repository. This tool is essential for examining existing code, configuration files, or any other text-based content. It takes a list of file paths as input. ```APIDOC Tool: read_files Purpose: Returns the content of the following files in the repo. Arguments: - filepaths (list[str]): A list of paths to the files to be read. Returns: - list[str]: A list of strings, where each string is the content of a corresponding file. ``` -------------------------------- ### Send Message to User with Python `message_user` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Sends a general message to the user. This tool facilitates communication between Open Jules and the user, allowing for updates or information dissemination. It also specifies whether Open Jules should continue working after sending the message. ```APIDOC Tool: message_user Purpose: Sends a message to the user. Arguments: - message (str): The message to send to the user. - continue_working (bool): Whether the agent should continue working after sending the message. Returns: - None ``` -------------------------------- ### Submit Changes with Python `submit` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Commits the completed changes to version control. This tool finalizes the work done by Open Jules, creating a new branch and committing the modifications with a specified message. It requires a branch name and a commit message. ```APIDOC Tool: submit Purpose: Submits the changes with a given branch name and commit message. Arguments: - branch_name (str): The name of the branch to create and commit to. - commit_message (str): The commit message. Returns: - None ``` -------------------------------- ### Define Web Crawler Access Rules Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/public/robots.txt This snippet provides a standard robots.txt configuration, allowing Googlebot, Bingbot, Twitterbot, Facebook External Hit, and all other user agents to access all paths on the website. It's crucial for SEO and managing crawler behavior. ```robots.txt User-agent: Googlebot Allow: / User-agent: Bingbot Allow: / User-agent: Twitterbot Allow: / User-agent: facebookexternalhit Allow: / User-agent: * Allow: / ``` -------------------------------- ### Cancel Current Subtask with Python `cancel_subtask` Tool Source: https://github.com/dustinwloring1988/open-jules-ollama/blob/main/README.md Terminates the currently active subtask. This tool can be used to stop an ongoing subtask if it's no longer needed or if an error occurs. It takes no arguments. ```APIDOC Tool: cancel_subtask Purpose: Cancels the current subtask. Arguments: None Returns: - None ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.