Skip to content

Conversation

@mcongrove
Copy link
Member

@mcongrove mcongrove commented May 26, 2025

Use the latest sample agents for the framework examples.

Deleted the super basic pre-existing samples, as their usage examples are covered by these new ones. Left some of them, e.g. Mastra bird checker, in other-examples folder.

Summary by CodeRabbit

  • New Features

    • Added new example projects for multiple frameworks (CrewAI, LangChain, LlamaIndex, Mastra, Pydantic, Vercel AI SDK) featuring concierge-style AI agents and local guide agents with intent classification and agent handoff.
    • Introduced multi-agent workflows, detailed agent configurations, and enhanced project setup including environment validation and server entry points.
    • Provided comprehensive configuration files for project metadata, development, deployment, and bundler settings.
  • Documentation

    • Completely rewrote and expanded README files for all frameworks to include detailed onboarding, usage instructions, environment setup, troubleshooting, and community support.
    • Added extensive API reference and best practices documentation for Agentuity SDKs in Python and JavaScript.
    • Updated Discord community invite links across documentation.
  • Chores

    • Added standardized .gitignore, .python-version, and TypeScript configuration files tailored to each framework.
    • Updated project metadata, dependencies, and Python version constraints to align with latest requirements.
    • Removed deprecated example files and configurations from previous implementations.
  • Style

    • Removed extraneous blank lines in documentation files for improved clarity and formatting.

@mcongrove mcongrove requested review from jhaynie and rblalock May 26, 2025 19:11
@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 26, 2025

Walkthrough

This update introduces new sample projects and extensive rewrites across multiple frameworks (CrewAI, LangChain, LlamaIndex, Mastra, Vercel, Pydantic) to demonstrate Agentuity agent development in Python, JavaScript, and TypeScript. It standardizes project metadata, configuration files, and directory structures, adds new agent implementations, and provides comprehensive onboarding documentation, while removing outdated or redundant files.

Changes

File(s) / Path(s) Change Summary
frameworks/crewai/, frameworks/langchain/, frameworks/llamaindex/, frameworks/mastra/, frameworks/vercel/, other-examples/ Added new or extensively rewritten sample projects, agent implementations, and onboarding documentation for each framework. Standardized project structure, metadata, and configuration (agentuity.yaml, pyproject.toml/package.json, .gitignore, .python-version/tsconfig.json, README.md).
frameworks/crewai/agents/Concierge/agent.py, frameworks/langchain/agents/Concierge/agent.py, frameworks/llamaindex/agents/Concierge/agent.py, frameworks/mastra/src/agents/Concierge/index.ts, frameworks/vercel/src/agents/Concierge/index.ts, frameworks/pydantic/agents/Concierge/agent.py Introduced new Concierge agent implementations that classify user intent and route requests, using Anthropic Claude-3 models.
frameworks/langchain/agents/LocalGuide/agent.py, frameworks/llamaindex/agents/LocalGuide/agent.py, frameworks/mastra/src/agents/LocalGuide/index.ts, frameworks/vercel/src/agents/LocalGuide/index.ts, frameworks/pydantic/agents/LocalGuide/agent.py Added new LocalGuide agent implementations specializing in city-specific recommendations using Anthropic Claude-3 models.
frameworks/crewai/agents/Concierge/config/agents.yaml, frameworks/crewai/agents/Concierge/config/tasks.yaml Added agent and task YAML configurations for CrewAI sample.
frameworks/crewai/agents/Concierge/crew.py Introduced a new Crew class for orchestrating agent workflows in CrewAI.
frameworks/crewai/server.py, frameworks/langchain/server.py, frameworks/llamaindex/server.py, frameworks/pydantic/server.py Added new server entry points with environment validation and autostart logic for each Python-based framework.
frameworks/crewai/agentuity.yaml, frameworks/langchain/agentuity.yaml, frameworks/llamaindex/agentuity.yaml, frameworks/mastra/agentuity.yaml, frameworks/vercel/agentuity.yaml, frameworks/pydantic/agentuity.yaml Updated or added project configuration files to use latest schema, new agent definitions, and standardized runtime commands and paths.
frameworks/crewai/pyproject.toml, frameworks/langchain/pyproject.toml, frameworks/llamaindex/pyproject.toml, frameworks/pydantic/pyproject.toml Updated project metadata, dependencies, and Python version constraints.
frameworks/mastra/package.json, frameworks/vercel/package.json, frameworks/langgraph/package.json Added or updated Node.js/Bun project manifests with scripts and dependencies for each JavaScript/TypeScript sample.
frameworks/mastra/tsconfig.json, frameworks/vercel/tsconfig.json, frameworks/langgraph/tsconfig.json Added or updated TypeScript configuration files for Bun/TypeScript projects.
frameworks/mastra/biome.json, frameworks/vercel/biome.json, frameworks/langgraph/biome.json Added Biome configuration files for formatting and linting.
frameworks/crewai/.cursor/rules/agent.mdc, frameworks/langchain/.cursor/rules/agent.mdc, frameworks/llamaindex/.cursor/rules/agent.mdc, frameworks/pydantic/.cursor/rules/agent.mdc Added or updated cursor rules for agent implementation guidelines.
frameworks/crewai/.cursor/rules/sdk.mdc, frameworks/langchain/.cursor/rules/sdk.mdc, frameworks/llamaindex/.cursor/rules/sdk.mdc, frameworks/pydantic/.cursor/rules/sdk.mdc, frameworks/langgraph/.cursor/rules/sdk.mdc, frameworks/mastra/.cursor/rules/sdk.mdc, frameworks/vercel/.cursor/rules/sdk.mdc Added or updated SDK API reference documentation for Python and JavaScript SDKs.
frameworks/vercel/.cursor/rules/agentuity.mdc, frameworks/pydantic/.cursor/rules/agentuity.mdc Added cursor rules for agentuity.yaml configuration guidelines.
frameworks/crewai/.gitignore, frameworks/langchain/.gitignore, frameworks/llamaindex/.gitignore, frameworks/mastra/.gitignore, frameworks/vercel/.gitignore Added or updated .gitignore files for each framework.
frameworks/crewai/.python-version, frameworks/langchain/.python-version, frameworks/llamaindex/.python-version, frameworks/pydantic/.python-version Added .python-version files specifying Python 3.12.
frameworks/crewai/agents/init.py, frameworks/crewai/agents/Concierge/init.py, frameworks/langchain/agents/init.py, frameworks/langchain/agents/Concierge/init.py, frameworks/llamaindex/agents/init.py, frameworks/llamaindex/agents/Concierge/init.py, frameworks/pydantic/agents/init.py, frameworks/pydantic/agents/Concierge/init.py Added empty init.py files to initialize Python packages.
frameworks/langgraph/** Added new sample project for LangGraph with Bun/TypeScript, including agent implementations, configuration, and documentation.
other-examples/crewai-researcher/, other-examples/llamaindex-tools/ Added new example projects with README and configuration files.
frameworks/mastra/mastra-simple-prompt/, frameworks/mastra/mastra-weather-workflow/, frameworks/vercel-ai-sdk/**, agentuity/sdk-js/streaming-example/.editorconfig Deleted outdated or redundant sample projects, agent implementations, and configuration files.
frameworks/crewai/README.md, frameworks/langchain/README.md, frameworks/llamaindex/README.md, frameworks/mastra/README.md, frameworks/vercel/README.md, other-examples/crewai-researcher/README.md, other-examples/llamaindex-tools/README.md, frameworks/pydantic/README.md Added or extensively rewrote onboarding and usage documentation for each framework and example.
frameworks/crewai/README.md Removed extraneous blank lines.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant ConciergeAgent
    participant LocalGuideAgent
    participant IntentClassifier (LLM)
    participant KeyValueStore

    User->>ConciergeAgent: Send request (text prompt)
    ConciergeAgent->>KeyValueStore: Store prompt in user history
    ConciergeAgent->>IntentClassifier: Classify user intent
    IntentClassifier-->>ConciergeAgent: Return agent type (e.g., "LocalGuide")
    alt Intent is LocalGuide
        ConciergeAgent->>LocalGuideAgent: Handoff request (with prompt)
        LocalGuideAgent-->>ConciergeAgent: Return recommendation
        ConciergeAgent-->>User: Respond with recommendation
    else Unknown intent
        ConciergeAgent-->>User: Respond with fallback message
    end
Loading

Suggested reviewers

  • rblalock

Poem

🐇
In burrows deep, new code takes flight,
With agents wise and docs so bright.
Frameworks polished, guides anew,
Each sample clear, each README true.
From Python, Bun, to TypeScript's den,
The rabbit hops—review again!
Hooray for change, let's ship, my friend!


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

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: 26

🔭 Outside diff range comments (1)
frameworks/llamaindex/agentuity.yaml (1)

42-44: ⚠️ Potential issue

Invalid CPU resource unit.

Kubernetes CPU requests should use the lowercase "m" suffix for millicores (e.g., 500m), not 500M. Update accordingly to avoid deployment errors.

 resources:
-    cpu: 500M
+    cpu: 500m
♻️ Duplicate comments (1)
frameworks/langgraph/.cursor/rules/sdk.mdc (1)

37-37: Same syntax issue as in Vercel documentation.

The request.data.object<T>: Promise<T> is missing parentheses - should be request.data.object<T>(): Promise<T>.

🧹 Nitpick comments (68)
frameworks/langgraph/.editorconfig (1)

6-12: Consider enforcing a final newline
Most projects set insert_final_newline = true to guarantee POSIX-style files and avoid diffs caused by a missing newline at EOF. If it aligns with your other .editorconfig files, you may want to flip this to true.

frameworks/llamaindex/.editorconfig (1)

12-12: Consider enforcing final newline

It's generally recommended to set insert_final_newline = true to ensure POSIX-compatible text files and avoid potential tooling or diff noise issues due to missing trailing newlines.

Proposed change:

-insert_final_newline = false
+insert_final_newline = true
frameworks/langgraph/.gitignore (2)

1-2: Prefer rooted and explicit directory ignore for dependencies
Using a plain node_modules entry will ignore any file or folder named node_modules anywhere in the tree. To make it clear this is the project-root dependency directory and avoid unintended matches, anchor it and mark it as a folder:

-node_modules
+/node_modules/

36-36: Anchor the build output directory in .gitignore
To clearly signal that .agentuity is a directory, and not accidentally ignore files with similar names, add a trailing slash and anchor it:

-.agentuity
+/.agentuity/
frameworks/mastra/biome.json (1)

17-23: Consider adding TypeScript formatting.
Since Mastra’s code includes TypeScript files (.ts), you might add a "typescript" section under the root—mirroring the "javascript" formatter settings—to fine-tune TS formatting (quotes, semicolons, etc.).

frameworks/vercel/.gitignore (1)

33-36: Consider ignoring the Vercel CLI directory.
Add .vercel/ to prevent committing Vercel’s per-project configuration folder:

+ .vercel/
frameworks/mastra/README.md (2)

61-66: Specify a language for the code block.
The project-structure snippet currently uses a fenced code block without a language identifier, which may trigger MD040 lint errors. For example:

- ```
+ ```bash
├── agents/             # Agent definitions and implementations
├── node_modules/       # Dependencies
├── package.json        # Project dependencies and scripts
└── agentuity.yaml      # Agentuity project configuration

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.17.2)</summary>

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

</details>

</details>

---

`92-94`: **Use descriptive link text.**  
Instead of showing a raw URL as link text, use a human-readable label. For example:
```diff
- [https://agentuity.dev/SDKs/javascript](https://agentuity.dev/SDKs/javascript)
+ [JavaScript SDK documentation](https://agentuity.dev/SDKs/javascript)
frameworks/langgraph/README.md (1)

13-16: Include Agentuity CLI version in prerequisites
For consistency with other framework READMEs, specify the minimum required Agentuity CLI version (e.g., >=0.0.130).

frameworks/pydantic/.cursor/rules/sdk.mdc (1)

83-87: Update deprecated logging method
The logger.warn method is deprecated in favor of logger.warning. Please update this to ensure compliance with the latest Python logging API.

Apply this diff:

- - `context.logger.warn(message, *args, **kwargs)`: Logs a warning message
+ - `context.logger.warning(message, *args, **kwargs)`: Logs a warning message
frameworks/pydantic/pyproject.toml (2)

4-4: Add a meaningful project description
The description field is currently empty, which may impact discoverability and readability of the project metadata. Consider providing a concise summary of the sample Pydantic agent project.

Apply:

-description = ""
+description = "Sample UV runtime Pydantic agent example for Agentuity"

5-5: Refine Python version constraints
Using <=3.12 is functionally correct, but it's more conventional to specify an upper bound with <3.13 to allow patch updates within Python 3.12.

Apply:

-requires-python = ">=3.10, <=3.12"
+requires-python = ">=3.10, <3.13"
frameworks/crewai/agents/Concierge/config/tasks.yaml (1)

1-4: Add newline at end of file: The YAML file currently lacks a trailing newline, which many YAML parsers expect. Please ensure the file ends with a blank line.

Verify placeholder syntax: Confirm that {query} matches the templating format used by the Concierge crew (e.g., Python .format() or f-string) to avoid runtime errors.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 4-4: no new line character at the end of file

(new-line-at-end-of-file)

other-examples/crewai-researcher/pyproject.toml (1)

1-17: Verify existence of license file: The license = { file = "LICENSE.md" } entry assumes a LICENSE.md file. Please ensure it exists in other-examples/crewai-researcher/.

Enhance project metadata: Consider adding Trove classifiers (e.g., classifiers = [...]) and an authors field to improve package discoverability and PyPI metadata completeness.

frameworks/langgraph/tsconfig.json (1)

1-23: Consider enabling incremental builds: To speed up TypeScript compilation, you could add:

{
  "compilerOptions": {
    "incremental": true,
    "tsBuildInfoFile": "./.tsbuildinfo"
  }
}

This will store build info and improve subsequent compile times.

frameworks/mastra/.gitignore (1)

15-15: Fix potential typo in log pattern.

The pattern _.log appears to be a typo and should likely be *.log to match all log files.

-_.log
+*.log
frameworks/vercel/src/agents/Concierge/index.ts (2)

11-12: Consider input validation for the prompt.

The prompt extraction uses nullish coalescing with a default, but doesn't validate the input. Consider adding basic validation to ensure the prompt is meaningful.

  const prompt =
-    (await req.data.text()) ?? 'Recommend dinner spots in Austin, TX';
+    (await req.data.text())?.trim() || 'Recommend dinner spots in Austin, TX';

28-28: Document the limitation to LocalGuide agent.

The schema currently only supports 'LocalGuide' as an agent type. Consider adding a comment to document this limitation and potential for future expansion.

    schema: z.object({
+      // Currently limited to LocalGuide - expand as more agents become available
      agentType: z.enum(['LocalGuide']),
    }),
frameworks/langchain/pyproject.toml (1)

4-4: Add a meaningful project description.

The empty description field should be populated to provide clarity about the project's purpose.

-description = ""
+description = "LangChain framework example for Agentuity using UV runtime"
frameworks/pydantic/agents/Concierge/agent.py (1)

8-10: Consider improving the KV store key structure.

The current key structure uses "user-history" as the key and runId as the field. Consider if this provides the intended data organization or if a more specific key structure would be better.

-    await context.kv.set("user-history", str(context.runId), {
+    await context.kv.set(f"user-history:{context.runId}", "interaction", {
frameworks/crewai/agents/Concierge/agent.py (1)

16-20: Consider adding error handling for crew operations.

The crew.kickoff() operation could potentially fail. Consider wrapping the crew operations in a try-catch block to handle any exceptions gracefully.

-    concierge = Concierge()
-    crew = concierge.crew(prompt)
-    result = crew.kickoff()
-    
-    return response.text(str(result))
+    try:
+        concierge = Concierge()
+        crew = concierge.crew(prompt)
+        result = crew.kickoff()
+        
+        return response.text(str(result))
+    except Exception as e:
+        return response.text(f"Sorry, I encountered an error: {str(e)}")
frameworks/pydantic/README.md (1)

68-74: Fix the fenced code block language specification.

The project structure code block is missing a language specification, which is flagged by the markdown linter.

-```
+```text
 ├── agents/             # Agent definitions and implementations
 ├── .venv/              # Virtual environment (created by UV)
 ├── pyproject.toml      # Project dependencies and metadata
 ├── server.py           # Server entry point
 └── agentuity.yaml      # Agentuity project configuration
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

68-68: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/pydantic/agents/LocalGuide/agent.py (1)

10-22: Fix system prompt formatting and improve content structure.

The system prompt has inconsistent indentation that affects readability, and the content could be better structured.

Apply this diff to improve formatting and structure:

         system_prompt=(
-            """You are local city guide, an AI assistant specializing in recommendations and information.
-				
-            Your expertise includes:
-            - City-specific food and restaurant recommendations with local favorites
-            - Entertainment options including museums, attractions, nightlife, and beaches
-            - Transportation advice including public transit, ride-sharing, and navigation tips
-            - Local cultural context, history, and city-specific tips
-
-            Always provide specific, actionable information tailored to the city you are in.
-            When making recommendations, include neighborhood information and local context.
-            Include relevant details like price ranges, accessibility, and cultural significance."""
+            """You are a local city guide, an AI assistant specializing in recommendations and information.
+            
+            Your expertise includes:
+            - City-specific food and restaurant recommendations with local favorites
+            - Entertainment options including museums, attractions, nightlife, and beaches
+            - Transportation advice including public transit, ride-sharing, and navigation tips
+            - Local cultural context, history, and city-specific tips
+            
+            Always provide specific, actionable information tailored to the city you are in.
+            When making recommendations, include neighborhood information and local context.
+            Include relevant details like price ranges, accessibility, and cultural significance."""
other-examples/llamaindex-tools/README.md (1)

22-22: Address style issue: redundant adverb usage.

The phrase "To run this agent locally" uses "locally" twice in proximity (once in the heading "Running Locally" and once in the sentence).

Apply this diff to improve readability:

-To run this agent locally:
+To run this agent:
🧰 Tools
🪛 LanguageTool

[style] ~22-~22: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...` ## Running Locally To run this agent locally: ```bash # Navigate to the agent direc...

(ADVERB_REPETITION_PREMIUM)

frameworks/llamaindex/agents/LocalGuide/agent.py (2)

8-22: Fix indentation inconsistencies in the system prompt.

The agent configuration is solid, but the system prompt has mixed indentation that should be cleaned up for better readability and maintainability.

Apply this diff to fix the indentation:

-        system_prompt="""You are local city guide, an AI assistant specializing in recommendations and information.
-			
-            Your expertise includes:
-            - City-specific food and restaurant recommendations with local favorites
-            - Entertainment options including museums, attractions, nightlife, and beaches
-            - Transportation advice including public transit, ride-sharing, and navigation tips
-            - Local cultural context, history, and city-specific tips
-
-            Always provide specific, actionable information tailored to the city you are in.
-            When making recommendations, include neighborhood information and local context.
-            Include relevant details like price ranges, accessibility, and cultural significance.""",
+        system_prompt="""You are local city guide, an AI assistant specializing in recommendations and information.
+
+Your expertise includes:
+- City-specific food and restaurant recommendations with local favorites
+- Entertainment options including museums, attractions, nightlife, and beaches
+- Transportation advice including public transit, ride-sharing, and navigation tips
+- Local cultural context, history, and city-specific tips
+
+Always provide specific, actionable information tailored to the city you are in.
+When making recommendations, include neighborhood information and local context.
+Include relevant details like price ranges, accessibility, and cultural significance.""",

24-31: Fix the unnecessary f-string prefix.

The error handling logic is well-implemented, but there's an unnecessary f-string prefix that should be removed.

Apply this diff to fix the static analysis issue:

-        return response.text(f"I'm sorry, I encountered an error while processing your request.")
+        return response.text("I'm sorry, I encountered an error while processing your request.")
🧰 Tools
🪛 Ruff (0.11.9)

31-31: f-string without any placeholders

Remove extraneous f prefix

(F541)

frameworks/langchain/.cursor/rules/agent.mdc (1)

24-34: Consider enhancing interface descriptions for better developer guidance.

The descriptions are accurate but could be more detailed to better guide developers on how to use each interface effectively.

Consider expanding the descriptions with examples:

 ### AgentRequest
 
-The AgentRequest class provides a set of helper methods and properties which can be used for working with data that has been passed to the Agent.
+The AgentRequest class provides a set of helper methods and properties which can be used for working with data that has been passed to the Agent. Common methods include `await request.data.text()` for text input and `await request.data.json()` for JSON data.
 
 ### AgentResponse
 
-The AgentResponse class provides a set of helper methods for responding with different data formats from the Agent.
+The AgentResponse class provides a set of helper methods for responding with different data formats from the Agent. Use `response.text()`, `response.json()`, or `response.binary()` to format your responses appropriately.
 
 ### AgentContext
 
-The AgentContext has information specific to the incoming Agent request and a set of helper methods for accessing services like KeyValue storage and Vector storage.
+The AgentContext has information specific to the incoming Agent request and a set of helper methods for accessing services like KeyValue storage and Vector storage. Always use `context.logger` for logging within your agents.
frameworks/llamaindex/server.py (1)

8-16: Good environment validation with room for improvement.

The environment variable checks are well-implemented with clear error messages. However, consider these improvements:

  1. The ANSI color codes may not render properly in all terminal environments
  2. The UV-specific check (line 12) is quite specific and may break if deployment environments change

Consider this refactor for more robust error handling:

-        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"
-            )
+        print("ERROR: AGENTUITY_API_KEY or AGENTUITY_SDK_KEY is not set.")
+        print("This should have been set automatically by the Agentuity CLI or picked up from the .env file.")
+        if os.path.exists(".env"):
+            print("HINT: Try running with `uv run --env-file .env server.py` or ensure your .env file is loaded.")
frameworks/pydantic/.cursor/rules/agent.mdc (1)

7-22: Comprehensive guidelines with opportunity for enhanced examples.

The agent development guidelines are clear and well-structured. The example demonstrates the basic pattern correctly.

Consider enhancing the example to include error handling and more realistic use cases:

 ```python
 from agentuity import AgentRequest, AgentResponse, AgentContext
 
 async def run(request: AgentRequest, response: AgentResponse, context: AgentContext):
-    return response.json({"hello": "world"})
+    try:
+        # Extract user input
+        user_message = await request.data.text()
+        context.logger.info("Processing request: %s", user_message)
+        
+        # Process the request (add your logic here)
+        result = {"message": f"Processed: {user_message}"}
+        
+        return response.json(result)
+    except Exception as e:
+        context.logger.error("Agent execution failed: %s", e)
+        return response.json({"error": "An error occurred processing your request"})

</blockquote></details>
<details>
<summary>frameworks/vercel/tsconfig.json (1)</summary><blockquote>

`13-16`: **Reconsider disabled TypeScript compiler checks for better code quality.**

The configuration disables several useful TypeScript checks that help maintain code quality:

- `noPropertyAccessFromIndexSignature: false` - This allows potentially unsafe property access from index signatures
- `noUnusedLocals: false` and `noUnusedParameters: false` - These disable detection of dead code



Consider enabling these checks for better type safety and code quality:

```diff
-    "noPropertyAccessFromIndexSignature": false,
-    "noUnusedLocals": false,
-    "noUnusedParameters": false,
+    "noPropertyAccessFromIndexSignature": true,
+    "noUnusedLocals": true,
+    "noUnusedParameters": true,

If these cause issues in the current codebase, consider addressing the underlying code quality issues rather than disabling the checks.

frameworks/langgraph/src/agents/Concierge/index.ts (1)

11-12: Validate user input and improve default fallback.

The current implementation doesn't validate the user input and uses a location-specific default that may not be appropriate for all users.

-  const prompt =
-    (await req.data.text()) ?? 'Recommend dinner spots in Austin, TX';
+  let prompt;
+  try {
+    prompt = await req.data.text();
+  } catch (error) {
+    ctx.logger.error('Failed to extract user input: %s', error);
+    return resp.text("Sorry, I couldn't understand your request.");
+  }
+  
+  if (!prompt || prompt.trim().length === 0) {
+    prompt = 'How can I help you today?';
+  }
frameworks/crewai/agents/Concierge/config/agents.yaml (1)

7-7: Fix trailing spaces.

Remove the trailing spaces on this line to comply with YAML formatting standards.

 llm: claude-3-7-sonnet-latest
-  
+
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 7-7: trailing spaces

(trailing-spaces)

frameworks/llamaindex/.cursor/rules/agent.mdc (1)

35-35: Add missing newline at end of file.

Add a newline character at the end of the file to follow standard file formatting conventions.

 The AgentContext has information specific to the incoming Agent request and a set of helper methods for accessing services like KeyValue storage and Vector storage.
+
other-examples/crewai-researcher/agentuity.yaml (1)

59-59: Add missing newline at end of file.

Add a newline character at the end of the file to follow standard file formatting conventions.

     name: crewai-agent
+
frameworks/langchain/server.py (1)

35-35: Add missing newline at end of file.

Add a newline character at the end of the file to follow Python file formatting conventions.

     autostart()
+
frameworks/langchain/agents/Concierge/agent.py (2)

34-40: Consider making intent classification more robust.

The current implementation uses exact string matching for intent classification, which is fragile. The LLM might return variations like "localguide", "Local Guide", or include extra text.

Apply this diff to make intent matching more flexible:

-    if user_intent == "LocalGuide":
+    if "localguide" in user_intent.lower().strip():

7-7: Add input validation for the prompt.

Consider validating the extracted prompt to ensure it's not empty or contains only whitespace, which could lead to poor LLM responses.

Apply this diff to add basic validation:

-    prompt = await request.data.text() or "Recommend dinner spots in Austin, TX"
+    raw_prompt = await request.data.text()
+    prompt = raw_prompt.strip() if raw_prompt else ""
+    if not prompt:
+        prompt = "Recommend dinner spots in Austin, TX"
frameworks/vercel/src/agents/LocalGuide/index.ts (2)

15-27: Clean up the system prompt formatting.

The system prompt has inconsistent indentation with tabs mixed with spaces, which affects readability and maintainability.

Apply this diff to clean up the formatting:

-      system: `
-				You are local city guide, an AI assistant specializing in recommendations and information.
-				
-				Your expertise includes:
-				- City-specific food and restaurant recommendations with local favorites
-				- Entertainment options including museums, attractions, nightlife, and beaches
-				- Transportation advice including public transit, ride-sharing, and navigation tips
-				- Local cultural context, history, and city-specific tips
-
-				Always provide specific, actionable information tailored to the city you are in.
-				When making recommendations, include neighborhood information and local context.
-				Include relevant details like price ranges, accessibility, and cultural significance.
-			`,
+      system: `You are a local city guide, an AI assistant specializing in recommendations and information.
+        
+Your expertise includes:
+- City-specific food and restaurant recommendations with local favorites
+- Entertainment options including museums, attractions, nightlife, and beaches
+- Transportation advice including public transit, ride-sharing, and navigation tips
+- Local cultural context, history, and city-specific tips
+
+Always provide specific, actionable information tailored to the city you are in.
+When making recommendations, include neighborhood information and local context.
+Include relevant details like price ranges, accessibility, and cultural significance.`,

10-10: Add input validation for the prompt.

Consider adding validation to ensure the prompt is not empty, which could lead to poor responses from the LLM.

Apply this diff to add basic validation:

-  const prompt = await req.data.text();
+  const prompt = await req.data.text();
+  
+  if (!prompt?.trim()) {
+    return resp.text("I need a specific question or request to help you with local recommendations.");
+  }
frameworks/pydantic/server.py (1)

28-32: Consider using more structured logging format.

The current logging format is minimal. For better debugging and production monitoring, consider including timestamps and module information.

Apply this diff to enhance the logging format:

-    logging.basicConfig(
-        stream=sys.stdout,
-        level=logging.INFO,
-        format="[%(levelname)-5.5s] %(message)s",
-    )
+    logging.basicConfig(
+        stream=sys.stdout,
+        level=logging.INFO,
+        format="%(asctime)s [%(levelname)-5.5s] %(name)s: %(message)s",
+        datefmt="%Y-%m-%d %H:%M:%S",
+    )
frameworks/llamaindex/README.md (1)

69-74: Consider adding more detail to the project structure.

The project structure is helpful but could benefit from brief descriptions of what each directory/file contains.

Apply this diff to enhance the project structure section:

-├── agents/             # Agent definitions and implementations
-├── .venv/              # Virtual environment (created by UV)
-├── pyproject.toml      # Project dependencies and metadata
-├── server.py           # Server entry point
-└── agentuity.yaml      # Agentuity project configuration
+├── agents/             # Agent definitions and implementations
+│   ├── Concierge/      # Intent classification and routing agent
+│   └── LocalGuide/     # Local recommendations agent
+├── .venv/              # Virtual environment (created by UV)
+├── pyproject.toml      # Project dependencies and metadata
+├── server.py           # Server entry point with environment validation
+└── agentuity.yaml      # Agentuity project configuration
other-examples/crewai-researcher/README.md (2)

24-26: Add language specification to code blocks.

The markdown linter indicates that fenced code blocks should have a language specified for better syntax highlighting and accessibility.

Apply this diff to add language specifications:

-```
+```bash
 OPENAI_API_KEY=your_openai_api_key
-```
+```
-```
+```text
 Research and create a report on quantum computing
-```
+```

Also applies to: 62-64

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

24-24: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


29-29: Consider removing redundant adverb usage.

The static analysis tool suggests removing redundant usage of "locally" in this sentence for better readability.

Apply this diff:

-To run this agent locally:
+To run this agent:
🧰 Tools
🪛 LanguageTool

[style] ~29-~29: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...` ## Running Locally To run this agent locally: ```bash # Navigate to the agent direc...

(ADVERB_REPETITION_PREMIUM)

frameworks/langgraph/src/agents/LocalGuide/index.ts (1)

24-36: Fix inconsistent indentation in system prompt.

The system prompt uses tabs instead of consistent spacing, which can cause formatting issues and reduces readability.

Apply this diff to fix the indentation:

         {
           role: 'system',
           content: `
-						You are local city guide, an AI assistant specializing in recommendations and information.
-						
-						Your expertise includes:
-						- City-specific food and restaurant recommendations with local favorites
-						- Entertainment options including museums, attractions, nightlife, and beaches
-						- Transportation advice including public transit, ride-sharing, and navigation tips
-						- Local cultural context, history, and city-specific tips
-
-						Always provide specific, actionable information tailored to the city you are in.
-						When making recommendations, include neighborhood information and local context.
-						Include relevant details like price ranges, accessibility, and cultural significance.
-					`,
+            You are local city guide, an AI assistant specializing in recommendations and information.
+            
+            Your expertise includes:
+            - City-specific food and restaurant recommendations with local favorites
+            - Entertainment options including museums, attractions, nightlife, and beaches
+            - Transportation advice including public transit, ride-sharing, and navigation tips
+            - Local cultural context, history, and city-specific tips
+
+            Always provide specific, actionable information tailored to the city you are in.
+            When making recommendations, include neighborhood information and local context.
+            Include relevant details like price ranges, accessibility, and cultural significance.
+          `,
frameworks/llamaindex/agents/Concierge/agent.py (1)

16-16: Consider making the model configurable.

The model name is hard-coded, which makes it difficult to update or test with different models without code changes.

Consider using an environment variable or configuration for the model name:

+import os
+
 # Inside the function:
-        llm=Anthropic(model="claude-3-7-sonnet-latest", max_retries=3),
+        llm=Anthropic(model=os.getenv("ANTHROPIC_MODEL", "claude-3-7-sonnet-latest"), max_retries=3),
frameworks/mastra/index.ts (2)

7-12: Improve Node.js runtime detection reliability.

The current detection method using process.env._ may not be reliable across all Node.js environments and versions. Consider a more robust detection approach.

Apply this diff for more reliable runtime detection:

-  const cmd = process.env._ || '';
-  if (cmd.endsWith('node')) {
+  if (typeof process !== 'undefined' && process.versions && process.versions.node) {
     console.error(
       '\x1b[31m[ERROR] Re-run the command with `node --env-file .env index.ts`\x1b[0m'
     );
   }

20-28: Add fallback for process.isBun property.

The process.isBun property might not be available in all environments. Consider adding a fallback check.

Apply this diff to add a fallback:

-  if (process.isBun) {
+  if (process.isBun || process.versions?.bun) {
     console.warn(
       '\x1b[31m[WARN] Recommend running `agentuity dev` to run your project locally instead of bun run start.\x1b[0m'
     );
   } else {
frameworks/mastra/src/agents/Concierge/index.ts (2)

34-42: Consider case-insensitive intent matching for consistency.

For consistency with the suggested improvement in the LlamaIndex version, consider making the intent comparison case-insensitive.

Apply this diff for more robust intent matching:

-  if (userIntent === 'LocalGuide') {
+  if (userIntent?.toLowerCase() === 'localguide') {

21-21: Consider making the model configurable.

Similar to the LlamaIndex implementation, the model name is hard-coded. For consistency across frameworks, consider making this configurable.

Consider using environment variables for the model configuration:

-    model: anthropic('claude-3-7-sonnet-latest'),
+    model: anthropic(process.env.ANTHROPIC_MODEL || 'claude-3-7-sonnet-latest'),
frameworks/crewai/.cursor/rules/agent.mdc (2)

17-22: Enhance the example with error handling and input validation.

The current example is minimal but could be improved to demonstrate best practices for production agents.

Consider expanding the example to include error handling and input validation:

 from agentuity import AgentRequest, AgentResponse, AgentContext

 async def run(request: AgentRequest, response: AgentResponse, context: AgentContext):
+    try:
+        # Validate input exists
+        if not request.data:
+            context.logger.error("No data provided in request")
+            return response.json({"error": "No input data provided"})
+        
+        # Process the request
+        context.logger.info("Processing agent request")
         return response.json({"hello": "world"})
+    except Exception as e:
+        context.logger.error("Error processing request: %s", str(e))
+        return response.json({"error": "Internal server error"})

24-34: Expand class descriptions with specific examples.

The class descriptions are helpful but could be more detailed with specific method examples to guide developers.

Consider adding specific method examples for each class:

 ### AgentRequest

-The AgentRequest class provides a set of helper methods and properties which can be used for working with data that has been passed to the Agent.
+The AgentRequest class provides helper methods for accessing input data:
+- `request.data.text()` - Get request data as text
+- `request.data.json()` - Get request data as JSON object
+- `request.headers` - Access request headers

 ### AgentResponse

-The AgentResponse class provides a set of helper methods for responding with different data formats from the Agent.
+The AgentResponse class provides methods for formatting responses:
+- `response.json(data)` - Return JSON response
+- `response.text(data)` - Return text response
+- `response.html(data)` - Return HTML response

 ### AgentContext

-The AgentContext has information specific to the incoming Agent request and a set of helper methods for accessing services like KeyValue storage and Vector storage.
+The AgentContext provides access to services and logging:
+- `context.logger.info/error/warn()` - Structured logging
+- `context.kv` - Key-value storage access
+- `context.vector` - Vector storage access
+- `context.config` - Agent configuration
frameworks/langchain/agents/LocalGuide/agent.py (2)

6-7: Add input validation for robustness.

Consider adding validation to ensure the request contains valid data before processing.

 async def run(request: AgentRequest, response: AgentResponse, context: AgentContext):
+    if not request.data:
+        context.logger.error("No data provided in request")
+        return response.text("I'm sorry, no input was provided.")
+    
     prompt = await request.data.text()
+    
+    if not prompt or not prompt.strip():
+        context.logger.error("Empty or whitespace-only prompt provided")
+        return response.text("I'm sorry, please provide a valid question or request.")

13-23: Fix indentation in the system prompt.

The system prompt has inconsistent indentation with tab characters mixed with spaces, which can cause issues.

             (
                 "system",
-                """You are local city guide, an AI assistant specializing in recommendations and information.
-				
-				Your expertise includes:
-				- City-specific food and restaurant recommendations with local favorites
-				- Entertainment options including museums, attractions, nightlife, and beaches
-				- Transportation advice including public transit, ride-sharing, and navigation tips
-				- Local cultural context, history, and city-specific tips
+                """You are a local city guide, an AI assistant specializing in recommendations and information.
+                
+                Your expertise includes:
+                - City-specific food and restaurant recommendations with local favorites
+                - Entertainment options including museums, attractions, nightlife, and beaches
+                - Transportation advice including public transit, ride-sharing, and navigation tips
+                - Local cultural context, history, and city-specific tips

-				Always provide specific, actionable information tailored to the city you are in.
-				When making recommendations, include neighborhood information and local context.
-				Include relevant details like price ranges, accessibility, and cultural significance.""",
+                Always provide specific, actionable information tailored to the city you are in.
+                When making recommendations, include neighborhood information and local context.
+                Include relevant details like price ranges, accessibility, and cultural significance.""",
             ),
frameworks/vercel/agentuity.yaml (2)

34-47: Review the extensive deployment arguments.

The deployment configuration includes many restrictive arguments that might be overly conservative for typical deployments.

Consider if all these restrictions are necessary for production deployments:

deployment:
  command: bun
  args:
    - run
    - --no-install
    - --prefer-offline
    - --silent
    # These flags might be overly restrictive:
    - --no-macros  # May break legitimate macro usage
    - --no-global-search-paths  # Could break module resolution
    - --disallow-code-generation-from-strings  # Very restrictive
    - --no-addons  # Prevents native addons
    - .agentuity/index.js

You might want to start with a more minimal configuration and add restrictions as needed:

 deployment:
   command: bun
   args:
     - run
     - --no-install
     - --prefer-offline
     - --silent
-    - --no-macros
-    - --no-global-search-paths
     - --report-uncaught-exception
     - --disable-sigusr1
-    - --disallow-code-generation-from-strings
-    - --no-addons
-    - --no-deprecation
     - .agentuity/index.js

49-55: Consider if resource limits are appropriate.

The resource allocations seem quite conservative for modern applications. Depending on the complexity of your agents, these might be insufficient.

Consider adjusting based on your actual resource needs:

   resources:
     # The memory requirements
-    memory: 250Mi
+    memory: 512Mi  # Consider increasing for AI workloads
     # The CPU requirements
-    cpu: 500M
+    cpu: 1000M     # AI agents often benefit from more CPU
     # The disk size requirements
     disk: 100Mi
frameworks/langchain/README.md (1)

68-74: Specify language for code block.

The project structure code block lacks a language identifier, which may trigger markdownlint errors (MD040). Consider updating it to something like bash or plain to improve linting and readability.

- ```
+ ```bash
├── agents/             # Agent definitions and implementations
├── .venv/              # Virtual environment (created by UV)
├── pyproject.toml      # Project dependencies and metadata
├── server.py           # Server entry point
└── agentuity.yaml      # Agentuity project configuration
- ```
+ ```
frameworks/vercel/README.md (1)

61-66: Specify language for project structure code block.

The code fence for the project structure is missing a language identifier, which may trigger markdownlint MD040. Adding a language (e.g., bash or text) will improve linting and readability.

- ```
+ ```bash
├── agents/             # Agent definitions and implementations
├── node_modules/       # Dependencies
├── package.json        # Project dependencies and scripts
└── agentuity.yaml      # Agentuity project configuration
- ```
+ ```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/crewai/pyproject.toml (1)

4-9: Refine metadata and dependency specs.

  • The description is empty; consider adding a brief project summary or referencing a README (readme = "README.md") to improve PyPI packaging.
  • The Python version upper bound "<=3.12" could be clarified as <3.13 to follow semantic versioning and include all 3.12.x releases.
[project]
-name = "sample-uv-crewai"
-version = "0.1.0"
-description = ""
-requires-python = ">=3.10, <=3.12"
+name = "sample-uv-crewai"
+version = "0.1.0"
+description = "CrewAI UV runtime example with updated SDK"
+readme = "README.md"
+requires-python = ">=3.10, <3.13"
 dependencies = [
     "agentuity>=0.0.85",
     "crewai>=0.120.1",
     "langchain-anthropic>=0.3.13",
 ]
frameworks/mastra/src/agents/LocalGuide/index.ts (1)

31-31: Consider making maxSteps configurable.

The maxSteps: 5 parameter is hardcoded. Consider making this configurable based on request complexity or user preferences.

-    const result = await agent.generate(prompt, { maxSteps: 5 });
+    const maxSteps = req.metadata('maxSteps', 5);
+    const result = await agent.generate(prompt, { maxSteps });
frameworks/vercel/.cursor/rules/sdk.mdc (1)

37-37: Fix syntax inconsistency in method signature.

The request.data.object<T>: Promise<T> is missing parentheses - should be request.data.object<T>(): Promise<T> to match other method signatures.

- `request.data.object<T>: Promise<T>`: Gets the payload as a typed object
+ `request.data.object<T>(): Promise<T>`: Gets the payload as a typed object
frameworks/langgraph/.cursor/rules/sdk.mdc (1)

1-98: Consider consolidating identical SDK documentation.

This file is identical to frameworks/vercel/.cursor/rules/sdk.mdc. While consistency is good, having duplicate documentation files can lead to maintenance issues.

Consider one of these approaches:

  1. Centralize common documentation: Create a shared SDK documentation file that both frameworks reference
  2. Add framework-specific sections: Include LangGraph-specific examples or considerations
  3. Use symbolic links: Link to a common file to avoid duplication

If the duplication is intentional for framework isolation, consider adding a comment explaining this decision.

frameworks/langchain/.cursor/rules/sdk.mdc (1)

48-48: Add clarity to media-specific methods.

The documentation mentions "Media-specific methods: pdf(), png(), jpeg(), etc." but doesn't specify their signatures or parameters. Consider providing at least one example for clarity.

- Media-specific methods: `pdf()`, `png()`, `jpeg()`, `gif()`, `mp3()`, `mp4()`, etc.
+ Media-specific methods: `pdf(data, metadata)`, `png(data, metadata)`, `jpeg(data, metadata)`, `gif(data, metadata)`, `mp3(data, metadata)`, `mp4(data, metadata)`, etc.
frameworks/llamaindex/.cursor/rules/sdk.mdc (5)

17-24: Include necessary imports for code examples
The snippet uses Any as a return type—consider adding a note or import in the docs such as from typing import Any so readers can run the example without missing dependencies.


30-37: Consistent punctuation in list items
Some list entries under AgentRequest lack terminal periods, while others include them. For uniformity, either add periods to all or remove them across the board.


42-48: Clarify response.handoff signature
The signature response.handoff(params, args, metadata) may confuse readers—consider linking to the precise method signature or providing a brief example to illustrate its usage.


54-60: Group environment properties separately
The AgentContext section mixes general methods with environment properties. You might separate properties (e.g., sdkVersion, devmode, etc.) into their own sub-list or table for better scannability.


91-97: Expand best practices with examples
The Best Practices bullets are high-level. Consider linking to code snippets or pointing to sample agent implementations in the repo to reinforce each recommendation.

frameworks/langchain/agentuity.yaml (1)

8-15: Consider adding a non-empty project description
An empty description: "" is valid YAML but may be confusing. If there’s no meaningful description, you might omit the field entirely or add a placeholder.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7eb8007 and a0c11cd.

⛔ Files ignored due to path filters (15)
  • frameworks/crewai/uv.lock is excluded by !**/*.lock
  • frameworks/langchain/uv.lock is excluded by !**/*.lock
  • frameworks/langgraph/bun.lock is excluded by !**/*.lock
  • frameworks/langgraph/package-lock.json is excluded by !**/package-lock.json
  • frameworks/llamaindex/uv.lock is excluded by !**/*.lock
  • frameworks/mastra/bun.lock is excluded by !**/*.lock
  • frameworks/mastra/mastra-simple-prompt/package-lock.json is excluded by !**/package-lock.json
  • frameworks/mastra/package-lock.json is excluded by !**/package-lock.json
  • frameworks/pydantic/uv.lock is excluded by !**/*.lock
  • frameworks/vercel/bun.lock is excluded by !**/*.lock
  • frameworks/vercel/package-lock.json is excluded by !**/package-lock.json
  • other-examples/mastra-bird-checker/package-lock.json is excluded by !**/package-lock.json
  • other-examples/mastra-multi-step-workflow/package-lock.json is excluded by !**/package-lock.json
  • other-examples/mastra-tools/package-lock.json is excluded by !**/package-lock.json
  • other-examples/mastra-workflow/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (107)
  • README.md (0 hunks)
  • frameworks/crewai/.cursor/rules/agent.mdc (1 hunks)
  • frameworks/crewai/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/crewai/.editorconfig (1 hunks)
  • frameworks/crewai/.gitignore (1 hunks)
  • frameworks/crewai/.python-version (1 hunks)
  • frameworks/crewai/README.md (1 hunks)
  • frameworks/crewai/agents/Concierge/__init__.py (1 hunks)
  • frameworks/crewai/agents/Concierge/agent.py (1 hunks)
  • frameworks/crewai/agents/Concierge/config/agents.yaml (1 hunks)
  • frameworks/crewai/agents/Concierge/config/tasks.yaml (1 hunks)
  • frameworks/crewai/agents/Concierge/crew.py (1 hunks)
  • frameworks/crewai/agents/__init__.py (1 hunks)
  • frameworks/crewai/agentuity.yaml (3 hunks)
  • frameworks/crewai/pyproject.toml (1 hunks)
  • frameworks/crewai/server.py (1 hunks)
  • frameworks/langchain/.cursor/rules/agent.mdc (1 hunks)
  • frameworks/langchain/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/langchain/.editorconfig (1 hunks)
  • frameworks/langchain/.gitignore (1 hunks)
  • frameworks/langchain/.python-version (1 hunks)
  • frameworks/langchain/README.md (1 hunks)
  • frameworks/langchain/agents/Concierge/__init__.py (1 hunks)
  • frameworks/langchain/agents/Concierge/agent.py (1 hunks)
  • frameworks/langchain/agents/LocalGuide/agent.py (1 hunks)
  • frameworks/langchain/agents/__init__.py (1 hunks)
  • frameworks/langchain/agentuity.yaml (3 hunks)
  • frameworks/langchain/pyproject.toml (1 hunks)
  • frameworks/langchain/server.py (1 hunks)
  • frameworks/langchain/src/agents/langchain-agent/index.py (0 hunks)
  • frameworks/langgraph/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/langgraph/.editorconfig (1 hunks)
  • frameworks/langgraph/.gitignore (2 hunks)
  • frameworks/langgraph/README.md (1 hunks)
  • frameworks/langgraph/agentuity.yaml (1 hunks)
  • frameworks/langgraph/biome.json (1 hunks)
  • frameworks/langgraph/index.ts (1 hunks)
  • frameworks/langgraph/package.json (1 hunks)
  • frameworks/langgraph/src/agents/Concierge/index.ts (1 hunks)
  • frameworks/langgraph/src/agents/LocalGuide/index.ts (1 hunks)
  • frameworks/langgraph/tsconfig.json (1 hunks)
  • frameworks/llamaindex/.cursor/rules/agent.mdc (1 hunks)
  • frameworks/llamaindex/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/llamaindex/.editorconfig (1 hunks)
  • frameworks/llamaindex/.gitignore (1 hunks)
  • frameworks/llamaindex/.python-version (1 hunks)
  • frameworks/llamaindex/README.md (1 hunks)
  • frameworks/llamaindex/agents/Concierge/__init__.py (1 hunks)
  • frameworks/llamaindex/agents/Concierge/agent.py (1 hunks)
  • frameworks/llamaindex/agents/LocalGuide/agent.py (1 hunks)
  • frameworks/llamaindex/agents/__init__.py (1 hunks)
  • frameworks/llamaindex/agentuity.yaml (3 hunks)
  • frameworks/llamaindex/index.py (0 hunks)
  • frameworks/llamaindex/pyproject.toml (1 hunks)
  • frameworks/llamaindex/server.py (1 hunks)
  • frameworks/mastra/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/mastra/.editorconfig (1 hunks)
  • frameworks/mastra/.gitignore (1 hunks)
  • frameworks/mastra/README.md (1 hunks)
  • frameworks/mastra/agentuity.yaml (4 hunks)
  • frameworks/mastra/biome.json (1 hunks)
  • frameworks/mastra/index.ts (1 hunks)
  • frameworks/mastra/mastra-simple-prompt/README.md (0 hunks)
  • frameworks/mastra/mastra-simple-prompt/package.json (0 hunks)
  • frameworks/mastra/mastra-simple-prompt/src/agents/catfact/index.ts (0 hunks)
  • frameworks/mastra/mastra-weather-workflow/index.ts (0 hunks)
  • frameworks/mastra/mastra-weather-workflow/tsconfig.json (0 hunks)
  • frameworks/mastra/package.json (1 hunks)
  • frameworks/mastra/src/agents/Concierge/index.ts (1 hunks)
  • frameworks/mastra/src/agents/LocalGuide/index.ts (1 hunks)
  • frameworks/mastra/tsconfig.json (1 hunks)
  • frameworks/pydantic/.cursor/rules/agent.mdc (1 hunks)
  • frameworks/pydantic/.cursor/rules/agentuity.mdc (1 hunks)
  • frameworks/pydantic/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/pydantic/.editorconfig (1 hunks)
  • frameworks/pydantic/.gitignore (1 hunks)
  • frameworks/pydantic/.python-version (1 hunks)
  • frameworks/pydantic/README.md (1 hunks)
  • frameworks/pydantic/agents/Concierge/__init__.py (1 hunks)
  • frameworks/pydantic/agents/Concierge/agent.py (1 hunks)
  • frameworks/pydantic/agents/LocalGuide/agent.py (1 hunks)
  • frameworks/pydantic/agents/__init__.py (1 hunks)
  • frameworks/pydantic/agentuity.yaml (1 hunks)
  • frameworks/pydantic/pyproject.toml (1 hunks)
  • frameworks/pydantic/server.py (1 hunks)
  • frameworks/vercel-ai-sdk/README.md (0 hunks)
  • frameworks/vercel-ai-sdk/index.ts (0 hunks)
  • frameworks/vercel-ai-sdk/package.json (0 hunks)
  • frameworks/vercel-ai-sdk/src/agents/vercel-anthropic/index.ts (0 hunks)
  • frameworks/vercel-ai-sdk/src/agents/vercel-openai/index.ts (0 hunks)
  • frameworks/vercel/.cursor/rules/agentuity.mdc (1 hunks)
  • frameworks/vercel/.cursor/rules/sdk.mdc (1 hunks)
  • frameworks/vercel/.editorconfig (1 hunks)
  • frameworks/vercel/.gitignore (1 hunks)
  • frameworks/vercel/README.md (1 hunks)
  • frameworks/vercel/agentuity.yaml (4 hunks)
  • frameworks/vercel/biome.json (1 hunks)
  • frameworks/vercel/index.ts (1 hunks)
  • frameworks/vercel/package.json (1 hunks)
  • frameworks/vercel/src/agents/Concierge/index.ts (1 hunks)
  • frameworks/vercel/src/agents/LocalGuide/index.ts (1 hunks)
  • frameworks/vercel/tsconfig.json (1 hunks)
  • other-examples/crewai-researcher/README.md (1 hunks)
  • other-examples/crewai-researcher/agentuity.yaml (1 hunks)
  • other-examples/crewai-researcher/pyproject.toml (1 hunks)
  • other-examples/llamaindex-tools/README.md (1 hunks)
  • other-examples/llamaindex-tools/agentuity.yaml (1 hunks)
⛔ Files not processed due to max files limit (7)
  • other-examples/llamaindex-tools/pyproject.toml
  • other-examples/mastra-bird-checker/.cursorrules/agentuity.mdc
  • other-examples/mastra-multi-step-workflow/.cursorrules/agentuity.mdc
  • other-examples/mastra-tools/.cursorrules/agent.mdc
  • other-examples/mastra-tools/.cursorrules/agentuity.mdc
  • other-examples/mastra-workflow/.cursorrules/agent.mdc
  • other-examples/mastra-workflow/.cursorrules/agentuity.mdc
💤 Files with no reviewable changes (13)
  • README.md
  • frameworks/llamaindex/index.py
  • frameworks/vercel-ai-sdk/index.ts
  • frameworks/mastra/mastra-weather-workflow/tsconfig.json
  • frameworks/mastra/mastra-weather-workflow/index.ts
  • frameworks/langchain/src/agents/langchain-agent/index.py
  • frameworks/vercel-ai-sdk/README.md
  • frameworks/vercel-ai-sdk/src/agents/vercel-anthropic/index.ts
  • frameworks/vercel-ai-sdk/src/agents/vercel-openai/index.ts
  • frameworks/mastra/mastra-simple-prompt/README.md
  • frameworks/mastra/mastra-simple-prompt/package.json
  • frameworks/mastra/mastra-simple-prompt/src/agents/catfact/index.ts
  • frameworks/vercel-ai-sdk/package.json
🧰 Additional context used
🧬 Code Graph Analysis (1)
frameworks/crewai/agents/Concierge/agent.py (1)
frameworks/crewai/agents/Concierge/crew.py (1)
  • Concierge (5-34)
🪛 YAMLlint (1.37.1)
frameworks/crewai/agents/Concierge/config/tasks.yaml

[error] 4-4: no new line character at the end of file

(new-line-at-end-of-file)

frameworks/crewai/agents/Concierge/config/agents.yaml

[error] 7-7: trailing spaces

(trailing-spaces)


[error] 21-21: no new line character at the end of file

(new-line-at-end-of-file)

🪛 markdownlint-cli2 (0.17.2)
frameworks/mastra/README.md

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

other-examples/crewai-researcher/README.md

24-24: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


62-62: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/pydantic/README.md

68-68: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/vercel/README.md

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🪛 Ruff (0.11.9)
frameworks/llamaindex/agents/LocalGuide/agent.py

31-31: f-string without any placeholders

Remove extraneous f prefix

(F541)

🪛 LanguageTool
other-examples/crewai-researcher/README.md

[style] ~29-~29: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...` ## Running Locally To run this agent locally: ```bash # Navigate to the agent direc...

(ADVERB_REPETITION_PREMIUM)

other-examples/llamaindex-tools/README.md

[style] ~22-~22: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...` ## Running Locally To run this agent locally: ```bash # Navigate to the agent direc...

(ADVERB_REPETITION_PREMIUM)

🔇 Additional comments (116)
frameworks/llamaindex/.python-version (1)

1-2: Consistent Python version specification

This .python-version file correctly pins the Python runtime to 3.12, aligning with the other framework directories (crewai, langchain, pydantic) for standardized environments.

frameworks/langgraph/.editorconfig (1)

1-12: Add consistent EditorConfig for LangGraph examples
This new file correctly mirrors the style rules used in your other framework directories (tabs with width 2, LF endings, UTF-8). It will help maintain uniform formatting across all LangGraph files.

frameworks/llamaindex/.editorconfig (1)

1-12: Consistent EditorConfig settings with other frameworks

This .editorconfig file correctly matches the conventions applied across other framework directories (tabs for indentation, UTF-8 charset, LF endings, etc.), establishing a unified editor setup.

frameworks/langchain/agents/__init__.py (1)

1-2: Package initialization placeholder is correct.

The intentional blank __init__.py with a comment ensures this directory is treated as a Python package and maintains consistency with other framework examples.

frameworks/llamaindex/agents/__init__.py (1)

1-2: Consistent package marker.

This empty __init__.py follows the established pattern for agent packages in this PR and correctly defines the module boundary.

frameworks/llamaindex/agents/Concierge/__init__.py (1)

1-2: Empty initializer aligns with project structure.

Retaining a placeholder __init__.py in the Concierge subpackage is appropriate for package discovery and mirrors other framework layouts.

frameworks/pydantic/.python-version (1)

1-2: Pinned Python version is appropriate.

Specifying 3.12 here standardizes the runtime across Python-based frameworks as intended.

frameworks/langchain/.editorconfig (1)

1-12: EditorConfig settings look good.

The rules enforce consistent formatting (tabs, LF, UTF-8) across this framework and match other directories in this PR.

frameworks/pydantic/.editorconfig (1)

1-12: Consistent editor configuration.
The .editorconfig correctly standardizes formatting rules (tabs with size 2, LF line endings, UTF-8 charset) and aligns with other framework directories. This will help maintain a uniform style across Pydantic examples.

frameworks/mastra/.editorconfig (1)

1-12: Standardized formatting for Mastra.
This .editorconfig sets the root flag and enforces the same indentation, encoding, and line-ending conventions as other frameworks, ensuring Mastra code remains consistent and editor-friendly.

frameworks/crewai/.editorconfig (1)

1-12: Uniform editor settings for CrewAI.
The configuration mirrors the project-wide style (tabs, LF, UTF-8, no trimming) and will prevent style drift within the crewai directory.

frameworks/mastra/biome.json (1)

1-27: Well-structured Biome configuration.
The biome.json accurately defines schema version, import organization, linting rules, formatter settings, and excludes the .agentuity folder. It aligns with the project's tooling conventions.

frameworks/vercel/.editorconfig (1)

1-12: EditorConfig for Vercel examples.
This file enforces the same indentation, line endings, and encoding standards as other frameworks, providing a consistent development experience across Vercel code.

frameworks/mastra/package.json (1)

1-31: Configuration looks solid.
Scripts, dependencies, and metadata align well with the Bun-based Mastra example. No changes needed.

frameworks/langchain/.gitignore (1)

1-178: Comprehensive Python .gitignore added.
This file appropriately ignores common Python build artifacts, caches, virtual environments, test/coverage outputs, and IDE/editor files, aligning with other framework examples.

frameworks/crewai/.gitignore (1)

1-178: Comprehensive Python .gitignore added.
The Crewai example’s .gitignore correctly excludes build directories, packaging artifacts, caches, env files, test/coverage outputs, and IDE settings, matching patterns used elsewhere.

frameworks/pydantic/.gitignore (1)

1-178: Comprehensive .gitignore for Pydantic framework
The ignore rules cover all common Python artifacts, build outputs, environment directories, caches, and IDE/editor settings—matching the patterns used in other framework directories. This ensures a clean VCS state.

frameworks/mastra/agentuity.yaml (6)

1-2: Schema validation and CLI version requirement
Including the YAML schema reference and enforcing a minimum Agentuity CLI version ensures config validity and compatibility.


9-13: Updated project metadata
The project_id and name have been updated to reflect the new Bun-based Mastra example.


27-33: Switched development command to Bun
Replacing the Node command with bun run aligns with the runtime change across examples.


34-43: Switched deployment to Bun with enhanced flags
The added Bun CLI flags (--no-install, --silent, etc.) harden deployments and mirror other framework setups.


59-62: Bundler runtime updated to bunjs
Setting both identifier and runtime to bunjs ensures the bundler step uses the correct environment.


71-75: Agents list updated
Added Concierge and LocalGuide agents with new IDs.

Please verify that these IDs and names match the actual implementations under src/agents.

frameworks/langgraph/README.md (1)

1-106: Well-structured LangGraph framework README
The documentation comprehensively covers setup, development, deployment, project layout, and troubleshooting, aligning with other examples.

frameworks/llamaindex/.gitignore (1)

1-178: Comprehensive .gitignore for LlamaIndex framework
This file includes all standard Python ignore patterns, matching the structure used in other framework directories to keep the repo clean.

frameworks/mastra/.cursor/rules/sdk.mdc (1)

1-98: Agentuity JavaScript SDK reference documentation
The SDK cursor rules clearly document the core interfaces (AgentHandler, AgentRequest, etc.), storage and logging APIs, and best practices—consistent with other framework SDK docs.

frameworks/crewai/.python-version (1)

1-1:

Details

✅ Verification successful

Ensure Python version matches project constraints
This pins Python to 3.12. Please confirm this aligns with the >=3.10,<=3.12 constraint in pyproject.toml and that contributors use a compatible pyenv or runtime.


🏁 Script executed:

#!/bin/bash
# Check Python constraint in the project’s pyproject.toml
grep -R "python.*>=" frameworks/crewai/pyproject.toml

Length of output: 90


Python version pin validated
The .python-version file pins Python to 3.12, which falls within the requires-python = ">=3.10, <=3.12" constraint in frameworks/crewai/pyproject.toml. No changes needed.

frameworks/pydantic/agents/__init__.py (1)

1-1: Approve blank package marker
This __init__.py correctly establishes the agents package namespace without adding executable code.

frameworks/crewai/agents/__init__.py (1)

1-1: Approve blank package marker
This __init__.py correctly defines the agents namespace.

frameworks/crewai/agents/Concierge/__init__.py (1)

1-1: Approve blank package marker
This __init__.py file is intentionally left blank to establish the package.

frameworks/pydantic/agents/Concierge/__init__.py (1)

1-2: Approve placeholder init.py file
This file serves as a package marker and is intentionally left blank.

frameworks/langchain/agents/Concierge/__init__.py (1)

1-2: Approve placeholder init.py file
The file correctly defines the Concierge package namespace and is intentionally left blank.

frameworks/langchain/.python-version (1)

1-1: Approve Python version pinning
Specifying Python 3.12 ensures consistency across the LangChain framework examples.

frameworks/vercel/.cursor/rules/agentuity.mdc (1)

1-10: Validate cursor rules metadata
The frontmatter correctly specifies guidelines for agentuity.yaml files and prevents unintended edits. No changes needed.

frameworks/vercel/biome.json (1)

1-27: Configuration validated: The Biome configuration correctly sets up import organization, linting, and formatting rules consistent with other frameworks.

frameworks/langgraph/biome.json (1)

1-27: Configuration validated: This Biome config aligns with the Vercel framework and ensures consistent formatting and linting across the LangGraph codebase.

frameworks/langgraph/tsconfig.json (1)

6-7: Verify compatibility with Bun runtime: You've switched to "moduleResolution": "bundler" and added "@types/bun". Please ensure the TypeScript compiler and Bun bundler properly resolve imports and type definitions under these settings.

Review strict indexing setting: Enabling noUncheckedIndexedAccess tightens safety but may surface new undefined errors. Validate that any array or object access in the code handles potential undefined cases.

Also applies to: 10-10, 14-14, 20-20

frameworks/pydantic/.cursor/rules/agentuity.mdc (1)

1-10: LGTM! Clear and well-structured configuration.

The cursor rules configuration follows standard YAML frontmatter conventions and provides clear guidelines for the agentuity.yaml configuration file. The directive to avoid suggesting edits to the configuration file is appropriate for maintaining system stability.

frameworks/mastra/.gitignore (1)

1-37: Comprehensive gitignore coverage.

The gitignore file provides excellent coverage for a Node.js/TypeScript project, including framework-specific patterns like .agentuity. The organization by categories (dependencies, output, coverage, etc.) makes it easy to understand and maintain.

frameworks/llamaindex/pyproject.toml (1)

1-12: Project configuration updates align with modernization goals.

The updates to project metadata, version constraints, and dependency management support the PR's objective of using latest examples. The migration to UV-based execution (reflected in the name change) and version bumps are appropriate.

frameworks/vercel/src/agents/Concierge/index.ts (1)

6-45: Well-structured concierge agent implementation.

The agent follows good practices with proper TypeScript typing, structured output validation, key-value storage for user history, and clean handoff logic. The implementation aligns well with the multi-agent architecture described in the PR objectives.

frameworks/langchain/pyproject.toml (1)

2-3: LGTM! Project configuration updates look good.

The project name change to include "sample-uv-" prefix appropriately reflects the UV runtime migration, the version bump is reasonable, and the dependency updates align with the framework modernization goals.

Also applies to: 5-10

other-examples/llamaindex-tools/agentuity.yaml (1)

1-59: LGTM! Well-structured Agentuity project configuration.

The configuration file follows the standard Agentuity project structure with appropriate:

  • Project metadata and versioning
  • Development and deployment commands using Python runtime
  • Reasonable resource allocations for deployment
  • Proper bundler configuration for Python
  • Single agent definition as intended

The use of Python runtime (rather than UV) appears intentional for this specific example.

frameworks/pydantic/agents/Concierge/agent.py (1)

1-7: LGTM! Proper Agentuity agent implementation.

The agent correctly:

  • Uses the proper async function signature
  • Handles request data extraction with a sensible default
  • Implements intent classification and routing
  • Provides appropriate fallback responses

The overall structure follows Agentuity SDK best practices.

Also applies to: 24-34

frameworks/vercel/package.json (1)

1-29: LGTM! Well-configured package for Bun-based Vercel framework.

The package.json properly configures:

  • Modern tooling with Bun runtime and Biome for formatting/linting
  • Appropriate Agentuity workflow scripts (build, dev, bundle, start)
  • Correct dependencies for AI agent development (@agentuity/sdk, @ai-sdk/anthropic, ai)
  • Proper ES module configuration and TypeScript peer dependency
  • Reasonable version constraints

The setup aligns well with the PR's goal of modernizing framework examples.

frameworks/mastra/tsconfig.json (1)

1-23: LGTM! Well-configured TypeScript setup for Bun runtime.

The TypeScript configuration is properly set up for a modern Bun-based project with appropriate compiler options for the Mastra framework integration with Agentuity.

frameworks/crewai/agents/Concierge/agent.py (2)

4-8: LGTM! Proper async function signature.

The function signature correctly follows the Agentuity agent pattern with appropriate parameter types.


9-9: Good default prompt for testing.

The fallback to a specific dinner recommendation query provides a practical default for testing purposes.

frameworks/crewai/server.py (3)

6-16: Excellent environment validation with helpful error messaging.

The API key validation provides clear error messages and helpful guidance for UV users, which will improve the developer experience.


18-25: Good warning system for environment setup.

The warnings about running outside the Agentuity environment are informative and guide users toward the recommended development workflow.


27-34: Proper logging setup and server initialization.

The logging configuration is appropriate for a server script, and using autostart() follows the Agentuity SDK pattern correctly.

frameworks/pydantic/README.md (3)

1-10: Excellent documentation header and introduction.

The README follows a consistent format with clear branding and a concise description of the framework example's purpose.


11-54: Comprehensive getting started section.

The step-by-step instructions for authentication, agent creation, and development mode are clear and well-organized, providing both Agentuity CLI and direct UV options.


98-114: Good documentation and support section.

The links to comprehensive documentation and community support channels provide valuable resources for users.

frameworks/langgraph/package.json (2)

20-22: TypeScript peer dependency configuration looks good.

The TypeScript peer dependency with version ^5 is appropriate and aligns with modern TypeScript usage patterns.


24-26:

Details

✅ Verification successful

Verify dependency versions for security and compatibility.

The dependency versions should be verified to ensure they are secure and compatible.


🌐 Web query:

Are there any known security vulnerabilities in @agentuity/sdk version 0.0.116, @langchain/anthropic version 0.3.20, or @langchain/langgraph version 0.2.72?

💡 Result:

Security Vulnerability Assessment

@agentuity/sdk version 0.0.116

  • According to the Snyk vulnerability database, there are currently no known direct vulnerabilities reported for this package as of May 17, 2025[4].

@langchain/anthropic version 0.3.20

  • There is no evidence in the provided sources or major vulnerability databases (NVD, Snyk, PyPI) indicating any known security vulnerabilities specific to @langchain/anthropic version 0.3.20 as of the current date[9].
  • Release notes for similar package versions do not mention security-related issues, but this does not guarantee the absence of unreported or undiscovered flaws.

@langchain/langgraph version 0.2.72

  • No specific vulnerabilities have been reported for @langchain/langgraph version 0.2.72 or its closely related PyPI package "langgraph" as of the latest available data[7][10].
  • Both the LangGraph and LangChain ecosystems have undergone general scrutiny for vulnerabilities, but none are tied to this specific version or package.

Context on LangChain Vulnerabilities

  • Past vulnerabilities were discovered in the core LangChain package, such as SSRF (CVE-2023-46229) and prompt injection in experimental features, but these apply to LangChain itself (especially versions before 0.0.317) and not directly to the @langchain/anthropic or langgraph packages[6][8]. These issues have since been patched in later releases.

Summary Table

Package Name Version Known Vulnerabilities?
@agentuity/sdk 0.0.116 No
@langchain/anthropic 0.3.20 No
@langchain/langgraph 0.2.72 No

Conclusion

There are no known, publicly reported security vulnerabilities for @agentuity/sdk version 0.0.116, @langchain/anthropic version 0.3.20, or @langchain/langgraph version 0.2.72 as of the current date[4][7][9]. Existing known issues for LangChain do not extend to these packages or their specific versions[6][8].

As always, remain vigilant by monitoring official vulnerability databases and changelogs for any updates.

Citations:


Dependency versions verified—no known security issues

  • @agentuity/sdk @0.0.116: no known vulnerabilities in Snyk or NVD as of May 17, 2025
  • @langchain/anthropic @0.3.20: no reported security flaws in major databases
  • @langchain/langgraph @0.2.72: no known CVEs or advisories

Continuously monitor upstream advisories and changelogs for future updates.

frameworks/pydantic/agents/LocalGuide/agent.py (2)

4-5: LGTM! Proper function signature and request handling.

The function signature correctly implements the Agentuity SDK interface with proper type hints, and the request data extraction is handled appropriately.


25-32: Good error handling implementation.

The try-catch block with context logging and user-friendly error message is well implemented. This provides good debugging capabilities while maintaining a positive user experience.

other-examples/llamaindex-tools/README.md (1)

1-13: Excellent documentation structure and content.

The overview and "How It Works" sections provide clear, comprehensive information about the LlamaIndex integration with step-by-step explanations.

frameworks/vercel/index.ts (3)

3-14: Excellent environment validation with helpful error guidance.

The API key validation logic is comprehensive and provides clear, actionable error messages with runtime-specific guidance for Node.js users.


16-29: Good runtime-specific warnings for missing AGENTUITY_URL.

The conditional warnings based on runtime environment (process.isBun) provide targeted guidance for users, helping them understand the appropriate commands to use.


31-39: Robust error handling for runner execution.

The error handling properly distinguishes between Error objects and other thrown values, providing comprehensive error reporting with both message and stack trace.

frameworks/llamaindex/agents/LocalGuide/agent.py (2)

1-3: LGTM! Clean imports following the established pattern.

The imports are well-organized and follow the Agentuity SDK conventions for LlamaIndex agents.


5-6: Function signature and prompt extraction look correct.

The async function signature follows the Agentuity SDK conventions, and the prompt extraction is handled properly.

frameworks/langchain/.cursor/rules/agent.mdc (2)

1-6: LGTM! Frontmatter configuration is well-structured.

The YAML frontmatter correctly configures the rules to apply to agent Python files with appropriate scope and settings.


7-22: Excellent guidelines with practical example.

The guidelines are comprehensive and the example code correctly demonstrates the essential agent structure with proper type hints and async implementation.

frameworks/langgraph/agentuity.yaml (4)

1-15: Configuration header and metadata look consistent.

The YAML schema reference, file generation notice, and project metadata follow the established patterns across frameworks.


16-32: Development configuration is well-structured for Bun runtime.

The port, file watching rules, and Bun command arguments are appropriately configured for JavaScript/TypeScript development.


33-55: Excellent production-ready deployment configuration.

The deployment setup includes comprehensive security and performance optimizations with appropriate resource constraints for a production environment.


56-75:

Details

✅ Verification successful

Verify the ignore pattern for src directory.

The bundler configuration and agent definitions look good, but the ignore pattern includes "src/**" while the agents directory is set to "src/agents". This might cause bundling issues.


🏁 Script executed:

#!/bin/bash
# Description: Check if there are any issues with the src ignore pattern in LangGraph bundler config
# Expected: Verify if this is intentional or if it conflicts with agent bundling

echo "Checking LangGraph project structure..."
fd -t d -d 2 . frameworks/langgraph/ 

echo -e "\nChecking for agent files in src directory..."
fd -e ts -e js . frameworks/langgraph/src/ 2>/dev/null || echo "No src directory found or no TypeScript/JavaScript files"

echo -e "\nChecking bundler ignore patterns in other frameworks..."
rg -A 10 "ignore:" frameworks/*/agentuity.yaml | grep -A 5 -B 5 "src"

Length of output: 2679


No action needed: src/** ignore pattern is intentional and consistent

The src/** ignore entry appears in LangGraph and other framework configs (e.g., Vercel, Mastra) and does not conflict with the agents in src/agents because the bundler.agents.dir: src/agents setting explicitly includes that directory. Bundler will still pick up your agent code as intended.

frameworks/pydantic/agentuity.yaml (3)

1-15: Header and metadata follow established conventions.

The configuration header and project metadata are consistent with other frameworks and follow the naming convention for UV-based Python projects.


16-46: Development and deployment configurations are well-suited for UV runtime.

The configurations properly utilize UV's capabilities with environment file support and appropriate file watching patterns for Python agents.


47-64: Bundler and agent configurations are properly set up for Python.

The python-uv bundler configuration with appropriate ignore patterns and agent directory structure is well-suited for the Pydantic framework.

frameworks/crewai/agents/Concierge/config/agents.yaml (1)

1-21: Well-structured agent configuration.

The agent definitions are comprehensive and well-organized. The role definitions, goals, and backstories provide clear context for each agent's purpose. The hierarchical structure with the intent analyzer routing to the local guide is a sound design pattern.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 7-7: trailing spaces

(trailing-spaces)


[error] 21-21: no new line character at the end of file

(new-line-at-end-of-file)

frameworks/llamaindex/.cursor/rules/agent.mdc (2)

17-22: Excellent example implementation.

The example code demonstrates proper Python async/await usage, correct type hints, and follows the expected function signature. This provides a clear template for developers to follow.


1-35: Comprehensive and clear documentation.

The guidelines are well-structured and provide essential information for developers. The documentation covers all the key aspects: creation commands, imports, function signature, best practices, and interface descriptions.

other-examples/crewai-researcher/agentuity.yaml (2)

42-52: Note: Different runtime configuration than main frameworks.

This configuration uses the Python runtime and watches src/**, while the main framework examples have migrated to use uv runtime and watch agents/**. This appears intentional since this is in the "other-examples" folder, but worth noting for consistency.


1-59: Comprehensive project configuration.

The configuration file is well-structured with all necessary sections: project metadata, development/deployment settings, bundler configuration, and agent definitions. The resource constraints and environment setup are appropriate for the example.

frameworks/langchain/server.py (3)

7-16: Excellent environment validation with helpful error messages.

The API key validation logic is robust, checking for both AGENTUITY_API_KEY and AGENTUITY_SDK_KEY. The specific guidance for uv users when a .env file exists is particularly helpful for debugging common setup issues.


18-26: Appropriate warnings for development usage.

The warnings for missing AGENTUITY_URL provide clear guidance to developers about running outside the Agentuity environment and recommend using the proper development command. This helps prevent confusion during development.


28-34: Clean logging setup and startup.

The logging configuration uses appropriate settings for a server application, outputting to stdout with a clean format. The call to autostart() follows the expected pattern for Agentuity agents.

frameworks/vercel/src/agents/LocalGuide/index.ts (1)

12-42: Excellent error handling implementation.

The error handling is well-implemented with proper logging and user-friendly error messages. The use of context logger and graceful degradation is a best practice.

frameworks/pydantic/server.py (2)

6-16: Excellent environment validation with helpful error messages.

The environment validation logic is well-implemented with clear error messages and specific guidance for uv users. The colored output improves user experience.


18-25: Good user guidance for local development.

The warning about running outside the Agentuity environment is helpful and provides clear guidance on the recommended approach for local development.

frameworks/llamaindex/README.md (4)

1-5: Excellent branding and visual presentation.

The centered header with branding image and tagline creates a professional and welcoming introduction to the framework example.


11-16: Clear and specific prerequisites.

The prerequisites section clearly specifies the required versions for Python and UV with helpful documentation links.


18-64: Comprehensive and well-organized getting started guide.

The getting started section provides clear step-by-step instructions covering authentication, agent creation, development, and deployment. The command examples are accurate and helpful.


98-113: Excellent documentation and support resources.

The documentation links, troubleshooting guidance, and community resources provide users with multiple avenues for getting help and learning more about the platform.

frameworks/crewai/agents/Concierge/crew.py (1)

28-34:

Details

❓ Verification inconclusive

Verify manager agent architecture.

The intent_analyzer is set as the manager agent but is not included in the agents list. This could lead to issues with the hierarchical process execution.

Please verify if this is the intended architecture. If the intent analyzer should only act as a manager, this might be correct. However, if it should participate in the crew, it should be added to the agents list:


🏁 Script executed:

#!/bin/bash
# Description: Check CrewAI documentation for manager agent patterns
# Expected: Confirmation of correct manager agent usage patterns

rg -A 10 -B 5 "manager_agent.*hierarchical|hierarchical.*manager_agent" --type py

Length of output: 83


Verify Manager Agent Architecture

I wasn’t able to find any references in the codebase that clarify whether a manager_agent in a hierarchical process must also be listed in agents. Please confirm the intended CrewAI pattern:

  • If intent_analyzer() is only meant to orchestrate and not actively participate, the current code is correct.
  • If it should also function as an active agent, update the agents list in frameworks/crewai/agents/Concierge/crew.py (around lines 28–34):
         return Crew(
-            agents=[self.local_guide()],
+            agents=[self.local_guide(), self.intent_analyzer()],
             tasks=[self.local_guide_task(query)],
             process=Process.hierarchical,
             manager_agent=self.intent_analyzer(),
             verbose=True,
         )
frameworks/crewai/README.md (1)

1-114: Excellent comprehensive documentation.

This README provides thorough, well-structured documentation that covers all essential aspects of the CrewAI framework integration with Agentuity. The progression from prerequisites through authentication, development, and deployment is logical and user-friendly. The inclusion of project structure, configuration details, and troubleshooting resources makes this a valuable reference document.

frameworks/langgraph/src/agents/LocalGuide/index.ts (1)

14-14:

Details

✅ Verification successful

Verify the Claude model version.

The model version claude-3-7-sonnet-latest may not be valid. Anthropic's model naming convention typically uses different patterns.


🌐 Web query:

What are the current available Claude model versions from Anthropic for the ChatAnthropic integration?

💡 Result:

Anthropic currently offers several Claude model versions for the ChatAnthropic integration. The latest models in the Claude family include:

Claude 4 Series (Released May 2025)

The newest generation of Claude models includes:

  • Claude Opus 4: Anthropic's most powerful model, designed for complex challenges and featuring exceptional coding capabilities. It excels at sustained performance on complex, long-running tasks and agent workflows[2][4].
  • Claude Sonnet 4: An upgrade to Claude Sonnet 3.7, delivering superior coding and reasoning abilities while responding more precisely to instructions[2][4].

Both Claude 4 models are hybrid models offering two response modes: near-instant responses and extended thinking for deeper reasoning[4]. They can use tools like web search during extended thinking and can execute tool use in parallel[4].

Claude 3 Series

The Claude 3 family includes:

  • Claude Sonnet 3.7: Available via the model alias "claude-3-7-sonnet-latest" or specific model ID "claude-3-7-sonnet-20250219".
  • Claude Sonnet 3.5: Available via "claude-3-5-sonnet-latest" or "claude-3-5-sonnet-20241022".
  • Claude Haiku 3.5: Available via "claude-3-5-haiku-latest" or "claude-3-5-haiku-20241022".
  • Claude Opus 3: Available via "claude-3-opus-latest" or "claude-3-opus-20240229".

Access and Integration

These models can be accessed through:

  • The Anthropic API directly
  • Amazon Bedrock
  • Google Cloud's Vertex AI[4][6]

For the ChatAnthropic integration in LangChain, you would use the langchain-anthropic package. The models support various features including tool calling, structured output, image input, token-level streaming, and native async capabilities[5].

Pricing

  • Claude Opus 4: $15/$75 per million tokens (input/output)
  • Claude Sonnet 4: $3/$15 per million tokens (input/output)[4]

The pricing structure remains consistent with previous Opus and Sonnet models.

Citations:


Verified: claude-3-7-sonnet-latest is valid
According to Anthropic’s documentation, claude-3-7-sonnet-latest is the correct alias for Claude Sonnet 3.7. No update to this model reference is required.

frameworks/mastra/index.ts (1)

31-39: Excellent error handling implementation.

The error handling for the runner invocation is comprehensive and properly handles both Error instances and other types of errors. Good practice!

frameworks/mastra/src/agents/Concierge/index.ts (1)

35-41: Excellent handoff structure implementation.

The handoff implementation here is more detailed and well-structured compared to other framework versions, explicitly specifying the data and contentType. This provides better clarity and type safety.

frameworks/crewai/agentuity.yaml (4)

27-33: Excellent migration to UV runtime.

The migration from Python to UV for both development and deployment commands is well-implemented. The inclusion of --env-file .env ensures environment variables are properly loaded during development.


56-56: Simplified ignore patterns look good.

The simplified ignore pattern focusing only on __pycache__ is cleaner and more focused than the previous configuration.


25-25:

Details

✅ Verification successful

Verify the agents directory structure is consistent.

The file watch pattern changed from src/** to agents/**, indicating a directory structure change. Ensure this aligns with the actual agent file locations.


🏁 Script executed:

#!/bin/bash
# Description: Verify the agents directory structure exists and contains the expected files
# Expected: Find agent files under the agents/ directory

echo "Checking for agents directory structure..."
fd -t d "agents" frameworks/crewai/
echo "Listing agent files in the directory..."
fd -t f -e py . frameworks/crewai/agents/ 2>/dev/null || echo "No agents directory found or no Python files"

Length of output: 460


Pattern Verified: agents/** aligns with existing directory structure

  • Confirmed frameworks/crewai/agents/ directory exists.
  • Verified presence of Python agent files in frameworks/crewai/agents/.

No changes required.


50-52:

Details

✅ Verification successful

Verify UV runtime is available in deployment environment.

The bundler configuration now specifies python-uv as the identifier and uv as the runtime. Ensure that the deployment environment supports UV runtime.


🌐 Web query:

What are the deployment requirements and availability for UV (Python package installer) in containerized environments?

💡 Result:

Deployment Requirements for UV in Containerized Environments

Base Image and Compatibility

  • UV is designed to work efficiently in Docker and other containerized environments. You should use a supported Linux base image, such as Ubuntu or Debian. If you use Alpine Linux, be aware of potential limitations—specifically, UV does not yet support automatic Python installation on ARM-based musl images (such as Alpine on ARM). In those cases, you must install Python manually using the system package manager (e.g., apk add --no-cache python3~=3.12)[1].

Installation

  • UV can be installed in your container image by downloading the UV binary, or installing it via pip. The recommended method is copying the binary from an official image or download source into your container[1][8][7].

Python Management

  • UV can use an existing system Python, or it can automatically download and manage different Python versions using its built-in installer[3][6]. However, if Python is required on an unsupported platform, you must provide it through your Dockerfile (as above).

PATH Configuration

  • If you install tools or packages with UV that place executables in a custom location, ensure to adjust the PATH variable so these binaries are accessible at runtime. For example:
    ENV PATH=/root/.local/bin:$PATH
    
    or (to use a constant location):
    ENV UV_TOOL_BIN_DIR=/opt/uv-bin/
    

Usage Patterns

System vs Virtual Environment Installs

  • By default, UV encourages the use of virtual environments for package isolation and to avoid interfering with system-managed Python installations[10][7]. To create and use a virtual environment:
    RUN uv venv /opt/venv
    ENV VIRTUAL_ENV=/opt/venv
    ENV PATH="/opt/venv/bin:$PATH"
    RUN uv pip install <package>
    
  • If you wish to install packages system-wide inside a container, you can use the --system flag:
    RUN uv pip install --system <package>
    
    Or set the environment variable to default to system installs:
    ENV UV_SYSTEM_PYTHON=1
    
    Note: If the system Python is marked as "externally managed" (per PEP 668), UV may restrict system installs unless you use the --break-system-packages flag. In containers, this is generally safe, but not recommended for host systems[1][4][6].

Requirements and Caching

  • For best Docker caching and build performance, copy your requirements file(s) before the rest of your application code:
    COPY requirements.txt .
    RUN uv pip install -r requirements.txt
    COPY . .
    
    This allows Docker to cache the layer with dependency installation and only rerun it when dependencies change[1][8].

Availability

Supported Platforms

  • UV runs on major Linux distributions, macOS, and Windows[6][7]. For Docker, Ubuntu and Debian are commonly used and fully supported.
  • ARM support is available for glibc-based images, but not for musl/Alpine on ARM[1].

Binary and Installation

  • UV does not require Python to be installed to run UV itself; it's a standalone Rust binary[6]. You can copy it directly into your image and use it without first installing Python, which can speed up builds and reduce image size[8][1].

Summary Table

Requirement Description & Notes
Base image Ubuntu/Debian recommended; Alpine requires manual Python setup for ARM[1]
Python installation UV can auto-install and manage Python unless on unsupported ARM/musl[3][1]
Virtual environment support Strongly recommended; default for UV[10][7]
System-wide install support Supported with --system flag or UV_SYSTEM_PYTHON=1[1][6]
Externally managed Pythons May require --break-system-packages in some setups[4]
PATH adjustments Required for installed CLI tools and custom bin directories[1]
Architecture support x86_64, ARM (glibc); limitations for Alpine/ARM[1]
Installation method Copy binary, pip install, or official container image[1][7][8]

Key Takeaways

  • UV is highly optimized for containerized environments, with clear documentation and best practices available[1][8].
  • Prefer virtual environments for dependency isolation, but system installs are available and safe in containers.
  • For Alpine Linux on ARM, install Python manually.
  • Always adjust the PATH if installing CLI tools or using custom binary directories.
  • UV is available as a compiled binary, enabling ultra-fast installation and use in minimalist or custom OS containers.

For comprehensive Docker usage, consult the official UV Docker integration guide and best-practices posts[1][8].

Citations:


Ensure UV Runtime Is Supported in Your Container Image

The identifier: python-uv and runtime: uv settings assume that the UV toolchain will be present at runtime. Generally UV works out-of-the-box on Debian- or Ubuntu-based images, but you should verify and, if necessary, adjust your Dockerfile or build pipeline:

  • If you’re using Alpine Linux (especially on ARM/musl), UV cannot auto-install Python. Add a manual Python install step, for example:
    RUN apk add --no-cache python3~=3.12
  • Install or copy the UV binary before running any UV commands:
    ADD https://.../uv-linux-amd64 /usr/local/bin/uv
    RUN chmod +x /usr/local/bin/uv
  • Ensure your PATH includes UV’s tool-bin directory if you install packages to a non-standard location:
    ENV PATH=/root/.local/bin:$PATH
  • For consistent builds, prefer UV’s virtual-environment workflow:
    RUN uv venv /opt/venv \
        && . /opt/venv/bin/activate \
        && uv pip install -r requirements.txt
    ENV PATH="/opt/venv/bin:$PATH"

No code changes are required in frameworks/crewai/agentuity.yaml itself—just confirm your container images meet these prerequisites.

frameworks/langgraph/index.ts (1)

1-14: LGTM! Environment validation is comprehensive.

The environment variable validation provides clear error messages and runtime-specific guidance. The colored output and specific instructions for different scenarios are helpful for developers.

frameworks/vercel/agentuity.yaml (1)

8-9:

Details

❓ Verification inconclusive

Verify the significant CLI version requirement jump.

The minimum CLI version requirement increased significantly from ">=0.0.0" to ">=0.0.128". This is a major change that could break compatibility for users with older CLI versions.

Please ensure this version requirement is necessary and that the breaking changes are documented:

Consider adding a migration guide or changelog reference if this is a significant breaking change.


🌐 Web query:

What are the major changes and breaking changes in Agentuity CLI version 0.0.128 compared to earlier versions?

💡 Result:

As of my current knowledge, there is no publicly available information detailing the specific changes, including major and breaking changes, introduced in Agentuity CLI version 0.0.128 compared to earlier versions. The official Agentuity documentation provides a changelog, but it does not include entries for version 0.0.128. (github.com)

For the most accurate and up-to-date information on the changes in version 0.0.128, I recommend checking the official Agentuity GitHub repository or contacting their support team directly. They should be able to provide detailed release notes and information on any major or breaking changes introduced in that version.

Citations:


Verify substantial CLI version bump

There’s no public changelog entry for v0.0.128, and raising the requirement from “>=0.0.0” to “>=0.0.128” may introduce breaking changes. Please confirm this bump is intentional and document any major updates:

  • File: frameworks/vercel/agentuity.yaml
    Lines 8–9:
    version: '>=0.0.128'
  • Check or update your CHANGELOG/migration guide to include all breaking changes in CLI v0.0.128.
  • If applicable, link to detailed release notes or support threads covering these changes.
frameworks/langchain/README.md (1)

15-15: Inconsistent Python version requirement.

The AI summary indicates that Python 3.12+ is required for this example, but the README specifies "Python: Version 3.10 or higher". Please align the README version with the documented requirement or update the summary to match the actual supported versions.

Likely an incorrect or invalid review comment.

frameworks/crewai/.cursor/rules/sdk.mdc (1)

1-99: Well-structured API documentation.

The SDK reference comprehensively covers core interfaces and methods with clear examples and best practices. No issues found.

frameworks/mastra/src/agents/LocalGuide/index.ts (2)

34-43: Excellent error handling implementation.

The error handling is well-structured with proper logging and user-friendly error messages. The use of instanceof Error check is a good practice for type safety.


15-15:

Details

✅ Verification successful

Verify the Claude model name.

The model name "claude-3-7-sonnet-latest" doesn't match the standard Claude model naming convention. Claude models typically follow patterns like "claude-3-5-sonnet-20241022" or "claude-3-haiku-20240307".

Please verify that this model name exists and is valid:


🌐 Web query:

What are the current available Claude model names from Anthropic? Is "claude-3-7-sonnet-latest" a valid model name?

💡 Result:

Anthropic's Current Claude Model Names (as of May 2025)

Anthropic's latest lineup of Claude models, according to official releases and recent documentation, includes the following major versions:

  • Claude 4 Family

    • Claude Opus 4 (claude-opus-4-latest)
    • Claude Sonnet 4 (claude-sonnet-4-latest)[2][4][5][7]
  • Claude 3.7 Family

    • Claude 3.7 Sonnet (claude-3-7-sonnet-20250219, also referenced as claude-3-7-sonnet-latest)[7][9][10]
  • Claude 3.5 Family

    • Claude 3.5 Sonnet (claude-3-5-sonnet-20241022, also referenced as claude-3-5-sonnet-latest)
    • Claude 3.5 Haiku (claude-3-5-haiku-20241022, also referenced as claude-3-5-haiku-latest)[7][9]
  • Claude 3 Family (earlier releases)

    • Claude 3 Opus (claude-3-opus-latest)
    • Claude 3 Sonnet
    • Claude 3 Haiku[7]

Is "claude-3-7-sonnet-latest" a Valid Model Name?

Yes, "claude-3-7-sonnet-latest" is a valid and currently supported Anthropic model name. It refers to the latest available Claude 3.7 Sonnet model, and is listed in both Anthropic's documentation and third-party provider integration tables[7][9][10]. Its precise model ID as of this writing is often tied to a version tag (e.g., claude-3-7-sonnet-20250219), and "claude-3-7-sonnet-latest" is an alias that always points to the most recent release in the 3.7 Sonnet family[7][9].

Summary Table: Current Claude Models

Family Model Name Valid Aliases Latest Version Tag
Claude 4 Opus 4 claude-opus-4-latest 20250514
Claude 4 Sonnet 4 claude-sonnet-4-latest 20250514
Claude 3.7 Sonnet 3.7 claude-3-7-sonnet-latest 20250219
Claude 3.5 Sonnet 3.5 claude-3-5-sonnet-latest 20241022
Claude 3.5 Haiku 3.5 claude-3-5-haiku-latest 20241022
Claude 3 Opus 3 claude-3-opus-latest 20240229
Claude 3 Sonnet 3 claude-3-sonnet 20240229
Claude 3 Haiku 3 claude-3-haiku 20240307

Note: "latest" aliases always point to the newest stable release within the respective model family.

Additional Notes

  • The Claude 4 models—Opus 4 and Sonnet 4—are Anthropic's flagship offerings as of late May 2025, with advanced reasoning capabilities and availability across Anthropic's API, Amazon Bedrock, and Google Cloud Vertex AI[2][4][5].
  • The model naming scheme is consistent: claude-{version}-{model} with a version tag or latest alias for convenience[7][9].
  • "claude-3-7-sonnet-latest" will continue to point to the most up-to-date Claude 3.7 Sonnet model as new minor updates are released.

In summary: "claude-3-7-sonnet-latest" is a valid Anthropic model name and is supported for use as of May 2025. The most current Claude models are Opus 4 and Sonnet 4, along with their 3.7 and 3.5 predecessors for specific use cases and cost/performance needs[2][4][5][7][9][10].

Citations:


Model name verified as valid
The model identifier claude-3-7-sonnet-latest is an official alias pointing to Anthropic’s latest Claude 3.7 Sonnet release. No change required.

frameworks/vercel/.cursor/rules/sdk.mdc (2)

88-96: Comprehensive and well-structured best practices.

The best practices section provides excellent guidance covering TypeScript usage, error handling, logging, and architectural considerations. This will help developers build robust agents.


36-37:

Details

❌ Incorrect review comment

Clarify the difference between buffer() and binary() methods.

Both request.data.buffer() and request.data.binary() return Promise<ArrayBuffer> according to the documentation. This appears redundant - please clarify if these methods serve different purposes or if one is deprecated.


🏁 Script executed:

#!/bin/bash
# Search for buffer and binary method implementations to understand the difference
ast-grep --pattern 'buffer(): Promise<ArrayBuffer>'
ast-grep --pattern 'binary(): Promise<ArrayBuffer>'

Length of output: 107


🏁 Script executed:

#!/bin/bash
# Search for buffer() and binary() method definitions or references in the codebase
rg -n "\.buffer\(" -t ts -t js
rg -n "\.binary\(" -t ts -t js

Length of output: 65


#!/bin/bash
# Broad search across all files to locate buffer, binary methods or ArrayBuffer references
rg -n "buffer\(" 
rg -n "binary\(" 
rg -n "Promise<.*ArrayBuffer.*>" 
rg -n "ArrayBuffer"

Ignore buffer() – only binary() exists

The SDK defines request.data.binary(): Promise<ArrayBuffer> and request.data.object<T>(): Promise<T>. There is no buffer() method in the codebase or documentation, so the current docs are accurate and no change is needed.

Likely an incorrect or invalid review comment.

frameworks/langchain/.cursor/rules/sdk.mdc (2)

89-96: Excellent Python-specific best practices.

The best practices section appropriately adapts the recommendations for Python, including type hints and try/except blocks instead of try/catch. This provides valuable guidance for Python developers.


34-36:

Details

❓ Verification inconclusive

Clarify async nature of data access methods.

The documentation shows request.data.json, request.data.text, and request.data.binary without await, but these are likely async operations in Python. Please clarify if these should be awaited.


🏁 Script executed:

#!/bin/bash
# Search for Python SDK data access method implementations
ast-grep --pattern 'class AgentRequest:
  $$$
  @property
  def data(self):
    $$$'

Length of output: 86


To pinpoint whether these are async or sync methods, let’s search for their definitions in the Python SDK:

This will tell us if json, text, and binary are defined as async def (and thus require await) or as regular methods.


🏁 Script executed:

#!/bin/bash
set -e

# Find all Python files to ensure we’re in the right tree
echo "Python files in repo:"
fd --extension py

# Look for AgentRequest class
echo -e "\n=== class AgentRequest ==="
rg -n "class AgentRequest" --type py || true

# Check how data is implemented
echo -e "\n=== @property def data ==="
rg -n "@property\s*def data" --type py || true

# Search for json/text/binary methods
echo -e "\n=== async def json ==="
rg -n "async def json" --type py || true
echo -e "\n=== def json ==="
rg -n "def json" --type py || true

echo -e "\n=== async def text ==="
rg -n "async def text" --type py || true
echo -e "\n=== def text ==="
rg -n "def text" --type py || true

echo -e "\n=== async def binary ==="
rg -n "async def binary" --type py || true
echo -e "\n=== def binary ==="
rg -n "def binary" --type py || true

Length of output: 2466


Verify async nature of request.data methods in Python SDK

I searched across the Python SDK modules for AgentRequest, its data property, and any json, text, or binary definitions but didn’t locate matching implementations. Please confirm and, if they’re implemented as async def json()/text()/binary(), update the docs to show these calls being awaited (for example, await request.data.json(), etc.).

frameworks/llamaindex/.cursor/rules/sdk.mdc (2)

1-4: Ensure front-matter globs matches the actual path
The pattern agents/**/*.py implies your agent code lives under agents/. Please verify that the llamaindex example directory structure aligns with this glob; if the files are under frameworks/llamaindex/agents/, update accordingly (e.g., frameworks/llamaindex/agents/**/*.py).


98-98: Validate the external documentation link
Ensure that https://agentuity.dev/SDKs/python/api-reference is reachable and up to date so readers aren’t directed to a 404.

frameworks/langchain/agentuity.yaml (7)

1-1: Schema declaration looks good
Including the $schema directive helps IDEs validate this file—great addition.


25-25: Updated watch rule is aligned with new layout
Switching the watch path from src/** to agents/** correctly reflects the new agent folder structure.


27-33: UV runtime commands are correct
Switching command: uv and its args (run --env-file .env server.py) matches the move to the UV runtime. Make sure the .env path is correct relative to your working directory.


35-38: Deployment command aligns with development setup
Using the same UV invocation for deployment keeps consistency between local and production environments.


50-53: Bundler settings updated for UV
Setting identifier: python-uv and runtime: uv correctly informs the Agentuity CLI of the chosen runtime.


54-54: Agents directory mapping is consistent
Changing agents.dir to agents aligns with the file watch and project structure.


60-64: Agent entries match new implementations
The two agents (Concierge and LocalGuide) correspond to the newly added agent folders. Ensure their ids remain stable across deployments if you rely on them externally.

Comment on lines +14 to +15
logs
_.log
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

Fix log ignore pattern.
The pattern _.log matches only files beginning with an underscore (e.g., _something.log) instead of all log files. Replace it with *.log to ignore any .log file.
Apply this diff:

- _.log
+ *.log
📝 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
logs
_.log
logs
*.log
🤖 Prompt for AI Agents
In frameworks/vercel/.gitignore at lines 14 to 15, the pattern `_.log`
incorrectly matches only files starting with an underscore. Replace `_.log` with
`*.log` to correctly ignore all files ending with the `.log` extension.

Comment on lines +1 to +4
---
description: Agentuity Python SDK API Reference
globs: "agents/**/*.py"
---
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify cursor globs path resolution
Ensure that the globs: "agents/**/*.py" pattern correctly targets the frameworks/pydantic/agents directory when processed by the cursor tooling, since it’s relative to frameworks/pydantic/.cursor/rules.


🏁 Script executed:

#!/bin/bash
# Verify that pydantic agent files are picked up by the cursor rules
rg -l "^async def run" frameworks/pydantic/agents/**/*.py

Length of output: 259


Update cursor globs to reference the actual agents directory
The pattern agents/**/*.py is being evaluated from frameworks/pydantic/.cursor/rules, where there is no agents/ subfolder. You’ll need to adjust the glob so it points up one level into frameworks/pydantic/agents.

• In frameworks/pydantic/.cursor/rules/sdk.mdc

--- a/frameworks/pydantic/.cursor/rules/sdk.mdc
+++ b/frameworks/pydantic/.cursor/rules/sdk.mdc
@@
-description: Agentuity Python SDK API Reference
-globs: "agents/**/*.py"
+description: Agentuity Python SDK API Reference
+globs: "../agents/**/*.py"

Running

rg -l "^async def run" frameworks/pydantic/agents/**/*.py

still finds your agent implementations, confirming this adjustment will correctly include them in the cursor rules.

🤖 Prompt for AI Agents
In frameworks/pydantic/.cursor/rules/sdk.mdc lines 1 to 4, the glob pattern
"agents/**/*.py" does not correctly resolve to the agents directory because it
is relative to the .cursor/rules folder. Update the glob pattern to
"../agents/**/*.py" to correctly reference the agents directory one level up,
ensuring the cursor tooling includes the intended Python files.

Comment on lines +7 to 11
"agentuity>=0.0.85",
"llama-index==0.12.36",
"llama-index-core==0.12.36",
"llama-index-llms-anthropic>=0.6.14"
]
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify dependency versions are current and secure.

The dependency updates look good with specific version pinning for reproducible builds. Please verify that these versions are current and free from known vulnerabilities.


🏁 Script executed:

#!/bin/bash
# Check PyPI for latest versions and security advisories
echo "Checking agentuity latest version:"
curl -s https://pypi.org/pypi/agentuity/json | jq '.info.version'

echo "Checking llama-index latest version:"
curl -s https://pypi.org/pypi/llama-index/json | jq '.info.version'

echo "Checking llama-index-core latest version:"
curl -s https://pypi.org/pypi/llama-index-core/json | jq '.info.version'

echo "Checking llama-index-llms-anthropic latest version:"
curl -s https://pypi.org/pypi/llama-index-llms-anthropic/json | jq '.info.version'

Length of output: 695


Update LlamaIndex pins to latest patch releases

PyPI shows newer patch versions—please bump your exact pins to pick up the latest bug-fix and security updates:

• In frameworks/llamaindex/pyproject.toml

  • agentuity: change >=0.0.85==0.0.86
  • llama-index: change ==0.12.36==0.12.37
  • llama-index-core: change ==0.12.36==0.12.37
  • llama-index-llms-anthropic: change >=0.6.14==0.6.19

Pinning exact versions ensures reproducible builds and that you’re on the latest patch releases.

🤖 Prompt for AI Agents
In frameworks/llamaindex/pyproject.toml around lines 7 to 11, update the
dependency versions to the latest patch releases for improved security and
stability. Change agentuity from ">=0.0.85" to "==0.0.86", llama-index from
"==0.12.36" to "==0.12.37", llama-index-core from "==0.12.36" to "==0.12.37",
and llama-index-llms-anthropic from ">=0.6.14" to "==0.6.19". This ensures exact
version pinning with the latest bug fixes.

Comment on lines +20 to +31
const userIntent = await generateObject({
model: anthropic('claude-3-7-sonnet-latest'),
system: `
You serve as a central hub that routes user requests to the right
AI agent based on the user's intent. Classify the user's intent
and select the best agent to handle it.
`,
schema: z.object({
agentType: z.enum(['LocalGuide']),
}),
prompt,
});
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 error handling for intent classification.

The intent classification could fail due to API errors or invalid responses. Consider adding error handling to gracefully handle these scenarios.

  // Get user intent
-  const userIntent = await generateObject({
-    model: anthropic('claude-3-7-sonnet-latest'),
-    system: `
-			You serve as a central hub that routes user requests to the right
-			AI agent based on the user's intent. Classify the user's intent
-			and select the best agent to handle it.
-		`,
-    schema: z.object({
-      agentType: z.enum(['LocalGuide']),
-    }),
-    prompt,
-  });
+  let userIntent;
+  try {
+    userIntent = await generateObject({
+      model: anthropic('claude-3-7-sonnet-latest'),
+      system: `
+			You serve as a central hub that routes user requests to the right
+			AI agent based on the user's intent. Classify the user's intent
+			and select the best agent to handle it.
+		`,
+      schema: z.object({
+        agentType: z.enum(['LocalGuide']),
+      }),
+      prompt,
+    });
+  } catch (error) {
+    console.error('Intent classification failed:', error);
+    return resp.text("I'm having trouble understanding your request. Please try again.");
+  }
📝 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
const userIntent = await generateObject({
model: anthropic('claude-3-7-sonnet-latest'),
system: `
You serve as a central hub that routes user requests to the right
AI agent based on the user's intent. Classify the user's intent
and select the best agent to handle it.
`,
schema: z.object({
agentType: z.enum(['LocalGuide']),
}),
prompt,
});
// Get user intent
let userIntent;
try {
userIntent = await generateObject({
model: anthropic('claude-3-7-sonnet-latest'),
system: `
You serve as a central hub that routes user requests to the right
AI agent based on the user's intent. Classify the user's intent
and select the best agent to handle it.
`,
schema: z.object({
agentType: z.enum(['LocalGuide']),
}),
prompt,
});
} catch (error) {
console.error('Intent classification failed:', error);
return resp.text("I'm having trouble understanding your request. Please try again.");
}
🤖 Prompt for AI Agents
In frameworks/vercel/src/agents/Concierge/index.ts around lines 20 to 31, the
call to generateObject for user intent classification lacks error handling. Wrap
the await generateObject call in a try-catch block to catch any API errors or
invalid responses, and handle these errors gracefully by logging the error or
returning a fallback response to prevent the application from crashing.

Comment on lines +13 to +22
agent = Agent(
"claude-3-7-sonnet-latest",
output_type=str,
system_prompt=(
"""You serve as a central hub that routes user requests to the right
AI agent based on the user's intent. Classify the user's intent and
select the best agent to handle it: for now, just LocalGuide.
Respond ONLY with the agent name."""
),
)
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify the Claude model identifier and consider more robust intent handling.

The implementation looks good overall, but consider these improvements:

  1. Verify that "claude-3-7-sonnet-latest" is a valid model identifier
  2. The intent classification is quite basic - consider handling edge cases

🏁 Script executed:

#!/bin/bash
# Check if the Claude model identifier is referenced elsewhere in the codebase
rg -A 3 "claude-3-7-sonnet-latest"

Length of output: 4952


Model identifier confirmed; enhance intent classification

  • The model name "claude-3-7-sonnet-latest" is used consistently across all agent implementations (mastra, vercel, langgraph, llamaindex, langchain, crewai), so it’s valid—no change needed.
  • The prompt currently only handles the LocalGuide intent. Consider extending the classification logic to support additional agents, handle edge cases, and provide a clear fallback for unrecognized intents.
🤖 Prompt for AI Agents
In frameworks/pydantic/agents/Concierge/agent.py around lines 13 to 22, the
model identifier "claude-3-7-sonnet-latest" is confirmed valid, so no change is
needed there. However, improve the system_prompt by expanding the intent
classification to support multiple agents beyond just LocalGuide, include
handling for edge cases, and add a clear fallback response for unrecognized
intents. Update the prompt text accordingly to guide the model to classify
intents more robustly and respond with the appropriate agent name or a default
fallback.

Comment on lines +30 to +31
const result = await agent.generate(prompt, { maxSteps: 5 });
const userIntent = result.text?.trim();
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 error handling for agent generation.

Similar to the LlamaIndex implementation, this lacks error handling for the agent generation call, which could result in unhandled exceptions.

Apply this diff to add error handling:

-  const result = await agent.generate(prompt, { maxSteps: 5 });
-  const userIntent = result.text?.trim();
+  try {
+    const result = await agent.generate(prompt, { maxSteps: 5 });
+    const userIntent = result.text?.trim();
+  } catch (error) {
+    console.error('Error generating agent response:', error);
+    return resp.text("I'm experiencing technical difficulties. Please try again later.");
+  }

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In frameworks/mastra/src/agents/Concierge/index.ts around lines 30 to 31, the
call to agent.generate lacks error handling, which may cause unhandled
exceptions. Wrap the agent.generate call in a try-catch block to catch any
errors thrown during generation. In the catch block, handle the error
appropriately, such as logging the error and returning a fallback value or
rethrowing the error with additional context.

@@ -1,16 +1,18 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/agentuity/cli/refs/heads/main/agentuity.schema.json
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Consider using a versioned schema URL for stability.

Using the main branch for the schema reference could cause issues if the schema changes in breaking ways. Consider pinning to a specific version or tag.


🌐 Web query:

What is the latest stable version or tag for the agentuity/cli repository schema?

💡 Result:

The latest stable version of the Agentuity CLI is v0.0.74, released on March 25, 2025. (agentuity.dev) This release introduced several enhancements, including:

  • JSON Schema support for the agentuity.yaml file.
  • MCP (Multi-Channel Processing) support.
  • Improvements to the Windows installer.
  • Enhanced development mode shutdown procedures.
  • Automatic port selection when the default development port is occupied.
  • Fixes related to Git deployment metadata.
  • Various GitHub-related improvements.

For a comprehensive list of changes and detailed release notes, you can refer to the official Agentuity CLI changelog. (agentuity.dev)

Citations:


🏁 Script executed:

#!/bin/bash
# Verify existence of the 'agents' directory to match updated watch patterns
find . -type d -name "agents"

Length of output: 988


Pin schema to a specific CLI version for stability

We verified that the agents/ directory exists under frameworks/crewai, so the watch-pattern change is valid. To prevent future breakages when the schema evolves, update the YAML schema reference in frameworks/crewai/agentuity.yaml to point at the latest stable tag (v0.0.74):

• File: frameworks/crewai/agentuity.yaml, Line 1

- # yaml-language-server: $schema=https://raw.githubusercontent.com/agentuity/cli/refs/heads/main/agentuity.schema.json
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/agentuity/cli/v0.0.74/agentuity.schema.json
📝 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
# yaml-language-server: $schema=https://raw.githubusercontent.com/agentuity/cli/refs/heads/main/agentuity.schema.json
# yaml-language-server: $schema=https://raw.githubusercontent.com/agentuity/cli/v0.0.74/agentuity.schema.json
🤖 Prompt for AI Agents
In frameworks/crewai/agentuity.yaml at line 1, update the YAML schema URL to
reference the latest stable version tag v0.0.74 instead of the main branch.
Replace the current schema URL with one that includes the version number to
ensure stability and prevent breakages from future schema changes.

Comment on lines +31 to +39
runner(true, import.meta.dirname).catch((err) => {
if (err instanceof Error) {
console.error(err.message);
console.error(err.stack);
} else {
console.error(err);
}
process.exit(1);
});
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify import.meta.dirname compatibility and consider timeout handling.

The error handling is good, but there are a couple of considerations:

  1. import.meta.dirname requires Node.js 20.11.0+ or similar ES module support. Let me verify if this is documented as a requirement.
  2. Consider adding timeout handling for long-running runner operations.

Consider adding timeout handling:

 runner(true, import.meta.dirname).catch((err) => {
   if (err instanceof Error) {
     console.error(err.message);
     console.error(err.stack);
   } else {
     console.error(err);
   }
   process.exit(1);
 });
+
+// Optional: Add timeout for runner initialization
+setTimeout(() => {
+  console.error('\x1b[31m[ERROR] Runner initialization timeout\x1b[0m');
+  process.exit(1);
+}, 30000);

🏁 Script executed:

#!/bin/bash
# Check if there are any Node.js version requirements documented
rg -i "node.*version|engine" --type yaml --type json --type md

# Check for other uses of import.meta.dirname in the codebase
rg "import\.meta\.dirname" 

Length of output: 65629


Specify Node.js ≥20.11.0 and add runner timeout

Please ensure that import.meta.dirname is only used on Node.js 20.11.0+ by declaring the engine requirement, and protect against a hung runner by adding a timeout:

• In your root package.json, add:

{
  "engines": {
    "node": ">=20.11.0"
  }
}

• In frameworks/langgraph/index.ts, wrap the runner call in a timeout (or use Promise.race/AbortController), for example:

 runner(true, import.meta.dirname).catch((err) => {
   if (err instanceof Error) {
     console.error(err.message);
     console.error(err.stack);
   } else {
     console.error(err);
   }
   process.exit(1);
 });

+// fail if runner doesn’t resolve in 30 s
+const initTimeout = setTimeout(() => {
+  console.error('\x1b[31m[ERROR] Runner initialization timeout\x1b[0m');
+  process.exit(1);
+}, 30_000);
+
+runner(true, import.meta.dirname)
+  .finally(() => clearTimeout(initTimeout));
🤖 Prompt for AI Agents
In frameworks/langgraph/index.ts around lines 31 to 39, you need to ensure
compatibility with Node.js 20.11.0+ by adding an "engines" field in the root
package.json specifying "node": ">=20.11.0". Additionally, to prevent the runner
from hanging indefinitely, wrap the runner call in a timeout mechanism using
Promise.race or AbortController to reject or abort the runner if it exceeds a
set duration. This will improve robustness by enforcing Node.js version
requirements and handling long-running operations gracefully.

("user", "{input}"),
]
)
llm = ChatAnthropic(model="claude-3-7-sonnet-latest", max_retries=5)
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify the Claude model name.

The model name "claude-3-7-sonnet-latest" appears to be incorrect. Anthropic's Claude models typically follow patterns like "claude-3-sonnet-" or "claude-3-5-sonnet-".

Consider using a verified model name:

-llm = ChatAnthropic(model="claude-3-7-sonnet-latest", max_retries=5)
+llm = ChatAnthropic(model="claude-3-5-sonnet-20241022", max_retries=5)

🌐 Web query:

What are the current valid Claude-3 model names available in the Anthropic API?

💡 Result:

Current Valid Claude-3 Model Names in the Anthropic API

As of May 26, 2025, the following Claude-3 models are valid and available for use via the Anthropic API:

Model Name API Model String Description
Claude 3.7 Sonnet claude-3-7-sonnet-20250219 Latest hybrid reasoning model
Claude 3.5 Sonnet claude-3-5-sonnet-20240620 Intelligent, mid-tier, fast model
Claude 3.5 Haiku claude-3-5-haiku-20241022 Lightweight, fast, and cost-effective
Claude 3 Opus claude-3-opus-20240229 Most powerful Claude 3 model
Claude 3 Sonnet claude-3-sonnet-20240229 Balanced speed and intelligence
Claude 3 Haiku claude-3-haiku-20240307 Fastest and most lightweight model

Aliases such as claude-3-7-sonnet-latest, claude-3-5-sonnet-latest, and claude-3-opus-latest are also available for convenience, but it is recommended to use the specific versioned model names in production for consistency[1][5][6].

Summary of Available Claude-3 Model Names

  • claude-3-7-sonnet-20250219 (claude-3-7-sonnet-latest)
  • claude-3-5-sonnet-20240620 (claude-3-5-sonnet-latest)
  • claude-3-5-haiku-20241022 (claude-3-5-haiku-latest)
  • claude-3-opus-20240229 (claude-3-opus-latest)
  • claude-3-sonnet-20240229
  • claude-3-haiku-20240307

Notes

  • The -latest alias points to the most recent version of that model family but may change over time[1].
  • The Claude-3.7 series (e.g., claude-3-7-sonnet-20250219) is a recent addition for advanced hybrid reasoning tasks[5][9].

For the most reliable integration, always consult the official [Anthropic API Models documentation][1] or programmatically fetch the model list via the API[2].

Citations:


Use explicit version for Claude-3 Sonnet model

The alias claude-3-7-sonnet-latest is valid, but for production stability it’s best to pin to the exact model version.

• File: frameworks/langchain/agents/LocalGuide/agent.py, line 28
• Update the model string as follows:

- llm = ChatAnthropic(model="claude-3-7-sonnet-latest", max_retries=5)
+ llm = ChatAnthropic(model="claude-3-7-sonnet-20250219", max_retries=5)
📝 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
llm = ChatAnthropic(model="claude-3-7-sonnet-latest", max_retries=5)
llm = ChatAnthropic(model="claude-3-7-sonnet-20250219", max_retries=5)
🤖 Prompt for AI Agents
In frameworks/langchain/agents/LocalGuide/agent.py at line 28, the model name
"claude-3-7-sonnet-latest" should be replaced with the explicit versioned model
name "claude-3-7-sonnet-20250219" to ensure production stability. Update the
model parameter in the ChatAnthropic initialization to use this exact version
string instead of the alias.

Comment on lines +80 to +88

Access through `context.logger`:

- `context.logger.debug(message, *args, **kwargs)`: Logs a debug message
- `context.logger.info(message, *args, **kwargs)`: Logs an informational message
- `context.logger.warn(message, *args, **kwargs)`: Logs a warning message
- `context.logger.error(message, *args, **kwargs)`: Logs an error message
- `context.logger.child(**kwargs)`: Creates a child logger with additional context

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

Use warning instead of deprecated warn
Python’s standard logging API favors warning() over warn(). If Agentuity’s context.logger mirrors standard practice, update context.logger.warn to context.logger.warning to avoid deprecation confusion.

🤖 Prompt for AI Agents
In frameworks/llamaindex/.cursor/rules/sdk.mdc around lines 80 to 88, replace
all instances of context.logger.warn with context.logger.warning to align with
Python's standard logging API and avoid using the deprecated warn method. Update
the documentation and any code examples accordingly to use
context.logger.warning for logging warnings.

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: 0

🧹 Nitpick comments (8)
frameworks/mastra/README.md (2)

61-66: Specify a language for the fenced code block to satisfy markdownlint.
The project-structure snippet is currently fenced with three backticks but no language, triggering MD040. Please update it to include a language (e.g. text):

- ```
+ ```text
├── agents/             # Agent definitions and implementations
├── node_modules/       # Dependencies
├── package.json        # Project dependencies and scripts
└── agentuity.yaml      # Agentuity project configuration

This will enable proper syntax highlighting and resolve the lint error.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


103-106: Make the LICENSE reference a clickable link.
Linking directly to the LICENSE file improves discoverability:

- This project is licensed under the terms specified in the LICENSE file.
+ This project is licensed under the terms specified in the [LICENSE](../LICENSE) file.

This small tweak enhances navigation for readers.

frameworks/langgraph/README.md (3)

2-4: Consistent line-break tags
You mix <br/> and <br />. For consistency and XHTML compatibility, pick one style (e.g., <br />) throughout.


61-61: Specify a language for the fenced code block
Markdown linting flags (MD040) indicate that this block should declare a language. For example:

- ```
+ ```text
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


92-94: Use descriptive link text for accessibility
Instead of raw URL brackets, consider a link label:

- [https://agentuity.dev/SDKs/javascript]
+ [Agentuity JavaScript SDK](https://agentuity.dev/SDKs/javascript)

This improves readability and accessibility.

frameworks/llamaindex/README.md (1)

68-74: Specify language for the project structure code block
The fenced block showing the directory tree is missing a language identifier. Adding something like text will ensure proper highlighting and satisfy markdownlint (MD040).

- ```
+ ```text
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

68-68: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/crewai/README.md (1)

68-74: Add language identifier to project structure block
The directory tree block lacks a language tag. Consider using text to enable correct syntax highlighting.

- ```
+ ```text
frameworks/langchain/README.md (1)

68-74: Specify language for the project structure code block
Adding a text identifier to the directory tree block will satisfy markdownlint (MD040) and improve highlighting.

- ```
+ ```text
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3bda9b0 and 2a1b8df.

📒 Files selected for processing (12)
  • README.md (1 hunks)
  • agents/README.md (1 hunks)
  • agentuity/README.md (1 hunks)
  • frameworks/crewai/README.md (1 hunks)
  • frameworks/langchain/README.md (1 hunks)
  • frameworks/langgraph/README.md (1 hunks)
  • frameworks/llamaindex/README.md (1 hunks)
  • frameworks/mastra/README.md (1 hunks)
  • frameworks/pydantic/README.md (1 hunks)
  • frameworks/vercel/README.md (1 hunks)
  • other-examples/README.md (1 hunks)
  • patterns/README.md (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • agentuity/README.md
  • other-examples/README.md
  • patterns/README.md
  • agents/README.md
  • README.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • frameworks/pydantic/README.md
  • frameworks/vercel/README.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
frameworks/llamaindex/README.md

68-68: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/langgraph/README.md

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/mastra/README.md

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🔇 Additional comments (11)
frameworks/langgraph/README.md (2)

1-7: Well-structured header and title
The centered banner and the primary heading succinctly introduce the LangGraph example. Great job setting the tone!


61-66: Verify project structure directory names
The snippet shows agents/, but in your repo the agents live under src/agents/. Please confirm and update the tree to match the actual layout (or note the src/ prefix).

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

61-61: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/llamaindex/README.md (3)

1-5: Header branding and layout look solid
The centered Agentuity logo and slogan effectively introduce the guide and align with other framework examples.


15-17: Prerequisites section is clear and accurate
Listing Python 3.10+ and UV 0.5.25+ with a documentation link provides precise setup requirements.


24-26: Code snippets include language identifiers
Each fenced code block correctly specifies bash, enhancing syntax highlighting and readability.

Also applies to: 34-36, 44-46, 52-54, 60-62, 85-87, 93-95

frameworks/crewai/README.md (3)

1-5: Header branding is consistent
The centered Agentuity logo and slogan match the other framework examples and provide a cohesive introduction.


15-17: Prerequisites section is well-defined
Specifying Python 3.10+ and UV 0.5.25+ gives users clear environment requirements.


24-26: Bash code blocks are properly annotated
All interactive commands are fenced with bash, improving clarity and user experience.

Also applies to: 34-36, 44-46, 52-54, 60-62, 85-87, 93-95

frameworks/langchain/README.md (3)

1-5: Header and branding are on point
Aligns with other framework READMEs and provides a strong visual introduction.


15-17: Verify Python version consistency
The .python-version file pins Python 3.12, but the README lists Python 3.10+. Please confirm whether to maintain the broader 3.10+ requirement or update to 3.12 for alignment.


24-26: Code snippets correctly specify bash
All shell examples include the language tag, which is great for readability.

Also applies to: 34-36, 44-46, 52-54, 60-62, 85-87, 93-95

@mcongrove mcongrove requested a review from jhaynie May 27, 2025 03:14
Copy link
Contributor

@nnance nnance left a comment

Choose a reason for hiding this comment

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

I have been updating all my agents to use claude-sonnet-4-20250514

goal: Determine user intent from their query
backstory: |
You serve as a central hub that routes user requests to the right AI agent based on the user's intent. Classify the user's intent and select the best agent to handle it: for now, just Local Guide.
llm: claude-3-7-sonnet-latest
Copy link
Contributor

Choose a reason for hiding this comment

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

I have been updating all my agents to use claude-sonnet-4-20250514

Copy link
Contributor

@nnance nnance left a comment

Choose a reason for hiding this comment

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

I left a few minor changes but overall looks good to me. I wasn't able to test the python examples

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: 3

🧹 Nitpick comments (19)
frameworks/langgraph/README.md (1)

25-27: Add dependency installation step
For clarity and consistency with other examples, include an explicit step to install dependencies (via Bun) before running the agent.

Consider inserting this under "Getting Started":

 ## 🚀 Getting Started

+### Install Dependencies
+
+```bash
+bun install
+```
+
 ### Authentication

</blockquote></details>
<details>
<summary>frameworks/mastra/agentuity.yaml (6)</summary><blockquote>

`1-2`: **Pin YAML schema to a stable version**

The schema URL references the `main` branch, which may change over time and cause unexpected validation failures. Consider pinning to a released tag or commit SHA to ensure the schema remains consistent.

---

`9-9`: **Consider tightening the semver range**

The requirement `'>=0.0.130'` will accept any future breaking changes on 0.x releases. If you want to guard against unintended major or minor bumps, you could use a caret range like `'^0.0.130'` instead.

---

`13-15`: **Refine project `name` and `description` for brevity**

The current description is clear but verbose. For example:
```yaml
name: sample-bun-mastra
description: "Concierge agent example for Mastra framework with Agentuity SDK."

This keeps the intent concise and consistent with other examples.


20-26: Narrow watch patterns to improve dev UX

Watching the entire src/** directory may trigger restarts on non-agent files (e.g., assets or configs). Consider scoping to src/agents/** to focus on your TypeScript sources:

-    files:
-      - src/**
+    files:
+      - src/agents/**

27-32: Enable automatic env loading in development

The dev command runs the compiled JS directly. If you rely on environment variables (e.g., .env), you might want to integrate a loader like dotenv or Bun’s --watch with env support so variables are injected automatically.


69-75: Unify comment style for agent entries

The first agent entry includes inline comments for id and name, while the second does not. For consistency, either add similar comments to the second block or remove the comments entirely:

-  - id: agent_575363d7f6a3fb47f5ef6e07bab3d9cb
-    # The name of the Agent which is editable
-    name: LocalGuide
frameworks/pydantic/README.md (2)

11-11: Consistent heading levels
Markdown best practices recommend incrementing heading levels by one at a time. Change the “### How It Works” (h3) to “## How It Works” to follow the top-level h1.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Specify language for fenced code blocks
The project structure code fence (```) should include a language identifier (e.g., ```text) to satisfy markdown-lint rules and improve readability.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/mastra/README.md (2)

11-11: Adjust heading hierarchy
The “### How It Works” section jumps from h1 to h3, which violates markdown heading-increment rules. Use “## How It Works” instead.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


69-69: Add language spec to code fence
The project structure snippet opens with an untyped code fence (```). Specify a language (e.g., ```text) to adhere to markdown-lint requirements.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

69-69: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/llamaindex/README.md (2)

11-11: Normalize heading levels
Heading levels should increment sequentially. Replace “### How It Works” (h3) with “## How It Works” to follow the top-level heading.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Annotate fenced code blocks with a language
The project structure code fence starts with an untyped backtick block. Add a language tag (e.g., ```text) for proper markdown-lint compliance.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/crewai/README.md (2)

11-11: Sequential heading levels
The “### How It Works” section should be demoted to “## How It Works” to maintain a consistent h1→h2→h3 flow.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Include language in code fence
The project structure snippet uses a generic code fence (```). Please specify a language identifier (e.g., ```text) to satisfy markdown-lint standards.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/langchain/README.md (2)

11-11: Correct heading increment
“### How It Works” skips h2 and goes directly from h1. Update it to “## How It Works” for proper markdown structure.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Fenced code block language missing
The project structure code fence should include a language specifier (e.g., ```text) to comply with markdown-lint rules and improve code block clarity.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/vercel/README.md (2)

11-11: Fix heading level consistency
The “How It Works” section uses an h3 (###) directly under the top-level h1. For proper nesting and to satisfy markdownlint’s heading-increment rule, change it to an h2 (##).

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


69-74: Specify a language for the fenced code block
The project-structure block is missing a language on its opening fence. To comply with MD040, update the fence to include text or another appropriate identifier, e.g.

- ```
+ ```text
  ├── agents/             # Agent definitions and implementations
  ├── node_modules/       # Dependencies
  ├── package.json        # Project dependencies and scripts
  └── agentuity.yaml      # Agentuity project configuration
- ```
+ ```  
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

69-69: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2a1b8df and 9ec8aee.

📒 Files selected for processing (14)
  • frameworks/crewai/README.md (1 hunks)
  • frameworks/crewai/agentuity.yaml (3 hunks)
  • frameworks/langchain/README.md (1 hunks)
  • frameworks/langchain/agentuity.yaml (3 hunks)
  • frameworks/langgraph/README.md (1 hunks)
  • frameworks/langgraph/agentuity.yaml (1 hunks)
  • frameworks/llamaindex/README.md (1 hunks)
  • frameworks/llamaindex/agentuity.yaml (3 hunks)
  • frameworks/mastra/README.md (1 hunks)
  • frameworks/mastra/agentuity.yaml (1 hunks)
  • frameworks/pydantic/README.md (1 hunks)
  • frameworks/pydantic/agentuity.yaml (1 hunks)
  • frameworks/vercel/README.md (1 hunks)
  • frameworks/vercel/agentuity.yaml (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (6)
  • frameworks/vercel/agentuity.yaml
  • frameworks/langgraph/agentuity.yaml
  • frameworks/pydantic/agentuity.yaml
  • frameworks/crewai/agentuity.yaml
  • frameworks/llamaindex/agentuity.yaml
  • frameworks/langchain/agentuity.yaml
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
frameworks/llamaindex/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/crewai/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/langchain/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/langgraph/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


69-69: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/mastra/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


69-69: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/pydantic/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


76-76: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

frameworks/vercel/README.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


69-69: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🔇 Additional comments (3)
frameworks/mastra/agentuity.yaml (3)

11-11: Verify project_id uniqueness

This project_id is auto-generated; please confirm that it doesn’t collide with other existing projects in the repo.


34-47: Verify Bun deployment flags for consistency

Ensure that all flags used (--no-install, --no-macros, --disable-sigusr1, etc.) are supported in the target Bun version and align with other framework examples. Inconsistencies here can lead to silent runtime errors.


49-55: Confirm resource unit formats

The CPU is specified as 500M, whereas many orchestration platforms expect millicpu notation (500m). Please verify that the Agentuity schema supports uppercase M for CPU, or adjust to the expected unit to avoid deployment validation issues.

Comment on lines +69 to +74
```
├── agents/ # Agent definitions and implementations
├── node_modules/ # Dependencies
├── package.json # Project dependencies and scripts
└── agentuity.yaml # Agentuity project configuration
```
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

Specify fenced code block language
The project structure code block lacks a language specifier, triggering a lint error (MD040). Adding a language (e.g., bash or text) will improve readability and satisfy markdown linting.

Example:

-```
+```bash
 ├── agents/             # Agent definitions and implementations
 ├── node_modules/       # Dependencies
 ├── package.json        # Project dependencies and scripts
 └── agentuity.yaml      # Agentuity project configuration
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

69-69: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In frameworks/langgraph/README.md around lines 69 to 74, the fenced code block
showing the project structure lacks a language specifier, causing a markdown
lint error (MD040). To fix this, add a language identifier such as "bash" or
"text" immediately after the opening triple backticks to improve readability and
satisfy the linter.


A simple concierge-style agent that demonstrates the basics for using the LangGraph framework with Agentuity.

### How It Works
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

Fix heading level to maintain hierarchy
The "How It Works" section uses ### (h3) immediately after an h1, but it should be ## (h2) to follow proper heading increments.

Apply this diff:

-### How It Works
+## How It Works
📝 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
### How It Works
## How It Works
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

🤖 Prompt for AI Agents
In frameworks/langgraph/README.md at line 11, the heading "How It Works" is
currently an h3 (###) immediately following an h1, which breaks the proper
heading hierarchy. Change the heading level from ### to ## to maintain correct
heading structure.

Comment on lines +57 to +67
bundler:
enabled: true
identifier: bunjs
language: javascript
runtime: bunjs
agents:
dir: src/agents
ignore:
- node_modules/**
- dist/**
- src/**
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

Fix conflicting ignore pattern in bundler

The rule - src/** will exclude your entire src/ directory—this includes the src/agents folder defined above, preventing any agent code from being bundled. Remove or refine this pattern:

 bundler:
   enabled: true
   identifier: bunjs
   language: javascript
   runtime: bunjs
   agents:
     dir: src/agents
   ignore:
-    - node_modules/**
-    - dist/**
-    - src/**
+    - node_modules/**
+    - dist/**
🤖 Prompt for AI Agents
In frameworks/mastra/agentuity.yaml around lines 57 to 67, the bundler's ignore
pattern includes `- src/**`, which excludes the entire src directory including
src/agents, preventing agent code from being bundled. To fix this, remove the `-
src/**` ignore pattern or refine it to exclude only specific subdirectories
without excluding src/agents, ensuring the agents directory is included in the
bundling process.

@mcongrove mcongrove merged commit c40d02d into main May 27, 2025
1 check passed
@coderabbitai coderabbitai bot mentioned this pull request Jun 11, 2025
@coderabbitai coderabbitai bot mentioned this pull request Sep 3, 2025
5 tasks
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.

4 participants