Metadata-Version: 2.4
Name: logicore
Version: 1.0.3
Summary: A modular, multi-provider AI agent framework for building intelligent tool-using agents with Gemini, Groq, Ollama, Azure OpenAI, and Anthropic.
Author-email: RudraModi360 <rudramodi360@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/RudraModi360/Agentry
Project-URL: Documentation, https://rudramodi360.github.io/Agentry/
Project-URL: Repository, https://github.com/RudraModi360/Agentry
Project-URL: Bug Tracker, https://github.com/RudraModi360/Agentry/issues
Project-URL: Changelog, https://github.com/RudraModi360/Agentry/blob/main/deploy/CHANGELOG.md
Keywords: AI agents,LLM framework,tool-use,function-calling,MCP,multi-provider,Gemini,Groq,Ollama,Azure OpenAI,Anthropic,AI copilot,agentic AI,smart agents,model context protocol,logicore
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Operating System :: OS Independent
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic>=2.0
Requires-Dist: requests>=2.28
Requires-Dist: python-dotenv>=1.0
Provides-Extra: gemini
Requires-Dist: google-genai>=1.0; extra == "gemini"
Provides-Extra: groq
Requires-Dist: groq>=0.4; extra == "groq"
Provides-Extra: ollama
Requires-Dist: ollama>=0.1; extra == "ollama"
Provides-Extra: azure
Requires-Dist: openai>=1.0; extra == "azure"
Requires-Dist: httpx>=0.24; extra == "azure"
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.20; extra == "anthropic"
Provides-Extra: mcp
Requires-Dist: mcp>=0.9; extra == "mcp"
Provides-Extra: tools
Requires-Dist: pypdf>=3.0; extra == "tools"
Requires-Dist: python-docx>=0.8; extra == "tools"
Requires-Dist: python-pptx>=1.0; extra == "tools"
Requires-Dist: openpyxl>=3.0; extra == "tools"
Requires-Dist: playwright>=1.49; extra == "tools"
Provides-Extra: reloader
Requires-Dist: watchdog>=3.0; extra == "reloader"
Provides-Extra: all
Requires-Dist: google-genai>=1.0; extra == "all"
Requires-Dist: groq>=0.4; extra == "all"
Requires-Dist: ollama>=0.1; extra == "all"
Requires-Dist: openai>=1.0; extra == "all"
Requires-Dist: httpx>=0.24; extra == "all"
Requires-Dist: anthropic>=0.20; extra == "all"
Requires-Dist: mcp>=0.9; extra == "all"
Requires-Dist: pypdf>=3.0; extra == "all"
Requires-Dist: python-docx>=0.8; extra == "all"
Requires-Dist: python-pptx>=1.0; extra == "all"
Requires-Dist: openpyxl>=3.0; extra == "all"
Requires-Dist: playwright>=1.49; extra == "all"
Requires-Dist: watchdog>=3.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"
Dynamic: license-file

# Logicore AI Framework

![Logicore Banner](logicore/artifacts/image-removebg-preview%20(2).png)

[![Documentation](https://img.shields.io/badge/Docs-Live-blue.svg)](https://rudramodi360.github.io/Agentry/) [![Discord](https://img.shields.io/badge/Discord-Join-7289DA.svg)](https://discord.gg/Yz8yFzgQ)

**Logicore** is a powerful Python framework designed for building intelligent, multi-provider AI agents. Whether you're running local open-source models via Ollama or connecting to cloud models like Gemini and OpenAI, Logicore provides a unified, transparent, and highly robust interface without vendor lock-in.

---

## 🌟 Key Features

* **Unified Multi-Provider Architecture:** Switch between LLM backends (Ollama, Gemini, OpenAI, Groq) seamlessly. Your agent logic and tool schemas remain completely unchanged.
* **Native Streaming & Reasoning Extraction:** Advanced streaming support that pulls hidden `<think>` reasoning tokens from local models (like `qwen3.5:0.8b` and DeepSeek series) so your UI updates in real-time before tools execute.
* **First-Class Tooling:** Turn any Python function into an LLM tool automatically. Logicore parses type hints and docstrings into JSON schemas, supports `**kwargs` for hallucination-resilience, and safely reflects execution errors back to the model.
* **Built-in Cron Job Scheduler:** Endow your agents with temporal awareness. Agents can natively schedule, manage, and execute automated background tasks without external infrastructure.
* **Persistent Memory & RAG:** Equip agents with long-term conversational memory and semantic vector search so they never lose context across sessions.
* **Built-in Skills & Copilot:** Pre-packaged skill sets (Web Research, Code Review, File Manipulation) and a ready-to-use `CopilotAgent` for instant productivity.

---

## 🚀 Quickstart

Get an intelligent, tool-enabled agent running locally in two minutes.

### 1. Install Logicore
```bash
pip install logicore
```

### 2. Run your first Agent
Make sure you have [Ollama](https://ollama.com) installed and a model pulled (`ollama run qwen3.5:0.8b`).

```python
import asyncio
from logicore.providers.ollama_provider import OllamaProvider
from logicore.agents.agent import Agent

# 1. Define a robust custom tool
def check_weather(location: str, **kwargs) -> str:
    """Checks the current weather for a specific location."""
    if "seattle" in location.lower():
        return "72°F and sunny."
    return "65°F and cloudy."

async def main():
    # 2. Initialize provider and agent
    provider = OllamaProvider(model_name="qwen3.5:0.8b")
    
    agent = Agent(
        llm=provider,
        role="Weather Assistant",
        system_message="Use the provided tools to answer user questions accurately.",
        tools=[check_weather],
        debug=True
    )
    
    # 3. Stream the execution live
    def on_token(token):
        print(token, end="", flush=True)

    print("Agent is thinking...\n")
    response = await agent.chat(
        "What's the weather like in Seattle today?", 
        callbacks={"on_token": on_token},
        stream=True
    )
    
    print("\n\nFinal Output:", response['content'])

if __name__ == "__main__":
    asyncio.run(main())
```

---

## 📚 Documentation
Comprehensive documentation for Logicore is available via our official site. It includes deep dives into Agents, Providers, Skills, Custom Tool guidelines, and a full API Reference.

👉 **[Read the Official Documentation here](https://rudramodi360.github.io/Agentry/)**

---

## 🤝 Community & Contributions
* **Discord:** Join our official server to connect with other developers: [Logicore Discord](https://discord.gg/Yz8yFzgQ)
* **Contributing:** We welcome all contributions! Please see our [Contributing Guidelines](docs/contributing.md) to get started.

---
*Built with ❤️ for multi-provider agentic workflows.*
