docs(website): split llms.txt into spec-compliant index + llms-full.txt - #1
Conversation
Per the llmstxt.org convention, llms.txt should be a short link-based index, with comprehensive inline content living at llms-full.txt. The existing 918-line guide is preserved verbatim as llms-full.txt; the new llms.txt is a concise index of documentation links across docs/, observability-docs/, evaluation-docs/, models-docs/, deployment-docs/, actions-triggers-docs/, and prompt-engineering-docs/. https://claude.ai/code/session_01PspFuRNHoDCfq6Rbe9aAqY
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)✅ Unit Tests committed locally.
Comment |
Rework the with-anthropic example into a gallery of nine VoltAgent agent instruction patterns, each in its own file under src/agents/: 1. Supervisor / routing - routing-supervisor (+ 5 specialists) 2. Tool-orchestration workflow - publishing-coordinator (writer -> editor) 3. Structured reasoning - reasoning-agent (think / analyze tools) 4. Sub-agent supervisor - repo-analyzer (+ 2 sub-agents) 5. Role + JSON output - math (calculator tool + schema) 6. Capability-list tool agent - web-search-agent 7. Task / output-constrained - editor-agent, record-processor 8. Concise single-liners - general / geography / history / science 9. Dynamic (VoltOps) prompt - support-agent via resolvePrompt Adds src/tools.ts (writer/editor/think/analyze/calculator/web_search), src/model.ts (shared model id), and src/prompts.ts, a resolvePrompt helper that uses VoltOps prompts.getPrompt when credentials are present and falls back to local drafted prompt files otherwise. https://claude.ai/code/session_01PspFuRNHoDCfq6Rbe9aAqY
|
Analysis CompleteGenerated ECC bundle from 2 commits | Confidence: 55% View Pull Request #3Repository Profile
Changed Files (16)
Top hotspots
Top directories
Analysis Depth Readiness (commit-history, 21%)ECC Tools uses this to decide whether recommendations should stay at commit-history/setup guidance or expand into CI, security, harness, reference-set, AI-routing, and team backlog work.
Reference Set Readiness (0/7, 0%)
Likely Future Issues (4)
Suggested Follow-up Work (4)
Copy-ready bodies test: add regression coverage for examples/with-anthropic/src/agents/index.ts + examples/with-anthropic/src/agents/math-agent.ts ## Summary
- Add regression coverage for the recently touched code paths before more changes stack on top.
## Why
- Backfill regression coverage before another change set lands on the touched code paths.
## Touched paths
- `examples/with-anthropic/src/agents/index.ts`
- `examples/with-anthropic/src/agents/math-agent.ts`
## Validation
- Add or extend focused tests that exercise the touched paths.
- Run the affected test suite and verify the new coverage closes the gap.db: add migration follow-up for examples/with-anthropic/src/model.ts ## Summary
- Add the missing migration or schema rollout step for the recently changed schema surface.
## Why
- Backfill the missing migration artifact before another schema or model change lands on top.
## Touched paths
- `examples/with-anthropic/src/model.ts`
## Validation
- Create the migration or schema rollout artifact used by this repo.
- Run the repo migration / schema validation flow and verify the changed models still match production expectations.security: add scanner evidence for examples/with-anthropic/src/agents/index.ts + examples/with-anthropic/src/agents/math-agent.ts ## Summary
- Add security scanner or code-scanning evidence for the recently changed security-sensitive surface.
## Why
- Backfill explicit scanner or code-scanning evidence before another security-sensitive change lands on the touched surface.
## Touched paths
- `examples/with-anthropic/src/agents/index.ts`
- `examples/with-anthropic/src/agents/math-agent.ts`
## Validation
- Run or add the relevant security scanner, code scanning, secret scanning, or dependency/security review check for the touched surface.
- Attach the scanner output, SARIF/code-scanning result, or focused security regression test to the follow-up PR.
- Confirm the changed auth, billing, webhook, secret-handling, agent, or CI surface has an explicit pass/fail gate.test: add budget evidence for examples/with-anthropic/src/prompts.ts ## Summary
- Add budget or usage-limit validation for the recently changed AI routing or model-call surface.
## Why
- Backfill cost, token, or usage-limit validation before another model-routing change lands on the touched surface.
## Touched paths
- `examples/with-anthropic/src/prompts.ts`
## Validation
- Add or extend budget, token, usage-limit, or model-routing regression coverage for the changed path.
- Verify the route still enforces plan limits, retry caps, fallback behavior, or explicit cost controls.Generated Instincts (15)
After merging, import with: Files
|
|
Note Unit test generation is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Generating unit tests... This may take up to 20 minutes. |
2 similar comments
|
Note Unit test generation is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Generating unit tests... This may take up to 20 minutes. |
|
Note Unit test generation is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Generating unit tests... This may take up to 20 minutes. |
| execute: async ({ expression }) => { | ||
| if (!/^[0-9+\-*/(). ]+$/.test(expression)) { | ||
| return { error: "Only numbers and the operators + - * / ( ) are allowed." }; | ||
| } | ||
| try { | ||
| // Input is restricted to arithmetic characters above, so this is a safe eval. | ||
| const result = Function(`"use strict"; return (${expression});`)(); | ||
| return { expression, result }; | ||
| } catch { | ||
| return { error: "Invalid arithmetic expression." }; | ||
| } | ||
| }, |
There was a problem hiding this comment.
🟨 Dynamic code execution via Function constructor in calculator tool
The calculator tool evaluates a user/LLM-provided arithmetic string by constructing and invoking a function at runtime (Function("use strict"; return (${expression});")() at examples/with-anthropic/src/tools.ts:61). Input is gated by a whitelist regex /^[0-9+\-*/(). ]+$/ (examples/with-anthropic/src/tools.ts:56) that blocks letters and other characters, so arbitrary identifiers/globals cannot be referenced. This substantially limits exploitability, but using dynamic code evaluation as an arithmetic evaluator is a risky pattern that can become injectable if the whitelist is ever loosened.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Actionable comments posted: 8
🧹 Nitpick comments (5)
examples/with-anthropic/src/agents/output-constrained.ts (1)
25-30: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winUse structured output for the JSON-formatted agents
examples/with-anthropic/src/agents/output-constrained.tsandexamples/with-anthropic/src/agents/math-agent.tscurrently rely on prompt-only JSON templates. If downstream code expects machine-readable output, switch these tooutput: Output.object(...)and use concrete JSON examples instead of placeholders.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/with-anthropic/src/agents/output-constrained.ts` around lines 25 - 30, Replace the prompt-only JSON templates in examples/with-anthropic/src/agents/output-constrained.ts (lines 25-30) and examples/with-anthropic/src/agents/math-agent.ts (lines 19-26) with structured output configured via Output.object(...), preserving each agent’s expected fields and value constraints. Replace placeholder type notation in the prompts with concrete JSON examples, and ensure both agents expose the structured output configuration for machine-readable results.examples/with-anthropic/src/prompts.ts (2)
45-48: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winLog errors before falling back in
renderLocalPrompt.The catch block swallows all errors — file-not-found, JSON parse failures, encoding issues — and returns a generic string. This makes debugging prompt loading failures very difficult, especially for chat-type prompts where
JSON.parsecan throw on malformed content. Consider logging the error so developers can distinguish "prompt file missing" from "prompt file corrupted."♻️ Suggested improvement
} catch (error) { // Last-resort default so an agent still boots if a prompt file is missing. + console.warn(`[prompts] Failed to load local prompt "${promptName}":`, error); return `You are a helpful assistant (prompt "${promptName}" could not be loaded).`; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/with-anthropic/src/prompts.ts` around lines 45 - 48, Update the catch block in renderLocalPrompt to log the caught error before returning the existing fallback prompt. Preserve the current fallback behavior while ensuring the log includes enough context, such as promptName and the original error, to distinguish missing files from parsing or encoding failures.
32-34: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low valueConsider caching local prompt reads or using async I/O.
readFileSyncis called every timeresolvePromptfalls back to the local path. SincesupportAgent'sinstructionsfunction may be invoked on every interaction, this blocks the event loop with synchronous disk I/O on each call. For example code this is tolerable, but caching the file content after the first read (or switching toreadFilewithawait) would be a straightforward improvement.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/with-anthropic/src/prompts.ts` around lines 32 - 34, Update renderLocalPrompt, used by resolvePrompt, to avoid synchronous disk I/O on every invocation by caching each local prompt’s parsed content after its first read. Preserve the existing prompt parsing and return behavior while reusing the cached result for subsequent requests.examples/with-anthropic/src/agents/repo-analyzer.ts (1)
25-35: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd a
purposefield torepoAnalyzerfor consistency.Both sub-agents (
codeScannerAgentandreadmeSummarizerAgent) define apurpose, butrepoAnalyzeromits it. Every other agent in the example includes one. Adding it keeps the pattern uniform and helps VoltAgent tooling surface a meaningful description.♻️ Suggested addition
export const repoAnalyzer = new Agent({ name: "repo-analyzer", + purpose: "Analyzes a GitHub repository by delegating to sub-agents and combining their results into a report.", instructions: `You are a GitHub repository analyzer. When given a GitHub repository URL or owner/repo format, you will:🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/with-anthropic/src/agents/repo-analyzer.ts` around lines 25 - 35, Add a meaningful purpose field to the repoAnalyzer Agent configuration, alongside its name and instructions, describing that it analyzes repositories and produces a concise report. Keep the existing delegation instructions and subAgents configuration unchanged.examples/with-anthropic/src/index.ts (1)
37-62: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueComment numbering skips 8.
The inline comments go 1–7 then jump to 9, while the barrel file (
agents/index.ts) assigns 8 to the specialist agents. Here the specialists are grouped under comment 1 ("Supervisor / routing (+ its specialist team)"). Aligning the numbering would improve cross-file readability.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@examples/with-anthropic/src/index.ts` around lines 37 - 62, Update the inline section numbering in the VoltAgent agent registry so the specialist agents grouped under “Supervisor / routing” use the same section number assigned to them in agents/index.ts, and renumber the subsequent sections sequentially so there is no skipped number.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@examples/with-anthropic/src/tools.ts`:
- Around line 69-85: Update webSearchTool and the web-search-agent integration
so placeholder example.com results cannot be presented as live cited evidence:
either wire webSearchTool to a real search provider, or clearly mark the entire
agent as a mock and prohibit claims about current information. Ensure the
agent’s instructions and exposed behavior consistently reflect the selected
approach.
- Around line 55-65: Update the calculator execution in the execute handler to
validate the evaluated result with Number.isFinite before returning success.
Return the existing invalid-expression error for Infinity, -Infinity, or NaN,
while preserving successful returns for finite arithmetic results.
In `@website/static/llms-full.txt`:
- Around line 63-68: Replace the repository-relative links in the “More Info”
section with published voltagent.dev documentation URLs, removing .md extensions
and package/source paths. Use the corresponding extensionless documentation
routes, including the quick-start and agents/tools pages where applicable, while
preserving the existing link labels.
- Around line 186-188: Fix the documentation section numbering around “4. Key
Capabilities In-Depth” by either restoring the missing section 3 or renumbering
subsequent sections consistently. Ensure the table of contents and all
cross-references match the corrected numbering.
- Line 916: Update the `.gitignore` entry in `llms-full.txt` so the “View
/.gitignore” reference uses valid Markdown link syntax with a destination
pointing to the `.gitignore` file. Preserve the existing description and link
label.
- Around line 1-3: Update the guide’s version labeling, memory examples, and
related links to match the current v2 API: replace `@voltagent/core`’s
LibSQLStorage usage with Memory and LibSQLMemoryAdapter from `@voltagent/libsql`.
Ensure all referenced examples and links in the guide consistently target v2, or
explicitly move the unchanged v1 content to an archived v1 guide.
- Around line 264-267: Update the catch handling around the Weather tool example
to narrow or normalize the caught value before accessing .message, using an
instanceof Error guard or equivalent. Preserve the existing console.error output
and structured return error, using a safe fallback message for non-Error values.
In `@website/static/llms.txt`:
- Around line 57-75: Update the documentation links in the Models & Providers,
Observability, and Evaluation sections of llms.txt: point Models Overview to
/models-docs/, Providers to /models-docs/providers/overview, Observability
Overview to /observability-docs/overview, and Evals Overview to
/evaluation-docs/. Leave the other links unchanged.
---
Nitpick comments:
In `@examples/with-anthropic/src/agents/output-constrained.ts`:
- Around line 25-30: Replace the prompt-only JSON templates in
examples/with-anthropic/src/agents/output-constrained.ts (lines 25-30) and
examples/with-anthropic/src/agents/math-agent.ts (lines 19-26) with structured
output configured via Output.object(...), preserving each agent’s expected
fields and value constraints. Replace placeholder type notation in the prompts
with concrete JSON examples, and ensure both agents expose the structured output
configuration for machine-readable results.
In `@examples/with-anthropic/src/agents/repo-analyzer.ts`:
- Around line 25-35: Add a meaningful purpose field to the repoAnalyzer Agent
configuration, alongside its name and instructions, describing that it analyzes
repositories and produces a concise report. Keep the existing delegation
instructions and subAgents configuration unchanged.
In `@examples/with-anthropic/src/index.ts`:
- Around line 37-62: Update the inline section numbering in the VoltAgent agent
registry so the specialist agents grouped under “Supervisor / routing” use the
same section number assigned to them in agents/index.ts, and renumber the
subsequent sections sequentially so there is no skipped number.
In `@examples/with-anthropic/src/prompts.ts`:
- Around line 45-48: Update the catch block in renderLocalPrompt to log the
caught error before returning the existing fallback prompt. Preserve the current
fallback behavior while ensuring the log includes enough context, such as
promptName and the original error, to distinguish missing files from parsing or
encoding failures.
- Around line 32-34: Update renderLocalPrompt, used by resolvePrompt, to avoid
synchronous disk I/O on every invocation by caching each local prompt’s parsed
content after its first read. Preserve the existing prompt parsing and return
behavior while reusing the cached result for subsequent requests.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 4543c4cf-e5a2-436c-a371-2985660b24ba
📒 Files selected for processing (16)
examples/with-anthropic/src/agents/index.tsexamples/with-anthropic/src/agents/math-agent.tsexamples/with-anthropic/src/agents/output-constrained.tsexamples/with-anthropic/src/agents/publishing-coordinator.tsexamples/with-anthropic/src/agents/reasoning-agent.tsexamples/with-anthropic/src/agents/repo-analyzer.tsexamples/with-anthropic/src/agents/routing-supervisor.tsexamples/with-anthropic/src/agents/specialists.tsexamples/with-anthropic/src/agents/support-agent.tsexamples/with-anthropic/src/agents/web-search-agent.tsexamples/with-anthropic/src/index.tsexamples/with-anthropic/src/model.tsexamples/with-anthropic/src/prompts.tsexamples/with-anthropic/src/tools.tswebsite/static/llms-full.txtwebsite/static/llms.txt
| execute: async ({ expression }) => { | ||
| if (!/^[0-9+\-*/(). ]+$/.test(expression)) { | ||
| return { error: "Only numbers and the operators + - * / ( ) are allowed." }; | ||
| } | ||
| try { | ||
| // Input is restricted to arithmetic characters above, so this is a safe eval. | ||
| const result = Function(`"use strict"; return (${expression});`)(); | ||
| return { expression, result }; | ||
| } catch { | ||
| return { error: "Invalid arithmetic expression." }; | ||
| } |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Reject non-finite calculator results.
Expressions such as 1 / 0 and 0 / 0 pass validation and return Infinity or NaN as successful results. Return an error when the evaluated result is not finite.
Proposed fix
const result = Function(`"use strict"; return (${expression});`)();
+ if (!Number.isFinite(result)) {
+ return { error: "Result must be finite." };
+ }
return { expression, result };📝 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.
| execute: async ({ expression }) => { | |
| if (!/^[0-9+\-*/(). ]+$/.test(expression)) { | |
| return { error: "Only numbers and the operators + - * / ( ) are allowed." }; | |
| } | |
| try { | |
| // Input is restricted to arithmetic characters above, so this is a safe eval. | |
| const result = Function(`"use strict"; return (${expression});`)(); | |
| return { expression, result }; | |
| } catch { | |
| return { error: "Invalid arithmetic expression." }; | |
| } | |
| execute: async ({ expression }) => { | |
| if (!/^[0-9+\-*/(). ]+$/.test(expression)) { | |
| return { error: "Only numbers and the operators + - * / ( ) are allowed." }; | |
| } | |
| try { | |
| // Input is restricted to arithmetic characters above, so this is a safe eval. | |
| const result = Function(`"use strict"; return (${expression});`)(); | |
| if (!Number.isFinite(result)) { | |
| return { error: "Result must be finite." }; | |
| } | |
| return { expression, result }; | |
| } catch { | |
| return { error: "Invalid arithmetic expression." }; | |
| } |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/with-anthropic/src/tools.ts` around lines 55 - 65, Update the
calculator execution in the execute handler to validate the evaluated result
with Number.isFinite before returning success. Return the existing
invalid-expression error for Infinity, -Infinity, or NaN, while preserving
successful returns for finite arithmetic results.
| /** Mock web search for the capability-list tool agent. Swap for Tavily/Exa in production. */ | ||
| export const webSearchTool = createTool({ | ||
| name: "web_search", | ||
| description: "Search the web for up-to-date information. Returns a list of result snippets.", | ||
| parameters: z.object({ | ||
| query: z.string().describe("The search query"), | ||
| maxResults: z.number().int().min(1).max(10).default(3).describe("How many results to return"), | ||
| }), | ||
| execute: async ({ query, maxResults }) => ({ | ||
| query, | ||
| results: Array.from({ length: maxResults }, (_, i) => ({ | ||
| title: `Result ${i + 1} for "${query}"`, | ||
| url: `https://example.com/search?q=${encodeURIComponent(query)}&r=${i + 1}`, | ||
| snippet: `Placeholder snippet ${i + 1} about ${query}.`, | ||
| })), | ||
| note: "Mock results — wire a real search API (Tavily, Exa, etc.) for production use.", | ||
| }), |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
Do not expose mock results as live cited search results.
webSearchTool always returns placeholder snippets and example.com URLs, while web-search-agent instructs the model to answer current-event questions with citations. Running that agent therefore produces fabricated evidence. Wire a real provider before exposing this behavior, or clearly label the entire agent as a mock and prohibit current-information claims.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/with-anthropic/src/tools.ts` around lines 69 - 85, Update
webSearchTool and the web-search-agent integration so placeholder example.com
results cannot be presented as live cited evidence: either wire webSearchTool to
a real search provider, or clearly mark the entire agent as a mock and prohibit
claims about current information. Ensure the agent’s instructions and exposed
behavior consistently reflect the selected approach.
| # VoltAgent: The Comprehensive Developer & LLM Guide (v1.0.x) | ||
|
|
||
| This document provides an exhaustive, self-contained guide to the VoltAgent framework (version 1.x). It is intended for both human developers seeking deep understanding and Large Language Models (LLMs) requiring rich context for analysis, code generation, or answering questions about VoltAgent. It details the architecture, core components, features, design rationale, key workflows, and provides illustrative code examples directly within the text. While links to source code and further documentation are provided, the core concepts and mechanisms are explained herein. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'FILE INFO\n'
wc -l website/static/llms-full.txt
printf '\nTOP OF FILE\n'
sed -n '1,40p' website/static/llms-full.txt
printf '\nRELEVANT MEMORY SECTION\n'
sed -n '297,324p' website/static/llms-full.txt
printf '\nAPI/IDENTIFIER SEARCHES\n'
rg -n "LibSQLStorage|LibSQLMemoryAdapter|`@voltagent/core`|`@voltagent/libsql`|Memory\\b|v1\.0\.x|v2\.0\.x" website/static/llms-full.txt
printf '\nREPO-WIDE FILE SEARCH\n'
git ls-files | rg '(^|/)(README|docs|website|packages).*(md|mdx|txt|ts|tsx|js|json)$' | head -n 200Repository: nilhemdot/voltagent
Length of output: 14932
🌐 Web query:
VoltAgent documentation LibSQLMemoryAdapter Memory @voltagent/libsql current docs v2.0.x
💡 Result:
The LibSQLMemoryAdapter is part of the @voltagent/libsql package within the VoltAgent framework, designed to provide durable memory storage for agents by utilizing LibSQL or SQLite [1][2]. It is suitable for self-hosted and edge deployment scenarios [2]. Key Features and Configuration: The adapter supports local SQLite files, in-memory storage (for testing), and remote LibSQL instances (such as Turso or self-hosted sqld) [1]. Common configuration options include: - url (string, required): The connection string (e.g., file:./path/to/db.db, libsql://..., or:memory:) [1]. - authToken (string, optional): Required for authenticating with remote LibSQL instances [1]. - tablePrefix (string, optional): Sets a custom prefix for tables (defaults to voltagent_memory) [1]. - logger (Logger, optional): Used for debugging [1]. Usage Example: import { Memory } from @voltagent/core; import { LibSQLMemoryAdapter } from @voltagent/libsql; const memory = new Memory({ storage: new LibSQLMemoryAdapter({ url: "file:./.voltagent/memory.db", }), }); The adapter also supports advanced features like working memory (using Zod schemas for structured context) and semantic search (when paired with a vector adapter) [3][4]. Detailed documentation for the current version can be found at the official VoltAgent documentation portal [1][2].
Citations:
- 1: https://voltagent.dev/docs/agents/memory/libsql/
- 2: https://voltagent.dev/docs/agents/memory/
- 3: https://voltagent.dev/recipes-and-guides/memory/
- 4: https://voltagent.dev/docs/agents/memory/overview/
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'DOC LINKS IN FILE\n'
rg -n "https?://|voltagent\.dev/docs" website/static/llms-full.txt | sed -n '1,80p'Repository: nilhemdot/voltagent
Length of output: 450
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Look for versioned docs and any indication that llms-full.txt is intentionally pinned.
rg -n "v2\.0\.x|v1\.0\.x|llms-full\.txt|LibSQLMemoryAdapter|LibSQLStorage|`@voltagent/libsql`|`@voltagent/core`" \
. --glob '!**/node_modules/**' --glob '!**/dist/**' --glob '!**/build/**' --glob '!**/.git/**' | sed -n '1,240p'Repository: nilhemdot/voltagent
Length of output: 24285
🌐 Web query:
VoltAgent v2.0.x LibSQLMemoryAdapter Memory current documentation
💡 Result:
In VoltAgent v2.0.x, the LibSQLMemoryAdapter is the recommended adapter for persistent, durable memory, allowing agents to remember conversations across sessions [1][2]. It supports local SQLite files, remote LibSQL databases (e.g., Turso), and self-hosted sqld instances [1]. Key Configuration Options: - url: string (Required): The connection string for your database. - Local SQLite: file:./path/to/memory.db [1] - In-memory (for testing)::memory: or file::memory: [1] - Remote/Self-hosted: libsql://your-database-url or https://your-server.com [1] - authToken: string (Optional): Required for authentication when connecting to remote LibSQL instances [1]. - tablePrefix: string (Optional): Custom prefix for memory tables; defaults to voltagent_memory [1]. - logger: Logger (Optional): A logger instance for debugging purposes [1]. Usage Example: import { Agent, Memory } from @voltagent/core; import { LibSQLMemoryAdapter } from @voltagent/libsql; const memory = new Memory({ storage: new LibSQLMemoryAdapter({ url: file:./.voltagent/memory.db, }), }); const agent = new Agent({ name: Assistant, model: openai/gpt-4o-mini, memory, }); Additional Capabilities: - Working Memory: You can enable structured working memory to maintain specific user profiles or context across sessions using Zod schemas and templates [3]. - Embedding & Vector Search: The Memory class supports integration with vector adapters (e.g., InMemoryVectorAdapter) and embedding models (e.g., openai/text-embedding-3-small) to enable semantic retrieval from your persistent storage [4][3]. Note: In VoltAgent v2.0.x, the default memory behavior is in-memory if a persistent storage adapter is omitted [4][2]. The framework has moved to AI SDK v6 compatibility, and users should ensure their dependencies are updated accordingly [5].
Citations:
- 1: https://voltagent.dev/docs/agents/memory/libsql/
- 2: https://github.com/VoltAgent/voltagent?tab=readme-ov-file
- 3: https://voltagent.dev/recipes-and-guides/memory/
- 4: https://voltagent.dev/docs/agents/memory/overview/
- 5: https://voltagent.dev/docs/getting-started/migration-guide/
Align this guide with the current API surface. website/static/llms-full.txt:1-3, 297-324 is labeled v1.0.x, but the memory example still uses LibSQLStorage from @voltagent/core; current docs use Memory + LibSQLMemoryAdapter from @voltagent/libsql. Either move this to an archived v1 guide or update the examples and links to v2.
🧰 Tools
🪛 LanguageTool
[style] ~3-~3: Consider a different adjective to strengthen your wording.
Context: ...ended for both human developers seeking deep understanding and Large Language Models...
(DEEP_PROFOUND)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@website/static/llms-full.txt` around lines 1 - 3, Update the guide’s version
labeling, memory examples, and related links to match the current v2 API:
replace `@voltagent/core`’s LibSQLStorage usage with Memory and
LibSQLMemoryAdapter from `@voltagent/libsql`. Ensure all referenced examples and
links in the guide consistently target v2, or explicitly move the unchanged v1
content to an archived v1 guide.
| **More Info:** | ||
|
|
||
| * `[Quick Start Guide](/docs/getting-started/quick-start.md)` | ||
| * `[create-voltagent-app README](/packages/create-voltagent-app/README.md)` | ||
| * `[Project Creator Source](/packages/create-voltagent-app/src/project-creator.ts)` | ||
| * `[Base Template Source](/packages/create-voltagent-app/templates/base/)` |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
Replace repository paths and .md URLs with published documentation links.
Links such as /docs/getting-started/quick-start.md and /packages/... are source/repository paths, not the published documentation routes. The live site uses extensionless routes such as /docs/getting-started/quick-start/ and /docs/agents/tools/, so these links will not reliably navigate readers from the static guide. (voltagent.dev)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@website/static/llms-full.txt` around lines 63 - 68, Replace the
repository-relative links in the “More Info” section with published
voltagent.dev documentation URLs, removing .md extensions and package/source
paths. Use the corresponding extensionless documentation routes, including the
quick-start and agents/tools pages where applicable, while preserving the
existing link labels.
| --- | ||
|
|
||
| ## 4. Key Capabilities In-Depth |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Restore the missing section 3 or renumber the following sections.
The guide jumps from section 2.3 directly to section 4, which makes the table of contents and cross-references misleading.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@website/static/llms-full.txt` around lines 186 - 188, Fix the documentation
section numbering around “4. Key Capabilities In-Depth” by either restoring the
missing section 3 or renumbering subsequent sections consistently. Ensure the
table of contents and all cross-references match the corrected numbering.
| } catch (error) { | ||
| console.error(`[Tool: Weather] Failed for ${location}:`, error.message); | ||
| // Provide a structured error for the LLM | ||
| return { error: `Failed to get weather for ${location}. Reason: ${error.message}` }; |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the referenced file around the quoted lines
sed -n '240,280p' website/static/llms-full.txt | cat -n
# Find where this Weather tool snippet originates in the repo
rg -n "Failed to get weather for|Tool: Weather|error\\.message" website . -g '!website/static/llms-full.txt'Repository: nilhemdot/voltagent
Length of output: 50377
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== website/static/llms-full.txt excerpt ==="
sed -n '250,275p' website/static/llms-full.txt | cat -n
echo
echo "=== potential source matches ==="
rg -n "Tool: Weather|Failed to get weather for|error\\.message" . -g '!website/static/llms-full.txt' -g '!**/node_modules/**'Repository: nilhemdot/voltagent
Length of output: 46607
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Show the exact excerpt and nearby file header
sed -n '258,270p' website/static/llms-full.txt | cat -nRepository: nilhemdot/voltagent
Length of output: 652
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Find the exact source of the weather-tool example
rg -n -C 8 '\[Tool: Weather\]|Failed to get weather for|Tool execution failed|Simulate 1 second delay' website/docs website/examples website/recipes website/static -g '!website/static/llms-full.txt'Repository: nilhemdot/voltagent
Length of output: 157
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Search for the exact weather example with some surrounding context
rg -n -C 12 'Tool: Weather|Failed to get weather for|weather for' website/docs website/examples website/recipes website -g '!website/static/llms-full.txt' | sed -n '1,120p'Repository: nilhemdot/voltagent
Length of output: 7388
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Find the exact location of the weather-tool example in source docs/examples
rg -n -C 6 'Tool: Weather|Failed for \$\{location\}|Provide a structured error for the LLM' website/docs website/examples website/recipes website -g '!website/static/llms-full.txt' | head -n 120Repository: nilhemdot/voltagent
Length of output: 157
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the likely source docs file around any weather-tool example
fd -a 'tools.md' website/docs website/examples website/recipes website | sed -n '1,20p'Repository: nilhemdot/voltagent
Length of output: 451
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Search the main tools doc for weather-related examples
rg -n -C 8 'weather|Tool: Weather|Failed for \$\{location\}' website/docs/agents/tools.md website/examples/with-* website/recipes/with-* 2>/dev/nullRepository: nilhemdot/voltagent
Length of output: 13748
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n --glob 'tsconfig*.json' --glob '*.json' '"strict"|useUnknownInCatchVariables' . | sed -n '1,120p'Repository: nilhemdot/voltagent
Length of output: 7486
Narrow the caught error before reading .message. Use an instanceof Error guard (or equivalent normalization) so this example stays valid strict TypeScript.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@website/static/llms-full.txt` around lines 264 - 267, Update the catch
handling around the Weather tool example to narrow or normalize the caught value
before accessing .message, using an instanceof Error guard or equivalent.
Preserve the existing console.error output and structured return error, using a
safe fallback message for non-Error values.
| * **License:** VoltAgent is licensed under the MIT License, allowing permissive use, modification, and distribution. `[View License](/LICENCE)` | ||
| * **Code of Conduct:** Follows the Contributor Covenant v2.0. `[View Code of Conduct](/CODE_OF_CONDUCT.md)` | ||
| * **Monorepo Management:** Uses `pnpm workspaces` (defined in `/pnpm-workspace.yaml`) and potentially `lerna`/`nx` (check `lerna.json`, `nx.json`) for managing packages. | ||
| * **`.gitignore`:** Specifies files and directories excluded from version control (build outputs, dependencies, environment files, logs, etc.). `[View /.gitignore]` |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Make the .gitignore reference an actual link.
[View /.gitignore] has no destination and renders as plain text.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@website/static/llms-full.txt` at line 916, Update the `.gitignore` entry in
`llms-full.txt` so the “View /.gitignore” reference uses valid Markdown link
syntax with a destination pointing to the `.gitignore` file. Preserve the
existing description and link label.
| ## Models & Providers | ||
|
|
||
| # Start the development server | ||
| npm run dev | ||
| ``` | ||
| - [Models Overview](https://voltagent.dev/models-docs/overview): provider registry | ||
| - [Providers](https://voltagent.dev/models-docs/providers): OpenAI, Anthropic, Google, xAI, Ollama, and more | ||
|
|
||
| **Rationale:** This tool ensures all necessary core packages (`@voltagent/core`, `ai` + an ai-sdk provider like `@ai-sdk/openai`, and optionally `@voltagent/server-hono`), TypeScript configuration (`tsconfig.json`), basic scripts (`package.json`), and initial file structure (`src/index.ts`) are correctly set up, including the `.voltagent` directory for local SQLite databases. | ||
| ## Observability | ||
|
|
||
| **Default Project Structure Generated:** | ||
| - [Observability Overview](https://voltagent.dev/observability-docs/overview): tracing and monitoring | ||
| - [Developer Console](https://voltagent.dev/observability-docs/developer-console): VoltOps Platform UI | ||
| - [Langfuse](https://voltagent.dev/observability-docs/langfuse): analytics integration | ||
| - [Logging](https://voltagent.dev/observability-docs/logging): structured logging | ||
|
|
||
| ``` | ||
| my-voltagent-app/ | ||
| ├── src/ | ||
| │ └── index.ts # Main agent definition and framework initialization | ||
| ├── .voltagent/ # Default directory for local SQLite databases (memory/observability) | ||
| ├── .env # Environment variables (API keys) | ||
| ├── .gitignore | ||
| ├── package.json # Project metadata, dependencies, scripts | ||
| ├── tsconfig.json # TypeScript configuration | ||
| └── README.md # Basic project README | ||
| ``` | ||
| ## Evaluation | ||
|
|
||
| The `npm run dev` command utilizes `tsx watch` for hot-reloading during development, automatically restarting the server on code changes. The server typically runs on `http://localhost:3141`. | ||
| - [Evals Overview](https://voltagent.dev/evaluation-docs/overview): agent quality measurement | ||
| - [Offline Evaluations](https://voltagent.dev/evaluation-docs/offline-evaluations): dataset-based | ||
| - [Live Evaluations](https://voltagent.dev/evaluation-docs/live-evaluations): production monitoring | ||
| - [Datasets](https://voltagent.dev/evaluation-docs/datasets), [Experiments](https://voltagent.dev/evaluation-docs/experiments), [Prebuilt Scorers](https://voltagent.dev/evaluation-docs/prebuilt-scorers), [Custom Scorers](https://voltagent.dev/evaluation-docs/building-custom-scorers) | ||
| - [CLI Reference](https://voltagent.dev/evaluation-docs/cli-reference) |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== File excerpt =="
cat -n website/static/llms.txt | sed -n '45,90p'
echo
echo "== Candidate route/manifest files =="
git ls-files | rg '(^|/)(route|routes|manifest|sitemap|llms\.txt|nav|sidebar|docs).*' || trueRepository: nilhemdot/voltagent
Length of output: 11888
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Search for the claimed canonical routes in repo =="
rg -n "/models-docs/|/docs/observability/overview/|/evaluation-docs/|/deployment-docs/" website . --glob '!**/node_modules/**' || true
echo
echo "== Search for llms docs references =="
rg -n "llms\.txt|Models Overview|Observability Overview|Deployment" website . --glob '!**/node_modules/**' || trueRepository: nilhemdot/voltagent
Length of output: 49505
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
import pathlib, re, sys
p = pathlib.Path("website/static/llms.txt")
text = p.read_text()
for url in sorted(set(re.findall(r'https?://[^)\s]+', text))):
print(url)
PYRepository: nilhemdot/voltagent
Length of output: 3562
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
urls = [
"https://voltagent.dev/models-docs/overview",
"https://voltagent.dev/models-docs/providers",
"https://voltagent.dev/models-docs/providers/overview/",
"https://voltagent.dev/docs/observability/overview/",
"https://voltagent.dev/observability-docs/overview",
"https://voltagent.dev/evaluation-docs/overview",
"https://voltagent.dev/evaluation-docs/",
"https://voltagent.dev/deployment-docs/",
]
for u in urls:
req = Request(u, method="HEAD", headers={"User-Agent": "Mozilla/5.0"})
try:
with urlopen(req, timeout=15) as resp:
print(resp.status, u, "->", resp.geturl())
except HTTPError as e:
print(e.code, u, "HTTPError")
except URLError as e:
print("ERR", u, e.reason)
PYRepository: nilhemdot/voltagent
Length of output: 1500
🌐 Web query:
site:voltagent.dev "models-docs/providers/overview" "observability-docs/overview" "evaluation-docs" "deployment-docs"
💡 Result:
The documentation sections requested refer to the VoltAgent framework, an open-source TypeScript platform for building and orchestrating AI agents [1][2]. Below is a summary of the core documentation areas mentioned: Models (models-docs/providers/overview) VoltAgent includes a built-in model registry that allows developers to use 80+ providers and over 2,000 models [3]. You can select models using string identifiers (e.g., provider/model) [3][4], which are automatically resolved by the Model Router [5], or by passing an ai-sdk LanguageModel for advanced configuration [3][6][4]. The registry automatically handles environment variable mapping and provides type safety for model identifiers [3][5]. Observability (observability-docs/overview) VoltAgent features built-in observability through the VoltOps platform [7][2]. It allows developers to monitor and debug agents by turning executions into visual, OpenTelemetry-based traces [7][2]. Key observability features include: - Waterfall and Node-Based trace views [8]. - Real-time monitoring of agent decisions, tool usage, logs, and latency [7][9]. - Filters for performance analysis (e.g., status, cost, token usage, and user/conversation ID) [8]. Evaluation (evaluation-docs) VoltAgent Evaluations provide a standardized way to measure agent performance [10]. The system supports: - Offline Evaluations: Running agent logic against fixed datasets for deterministic regression testing and CI/CD gates [10]. - Live Evaluations: Attaching scorers to real-time agent interactions to monitor production quality, perform moderation, or sample conversational performance [10]. Deployment (deployment-docs) VoltAgent supports streamlined deployment of AI agents to production, featuring integrated GitHub workflows and managed infrastructure [2]. The framework is designed to be production-ready by default, enabling developers to ship agents with built-in memory, workflows, and observability without requiring extensive custom infrastructure [2].
Citations:
- 1: https://voltagent.dev/docs/
- 2: https://voltagent.dev/docs/overview/
- 3: https://voltagent.dev/models-docs/
- 4: https://voltagent.dev/docs/agents/providers/
- 5: https://voltagent.dev/docs/getting-started/model-router/
- 6: https://voltagent.dev/docs/getting-started/providers-models/
- 7: https://voltagent.dev/observability-docs/
- 8: https://voltagent.dev/observability-docs/tracing/overview/
- 9: https://voltagent.dev/docs/observability/overview/
- 10: https://voltagent.dev/evaluation-docs/
Fix the docs links in website/static/llms.txt:59-75.
Models Overviewshould point to/models-docs/, andProvidersto/models-docs/providers/overview.Observability Overviewshould use/observability-docs/overview.Evals Overviewshould use/evaluation-docs/, not/evaluation-docs/overview.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@website/static/llms.txt` around lines 57 - 75, Update the documentation links
in the Models & Providers, Observability, and Evaluation sections of llms.txt:
point Models Overview to /models-docs/, Providers to
/models-docs/providers/overview, Observability Overview to
/observability-docs/overview, and Evals Overview to /evaluation-docs/. Leave the
other links unchanged.
|
✅ Unit tests committed locally. Commit: |
|
✅ Created PR with unit tests: #4 |
|
✅ Unit tests committed locally. Commit: |
Summary
website/static/llms.txt→website/static/llms-full.txt, preserving the existing 918-line comprehensive guide verbatim.website/static/llms.txtthat follows the llmstxt.org convention: an H1 title, blockquote summary, and##-grouped link sections pointing into the current docs (docs/,observability-docs/,evaluation-docs/,models-docs/,deployment-docs/,actions-triggers-docs/,prompt-engineering-docs/).staticDirectories: ["static"](sohttps://voltagent.dev/llms.txtbecomes the short index andhttps://voltagent.dev/llms-full.txtexposes the full guide).Why
Per the llmstxt.org spec,
llms.txtis meant to be a short, link-based entry point that LLMs can navigate. The current file conflates that role with the comprehensive inline content. Splitting it lets spec-aware tools fetch a small index, while still preserving the long-form guide for tools that want everything inline.Test plan
wc -l website/static/llms.txt≈ 120 lines;wc -l website/static/llms-full.txt= 918 lines.head -1 website/static/llms-full.txtreturns# VoltAgent: The Comprehensive Developer & LLM Guide (v1.0.x)(unchanged content).head -3 website/static/llms.txtstarts with# VoltAgentfollowed by the blockquote summary.cd website && pnpm startand confirmhttp://localhost:3000/llms.txtserves the new index andhttp://localhost:3000/llms-full.txtserves the prior comprehensive content.llms.txtresolve on the live site (e.g./docs/agents/overview,/evaluation-docs/overview,/models-docs/overview).Non-goals
llms-full.txtagainst the now-multi-instance docs structure (some inlined doc paths predate the split into*-docs/Docusaurus instances). Can be a follow-up.https://claude.ai/code/session_01PspFuRNHoDCfq6Rbe9aAqY
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation