Skip to content

[fix] Sort playground chat sessions by last message [AGE-4016] - #5556

Open
ashrafchowdury wants to merge 3 commits into
release/v0.106.1from
fix/session-sort-by-last-used
Open

[fix] Sort playground chat sessions by last message [AGE-4016]#5556
ashrafchowdury wants to merge 3 commits into
release/v0.106.1from
fix/session-sort-by-last-used

Conversation

@ashrafchowdury

Copy link
Copy Markdown
Contributor

Context

In the playground chat, the session history picker (and the tab rail) ordered sessions by creation time. A conversation you just chatted in stayed buried below stale-but-newer sessions, which made navigating multiple sessions awkward. Fixes #5553.

Root cause: sessions carried no "last activity" signal at all. Both history atoms sorted purely on createdAt, even though the server already tracks last activity via the updated_at heartbeat.

Changes

Sessions now carry a lastMessageAt field, and the history/archived lists sort by it (falling back to createdAt, then to 0 for pre-upgrade sessions with neither). It is fed from two places so ordering is both durable and immediate:

  • Server heartbeat. The reconciler maps the session's updated_at (falling back to created_at) into lastMessageAt, so ordering is correct across devices and after a reload. Local and remote values are merged with Math.max, so a fresh local turn is never clobbered by a lagging heartbeat and vice versa.
  • Local turn settling. When a live turn finishes streaming, lastMessageAt is stamped to now, so the active chat jumps to the top instantly instead of waiting for the next 60s reconcile.

The local stamp is gated on the streaming → settled status transition. This is the subtle part: hydration and history restore set messages while status stays "ready", so an unguarded stamp would back-date an old, freshly-reopened session to "now". Gating on the transition means only a real turn bumps the time.

The displayed timestamp in the history rows and tab rail now reads lastMessageAt ?? createdAt so the shown time matches the sort order.

Sort key, before:

(b.createdAt ?? 0) - (a.createdAt ?? 0)

after:

sessionActivity(s) = s.lastMessageAt ?? s.createdAt ?? 0

Tests / notes

  • pnpm eslint and tsc --noEmit pass clean on all touched files.
  • No new per-message timestamp store: lastMessageAt reuses the server heartbeat already fetched by the session-list query, so there is no extra request and nothing new to prune on delete.

What to QA

  • Open the session history picker with several sessions. Send a message in an older one. It moves to the top of the list, and its timestamp reads "just now".
  • Reload the page. The order survives the reload (sessions stay ordered by last activity, not creation).
  • Regression: create a brand-new session and don't send anything. It still sorts by its creation time and shows its created timestamp, not a blank or "just now".
  • Regression: reopen an old, closed session from history. It hydrates its messages but does NOT jump to the top (opening is not activity; only a new turn is).

🤖 Generated with Claude Code

@linear-code

linear-code Bot commented Jul 29, 2026

Copy link
Copy Markdown

AGE-4016

@dosubot dosubot Bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Jul 29, 2026
@vercel

vercel Bot commented Jul 29, 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 Jul 30, 2026 6:34am

Request Review

@CLAassistant

CLAassistant commented Jul 29, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

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: a3fc70df-be7d-40c9-8929-fc77b59678ce

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
📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added clearer agent connection prompts and “waiting for your input” indicators, with retry and cancellation support.
    • Added simplified navigation for new signups, plus a Classic mode setting.
    • Added Feature Flags settings, including Playground inspector controls.
    • Added organization renaming, ownership transfer, and deletion settings.
    • Agent and prompt links now open directly in the Playground.
  • Bug Fixes

    • Improved session ordering using recent activity timestamps.
    • Fixed API routing and trailing-slash handling.
    • Improved archive handling for duplicate and conflicting files.
    • Preserved anonymous trace rows during exports.

Walkthrough

This PR updates API path normalization and archive generation, adds HITL connect interaction handling, sorts chat sessions by activity, simplifies new-user navigation, migrates table consumers to shared UI packages, consolidates entity types, and updates release and tooling metadata.

Changes

Backend routing and archives

Layer / File(s) Summary
API path normalization
api/entrypoints/routers.py, api/oss/src/middlewares/prefix.py, api/oss/tests/pytest/unit/middlewares/test_prefix.py
Route-aware /api and trailing-slash normalization preserves synchronized path and raw_path values without Starlette redirects.
Archive namespace handling
api/oss/src/core/mounts/service.py, api/oss/tests/pytest/unit/test_mounts_file_ops.py
Archive construction excludes the runner artifact and removes ZIP path collisions, file/directory conflicts, and duplicate members.

Agent experience and navigation

Layer / File(s) Summary
HITL connect flow
web/oss/src/components/AgentChatSlice/**
Parked connect interactions use a shared OAuth flow, an interaction dock, waiting indicators, held queue messaging, and retry/cancel outcomes.
Session activity and drives
web/oss/src/components/AgentChatSlice/state/*, web/oss/src/components/Drives/*, web/oss/src/components/AgentChatSlice/assets/markdown.tsx
Session ordering and timestamps use lastMessageAt; drive listings and relative links filter and remap agent files.
Onboarding and settings
web/oss/src/state/onboarding/*, web/oss/src/lib/onboarding/*, web/oss/src/components/Sidebar/**, web/oss/src/pages/**/settings/**
Per-user simplified navigation, scoped settings sections, feature flags, organization settings, and first-run agent handling are added.
Playground routing
web/oss/src/components/pages/{agents,prompts}/**, web/oss/src/pages/**/apps/**, web/oss/src/state/app/atoms/fetcher.ts
Agent and prompt navigation and app fallback redirects target the playground.

Shared web platform

Layer / File(s) Summary
Table package migration
web/oss/src/components/EvalRunDetails/**, web/oss/src/components/EvaluationRunsTablePOC/**, web/oss/src/components/InfiniteVirtualTable/**, web/oss/src/components/Test*Table/**, web/packages/agenta-ui/src/InfiniteVirtualTable/**
Local InfiniteVirtualTable implementations and exports are removed while consumers use shared @agenta/ui/table contracts and components.
Canonical entity and trace types
web/packages/agenta-entities/src/**, web/oss/src/services/tracing/types/**, web/oss/src/components/pages/observability/**, web/oss/src/components/SharedDrawers/TraceDrawer/**
Evaluation references, trace types, status/category values, and observability fallbacks use shared entity definitions.

Release and tooling

Layer / File(s) Summary
Release metadata and compiler support
api/pyproject.toml, clients/python/pyproject.toml, hosting/kubernetes/helm/Chart.yaml, web/package.json, web/*/package.json, web/*/tsconfig.json, services/runner/package.json
Versions and selected dependencies are updated, CSS module declarations are added, and web type-check scripts and aliases are configured.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AgentConversation
  participant InteractionDock
  participant useConnectFlow
  participant OAuthPopup
  AgentConversation->>InteractionDock: provide pending connect interaction
  InteractionDock->>useConnectFlow: runConnect, cancel, or decline
  useConnectFlow->>OAuthPopup: open connection flow
  OAuthPopup-->>useConnectFlow: tools:oauth:complete message
  useConnectFlow->>InteractionDock: settle output or error
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes a large unrelated refactor of InfiniteVirtualTable, navigation/settings, docs, version bumps, and new feature flags beyond session sorting. Split unrelated refactors, docs, and version bumps into separate PRs and keep this change focused on session activity sorting.
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 60.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main user-facing fix: sorting playground chat sessions by last message.
Description check ✅ Passed The description matches the implemented change, explaining lastMessageAt, sorting, and timestamp display.
Linked Issues check ✅ Passed Session lists now sort by lastMessageAt, hydrate it from server/local activity, and display it in history rows, satisfying #5553.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/session-sort-by-last-used

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.

@ashrafchowdury
ashrafchowdury changed the base branch from main to release/v0.106.1 July 29, 2026 16:34
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:XL This PR changes 500-999 lines, ignoring generated files. labels Jul 29, 2026
@ashrafchowdury
ashrafchowdury requested a review from ardaerzin July 29, 2026 16:39
@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Railway Preview Environment

Preview URL https://gateway-production-f117.up.railway.app/w
Project agenta-oss-pr-5556
Image tag pr-5556-49eaac0
Status Deployed
Railway logs Open logs
Workflow logs View workflow run
Updated at 2026-07-30T06:43:47.830Z

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

🧹 Nitpick comments (2)
api/oss/src/middlewares/prefix.py (1)

40-64: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

Route-table scan on every request.

_normalize calls _known() (a linear scan over self._routes() with per-route regex matching) up to twice per request — once for path, and again for alternate when the first misses. This effectively duplicates the matching work the router will redo right after. Likely negligible at typical route-table sizes, and the tradeoff is already called out in the docstring, but worth keeping in mind if the route count grows significantly (e.g., memoizing "known" prefixes, or building a path-prefix set once and reusing it, rather than re-walking BaseRoute.matches() compiled regexes per call).

web/oss/src/components/AgentChatSlice/components/clientTools/useConnectFlow.ts (1)

36-41: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Resolve or drop the open question left in the comment.

// NOTE for Mahmoud: confirm the bound — open question §"abandon timeout". reads as an unresolved TODO addressed to a specific person. If the 3-minute bound is already confirmed, drop the note; otherwise track it as a follow-up rather than shipping it as an inline comment.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3e9a59ea-42da-4cca-ab58-45f8917921b6

📥 Commits

Reviewing files that changed from the base of the PR and between 56be600 and cbb43f5.

⛔ Files ignored due to path filters (6)
  • api/uv.lock is excluded by !**/*.lock
  • clients/python/uv.lock is excluded by !**/*.lock
  • sdks/python/uv.lock is excluded by !**/*.lock
  • services/runner/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • services/uv.lock is excluded by !**/*.lock
  • web/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (186)
  • .gitleaksignore
  • api/entrypoints/routers.py
  • api/oss/src/core/mounts/service.py
  • api/oss/src/middlewares/prefix.py
  • api/oss/tests/pytest/unit/middlewares/test_prefix.py
  • api/oss/tests/pytest/unit/test_mounts_file_ops.py
  • api/pyproject.toml
  • clients/python/pyproject.toml
  • docs/design/simplify-nav-new-users/README.md
  • docs/design/simplify-nav-new-users/context.md
  • docs/design/simplify-nav-new-users/plan.md
  • docs/design/simplify-nav-new-users/research.md
  • docs/design/simplify-nav-new-users/status.md
  • hosting/kubernetes/helm/Chart.yaml
  • sdks/python/pyproject.toml
  • services/pyproject.toml
  • services/runner/package.json
  • web/ee/css-modules.d.ts
  • web/ee/package.json
  • web/ee/tsconfig.json
  • web/oss/css-modules.d.ts
  • web/oss/package.json
  • web/oss/src/components/AgentChatSlice/AgentConversation.tsx
  • web/oss/src/components/AgentChatSlice/assets/markdown.tsx
  • web/oss/src/components/AgentChatSlice/components/AgentMessage.tsx
  • web/oss/src/components/AgentChatSlice/components/ConnectModelBanner.tsx
  • web/oss/src/components/AgentChatSlice/components/Inspector/InspectSessionButton.tsx
  • web/oss/src/components/AgentChatSlice/components/InteractionDock.tsx
  • web/oss/src/components/AgentChatSlice/components/QueuedMessages.tsx
  • web/oss/src/components/AgentChatSlice/components/SessionHistoryMenu.tsx
  • web/oss/src/components/AgentChatSlice/components/SessionRail.tsx
  • web/oss/src/components/AgentChatSlice/components/ToolActivity.tsx
  • web/oss/src/components/AgentChatSlice/components/clientTools/ConnectToolWidget.tsx
  • web/oss/src/components/AgentChatSlice/components/clientTools/useConnectFlow.ts
  • web/oss/src/components/AgentChatSlice/state/projectSessions.ts
  • web/oss/src/components/AgentChatSlice/state/sessions.ts
  • web/oss/src/components/Drives/useSessionDrive.ts
  • web/oss/src/components/EvalRunDetails/Table.tsx
  • web/oss/src/components/EvalRunDetails/atoms/table/run.ts
  • web/oss/src/components/EvalRunDetails/atoms/traces.ts
  • web/oss/src/components/EvalRunDetails/components/CompareRunsMenu.tsx
  • web/oss/src/components/EvalRunDetails/components/EvalTestcaseDrawerAdapter/index.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawerHeader.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawerSidePanel.tsx
  • web/oss/src/components/EvalRunDetails/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/ScenarioNavigator.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/index.tsx
  • web/oss/src/components/EvalRunDetails/evaluationPreviewTableStore.ts
  • web/oss/src/components/EvalRunDetails/hooks/useCellVisibility.ts
  • web/oss/src/components/EvalRunDetails/hooks/usePreviewColumns.tsx
  • web/oss/src/components/EvalRunDetails/utils/buildPreviewColumns.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/atoms/fetchAutoEvaluationRuns.ts
  • web/oss/src/components/EvaluationRunsTablePOC/atoms/tableStore.ts
  • web/oss/src/components/EvaluationRunsTablePOC/components/EvaluationRunsTable/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/EvaluationRunsTable/types.ts
  • web/oss/src/components/EvaluationRunsTablePOC/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/filters/EvaluationRunsHeaderFilters.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/hooks/useEvaluationRunsColumns/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/hooks/useEvaluationRunsColumns/utils.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/hooks/useEvaluatorHeaderReference.ts
  • web/oss/src/components/EvaluationRunsTablePOC/types.ts
  • web/oss/src/components/InfiniteVirtualTable/InfiniteVirtualTable.tsx
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnHiddenKeys.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnWidths.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/cells.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/createStandardColumns.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/createTableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/types.ts
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityHeader.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/InfiniteVirtualTableInner.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableDescription.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityMenuTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/TableSettingsDropdown.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/filters/FiltersPopoverTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityContext.ts
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityFlagContext.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/VirtualTableScrollContainerContext.ts
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteDatasetStore.ts
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/features/InfiniteVirtualTableFeatureShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/index.ts
  • web/oss/src/components/InfiniteVirtualTable/features/useInfiniteTableFeaturePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createSimpleTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createTableRowHelpers.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/index.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnDomRefs.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibilityControls.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerResize.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerSize.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useEditableTable.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useExpandableRows.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useHeaderViewportVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteScroll.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteTablePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useRowHeight.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScopedColumnVisibility.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollConfig.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollContainer.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useSmartResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableActions.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableExport.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableHeaderHeight.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableKeyboardShortcuts.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableManager.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableRowSelection.ts
  • web/oss/src/components/InfiniteVirtualTable/index.ts
  • web/oss/src/components/InfiniteVirtualTable/providers/ColumnVisibilityProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/providers/InfiniteVirtualTableStoreProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/types.ts
  • web/oss/src/components/InfiniteVirtualTable/utils/columnUtils.ts
  • web/oss/src/components/Playground/Components/TestsetDropdown/TestsetPreviewPanelWrapper.tsx
  • web/oss/src/components/SessionInspector/PanelSessionInspectorButton.tsx
  • web/oss/src/components/SharedDrawers/AddToTestsetDrawer/components/PreviewSection.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionDrawerButton/index.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/store/sessionDrawerStore.ts
  • web/oss/src/components/SharedDrawers/SessionDrawer/types.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/components/OverviewTabItem/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceTree/assets/spanVisibility.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceTree/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/store/traceDrawerStore.ts
  • web/oss/src/components/Sidebar/dynamic/registry.ts
  • web/oss/src/components/Sidebar/hooks/useSidebarConfig/index.tsx
  • web/oss/src/components/Sidebar/scopes/settingsScope.tsx
  • web/oss/src/components/TestcasesTableNew/components/TestcaseHeader.tsx
  • web/oss/src/components/TestcasesTableNew/components/TestcasesTableShell.tsx
  • web/oss/src/components/TestcasesTableNew/index.tsx
  • web/oss/src/components/TestcasesTableNew/state/rowHeight.ts
  • web/oss/src/components/TestsetsTable/TestsetsTable.tsx
  • web/oss/src/components/TestsetsTable/assets/createTestsetsColumns.tsx
  • web/oss/src/components/TestsetsTable/atoms/fetchTestsets.ts
  • web/oss/src/components/TestsetsTable/components/TestsetsHeaderFilters.tsx
  • web/oss/src/components/pages/agent-home/OnboardingEntry.tsx
  • web/oss/src/components/pages/agent-home/hooks/useCreateAgent.ts
  • web/oss/src/components/pages/agents/AgentsPage.tsx
  • web/oss/src/components/pages/agents/store.ts
  • web/oss/src/components/pages/observability/assets/constants.ts
  • web/oss/src/components/pages/observability/assets/exportUtils.ts
  • web/oss/src/components/pages/observability/assets/getObservabilityColumns.tsx
  • web/oss/src/components/pages/observability/components/AvatarTreeContent.tsx
  • web/oss/src/components/pages/observability/components/NodeNameCell.tsx
  • web/oss/src/components/pages/observability/components/SessionsTable/assets/getSessionColumns.tsx
  • web/oss/src/components/pages/observability/components/StatusRenderer.tsx
  • web/oss/src/components/pages/observability/components/TimestampCell.tsx
  • web/oss/src/components/pages/prompts/PromptsPage.tsx
  • web/oss/src/components/pages/settings/FeatureFlags/FeatureFlags.tsx
  • web/oss/src/components/pages/settings/Organization/General.tsx
  • web/oss/src/components/pages/settings/assets/navigation.test.ts
  • web/oss/src/components/pages/settings/assets/navigation.ts
  • web/oss/src/hooks/usePostAuthRedirect.ts
  • web/oss/src/lib/hooks/usePreviewEvaluations/index.ts
  • web/oss/src/lib/hooks/usePreviewEvaluations/types.ts
  • web/oss/src/lib/onboarding/atoms.ts
  • web/oss/src/lib/onboarding/index.ts
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/apps/[app_id]/index.tsx
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/settings/index.tsx
  • web/oss/src/services/tracing/types/index.ts
  • web/oss/src/state/app/atoms/fetcher.ts
  • web/oss/src/state/entities/shared/README.md
  • web/oss/src/state/entities/shared/createPaginatedEntityStore.ts
  • web/oss/src/state/entities/testcase/paginatedStore.ts
  • web/oss/src/state/entities/testset/paginatedStore.ts
  • web/oss/src/state/newObservability/atoms/queries.ts
  • web/oss/src/state/onboarding/selectors.ts
  • web/oss/src/state/settings/featureFlags.ts
  • web/oss/tsconfig.json
  • web/package.json
  • web/packages/agenta-api-client/package.json
  • web/packages/agenta-entities/package.json
  • web/packages/agenta-entities/src/evaluationRun/core/schema.ts
  • web/packages/agenta-entities/src/evaluationRun/etl/resolveMappings.ts
  • web/packages/agenta-entities/src/trace/etl/exportMatchingTraces.ts
  • web/packages/agenta-entities/tests/unit/export-matching-traces.test.ts
  • web/packages/agenta-entity-ui/package.json
  • web/packages/agenta-playground/src/index.ts
  • web/packages/agenta-playground/src/state/execution/index.ts
  • web/packages/agenta-playground/src/state/index.ts
  • web/packages/agenta-shared/package.json
  • web/packages/agenta-ui/src/InfiniteVirtualTable/index.ts
  • web/packages/agenta-ui/src/InfiniteVirtualTable/types.ts
  • web/tests/package.json
💤 Files with no reviewable changes (58)
  • web/oss/src/components/SharedDrawers/SessionDrawer/types.ts
  • web/oss/src/components/InfiniteVirtualTable/providers/ColumnVisibilityProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableDescription.tsx
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/components/filters/FiltersPopoverTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/useInfiniteTableFeaturePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/providers/InfiniteVirtualTableStoreProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/cells.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/VirtualTableScrollContainerContext.ts
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/helpers/index.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnWidths.ts
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityFlagContext.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnDomRefs.ts
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/TableSettingsDropdown.tsx
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnHiddenKeys.ts
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityHeader.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteTablePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/createTableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createTableRowHelpers.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerSize.ts
  • web/oss/src/components/InfiniteVirtualTable/components/TableShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityMenuTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/utils/columnUtils.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useRowHeight.tsx
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteDatasetStore.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableRowSelection.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollConfig.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/types.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createSimpleTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableHeaderHeight.ts
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableKeyboardShortcuts.ts
  • web/oss/src/components/InfiniteVirtualTable/InfiniteVirtualTable.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteScroll.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableManager.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/index.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerResize.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useEditableTable.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibilityControls.ts
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionDrawerButton/index.tsx
  • web/oss/src/components/AgentChatSlice/components/AgentMessage.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/createStandardColumns.tsx
  • web/oss/src/components/InfiniteVirtualTable/types.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableExport.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScopedColumnVisibility.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollContainer.ts
  • web/oss/src/components/InfiniteVirtualTable/components/InfiniteVirtualTableInner.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useHeaderViewportVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableActions.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityContext.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useSmartResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useExpandableRows.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/InfiniteVirtualTableFeatureShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/index.ts

Comment thread web/oss/src/components/AgentChatSlice/state/sessions.ts

@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.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 8

🧹 Nitpick comments (2)
api/oss/src/middlewares/prefix.py (1)

40-64: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

Route-table scan on every request.

_normalize calls _known() (a linear scan over self._routes() with per-route regex matching) up to twice per request — once for path, and again for alternate when the first misses. This effectively duplicates the matching work the router will redo right after. Likely negligible at typical route-table sizes, and the tradeoff is already called out in the docstring, but worth keeping in mind if the route count grows significantly (e.g., memoizing "known" prefixes, or building a path-prefix set once and reusing it, rather than re-walking BaseRoute.matches() compiled regexes per call).

web/oss/src/components/AgentChatSlice/components/clientTools/useConnectFlow.ts (1)

36-41: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Resolve or drop the open question left in the comment.

// NOTE for Mahmoud: confirm the bound — open question §"abandon timeout". reads as an unresolved TODO addressed to a specific person. If the 3-minute bound is already confirmed, drop the note; otherwise track it as a follow-up rather than shipping it as an inline comment.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 3e9a59ea-42da-4cca-ab58-45f8917921b6

📥 Commits

Reviewing files that changed from the base of the PR and between 56be600 and cbb43f5.

⛔ Files ignored due to path filters (6)
  • api/uv.lock is excluded by !**/*.lock
  • clients/python/uv.lock is excluded by !**/*.lock
  • sdks/python/uv.lock is excluded by !**/*.lock
  • services/runner/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • services/uv.lock is excluded by !**/*.lock
  • web/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (186)
  • .gitleaksignore
  • api/entrypoints/routers.py
  • api/oss/src/core/mounts/service.py
  • api/oss/src/middlewares/prefix.py
  • api/oss/tests/pytest/unit/middlewares/test_prefix.py
  • api/oss/tests/pytest/unit/test_mounts_file_ops.py
  • api/pyproject.toml
  • clients/python/pyproject.toml
  • docs/design/simplify-nav-new-users/README.md
  • docs/design/simplify-nav-new-users/context.md
  • docs/design/simplify-nav-new-users/plan.md
  • docs/design/simplify-nav-new-users/research.md
  • docs/design/simplify-nav-new-users/status.md
  • hosting/kubernetes/helm/Chart.yaml
  • sdks/python/pyproject.toml
  • services/pyproject.toml
  • services/runner/package.json
  • web/ee/css-modules.d.ts
  • web/ee/package.json
  • web/ee/tsconfig.json
  • web/oss/css-modules.d.ts
  • web/oss/package.json
  • web/oss/src/components/AgentChatSlice/AgentConversation.tsx
  • web/oss/src/components/AgentChatSlice/assets/markdown.tsx
  • web/oss/src/components/AgentChatSlice/components/AgentMessage.tsx
  • web/oss/src/components/AgentChatSlice/components/ConnectModelBanner.tsx
  • web/oss/src/components/AgentChatSlice/components/Inspector/InspectSessionButton.tsx
  • web/oss/src/components/AgentChatSlice/components/InteractionDock.tsx
  • web/oss/src/components/AgentChatSlice/components/QueuedMessages.tsx
  • web/oss/src/components/AgentChatSlice/components/SessionHistoryMenu.tsx
  • web/oss/src/components/AgentChatSlice/components/SessionRail.tsx
  • web/oss/src/components/AgentChatSlice/components/ToolActivity.tsx
  • web/oss/src/components/AgentChatSlice/components/clientTools/ConnectToolWidget.tsx
  • web/oss/src/components/AgentChatSlice/components/clientTools/useConnectFlow.ts
  • web/oss/src/components/AgentChatSlice/state/projectSessions.ts
  • web/oss/src/components/AgentChatSlice/state/sessions.ts
  • web/oss/src/components/Drives/useSessionDrive.ts
  • web/oss/src/components/EvalRunDetails/Table.tsx
  • web/oss/src/components/EvalRunDetails/atoms/table/run.ts
  • web/oss/src/components/EvalRunDetails/atoms/traces.ts
  • web/oss/src/components/EvalRunDetails/components/CompareRunsMenu.tsx
  • web/oss/src/components/EvalRunDetails/components/EvalTestcaseDrawerAdapter/index.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawerHeader.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawerSidePanel.tsx
  • web/oss/src/components/EvalRunDetails/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/ScenarioNavigator.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/index.tsx
  • web/oss/src/components/EvalRunDetails/evaluationPreviewTableStore.ts
  • web/oss/src/components/EvalRunDetails/hooks/useCellVisibility.ts
  • web/oss/src/components/EvalRunDetails/hooks/usePreviewColumns.tsx
  • web/oss/src/components/EvalRunDetails/utils/buildPreviewColumns.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/atoms/fetchAutoEvaluationRuns.ts
  • web/oss/src/components/EvaluationRunsTablePOC/atoms/tableStore.ts
  • web/oss/src/components/EvaluationRunsTablePOC/components/EvaluationRunsTable/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/EvaluationRunsTable/types.ts
  • web/oss/src/components/EvaluationRunsTablePOC/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/filters/EvaluationRunsHeaderFilters.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/hooks/useEvaluationRunsColumns/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/hooks/useEvaluationRunsColumns/utils.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/hooks/useEvaluatorHeaderReference.ts
  • web/oss/src/components/EvaluationRunsTablePOC/types.ts
  • web/oss/src/components/InfiniteVirtualTable/InfiniteVirtualTable.tsx
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnHiddenKeys.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnWidths.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/cells.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/createStandardColumns.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/createTableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/types.ts
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityHeader.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/InfiniteVirtualTableInner.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableDescription.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityMenuTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/TableSettingsDropdown.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/filters/FiltersPopoverTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityContext.ts
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityFlagContext.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/VirtualTableScrollContainerContext.ts
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteDatasetStore.ts
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/features/InfiniteVirtualTableFeatureShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/index.ts
  • web/oss/src/components/InfiniteVirtualTable/features/useInfiniteTableFeaturePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createSimpleTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createTableRowHelpers.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/index.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnDomRefs.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibilityControls.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerResize.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerSize.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useEditableTable.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useExpandableRows.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useHeaderViewportVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteScroll.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteTablePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useRowHeight.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScopedColumnVisibility.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollConfig.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollContainer.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useSmartResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableActions.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableExport.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableHeaderHeight.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableKeyboardShortcuts.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableManager.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableRowSelection.ts
  • web/oss/src/components/InfiniteVirtualTable/index.ts
  • web/oss/src/components/InfiniteVirtualTable/providers/ColumnVisibilityProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/providers/InfiniteVirtualTableStoreProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/types.ts
  • web/oss/src/components/InfiniteVirtualTable/utils/columnUtils.ts
  • web/oss/src/components/Playground/Components/TestsetDropdown/TestsetPreviewPanelWrapper.tsx
  • web/oss/src/components/SessionInspector/PanelSessionInspectorButton.tsx
  • web/oss/src/components/SharedDrawers/AddToTestsetDrawer/components/PreviewSection.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionDrawerButton/index.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/store/sessionDrawerStore.ts
  • web/oss/src/components/SharedDrawers/SessionDrawer/types.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/components/OverviewTabItem/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceTree/assets/spanVisibility.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceTree/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/store/traceDrawerStore.ts
  • web/oss/src/components/Sidebar/dynamic/registry.ts
  • web/oss/src/components/Sidebar/hooks/useSidebarConfig/index.tsx
  • web/oss/src/components/Sidebar/scopes/settingsScope.tsx
  • web/oss/src/components/TestcasesTableNew/components/TestcaseHeader.tsx
  • web/oss/src/components/TestcasesTableNew/components/TestcasesTableShell.tsx
  • web/oss/src/components/TestcasesTableNew/index.tsx
  • web/oss/src/components/TestcasesTableNew/state/rowHeight.ts
  • web/oss/src/components/TestsetsTable/TestsetsTable.tsx
  • web/oss/src/components/TestsetsTable/assets/createTestsetsColumns.tsx
  • web/oss/src/components/TestsetsTable/atoms/fetchTestsets.ts
  • web/oss/src/components/TestsetsTable/components/TestsetsHeaderFilters.tsx
  • web/oss/src/components/pages/agent-home/OnboardingEntry.tsx
  • web/oss/src/components/pages/agent-home/hooks/useCreateAgent.ts
  • web/oss/src/components/pages/agents/AgentsPage.tsx
  • web/oss/src/components/pages/agents/store.ts
  • web/oss/src/components/pages/observability/assets/constants.ts
  • web/oss/src/components/pages/observability/assets/exportUtils.ts
  • web/oss/src/components/pages/observability/assets/getObservabilityColumns.tsx
  • web/oss/src/components/pages/observability/components/AvatarTreeContent.tsx
  • web/oss/src/components/pages/observability/components/NodeNameCell.tsx
  • web/oss/src/components/pages/observability/components/SessionsTable/assets/getSessionColumns.tsx
  • web/oss/src/components/pages/observability/components/StatusRenderer.tsx
  • web/oss/src/components/pages/observability/components/TimestampCell.tsx
  • web/oss/src/components/pages/prompts/PromptsPage.tsx
  • web/oss/src/components/pages/settings/FeatureFlags/FeatureFlags.tsx
  • web/oss/src/components/pages/settings/Organization/General.tsx
  • web/oss/src/components/pages/settings/assets/navigation.test.ts
  • web/oss/src/components/pages/settings/assets/navigation.ts
  • web/oss/src/hooks/usePostAuthRedirect.ts
  • web/oss/src/lib/hooks/usePreviewEvaluations/index.ts
  • web/oss/src/lib/hooks/usePreviewEvaluations/types.ts
  • web/oss/src/lib/onboarding/atoms.ts
  • web/oss/src/lib/onboarding/index.ts
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/apps/[app_id]/index.tsx
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/settings/index.tsx
  • web/oss/src/services/tracing/types/index.ts
  • web/oss/src/state/app/atoms/fetcher.ts
  • web/oss/src/state/entities/shared/README.md
  • web/oss/src/state/entities/shared/createPaginatedEntityStore.ts
  • web/oss/src/state/entities/testcase/paginatedStore.ts
  • web/oss/src/state/entities/testset/paginatedStore.ts
  • web/oss/src/state/newObservability/atoms/queries.ts
  • web/oss/src/state/onboarding/selectors.ts
  • web/oss/src/state/settings/featureFlags.ts
  • web/oss/tsconfig.json
  • web/package.json
  • web/packages/agenta-api-client/package.json
  • web/packages/agenta-entities/package.json
  • web/packages/agenta-entities/src/evaluationRun/core/schema.ts
  • web/packages/agenta-entities/src/evaluationRun/etl/resolveMappings.ts
  • web/packages/agenta-entities/src/trace/etl/exportMatchingTraces.ts
  • web/packages/agenta-entities/tests/unit/export-matching-traces.test.ts
  • web/packages/agenta-entity-ui/package.json
  • web/packages/agenta-playground/src/index.ts
  • web/packages/agenta-playground/src/state/execution/index.ts
  • web/packages/agenta-playground/src/state/index.ts
  • web/packages/agenta-shared/package.json
  • web/packages/agenta-ui/src/InfiniteVirtualTable/index.ts
  • web/packages/agenta-ui/src/InfiniteVirtualTable/types.ts
  • web/tests/package.json
💤 Files with no reviewable changes (58)
  • web/oss/src/components/SharedDrawers/SessionDrawer/types.ts
  • web/oss/src/components/InfiniteVirtualTable/providers/ColumnVisibilityProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableDescription.tsx
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/components/filters/FiltersPopoverTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/useInfiniteTableFeaturePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/providers/InfiniteVirtualTableStoreProvider.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/cells.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/VirtualTableScrollContainerContext.ts
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/helpers/index.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnWidths.ts
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityFlagContext.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnDomRefs.ts
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/TableSettingsDropdown.tsx
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnHiddenKeys.ts
  • web/oss/src/components/InfiniteVirtualTable/components/ColumnVisibilityHeader.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteTablePagination.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/createTableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createTableRowHelpers.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerSize.ts
  • web/oss/src/components/InfiniteVirtualTable/components/TableShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityMenuTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/utils/columnUtils.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useRowHeight.tsx
  • web/oss/src/components/InfiniteVirtualTable/createInfiniteDatasetStore.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableRowSelection.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollConfig.ts
  • web/oss/src/components/InfiniteVirtualTable/columns/types.ts
  • web/oss/src/components/InfiniteVirtualTable/helpers/createSimpleTableStore.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableHeaderHeight.ts
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableKeyboardShortcuts.ts
  • web/oss/src/components/InfiniteVirtualTable/InfiniteVirtualTable.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useInfiniteScroll.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableManager.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/index.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerResize.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useEditableTable.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useColumnVisibilityControls.ts
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionDrawerButton/index.tsx
  • web/oss/src/components/AgentChatSlice/components/AgentMessage.tsx
  • web/oss/src/components/InfiniteVirtualTable/columns/createStandardColumns.tsx
  • web/oss/src/components/InfiniteVirtualTable/types.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableExport.ts
  • web/oss/src/components/InfiniteVirtualTable/atoms/columnVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScopedColumnVisibility.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useScrollContainer.ts
  • web/oss/src/components/InfiniteVirtualTable/components/InfiniteVirtualTableInner.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useHeaderViewportVisibility.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useTableActions.tsx
  • web/oss/src/components/InfiniteVirtualTable/context/ColumnVisibilityContext.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useSmartResizableColumns.ts
  • web/oss/src/components/InfiniteVirtualTable/hooks/useExpandableRows.tsx
  • web/oss/src/components/InfiniteVirtualTable/features/InfiniteVirtualTableFeatureShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/index.ts
🛑 Comments failed to post (7)
docs/design/simplify-nav-new-users/context.md (1)

36-51: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the Phase 2 status.

This says the Classic mode switch is a follow-up and does not exist yet, but this PR adds FeatureFlags and its persisted override. Describe both phases as implemented so the design record does not mislead follow-up work.

docs/design/simplify-nav-new-users/plan.md (1)

145-158: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Keep the documented override atom per-user.

The example stores under the literal key agenta:onboarding:<userId>:... and places the atom in selectors. Document the existing user-scoped atom family in lib/onboarding/atoms.ts, then import that atom into the selector.

Proposed documentation correction
-import { atomWithStorage } from "jotai/utils";
+import {
+  navSimplifiedDefaultAtom,
+  navSimplifiedOverrideAtom,
+} from "`@/oss/lib/onboarding/atoms`";
 
-/** null = follow default, true = force simplified, false = force full. Per-user via LS. */
-export const navSimplifiedOverrideAtom = atomWithStorage<boolean | null>(
-  "agenta:onboarding:<userId>:nav-simplified-override",
-  null,
-);
-
 // Phase 2: explicit choice wins; else fall back to the signup-era default.
 export const advancedNavHiddenAtom = atom((get) => {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

import {
  navSimplifiedDefaultAtom,
  navSimplifiedOverrideAtom,
} from "`@/oss/lib/onboarding/atoms`";

// Phase 2: explicit choice wins; else fall back to the signup-era default.
export const advancedNavHiddenAtom = atom((get) => {
  const override = get(navSimplifiedOverrideAtom);
  return override ?? get(navSimplifiedDefaultAtom);
});
web/oss/src/components/pages/agent-home/OnboardingEntry.tsx (1)

40-47: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

ast-grep outline web/oss/src/components/pages/agents/store.ts --items all
rg -n -A40 -B5 'useAgentsFirstRun' \
  web/oss/src/components/pages/agents/store.ts \
  web/oss/src/components/pages/agent-home/OnboardingEntry.tsx

Repository: Agenta-AI/agenta

Length of output: 11168


🌐 Web query:

TanStack Query useQuery isSuccess isFetching isStale states empty data resolving

💡 Result:

In TanStack Query, the useQuery hook manages complex asynchronous state through two primary variables: status (or its derived booleans) and fetchStatus [1][2]. Status States The status property tracks the state of the data itself [1][2]: - pending: The query has no data [1][2]. - success: The query was successful and data is available [1][2]. - error: The query encountered an error and the error property is populated [1][2]. - isSuccess (boolean): A derived convenience boolean for status === 'success' [3][4]. FetchStatus States The fetchStatus property tracks the state of the queryFn (whether the network/data-fetching function is currently running) [1][2]: - fetching: The query function is executing (includes initial loading and background refetching) [1][2]. - paused: The query wants to fetch but is paused (e.g., due to network issues) [1][2]. - idle: The query is not currently doing anything [1][2]. - isFetching (boolean): A derived convenience boolean for fetchStatus === 'fetching' [3][4]. Additional Concepts - isStale: A boolean indicating if the data in the cache is older than the defined staleTime or has been invalidated [3][4]. A query can be in a success state (having data) while also being stale, which triggers background refetches [1][2]. - Empty Data Handling: If a query function returns undefined, it is considered a failed query [5]. To represent "empty" data (such as an empty list), you should return null or an empty structure (e.g., []) from your queryFn [5]. If you need to avoid undefined types in TypeScript while waiting for data, you can use initialData to provide a default value, or use optional chaining/nullish coalescing (e.g., data ?? []) when consuming the data [6][7]. Key Distinction: The status tells you if you have data [1][2]. The fetchStatus tells you if the function is running [1][2]. A query can be in a success status (having cached data) while also being in a fetching fetchStatus (performing a background refetch) [1][2].

Citations:


🌐 Web query:

TanStack Query initialData stale success isFetching false initialData undefined

💡 Result:

In TanStack Query, the behavior where a query using initialData appears in a success state but triggers a background fetch is expected if the data is considered "stale" [1][2]. By default, initialData is treated as "fresh" upon initialization [3][4][5]. Because it is considered fresh, TanStack Query will not trigger a background refetch unless the staleTime has elapsed or the query is otherwise invalidated [3][4][6]. If you observe isFetching set to true (indicating a background fetch is occurring) despite providing initialData, it is typically because the query is considered stale [1][2]. This happens if: 1. You have set a staleTime that is shorter than the time elapsed since the data was supposedly created [3][4]. 2. You are using initialDataUpdatedAt to explicitly signal that the initialData is already old [3][4][2]. When initialDataUpdatedAt is provided, TanStack Query compares this timestamp against the current time and staleTime to determine if the data is already stale, triggering an immediate background fetch if it is [4][1][2]. If your goal is to prevent the background fetch, ensure that your staleTime is sufficiently high, or do not provide an initialDataUpdatedAt that falls outside the staleTime window [3][6][2]. If your goal is to show initialData but still ensure a fresh fetch occurs, using initialData with a low staleTime (or 0) is the correct pattern [5][2]. If you find that initialData is persisting longer than you intend when query keys change, remember that initialData is injected into the cache whenever a new query is created [2]. If you do not want this behavior, consider using placeholderData instead, which is not persisted to the cache and does not mark the query as success in the same way initialData does [1][6][2].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Inspect the query options and package versions used for TanStack Query.
sed -n '1,80p' web/oss/src/components/pages/agents/store.ts
printf '\n--- package versions/dependencies ---\n'
rg -n '"`@tanstack/react-query`"|react-query|useQuery' package.json pnpm-lock.yaml web/package.json web/pnpm-lock.yaml -g 'package.json' -g 'pnpm-lock.yaml' || true

Repository: Agenta-AI/agenta

Length of output: 6477


Keep first-run users on the loader through the redirect.

useAgentsFirstRun() can return firstRun: true while a successfully resolved empty query is no longer fetching or stale, but resolving only covers errors. Since the redirect runs in a post-render effect, paint OnboardingLoader for firstRun as well so the onboarding flow doesn’t briefly render/home before /playground replaces the route.

web/oss/src/components/pages/settings/Organization/General.tsx (1)

12-16: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

ast-grep outline web/packages/agenta-sdk/src/resources.ts --items all
ast-grep outline web/oss/src/services/organization/api.ts --items all
rg -n -C 2 'organization|Organization' web/packages/agenta-sdk/src/resources.ts

Repository: Agenta-AI/agenta

Length of output: 2732


🏁 Script executed:

#!/bin/bash
set -u

printf 'Files matching Organization/organization/organization:*:\n'
git ls-files | rg -n 'Organization|organization|organizations|organizations:' || true

printf '\nOrganization component imports and relevant calls:\n'
if [ -f "web/oss/src/components/pages/settings/Organization/General.tsx" ]; then
  sed -n '1,220p' web/oss/src/components/pages/settings/Organization/General.tsx
fi

printf '\norganization accessor search in SDK resources:\n'
rg -n -i 'organization|organizations|get.*Organization.*Client|organization.*Client|Organization.*Client' web/packages/agenta-sdk/src/resources.ts web/packages/agenta-sdk/src || true

Repository: Agenta-AI/agenta

Length of output: 24538


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Generated organizations Resource/Client files excerpt:\n'
sed -n '1,240p' web/packages/agenta-api-client/src/generated/api/resources/organizations/index.ts 2>/dev/null || true
printf '\nGenerated organizations Client exports:\n'
sed -n '1,240p' web/packages/agenta-api-client/src/generated/api/resources/organizations/exports.ts 2>/dev/null || true

printf '\nCurrent SDK resources.ts with line numbers:\n'
sed -n '1,180p' web/packages/agenta-sdk/src/resources.ts

printf '\nExisting legacy org services import and contents:\n'
sed -n '1,220p' web/oss/src/services/organization/api/index.ts

printf '\nImports from legacy OSS organization api across web:\n'
rg -n 'from "`@/oss/services/organization/api`"|from "`@/oss/services/organization`|organization/api"|`@agenta/sdk/resources`' web/oss web/packages/agenta-sdk -g '*.ts' -g '*.tsx'

Repository: Agenta-AI/agenta

Length of output: 13984


Add an organization Fern resource accessor.

Use @agenta/sdk/resources for deleteOrganization, transferOrganizationOwnership, and updateOrganization; add getOrganizationsClient() to web/packages/agenta-sdk/src/resources.ts and route these calls through it so the frontend does not extend the legacy OSS API.

Source: Coding guidelines

web/oss/src/components/TestsetsTable/TestsetsTable.tsx (1)

367-368: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -n -C 5 'useTableManager|datasetStore|ApiRow|InfiniteDatasetStore' \
  web/packages/agenta-ui/src web/oss/src/components/TestsetsTable

Repository: Agenta-AI/agenta

Length of output: 50374


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== locate manager/store files =="
fd -a 'useTableManager|createPaginatedEntityStore|tableStore|fetchTestsets|TestsetsTable' web packages 2>/dev/null | sed 's#^\./##' | head -80

echo
echo "== useTableManager outline =="
test -f web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useTableManager.ts && ast-grep outline web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useTableManager.ts || true

echo
echo "== relevant useTableManager.ts =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useTableManager.ts | sed -n '1,240p'

echo
echo "== relevant paginated entity store signature =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/paginated/createPaginatedEntityStore.ts | sed -n '280,320p'

echo
echo "== testsets table store types and init =="
cat -n web/oss/src/components/TestsetsTable/atoms/tableStore.ts | sed -n '1,120p'
cat -n web/oss/src/state/entities/testset.ts | sed -n '1,260p'

echo
echo "== TestsetsTable relevant lines =="
cat -n web/oss/src/components/TestsetsTable/TestsetsTable.tsx | sed -n '300,390p'

echo
echo "== all paginatedStore assignments in web/oss =="
rg -n 'paginatedStore|datasetStore: .*store|useTableManager' web/oss/src -C 3

Repository: Agenta-AI/agenta

Length of output: 1191


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== useTableManager file =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useTableManager.tsx | sed -n '1,260p'

echo
echo "== FeatureShell datasetStore/interface usage =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/features/InfiniteVirtualTableFeatureShell.tsx | sed -n '90,125p;740,795p'

echo
echo "== useInfiniteTableFeaturePagination =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/features/useInfiniteTableFeaturePagination.ts | sed -n '1,60p'

echo
echo "== paginated entity store result signature =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/paginated/createPaginatedEntityStore.ts | sed -n '280,325p'

echo
echo "== testsets paginated store source =="
cat -n web/oss/src/components/TestsetsTable/atoms/tableStore.ts | sed -n '45,160p'
cat -n web/oss/src/state/entities/testset.ts | sed -n '1,230p'

echo
echo "== TestsetsTable lines =="
cat -n web/oss/src/components/TestsetsTable/TestsetsTable.tsx | sed -n '1,120p;330,390p'

echo
echo "== type invariant probe from source text =="
python3 - <<'PY'
from pathlib import Path
for p in [
 "web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useTableManager.tsx",
 "web/packages/agenta-ui/src/InfiniteVirtualTable/features/InfiniteVirtualTableFeatureShell.tsx",
 "web/packages/agenta-ui/src/InfiniteVirtualTable/features/useInfiniteTableFeaturePagination.ts",
 "web/packages/agenta-ui/src/InfiniteVirtualTable/paginated/createPaginatedEntityStore.ts",
 "web/oss/src/components/TestsetsTable/atoms/tableStore.ts",
 "web/oss/src/components/TestsetsTable/TestsetsTable.tsx",
]:
    print(f"\n-- {p} --")
    s=Path(p).read_text()
    for needle in [
        "interface UseTableManagerConfig",
        "type UseTableManagerConfig",
        "datasetStore?:",
        "Pick<InfiniteDatasetStore<Row, ApiRow",
        "Pick<InfiniteDatasetStore<Row, unknown,",
        "paginatedStore"
    ]:
        if needle in s:
            idx=s.index(needle)
            print(s[max(0, idx-500):idx+1200])
PY

Repository: Agenta-AI/agenta

Length of output: 18406


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== actual testset entity files =="
fd -a 'testset.*' web/oss/src/web web/oss/src/state web 2>/dev/null | grep -E 'web/oss/src/(state|components|.*testset)' | sed -n '1,80p'

echo
echo "== references to testset entity atoms/types =="
rg -n "export const testset|type TestsetTableRow|interface TestsetTableRow|testset\.paginated|type TestsetApiRow|const testset" web/oss/src web/packages/agenta-ui/src web/packages/agenta-entities/src -A 4 -B 2 | sed -n '1,220p'

echo
echo "== createSimpleTableStore and SimpleTableStore datasetStore signature =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/paginated/createSimpleTableStore.ts | sed -n '1,220p'

Repository: Agenta-AI/agenta

Length of output: 25457


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== find createSimpleTableStore =="
fd -a 'createSimpleTableStore|simpleTableStore' web | sed -n '1,40p'

echo
echo "== all SimpleTableStore definitions/usages =="
rg -n "interface SimpleTableStore|type SimpleTableStore|createSimpleTableStore|datasetStore:.*SimpleTableStore|store: SimpleTableStore|store:" web/packages/agenta-ui/src web/oss/src/state web/oss/src/components/TestsetsTable -C 3 | sed -n '1,260p'

echo
echo "== testset entity directory files =="
find web/oss/src/state/entities/testset -maxdepth 1 -type f -print | sort
for f in web/oss/src/state/entities/testset/*; do
  echo
  echo "-- $f --"
  cat -n "$f" | sed -n '1,180p'
done

Repository: Agenta-AI/agenta

Length of output: 50374


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== pagination consumer =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useInfiniteTablePagination.ts | sed -n '1,180p'

echo
echo "== SimpleTableStore implementation =="
cat -n web/packages/agenta-ui/src/InfiniteVirtualTable/helpers/createSimpleTableStore.ts | sed -n '1,180p'

echo
echo "== testset controller relevant setup =="
cat -n web/oss/src/state/entities/testset/testsetController.ts | sed -n '1,140p;170,240p'

echo
echo "== testset paginated store factory =="
cat -n web/oss/src/state/entities/testset/paginatedStore.ts | sed -n '1,180p'

Repository: Agenta-AI/agenta

Length of output: 26853


Align useTableManager with the actual store shape.

useTableManager<TestsetTableRow> accepts only InfiniteDatasetStore<TestsetTableRow, unknown, unknown>, while testset.paginated.store is InfiniteDatasetStore<TestsetTableRow, TestsetApiRow, TestsetPaginatedMeta>. Keep TestsetApiRow in the manager/shell/pagination generics or use an explicit typed adapter instead of as never, so incompatible row state cannot slip through.

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

121-138: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Replace the legacy demo-tag color literal.

Line 134 uses --ag-c-0517290F, which is prohibited and will not follow the supported theme-token contract. Use Ant Design semantic tokens instead.

Proposed fix
-                {isDemoOrg && <Tag className="bg-[var(--ag-c-0517290F)] m-0 font-normal">demo</Tag>}
+                {isDemoOrg && (
+                    <Tag className="m-0 bg-[var(--ant-color-fill-secondary)] font-normal text-[var(--ant-color-text-secondary)]">
+                        demo
+                    </Tag>
+                )}

As per coding guidelines, “Consume theme colors through Ant Design semantic tokens, Tailwind color utilities, or supported var(--ag-color*) variables; do not use raw hex colors or --ag-c-* literals.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    const buildOrganizationTitle = useCallback(
        (label: string) => (
            <div className="flex items-center gap-2">
                <span>{label}</span>
                <Tooltip title={isOrgIdCopied ? "Copied!" : "Click to copy organization ID"}>
                    <Tag
                        className="cursor-pointer flex items-center gap-1"
                        onClick={handleCopyOrgId}
                    >
                        <Link size={14} weight="bold" />
                        <span>Organization ID</span>
                    </Tag>
                </Tooltip>
                {isDemoOrg && (
                    <Tag className="m-0 bg-[var(--ant-color-fill-secondary)] font-normal text-[var(--ant-color-text-secondary)]">
                        demo
                    </Tag>
                )}
            </div>
        ),
        [handleCopyOrgId, isDemoOrg, isOrgIdCopied],
    )

Source: Coding guidelines

web/package.json (1)

28-28: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

pnpm --filter `@agenta/oss` exec tsgo --version
pnpm --filter `@agenta/ee` exec tsgo --version

Repository: Agenta-AI/agenta

Length of output: 3154


🏁 Script executed:

#!/bin/bash
set -u

echo "== package files =="
git ls-files | rg '(^|/)package\.json$|pnpm-workspace\.yaml$|AGENTS\.md$' | sed -n '1,200p'

echo
echo "== web/package.json relevant dependency/scripts =="
if [ -f web/package.json ]; then
  python3 - <<'PY'
import json
p='web/package.json'
with open(p) as f:
    data=json.load(f)
for key in ('dependencies','devDependencies','optionalDependencies','peerDependencies','scripts'):
    print(f'-- {key} --')
    v=data.get(key, {})
    for name in sorted(v):
        if name.lower().replace('_','-').replace('.','-') in ('`@typescript/native-preview`','tsgo') or 'typescript' in name.lower() or name=='type-check:native':
            print(f'{name}: {v[name]}')
    if not any(n.lower().replace('_','-').replace('.','-') in ('`@typescript/native-preview`','tsgo','type-check:native') or 'typescript' in n.lower() for n in v):
        print('(no matches)')
PY
fi

echo
echo "== workspace files matching `@agenta/oss` and `@agenta/ee` =="
for p in $(git ls-files | rg '(^|/)package\.json$'); do
  if python3 - <<'PY' "$p"
import json, sys
p=sys.argv[1]
with open(p) as f:
    data=json.load(f)
pkg=data.get('name','')
if pkg in ('`@agenta/oss`','`@agenta/ee`'):
    print(p)
    print(json.dumps(data.get('scripts'), indent=2))
PY
  then :; fi
done

echo
echo "== search type-check:native and tsgo =="
rg -n '"type-check:native"|tsgo|`@typescript/native-preview`' -S .

Repository: Agenta-AI/agenta

Length of output: 50373


Fix filtered tsgo execution.

@typescript/native-preview is only declared at the workspace root, while type-check:native runs pnpm --filter @agenta/oss exec tsgo and pnpm --filter @agenta/ee exec tsgo. The filtered commands fail unless the tool is declared in those packages or invokes root-installed tsgo explicitly.

Also applies to: 55-56

…ctivity

Local turn-settle bump used Date.now() directly, which could overwrite a
newer server heartbeat under clock skew and briefly sink the session in
history. Use Math.max, matching the reconciler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Frontend Improvement size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[bug] Sort playground chat sessions by last message

3 participants