Conversation
- Added `@chat-adapter/state-redis` dependency to package.json. - Updated `@mastra/client-js` from `^1.13.5-alpha.5` to `^1.13.5-alpha.7`. - Updated `@mastra/core` from `^1.26.0-alpha.5` to `^1.26.0-alpha.7`. - Added `@mastra/duckdb` dependency to package.json. - Updated `@mastra/mcp` from `^1.5.1-alpha.1` to `^1.5.0`. - Updated `@mastra/observability` from `^1.9.2-alpha.0` to `^1.10.0-alpha.2`. - Updated `@mastra/pg` from `^1.9.1` to `^1.9.2-alpha.0`. - Updated `@mastra/posthog` from `^1.0.17` to `^1.0.18-alpha.0`. - Updated `@mastra/react` from `^0.2.26` to `^1.0.0-beta.25`. - Updated `@mastra/schema-compat` from `^1.2.8` to `^1.2.9-alpha.1`. - Updated `@mastra/upstash` from `^1.0.4` to `^1.0.5-alpha.0`. - Updated `@tanstack/react-query` and `@tanstack/react-query-devtools` from `^5.99.0` to `^5.99.2`. - Updated `marked` from `^18.0.1` to `^18.0.2`. - Updated `@mastra/core` in devDependencies from `^1.26.0-alpha.5` to `^1.26.0-alpha.7`. refactor: Modify research agent response modalities and token limits - Changed `responseModalities` in `researchAgent.ts` from `['TEXT']` to `['TEXT', 'IMAGE']`. - Updated `TokenLimiter` from `64000` to `8000`. - Commented out `thinkingConfig` options in `providerOptions`. feat: Introduce DuckDB configuration for observability - Created new file `src/mastra/config/duckdb.ts` to configure DuckDB storage and vector. - Implemented `DuckDBStore`, `DuckDBVector`, and `Memory` for enhanced memory management. fix: Update Composio MCP client configuration - Changed the URL for `googleSheets` in `composio-mcp.ts` to the new backend endpoint.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Reviewer's GuideThis PR updates a broad set of Mastra, TanStack, and utility dependencies, reconfigures the research agent to use adjusted token limits and disables provider-specific Google options, introduces a DuckDB-backed memory/observability configuration wired into Mastra via a composite store, and fixes the Composio MCP Google Sheets client URL while adding active context/progress documentation entries. Sequence diagram for Composio MCP Google Sheets client with updated backend URLsequenceDiagram
participant AgentRuntime
participant MCPClient
participant GoogleSheetsBackend as GoogleSheetsBackend_v3
AgentRuntime->>MCPClient: initialize(composioKey)
MCPClient->>MCPClient: setEndpoint(googleSheets,
MCPClient->>MCPClient: "https://backend.composio.dev/v3/mcp/bdb604fb-b165-47cb-bf90-cc45ba604c20/mcp?user_id=agentstack")
AgentRuntime->>MCPClient: invoke(googleSheets, request)
MCPClient->>GoogleSheetsBackend: HTTP request with payload
GoogleSheetsBackend-->>MCPClient: HTTP response
MCPClient-->>AgentRuntime: parsed result
Class diagram for DuckDB-backed memory and composite storageclassDiagram
class DuckDBStore {
+string id
+string path
}
class DuckDBVector {
+string id
+string path
}
class Memory {
+DuckDBStore storage
+DuckDBVector vector
+any embedder
+object embedderOptions
+object options
}
class MastraCompositeStore {
+string id
+string name
+any default
+any editor
+object domains
}
class FilesystemStore {
+string dir
}
class LibSQLStore {
}
class Observability {
}
class duckStore {
}
class duckVector {
}
class duckDBMemory {
}
class libsqlstorage {
}
class mastra {
}
DuckDBStore <|-- duckStore
DuckDBVector <|-- duckVector
Memory <|-- duckDBMemory
DuckDBStore --> Memory : storage
DuckDBVector --> Memory : vector
LibSQLStore <|-- libsqlstorage
MastraCompositeStore --> LibSQLStore : default
MastraCompositeStore --> FilesystemStore : editor
class domains_observability {
}
MastraCompositeStore --> domains_observability : domains_observability
domains_observability --> DuckDBStore : observability
FilesystemStore <.. mastra : editor_files
MastraCompositeStore <.. mastra : storage
Observability <.. mastra : observability
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.
|
🤖 Hi @ssdeanx, I've received your request, and I'm working on it now! You can track my progress in the logs for more details. |
|
Caution Review failedPull request was closed or merged during review Summary by CodeRabbit
WalkthroughThis pull request introduces DuckDB-based memory and storage infrastructure to the Mastra framework, updates agent and tool configurations, enables new MCP servers, manages dependency versions, and documents ongoing Blender/FPV CAD research progress in memory bank files. Changes
Sequence Diagram(s)This change set does not meet the sequence diagram criteria. The modifications consist primarily of configuration updates, dependency management, documentation additions, and isolated agent/tool enablement rather than introducing new multi-component interaction flows with clear sequential dependencies that would benefit from visualization. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
🤖 I'm sorry @ssdeanx, but I was unable to process your request. Please see the logs for more details. |
There was a problem hiding this comment.
Code Review
This pull request introduces DuckDB for storage and vector persistence, updates various dependencies, and provides extensive documentation on FPV drone redesign progress. Key technical updates include the setup of a MastraCompositeStore and advanced memory configurations. Feedback identifies several issues: a critical anti-pattern of importing directly from node_modules, the use of incompatible or invalid model identifiers for fastembed and Gemini, hardcoded sensitive URLs in the MCP configuration, and discrepancies between the code and PR description regarding token limits and commented-out provider options.
| @@ -1,3 +1,4 @@ | |||
| import { ObservabilityDuckDBConfig } from './../../node_modules/@mastra/duckdb/dist/storage/domains/observability/index.d'; | |||
There was a problem hiding this comment.
Importing directly from node_modules using a relative path to a type definition file is a critical anti-pattern. It makes the codebase extremely fragile and dependent on the local file system structure of the node_modules directory. Furthermore, the imported type ObservabilityDuckDBConfig is not used anywhere in this file. This line should be removed.
| }, | ||
| providerOptions: { | ||
| fastembed: { | ||
| model: "text-embedding-3-small", |
There was a problem hiding this comment.
The model text-embedding-3-small is an OpenAI model, but it is being passed to fastembed, which is intended for running local embedding models. This will likely cause a runtime error as fastembed will not find a local model with this name.
| model: "text-embedding-3-small", | |
| model: "BAAI/bge-small-en-v1.5", |
| // url: new URL(`https://mcp.composio.dev/googlesheets/${composioKey}`), | ||
| //}, | ||
| googleSheets: { | ||
| url: new URL(`https://backend.composio.dev/v3/mcp/bdb604fb-b165-47cb-bf90-cc45ba604c20/mcp?user_id=agentstack`), |
There was a problem hiding this comment.
Hardcoding a specific backend URL containing a UUID and a user_id is a security and maintainability risk. This sensitive configuration should be managed via environment variables to ensure the code is portable across different environments and to avoid exposing internal identifiers in the source code.
| search: { topK: 5 }, | ||
| }), | ||
| //new TokenLimiter(64000), | ||
| new TokenLimiter(12000), |
There was a problem hiding this comment.
There is a discrepancy between the code and the pull request description. The description states that the TokenLimiter was updated to 8000, but the code implementation sets it to 12000. Please ensure the value aligns with the intended configuration.
| new TokenLimiter(12000), | |
| new TokenLimiter(8000), |
| //google: { | ||
| // responseModalities: ['TEXT', 'IMAGE'], | ||
| // thinkingConfig: { | ||
| // includeThoughts: true, | ||
| // thinkingLevel: 'medium', | ||
| // }, | ||
| //cachedContent: "Use cached content when available to reduce latency and costs, but ensure freshness for time-sensitive queries. Prefer cached data for static information and use real-time fetches for news, trends, and financial data.", | ||
| streamFunctionCallArguments: true, | ||
| mediaResolution: "MEDIA_RESOLUTION_MEDIUM", | ||
| threshold: 'OFF', // Set to 'OFF' to disable thresholding and allow all tool calls | ||
| //streamFunctionCallArguments: true, | ||
| //mediaResolution: "MEDIA_RESOLUTION_MEDIUM", | ||
| //threshold: 'OFF', // Set to 'OFF' to disable thresholding and allow all tool calls | ||
| //labels: "research-agent", | ||
| serviceTier: 'flex', | ||
| } satisfies GoogleLanguageModelOptions, | ||
| //serviceTier: 'standard', | ||
| // } satisfies GoogleLanguageModelOptions, |
There was a problem hiding this comment.
The entire providerOptions block for Google is commented out, which contradicts the pull request description stating that responseModalities was updated to include IMAGE. If these configurations are required for the agent's functionality, they should be active. If they are no longer needed, the code should be removed rather than commented out to maintain cleanliness.
| observationalMemory: { | ||
| enabled: true, | ||
| scope: 'thread', // 'resource' | 'thread' | ||
| model: 'google/gemini-2.5-flash', |
There was a problem hiding this comment.
There was a problem hiding this comment.
Hey - I've found 4 issues, and left some high level feedback:
- The
googleSheetsMCP client is configured with a hard-coded backend URL, API key, anduser_id; consider moving these values to environment variables or config so they can be rotated and differentiated across environments. - The new DuckDB store/vector paths (
./store.duckdb,./vectors.duckdb) are currently hard-coded; it may be safer to make these configurable (e.g., via env vars or a shared config helper) so they can be relocated for different deploy targets and storage policies. - There are large blocks of now-unused Google provider options in
researchAgent.tsthat are commented out; if this configuration is no longer needed, consider removing it or gating it behind a feature flag to keep the agent configuration easier to read and maintain.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The `googleSheets` MCP client is configured with a hard-coded backend URL, API key, and `user_id`; consider moving these values to environment variables or config so they can be rotated and differentiated across environments.
- The new DuckDB store/vector paths (`./store.duckdb`, `./vectors.duckdb`) are currently hard-coded; it may be safer to make these configurable (e.g., via env vars or a shared config helper) so they can be relocated for different deploy targets and storage policies.
- There are large blocks of now-unused Google provider options in `researchAgent.ts` that are commented out; if this configuration is no longer needed, consider removing it or gating it behind a feature flag to keep the agent configuration easier to read and maintain.
## Individual Comments
### Comment 1
<location path="src/mastra/index.ts" line_range="382" />
<code_context>
+ editor: new FilesystemStore({ dir: '.mastra-storage' }),
+ domains: {
+ //memory: new MemoryLibSQL({ url: 'file:./local.db' }),
+ observability: duckStore.observability,
+ }
+ }),
</code_context>
<issue_to_address>
**issue (bug_risk):** Accessing `duckStore.observability` looks incorrect for a `DuckDBStore` instance and may cause runtime errors.
The `duckStore` from `config/duckdb.ts` is a `DuckDBStore`, which doesn’t normally have an `observability` property. Using `duckStore.observability` in the `domains` map will likely be `undefined` or cause a type/runtime error. If observability data should live in DuckDB, pass `duckStore` itself (or a separate observability-specific store) instead of a nested property.
</issue_to_address>
### Comment 2
<location path="src/mastra/tools/composio-mcp.ts" line_range="24-25" />
<code_context>
- //googleSheets: {
- // url: new URL(`https://mcp.composio.dev/googlesheets/${composioKey}`),
- //},
+ googleSheets: {
+ url: new URL(`https://backend.composio.dev/v3/mcp/bdb604fb-b165-47cb-bf90-cc45ba604c20/mcp?user_id=agentstack`),
+ },
//gmail: {
</code_context>
<issue_to_address>
**issue:** The Google Sheets MCP URL is hardcoded with specific IDs and user information instead of using configuration.
Embedding `bdb604fb-b165-47cb-bf90-cc45ba604c20` and `user_id=agentstack` in the URL tightly couples this client to a single environment/user and may expose tenant-specific details in code. Please parameterize these values (e.g., via env vars or `composioKey`) so the client can be reused safely across deployments, similar to the existing `composio` configuration.
</issue_to_address>
### Comment 3
<location path="memory-bank/activeContext.md" line_range="23" />
<code_context>
+- R08 production pass introduced defects in bottom-only variant (`RocketBody_Bottom_ReferenceMatch_R08_Production` nonmanifold/boundary). Hotfix release now uses clean-bottom swap in `FINAL-BODY-SECTION/reference-match-r08-production-hotfix` with `RocketBody_Main_ReferenceMatch_R08_Hotfix.stl` + `RocketBody_Bottom_ReferenceMatch_R08_Hotfix.stl` (from clean R06 bottom) + `RocketBody_Nose_ReferenceMatch_R08_Hotfix.stl`.
</code_context>
<issue_to_address>
**suggestion (typo):** Consider hyphenating "nonmanifold" to match earlier usage of "non-manifold".
To stay consistent with earlier bullets (e.g., "non-manifold edges"), consider changing "nonmanifold/boundary" to "non-manifold/boundary" here.
```suggestion
- R08 production pass introduced defects in bottom-only variant (`RocketBody_Bottom_ReferenceMatch_R08_Production` non-manifold/boundary). Hotfix release now uses clean-bottom swap in `FINAL-BODY-SECTION/reference-match-r08-production-hotfix` with `RocketBody_Main_ReferenceMatch_R08_Hotfix.stl` + `RocketBody_Bottom_ReferenceMatch_R08_Hotfix.stl` (from clean R06 bottom) + `RocketBody_Nose_ReferenceMatch_R08_Hotfix.stl`.
```
</issue_to_address>
### Comment 4
<location path="memory-bank/progress.md" line_range="12" />
<code_context>
+- Completed full all-parts `R4` package to address every legacy STL slot: exported updated body, bottom, nose, motor-covers, and camera-mount files (plus stack-mount add-on) to `The Rocket Drone/redesign-r4`, with non-manifold checks reporting zero on key R4 parts.
</code_context>
<issue_to_address>
**nitpick (typo):** Consider making "motor-covers" consistent with other mentions of "motor covers".
Other occurrences use "motor covers" without a hyphen; consider matching that form here unless this variant is intentional.
```suggestion
- Completed full all-parts `R4` package to address every legacy STL slot: exported updated body, bottom, nose, motor covers, and camera-mount files (plus stack-mount add-on) to `The Rocket Drone/redesign-r4`, with non-manifold checks reporting zero on key R4 parts.
```
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
| editor: new FilesystemStore({ dir: '.mastra-storage' }), | ||
| domains: { | ||
| //memory: new MemoryLibSQL({ url: 'file:./local.db' }), | ||
| observability: duckStore.observability, |
There was a problem hiding this comment.
issue (bug_risk): Accessing duckStore.observability looks incorrect for a DuckDBStore instance and may cause runtime errors.
The duckStore from config/duckdb.ts is a DuckDBStore, which doesn’t normally have an observability property. Using duckStore.observability in the domains map will likely be undefined or cause a type/runtime error. If observability data should live in DuckDB, pass duckStore itself (or a separate observability-specific store) instead of a nested property.
| googleSheets: { | ||
| url: new URL(`https://backend.composio.dev/v3/mcp/bdb604fb-b165-47cb-bf90-cc45ba604c20/mcp?user_id=agentstack`), |
There was a problem hiding this comment.
issue: The Google Sheets MCP URL is hardcoded with specific IDs and user information instead of using configuration.
Embedding bdb604fb-b165-47cb-bf90-cc45ba604c20 and user_id=agentstack in the URL tightly couples this client to a single environment/user and may expose tenant-specific details in code. Please parameterize these values (e.g., via env vars or composioKey) so the client can be reused safely across deployments, similar to the existing composio configuration.
| - User-reported protruding-bar issue was fixed by rebuilding from clean sources into a new set: `RocketBody_Main_CleanRearMount_v3` + `RocketBody_Bottom_RearMount_v3`, with corrected rear 30mm join and relocated `RocketBody_ControlFin_Left_v2/Right_v2` in `FINAL-BODY-SECTION/v3-clean-join-controlfins`. | ||
| - A production-oriented `RocketDrone_PrintRelease_R01` package was created with normalized file names, standardized M3 hole sizing (Ø3.40), v5-derived main/bottom + actuator mounts + 2205 motor plate exports, QC coupon STLs, and release runbook/checklist docs. | ||
| - For reference-shape fidelity, latest active set is `FINAL-BODY-SECTION/reference-match-r06-final` with `RocketBody_Main_ReferenceMatch_R06_Final.stl`, `RocketBody_Bottom_ReferenceMatch_R06_Final.stl`, and `RocketBody_Nose_ReferenceMatch_R06_Final.stl` (cleaned from prior protrusion-heavy reinforcement variants). | ||
| - R08 production pass introduced defects in bottom-only variant (`RocketBody_Bottom_ReferenceMatch_R08_Production` nonmanifold/boundary). Hotfix release now uses clean-bottom swap in `FINAL-BODY-SECTION/reference-match-r08-production-hotfix` with `RocketBody_Main_ReferenceMatch_R08_Hotfix.stl` + `RocketBody_Bottom_ReferenceMatch_R08_Hotfix.stl` (from clean R06 bottom) + `RocketBody_Nose_ReferenceMatch_R08_Hotfix.stl`. |
There was a problem hiding this comment.
suggestion (typo): Consider hyphenating "nonmanifold" to match earlier usage of "non-manifold".
To stay consistent with earlier bullets (e.g., "non-manifold edges"), consider changing "nonmanifold/boundary" to "non-manifold/boundary" here.
| - R08 production pass introduced defects in bottom-only variant (`RocketBody_Bottom_ReferenceMatch_R08_Production` nonmanifold/boundary). Hotfix release now uses clean-bottom swap in `FINAL-BODY-SECTION/reference-match-r08-production-hotfix` with `RocketBody_Main_ReferenceMatch_R08_Hotfix.stl` + `RocketBody_Bottom_ReferenceMatch_R08_Hotfix.stl` (from clean R06 bottom) + `RocketBody_Nose_ReferenceMatch_R08_Hotfix.stl`. | |
| - R08 production pass introduced defects in bottom-only variant (`RocketBody_Bottom_ReferenceMatch_R08_Production` non-manifold/boundary). Hotfix release now uses clean-bottom swap in `FINAL-BODY-SECTION/reference-match-r08-production-hotfix` with `RocketBody_Main_ReferenceMatch_R08_Hotfix.stl` + `RocketBody_Bottom_ReferenceMatch_R08_Hotfix.stl` (from clean R06 bottom) + `RocketBody_Nose_ReferenceMatch_R08_Hotfix.stl`. |
| - Started the actual Blender redesign pass: created backup and working collections, generated scaled `_R1` shell variants for 5-inch fitting, added `FitGuides_5inch` hardware envelopes, and created first custom-fit parts (`Cam_Mount_19mm_R1`, `Stack_Mount_30p5_R1`). | ||
| - Continued Blender redesign with `R2` shell edits: hollowed the main body, added diagonal arm-clearance tunnels, hollowed the rear/bottom shell with a service slot, cut the nose camera cavity/lens opening, and exported an interim STL set to `The Rocket Drone/redesign-r2`. | ||
| - Completed precision `R3` refinement: fixed incorrect custom mount sizing, performed BVH overlap checks against stack/VTX/camera guides, resolved the VTX interference, verified zero-overlap outcomes for the critical guides, and exported a precision STL set to `The Rocket Drone/redesign-r3`. | ||
| - Completed full all-parts `R4` package to address every legacy STL slot: exported updated body, bottom, nose, motor-covers, and camera-mount files (plus stack-mount add-on) to `The Rocket Drone/redesign-r4`, with non-manifold checks reporting zero on key R4 parts. |
There was a problem hiding this comment.
nitpick (typo): Consider making "motor-covers" consistent with other mentions of "motor covers".
Other occurrences use "motor covers" without a hyphen; consider matching that form here unless this variant is intentional.
| - Completed full all-parts `R4` package to address every legacy STL slot: exported updated body, bottom, nose, motor-covers, and camera-mount files (plus stack-mount add-on) to `The Rocket Drone/redesign-r4`, with non-manifold checks reporting zero on key R4 parts. | |
| - Completed full all-parts `R4` package to address every legacy STL slot: exported updated body, bottom, nose, motor covers, and camera-mount files (plus stack-mount add-on) to `The Rocket Drone/redesign-r4`, with non-manifold checks reporting zero on key R4 parts. |
| }, | ||
| providerOptions: { | ||
| fastembed: { | ||
| model: "text-embedding-3-small", |
There was a problem hiding this comment.
CRITICAL: Incorrect model specification for fastembed provider
The fastembed embedder uses local models and does not support OpenAI model names like "text-embedding-3-small". This will cause runtime errors when attempting to generate embeddings. Use a valid fastembed model identifier instead.
Code Review SummaryStatus: 1 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)CRITICAL
Other Observations (not in diff)Issues found in unchanged code that cannot receive inline comments:
Files Reviewed (8 files)
Reviewed by grok-code-fast-1:optimized:free · 498,321 tokens |
There was a problem hiding this comment.
Pull request overview
This PR updates Mastra- and chat-adapter-related dependencies, introduces a DuckDB-backed observability storage configuration, and adjusts the research agent configuration and Composio MCP server wiring.
Changes:
- Bump and add dependencies (notably
@mastra/duckdb,@mastra/react,@chat-adapter/state-redis) and refresh lockfile. - Add DuckDB store/vector config and wire DuckDB into Mastra storage domains for observability.
- Update Composio MCP server config and modify research agent processor/provider settings.
Reviewed changes
Copilot reviewed 7 out of 9 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/mastra/tools/composio-mcp.ts | Enables a googleSheets MCP server entry with a new backend URL. |
| src/mastra/index.ts | Wires composite storage and attempts to route observability storage to DuckDB. |
| src/mastra/config/duckdb.ts | Introduces DuckDB store/vector instances and a Memory configuration. |
| src/mastra/agents/researchAgent.ts | Adjusts token limiting and comments out provider options/thinking config. |
| package.json | Adds/updates dependencies, including @mastra/duckdb and @mastra/react. |
| package-lock.json | Updates resolved dependency graph for the new versions/additions. |
| .gitignore | Adds ignore rules for DuckDB artifacts and blender.md. |
| memory-bank/progress.md | Adds progress notes (Blender MCP / FPV research). |
| memory-bank/activeContext.md | Adds active context notes (Blender MCP / FPV research). |
| googleSheets: { | ||
| url: new URL(`https://backend.composio.dev/v3/mcp/bdb604fb-b165-47cb-bf90-cc45ba604c20/mcp?user_id=agentstack`), | ||
| }, |
There was a problem hiding this comment.
The googleSheets MCP server URL is hard-coded to a specific backend instance and user_id, bypassing COMPOSIO_API_KEY and making the deployment environment-specific. This is brittle and risks unintentionally routing requests to the wrong tenant/user in non-dev environments.
Suggested fix: make this URL configurable via env vars (and/or derive it from composioKey + a COMPOSIO_USER_ID), and avoid committing fixed instance IDs in code.
| @@ -1,3 +1,4 @@ | |||
| import { ObservabilityDuckDBConfig } from './../../node_modules/@mastra/duckdb/dist/storage/domains/observability/index.d'; | |||
There was a problem hiding this comment.
This import reaches into node_modules using a relative path and targets a .d file. That will be emitted as a runtime import (unless it’s a type-only import) and is very likely to break builds/bundling. It’s also unused in this file.
Suggested fix: remove the import if it’s not needed; otherwise import the symbol from the public @mastra/duckdb entrypoint (and use import type if it’s only for typing).
| import { ObservabilityDuckDBConfig } from './../../node_modules/@mastra/duckdb/dist/storage/domains/observability/index.d'; |
| import { ComposioToolProvider } from '@mastra/editor/composio' | ||
| //import { GoogleVoice } from '@mastra/voice-google' | ||
| //import { composioAgent } from './agents/compsio' | ||
| import { composioAgent } from './agents/compsio' |
There was a problem hiding this comment.
composioAgent is imported but not actually registered (it’s still commented out in the agents map). If this stays unused, it can trigger TS unused-import linting and adds confusion about whether the agent is expected to be available.
Suggested fix: either register composioAgent in agents or remove the import until it’s needed.
| import { composioAgent } from './agents/compsio' |
| export const duckStore = new DuckDBStore({ | ||
| id: "duckdb-store", | ||
| path: './store.duckdb', // or './store.duckdb' for file persistence | ||
| }); | ||
|
|
||
| export const duckVector = new DuckDBVector({ | ||
| id: "duckdb-vector", | ||
| path: './vectors.duckdb', // or './vectors.duckdb' for file persistence |
There was a problem hiding this comment.
The DuckDB file path is set to ./store.duckdb (repo root at runtime), but .gitignore is currently ignoring src/mastra/public/store.duckdb instead. This mismatch makes it easy to accidentally create/commit DuckDB files in the repo root.
Suggested fix: either update the path to a consistently ignored directory (e.g. .mastra-storage/ or src/mastra/public/), or update .gitignore to match the actual runtime path (including *.wal/sidecar files).
| export const duckStore = new DuckDBStore({ | |
| id: "duckdb-store", | |
| path: './store.duckdb', // or './store.duckdb' for file persistence | |
| }); | |
| export const duckVector = new DuckDBVector({ | |
| id: "duckdb-vector", | |
| path: './vectors.duckdb', // or './vectors.duckdb' for file persistence | |
| /** | |
| * Stores DuckDB persistence files under a stable project subdirectory | |
| * so runtime-generated database files are not created in the repo root. | |
| */ | |
| const DUCKDB_STORAGE_DIR = "src/mastra/public"; | |
| export const duckStore = new DuckDBStore({ | |
| id: "duckdb-store", | |
| path: `${DUCKDB_STORAGE_DIR}/store.duckdb`, | |
| }); | |
| export const duckVector = new DuckDBVector({ | |
| id: "duckdb-vector", | |
| path: `${DUCKDB_STORAGE_DIR}/vectors.duckdb`, |
| export const duckStore = new DuckDBStore({ | ||
| id: "duckdb-store", | ||
| path: './store.duckdb', // or './store.duckdb' for file persistence | ||
| }); | ||
|
|
||
| export const duckVector = new DuckDBVector({ | ||
| id: "duckdb-vector", | ||
| path: './vectors.duckdb', // or './vectors.duckdb' for file persistence |
There was a problem hiding this comment.
DuckDBVector persists to ./vectors.duckdb, but there’s no corresponding ignore entry for vectors.duckdb / vectors.duckdb.wal. This can lead to untracked binary DB artifacts appearing in git status during local runs.
Suggested fix: align the vector DB path with the chosen storage directory and add ignore patterns for the vector DuckDB file and WAL files.
| export const duckStore = new DuckDBStore({ | |
| id: "duckdb-store", | |
| path: './store.duckdb', // or './store.duckdb' for file persistence | |
| }); | |
| export const duckVector = new DuckDBVector({ | |
| id: "duckdb-vector", | |
| path: './vectors.duckdb', // or './vectors.duckdb' for file persistence | |
| const DUCKDB_STORAGE_DIR = './.mastra'; | |
| const DUCKDB_STORE_PATH = `${DUCKDB_STORAGE_DIR}/store.duckdb`; | |
| const DUCKDB_VECTOR_PATH = `${DUCKDB_STORAGE_DIR}/vectors.duckdb`; | |
| export const duckStore = new DuckDBStore({ | |
| id: "duckdb-store", | |
| path: DUCKDB_STORE_PATH, | |
| }); | |
| export const duckVector = new DuckDBVector({ | |
| id: "duckdb-vector", | |
| path: DUCKDB_VECTOR_PATH, |
| }), | ||
| //new TokenLimiter(64000), | ||
| new TokenLimiter(12000), | ||
| ], | ||
| outputProcessors: [ | ||
| // new TokenLimiterProcessor(128000), | ||
| new TokenLimiterProcessor(200000), | ||
| // new BatchPartsProcessor({ |
There was a problem hiding this comment.
This diff diverges from the PR description for the research agent configuration: TokenLimiter is set to 12000 (not 8000), and an output TokenLimiterProcessor(200000) is added, while the Google responseModalities / thinkingConfig changes appear commented out elsewhere in the file.
Suggested fix: either update the PR description to reflect the actual behavior, or adjust the code so the intended token limit and provider options are applied (not commented).
| "@mastra/qdrant": "^1.0.2", | ||
| "@mastra/rag": "^2.2.0", | ||
| "@mastra/react": "^0.2.26", | ||
| "@mastra/react": "^1.0.0-beta.25", |
There was a problem hiding this comment.
@mastra/react is upgraded to ^1.0.0-beta.25, but the lockfile shows it brings in @mastra/client-js@1.0.0-beta.25 and @mastra/core@1.0.0-beta.25 nested under it, while the app depends on @mastra/client-js@^1.13.5-alpha.7 and @mastra/core@^1.26.0-alpha.7. This kind of multi-version skew can cause hard-to-debug runtime issues (duplicate singletons, incompatible types/ABI expectations).
Suggested fix: align @mastra/react to a version line that depends on the same @mastra/client-js/@mastra/core series as the rest of the app, or add package manager overrides/resolutions to force a single compatible version set.
| editor: new FilesystemStore({ dir: '.mastra-storage' }), | ||
| domains: { | ||
| //memory: new MemoryLibSQL({ url: 'file:./local.db' }), | ||
| observability: duckStore.observability, |
There was a problem hiding this comment.
duckStore is exported as a DuckDBStore instance in src/mastra/config/duckdb.ts, but here it’s used as if it has an observability property (duckStore.observability). Unless DuckDBStore actually defines that property, this will be undefined at runtime and break observability storage.
Suggested fix: export the correct observability-domain store/config from duckdb.ts (e.g., duckObservabilityStore) and reference that here, or pass duckStore directly if the composite store expects a store instance for the observability domain.
| observability: duckStore.observability, | |
| observability: duckStore, |
| "@mastra/core": "^1.26.0-alpha.7", | ||
| "@mastra/daytona": "^0.2.1", | ||
| "@mastra/deployer": "^1.26.0-alpha.3", | ||
| "@mastra/duckdb": "^1.1.2", | ||
| "@mastra/editor": "^0.7.17-alpha.1", |
There was a problem hiding this comment.
@mastra/duckdb (and several other @mastra packages) declare an engine requirement of Node >=22.13.0 (as reflected in the lockfile). The repo’s package.json currently advertises engines.node >=20.9.0, which can lead to installs succeeding on unsupported Node versions and then failing at runtime/build.
Suggested fix: bump engines.node to match the strictest @mastra dependency requirement (or document/enforce the required Node version via tooling like .nvmrc/Volta).
@chat-adapter/state-redisdependency to package.json.@mastra/client-jsfrom^1.13.5-alpha.5to^1.13.5-alpha.7.@mastra/corefrom^1.26.0-alpha.5to^1.26.0-alpha.7.@mastra/duckdbdependency to package.json.@mastra/mcpfrom^1.5.1-alpha.1to^1.5.0.@mastra/observabilityfrom^1.9.2-alpha.0to^1.10.0-alpha.2.@mastra/pgfrom^1.9.1to^1.9.2-alpha.0.@mastra/posthogfrom^1.0.17to^1.0.18-alpha.0.@mastra/reactfrom^0.2.26to^1.0.0-beta.25.@mastra/schema-compatfrom^1.2.8to^1.2.9-alpha.1.@mastra/upstashfrom^1.0.4to^1.0.5-alpha.0.@tanstack/react-queryand@tanstack/react-query-devtoolsfrom^5.99.0to^5.99.2.markedfrom^18.0.1to^18.0.2.@mastra/corein devDependencies from^1.26.0-alpha.5to^1.26.0-alpha.7.refactor: Modify research agent response modalities and token limits
responseModalitiesinresearchAgent.tsfrom['TEXT']to['TEXT', 'IMAGE'].TokenLimiterfrom64000to8000.thinkingConfigoptions inproviderOptions.feat: Introduce DuckDB configuration for observability
src/mastra/config/duckdb.tsto configure DuckDB storage and vector.DuckDBStore,DuckDBVector, andMemoryfor enhanced memory management.fix: Update Composio MCP client configuration
googleSheetsincomposio-mcp.tsto the new backend endpoint.Summary by Sourcery
Update agent storage and observability configuration while refreshing dependencies and internal research context notes.
New Features:
Enhancements:
Build:
Documentation: