Skip to content

Conversation

@feifei325
Copy link
Collaborator

@feifei325 feifei325 commented Dec 2, 2025

Summary

This PR adds a software requirements display feature to the Shell editing page, helping users understand what software and versions need to be pre-installed in their base images before creating or validating shells.

Changes Made

  • Created SoftwareRequirements.tsx component:

    • Displays minimum version requirements for different shell types (ClaudeCode, Agno)
    • Includes copy-to-clipboard functionality for check commands
    • Responsive design (single column on mobile, dual column on desktop)
  • Integrated into ShellEdit.tsx:

    • Automatically displays requirements when user selects a base shell type
    • Positioned after the "Base Shell" selector for logical flow
  • Added i18n translations:

    • Chinese and English translations for all new UI text
    • Maintains consistency with existing translation patterns

Version Requirements Defined

ClaudeCode:

  • Node.js ≥ 20.0.0 (required)
  • Python ≥ 3.12.0 (required)
  • SQLite ≥ 3.50.0 (required)
  • claude-code CLI ≥ 0.1.0 (optional)

Agno:

  • Python ≥ 3.12.0 (required)

Dify:

  • No requirements (external API mode)

UI/UX Improvements

  • Clean card-based layout following Calm UI design principles
  • Color-coded badges to distinguish required vs optional software
  • One-click command copying for user convenience
  • Seamless integration with existing validation workflow
  • No additional API calls required (pure frontend implementation)

Test Plan

  • Verify software requirements display correctly for ClaudeCode shells
  • Verify software requirements display correctly for Agno shells
  • Verify no requirements shown for Dify shells (external API)
  • Test copy command functionality
  • Test responsive layout on mobile and desktop
  • Verify translations work in both Chinese and English

Summary by CodeRabbit

  • New Features
    • Added a software requirements panel in Shell settings that shows required/optional dependencies, minimum versions, descriptions, and copyable install commands with visual copy confirmation.
  • Localization
    • Added English and Simplified Chinese translations for the software requirements UI.
  • Bug Fixes
    • Adjusted shell validation mapping so sqlite validation applies under the correct shell type.

✏️ Tip: You can customize this high-level summary in your review settings.

Added SoftwareRequirements component to show minimum version requirements
for different shell types (ClaudeCode, Agno) when creating or editing shells.
This helps users understand environment preparation requirements before validation.

Changes:
- Created SoftwareRequirements.tsx with version requirement data structure
- Integrated component into ShellEdit to display requirements based on selected shell type
- Added copy-to-clipboard functionality for check commands
- Supports responsive layout (single column on mobile, dual column on desktop)
- Added i18n translations for Chinese and English
@coderabbitai
Copy link

coderabbitai bot commented Dec 2, 2025

Walkthrough

Adds a new SoftwareRequirements React component, conditionally renders it from ShellEdit when a base shell is selected, provides copy-to-clipboard for commands, and adds English and Chinese translation keys for the UI strings.

Changes

Cohort / File(s) Summary
New UI component
frontend/src/features/settings/components/SoftwareRequirements.tsx
Adds SoftwareRequirements React component and exported SoftwareRequirement interface. Renders per-shell requirement cards with name, min version, optional description, command + copy button and temporary success feedback. Uses i18n translations.
ShellEdit integration
frontend/src/features/settings/components/ShellEdit.tsx
Imports and conditionally renders <SoftwareRequirements shellType={...} /> when a base shell is selected; no save/validation logic changes.
Localization
frontend/src/i18n/locales/en/common.json, frontend/src/i18n/locales/zh-CN/common.json
Adds translation keys under shells.errors: software_requirements_title, software_requirements_hint, copy_command, required, optional.
Validation checks reconfiguration
executor/agents/image_validator/image_validator_agent.py
Moves the sqlite validation check from the ClaudeCode validation set to the Agno validation set (data/config change; behavior shifts which shell_type validates sqlite).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review mapping data in SoftwareRequirements.tsx for correctness and completeness.
  • Verify clipboard/copy UX and error handling in SoftwareRequirements.tsx.
  • Confirm conditional lookup and prop passed in ShellEdit.tsx matches available shellType values.
  • Check i18n key names and presence in both locale files.
  • Validate that moving sqlite check between validation sets in image_validator_agent.py is intentional and doesn't break expectations.

Possibly related PRs

Poem

🐰 I hopped through shells and found a list,
Commands to copy, none are missed.
Versions, badges, a helpful clue,
East and West have words anew.
Click the button — clipboard bliss! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly describes the main UI feature being added: displaying software requirements for shell types in the frontend.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch wegent/shell-software-requirements

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.

❤️ Share

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

Copy link

@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 (5)
frontend/src/features/settings/components/ShellEdit.tsx (1)

29-29: SoftwareRequirements integration looks correct; minor readability tweak optional

The new import and conditional render correctly derive the selected shell from baseShells and safely render SoftwareRequirements only when shellType is available. Behavior for unknown/unsupported shell types falls back to “no UI,” which matches the Dify requirements case.

If you want to simplify readability, you could precompute selectedShell via useMemo or a simple local variable before JSX rather than using an inline IIFE in the markup, but this is purely optional.

Also applies to: 506-512

frontend/src/features/settings/components/SoftwareRequirements.tsx (4)

1-13: Rename file to kebab‑case to match components naming guideline

Since this lives under a components directory and the repo guidelines say **/components/**/*.{ts,tsx} must use kebab‑case filenames, consider renaming the file to software-requirements.tsx and updating the import in ShellEdit.tsx to ./software-requirements.


14-22: Interface is clear; note that versionRegex is currently unused

The SoftwareRequirement shape is straightforward and well‑documented. Right now versionRegex is not used anywhere; that’s fine, but if there’s no near‑term plan to consume it, you could drop it to keep the interface minimal, or add a brief TODO indicating planned usage.


72-163: Component behavior and UX are solid; consider i18n for descriptions

The main component logic looks good:

  • Early‑return when there are no requirements (e.g., Dify) avoids rendering empty chrome.
  • Clipboard handling with a transient copiedCommand state and a check icon provides nice feedback.
  • Layout uses shadcn/ui primitives and existing design tokens; responsive grid is mobile‑first.

Two minor potential improvements:

  1. The description strings are hard‑coded in English; if you want full localization parity, consider moving them into the i18n files similar to the title/hint.
  2. You might want to log copy failures at a lower level or with a more structured logger if you have one, but console.error is acceptable for now.

Both are non‑blocking.


24-70: Improve type safety for shellType and shellRequirements using as const and satisfies

The current code accepts any string for shellType, risking runtime errors when accessing shellRequirements[shellType]. TypeScript 5.7 supports the recommended pattern of combining as const with satisfies to preserve literal types while validating shape:

-const shellRequirements: Record<string, SoftwareRequirement[]> = {
+const shellRequirements = {
   ClaudeCode: [
     {
       name: 'Node.js',
       command: 'node --version',
       minVersion: '20.0.0',
       required: true,
       description: 'JavaScript runtime for Claude Code CLI',
     },
     {
       name: 'Python',
       command: 'python --version',
       minVersion: '3.12.0',
       required: true,
       description: 'Python interpreter for agent execution',
     },
     {
       name: 'SQLite',
       command: 'sqlite3 --version',
       minVersion: '3.50.0',
       required: true,
       description: 'Database for local data storage',
     },
     {
       name: 'claude-code',
       command: 'claude-code --version',
       minVersion: '0.1.0',
       required: false,
       description: 'Claude Code CLI (recommended)',
     },
   ],
   Agno: [
     {
       name: 'Python',
       command: 'python --version',
       minVersion: '3.12.0',
       required: true,
       description: 'Python interpreter for agent execution',
     },
   ],
   Dify: [],
+} as const satisfies Record<string, SoftwareRequirement[]>;

+type ShellType = keyof typeof shellRequirements;
+
 interface SoftwareRequirementsProps {
-  shellType: string; // Shell type (e.g., ClaudeCode, Agno, Dify)
+  shellType: ShellType;
 }

This constrains shellType to valid keys and catches typos at compile time.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1aca6e9 and 5d806d3.

📒 Files selected for processing (4)
  • frontend/src/features/settings/components/ShellEdit.tsx (2 hunks)
  • frontend/src/features/settings/components/SoftwareRequirements.tsx (1 hunks)
  • frontend/src/i18n/locales/en/common.json (1 hunks)
  • frontend/src/i18n/locales/zh-CN/common.json (1 hunks)
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{py,ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

All code comments, inline comments, block comments, docstrings, TODO/FIXME annotations, and type hints descriptions MUST be written in English

Files:

  • frontend/src/features/settings/components/ShellEdit.tsx
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx}: TypeScript code MUST use strict mode with type checking enabled
TypeScript/React code MUST use Prettier formatter with single quotes, no semicolons
TypeScript/React code MUST pass ESLint with Next.js configuration
React component names MUST use PascalCase convention

Files:

  • frontend/src/features/settings/components/ShellEdit.tsx
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx}: React components MUST use functional components with hooks instead of class-based components
Use const over let, never use var in TypeScript/JavaScript code

Files:

  • frontend/src/features/settings/components/ShellEdit.tsx
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/components/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

React component files MUST use kebab-case naming convention

Files:

  • frontend/src/features/settings/components/ShellEdit.tsx
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/src/**/*.{tsx,jsx,css}

📄 CodeRabbit inference engine (AGENTS.md)

Frontend Tailwind CSS MUST use provided CSS variables for color system (e.g., --color-bg-base, --color-text-primary, --color-primary)

Files:

  • frontend/src/features/settings/components/ShellEdit.tsx
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/src/**/*.{tsx,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/src/**/*.{tsx,jsx}: Frontend responsive design MUST follow mobile-first approach with Tailwind breakpoints
Frontend React forms MUST use react-hook-form with zod validation schema
Frontend components MUST use shadcn/ui component library from frontend/src/components/ui/

Files:

  • frontend/src/features/settings/components/ShellEdit.tsx
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
🧠 Learnings (1)
📚 Learning: 2025-12-01T06:44:24.499Z
Learnt from: CR
Repo: wecode-ai/Wegent PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-01T06:44:24.499Z
Learning: Applies to **/src/**/*.{tsx,jsx} : Frontend components MUST use shadcn/ui component library from `frontend/src/components/ui/`

Applied to files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
🧬 Code graph analysis (1)
frontend/src/features/settings/components/SoftwareRequirements.tsx (3)
frontend/src/components/ui/card.tsx (1)
  • Card (75-75)
frontend/src/components/ui/badge.tsx (1)
  • Badge (43-43)
frontend/src/components/ui/button.tsx (1)
  • Button (55-55)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: e2e-tests
🔇 Additional comments (2)
frontend/src/i18n/locales/en/common.json (1)

598-603: New software requirements i18n keys align with component usage

The added shells.* keys (software_requirements_title, software_requirements_hint, required, optional, copy_command) match the lookup paths used in SoftwareRequirements.tsx and read clearly in English. No issues here.

frontend/src/i18n/locales/zh-CN/common.json (1)

599-604: Chinese software requirements translations are consistent and well‑scoped

The new shells.* keys for software requirements (title, hint, required/optional badges, copy label) correctly mirror the English versions and align with the lookup paths in the component. Looks good.

Copy link

@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: 4

🧹 Nitpick comments (2)
executor/agents/image_validator/image_validator_agent.py (1)

101-165: Consider refactoring long methods to improve maintainability.

The execute() (~64 lines) and _run_check() (~73 lines) methods exceed the 50-line guideline. While the code is readable and well-structured, extracting helper methods would improve maintainability:

  • For execute(): extract progress reporting into _report_check_progress()
  • For _run_check(): extract version parsing/comparison into _validate_version()

As per coding guidelines, Python functions should not exceed 50 lines (preferred maximum).

Also applies to: 167-239

frontend/src/features/settings/components/SoftwareRequirements.tsx (1)

134-145: Consider using consistent icon library.

CheckIcon is imported from @heroicons/react/24/outline, but the copy icon is an inline SVG. For consistency and maintainability, consider using a heroicon for the copy action as well (e.g., DocumentDuplicateIcon).

+import { CheckIcon, DocumentDuplicateIcon } from '@heroicons/react/24/outline';
-import { CheckIcon } from '@heroicons/react/24/outline';

Then replace the inline SVG:

 {copiedCommand === req.command ? (
   <CheckIcon className="w-4 h-4 text-green-600" />
 ) : (
-  <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
-    <path
-      strokeLinecap="round"
-      strokeLinejoin="round"
-      strokeWidth={2}
-      d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
-    />
-  </svg>
+  <DocumentDuplicateIcon className="w-4 h-4" />
 )}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5d806d3 and 8ba9729.

📒 Files selected for processing (2)
  • executor/agents/image_validator/image_validator_agent.py (1 hunks)
  • frontend/src/features/settings/components/SoftwareRequirements.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (7)
**/*.{py,ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

All code comments, inline comments, block comments, docstrings, TODO/FIXME annotations, and type hints descriptions MUST be written in English

Files:

  • executor/agents/image_validator/image_validator_agent.py
  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/*.py

📄 CodeRabbit inference engine (AGENTS.md)

**/*.py: Python code MUST be PEP 8 compliant with Black formatter (line length: 88) and isort for import organization
Python code MUST include type hints for all functions and variables
Python functions SHOULD NOT exceed 50 lines (preferred maximum)
Python functions and classes MUST have descriptive names and public functions/classes MUST include docstrings
Python code MUST extract magic numbers to named constants

Files:

  • executor/agents/image_validator/image_validator_agent.py
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx}: TypeScript code MUST use strict mode with type checking enabled
TypeScript/React code MUST use Prettier formatter with single quotes, no semicolons
TypeScript/React code MUST pass ESLint with Next.js configuration
React component names MUST use PascalCase convention

Files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx}: React components MUST use functional components with hooks instead of class-based components
Use const over let, never use var in TypeScript/JavaScript code

Files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/components/**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

React component files MUST use kebab-case naming convention

Files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/src/**/*.{tsx,jsx,css}

📄 CodeRabbit inference engine (AGENTS.md)

Frontend Tailwind CSS MUST use provided CSS variables for color system (e.g., --color-bg-base, --color-text-primary, --color-primary)

Files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
**/src/**/*.{tsx,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

**/src/**/*.{tsx,jsx}: Frontend responsive design MUST follow mobile-first approach with Tailwind breakpoints
Frontend React forms MUST use react-hook-form with zod validation schema
Frontend components MUST use shadcn/ui component library from frontend/src/components/ui/

Files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
🧠 Learnings (1)
📚 Learning: 2025-12-01T06:44:24.499Z
Learnt from: CR
Repo: wecode-ai/Wegent PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-01T06:44:24.499Z
Learning: Applies to **/src/**/*.{tsx,jsx} : Frontend components MUST use shadcn/ui component library from `frontend/src/components/ui/`

Applied to files:

  • frontend/src/features/settings/components/SoftwareRequirements.tsx
🧬 Code graph analysis (1)
frontend/src/features/settings/components/SoftwareRequirements.tsx (3)
frontend/src/components/ui/card.tsx (1)
  • Card (75-75)
frontend/src/components/ui/badge.tsx (1)
  • Badge (43-43)
frontend/src/components/ui/button.tsx (1)
  • Button (55-55)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: e2e-tests
🔇 Additional comments (2)
frontend/src/features/settings/components/SoftwareRequirements.tsx (2)

1-13: LGTM!

License headers, 'use client' directive, and imports are appropriate. Correctly uses shadcn/ui components as per coding guidelines.


72-93: LGTM!

Component logic is sound. The requirements lookup with fallback, null return for empty arrays, and copy-to-clipboard implementation with error handling are all appropriate.

Comment on lines +65 to +70
{
"name": "sqlite",
"command": "sqlite3 --version",
"version_regex": r"(\d+\.\d+\.\d+)",
"min_version": "3.50.0",
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Major inconsistency: SQLite validation missing for ClaudeCode.

The PR objectives explicitly state that SQLite ≥ 3.50.0 is required for ClaudeCode shells: "ClaudeCode — Node.js ≥ 20.0.0 (required), Python ≥ 3.12.0 (required), SQLite ≥ 3.50.0 (required), claude-code CLI ≥ 0.1.0 (optional)". However, this implementation only adds SQLite validation to the Agno validation set, while the ClaudeCode validation set (lines 38-57) contains only node, claude-code, and python checks—no SQLite.

This creates a disconnect between the frontend requirements display and backend validation logic. Users will see SQLite listed as required for ClaudeCode in the UI, but the backend won't actually validate it.

Clarification needed: Should SQLite validation be:

  1. Added to ClaudeCode (to match PR objectives)?
  2. Removed from the PR objectives documentation?
  3. Required for both ClaudeCode and Agno?

If SQLite should be required for ClaudeCode, apply this diff:

     "ClaudeCode": [
         {
             "name": "node",
             "command": "node --version",
             "version_regex": r"v(\d+\.\d+\.\d+)",
             "min_version": "20.0.0",
         },
         {
             "name": "claude-code",
             "command": "claude --version 2>/dev/null || echo 'not found'",
             "version_regex": r"(\d+\.\d+\.\d+)",
             "min_version": None,
         },
         {
             "name": "python",
             "command": "python3 --version",
             "version_regex": r"Python (\d+\.\d+\.\d+)",
             "min_version": "3.12.0",
         },
+        {
+            "name": "sqlite",
+            "command": "sqlite3 --version",
+            "version_regex": r"(\d+\.\d+\.\d+)",
+            "min_version": "3.50.0",
+        },
     ],
🤖 Prompt for AI Agents
In executor/agents/image_validator/image_validator_agent.py around lines 38-57
and 65-70, the ClaudeCode validation set is missing the SQLite check while Agno
includes it; add a SQLite validator dict to the ClaudeCode validators identical
to the one used for Agno (name "sqlite", command "sqlite3 --version",
version_regex r"(\d+\.\d+\.\d+)", min_version "3.50.0") so backend validation
matches the PR objectives and frontend requirements; ensure the new entry is
placed with the other ClaudeCode validators and run/update any related unit
tests or integration checks that assert required tools.

@@ -0,0 +1,155 @@
// SPDX-FileCopyrightText: 2025 Weibo, Inc.
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

Rename file to follow kebab-case convention.

As per coding guidelines, React component files under **/components/**/*.{ts,tsx} MUST use kebab-case naming convention. This file should be renamed from SoftwareRequirements.tsx to software-requirements.tsx.

You'll also need to update the import statement in ShellEdit.tsx accordingly.

Based on coding guidelines: "/components//*.{ts,tsx}: React component files MUST use kebab-case naming convention"

🤖 Prompt for AI Agents
In frontend/src/features/settings/components/SoftwareRequirements.tsx around
line 1, the filename violates the kebab-case rule for component files; rename
the file to software-requirements.tsx and update any imports that reference it
(notably update the import in ShellEdit.tsx to point to ./software-requirements
or the correct relative path). Ensure the git move preserves history (git mv)
and run the project/build to verify no remaining import errors.

name: string; // Software name (e.g., node, python, claude-code)
command: string; // Check command (e.g., node --version)
minVersion: string; // Minimum version requirement (e.g., 20.0.0)
versionRegex?: string; // Version extraction regex (optional)
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

Remove unused field.

The versionRegex field is defined but never used in the component implementation. Consider removing it to keep the interface clean, or document its intended future use.

-  versionRegex?: string; // Version extraction regex (optional)
📝 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
versionRegex?: string; // Version extraction regex (optional)
🤖 Prompt for AI Agents
In frontend/src/features/settings/components/SoftwareRequirements.tsx around
line 19, the interface or prop definition includes a versionRegex?: string field
that is not referenced anywhere in the component; remove the unused versionRegex
declaration (or if intended to be used, wire it into the component logic and
props) so the component interface matches actual usage—update any related
types/props and remove any unused imports or tests that reference versionRegex.

Comment on lines +26 to +64
ClaudeCode: [
{
name: 'Node.js',
command: 'node --version',
minVersion: '20.0.0',
required: true,
description: 'JavaScript runtime for Claude Code CLI',
},
{
name: 'Python',
command: 'python --version',
minVersion: '3.12.0',
required: true,
description: 'Python interpreter for agent execution',
},
{
name: 'claude-code',
command: 'claude --version',
minVersion: '0.1.0',
required: true,
description: 'Claude Code CLI (recommended)',
},
],
Agno: [
{
name: 'Python',
command: 'python --version',
minVersion: '3.12.0',
required: true,
description: 'Python interpreter for agent execution',
},
{
name: 'SQLite',
command: 'sqlite3 --version',
minVersion: '3.50.0',
required: true,
description: 'Database for local data storage',
},
],
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Critical: Software requirements don't match PR specifications.

The requirements mapping has multiple critical inconsistencies with the PR objectives:

  1. ClaudeCode is missing SQLite: PR specifies SQLite ≥ 3.50.0 (required), but it's not in the ClaudeCode array.
  2. claude-code should be optional: Line 45 sets required: true, but PR states it should be optional (≥ 0.1.0 (optional)). The description "(recommended)" on line 46 also implies optional.
  3. Agno should NOT have SQLite: Lines 58-63 define SQLite for Agno, but PR specifies "Agno — Python ≥ 3.12.0 (required)" only.

Apply this diff to fix the requirements:

 ClaudeCode: [
   {
     name: 'Node.js',
     command: 'node --version',
     minVersion: '20.0.0',
     required: true,
     description: 'JavaScript runtime for Claude Code CLI',
   },
   {
     name: 'Python',
     command: 'python --version',
     minVersion: '3.12.0',
     required: true,
     description: 'Python interpreter for agent execution',
   },
+  {
+    name: 'SQLite',
+    command: 'sqlite3 --version',
+    minVersion: '3.50.0',
+    required: true,
+    description: 'Database for local data storage',
+  },
   {
     name: 'claude-code',
     command: 'claude --version',
     minVersion: '0.1.0',
-    required: true,
+    required: false,
     description: 'Claude Code CLI (recommended)',
   },
 ],
 Agno: [
   {
     name: 'Python',
     command: 'python --version',
     minVersion: '3.12.0',
     required: true,
     description: 'Python interpreter for agent execution',
   },
-  {
-    name: 'SQLite',
-    command: 'sqlite3 --version',
-    minVersion: '3.50.0',
-    required: true,
-    description: 'Database for local data storage',
-  },
 ],
📝 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
ClaudeCode: [
{
name: 'Node.js',
command: 'node --version',
minVersion: '20.0.0',
required: true,
description: 'JavaScript runtime for Claude Code CLI',
},
{
name: 'Python',
command: 'python --version',
minVersion: '3.12.0',
required: true,
description: 'Python interpreter for agent execution',
},
{
name: 'claude-code',
command: 'claude --version',
minVersion: '0.1.0',
required: true,
description: 'Claude Code CLI (recommended)',
},
],
Agno: [
{
name: 'Python',
command: 'python --version',
minVersion: '3.12.0',
required: true,
description: 'Python interpreter for agent execution',
},
{
name: 'SQLite',
command: 'sqlite3 --version',
minVersion: '3.50.0',
required: true,
description: 'Database for local data storage',
},
],
ClaudeCode: [
{
name: 'Node.js',
command: 'node --version',
minVersion: '20.0.0',
required: true,
description: 'JavaScript runtime for Claude Code CLI',
},
{
name: 'Python',
command: 'python --version',
minVersion: '3.12.0',
required: true,
description: 'Python interpreter for agent execution',
},
{
name: 'SQLite',
command: 'sqlite3 --version',
minVersion: '3.50.0',
required: true,
description: 'Database for local data storage',
},
{
name: 'claude-code',
command: 'claude --version',
minVersion: '0.1.0',
required: false,
description: 'Claude Code CLI (recommended)',
},
],
Agno: [
{
name: 'Python',
command: 'python --version',
minVersion: '3.12.0',
required: true,
description: 'Python interpreter for agent execution',
},
],
🤖 Prompt for AI Agents
In frontend/src/features/settings/components/SoftwareRequirements.tsx around
lines 26 to 64, the requirements mapping is incorrect: add SQLite (name
'SQLite', command 'sqlite3 --version', minVersion '3.50.0', required true,
description 'Database for local data storage') to the ClaudeCode array, change
the claude-code entry to set required: false (keep minVersion '0.1.0' and
description 'Claude Code CLI (recommended)'), and remove the SQLite entry from
the Agno array so Agno contains only the Python entry with required: true and
minVersion '3.12.0'.

@feifei325 feifei325 merged commit c153b49 into main Dec 3, 2025
11 checks passed
@feifei325 feifei325 deleted the wegent/shell-software-requirements branch December 3, 2025 02:56
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.

3 participants