Skip to content

[feat]: app structure with agents#4987

Open
ashrafchowdury wants to merge 38 commits into
big-agentsfrom
feat/app-structure-with-agents
Open

[feat]: app structure with agents#4987
ashrafchowdury wants to merge 38 commits into
big-agentsfrom
feat/app-structure-with-agents

Conversation

@ashrafchowdury

Copy link
Copy Markdown
Contributor

No description provided.

ashrafchowdury and others added 22 commits June 25, 2026 13:02
…ve navigation handling

- Changed SidebarIslandProps to accept a SidebarView instead of showSettingsView and lastPath.
- Refactored Sidebar component to resolve sidebar scope based on SidebarView.
- Removed unused imports and cleaned up ListOfProjects component.
- Updated dynamic sidebar registry to use scope IDs for better organization.
- Enhanced gatedSidebarSource to accept scopeId as a parameter.
- Simplified SidebarConfig interface by removing unnecessary properties.
- Improved useSidebarConfig hook to return structured sidebar items.
- Added constants for main and settings sidebar scope IDs.
- Refactored settingsScope to utilize new settings tab management logic.
- Introduced new navigation functions for settings tab resolution and visibility.
- Added tests for settings tab resolution logic.
- Updated projectSwitchHref to handle navigation context more effectively.
- Cleaned up settings page to utilize new settings access logic.
- Updated org hooks to use the new projectSwitchHref for navigation.
- Introduced AgentsPage and ArchivedAgentsPage components for managing agents.
- Implemented agents selection logic with hooks for handling row selections.
- Added sidebar entries for agents and prompts with appropriate icons.
- Created store atoms for managing agents workflows and their states.
- Enhanced ApplicationManagementSection to support agent-specific views.
- Added tests for agent classification logic to ensure correct flag handling.
…jects, WorkflowIdentity, and WorkflowPicker for improved responsiveness and animations
@vercel

vercel Bot commented Jul 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview, Comment Jul 3, 2026 11:53am

Request Review

@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ce1d4968-a1a4-473a-9906-26a60422c970

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/app-structure-with-agents

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.

@dosubot dosubot Bot added size:XXL This PR changes 1000+ lines, ignoring generated files. feature Frontend labels Jul 1, 2026
@ashrafchowdury ashrafchowdury requested a review from ardaerzin July 1, 2026 13:45

@mmabrouk mmabrouk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Review — sidebar view-registry / agents app structure

This PR replaces the boolean-driven single Sidebar (settings-vs-app) with a view-registry + scope engine (viewRegistrySidebarScopeSidebarShell/SidebarMenu), splits the settings/workflow/main sidebars into scopes, adds dynamic lazy-loaded entity groups, and introduces the agents app structure (pages, store, columns). The architecture is clean and most wiring checks out (unknown-view fallback, moved buildProjectSwitchHref, deleted-module importers, settings-tab permission gating, and pathMatchesLink boundary logic all verified fine).

A reviewer ran an 8-angle pass (correctness / removed-behavior / cross-file / reuse / simplification / efficiency / altitude / conventions) and verified each surviving finding against the actual PR-head files (b9e1b06). Findings below, most severe first. Two are behavior regressions vs the deleted code, one is a re-render/remount bug, the rest are altitude/efficiency/reuse cleanups.

Findings

  1. Sidebar.tsx / Layout.tsx — workflow & settings header remount on every in-view navigation. sidebarView (Layout) allocates a fresh object on each pathname change; scope = useMemo(create, [view]) then rebuilds the scope, and createWorkflowHeader/settings build a NEW header component identity per call, so <scope.header/> unmounts+remounts WorkflowPicker/back-button on every navigation. Defeats the SidebarIsland memo.
  2. Layout.tsx — Settings "Back" skips the workflow you came from. lastBasePathRef only records base (main-layer) paths; workflow routes are never captured, so Back lands on the last main page.
  3. useWorkflowSwitcher.tsx — evaluator mislabeled as Prompt/Agent when the evaluators list hasn't loaded (or is archived). isEvaluator is derived from nonArchivedEvaluatorsAtom membership instead of context.workflowKind.
  4. workflowItems.ts — per-workflow filtering hardcodes the literal key "app-variants-link" with a ?? true fall-through — renaming the key silently leaks Variants into evaluator sidebars.
  5. atoms/sidebar.ts / SidebarMenu.tsx — collapsed-flyout fetch gate can stick open (global sidebarPopupGroupsAtom, onMouseEnter sets true with no matching leave).
  6. SidebarShell.tsxrenderSection re-runs filterVisibleItems un-memoized, duplicating the allItems walk on every render.
  7. ListOfProjects.tsx / ListOfOrgs.tsx — the selection-button JSX is copy-pasted verbatim (the PR already extracted SidebarBackButton for this reason).
  8. useWorkflowSwitcher.tsx — switcher list narrowed to non-deterministic evaluators (documented as intended; confirm the current deterministic evaluator vanishing from its own switcher is acceptable).

Inline comments on each below.

Comment thread web/oss/src/components/Sidebar/Sidebar.tsx
Comment thread web/oss/src/components/Layout/Layout.tsx Outdated
Comment thread web/oss/src/components/Sidebar/hooks/useWorkflowSwitcher.tsx Outdated
Comment thread web/oss/src/components/Sidebar/scopes/workflowItems.ts Outdated
Comment thread web/oss/src/components/Sidebar/engine/SidebarMenu.tsx Outdated
Comment thread web/oss/src/components/Sidebar/engine/SidebarShell.tsx Outdated
Comment thread web/oss/src/components/Sidebar/components/ListOfProjects.tsx Outdated
Comment thread web/oss/src/components/Sidebar/hooks/useWorkflowSwitcher.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 10

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
web/oss/src/components/pages/prompts/store.ts (1)

158-172: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fetch all workflow pages before filtering prompts. queryWorkflows is cursor-paginated, but this atom only consumes the first page (windowing.next is ignored). After filtering out evaluator workflows, the prompts list can underfill and miss entries on later pages.

web/oss/src/components/pages/app-management/store/appWorkflowStore.ts (1)

197-218: 🚀 Performance & Scalability | 🟠 Major | 🏗️ Heavy lift

Agent-scoped archived fetch triples an already-unbounded full-list scan.

fetchArchivedAppWorkflows fetches the entire archived list and, for agentScope, bulk-fetches latest revisions for every workflow before filtering. This function is invoked independently by three separate atoms (paginated fetchPage, total-count query, filtered-count query), each with its own query key/cache, so none of them share the fetched data. On top of the pre-existing "full-list-then-client-slice" pagination pattern, this PR adds a bulk revision fetch that now runs 3x for every mount/search-term change on the Archived Agents page, and again on every page-cursor advance since fetchPage re-fetches the whole list each time.

Consider having the count/total-count atoms derive from the paginated store's own fetched data (or share a single cached query) instead of independently re-fetching and re-filtering the full archived set each time.

Also applies to: 467-489, 510-531, 556-582

♻️ Duplicate comments (1)
web/oss/src/components/Sidebar/engine/SidebarMenu.tsx (1)

1-1: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Same missing React import as engine/types.ts.

React.FC (Line 17), React.MouseEvent | React.KeyboardEvent (Line 42), and React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement> (Lines 186-187) all reference the React namespace, but Line 1 only destructures named hooks from "react"React is never imported. This is the same TS2686 UMD-global hazard flagged in engine/types.ts.

🛠️ Proposed fix
-import {memo, useCallback, useMemo, useRef} from "react"
+import {memo, useCallback, useMemo, useRef} from "react"
+import type {FC, MouseEvent, KeyboardEvent} from "react"

then replace React.FC, React.MouseEvent, React.KeyboardEvent with the imported type names.

Also applies to: 17-17, 42-42, 186-187

🧹 Nitpick comments (13)
web/oss/src/components/Sidebar/scopes/workflowItems.ts (1)

21-23: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Confirm ITEM_WORKFLOW_SUPPORT coverage is intentional.

Only "app-variants-link" is restricted by category; every other sidebar key defaults to visible for all categories (?? true at line 33). If future workflow-specific items (agent-only or evaluator-only rows) are added without an entry here, they will silently show for all categories. Worth a short note or lint to keep this map in sync as new items are added.

web/oss/src/components/Sidebar/dynamic/useSidebarDynamicChildren.ts (1)

100-128: 🩺 Stability & Availability | 🔵 Trivial | ⚖️ Poor tradeoff

Ref mutation during render (inside useMemo).

cachedChildrenRef.current is mutated in place while computing the useMemo value, which runs during the render phase. React documents this as a purity violation; under Strict Mode's double-invocation the callback runs twice per commit, and since the cache object is mutated (not replaced) both invocations act on the same object. The end result is currently idempotent given the logic, but this pattern is fragile against future edits (e.g., adding a mutation that isn't idempotent) and against React's rendering guarantees.

Consider moving the caching into a useEffect (after commit) or deriving the memo purely and updating the ref as a side effect in a separate useEffect.

web/oss/src/components/Sidebar/engine/SidebarShell.tsx (1)

14-25: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Error boundary silently swallows render errors.

SidebarErrorBoundary catches errors and renders an empty <div /> with no logging, so a broken sidebar section fails silently with no diagnostic trail.

♻️ Suggested addition
 class SidebarErrorBoundary extends React.Component<React.PropsWithChildren, {hasError: boolean}> {
     state = {hasError: false}

-    static getDerivedStateFromError() {
+    static getDerivedStateFromError(error: Error) {
+        console.error("Sidebar section failed to render", error)
         return {hasError: true}
     }
web/oss/src/components/Sidebar/scopes/viewRegistry.ts (1)

32-56: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

BASE_VIEW derivation contradicts the maintenance comment above it.

The comment says "Add a new full-sidebar view by appending one entry here," but BASE_VIEW = SIDEBAR_VIEWS[SIDEBAR_VIEWS.length - 1] assumes the base (isBase: true) entry is always last. Literally following the comment's instructions (appending after mainSidebarScope) would silently make BASE_VIEW resolve to the wrong entry, breaking the fallback used by resolveSidebarView/getSidebarViewDefinition.

♻️ Suggested fix
-const BASE_VIEW = SIDEBAR_VIEWS[SIDEBAR_VIEWS.length - 1]
+const BASE_VIEW = SIDEBAR_VIEWS.find((view) => view.isBase) ?? SIDEBAR_VIEWS[SIDEBAR_VIEWS.length - 1]
web/oss/src/components/pages/settings/assets/navigation.ts (1)

68-72: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Fragile cast masks a latent gap in SETTINGS_LABELS.

SETTINGS_LABELS excludes "billing", and getSettingsTabLabel relies on the billing entry in SETTINGS_TABS always defining getLabel to avoid hitting the cast with a "billing" key. If a future edit ever removes getLabel from the billing definition (Line 44-47) or the lookup at Line 69 fails to find the tab, this silently returns undefined instead of a compile error, since the as Exclude<...> cast bypasses type checking.

Consider making SETTINGS_LABELS a Record<SettingsTabKey, string> (with a placeholder/derived billing label) or asserting non-null after the lookup instead of casting away the exclusion.

web/oss/src/pages/w/[workspace_id]/p/[project_id]/settings/index.tsx (1)

72-74: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use DEFAULT_SETTINGS_TAB instead of the hardcoded "workspace" fallback.

navigation.ts exports DEFAULT_SETTINGS_TAB for exactly this purpose; hardcoding "workspace" here duplicates that value and can silently drift out of sync if the default ever changes.

🔧 Proposed fix
-import {
-    getSettingsTabLabel,
-    resolveSettingsTab,
-    type SettingsAccess,
-} from "`@/oss/components/pages/settings/assets/navigation`"
+import {
+    DEFAULT_SETTINGS_TAB,
+    getSettingsTabLabel,
+    resolveSettingsTab,
+    type SettingsAccess,
+} from "`@/oss/components/pages/settings/assets/navigation`"
...
-    const tab = tabQuery ?? settingsTab ?? "workspace"
+    const tab = tabQuery ?? settingsTab ?? DEFAULT_SETTINGS_TAB
web/oss/src/components/Sidebar/hooks/useSidebarConfig/index.tsx (2)

172-174: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Multi-line comments exceed the one-line guideline.

Both comment blocks span 3 lines each; per coding guidelines, comments should be kept to one short line unless a genuinely surprising constraint requires a brief exception. Consider condensing to a single concise line (or moving the rationale to a short docstring on the shared isHidden predicate suggested below).

As per coding guidelines, "Keep in-code comments to one short line maximum unless a genuinely surprising constraint requires a brief exception."

Also applies to: 200-202

Source: Coding guidelines


164-223: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicated isHidden condition across all five appItems entries.

!hasAppContext && !currentApp && !recentlyVisitedAppId is repeated verbatim 5 times. Extracting it into a single memoized boolean would reduce duplication and make future changes to the visibility rule less error-prone.

♻️ Suggested extraction
+    const isAppItemsHidden = !hasAppContext && !currentApp && !recentlyVisitedAppId
+
     const appItems = useMemo<SidebarConfig[]>(
         () => [
             {
                 key: "overview-link",
                 title: "Overview",
                 link: `${appURL || recentlyVisitedAppURL}/overview`,
                 icon: <DesktopIcon size={14} />,
-                isHidden: !hasAppContext && !currentApp && !recentlyVisitedAppId,
+                isHidden: isAppItemsHidden,
                 disabled: !hasProjectURL,
             },
             ...
web/oss/src/components/Sidebar/components/ListOfOrgs.tsx (1)

304-352: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

renderSelectionButton is duplicated near-verbatim in ListOfProjects.tsx.

The button markup, transition classes, InitialsAvatar, label span, and caret span (lines 304-352 here) are essentially identical to ListOfProjects.tsx lines 198-246. Consider extracting a shared SidebarSelectionButton component (label, placeholder, isOpen, showCaret, collapsed, disabled, sharedButtonProps) to avoid maintaining two copies of the same collapse/expand transition logic.

♻️ Suggested extraction sketch
// web/oss/src/components/Sidebar/components/SidebarSelectionButton.tsx
export const SidebarSelectionButton = ({
    label,
    placeholder,
    isOpen,
    showCaret,
    disabled,
    collapsed,
    sharedButtonProps,
}: SidebarSelectionButtonProps) => (
    <Button
        type={sharedButtonProps.type ?? "text"}
        className={clsx(
            "flex items-center justify-between overflow-hidden h-9 transition-[width,padding,gap] duration-300 ease-in-out",
            collapsed ? "!w-8 !p-1 gap-0" : "w-full px-1.5 py-3 gap-2",
            sharedButtonProps.className,
        )}
        disabled={disabled || sharedButtonProps.disabled}
        {...sharedButtonProps.rest}
    >
        {/* ...same label/caret markup... */}
    </Button>
)
web/packages/agenta-entities/src/workflow/state/store.ts (1)

778-805: 🚀 Performance & Scalability | 🔵 Trivial

Prompt/agent lists now block on a second full-batch fetch before rendering.

Both promptWorkflowsListQueryStateAtom and agentWorkflowsListQueryStateAtom stay isPending until appWorkflowsWithAgentFlagsQueryAtom resolves, which requires a fetchWorkflowsBatch call over the entire app-workflow list. This adds a sequential round trip before any row can render, compared to consuming appWorkflowsListQueryAtom directly. This appears to be an accepted trade-off given classification requires revision data (per the doc comment in helpers.ts), but worth confirming the added latency is acceptable for the Prompts/Agents list UX.

web/oss/src/components/pages/prompts/store.ts (1)

10-10: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate fetch/classify pattern — extract a shared helper.

The filter-deleted → fetchWorkflowsBatch → classify → map-to-row sequence here is duplicated verbatim in web/oss/src/components/pages/agents/store.ts. Extracting a shared helper (e.g. in the entities package) would avoid divergence — which has already happened, since the agents store's refetch atom is missing the cache-invalidation logic present here.

♻️ Proposed shared helper
// e.g. web/packages/agenta-entities/src/workflow/state/helpers.ts
export async function fetchAndClassifyWorkflows(
    projectId: string,
    workflows: Workflow[],
    classify: (workflows: Workflow[], latestRevisions: ReadonlyMap<string, Workflow>) => Workflow[],
): Promise<Workflow[]> {
    const nonDeleted = workflows.filter((w) => !w.deleted_at)
    const latestRevisions = await fetchWorkflowsBatch(projectId, nonDeleted.map((w) => w.id))
    return classify(nonDeleted, latestRevisions)
}
-            const workflows = response.workflows.filter((workflow) => !workflow.deleted_at)
-            const latestRevisions = await fetchWorkflowsBatch(
-                projectId,
-                workflows.map((workflow) => workflow.id),
-            )
-
-            return filterPromptWorkflows(workflows, latestRevisions).map(mapWorkflowToRow)
+            const workflows = await fetchAndClassifyWorkflows(
+                projectId,
+                response.workflows,
+                filterPromptWorkflows,
+            )
+            return workflows.map(mapWorkflowToRow)

Also applies to: 166-172

web/oss/src/components/pages/app-management/components/ApplicationManagementSection.tsx (1)

70-88: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Repeated nested ternary reduces readability.

The isArchived ? (agentScope ? … : …) : … pattern is duplicated three times for scopeId, columnVisibilityStorageKey, and exportFilename. Consider deriving a single variant key ("agent" | "app" | "active") once and looking up the three strings from a small map/object.

web/oss/src/components/pages/agents/AgentsTableSection.tsx (1)

42-53: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Debounce the agent search input. onChange updates agentsSearchTermAtom on every keystroke, and agentsWorkflowsQueryAtom depends on that value in its queryKey, so typing can trigger a request per character.

Source: Coding guidelines


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5aab48ac-a40f-42c9-9f6a-85c188b5acd6

📥 Commits

Reviewing files that changed from the base of the PR and between e1a1769 and b9e1b06.

📒 Files selected for processing (60)
  • web/ee/src/pages/w/[workspace_id]/p/[project_id]/agents/archived/index.tsx
  • web/ee/src/pages/w/[workspace_id]/p/[project_id]/agents/index.tsx
  • web/oss/src/components/Layout/Layout.tsx
  • web/oss/src/components/Layout/SidebarIsland.tsx
  • web/oss/src/components/References/ReferenceTag.tsx
  • web/oss/src/components/References/index.ts
  • web/oss/src/components/Sidebar/SettingsSidebar.tsx
  • web/oss/src/components/Sidebar/Sidebar.tsx
  • web/oss/src/components/Sidebar/components/ListOfOrgs.tsx
  • web/oss/src/components/Sidebar/components/ListOfProjects.tsx
  • web/oss/src/components/Sidebar/components/SidebarBackButton.tsx
  • web/oss/src/components/Sidebar/components/SidebarMenu.tsx
  • web/oss/src/components/Sidebar/components/WorkflowEntityCard.tsx
  • web/oss/src/components/Sidebar/components/WorkflowIdentity.tsx
  • web/oss/src/components/Sidebar/components/WorkflowPicker.tsx
  • web/oss/src/components/Sidebar/components/assets/workflowEntitySelection.test.ts
  • web/oss/src/components/Sidebar/components/assets/workflowEntitySelection.ts
  • web/oss/src/components/Sidebar/dynamic/registry.ts
  • web/oss/src/components/Sidebar/dynamic/source.ts
  • web/oss/src/components/Sidebar/dynamic/types.ts
  • web/oss/src/components/Sidebar/dynamic/useSidebarDynamicChildren.ts
  • web/oss/src/components/Sidebar/engine/SidebarMenu.tsx
  • web/oss/src/components/Sidebar/engine/SidebarShell.tsx
  • web/oss/src/components/Sidebar/engine/types.ts
  • web/oss/src/components/Sidebar/hooks/useSidebarConfig/index.tsx
  • web/oss/src/components/Sidebar/hooks/useWorkflowSwitcher.tsx
  • web/oss/src/components/Sidebar/scopes/constants.ts
  • web/oss/src/components/Sidebar/scopes/mainScope.tsx
  • web/oss/src/components/Sidebar/scopes/settingsScope.tsx
  • web/oss/src/components/Sidebar/scopes/viewRegistry.ts
  • web/oss/src/components/Sidebar/scopes/workflowItems.ts
  • web/oss/src/components/Sidebar/scopes/workflowScope.tsx
  • web/oss/src/components/Sidebar/types.d.ts
  • web/oss/src/components/Sidebar/types.ts
  • web/oss/src/components/pages/agents/AgentsPage.tsx
  • web/oss/src/components/pages/agents/AgentsTableSection.tsx
  • web/oss/src/components/pages/agents/ArchivedAgentsPage.tsx
  • web/oss/src/components/pages/agents/hooks/useAgentsSelection.ts
  • web/oss/src/components/pages/agents/store.ts
  • web/oss/src/components/pages/app-management/components/ApplicationManagementSection.tsx
  • web/oss/src/components/pages/app-management/store/appWorkflowStore.ts
  • web/oss/src/components/pages/prompts/store.ts
  • web/oss/src/components/pages/settings/assets/navigation.test.ts
  • web/oss/src/components/pages/settings/assets/navigation.ts
  • web/oss/src/lib/atoms/sidebar.ts
  • web/oss/src/lib/navigation/projectSwitchHref.test.ts
  • web/oss/src/lib/navigation/projectSwitchHref.ts
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/agents/archived/index.tsx
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/agents/index.tsx
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/settings/index.tsx
  • web/oss/src/state/org/hooks.ts
  • web/oss/src/state/workflow/flags.ts
  • web/oss/tests/playwright/acceptance/evaluators/index.ts
  • web/packages/agenta-entities/src/workflow/core/schema.ts
  • web/packages/agenta-entities/src/workflow/index.ts
  • web/packages/agenta-entities/src/workflow/state/evaluatorUtils.ts
  • web/packages/agenta-entities/src/workflow/state/helpers.ts
  • web/packages/agenta-entities/src/workflow/state/index.ts
  • web/packages/agenta-entities/src/workflow/state/store.ts
  • web/packages/agenta-entities/tests/unit/workflow-agent-list-classification.test.ts
💤 Files with no reviewable changes (4)
  • web/oss/src/components/Sidebar/types.d.ts
  • web/oss/src/components/Sidebar/SettingsSidebar.tsx
  • web/oss/src/components/Sidebar/components/SidebarMenu.tsx
  • web/oss/src/components/Sidebar/components/WorkflowEntityCard.tsx

Comment thread web/oss/src/components/pages/agents/AgentsPage.tsx
Comment thread web/oss/src/components/pages/agents/AgentsTableSection.tsx
Comment thread web/oss/src/components/pages/agents/store.ts Outdated
Comment thread web/oss/src/components/Sidebar/dynamic/source.ts
Comment thread web/oss/src/components/Sidebar/engine/SidebarMenu.tsx
Comment thread web/oss/src/components/Sidebar/engine/types.ts Outdated
Comment thread web/oss/src/lib/atoms/sidebar.ts Outdated
Comment thread web/oss/src/pages/w/[workspace_id]/p/[project_id]/settings/index.tsx Outdated
Comment thread web/oss/src/state/org/hooks.ts

@mmabrouk mmabrouk left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The patch introduces a TypeScript-breaking AntD prop value and lets archived agents leak into the archived apps table.

Comment thread web/oss/src/components/Sidebar/components/SidebarBackButton.tsx Outdated
Comment thread web/oss/src/components/pages/app-management/store/appWorkflowStore.ts Outdated
- Updated SidebarConfig to include workflowCategories and lastPath properties.
- Introduced filterVisibleItems and filterVisibleSections to manage item visibility based on isHidden property.
- Refactored useSidebarConfig to simplify item creation and visibility logic.
- Added useSettingsAccess hook to centralize settings access logic.
- Implemented workflow item filtering based on categories in workflowItemSupport.
- Enhanced sidebar state management with new atoms for collapsed state and popup groups.
- Updated projectSwitchHref to handle multiple query tabs correctly.
- Improved error handling in AgentsPage during agent creation.
- Refactored various components to utilize new hooks and streamline code.
- Added tests to ensure proper functionality of new filtering logic and sidebar behavior.
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. and removed size:XXL This PR changes 1000+ lines, ignoring generated files. labels Jul 2, 2026
@ashrafchowdury ashrafchowdury force-pushed the feat/app-structure-with-agents branch from fc24eb7 to f83ae93 Compare July 2, 2026 09:11
@dosubot dosubot Bot added size:XXL This PR changes 1000+ lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature Frontend size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants