fix(frontend/copilot): always-visible credentials, inputs, and login prompts#12194
fix(frontend/copilot): always-visible credentials, inputs, and login prompts#12194
Conversation
β¦prompts in copilot tools
Extract blocking UI (credentials picker, agent details/inputs, login prompts)
out of collapsible accordions in RunAgent and RunBlock tools so users can't
accidentally hide actionable requirements.
- Credentials and input forms render standalone, always visible
- Add titled boxes ("Block credentials", "Agent credentials", "Block inputs")
- Unified "Proceed" button enabled only when all requirements are satisfied
- Primary variant for "Add credential" button when no credentials exist
- Update styleguide with mock credential providers for both scenarios
- Extract need_login and agent_details outside accordion in RunAgent
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
|
No actionable comments were generated in the recent review. π βΉοΈ Recent review infoConfiguration used: Organization UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
π Files selected for processing (1)
π§ Files skipped from review as they are similar to previous changes (1)
π Recent review detailsβ° 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). (6)
WalkthroughMoved setup-requirements outputs out of accordions into standalone cards, consolidated credential/input flows into unified SetupRequirements cards with gating, added mock CredentialsProvidersContext to the styleguide, and introduced streaming MiniGame ToolAccordions for in-progress operations. Changes
Sequence Diagram(s)sequenceDiagram
participant UI as Tool UI
participant Context as CredentialsProvidersContext
participant Card as SetupRequirementsCard
participant Agent as Agent Runtime
UI->>Context: request providers (with/without creds)
Context-->>UI: providers list
UI->>Card: render setupRequirementsOutput + providers
Card->>UI: user fills creds/inputs
UI->>Agent: send run/proceed message (includes creds/inputs)
Agent-->>UI: execution started / streaming updates
UI->>UI: show streaming ToolAccordion (MiniGame) while running
Estimated code review effortπ― 4 (Complex) | β±οΈ ~45 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
π₯ Pre-merge checks | β 2 | β 1β Failed checks (1 warning)
β Passed checks (2 passed)
βοΈ Tip: You can configure your own custom pre-merge checks in the settings. β¨ Finishing Touches
π§ͺ 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 |
π PR Overlap DetectionThis check compares your PR against all other open PRs targeting the same branch to detect potential merge conflicts early. π΄ Merge Conflicts DetectedThe following PRs have been tested and will have merge conflicts if merged after this PR. Consider coordinating with the authors.
Summary: 2 conflict(s), 0 medium risk, 0 low risk (out of 2 PRs with file overlap) Auto-generated on push. Ignores: |
| ([, v]) => v !== undefined && v !== null && v !== "", | ||
| ), | ||
| ); | ||
| onSend( | ||
| `I've configured the required credentials. Run the block with these inputs: ${JSON.stringify(nonEmpty, null, 2)}`, | ||
| ); | ||
| } else { | ||
| onSend( | ||
| "I've configured the required credentials. Please re-run the block now.", | ||
| ); | ||
| } |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and canβt be posted inline due to platform limitations.
β οΈ Outside diff range comments (1)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx (1)
77-113:β οΈ Potential issue | π‘ MinorMissing action when
expectedInputsexist butneedsCredentialsis falseThe Proceed button is only rendered under
{needsCredentials && ...}, butexpectedInputsrenders independently. If the backend ever returns asetup_requirementsresponse with nomissing_credentials(e.g., credentials were auto-satisfied) but non-emptyrequirements.inputs, the card shows the "Expected inputs" info box with no way to proceed β leaving the user stuck.Consider adding
needsInputs(derived fromexpectedInputs.length > 0) as an additional gate for the Proceed button, similar to how RunBlock'sSetupRequirementsCarduses(needsCredentials || needsInputs):π‘οΈ Suggested guard
- {needsCredentials && ( + {(needsCredentials || expectedInputs.length > 0) && ( <Button variant="primary" size="small" className="mt-4 w-fit" disabled={!canProceed} onClick={handleProceed} > Proceed </Button> )}π€ Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx around lines 77 - 113, The Proceed button is only shown when needsCredentials is true, leaving users stuck if expectedInputs exists but credentials are already satisfied; introduce a boolean (e.g., needsInputs = expectedInputs.length > 0) and change the Proceed button rendering guard to (needsCredentials || needsInputs) or equivalent so the button is rendered when there are expected inputs even if needsCredentials is false; ensure you keep the existing disabled={!canProceed} and onClick={handleProceed} behavior on the Button component.
π§Ή Nitpick comments (3)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx (1)
15-15:MiniGameshould live in a shared location rather than insideCreateAgent's internal folder.
MiniGameis now consumed by bothCreateAgentandEditAgent. Importing across sibling tool boundaries (../CreateAgent/components/MiniGame/MiniGame) couples these two tools and makes future refactoring harder. Consider movingMiniGameto a shared path such ascopilot/components/MiniGame/so it can be imported from a neutral location.π€ Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/EditAgent/EditAgent.tsx at line 15, The import of MiniGame in EditAgent ties EditAgent to CreateAgent's internal folder; move the MiniGame component to a shared location (e.g., copilot/components/MiniGame/MiniGame) and update imports in both EditAgent and CreateAgent to import from that shared path. Specifically, create a new directory for the shared component, relocate the MiniGame file and any related assets/exports, update the import statements in EditAgent.tsx (where MiniGame is currently imported from ../CreateAgent/...) and in CreateAgent files to import from the new copilot/components/MiniGame path, and run a quick build or tests to ensure no broken imports remain.autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx (1)
19-26: Arrow function component violates the function-declaration guideline
FormRendereris declared asexport const FormRenderer = (...) => {...}. This is pre-existing but since the PR modifies this file, consider aligning with the project convention.β»οΈ Suggested refactor
-export const FormRenderer = ({ +export function FormRenderer({ jsonSchema, handleChange, uiSchema, initialValues, formContext, className, -}: FormRendererProps) => { +}: FormRendererProps) {As per coding guidelines: "Use function declarations (not arrow functions) for components and handlers."
π€ Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx` around lines 19 - 26, FormRenderer is currently defined as an exported arrow-function component; change it to a function declaration to follow project convention: replace the `export const FormRenderer = ({ jsonSchema, handleChange, uiSchema, initialValues, formContext, className }: FormRendererProps) => { ... }` pattern with a named function declaration `export function FormRenderer(props: FormRendererProps) { ... }` (or `export function FormRenderer({ jsonSchema, handleChange, uiSchema, initialValues, formContext, className }: FormRendererProps) { ... }`), preserving the same parameter names and return value, and ensure any references to FormRendererProps remain unchanged.autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx (1)
22-85: Consider extracting business logic into auseSetupRequirementsCardhookThe component holds six derived values and two handler functions. Per the project structure guidelines, render logic and business logic should be separated into
SetupRequirementsCard.tsx+useSetupRequirementsCard.ts.The
canRunderivation andhandleRunlogic are the prime candidates for extraction.Based on learnings: "Separate render logic from business logic with component.tsx + useComponent.ts + helpers.ts structure."
π€ Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx around lines 22 - 85, Extract the business logic (all derived state and handlers) from SetupRequirementsCard into a new hook named useSetupRequirementsCard: move the state declarations (inputCredentials, inputValues, hasSent), derived computations (needsCredentials, isAllCredentialsComplete, needsInputs, requiredInputNames, isAllInputsComplete, canRun) and handler functions (handleCredentialChange, handleRun) into useSetupRequirementsCard and have it return the values and callbacks; update SetupRequirementsCard to only call useSetupRequirementsCard(...) (passing output and onSend or useCopilotChatActions inside the hook) and use the returned canRun, handleRun, handleCredentialChange, inputValues, setInputValues, etc., keeping render JSX here and no business logic. Ensure function names match: useSetupRequirementsCard, handleCredentialChange, handleRun, and keep coerceCredentialFields/coerceExpectedInputs/buildExpectedInputsSchema usage inside the new hook.
π€ Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/EditAgent/EditAgent.tsx:
- Line 162: The UI can render an empty ContentMessage because output.message may
be undefined when isOperating is true; update the render to use the same
fallback as the accordion title by substituting output.message with
getAccordionMeta(output).title when undefined (i.e., render ContentMessage with
output.message ?? getAccordionMeta(output).title) and ensure getAccordionMeta is
available in this scope so the message shows "Agent editing started" (or the
same fallback) instead of an empty body.
---
Outside diff comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx:
- Around line 77-113: The Proceed button is only shown when needsCredentials is
true, leaving users stuck if expectedInputs exists but credentials are already
satisfied; introduce a boolean (e.g., needsInputs = expectedInputs.length > 0)
and change the Proceed button rendering guard to (needsCredentials ||
needsInputs) or equivalent so the button is rendered when there are expected
inputs even if needsCredentials is false; ensure you keep the existing
disabled={!canProceed} and onClick={handleProceed} behavior on the Button
component.
---
Nitpick comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/EditAgent/EditAgent.tsx:
- Line 15: The import of MiniGame in EditAgent ties EditAgent to CreateAgent's
internal folder; move the MiniGame component to a shared location (e.g.,
copilot/components/MiniGame/MiniGame) and update imports in both EditAgent and
CreateAgent to import from that shared path. Specifically, create a new
directory for the shared component, relocate the MiniGame file and any related
assets/exports, update the import statements in EditAgent.tsx (where MiniGame is
currently imported from ../CreateAgent/...) and in CreateAgent files to import
from the new copilot/components/MiniGame path, and run a quick build or tests to
ensure no broken imports remain.
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx:
- Around line 22-85: Extract the business logic (all derived state and handlers)
from SetupRequirementsCard into a new hook named useSetupRequirementsCard: move
the state declarations (inputCredentials, inputValues, hasSent), derived
computations (needsCredentials, isAllCredentialsComplete, needsInputs,
requiredInputNames, isAllInputsComplete, canRun) and handler functions
(handleCredentialChange, handleRun) into useSetupRequirementsCard and have it
return the values and callbacks; update SetupRequirementsCard to only call
useSetupRequirementsCard(...) (passing output and onSend or
useCopilotChatActions inside the hook) and use the returned canRun, handleRun,
handleCredentialChange, inputValues, setInputValues, etc., keeping render JSX
here and no business logic. Ensure function names match:
useSetupRequirementsCard, handleCredentialChange, handleRun, and keep
coerceCredentialFields/coerceExpectedInputs/buildExpectedInputsSchema usage
inside the new hook.
In
`@autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx`:
- Around line 19-26: FormRenderer is currently defined as an exported
arrow-function component; change it to a function declaration to follow project
convention: replace the `export const FormRenderer = ({ jsonSchema,
handleChange, uiSchema, initialValues, formContext, className }:
FormRendererProps) => { ... }` pattern with a named function declaration `export
function FormRenderer(props: FormRendererProps) { ... }` (or `export function
FormRenderer({ jsonSchema, handleChange, uiSchema, initialValues, formContext,
className }: FormRendererProps) { ... }`), preserving the same parameter names
and return value, and ensure any references to FormRendererProps remain
unchanged.
βΉοΈ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled
You can enable these sources in your CodeRabbit configuration.
π Files selected for processing (9)
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
π Review details
β° 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). (4)
- GitHub Check: types
- GitHub Check: Seer Code Review
- GitHub Check: end-to-end tests
- GitHub Check: Check PR Status
π§° Additional context used
π Path-based instructions (13)
autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}
π CodeRabbit inference engine (.github/copilot-instructions.md)
autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}: Use Node.js 21+ with pnpm package manager for frontend development
Always run 'pnpm format' for formatting and linting code in frontend development
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{tsx,ts}
π CodeRabbit inference engine (.github/copilot-instructions.md)
autogpt_platform/frontend/**/*.{tsx,ts}: Use function declarations for components and handlers (not arrow functions) in React components
Only use arrow functions for small inline lambdas (map, filter, etc.) in React components
Use PascalCase for component names and camelCase with 'use' prefix for hook names in React
Use Tailwind CSS utilities only for styling in frontend components
Use design system components from 'src/components/' (atoms, molecules, organisms) in frontend development
Never use 'src/components/legacy/' in frontend code
Only use Phosphor Icons (@phosphor-icons/react) for icons in frontend components
Use generated API hooks from '@/app/api/generated/endpoints/' instead of deprecated 'BackendAPI' or 'src/lib/autogpt-server-api/'
Use React Query for server state (via generated hooks) in frontend development
Default to client components ('use client') in Next.js; only use server components for SEO or extreme TTFB needs
Use '' component for rendering errors in frontend UI; use toast notifications for mutation errors; use 'Sentry.captureException()' for manual exceptions
Separate render logic from data/behavior in React components; keep comments minimal (code should be self-documenting)
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{ts,tsx}
π CodeRabbit inference engine (.github/copilot-instructions.md)
autogpt_platform/frontend/**/*.{ts,tsx}: No barrel files or 'index.ts' re-exports in frontend code
Regenerate API hooks with 'pnpm generate:api' after backend OpenAPI spec changes in frontend development
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/**/*.{ts,tsx}
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
autogpt_platform/frontend/src/**/*.{ts,tsx}: Fully capitalize acronyms in symbols, e.g.graphID,useBackendAPI
Use function declarations (not arrow functions) for components and handlers
Separate render logic (.tsx) from business logic (use*.tshooks)
Use shadcn/ui (Radix UI primitives) with Tailwind CSS styling for UI components
Use Phosphor Icons only for icons
Use ErrorCard for render errors, toast for mutations, and Sentry for exceptions
Use design system components fromsrc/components/(atoms, molecules, organisms)
Never usesrc/components/__legacy__/*components
Use generated API hooks from@/app/api/__generated__/endpoints/with patternuse{Method}{Version}{OperationName}
Use Tailwind CSS only for styling, with design tokens
Do not useuseCallbackoruseMemounless asked to optimize a given function
Never type withanyunless a variable/attribute can ACTUALLY be of any type
autogpt_platform/frontend/src/**/*.{ts,tsx}: Structure components asComponentName/ComponentName.tsx+useComponentName.ts+helpers.tsand use design system components fromsrc/components/(atoms, molecules, organisms)
Use generated API hooks from@/app/api/__generated__/endpoints/with patternuse{Method}{Version}{OperationName}and regenerate withpnpm generate:api
Use function declarations (not arrow functions) for components and handlers
Separate render logic from business logic with component.tsx + useComponent.ts + helpers.ts structure
Colocate state when possible, avoid creating large components, use sub-components in local/componentsfolder
Avoid large hooks, abstract logic intohelpers.tsfiles when sensible
Use arrow functions only for callbacks, not for component declarations
Avoid comments at all times unless the code is very complex
Do not useuseCallbackoruseMemounless asked to optimize a given function
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/**/*.tsx
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Component props should be
type Props = { ... }(not exported) unless it needs to be used outside the componentComponent props should be
interface Props { ... }(not exported) unless the interface needs to be used outside the component
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx}
π CodeRabbit inference engine (AGENTS.md)
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx}: Format frontend code usingpnpm format
Never use components fromsrc/components/__legacy__/*
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx,css}
π CodeRabbit inference engine (AGENTS.md)
Use Tailwind CSS only for styling, use design tokens, and use Phosphor Icons only
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/**/*.{ts,tsx}
π CodeRabbit inference engine (AGENTS.md)
Never type with
any, if no types available useunknown
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/app/(platform)/**/*.tsx
π CodeRabbit inference engine (AGENTS.md)
If adding protected frontend routes, update
frontend/lib/supabase/middleware.ts
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsxautogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/components/**/*.{tsx,ts}
π CodeRabbit inference engine (.github/copilot-instructions.md)
Structure React components as: ComponentName/ComponentName.tsx + useComponentName.ts + helpers.ts (exception: small 3-4 line components can be inline; render-only components can be direct files)
Files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsx
autogpt_platform/frontend/src/components/**/*.{ts,tsx}
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Structure components as
ComponentName/ComponentName.tsx+useComponentName.ts+helpers.ts
Files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsx
autogpt_platform/frontend/src/app/(platform)/**/page.tsx
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Create pages in
src/app/(platform)/feature-name/page.tsxwith component logic extracted into custom hooks grouped by concern, each hook in its own.tsfileCreate pages in
src/app/(platform)/feature-name/page.tsxwith ausePageName.tshook for logic and sub-components in localcomponents/folder
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
autogpt_platform/frontend/src/app/(platform)/**/components/**/*.{ts,tsx}
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Put sub-components in local
components/folder within feature directories
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π§ Learnings (19)
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Separate render logic from data/behavior in React components; keep comments minimal (code should be self-documenting)
Applied to files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/src/**/*.tsx : Component props should be `type Props = { ... }` (not exported) unless it needs to be used outside the component
Applied to files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Separate render logic (`.tsx`) from business logic (`use*.ts` hooks)
Applied to files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
π Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.tsx : Component props should be `interface Props { ... }` (not exported) unless the interface needs to be used outside the component
Applied to files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
π Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Separate render logic from business logic with component.tsx + useComponent.ts + helpers.ts structure
Applied to files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
π Learning: 2026-02-04T16:50:20.508Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/backend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:20.508Z
Learning: Applies to autogpt_platform/backend/backend/blocks/*.py : When adding new blocks, analyze block interfaces to ensure inputs and outputs tie well together for productive graph-based editor connections
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsx
π Learning: 2026-01-28T18:29:34.362Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/src/tests/CLAUDE.md:0-0
Timestamp: 2026-01-28T18:29:34.362Z
Learning: Applies to autogpt_platform/frontend/src/tests/**/__tests__/*.test.{tsx,ts} : Mock API requests in integration tests via MSW (Mock Service Worker)
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/**/*.stories.tsx : Add Storybook stories for new components and Playwright E2E tests for features
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{stories.tsx,stories.ts} : Add/update Storybook stories for UI components in frontend development
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx
π Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/**/*.stories.{ts,tsx} : Add Storybook stories for new components and Playwright for E2E testing
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
π Learning: 2026-01-28T18:29:34.362Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/src/tests/CLAUDE.md:0-0
Timestamp: 2026-01-28T18:29:34.362Z
Learning: Applies to autogpt_platform/frontend/src/tests/**/*.stories.tsx : Use Storybook for design system, atoms, molecules, visual states (hover, disabled, loading), and responsive layouts
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
π Learning: 2026-01-28T18:29:34.362Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/src/tests/CLAUDE.md:0-0
Timestamp: 2026-01-28T18:29:34.362Z
Learning: Applies to autogpt_platform/frontend/src/tests/src/tests/**/*.spec.ts : Use E2E tests (Playwright) for authentication flows (login, signup, logout) that MUST work in a real browser
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use generated API hooks from '@/app/api/__generated__/endpoints/' instead of deprecated 'BackendAPI' or 'src/lib/autogpt-server-api/*'
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/**/*.{test.ts,test.tsx,.stories.tsx} : Use Playwright for E2E tests and Storybook for component development
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use design system components from 'src/components/' (atoms, molecules, organisms) in frontend development
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use design system components from `src/components/` (atoms, molecules, organisms)
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use shadcn/ui (Radix UI primitives) with Tailwind CSS styling for UI components
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use PascalCase for component names and camelCase with 'use' prefix for hook names in React
Applied to files:
autogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsx
π Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Colocate state when possible, avoid creating large components, use sub-components in local `/components` folder
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx
𧬠Code graph analysis (7)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsx (1)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/helpers.tsx (5)
isRunAgentSetupRequirementsOutput(40-47)isRunAgentAgentDetailsOutput(57-61)isRunAgentNeedLoginOutput(63-67)isRunAgentExecutionStartedOutput(49-55)isRunAgentErrorOutput(69-73)
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx (1)
autogpt_platform/frontend/src/lib/utils.ts (1)
cn(14-16)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsx (2)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/helpers.tsx (1)
isRunBlockSetupRequirementsOutput(48-55)autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx (1)
SetupRequirementsCard(22-142)
autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx (1)
autogpt_platform/frontend/src/providers/agent-credentials/credentials-provider.tsx (3)
CredentialsProviderData(32-62)CredentialsProvidersContextType(64-66)CredentialsProvidersContext(68-69)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx (3)
autogpt_platform/frontend/src/app/(platform)/copilot/components/ToolAccordion/AccordionContent.tsx (1)
ContentMessage(112-124)autogpt_platform/frontend/src/components/atoms/Text/Text.tsx (1)
Text(16-36)autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx (1)
FormRenderer(19-54)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx (3)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/helpers.tsx (1)
AccordionIcon(182-184)autogpt_platform/frontend/src/app/(platform)/copilot/components/ToolAccordion/AccordionContent.tsx (2)
ContentGrid(9-17)ContentMessage(112-124)autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/components/MiniGame/MiniGame.tsx (1)
MiniGame(9-50)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx (2)
autogpt_platform/frontend/src/components/atoms/Text/Text.tsx (1)
Text(16-36)autogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsGroupedView/CredentialsGroupedView.tsx (1)
CredentialsGroupedView(31-186)
π Additional comments (11)
autogpt_platform/frontend/src/components/contextual/CredentialsInput/components/CredentialsFlatView/CredentialsFlatView.tsx (2)
107-117: AI summary over-states the scope of changes β "has credentials" button remains"secondary".The AI summary claims the button inside the
hasCredentialsbranch was also changed tovariant="primary", but the code at line 109 is stillvariant="secondary"(no~marker). The PR objective explicitly limits the primary variant to the no-credentials case, so the current code is correct.
119-131: LGTM β promoting the Add button to"primary"when no credentials exist is the right UX signal.This makes the required call-to-action visually prominent precisely when the user has nothing to select, which aligns with the PR's goal of making blocking requirements always visible and actionable.
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx (3)
88-96: LGTM β dynamic title with sensible fallback.Using
output.messagefor the accordion title during in-progress states is a nice improvement for user feedback. The|| "Agent creation started"fallback handles the case wheremessageis empty/undefined.
169-179: LGTM β streaming MiniGame block is well-placed and state-exclusive.The streaming block is cleanly separated from the output-available accordion. Since
isStreamingrequiresinput-streaming|input-availableandhasExpandableContentrequiresoutput-available, the two blocks are mutually exclusive, preventing duplicate accordion rendering.
181-183: LGTM β simplified operating-state content is consistent with streaming refactor.Now that the MiniGame lives in the streaming block (lines 169β179), the in-accordion content for operating states correctly reduces to just a
ContentMessage. The parent guard (hasExpandableContent && output) ensuresoutputis non-null here.autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx (2)
82-84: LGTM β dynamic title with sensible fallback.The
output.message || "Agent editing started"fallback correctly guards against empty/undefined message strings, consistent with the streaming accordion's static title.
148-158: Streaming accordion block looks good.The streaming and expandable-content branches are mutually exclusive (
input-*vs.output-available), so there's no risk of both blocks rendering simultaneously. The hardcodedexpandedprop is intentional per the PR's "always-visible" objective.autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/RunBlock.tsx (1)
42-71: LGTM β clean extraction ofSetupRequirementsCardoutside the accordionThe
setupRequirementsOutputderivation and the!setupRequirementsOutputguard onhasExpandableContentcorrectly ensure mutual exclusivity between the accordion and the setup card. Consistent with theRunAgentpattern.autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsx (1)
50-68: LGTM βisOutputAvailableabstraction and three derived outputs are clean and consistentThe mutual exclusivity between
setupRequirementsOutput,agentDetailsOutput,needLoginOutput, and the accordion'shasExpandableContentis logically sound. Mirrors theRunBlockpattern effectively.autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx (1)
61-64:canRunlogic is correct β approveThe three-part guard
!hasSent && (!needsCredentials || isAllCredentialsComplete) && (!needsInputs || isAllInputsComplete)correctly handles all combinations: no credentials needed, only credentials needed, only inputs needed, and both needed. The vacuous-truth cases (emptyrequiredCredentials/requiredInputNames) are also handled correctly.autogpt_platform/frontend/src/app/(platform)/copilot/styleguide/page.tsx (1)
111-131: No issues found.CredentialsProviderNameis intentionally defined as a broadstringtype to support dynamically registered providers from the SDK, not as a string literal union. The assignmentprovider: stringtoCredentialsProviderData.provideris type-safe and correct.
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx
Outdated
Show resolved
Hide resolved
β¦eRabbit - Fix misleading "credentials configured" message when only inputs are needed (Sentry) - Guard against undefined output.message in EditAgent ContentMessage (CodeRabbit) - Show Proceed button for inputs-only case in RunAgent SetupRequirementsCard (CodeRabbit) - Move MiniGame to shared copilot/components location (CodeRabbit) - Convert FormRenderer to function declaration per conventions (CodeRabbit) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
β»οΈ Duplicate comments (1)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx (1)
162-164: Past review feedback addressed βoutput.messageis now guarded.The
output.message &&check prevents rendering an emptyContentMessage, resolving the concern from the previous review.π€ Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/EditAgent/EditAgent.tsx around lines 162 - 164, The previous issue (empty ContentMessage rendering) has been fixed by guarding the render with the condition {isOperating && output.message && (<ContentMessage>{output.message}</ContentMessage>)}, so no further change is required; keep the check around ContentMessage in EditAgent.tsx (symbols: isOperating, output.message, ContentMessage) to prevent rendering when message is empty.
π§Ή Nitpick comments (1)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx (1)
66-89: Consider not resettinginputValuesafter send, to preserve visual state.Line 88 clears
inputValuesafteronSend, which will blank out the form while it's still visible (thehasSentflag only disables the button, not the form). This could be mildly confusing to the user, who might expect to see what they just submitted. A minor UX consideration.Proposed fix
onSend(parts.join(" ")); - setInputValues({}); }π€ Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx around lines 66 - 89, The handler handleRun currently clears the form state by calling setInputValues({}) after invoking onSend, which blanks the visible inputs while hasSent only disables the button; to preserve visual state remove or conditionally defer the setInputValues({}) call so inputValues remain displayed after submission (or only clear when the form is actually closed/reset), and ensure any dependent logic (hasSent/onSend) still behaves correctly with the retained inputValues.
π€ Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/CreateAgent/CreateAgent.tsx:
- Line 183: In CreateAgent component update the JSX that currently renders
{isOperating && <ContentMessage>{output.message}</ContentMessage>} to guard
against a falsy message (mirror the fix from EditAgent) by ensuring you only
render ContentMessage when both isOperating and output.message are truthy;
locate the JSX in CreateAgent.tsx and change the conditional to check
output.message before rendering the ContentMessage element so it doesn't produce
an empty text node.
---
Duplicate comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/EditAgent/EditAgent.tsx:
- Around line 162-164: The previous issue (empty ContentMessage rendering) has
been fixed by guarding the render with the condition {isOperating &&
output.message && (<ContentMessage>{output.message}</ContentMessage>)}, so no
further change is required; keep the check around ContentMessage in
EditAgent.tsx (symbols: isOperating, output.message, ContentMessage) to prevent
rendering when message is empty.
---
Nitpick comments:
In
`@autogpt_platform/frontend/src/app/`(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx:
- Around line 66-89: The handler handleRun currently clears the form state by
calling setInputValues({}) after invoking onSend, which blanks the visible
inputs while hasSent only disables the button; to preserve visual state remove
or conditionally defer the setInputValues({}) call so inputValues remain
displayed after submission (or only clear when the form is actually
closed/reset), and ensure any dependent logic (hasSent/onSend) still behaves
correctly with the retained inputValues.
βΉοΈ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled
You can enable these sources in your CodeRabbit configuration.
β Files ignored due to path filters (1)
autogpt_platform/frontend/src/app/(platform)/copilot/components/MiniGame/assets/sparkles.pngis excluded by!**/*.png
π Files selected for processing (8)
autogpt_platform/frontend/src/app/(platform)/copilot/components/MiniGame/MiniGame.tsxautogpt_platform/frontend/src/app/(platform)/copilot/components/MiniGame/useMiniGame.tsautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
π§ Files skipped from review as they are similar to previous changes (1)
- autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π Review details
β° 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). (5)
- GitHub Check: Seer Code Review
- GitHub Check: types
- GitHub Check: end-to-end tests
- GitHub Check: Analyze (python)
- GitHub Check: Check PR Status
π§° Additional context used
π Path-based instructions (12)
autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}
π CodeRabbit inference engine (.github/copilot-instructions.md)
autogpt_platform/frontend/**/*.{ts,tsx,js,jsx}: Use Node.js 21+ with pnpm package manager for frontend development
Always run 'pnpm format' for formatting and linting code in frontend development
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{tsx,ts}
π CodeRabbit inference engine (.github/copilot-instructions.md)
autogpt_platform/frontend/**/*.{tsx,ts}: Use function declarations for components and handlers (not arrow functions) in React components
Only use arrow functions for small inline lambdas (map, filter, etc.) in React components
Use PascalCase for component names and camelCase with 'use' prefix for hook names in React
Use Tailwind CSS utilities only for styling in frontend components
Use design system components from 'src/components/' (atoms, molecules, organisms) in frontend development
Never use 'src/components/legacy/' in frontend code
Only use Phosphor Icons (@phosphor-icons/react) for icons in frontend components
Use generated API hooks from '@/app/api/generated/endpoints/' instead of deprecated 'BackendAPI' or 'src/lib/autogpt-server-api/'
Use React Query for server state (via generated hooks) in frontend development
Default to client components ('use client') in Next.js; only use server components for SEO or extreme TTFB needs
Use '' component for rendering errors in frontend UI; use toast notifications for mutation errors; use 'Sentry.captureException()' for manual exceptions
Separate render logic from data/behavior in React components; keep comments minimal (code should be self-documenting)
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{ts,tsx}
π CodeRabbit inference engine (.github/copilot-instructions.md)
autogpt_platform/frontend/**/*.{ts,tsx}: No barrel files or 'index.ts' re-exports in frontend code
Regenerate API hooks with 'pnpm generate:api' after backend OpenAPI spec changes in frontend development
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/**/*.{ts,tsx}
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
autogpt_platform/frontend/src/**/*.{ts,tsx}: Fully capitalize acronyms in symbols, e.g.graphID,useBackendAPI
Use function declarations (not arrow functions) for components and handlers
Separate render logic (.tsx) from business logic (use*.tshooks)
Use shadcn/ui (Radix UI primitives) with Tailwind CSS styling for UI components
Use Phosphor Icons only for icons
Use ErrorCard for render errors, toast for mutations, and Sentry for exceptions
Use design system components fromsrc/components/(atoms, molecules, organisms)
Never usesrc/components/__legacy__/*components
Use generated API hooks from@/app/api/__generated__/endpoints/with patternuse{Method}{Version}{OperationName}
Use Tailwind CSS only for styling, with design tokens
Do not useuseCallbackoruseMemounless asked to optimize a given function
Never type withanyunless a variable/attribute can ACTUALLY be of any type
autogpt_platform/frontend/src/**/*.{ts,tsx}: Structure components asComponentName/ComponentName.tsx+useComponentName.ts+helpers.tsand use design system components fromsrc/components/(atoms, molecules, organisms)
Use generated API hooks from@/app/api/__generated__/endpoints/with patternuse{Method}{Version}{OperationName}and regenerate withpnpm generate:api
Use function declarations (not arrow functions) for components and handlers
Separate render logic from business logic with component.tsx + useComponent.ts + helpers.ts structure
Colocate state when possible, avoid creating large components, use sub-components in local/componentsfolder
Avoid large hooks, abstract logic intohelpers.tsfiles when sensible
Use arrow functions only for callbacks, not for component declarations
Avoid comments at all times unless the code is very complex
Do not useuseCallbackoruseMemounless asked to optimize a given function
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/**/*.tsx
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Component props should be
type Props = { ... }(not exported) unless it needs to be used outside the componentComponent props should be
interface Props { ... }(not exported) unless the interface needs to be used outside the component
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx}
π CodeRabbit inference engine (AGENTS.md)
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx}: Format frontend code usingpnpm format
Never use components fromsrc/components/__legacy__/*
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/**/*.{js,jsx,ts,tsx,css}
π CodeRabbit inference engine (AGENTS.md)
Use Tailwind CSS only for styling, use design tokens, and use Phosphor Icons only
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/**/*.{ts,tsx}
π CodeRabbit inference engine (AGENTS.md)
Never type with
any, if no types available useunknown
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/app/(platform)/**/*.tsx
π CodeRabbit inference engine (AGENTS.md)
If adding protected frontend routes, update
frontend/lib/supabase/middleware.ts
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
autogpt_platform/frontend/src/components/**/*.{tsx,ts}
π CodeRabbit inference engine (.github/copilot-instructions.md)
Structure React components as: ComponentName/ComponentName.tsx + useComponentName.ts + helpers.ts (exception: small 3-4 line components can be inline; render-only components can be direct files)
Files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
autogpt_platform/frontend/src/components/**/*.{ts,tsx}
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Structure components as
ComponentName/ComponentName.tsx+useComponentName.ts+helpers.ts
Files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx
autogpt_platform/frontend/src/app/(platform)/**/components/**/*.{ts,tsx}
π CodeRabbit inference engine (autogpt_platform/frontend/CLAUDE.md)
Put sub-components in local
components/folder within feature directories
Files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π§ Learnings (8)
π Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Colocate state when possible, avoid creating large components, use sub-components in local `/components` folder
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx
π Learning: 2026-02-04T16:50:51.495Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-04T16:50:51.495Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Separate render logic from business logic with component.tsx + useComponent.ts + helpers.ts structure
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{stories.tsx,stories.ts} : Add/update Storybook stories for UI components in frontend development
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use design system components from 'src/components/' (atoms, molecules, organisms) in frontend development
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use design system components from `src/components/` (atoms, molecules, organisms)
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Separate render logic from data/behavior in React components; keep comments minimal (code should be self-documenting)
Applied to files:
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsxautogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π Learning: 2026-02-04T16:50:33.615Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: autogpt_platform/frontend/CLAUDE.md:0-0
Timestamp: 2026-02-04T16:50:33.615Z
Learning: Applies to autogpt_platform/frontend/src/**/*.{ts,tsx} : Use ErrorCard for render errors, toast for mutations, and Sentry for exceptions
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
π Learning: 2026-02-04T16:49:42.490Z
Learnt from: CR
Repo: Significant-Gravitas/AutoGPT PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2026-02-04T16:49:42.490Z
Learning: Applies to autogpt_platform/frontend/**/*.{tsx,ts} : Use '<ErrorCard />' component for rendering errors in frontend UI; use toast notifications for mutation errors; use 'Sentry.captureException()' for manual exceptions
Applied to files:
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx
𧬠Code graph analysis (2)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx (2)
autogpt_platform/frontend/src/app/(platform)/copilot/components/ToolAccordion/AccordionContent.tsx (2)
ContentGrid(9-17)ContentMessage(112-124)autogpt_platform/frontend/src/app/(platform)/copilot/components/MiniGame/MiniGame.tsx (1)
MiniGame(9-50)
autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx (1)
autogpt_platform/frontend/src/lib/utils.ts (1)
cn(14-16)
π Additional comments (9)
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx (1)
169-179: LGTM β streaming UI block extracted cleanly.The streaming ToolAccordion with MiniGame is well-structured. Since
isStreamingchecks for"input-streaming" | "input-available"andhasExpandableContentrequires"output-available", the two blocks are mutually exclusive β no risk of duplicate rendering.autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/RunAgent.tsx (2)
50-68: Clean extraction of blocking outputs from the accordion.The derived output variables and the updated
hasExpandableContentlogic correctly separate setup requirements, agent details, and login prompts from the expandable accordion content. The mutual exclusion ensures no output renders in both locations.
95-111: Standalone cards render correctly outside the accordion.These always-visible cards directly address the PR objective of preventing credentials/inputs/login prompts from being hidden inside collapsible accordions.
autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/EditAgent.tsx (1)
148-158: Streaming UI block is consistent with CreateAgent pattern.The ToolAccordion with MiniGame follows the same structure as other tool components. The
expandedprop (boolean shorthand) works correctly here.autogpt_platform/frontend/src/components/renderers/InputRenderer/FormRenderer.tsx (2)
19-26: Good: converted to function declaration per coding guidelines.The change from a
constarrow function to a namedfunctionexport aligns with the project's coding guidelines. As per coding guidelines, "Use function declarations for components and handlers (not arrow functions) in React components."
31-48: ThemergedUiSchemachange is backward-compatible; no breaking impact for existing consumers.The
generateUiSchemaForCustomFields()function spreads the existinguiSchemafirst (const uiSchema: UiSchema = { ...existingUiSchema }) before adding custom field settings. All existingFormRendererconsumersβthe graph builder's node input forms, SetupRequirementsCard, AgentDetailsCard, and RunInputDialogβwill have theiruiSchemasettings preserved and enhanced with auto-generated custom field mappings. No breaking changes for downstream callers.Likely an incorrect or invalid review comment.
autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/components/SetupRequirementsCard/SetupRequirementsCard.tsx (3)
45-64: Credential and input gating logic is well-structured.The
canRunexpression uses the(!needsX || isAllXComplete)pattern, which correctly handles cases where only credentials, only inputs, or both are required. ThehasSentflag prevents double-submission.
95-110: LGTM β credentials section renders correctly in a titled bordered box.The "Block credentials" header and bordered container match the PR objective of making credentials always visible with consistent styling.
133-143: Unified Proceed button correctly gated.The button only renders when there's something to act on (
needsCredentials || needsInputs) and is disabled until all requirements are met. Good UX pattern.
autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/CreateAgent.tsx
Outdated
Show resolved
Hide resolved
β¦teAgent Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Credentials, inputs, and login prompts in copilot tool outputs were hidden inside collapsible accordions β users could accidentally collapse them, hiding blocking actionable UI. This PR extracts all blocking requirements out of accordions so they're always visible.
Changes ποΈ
SetupRequirementsCard(credentials picker) out ofToolAccordionβ renders standalone, always visibleAgentDetailsCard(inputs needed) andneed_loginmessage out of accordionvariant="primary"when user has no credentials (wassecondary)CredentialsProvidersContextwith two scenarios:Checklist π
For code changes:
pnpm format && pnpm lint && pnpm typesall pass/copilot/styleguideand verify:π€ Generated with Claude Code