From f7c3789f469470d8bc3ba5f5332316b63c7c5b0d Mon Sep 17 00:00:00 2001 From: Claw Argus Date: Wed, 15 Apr 2026 23:36:44 +0700 Subject: [PATCH] Deploy Claw Argus --- .gitignore | Bin 0 -> 255 bytes LICENSE | 21 + README.md | 285 +++++++++++++ argus_agent.py | 1038 ++++++++++++++++++++++++++++++++++++++++++++++++ argus_logo.jpg | Bin 0 -> 121827 bytes 5 files changed, 1344 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 argus_agent.py create mode 100644 argus_logo.jpg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..11af295b161132a5c5549920cd03850cd28aecaf GIT binary patch literal 255 zcmYjMO>4t24AoiC{}5nhfA)}WvjAN^bOKKa-?#REN(p`3WybtLKZM(}- zrxekcyg2J7GDhQG<>ls*|Hl0;FUrl9Sxim>G>#u3-jhZjxN00)nEkpU0phm1hEkiI zJBqJRQhZXZj4x3dl_07=E|aIjQ54G^k}P<#YYqS8H>S1h+@m`5rmv|GeogH;u=2y2 oe2!AwakZ7uma(yUbM;_(#uMd2F2(<*0tYi#XyAcB!v+w30Ug3lKL7v# literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4233255 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 ARGUS Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..35b37ec --- /dev/null +++ b/README.md @@ -0,0 +1,285 @@ +

+ ARGUS Agent Banner +

+ +

πŸ‘οΈ Claw Argus

+ +

+ The All-Seeing Research & Intelligence System +

+ +

+ Named after Argus Panoptes β€” the hundred-eyed guardian of Greek mythology +

+ +

+ Python 3.10+ + Swarms Framework + MIT License + Swarms Marketplace +

+ +

+ Features β€’ + Quick Start β€’ + Tools β€’ + Methodology β€’ + Use Cases β€’ + Examples +

+ +--- + +## 🧠 What is CLAW ARGUS? + +**CLAW ARGUS** is an enterprise-grade, autonomous AI research agent built on the [Swarms](https://github.com/kyegomez/swarms) framework. It performs multi-layered investigations across the web, cross-validates findings, detects bias, extracts structured entities, and generates professional intelligence reports β€” all autonomously. + +Think of it as your personal **100-eyed research analyst** that never sleeps, never gets tired, and processes information from multiple sources simultaneously. + +> πŸ’‘ **One prompt in β†’ Comprehensive intelligence report out.** + +--- + +## ✨ Features + + + + + + +
+ +### πŸ” Multi-Engine Search +Searches across **DuckDuckGo**, **Wikipedia**, and **Wikidata** simultaneously for maximum coverage + +### 🧬 Entity Extraction +Regex-based NER pulls out **people, organizations, dates, monetary values, percentages, emails, and URLs** + +### πŸ›‘οΈ Bias Detection +Scans for **loaded language, hedging, absolutist claims, and emotional manipulation** in sources + + + +### βš–οΈ Cross-Validation +**Jaccard similarity** + **contradiction detection** to verify claims across multiple sources + +### πŸ“Š Deep Analysis +**Sentiment scoring, bigram extraction, readability metrics, and thematic classification** across 6 domains + +### πŸ“‹ Report Generation +Structured intelligence reports with **confidence scoring, risk assessment, and exportable Markdown** + +
+ +### πŸ—οΈ Infrastructure + +- ⚑ **In-memory caching** with 5-minute TTL β€” no redundant API calls +- πŸ”„ **Retry with exponential backoff** β€” resilient against transient failures +- 🧩 **7 modular tools** β€” each independently testable and extensible +- πŸ“¦ **Minimal dependencies** β€” only `requests` + `swarms` + +--- + +## πŸš€ Quick Start + +### Prerequisites + +- Python 3.10+ +- An OpenAI API key (or any LLM provider supported by Swarms) + +### Installation + +```bash +# Clone the repository +git clone https://github.com/ARGURAIgent/Claw-Argus.git +cd ARGURAI + +# Install dependencies +pip install -U swarms requests + +# Set your API key +export OPENAI_API_KEY="your-key-here" # Linux/Mac +set OPENAI_API_KEY=your-key-here # Windows CMD +$env:OPENAI_API_KEY="your-key-here" # PowerShell +``` + +### Run + +```bash +# Run with default research task +python argus_agent.py + +# Run with custom task +python argus_agent.py "Analyze the impact of AI regulations in the EU in 2025" +``` + +--- + +## πŸ”§ Tools + +ARGUS comes equipped with **7 specialized tools** the agent invokes autonomously: + +| # | Tool | Description | +|---|------|-------------| +| 1 | `web_search` | Multi-engine search across DuckDuckGo, Wikipedia, and Wikidata with caching | +| 2 | `fetch_url_content` | Deep content extraction with HTML stripping, structural analysis, and deduplication | +| 3 | `wikipedia_summary` | Dedicated Wikipedia deep-dive with categories, metadata, and reliability assessment | +| 4 | `extract_entities` | Regex-based NER: people/orgs, dates, money, percentages, emails, URLs | +| 5 | `analyze_text` | Sentiment + bias detection + bigrams + readability + thematic classification | +| 6 | `compare_sources` | Jaccard similarity, shared/unique terms, contradiction detection | +| 7 | `generate_report` | Structured reports with metadata, risks, recommendations, and Markdown export | + +--- + +## πŸ“ Methodology + +ARGUS follows the **DRIVAS** protocol for every research task: + +``` +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ DECOMPOSE │────▢│ RESEARCH │────▢│ IDENTIFY β”‚ +β”‚ Break query β”‚ β”‚ Multi-engineβ”‚ β”‚ Extract β”‚ +β”‚ into 3-6 β”‚ β”‚ search + β”‚ β”‚ entities & β”‚ +β”‚ sub-tasks β”‚ β”‚ deep fetch β”‚ β”‚ key data β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β–Ό +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ VALIDATE │────▢│ ANALYZE │────▢│ SYNTHESIZE β”‚ +β”‚ Cross-ref β”‚ β”‚ Sentiment, β”‚ β”‚ Generate β”‚ +β”‚ sources + β”‚ β”‚ bias, and β”‚ β”‚ final β”‚ +β”‚ detect bias β”‚ β”‚ themes β”‚ β”‚ report β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +### Information Quality Hierarchy + +Sources are prioritized by reliability: + +``` +🟒 Official/government sources β†’ HIGHEST +🟒 Peer-reviewed/academic β†’ HIGH +🟑 Established news outlets β†’ MEDIUM-HIGH +🟑 Wikipedia β†’ MEDIUM +🟠 Industry blogs/reports β†’ MEDIUM +πŸ”΄ Social media/forums β†’ LOW +``` + +--- + +## πŸ’Ό Use Cases + +### πŸ“ˆ Market Research & Competitive Intelligence +Analyze competitors, market trends, and emerging opportunities. ARGUS searches 3 engines, extracts entities (companies, revenue, dates), detects bias, cross-validates findings, and generates reports with confidence scoring. + +### πŸ›‘οΈ Threat Intelligence & OSINT Analysis +Monitor security threats and vulnerabilities from public sources. ARGUS aggregates OSINT data, detects contradictions between sources, assesses reliability, and produces structured threat reports with recommendations. + +### πŸ“š Academic & Technical Research +Conduct literature reviews and technical deep-dives. ARGUS decomposes research questions, gathers information from authoritative sources, validates findings, and synthesizes structured reports with full source attribution. + +--- + +## πŸ“ Examples + +### Basic Usage + +```python +from argus_agent import argus_agent + +# Run a research task +result = argus_agent.run( + "What are the latest developments in quantum computing? " + "Who are the key players and what are the risks?" +) + +print(result) +``` + +### Using Individual Tools + +```python +from deeprecon_agent import web_search, analyze_text, extract_entities + +# Search the web +results = web_search("autonomous AI agents 2025") +print(results) + +# Analyze text for sentiment and bias +analysis = analyze_text("The revolutionary AI breakthrough will transform everything...") +print(analysis) + +# Extract entities from text +entities = extract_entities("OpenAI raised $6.6 billion in October 2024...") +print(entities) +``` + +### Sample Report Output + +```json +{ + "report_metadata": { + "report_id": "AR-4F8A2C1B3D9E", + "title": "Autonomous AI Agents: 2025 Landscape", + "confidence_level": "HIGH", + "agent_version": "ARGUS v2.0.0", + "methodology": "Multi-Source Open Intelligence (MOSINT)" + }, + "executive_summary": "...", + "detailed_findings": "...", + "key_risks": ["..."], + "recommendations": ["..."], + "sources_consulted": ["..."], + "markdown_export": "..." +} +``` + +--- + +## πŸ“ Project Structure + +``` +ARGURAI/ +β”œβ”€β”€ argus_agent.py # Main agent implementation (all tools + agent config) +β”œβ”€β”€ argus_logo.jpg # Agent marketplace image (800Γ—800) +β”œβ”€β”€ README.md # This file +β”œβ”€β”€ LICENSE # MIT License +└── .gitignore # Git ignore rules +``` + +--- + +## 🀝 Contributing + +Contributions are welcome! Feel free to: + +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/new-tool`) +3. Commit your changes (`git commit -m 'Add new tool: xyz'`) +4. Push to the branch (`git push origin feature/new-tool`) +5. Open a Pull Request + +--- + +## πŸ“„ License + +This project is licensed under the **MIT License** β€” see the [LICENSE](LICENSE) file for details. + +--- + +## πŸ”— Links + +- **Swarms Marketplace:** [swarms.world](https://swarms.world) +- **Swarms Framework:** [github.com/kyegomez/swarms](https://github.com/kyegomez/swarms) +- **Documentation:** [docs.swarms.world](https://docs.swarms.world) + +--- + +

+ πŸ‘οΈ ARGUS sees everything. You miss nothing. +

+ +

+ Built with ❀️ by ARGUS Labs β€” Powered by the Swarms Framework +

diff --git a/argus_agent.py b/argus_agent.py new file mode 100644 index 0000000..0669046 --- /dev/null +++ b/argus_agent.py @@ -0,0 +1,1038 @@ +""" +ARGUS Agent β€” The All-Seeing Research & Intelligence System v2.0 + +An enterprise-grade autonomous agent that performs multi-layered research, +cross-validates information across sources, extracts structured entities, +detects bias, and generates comprehensive intelligence reports with +confidence scoring, source attribution, and exportable markdown output. + +Named after Argus Panoptes, the all-seeing giant of Greek mythology. +Built on the Swarms framework for production-ready agent orchestration. + +Author: ARGUS Labs +Version: 2.0.0 +License: MIT +""" + +import os +import re +import json +import hashlib +import requests +import time +import functools +from collections import Counter +from typing import Dict, List, Optional, Any, Callable +from datetime import datetime, timezone +from swarms import Agent + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# UTILITIES β€” Caching, retries, and shared helpers +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +_CACHE: Dict[str, Any] = {} +_CACHE_TTL = 300 # 5 minutes + + +def _cache_key(prefix: str, *args: Any) -> str: + """Generate a deterministic cache key from arguments.""" + raw = f"{prefix}:{'|'.join(str(a) for a in args)}" + return hashlib.md5(raw.encode()).hexdigest() + + +def _get_cached(key: str) -> Optional[Any]: + """Return cached value if it exists and hasn't expired.""" + if key in _CACHE: + entry = _CACHE[key] + if time.time() - entry["ts"] < _CACHE_TTL: + return entry["value"] + del _CACHE[key] + return None + + +def _set_cached(key: str, value: Any) -> None: + """Store a value in the cache with current timestamp.""" + _CACHE[key] = {"value": value, "ts": time.time()} + + +def _retry(max_attempts: int = 3, delay: float = 1.0): + """Decorator: retry a function on exception with exponential backoff.""" + def decorator(func: Callable) -> Callable: + @functools.wraps(func) + def wrapper(*args, **kwargs): + last_err = None + for attempt in range(max_attempts): + try: + return func(*args, **kwargs) + except Exception as e: + last_err = e + if attempt < max_attempts - 1: + time.sleep(delay * (2 ** attempt)) + raise last_err # type: ignore + return wrapper + return decorator + + +_HEADERS = { + "User-Agent": ( + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/124.0.0.0 Safari/537.36" + ) +} + +_STOP_WORDS = frozenset({ + "the", "a", "an", "is", "are", "was", "were", "be", "been", "being", + "have", "has", "had", "do", "does", "did", "will", "would", "could", + "should", "may", "might", "can", "shall", "to", "of", "in", "for", + "on", "with", "at", "by", "from", "as", "into", "through", "during", + "before", "after", "and", "but", "or", "nor", "not", "so", "yet", + "both", "either", "neither", "this", "that", "these", "those", "it", + "its", "i", "me", "my", "we", "our", "you", "your", "he", "she", + "him", "her", "his", "they", "them", "their", "what", "which", "who", + "whom", "where", "when", "why", "how", "all", "each", "every", "any", + "few", "more", "most", "other", "some", "such", "no", "only", "own", + "same", "than", "too", "very", "just", "about", "also", "then", + "been", "being", "here", "there", "above", "below", "between", +}) + + +def _clean_html(raw_html: str) -> str: + """Strip HTML to plain text.""" + text = re.sub(r"]*>.*?", "", raw_html, flags=re.DOTALL) + text = re.sub(r"]*>.*?", "", text, flags=re.DOTALL) + text = re.sub(r"<[^>]+>", " ", text) + text = re.sub(r"\s+", " ", text).strip() + return text + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 1 β€” Multi-Engine Web Search +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def web_search(query: str, num_results: int = 8) -> str: + """ + Perform a multi-engine web search across DuckDuckGo, Wikipedia, + and Wikidata to gather diverse, structured results. + + Uses in-memory caching to avoid redundant requests for the same query. + Includes automatic retry with exponential backoff on transient failures. + + Args: + query (str): The search query to execute. + num_results (int): Maximum results per engine (default: 8). + + Returns: + str: JSON string containing aggregated search results with titles, + URLs, snippets, source engine, and relevance scoring. + """ + ck = _cache_key("search", query, num_results) + cached = _get_cached(ck) + if cached: + return cached + + results: List[Dict[str, Any]] = [] + engines_ok: List[str] = [] + + # ── DuckDuckGo Instant Answer API ────────────────────────────────── + try: + ddg_resp = requests.get( + "https://api.duckduckgo.com/", + params={"q": query, "format": "json", "no_html": 1, "skip_disambig": 1}, + headers={"User-Agent": "ARGUS/2.0"}, + timeout=10, + ) + ddg = ddg_resp.json() + engines_ok.append("DuckDuckGo") + + if ddg.get("Abstract"): + results.append({ + "title": ddg.get("Heading", "Summary"), + "url": ddg.get("AbstractURL", ""), + "snippet": ddg["Abstract"], + "source": ddg.get("AbstractSource", "DuckDuckGo"), + "relevance": "high", + }) + + for topic in ddg.get("RelatedTopics", [])[:num_results]: + if isinstance(topic, dict) and "Text" in topic: + results.append({ + "title": topic.get("Text", "")[:120], + "url": topic.get("FirstURL", ""), + "snippet": topic.get("Text", ""), + "source": "DuckDuckGo", + "relevance": "medium", + }) + # Handle sub-topics (nested groups) + elif isinstance(topic, dict) and "Topics" in topic: + for sub in topic["Topics"][:3]: + if "Text" in sub: + results.append({ + "title": sub.get("Text", "")[:120], + "url": sub.get("FirstURL", ""), + "snippet": sub.get("Text", ""), + "source": "DuckDuckGo", + "relevance": "medium", + }) + except Exception as e: + results.append({"error": f"DuckDuckGo: {e}"}) + + # ── Wikipedia Search API ─────────────────────────────────────────── + try: + wiki_resp = requests.get( + "https://en.wikipedia.org/w/api.php", + params={ + "action": "query", "list": "search", + "srsearch": query, "srlimit": min(num_results, 5), + "format": "json", + }, + headers={"User-Agent": "ARGUS/2.0"}, + timeout=10, + ) + wiki = wiki_resp.json() + engines_ok.append("Wikipedia") + + for item in wiki.get("query", {}).get("search", []): + snippet = re.sub(r"<[^>]+>", "", item.get("snippet", "")) + results.append({ + "title": item.get("title", ""), + "url": f"https://en.wikipedia.org/wiki/{item['title'].replace(' ', '_')}", + "snippet": snippet, + "source": "Wikipedia", + "relevance": "high", + "word_count": item.get("wordcount", 0), + }) + except Exception as e: + results.append({"error": f"Wikipedia: {e}"}) + + # ── Wikidata Entity Search ───────────────────────────────────────── + try: + wd_resp = requests.get( + "https://www.wikidata.org/w/api.php", + params={ + "action": "wbsearchentities", "search": query, + "language": "en", "limit": min(num_results, 3), + "format": "json", + }, + headers={"User-Agent": "ARGUS/2.0"}, + timeout=8, + ) + wd = wd_resp.json() + engines_ok.append("Wikidata") + + for ent in wd.get("search", []): + results.append({ + "title": ent.get("label", ""), + "url": ent.get("concepturi", ""), + "snippet": ent.get("description", ""), + "source": "Wikidata", + "relevance": "medium", + "entity_id": ent.get("id", ""), + }) + except Exception as e: + results.append({"error": f"Wikidata: {e}"}) + + output = json.dumps({ + "query": query, + "results_count": len([r for r in results if "error" not in r]), + "errors": [r for r in results if "error" in r], + "results": [r for r in results if "error" not in r], + "engines_used": engines_ok, + "timestamp": datetime.now(timezone.utc).isoformat(), + }, indent=2) + + _set_cached(ck, output) + return output + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 2 β€” Deep Content Extraction +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def fetch_url_content(url: str, max_chars: int = 8000) -> str: + """ + Fetch and extract clean text content from a URL with smart truncation. + + Strips HTML, scripts, styles, and navigation boilerplate. Returns content + with a SHA-256 fingerprint for deduplication and a structural summary + (title, headings count, link count). + + Args: + url (str): The URL to fetch content from. + max_chars (int): Maximum characters to return (default: 8000). + + Returns: + str: JSON with extracted text, metadata, and structural analysis. + """ + ck = _cache_key("url", url, max_chars) + cached = _get_cached(ck) + if cached: + return cached + + try: + resp = requests.get(url, headers=_HEADERS, timeout=15, allow_redirects=True) + resp.raise_for_status() + raw = resp.text + + # Extract title + title_match = re.search(r"]*>(.*?)", raw, re.DOTALL | re.IGNORECASE) + title = _clean_html(title_match.group(1)).strip() if title_match else "" + + # Count structural elements + headings = len(re.findall(r"]*>", raw, re.IGNORECASE)) + links = len(re.findall(r"]*href=", raw, re.IGNORECASE)) + + # Extract meta description + meta_match = re.search( + r']*name=["\']description["\'][^>]*content=["\'](.*?)["\']', + raw, re.IGNORECASE + ) + meta_desc = meta_match.group(1).strip() if meta_match else "" + + text = _clean_html(raw) + content_hash = hashlib.sha256(text.encode()).hexdigest()[:16] + + output = json.dumps({ + "url": url, + "title": title, + "meta_description": meta_desc, + "content": text[:max_chars], + "content_length": len(text), + "truncated": len(text) > max_chars, + "content_hash": content_hash, + "structure": { + "headings_count": headings, + "links_count": links, + }, + "status_code": resp.status_code, + "final_url": resp.url, # After redirects + "timestamp": datetime.now(timezone.utc).isoformat(), + }, indent=2) + + _set_cached(ck, output) + return output + + except Exception as e: + return json.dumps({"error": str(e), "url": url}) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 3 β€” Entity Extraction +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def extract_entities(text: str) -> str: + """ + Extract structured entities from text using pattern matching. + + Identifies and categorizes: people/organizations (capitalized phrases), + dates, monetary values, percentages, email addresses, URLs, and + numerical statistics. Returns deduplicated, frequency-ranked results. + + Args: + text (str): The text to extract entities from. + + Returns: + str: JSON with categorized entities, their frequencies, + and extraction confidence scores. + """ + entities: Dict[str, List[str]] = { + "organizations_or_people": [], + "dates": [], + "monetary_values": [], + "percentages": [], + "emails": [], + "urls": [], + "numbers_with_context": [], + } + + # Capitalized multi-word phrases (likely names or orgs) + cap_phrases = re.findall(r"\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)+)\b", text) + entities["organizations_or_people"] = cap_phrases + + # Dates (various formats) + date_patterns = [ + r"\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b", + r"\b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*\.?\s+\d{1,2},?\s+\d{4}\b", + r"\b\d{4}[/-]\d{2}[/-]\d{2}\b", + r"\b(?:January|February|March|April|May|June|July|August|September|October|November|December)\s+\d{4}\b", + r"\bQ[1-4]\s+\d{4}\b", + ] + for pat in date_patterns: + entities["dates"].extend(re.findall(pat, text, re.IGNORECASE)) + + # Money + entities["monetary_values"] = re.findall( + r"\$[\d,]+(?:\.\d{1,2})?(?:\s*(?:billion|million|trillion|B|M|T))?", text + ) + + # Percentages + entities["percentages"] = re.findall(r"\d+(?:\.\d+)?%", text) + + # Emails + entities["emails"] = re.findall(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", text) + + # URLs + entities["urls"] = re.findall(r"https?://[^\s<>\"']+", text) + + # Numbers with surrounding context (e.g., "150 employees", "3.5 billion") + entities["numbers_with_context"] = re.findall( + r"\b(\d[\d,]*(?:\.\d+)?\s+(?:million|billion|trillion|thousand|percent|" + r"users|employees|customers|companies|countries|years|months|days))\b", + text, re.IGNORECASE + ) + + # Deduplicate and count frequencies + summary: Dict[str, Any] = {} + total_entities = 0 + for category, items in entities.items(): + counter = Counter(items) + ranked = counter.most_common(15) + summary[category] = { + "count": len(set(items)), + "items": [{"value": v, "frequency": f} for v, f in ranked], + } + total_entities += len(set(items)) + + return json.dumps({ + "total_unique_entities": total_entities, + "entities": summary, + "text_length": len(text), + "timestamp": datetime.now(timezone.utc).isoformat(), + }, indent=2) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 4 β€” Advanced Text Analysis (Sentiment + Bias + Themes) +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def analyze_text(text: str) -> str: + """ + Perform multi-dimensional text analysis: sentiment scoring, bias + detection, key-term extraction (TF-weighted), readability metrics, + and thematic categorization. + + The bias detector scans for loaded language, hedging terms, and + absolutist phrasing that may indicate partisan or unreliable content. + + Args: + text (str): The text to analyze. + + Returns: + str: JSON with sentiment, bias indicators, key terms, + readability stats, and thematic classification. + """ + text_lower = text.lower() + words = text_lower.split() + + # ── Sentiment ────────────────────────────────────────────────────── + pos_lex = { + "good", "great", "excellent", "positive", "growth", "success", + "innovative", "breakthrough", "advantage", "opportunity", "strong", + "bullish", "upgrade", "profit", "gain", "improve", "optimistic", + "promising", "remarkable", "outstanding", "leading", "advanced", + "efficient", "revolutionary", "transformative", "powerful", + "surging", "thriving", "exceptional", "superior", "impressive", + } + neg_lex = { + "bad", "poor", "negative", "decline", "failure", "risk", "threat", + "loss", "crash", "bearish", "downgrade", "concern", "warning", + "danger", "vulnerability", "weak", "pessimistic", "problematic", + "controversial", "challenging", "critical", "unstable", "uncertain", + "volatile", "disruption", "scandal", "fraud", "collapse", "crisis", + } + + pos_hits = [w for w in words if w in pos_lex] + neg_hits = [w for w in words if w in neg_lex] + total = len(pos_hits) + len(neg_hits) + + if total == 0: + sentiment, confidence = "neutral", 0.5 + elif len(pos_hits) > len(neg_hits): + sentiment, confidence = "positive", len(pos_hits) / total + elif len(neg_hits) > len(pos_hits): + sentiment, confidence = "negative", len(neg_hits) / total + else: + sentiment, confidence = "mixed", 0.5 + + # ── Bias Detection ───────────────────────────────────────────────── + bias_indicators = { + "loaded_language": [ + "clearly", "obviously", "undeniably", "unquestionably", + "everyone knows", "it's clear that", "no doubt", + ], + "hedging": [ + "allegedly", "supposedly", "some say", "it is believed", + "rumored", "unconfirmed", "sources say", + ], + "absolutist": [ + "always", "never", "impossible", "guaranteed", + "without exception", "the only", "the best", + ], + "emotional": [ + "outrageous", "shocking", "devastating", "incredible", + "amazing", "horrifying", "unbelievable", "bombshell", + ], + } + + bias_flags: Dict[str, List[str]] = {} + bias_score = 0 + for category, terms in bias_indicators.items(): + found = [t for t in terms if t in text_lower] + if found: + bias_flags[category] = found + bias_score += len(found) + + if bias_score == 0: + bias_level = "LOW" + elif bias_score <= 3: + bias_level = "MODERATE" + else: + bias_level = "HIGH" + + # ── Key Terms (TF-weighted) ──────────────────────────────────────── + word_freq: Dict[str, int] = {} + for w in words: + clean = re.sub(r"[^a-z]", "", w) + if clean and len(clean) > 3 and clean not in _STOP_WORDS: + word_freq[clean] = word_freq.get(clean, 0) + 1 + + top_terms = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)[:20] + + # ── Bigrams ──────────────────────────────────────────────────────── + bigram_freq: Dict[str, int] = {} + clean_words = [re.sub(r"[^a-z]", "", w) for w in words] + clean_words = [w for w in clean_words if w and len(w) > 2 and w not in _STOP_WORDS] + for i in range(len(clean_words) - 1): + bg = f"{clean_words[i]} {clean_words[i+1]}" + bigram_freq[bg] = bigram_freq.get(bg, 0) + 1 + top_bigrams = sorted(bigram_freq.items(), key=lambda x: x[1], reverse=True)[:10] + + # ── Readability ──────────────────────────────────────────────────── + sentences = [s.strip() for s in re.split(r"[.!?]+", text) if s.strip()] + sentence_count = len(sentences) + avg_sent_len = len(words) / max(sentence_count, 1) + avg_word_len = sum(len(w) for w in words) / max(len(words), 1) + + # Simple Flesch-like score (higher = easier to read) + readability_score = max(0, min(100, 206.835 - 1.015 * avg_sent_len - 84.6 * (avg_word_len / 5))) + + # ── Theme Detection ──────────────────────────────────────────────── + theme_keywords = { + "technology": {"ai", "software", "digital", "tech", "algorithm", "data", "computing", "cloud", "machine", "learning"}, + "finance": {"market", "stock", "trading", "investment", "revenue", "profit", "financial", "banking", "economy", "gdp"}, + "politics": {"government", "policy", "election", "political", "legislation", "congress", "senate", "vote", "democrat", "republican"}, + "science": {"research", "study", "experiment", "theory", "scientific", "hypothesis", "evidence", "peer", "published", "journal"}, + "health": {"health", "medical", "disease", "treatment", "patient", "clinical", "drug", "therapy", "hospital", "diagnosis"}, + "security": {"security", "cyber", "threat", "vulnerability", "attack", "breach", "malware", "encryption", "defense", "risk"}, + } + + word_set = set(words) + themes: Dict[str, float] = {} + for theme, kws in theme_keywords.items(): + overlap = len(word_set & kws) + if overlap > 0: + themes[theme] = round(overlap / len(kws), 3) + + detected_themes = sorted(themes.items(), key=lambda x: x[1], reverse=True) + + return json.dumps({ + "sentiment": { + "label": sentiment, + "confidence": round(confidence, 3), + "positive_signals": len(pos_hits), + "negative_signals": len(neg_hits), + "positive_terms": list(set(pos_hits))[:10], + "negative_terms": list(set(neg_hits))[:10], + }, + "bias_analysis": { + "bias_level": bias_level, + "bias_score": bias_score, + "indicators": bias_flags, + }, + "key_terms": [{"term": t, "frequency": f} for t, f in top_terms], + "key_bigrams": [{"bigram": b, "frequency": f} for b, f in top_bigrams], + "themes_detected": [{"theme": t, "strength": s} for t, s in detected_themes], + "readability": { + "score": round(readability_score, 1), + "avg_sentence_length": round(avg_sent_len, 1), + "avg_word_length": round(avg_word_len, 1), + "level": "easy" if readability_score > 60 else "moderate" if readability_score > 30 else "complex", + }, + "statistics": { + "word_count": len(words), + "sentence_count": sentence_count, + "unique_words": len(set(words)), + "lexical_diversity": round(len(set(words)) / max(len(words), 1), 3), + }, + "timestamp": datetime.now(timezone.utc).isoformat(), + }, indent=2) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 5 β€” Cross-Source Comparison & Validation +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def compare_sources(source_a: str, source_b: str) -> str: + """ + Cross-validate information from two sources using semantic overlap, + contradiction detection, and n-gram analysis. + + Computes Jaccard similarity, identifies shared key terms, + unique claims, and produces a reliability assessment. + + Args: + source_a (str): Text content from the first source. + source_b (str): Text content from the second source. + + Returns: + str: JSON with agreement level, overlap ratio, shared/unique terms, + contradiction indicators, and reliability verdict. + """ + def _meaningful_words(text: str) -> set: + return { + re.sub(r"[^a-z0-9]", "", w) + for w in text.lower().split() + if len(re.sub(r"[^a-z0-9]", "", w)) > 3 + and re.sub(r"[^a-z0-9]", "", w) not in _STOP_WORDS + } + + words_a = _meaningful_words(source_a) + words_b = _meaningful_words(source_b) + + overlap = words_a & words_b + union = words_a | words_b + jaccard = len(overlap) / max(len(union), 1) + + unique_a = words_a - words_b + unique_b = words_b - words_a + + # Contradiction detection: look for negation patterns + contradiction_patterns = [ + (r"is\s+not", r"\bis\b"), + (r"does\s+not", r"\bdoes\b"), + (r"never", r"always"), + (r"increase", r"decrease"), + (r"growth", r"decline"), + (r"success", r"failure"), + (r"true", r"false"), + ] + contradictions_found = [] + a_lower, b_lower = source_a.lower(), source_b.lower() + for pat_a, pat_b in contradiction_patterns: + if re.search(pat_a, a_lower) and re.search(pat_b, b_lower): + contradictions_found.append(f"Source A uses '{pat_a}' while Source B uses '{pat_b}'") + if re.search(pat_b, a_lower) and re.search(pat_a, b_lower): + contradictions_found.append(f"Source A uses '{pat_b}' while Source B uses '{pat_a}'") + + if jaccard > 0.5: + level, reliability = "HIGH", "Sources strongly corroborate each other" + elif jaccard > 0.25: + level, reliability = "MODERATE", "Sources partially agree with unique perspectives" + else: + level, reliability = "LOW", "Sources diverge significantly β€” further verification needed" + + if contradictions_found: + reliability += f" ⚠️ {len(contradictions_found)} potential contradiction(s) detected" + + return json.dumps({ + "agreement_level": level, + "jaccard_similarity": round(jaccard, 3), + "shared_key_terms": sorted(list(overlap))[:25], + "unique_to_source_a": sorted(list(unique_a))[:20], + "unique_to_source_b": sorted(list(unique_b))[:20], + "contradictions": contradictions_found, + "reliability_assessment": reliability, + "recommendation": ( + "Cross-reference with additional sources" + if level == "LOW" or contradictions_found + else "Findings appear consistent" + ), + "timestamp": datetime.now(timezone.utc).isoformat(), + }, indent=2) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 6 β€” Structured Intelligence Report Generator +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def generate_report( + title: str, + executive_summary: str, + detailed_findings: str, + sources: str, + confidence_level: str = "medium", + key_risks: str = "", + recommendations: str = "", +) -> str: + """ + Generate a comprehensive, structured intelligence report with + metadata, risk assessment, and actionable recommendations. + + Produces both a JSON report and an embedded Markdown version + ready for export and stakeholder distribution. + + Args: + title (str): Report title / subject line. + executive_summary (str): 2-3 sentence summary of key findings. + detailed_findings (str): Full detailed findings and analysis. + sources (str): Comma-separated list of sources consulted. + confidence_level (str): 'low', 'medium', or 'high' (default: medium). + key_risks (str): Comma-separated key risks identified (optional). + recommendations (str): Comma-separated recommendations (optional). + + Returns: + str: JSON containing the full report, metadata, and Markdown export. + """ + source_list = [s.strip() for s in sources.split(",") if s.strip()] + risk_list = [r.strip() for r in key_risks.split(",") if r.strip()] if key_risks else [] + rec_list = [r.strip() for r in recommendations.split(",") if r.strip()] if recommendations else [] + + report_id = hashlib.sha256( + f"{title}{datetime.now().isoformat()}".encode() + ).hexdigest()[:12].upper() + + now = datetime.now(timezone.utc).isoformat() + + # Build Markdown version + md_lines = [ + f"# πŸ“‹ {title}", + f"", + f"**Report ID:** DR-{report_id} ", + f"**Generated:** {now} ", + f"**Confidence:** {confidence_level.upper()} ", + f"**Agent:** ARGUS v2.0.0 ", + f"", + f"---", + f"", + f"## Executive Summary", + f"", + executive_summary, + f"", + f"---", + f"", + f"## Detailed Findings", + f"", + detailed_findings, + f"", + ] + + if risk_list: + md_lines.extend([ + f"---", + f"", + f"## ⚠️ Key Risks", + f"", + ]) + for r in risk_list: + md_lines.append(f"- {r}") + md_lines.append("") + + if rec_list: + md_lines.extend([ + f"---", + f"", + f"## πŸ’‘ Recommendations", + f"", + ]) + for r in rec_list: + md_lines.append(f"- {r}") + md_lines.append("") + + md_lines.extend([ + f"---", + f"", + f"## Sources ({len(source_list)})", + f"", + ]) + for i, s in enumerate(source_list, 1): + md_lines.append(f"{i}. {s}") + + md_lines.extend([ + f"", + f"---", + f"", + f"*This report was generated by ARGUS, an autonomous AI research agent. " + f"All findings should be independently verified for critical decisions.*", + ]) + + report = { + "report_metadata": { + "report_id": f"AR-{report_id}", + "title": title, + "generated_at": now, + "classification": "UNCLASSIFIED // FOUO", + "confidence_level": confidence_level.upper(), + "agent_version": "ARGUS v2.0.0", + "methodology": "Multi-Source Open Intelligence (MOSINT)", + }, + "executive_summary": executive_summary, + "detailed_findings": detailed_findings, + "key_risks": risk_list, + "recommendations": rec_list, + "sources_consulted": source_list, + "source_count": len(source_list), + "collection_methods": [ + "Multi-engine web intelligence gathering (DuckDuckGo, Wikipedia, Wikidata)", + "Deep content extraction and parsing", + "Named entity recognition (regex-based NER)", + "Cross-reference validation with Jaccard similarity", + "Sentiment, bias, and thematic analysis", + "Confidence-weighted synthesis", + ], + "markdown_export": "\n".join(md_lines), + "disclaimer": ( + "This report was generated by ARGUS, an autonomous AI research agent. " + "Findings are derived from publicly available sources and should be " + "independently verified before use in critical decision-making." + ), + } + + return json.dumps(report, indent=2) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TOOL 7 β€” Wikipedia Deep Dive +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + +def wikipedia_summary(topic: str, sentences: int = 8) -> str: + """ + Fetch a detailed summary of a Wikipedia article by topic name. + + Uses the Wikipedia REST API to get structured, clean page extracts + with metadata including page ID, description, and content length. + Ideal for quickly building reliable background knowledge on a subject. + + Args: + topic (str): The topic/article title to look up on Wikipedia. + sentences (int): Number of sentences to extract (default: 8, max: 20). + + Returns: + str: JSON with article summary, metadata, and related links. + """ + ck = _cache_key("wiki", topic, sentences) + cached = _get_cached(ck) + if cached: + return cached + + try: + # First, search to find the exact page title + search_resp = requests.get( + "https://en.wikipedia.org/w/api.php", + params={ + "action": "query", "list": "search", + "srsearch": topic, "srlimit": 1, "format": "json", + }, + headers={"User-Agent": "ARGUS/2.0"}, + timeout=10, + ) + search_data = search_resp.json() + search_results = search_data.get("query", {}).get("search", []) + + if not search_results: + return json.dumps({"error": f"No Wikipedia article found for '{topic}'"}) + + page_title = search_results[0]["title"] + + # Fetch the summary + summary_resp = requests.get( + "https://en.wikipedia.org/w/api.php", + params={ + "action": "query", "titles": page_title, + "prop": "extracts|info|categories|pageprops", + "exintro": False, "exsentences": min(sentences, 20), + "explaintext": True, "format": "json", + "inprop": "url", + }, + headers={"User-Agent": "ARGUS/2.0"}, + timeout=10, + ) + pages = summary_resp.json().get("query", {}).get("pages", {}) + page = next(iter(pages.values())) + + # Get categories + categories = [ + c["title"].replace("Category:", "") + for c in page.get("categories", []) + ][:10] + + output = json.dumps({ + "title": page.get("title", topic), + "page_id": page.get("pageid", ""), + "url": page.get("fullurl", f"https://en.wikipedia.org/wiki/{topic.replace(' ', '_')}"), + "summary": page.get("extract", "No extract available"), + "content_length": page.get("length", 0), + "categories": categories, + "last_modified": page.get("touched", ""), + "source": "Wikipedia", + "reliability": "HIGH β€” Wikipedia articles undergo community peer review", + "timestamp": datetime.now(timezone.utc).isoformat(), + }, indent=2) + + _set_cached(ck, output) + return output + + except Exception as e: + return json.dumps({"error": str(e), "topic": topic}) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# SYSTEM PROMPT β€” Agent persona, protocol, and reasoning framework +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +ARGUS_SYSTEM_PROMPT = """ +You are **ARGUS v2.0** β€” named after Argus Panoptes, the all-seeing +guardian of Greek mythology. You are an elite autonomous research and +intelligence-gathering agent. You conduct rigorous, multi-layered +investigations on ANY topic and produce professional intelligence +reports with full source attribution, confidence scoring, and +actionable recommendations. + +You ALWAYS think step-by-step, cite your sources, and flag uncertainty. + +━━━ AVAILABLE TOOLS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +| Tool | Purpose | +|---------------------|------------------------------------------------------| +| web_search | Search DuckDuckGo + Wikipedia + Wikidata | +| fetch_url_content | Extract clean text from any URL | +| wikipedia_summary | Get detailed Wikipedia article summaries | +| extract_entities | Pull out people, dates, money, orgs from text | +| analyze_text | Sentiment + bias + themes + readability analysis | +| compare_sources | Cross-validate two pieces of information | +| generate_report | Create structured intelligence reports with Markdown | + +━━━ OPERATIONAL PROTOCOL (DRIVAS) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Follow this 6-phase methodology for EVERY research task: + +**D β€” DECOMPOSE** +Break the user's query into 3-6 atomic research sub-questions. +Each targets a specific dimension: WHO, WHAT, WHEN, WHERE, WHY, HOW. + +**R β€” RESEARCH** +Execute web_search with varied query formulations for each sub-question. +Use wikipedia_summary for foundational knowledge on key entities. +Fetch full content from the 3-5 most authoritative URLs. + +**I β€” IDENTIFY** +Apply extract_entities to all gathered text to surface key players, +dates, figures, and relationships. Build a mental map of the topic. + +**V β€” VALIDATE** +Use compare_sources to cross-reference findings from different sources. +Use analyze_text to check for bias in each source. +Flag contradictions with ⚠️ and note confidence level. + +**A β€” ANALYZE** +Apply analyze_text to the combined intelligence. Identify trends, +risks, and opportunities. Assess overall sentiment and themes. + +**S β€” SYNTHESIZE** +Compile everything into a final report via generate_report. +Include: executive summary, detailed findings, key risks, +recommendations, and all sources with confidence scoring. + +━━━ OUTPUT STANDARDS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +- βœ… ALWAYS cite sources with URLs +- βœ… Assign confidence: HIGH / MEDIUM / LOW for every claim +- ⚠️ Flag conflicting information with full context +- πŸ“Š Distinguish between FACT, ANALYSIS, and SPECULATION +- πŸ’‘ Provide actionable recommendations +- πŸ“‹ Use clear section headers and structured formatting + +━━━ INFORMATION QUALITY HIERARCHY ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +Prioritize sources in this order: +1. Official/government sources β†’ HIGHEST reliability +2. Peer-reviewed/academic β†’ HIGH reliability +3. Established news outlets β†’ MEDIUM-HIGH reliability +4. Wikipedia β†’ MEDIUM reliability (good for context) +5. Industry blogs/reports β†’ MEDIUM reliability +6. Social media/forums β†’ LOW reliability (corroboration needed) + +━━━ ETHICAL GUIDELINES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +- Only gather publicly available information (OSINT) +- Respect rate limits and fair use policies +- Flag potential misinformation, propaganda, and bias +- Include disclaimers on all reports +- Never fabricate or infer sources/data +- Acknowledge limitations and knowledge gaps explicitly +""" + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# AGENT INITIALIZATION +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +argus_agent = Agent( + agent_name="ARGUS", + agent_description=( + "ARGUS β€” The All-Seeing Research & Intelligence Agent v2.0. " + "Performs multi-engine search (DuckDuckGo, Wikipedia, Wikidata), " + "deep content extraction, entity recognition, sentiment & bias " + "analysis, cross-source validation, and generates structured " + "intelligence reports with confidence scoring, risk assessment, " + "and exportable Markdown output." + ), + system_prompt=ARGUS_SYSTEM_PROMPT, + model_name="gpt-4o-mini", + max_loops=5, + autosave=True, + verbose=True, + dynamic_temperature_enabled=True, + saved_state_path="argus_state.json", + retry_attempts=3, + context_length=128000, + output_type="string", + tools=[ + web_search, + fetch_url_content, + wikipedia_summary, + extract_entities, + analyze_text, + compare_sources, + generate_report, + ], + tool_choice="auto", +) + + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# ENTRY POINT +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +if __name__ == "__main__": + import sys + + if len(sys.argv) > 1: + task = " ".join(sys.argv[1:]) + else: + task = ( + "Conduct a comprehensive analysis of the current state of " + "autonomous AI agents in 2025. Research the key players, " + "emerging trends, potential risks, and market opportunities. " + "Produce a detailed intelligence report with confidence scoring." + ) + + print("=" * 72) + print(" ARGUS v2.0 β€” The All-Seeing Research & Intelligence Agent") + print("=" * 72) + print(f"\nπŸ“‹ Task: {task}\n") + print("─" * 72) + + result = argus_agent.run(task) + + print("\n" + "=" * 72) + print(" βœ… MISSION COMPLETE") + print("=" * 72) + print(result) diff --git a/argus_logo.jpg b/argus_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..049ceb7151af2f6ba793d3e18d9f9e0244fd4067 GIT binary patch literal 121827 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

)=x{xMOqN+YX~-aOMIoJCh-W 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%0Ab7tBf$}_cL<22YVF8rFFpy4K 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 S@5JVR#b3VXZ~p*>2mjd+YiNc5 literal 0 HcmV?d00001