-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
feat: Add environment variable support for AI agent configuration #2956
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: alpha
Are you sure you want to change the base?
feat: Add environment variable support for AI agent configuration #2956
Conversation
This commit adds support for configuring the AI agent via environment variables, following the same pattern used for other dashboard configurations. Two configuration methods are supported: 1. Full JSON configuration via PARSE_DASHBOARD_AGENT_CONFIG - Allows complex multi-model setups - Accepts a JSON string with the complete agent configuration 2. Individual environment variables for simple single-model setups: - PARSE_DASHBOARD_AGENT_MODEL_NAME - PARSE_DASHBOARD_AGENT_MODEL_PROVIDER - PARSE_DASHBOARD_AGENT_MODEL - PARSE_DASHBOARD_AGENT_API_KEY This enhancement makes it easier to deploy Parse Dashboard in containerized environments and improves security by allowing API keys to be stored as environment variables rather than in configuration files. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
🚀 Thanks for opening this pull request! |
📝 WalkthroughWalkthroughThe change adds support for an Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed 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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
🎉 Snyk checks have passed. No issues have been found so far.✅ security/snyk check is complete. No issues have been found. (View Details) |
There was a problem hiding this 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 (1)
README.md (1)
1313-1338
: Excellent documentation with minor formatting improvement needed.The AI agent environment variable documentation is comprehensive and well-structured. The two configuration methods are clearly explained with practical examples, and the precedence rules are clearly stated.
Consider adding language specification to the fenced code blocks for better syntax highlighting:
-``` +```bash PARSE_DASHBOARD_AGENT_CONFIG='{"models":[{"name":"ChatGPT 4.1","provider":"openai","model":"gpt-4.1","apiKey":"YOUR_API_KEY"}]}'-
+
bash
PARSE_DASHBOARD_AGENT_MODEL_NAME="ChatGPT 4.1"
PARSE_DASHBOARD_AGENT_MODEL_PROVIDER="openai"
PARSE_DASHBOARD_AGENT_MODEL="gpt-4.1"
PARSE_DASHBOARD_AGENT_API_KEY="YOUR_API_KEY"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
Parse-Dashboard/server.js
(2 hunks)README.md
(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
README.md (1)
Learnt from: mtrezza
PR: parse-community/parse-dashboard#0
File: :0-0
Timestamp: 2025-05-11T16:43:27.354Z
Learning: The bcryptjs library is used in Parse Dashboard for password encryption and validation in three files: Parse-Dashboard/Authentication.js (compareSync), Parse-Dashboard/CLI/mfa.js (genSaltSync, hashSync), and src/dashboard/Settings/DashboardSettings/DashboardSettings.react.js (genSaltSync, hashSync).
🪛 markdownlint-cli2 (0.17.2)
README.md
1321-1321: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
1329-1329: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (3)
README.md (1)
216-221
: Clear and comprehensive environment variable documentation.The new AI agent environment variables are well-documented and follow the established documentation pattern. The variable names are descriptive and the comments provide helpful context for both simple and complex configuration approaches.
Parse-Dashboard/server.js (2)
42-46
: LGTM! Consistent variable declarations.The new agent configuration variables follow the established pattern and naming conventions. The precedence of CLI options over environment variables is correctly maintained.
91-108
: Excellent implementation with proper error handling.The agent configuration logic is well-implemented with several strong points:
- Proper precedence: JSON config takes priority over individual variables
- Robust error handling for JSON parsing with clear error messages
- Validation that all required individual parameters are present
- Clean object construction following the expected schema
- Appropriate placement within the CLI configuration path
The implementation correctly matches the behavior documented in the README.
The agent configuration is designed to support multiple models, so having individual environment variables for a single model doesn't align with the feature's multi-model design. This commit keeps only PARSE_DASHBOARD_AGENT_CONFIG which accepts a JSON string with the full agent configuration. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
README.md (1)
1309-1320
: Specify a language for the fenced code block and show the single-var example
markdownlint
flags this snippet because the fenced block lacks a language identifier (MD040).
Addingbash
(orenv
) improves readability and lint compliance, and you could append the individual-variable example for completeness.-``` +```bash PARSE_DASHBOARD_AGENT_CONFIG='{"models":[{"name":"ChatGPT 4.1","provider":"openai","model":"gpt-4.1","apiKey":"YOUR_API_KEY"}]}' ```bash +# Alternatively for a single-model setup: +export PARSE_DASHBOARD_AGENT_MODEL_NAME="ChatGPT 4.1" +export PARSE_DASHBOARD_AGENT_MODEL_PROVIDER="openai" +export PARSE_DASHBOARD_AGENT_MODEL="gpt-4.1" +export PARSE_DASHBOARD_AGENT_API_KEY="YOUR_API_KEY" +```
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
Parse-Dashboard/server.js
(2 hunks)README.md
(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- Parse-Dashboard/server.js
🧰 Additional context used
🧠 Learnings (1)
README.md (1)
Learnt from: mtrezza
PR: parse-community/parse-dashboard#0
File: :0-0
Timestamp: 2025-05-11T16:43:27.354Z
Learning: The bcryptjs library is used in Parse Dashboard for password encryption and validation in three files: Parse-Dashboard/Authentication.js (compareSync), Parse-Dashboard/CLI/mfa.js (genSaltSync, hashSync), and src/dashboard/Settings/DashboardSettings/DashboardSettings.react.js (genSaltSync, hashSync).
🪛 markdownlint-cli2 (0.17.2)
README.md
1315-1315: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
Parse-Dashboard/server.js
Outdated
// Add agent configuration from environment variables | ||
if (configAgentConfig) { | ||
try { | ||
configFromCLI.data.agent = JSON.parse(configAgentConfig); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this work if it's not a JSON because it's set via JS config?
- Change configAgentConfig to configAgent for naming consistency - Handle both JS config objects and JSON strings properly - Remove separate env var chapter, integrate into existing table - Add environment variable column to AI Agent configuration table 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Remove the Environment Variable column from the AI Agent config table - Keep environment variable information as a note below the table - Properly align table columns for better readability 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Adjust column widths for better visual consistency and readability. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Summary
PARSE_DASHBOARD_AGENT_CONFIG
Motivation
The AI agent feature currently only supports configuration through the JSON config file. This PR adds environment variable support to:
Implementation Details
Users can provide the complete agent configuration as a JSON string via the
PARSE_DASHBOARD_AGENT_CONFIG
environment variable:PARSE_DASHBOARD_AGENT_CONFIG='{"models":[{"name":"ChatGPT 4.1","provider":"openai","model":"gpt-4.1","apiKey":"YOUR_API_KEY"}]}'
This supports the same multi-model configuration structure as the JSON config file, allowing users to define multiple AI models in the array.
Changes
Parse-Dashboard/server.js
to read agent configuration fromPARSE_DASHBOARD_AGENT_CONFIG
environment variableREADME.md
with documentation for the new environment variable in the AI Agent configuration tablePARSE_DASHBOARD_AGENT_CONFIG
Test plan
PARSE_DASHBOARD_AGENT_CONFIG
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation