defmodule JulesEx do @moduledoc """ A client library for the Jules API. Jules is an AI-powered coding assistant that can automate software development tasks. This library provides a simple interface to interact with the Jules API. ## Configuration Set your Jules API key in the environment: export JULES_API_KEY="your-api-key-here" Or configure it in your application: config :jules_ex, api_key: "your-api-key-here" ## Basic Usage # List available sources (GitHub repos) {:ok, sources} = JulesEx.list_sources() # Create a new session {:ok, session} = JulesEx.create_session( prompt: "Fix the bug in the login function", source: "sources/github/owner/repo", title: "Bug Fix" ) # Send a message to the agent {:ok, _} = JulesEx.send_message(session["id"], "Make it corgi themed!") # List activities to see responses {:ok, activities} = JulesEx.list_activities(session["id"]) """ # Delegate to submodules for a clean API defdelegate list_sources(opts \\ []), to: JulesEx.Source, as: :list defdelegate get_source(name, opts \\ []), to: JulesEx.Source, as: :get defdelegate create_session(opts), to: JulesEx.Session, as: :create defdelegate list_sessions(opts \\ []), to: JulesEx.Session, as: :list defdelegate get_session(id, opts \\ []), to: JulesEx.Session, as: :get defdelegate approve_plan(session_id, opts \\ []), to: JulesEx.Session, as: :approve_plan defdelegate send_message(session_id, prompt, opts \\ []), to: JulesEx.Session, as: :send_message defdelegate list_activities(session_id, opts \\ []), to: JulesEx.Activity, as: :list defdelegate get_activity(session_id, activity_id, opts \\ []), to: JulesEx.Activity, as: :get end