Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Sep 3, 2025

Add Agno Research Agent converted to Agentuity

Summary

This PR adds a new framework example that converts the Agno Research Agent to work with the Agentuity platform while preserving all original framework functionality.

The implementation follows the established Agentuity wrapper pattern:

  • Original Agno Agent (research_agent.py): Preserves the complete original implementation with OpenAIChat model, DuckDuckGo search, and Newspaper4k content analysis
  • Agentuity Wrapper (agent.py): Provides the Agentuity interface using asyncio executor to call the original agent
  • Complete Project Setup: Includes all necessary configuration files, dependencies, and documentation

The research agent performs comprehensive investigative journalism, combining web search with content analysis to produce professional NYT-style reports on any topic.

Review & Testing Checklist for Human

  • Verify original framework preservation: Compare research_agent.py against the original Agno documentation to ensure exact fidelity
  • Test end-to-end functionality: Run agentuity dev in the new directory and test with a research topic to verify the agent produces coherent research reports
  • Validate dependency installation: Ensure uv sync successfully installs all dependencies (agno, duckduckgo-search, newspaper4k, lxml-html-clean) without conflicts
  • Check Agentuity integration: Verify the asyncio executor pattern in agent.py correctly handles response parsing and error cases

Test Plan

  1. Navigate to frameworks/agno/research-agent/
  2. Run uv sync to install dependencies
  3. Set OPENAI_API_KEY environment variable
  4. Run agentuity dev and test with prompts like "Research the latest developments in quantum computing"
  5. Verify the agent produces structured research reports with multiple sources

Notes

  • The agentuity.yaml contains a placeholder project_id that may need updating
  • Resource allocations (512Mi memory, 1000M CPU) are estimates for research workloads and may need tuning
  • This implementation was not tested in a running environment, so runtime issues are possible

Link to Devin run: https://app.devin.ai/sessions/328fc0a013524c4e8862dcae87d858f5
Requested by: Dhilan Fye (dfye@agentuity.com)

Summary by CodeRabbit

  • New Features

    • Added a pre-configured Agno Research Agent with web search, content extraction, investigative workflow, and structured NYT-style markdown reports.
    • Added an HTTP/ASGI entrypoint and async handler to run the agent and return results with robust error handling.
  • Documentation

    • Added README with setup, dependencies, usage examples, and deployment guidance.
  • Chores

    • Added project/config manifests, dependency lists, environment samples, editor configuration, ignore rules, and a bundling crash artifact.

- Convert https://docs.agno.com/examples/agents/research-agent to Agentuity
- Preserve original Agno framework code in research_agent.py
- Add Agentuity wrapper following established patterns
- Include comprehensive configuration and documentation
- Support for DuckDuckGo search and Newspaper4k content analysis
- Professional NYT-style investigative reporting capabilities

Co-Authored-By: Dhilan Fye <dfye@agentuity.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 3, 2025

Walkthrough

Adds a new Agno-based Research Agent project adapted for Agentuity: agent implementation and preconfigured agent, server entrypoint, packaging and dependency files, Agentuity config and metadata, docs, and repository housekeeping (editor and gitignore).

Changes

Cohort / File(s) Change Summary
Agent implementation
frameworks/agno/research-agent/agents/ResearchAgent/agent.py, frameworks/agno/research-agent/agents/ResearchAgent/research_agent.py
New Agentuity-facing handlers (welcome, async run) and a preconfigured research_agent (OpenAIChat "gpt-4o", DuckDuckGoTools, Newspaper4kTools) with workflow instructions and structured markdown output.
Server & Agentuity config
frameworks/agno/research-agent/server.py, frameworks/agno/research-agent/agentuity.yaml, frameworks/agno/research-agent/.agentuity/config.json
Adds server entrypoint (env validation, autostart, module-level app via create_server(), uvicorn runner) and Agentuity project/deploy/dev configuration and agent registration.
Packaging & dependencies
frameworks/agno/research-agent/pyproject.toml, frameworks/agno/research-agent/requirements.txt
New packaging files declaring project metadata, Python constraint, and dependencies (agentuity, agno, duckduckgo-search, newspaper4k, lxml-html-clean).
Documentation
frameworks/agno/research-agent/README.md
New README describing wrapper architecture, capabilities, prerequisites, setup, and usage instructions.
Repo housekeeping & env
frameworks/agno/research-agent/.editorconfig, frameworks/agno/research-agent/.gitignore, frameworks/agno/research-agent/.env.development
Adds editor config, comprehensive Python .gitignore, and a development .env placeholder.
Artifacts
frameworks/agno/research-agent/.agentuity-crash-1756999580.json
Adds a bundler crash artifact JSON reporting missing uv.lock (non-functional data artifact).

Sequence Diagram(s)

sequenceDiagram
    autonumber
    actor User
    participant Client
    participant Server
    participant Handler as ResearchAgent.run
    participant Agno as research_agent
    participant DDG as DuckDuckGoTools
    participant N4K as Newspaper4kTools

    User->>Client: submit topic
    Client->>Server: HTTP request (topic)
    Server->>Handler: invoke run(request, response, context)
    Handler->>Handler: parse input, log
    Handler->>Agno: run(prompt) [async executor]
    par sourcing
      Agno->>DDG: search(query)
      DDG-->>Agno: search results
      Agno->>N4K: fetch/extract(urls)
      N4K-->>Agno: article content
    end
    Agno-->>Handler: generated markdown report
    Handler->>Handler: normalize & validate output
    alt valid output
        Handler-->>Server: response.text(report)
        Server-->>Client: 200 OK (markdown)
    else empty/error
        Handler-->>Server: error/warning message
        Server-->>Client: 200/500 with message
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • rblalock
  • nnance

Pre-merge checks (3 passed)

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title succinctly captures the primary change by indicating the addition of the Agno Research Agent and its conversion to the Agentuity platform, directly reflecting the core intent of the pull request. It is clear, concise, and specific without extraneous details or file lists. A reviewer scanning the history can immediately understand what this pull request introduces. There is no misleading or vague language that obscures the main purpose.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Poem

I thump my paws on keys tonight,
I hunt for facts by screen’s soft light.
Duck searches quack, clippings I comb,
I stitch reports to take back home.
A carrot click—now ship, delight! 🐇📰

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1756860079-agno-research-agent

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai bot requested review from nnance and rblalock September 3, 2025 00:47
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (12)
frameworks/agno/research-agent/requirements.txt (1)

1-4: Optional: pin or lock for reproducibility.

Unpinned deps (duckduckgo-search/newspaper4k) change behavior over time. Commit a uv.lock or pin major/minor versions to avoid drift.

frameworks/agno/research-agent/.gitignore (1)

131-132: Consider committing uv.lock.

You’re ignoring uv.lock; examples benefit from deterministic installs. If acceptable, stop ignoring it.

-# UV
-uv.lock
+# UV
+# uv.lock  # consider committing for reproducible examples
frameworks/agno/research-agent/pyproject.toml (1)

1-5: Optional: add basic project metadata.

Add license and readme fields to improve packaging clarity for the example.

 [project]
 name = "agno-research-agent"
 version = "0.1.0"
 description = "Agno Research Agent wrapped for Agentuity platform"
+readme = "README.md"
+license = { text = "MIT" }
 requires-python = ">=3.10, <3.13"
frameworks/agno/research-agent/agents/ResearchAgent/research_agent.py (3)

1-1: Make model configurable via env; keep gpt-4o as default.

Eases testing and future upgrades without code changes.

-from textwrap import dedent
+import os
+from textwrap import dedent
@@
-    model=OpenAIChat(id="gpt-4o"),
+    model=OpenAIChat(id=os.getenv("AGENT_MODEL", "gpt-4o")),

Also applies to: 10-10


11-12: Optional: tune tool limits/timeouts.

If DuckDuckGoTools/Newspaper4kTools expose params (e.g., max_results, request timeout), set sane defaults to bound latency/cost.


52-90: Template clarity: remove braces to avoid literal rendering confusion.

If the framework doesn’t substitute placeholders, some users may think {Compelling Headline} is auto-filled. Consider clarifying or converting to bullet hints.

-# {Compelling Headline} 📰
+# Compelling Headline 📰
@@
-## Executive Summary
-{Concise overview of key findings and significance}
+## Executive Summary
+- Concise overview of key findings and significance
frameworks/agno/research-agent/server.py (1)

1-1: Shebang without execute bit (EXE001).

Either make the file executable in git or drop the shebang to silence linters. Keeping it is fine if you intend ./server.py.

Apply if you prefer removing it:

-#!/usr/bin/env python3
frameworks/agno/research-agent/README.md (2)

5-8: Add alt text to the deploy button image (MD045).

Minor accessibility fix.

-        <a target="_blank" href="https://app.agentuity.com/deploy" alt="Agentuity">
-            <img src="https://app.agentuity.com/img/deploy.svg" /> 
+        <a target="_blank" href="https://app.agentuity.com/deploy" alt="Agentuity">
+            <img src="https://app.agentuity.com/img/deploy.svg" alt="Deploy to Agentuity" /> 
         </a>

19-19: Avoid bare URL (MD034).

Use a markdown link to satisfy the linter and improve readability.

-**Original Agno Agent**: https://docs.agno.com/examples/agents/research-agent
+**Original Agno Agent**: [Agno Research Agent](https://docs.agno.com/examples/agents/research-agent)
frameworks/agno/research-agent/agents/ResearchAgent/agent.py (3)

20-22: Trim and validate empty prompts early.

Prevents pointless calls and clearer UX on blank requests.

-        prompt = await request.data.text()
-        context.logger.info(f"[ResearchAgent] Received research topic: {prompt!r}")
+        prompt = (await request.data.text()).strip()
+        if not prompt:
+            return response.text("⚠️ Please provide a research topic (a sentence or two works best).")
+        context.logger.info(f"[ResearchAgent] Received research topic: {prompt!r}")

23-25: Avoid lambda in run_in_executor and add a bounded timeout.

Passing the function directly avoids an extra closure; a timeout prevents indefinite blocking if tools hang.

-        loop = asyncio.get_running_loop()
-        raw_result = await loop.run_in_executor(None, lambda: research_agent.run(prompt))
+        loop = asyncio.get_running_loop()
+        raw_result = await asyncio.wait_for(
+            loop.run_in_executor(None, research_agent.run, prompt),
+            timeout=180,
+        )

26-33: Slightly simplify normalization with fallbacks.

Functionally identical, a bit tighter and avoids double attribute lookups.

-        if isinstance(raw_result, str):
-            output = raw_result
-        elif hasattr(raw_result, "content"):
-            output = raw_result.content
-        elif hasattr(raw_result, "reply"):
-            output = raw_result.reply
-        else:
-            output = str(raw_result)
+        output = (
+            raw_result
+            if isinstance(raw_result, str)
+            else getattr(raw_result, "content", None)
+                or getattr(raw_result, "reply", None)
+                or str(raw_result)
+        )
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 61337c0 and e45e53a.

📒 Files selected for processing (9)
  • frameworks/agno/research-agent/.editorconfig (1 hunks)
  • frameworks/agno/research-agent/.gitignore (1 hunks)
  • frameworks/agno/research-agent/README.md (1 hunks)
  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py (1 hunks)
  • frameworks/agno/research-agent/agents/ResearchAgent/research_agent.py (1 hunks)
  • frameworks/agno/research-agent/agentuity.yaml (1 hunks)
  • frameworks/agno/research-agent/pyproject.toml (1 hunks)
  • frameworks/agno/research-agent/requirements.txt (1 hunks)
  • frameworks/agno/research-agent/server.py (1 hunks)
🧰 Additional context used
🧠 Learnings (34)
📓 Common learnings
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:43.688Z
Learning: Agent files should import types such as AgentRequest, AgentResponse, and AgentContext from the `agentuity` package to ensure compatibility and leverage provided helper methods.
Learnt from: jhaynie
PR: agentuity/examples#12
File: frameworks/agno/from-agno/pyproject.toml:1-9
Timestamp: 2025-05-28T21:02:10.403Z
Learning: The `agentuity` package is a Python SDK developed by Agentuity Inc., available on PyPI at https://pypi.org/project/agentuity/ with the GitHub repository at https://github.com/agentuity/sdk-py. This is a different package from `agentUniverse` and should not be confused with other agent-related packages.
Learnt from: jhaynie
PR: agentuity/examples#12
File: frameworks/agno/from-agno/pyproject.toml:1-9
Timestamp: 2025-05-28T21:02:10.403Z
Learning: The `agentuity` package is a Python SDK developed by Agentuity Inc., available on PyPI at https://pypi.org/project/agentuity/ with the GitHub repository at https://github.com/agentuity/sdk-py. This is a different package from `agentUniverse` and should not be confused with other agent-related packages.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:13.875Z
Learning: In Agentuity AI Agent Python files (agents/**/*.py), the main entry point should be an async function named `run` that accepts parameters of types AgentRequest, AgentResponse, and AgentContext.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/agno/from_agno/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-07-17T13:41:16.151Z
Learning: Applies to frameworks/agno/from_agno/agents/**/*.py : Import types from `agentuity`
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:16.519Z
Learning: The Agentuity configuration file (agentuity.yaml) is reserved for configuring the AI Agent project and should not be edited or suggested for edits during code review.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:15.333Z
Learning: When writing Python AI Agent files for Agentuity in the 'agents/' directory, always define an async function named 'run' as the entry point.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/llamaindex/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:53.981Z
Learning: When writing Python AI Agent files for the Agentuity platform (in files matching agents/**/*.py), always define an async function named `run` as the entry point.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:15.333Z
Learning: Agentuity Agent files should import types such as AgentRequest, AgentResponse, and AgentContext from the 'agentuity' package to ensure compatibility and access to helper methods.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:43.688Z
Learning: When writing Agentuity AI Agents in Python, always define an async function named `run` that serves as the entry point for the agent.
📚 Learning: 2025-07-17T13:41:01.314Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/agno/from_agno/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:41:01.314Z
Learning: Applies to frameworks/agno/from_agno/**/agentuity.yaml : Do not suggest edits to the Agentuity AI Configuration file (agentuity.yaml)

Applied to files:

  • frameworks/agno/research-agent/.editorconfig
  • frameworks/agno/research-agent/.gitignore
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-07-17T13:39:58.483Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/deep-research-js/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:39:58.483Z
Learning: Applies to agents/deep-research-js/**/agentuity.yaml : Do not suggest edits to the agentuity.yaml configuration file

Applied to files:

  • frameworks/agno/research-agent/.editorconfig
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:16:16.519Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:16.519Z
Learning: The Agentuity configuration file (agentuity.yaml) is reserved for configuring the AI Agent project and should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/.editorconfig
  • frameworks/agno/research-agent/agentuity.yaml
  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-05-28T21:02:10.403Z
Learnt from: jhaynie
PR: agentuity/examples#12
File: frameworks/agno/from-agno/pyproject.toml:1-9
Timestamp: 2025-05-28T21:02:10.403Z
Learning: The `agentuity` Python SDK has versions 0.0.87 and higher available on PyPI, and dependency specifications like `agentuity>=0.0.87` in pyproject.toml files are valid and correct for projects using this SDK.

Applied to files:

  • frameworks/agno/research-agent/pyproject.toml
📚 Learning: 2025-06-23T17:16:33.550Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:33.550Z
Learning: The agentuity.yaml file is a configuration file used by Agentuity to configure the AI Agent project and should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:13:52.368Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:13:52.368Z
Learning: The 'agentuity.yaml' file is a configuration file used by Agentuity to configure the AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:14:18.092Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:14:18.092Z
Learning: The file 'agentuity.yaml' is used to configure the Agentuity AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-06-23T17:15:46.735Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:46.735Z
Learning: The Agentuity configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:15:30.804Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/grokLiveSearch/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:30.804Z
Learning: In the context of Agentuity AI projects, the 'agentuity.yaml' file is a configuration file that should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:16:02.063Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai-typescript/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:02.063Z
Learning: The Agentuity AI Configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:17:12.992Z
Learnt from: CR
PR: agentuity/examples#0
File: patterns/llmAsJury/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:17:12.992Z
Learning: In the context of Agentuity AI projects, the agentuity.yaml file is a configuration file that should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-07-17T13:39:39.665Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/composio/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:39:39.665Z
Learning: Applies to agents/composio/**/agentuity.yaml : Do NOT suggest edits to the Agentuity AI Configuration file (agentuity.yaml)

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:16:13.875Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:13.875Z
Learning: In Agentuity AI Agent Python files (agents/**/*.py), the main entry point should be an async function named `run` that accepts parameters of types AgentRequest, AgentResponse, and AgentContext.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:14:53.981Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/llamaindex/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:53.981Z
Learning: When writing Python AI Agent files for the Agentuity platform (in files matching agents/**/*.py), always define an async function named `run` as the entry point.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-07-17T13:40:30.298Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/tavily_agent/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-07-17T13:40:30.298Z
Learning: Applies to agents/tavily_agent/agents/**/*.py : The main handler function for an agent should be defined as an async function named 'run' with parameters (request: AgentRequest, response: AgentResponse, context: AgentContext)

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:15:43.688Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:43.688Z
Learning: When writing Agentuity AI Agents in Python, always define an async function named `run` that serves as the entry point for the agent.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:14:15.333Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:15.333Z
Learning: When writing Python AI Agent files for Agentuity in the 'agents/' directory, always define an async function named 'run' as the entry point.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:16:30.899Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:30.899Z
Learning: In Python agent files under 'agents/**/*.py', always define an async function named 'run' as the entry point for the agent.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:15:53.658Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:15:53.658Z
Learning: In the Agentuity Python SDK, the main entry point for an agent is an async function named 'run' that takes three arguments: request (AgentRequest), response (AgentResponse), and context (AgentContext).

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-07-17T13:40:58.033Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/agno/from_agno/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-07-17T13:40:58.033Z
Learning: Applies to frameworks/agno/from_agno/agents/**/*.py : The file should define an async function named `run`

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-07-17T13:41:39.323Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-07-17T13:41:39.323Z
Learning: Applies to frameworks/crewai/socialagent/agents/**/*.py : The file should define an async function named `run`

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:14:03.437Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:14:03.437Z
Learning: In the Agentuity Python SDK, the main agent handler should be an async function named 'run' that accepts 'request: AgentRequest', 'response: AgentResponse', and 'context: AgentContext' as arguments.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:16:43.214Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:16:43.214Z
Learning: In the Agentuity Python SDK, the main handler for an agent is an async function named 'run' that takes 'request', 'response', and 'context' as parameters.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:15:39.390Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/grokLiveSearch/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:15:39.390Z
Learning: In the Agentuity Python SDK, the main agent handler should be an async function named 'run' that accepts 'request: AgentRequest', 'response: AgentResponse', and 'context: AgentContext' as parameters.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:16:25.368Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:16:25.368Z
Learning: In the Agentuity Python SDK, the main handler function for an agent should be defined as an async function named 'run' with the signature: async def run(request: AgentRequest, response: AgentResponse, context: AgentContext) -> Any.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-06-23T17:15:05.904Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/llamaindex/basic/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-06-23T17:15:05.904Z
Learning: In the Agentuity Python SDK, the main agent handler function should be defined as an async function named 'run' that accepts 'request' (AgentRequest), 'response' (AgentResponse), and 'context' (AgentContext) as parameters.

Applied to files:

  • frameworks/agno/research-agent/agents/ResearchAgent/agent.py
📚 Learning: 2025-05-28T21:02:10.403Z
Learnt from: jhaynie
PR: agentuity/examples#12
File: frameworks/agno/from-agno/pyproject.toml:1-9
Timestamp: 2025-05-28T21:02:10.403Z
Learning: The `agentuity` package is a Python SDK developed by Agentuity Inc., available on PyPI at https://pypi.org/project/agentuity/ with the GitHub repository at https://github.com/agentuity/sdk-py. This is a different package from `agentUniverse` and should not be confused with other agent-related packages.

Applied to files:

  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-06-23T17:15:27.163Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/grokLiveSearch/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:27.163Z
Learning: When developing Agentuity AI Agents in Python, prefer importing types such as AgentRequest, AgentResponse, and AgentContext from the `agentuity` package to ensure compatibility and leverage built-in helper methods.

Applied to files:

  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-07-17T13:41:16.151Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/agno/from_agno/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-07-17T13:41:16.151Z
Learning: Applies to frameworks/agno/from_agno/agents/**/*.py : Import types from `agentuity`

Applied to files:

  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-06-23T17:16:30.899Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:30.899Z
Learning: When writing agent code in 'agents/**/*.py', prefer importing types such as AgentRequest, AgentResponse, and AgentContext from the 'agentuity' package to ensure compatibility and consistency.

Applied to files:

  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-06-23T17:15:43.688Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:43.688Z
Learning: Agent files should import types such as AgentRequest, AgentResponse, and AgentContext from the `agentuity` package to ensure compatibility and leverage provided helper methods.

Applied to files:

  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-06-23T17:16:13.875Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:16:13.875Z
Learning: When writing Agentuity AI Agents in Python, always use type hints and adhere to Python best practices for code quality and maintainability.

Applied to files:

  • frameworks/agno/research-agent/README.md
📚 Learning: 2025-07-17T13:41:34.015Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/basic/.cursor/rules/sdk.mdc:0-0
Timestamp: 2025-07-17T13:41:34.015Z
Learning: Applies to frameworks/crewai/basic/agents/**/*.py : Import types from `agentuity`

Applied to files:

  • frameworks/agno/research-agent/README.md
🪛 Ruff (0.12.2)
frameworks/agno/research-agent/server.py

1-1: Shebang is present but file is not executable

(EXE001)


9-9: Possible binding to all interfaces

(S104)

🪛 LanguageTool
frameworks/agno/research-agent/README.md

[grammar] ~23-~23: There might be a mistake here.
Context: ...kDuckGo for comprehensive topic research - Content Analysis: Leverages Newspaper4...

(QB_NEW_EN)


[grammar] ~24-~24: There might be a mistake here.
Context: ...er4k for article extraction and analysis - Professional Reporting: Generates NYT-...

(QB_NEW_EN)


[grammar] ~25-~25: There might be a mistake here.
Context: ...nerates NYT-style investigative articles - Multi-source Verification: Cross-refer...

(QB_NEW_EN)


[grammar] ~26-~26: There might be a mistake here.
Context: ...references facts across multiple sources - Structured Output: Delivers well-forma...

(QB_NEW_EN)


[grammar] ~48-~48: There might be a mistake here.
Context: ...*: Core framework for the research agent - DuckDuckGo Search: Web search capabili...

(QB_NEW_EN)


[grammar] ~49-~49: There might be a mistake here.
Context: ...DuckGo Search**: Web search capabilities - Newspaper4k: Content extraction and an...

(QB_NEW_EN)


[grammar] ~50-~50: There might be a mistake here.
Context: ...per4k**: Content extraction and analysis - Agentuity SDK: Platform integration #...

(QB_NEW_EN)


[grammar] ~53-~53: There might be a mistake here.
Context: ...latform integration ## 📋 Prerequisites Before you begin, ensure you have the fo...

(QB_NEW_EN)


[grammar] ~57-~57: There might be a mistake here.
Context: ...d: - Python: Version 3.10 or higher - UV: Version 0.5.25 or higher ([Documen...

(QB_NEW_EN)


[grammar] ~60-~60: There might be a mistake here.
Context: ...s.astral.sh/uv/)) ## 🚀 Getting Started 1. Install dependencies: ```bash uv s...

(QB_NEW_EN)


[grammar] ~82-~82: There might be a mistake here.
Context: ...tuity deploy ``` ## 📖 Documentation For comprehensive documentation on the A...

(QB_NEW_EN)


[grammar] ~84-~84: There might be a mistake here.
Context: ...tion on the Agentuity Python SDK, visit: [https://agentuity.dev/SDKs/python](http...

(QB_NEW_EN)


[grammar] ~87-~87: There might be a mistake here.
Context: ....dev/SDKs/python) ## 🆘 Troubleshooting If you encounter any issues: 1. Check t...

(QB_NEW_EN)


[grammar] ~95-~95: There might be a mistake here.
Context: ...he Agentuity support team ## 📝 License This project is licensed under the terms...

(QB_NEW_EN)

🪛 markdownlint-cli2 (0.17.2)
frameworks/agno/research-agent/README.md

6-6: Images should have alternate text (alt text)

(MD045, no-alt-text)


19-19: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (7)
frameworks/agno/research-agent/pyproject.toml (1)

6-12: Dependencies and Python version constraint are correct. The agentuity>=0.0.90 floor matches the agno example in frameworks/agno/from_agno/pyproject.toml, and requires-python = ">=3.10, <3.13" explicitly includes 3.12, so all listed dependencies should install successfully on Python 3.12.

frameworks/agno/research-agent/.editorconfig (1)

1-19: LGTM — consistent, sensible defaults.

frameworks/agno/research-agent/agents/ResearchAgent/research_agent.py (1)

8-12: Use a factory to instantiate Agent per request instead of a global

Global research_agent can retain internal state (e.g. memory) and isn’t thread-safe under concurrent executor calls. Replace the top-level instantiation with a per-request factory and retain a module-level instance only for back-compat:

 from textwrap import dedent
-from agno.agent import Agent
+from agno.agent import Agent

-# Initialize the research agent with advanced journalistic capabilities
-research_agent = Agent(
+def build_research_agent() -> Agent:
+    return Agent(
         model=OpenAIChat(id="gpt-4o"),
         tools=[DuckDuckGoTools(), Newspaper4kTools()],
         description=dedent("""\
             …journalistic instructions…
         """),
         show_tool_calls=True,
         add_datetime_to_instructions=True,
     )
+
+# Back-compat default instance
+research_agent = build_research_agent()

Update any wrappers to call build_research_agent() per request rather than importing the module-level research_agent.

frameworks/agno/research-agent/server.py (2)

6-6: ASGI app bootstrap looks correct.

app = create_server() aligns with Agentuity’s server factory and should auto-discover agents per config.


8-9: Binding to 0.0.0.0 (S104).

Acceptable for dev/containers. If you run this directly on a developer laptop, consider host="127.0.0.1". No change required if this is containerized.

frameworks/agno/research-agent/agentuity.yaml (1)

17-41: Config aligns with code paths and dev port.

Dev port 3500 matches uvicorn.run(..., port=3500) and bundler points at agents/. Not suggesting edits per repo rules.

Also applies to: 60-62

frameworks/agno/research-agent/agents/ResearchAgent/agent.py (1)

21-21: Consider prompt logging policy.

You log user-supplied content verbatim. If PII or sensitive topics are possible, switch to debug or redact.

Comment on lines +1 to +4
agno
duckduckgo-search
newspaper4k
lxml-html-clean
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add agentuity to prevent pip -r footgun; keep manifests in sync.

If someone installs via requirements.txt, the server won’t have agentuity. Either remove this file and rely on pyproject/uv only, or add agentuity here.

Apply:

 agno
 duckduckgo-search
 newspaper4k
 lxml-html-clean
+agentuity>=0.0.90
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
agno
duckduckgo-search
newspaper4k
lxml-html-clean
# frameworks/agno/research-agent/requirements.txt
agno
duckduckgo-search
newspaper4k
lxml-html-clean
agentuity>=0.0.90
🤖 Prompt for AI Agents
In frameworks/agno/research-agent/requirements.txt around lines 1 to 4, the
requirements file is missing the agentuity dependency which causes installs from
requirements.txt to omit agentuity; either add a line "agentuity" to this file
(keeping it version-free or matching the version in pyproject/uv) so manifests
stay in sync, or remove the requirements.txt entirely and ensure installation is
performed via pyproject/uv only.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
frameworks/agno/research-agent/server.py (1)

6-36: Unify entrypoints and make host/port configurable

Two separate __main__ blocks are surprising; fold preflight + autostart into a helper and run uvicorn once. Also read host/port from env to satisfy S104 and allow PORT overrides.

@@
-if __name__ == "__main__":
-    # Check if AGENTUITY_API_KEY is set
-    if not os.environ.get("AGENTUITY_API_KEY") and not os.environ.get(
-        "AGENTUITY_SDK_KEY"
-    ):
-        print(
-            "\033[31m[ERROR] AGENTUITY_API_KEY or AGENTUITY_SDK_KEY is not set. This should have been set automatically by the Agentuity CLI or picked up from the .env file.\033[0m"
-        )
-        if os.environ.get("_", "").endswith("uv") and os.path.exists(".env"):
-            print(
-                "\033[31m[ERROR] Re-run the command with `uv run --env-file .env server.py`\033[0m"
-            )
-        sys.exit(1)
-
-    # Check if AGENTUITY_URL is set
-    if not os.environ.get("AGENTUITY_URL"):
-        print(
-            "\033[31m[WARN] You are running this agent outside of the Agentuity environment. Any automatic Agentuity features will be disabled.\033[0m"
-        )
-        print(
-            "\033[31m[WARN] Recommend running `agentuity dev` to run your project locally instead of `python script`.\033[0m"
-        )
-
-    # Setup logging after environment checks
-    logging.basicConfig(
-        stream=sys.stdout,
-        level=logging.INFO,
-        format="[%(levelname)-5.5s] %(message)s",
-    )
-
-    autostart()
+def _preflight_and_autostart():
+    # Check if AGENTUITY_API_KEY is set
+    if not os.environ.get("AGENTUITY_API_KEY") and not os.environ.get("AGENTUITY_SDK_KEY"):
+        print("\033[31m[ERROR] AGENTUITY_API_KEY or AGENTUITY_SDK_KEY is not set. This should have been set automatically by the Agentuity CLI or picked up from the .env file.\033[0m")
+        if os.environ.get("_", "").endswith("uv") and os.path.exists(".env"):
+            print("\033[31m[ERROR] Re-run the command with `uv run --env-file .env server.py`\033[0m")
+        sys.exit(1)
+    # Check if AGENTUITY_URL is set
+    if not os.environ.get("AGENTUITY_URL"):
+        print("\033[31m[WARN] You are running this agent outside of the Agentuity environment. Any automatic Agentuity features will be disabled.\033[0m")
+        print("\033[31m[WARN] Recommend running `agentuity dev` to run your project locally instead of `python script`.\033[0m")
+    # Setup logging after environment checks
+    logging.basicConfig(stream=sys.stdout, level=logging.INFO, format="[%(levelname)-5.5s] %(message)s")
+    autostart()
@@
-if __name__ == "__main__":
-    uvicorn.run(app, host="0.0.0.0", port=3500)
+if __name__ == "__main__":
+    _preflight_and_autostart()
+    host = os.environ.get("HOST", "0.0.0.0")
+    port = int(os.environ.get("PORT", "3500"))
+    uvicorn.run(app, host=host, port=port)

Note: The heuristic os.environ.get("_", "").endswith("uv") is brittle; verify it behaves as expected under uv run and agentuity dev.

Also applies to: 45-46

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e45e53a and 5825a8a.

📒 Files selected for processing (5)
  • frameworks/agno/research-agent/.agentuity-crash-1756999580.json (1 hunks)
  • frameworks/agno/research-agent/.agentuity/config.json (1 hunks)
  • frameworks/agno/research-agent/.env.development (1 hunks)
  • frameworks/agno/research-agent/agentuity.yaml (1 hunks)
  • frameworks/agno/research-agent/server.py (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • frameworks/agno/research-agent/.env.development
  • frameworks/agno/research-agent/.agentuity-crash-1756999580.json
🧰 Additional context used
🧠 Learnings (12)
📓 Common learnings
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:16.519Z
Learning: The Agentuity configuration file (agentuity.yaml) is reserved for configuring the AI Agent project and should not be edited or suggested for edits during code review.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:14:18.092Z
Learning: The file 'agentuity.yaml' is used to configure the Agentuity AI Agent project and should not be edited or suggested for edits.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:14:15.333Z
Learning: Agentuity Agent files should import types such as AgentRequest, AgentResponse, and AgentContext from the 'agentuity' package to ensure compatibility and access to helper methods.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agent.mdc:0-0
Timestamp: 2025-06-23T17:15:43.688Z
Learning: Agent files should import types such as AgentRequest, AgentResponse, and AgentContext from the `agentuity` package to ensure compatibility and leverage provided helper methods.
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:46.735Z
Learning: The Agentuity configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.
Learnt from: jhaynie
PR: agentuity/examples#12
File: frameworks/agno/from-agno/pyproject.toml:1-9
Timestamp: 2025-05-28T21:02:10.403Z
Learning: The `agentuity` package is a Python SDK developed by Agentuity Inc., available on PyPI at https://pypi.org/project/agentuity/ with the GitHub repository at https://github.com/agentuity/sdk-py. This is a different package from `agentUniverse` and should not be confused with other agent-related packages.
Learnt from: jhaynie
PR: agentuity/examples#12
File: frameworks/agno/from-agno/pyproject.toml:1-9
Timestamp: 2025-05-28T21:02:10.403Z
Learning: The `agentuity` package is a Python SDK developed by Agentuity Inc., available on PyPI at https://pypi.org/project/agentuity/ with the GitHub repository at https://github.com/agentuity/sdk-py. This is a different package from `agentUniverse` and should not be confused with other agent-related packages.
📚 Learning: 2025-06-23T17:16:16.519Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:16.519Z
Learning: The Agentuity configuration file (agentuity.yaml) is reserved for configuring the AI Agent project and should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-07-17T13:39:58.483Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/deep-research-js/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:39:58.483Z
Learning: Applies to agents/deep-research-js/**/agentuity.yaml : Do not suggest edits to the agentuity.yaml configuration file

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-07-17T13:41:01.314Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/agno/from_agno/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:41:01.314Z
Learning: Applies to frameworks/agno/from_agno/**/agentuity.yaml : Do not suggest edits to the Agentuity AI Configuration file (agentuity.yaml)

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:15:46.735Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/mem0/mem0demo/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:46.735Z
Learning: The Agentuity configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:16:33.550Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/pydantic/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:33.550Z
Learning: The agentuity.yaml file is a configuration file used by Agentuity to configure the AI Agent project and should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:16:02.063Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/openai/from-oai-typescript/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:16:02.063Z
Learning: The Agentuity AI Configuration file (agentuity.yaml) is used to configure the AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:14:18.092Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/langchain/basic/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:14:18.092Z
Learning: The file 'agentuity.yaml' is used to configure the Agentuity AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:13:52.368Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/crewai/socialagent/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:13:52.368Z
Learning: The 'agentuity.yaml' file is a configuration file used by Agentuity to configure the AI Agent project and should not be edited or suggested for edits.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:15:30.804Z
Learnt from: CR
PR: agentuity/examples#0
File: frameworks/miscellaneous/grokLiveSearch/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:15:30.804Z
Learning: In the context of Agentuity AI projects, the 'agentuity.yaml' file is a configuration file that should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/.agentuity/config.json
  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-06-23T17:17:12.992Z
Learnt from: CR
PR: agentuity/examples#0
File: patterns/llmAsJury/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-06-23T17:17:12.992Z
Learning: In the context of Agentuity AI projects, the agentuity.yaml file is a configuration file that should not be edited or suggested for edits during code review.

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
📚 Learning: 2025-07-17T13:39:39.665Z
Learnt from: CR
PR: agentuity/examples#0
File: agents/composio/.cursor/rules/agentuity.mdc:0-0
Timestamp: 2025-07-17T13:39:39.665Z
Learning: Applies to agents/composio/**/agentuity.yaml : Do NOT suggest edits to the Agentuity AI Configuration file (agentuity.yaml)

Applied to files:

  • frameworks/agno/research-agent/agentuity.yaml
🪛 Ruff (0.12.2)
frameworks/agno/research-agent/server.py

38-38: Shebang is present but file is not executable

(EXE001)


38-38: Shebang should be at the beginning of the file

(EXE005)


46-46: Possible binding to all interfaces

(S104)

🔇 Additional comments (7)
frameworks/agno/research-agent/.agentuity/config.json (2)

1-1: LGTM: agent registration/path alignment looks correct

agents/ResearchAgent/agent.py matches the bundler config and agent ID used elsewhere. No code issues spotted.


1-1: Confirm CLI/tooling versions

Ensure the local/CI Agentuity CLI is ≥ the recorded cli_version: "0.0.166" to avoid mismatches; also confirm the path exists after packaging.

frameworks/agno/research-agent/server.py (2)

8-10: Credential preflight guard is good

Early exit if neither key is present is appropriate for DX.


43-43: ASGI app exposure is correct

Exporting app = create_server() enables uvicorn module:app usage and health checks.

frameworks/agno/research-agent/agentuity.yaml (3)

18-20: Config aligns with server and agent

Port 3500, uv run server.py, and agent ID/name are consistent with code and .agentuity/config.json. No changes requested.

Also applies to: 37-41, 60-64


9-15: Runtime/packaging verification

Please confirm at run time:

  • The recorded CLI version range satisfies your local/CI CLI.
  • The python-uv bundler is available for that CLI version.
  • Resource requests are sufficient for newspaper4k/lxml workloads.

Also applies to: 41-48, 50-58


11-11: Project ID usage check

Per PR notes, if this project_id was a placeholder, verify it resolves correctly when running agentuity dev (no action requested here).


autostart()

#!/usr/bin/env python3
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove mid-file shebang

Shebang must be first line or omitted. Here it triggers lint errors (EXE001/EXE005) and isn’t needed.

-#!/usr/bin/env python3
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#!/usr/bin/env python3
🧰 Tools
🪛 Ruff (0.12.2)

38-38: Shebang is present but file is not executable

(EXE001)


38-38: Shebang should be at the beginning of the file

(EXE005)

🤖 Prompt for AI Agents
In frameworks/agno/research-agent/server.py around line 38, there is a mid-file
shebang ("#!/usr/bin/env python3") which must either be the very first line of
the file or removed; delete this line (or move it to the top of the file if a
shebang is actually required) so the file no longer triggers EXE001/EXE005 lint
errors and re-run the linter to confirm the issue is resolved.

@dhilanfye34 dhilanfye34 closed this Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants