Skip to content

feat(frontend): drop a file to create a test set from the /m playground load dialog, and keep the evaluator playground state in its address - #8210

Open
mmabrouk wants to merge 125 commits into
mainfrom
fix/m-playground-testset-dialog-url
Open

mmabrouk wants to merge 125 commits into
mainfrom
fix/m-playground-testset-dialog-url

Conversation

@mmabrouk

@mmabrouk mmabrouk commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

Based on main, with release/v0.128.10 merged in (batch 2: #8182, #8199). The diff shrinks once that release merges.

What the user sees

In /m developer mode, the playground's "Load test set" dialog has the "Create a new test set" drop zone back, as /w has (parity finding playground-testset-load-01; decided: keep the /m preview, add the drop zone). Drop a CSV or JSON file on it, or click it to pick one: the create dialog opens with that file already in it and the test set name filled from the file name. "Create test set" uploads it, and the playground loads the new test set, as the old "Create a new test set" button did.

Before, the dialog had only a "Create a new test set" button, and the file had to be picked again inside the create dialog.

/m without developer mode does not change: the playground is a developer view. The test sets page's own create dialog is unchanged (it opens with no file, as before).

How

  • LoadTestsetDialog (@agenta/playground-ui, only /m renders it) takes a create slot instead of onCreate. The /m host puts PlaygroundTestsetDrop there, which reuses the test sets page's TestsetFileDrop.
  • CreateTestsetDialog and UploadTestsetStep take an optional initialFile. The step reads it once, as if the user had dropped it there: the same checks, the preview and the name prefill.

What the tests cover

Risks: the dropped file is not the one uploaded, or the upload goes to the test sets page instead of loading into the playground (saved data sent wrong); the create dialog code loads with the playground (speed).

  • playgroundCreateTestset.render.test.tsx (real playground and loadable controllers, only HTTP mocked): dropping a file in the load dialog opens the create dialog with the file and its name, upload only; the create code loads only on the drop; Create sends exactly file, file_type and the trimmed name, and the playground connects to the new revision; draft rows are kept; a failed load connects nothing; closing returns to the load dialog.

  • uploadTestset.test.tsx: a step opened with a file shows it, prefills the name, and the upload hands the new test set to the host without opening the test set page.

  • playgroundEvaluator.render.test.tsx: a reload from the written address brings back the app (by name) and the test case; a link with test cases and no app opens on "Run on a test case"; an edited LLM judge reloads on the same revision, still dirty, with the same nested configuration the form reads. The last test fails without the adapter fix (the configuration comes back flat and the edit is gone).

Checks: /m, @agenta/entities and /w type checks pass. The @agenta/entities (all but mcp-policy-ladder, which fails only on the remote copy), @agenta/playground and /m playground tests pass on the remote machine. ESLint and Prettier pass on the changed files.

Live check of the address: Answer correctness (LLM judge) with Capital finder v3 and "Peru"; after a reload the app, the test case, the Draft tag and the prompt form are back, and Commit is still Commit.

Live check: /m from this branch behind a proxy to the QA stack. Capital finder, Test set, Connect test set: the drop zone shows above the test set list. Picking capitals-6.6.csv opens "Create new test set" with the file and the name "capitals-6.6".

The evaluator playground address (evaluators-pg-08)

The evaluator playground now writes the #pgSnapshot hash like the app playground: the connected app, the test cases and the evaluator's unsaved edits. A reload or a shared link opens the same state. ?revisions= keeps naming the evaluator. A link with test cases and no app opens on "Run on a test case". The restored app shows its name ("Capital finder v3"), not its id.

The evaluator's edits come back in place, on the same revision, so Commit stays Commit, as in /w (decision).

Before this, a restored evaluator showed a raw schema form ("Prompt Template: Array with 2 items") and lost the edit. The cause was not a placeholder: buildDraftPatch in @agenta/entities/workflow/snapshotAdapter.ts diffed the entity's display data against the server data. For an evaluator the display data is nested (prompt.messages, prompt.llm_config), while the server stores it flat (prompt_template, model). The restore then wrote the nested shape over the flat server data. The patch is now the stored (flat) data plus the draft, against the server. This also fixes the same links for evaluators connected in the app playground.

/w: the adapter is shared, and /w builds its playground links with it too. For an app, the patch no longer carries schemas that were only filled in on the client; those are filled in again on restore. The /w type check passes.

Agenta Product Agent added 30 commits November 6, 2026 12:16
… drawer

New prompt now opens the local draft in the editable revision drawer, as /w does.
The user can edit and test the prompt, and Create names it and makes the app,
then the new app opens in the /m playground.

Entire-Checkpoint: 01M6R95RE61YVR8YWTMXQ2X0V3
…auto load more in the shared list table

Entire-Checkpoint: 01M6RAQXAZEV9FRVECTEV4CCBE
…loyments-polish

# Conflicts:
#	web/mobile/src/features/variants/DeploymentsTab.tsx
Create new and the folder menu offer Set up workflow in beta developer mode, as /w
does. The form checks the name against existing apps, tests the URL's health route,
creates the app in the open folder and opens it in the /m playground.

Entire-Checkpoint: 01M6RB085GT0MEFMDSG2HCXVB1
…d primary Run all in /m

Entire-Checkpoint: 01M6RBR9B2GNNCD5NETHJ5Q89Z
…d summary chips on /m

Add the /w run header to the /m evaluation run page: a run menu with Edit evaluation (name and
description, saved through PATCH /simple/evaluations/{id} with the run's steps and origins), the
Evaluations chip row and a Compare entry built on compareBlockReason and compareCandidates. The
overview summary shows test set, application and variant chips with versions and links, a status
dot and title case metric names. Adds buildRunEditBody, editEvaluationRun, humanizeMetricLabel
and the test set revision version to @agenta/entities/evaluationRun.

Entire-Checkpoint: 01M6RC7Z0WXCY4DF2KVEERTV3Z
…evaluations list

The runs list now picks its columns like the old list: one column per
evaluator metric, cost, duration, tokens and errors, reference columns
that follow the tab (Query on Live, Kind on All), and test set and
variant revisions in the cells. Metrics and queries load for rows near
the screen in one batched request.

Shared column plan, cell rule and query revision fetch live in
@agenta/entities/evaluationRun with tests.

Entire-Checkpoint: 01M6RC8BT7P134CEN7ZCZTVXG8
…ons and Observability

In beta developer mode an evaluator id under /apps/<id>/ gets the app menu as
an evaluator (no Registry, Playground opens the evaluator playground), its own
Overview (usage charts, recent revisions, evaluations, no Deployment), and the
switcher lists evaluators next to prompt apps. Evaluator rows link to the
Overview from their menu.
… /m test set editor

- The search and the page actions (Import, Add row, Commit) share one
  row. Add column and the table settings sit in the last column header;
  Delete selected moves into the settings menu, as in /w. TestcaseTable
  and EntityTable get an opt-in settingsDelete prop.
- Commit is outlined while there is nothing to commit.
- Edit details shows Name and Description labels; the rename dialog
  labels its field. NameDialog gets an optional label, so the Settings
  dialogs stay as they are.
- The upload and import previews say Preview (N of M rows);
  readTestsetFilePreview returns totalRows.
… tools, row menu, Use API first, richer deploy dialogs

Entire-Checkpoint: 01M6RBYENTK11MM95AVW30447H
…e, compact boxes in /m

- TestcaseDataEditor gets two opt-in props for the form without a column
  list: fieldOrder ("sorted" by default, or "data" for the row's key
  order) and fieldControls (true by default). The /m test set drawer uses
  the row order and no per-field add or delete, as in /w.
- The /m drawer caps text boxes at their content (the shared editor theme
  sets 150px and loads unlayered in /m) and shows message text in the
  normal font, scoped to the drawer.
- The drill-in field delete button gets the label "Delete field".
- The grid test also checks that a reader gets no Delete selected.
…compare mode in /m

Entire-Checkpoint: 01M6RD686WZ2Z1DQ1EY81609AJ
…olumns' into feat/m-parity-overview-evaluations
… not the count of reads

Entire-Checkpoint: 01M6RD0N8ZZX7V6TMJJ18VPV9H
Back goes to Prompts, dates show the time, the type icon matches the Prompts list, and the list gets row selection with bulk Restore and CSV export.

Entire-Checkpoint: 01M6RD0VMSN7NBV1HVXA9J3XAT
…able drawer in /m

Entire-Checkpoint: 01M6R7QVHFD1SF2TDT0EZ0YW97
Entire-Checkpoint: 01M6R98M2HAX5A68Q2FK9GD5K5
Entire-Checkpoint: 01M6RD3TB3ZZ4KAM7KTT9G6VX0
…n columns and New evaluation in /m beta developer mode

Entire-Checkpoint: 01M6RDPCWDBFF5XFBFW5K2T2YD
… in the playground evaluator picker

Entire-Checkpoint: 01M6RE768M2DYVSN8R0FVWPXD5
…st set editor

As in /w, three entry points open the queue picker for test cases:
- Toolbar "Add annotation queue": the selected saved rows the grid
  shows, or else every saved row it shows.
- Row menu "Add annotation queue" on a saved row.
- Drawer header "Add to queue" for a saved row.

A row that is not saved yet has no id and is never sent. The picker is
the /m AddToQueuePicker, loaded on first open. The row menu keeps its
focus from closing the picker as the menu closes.
mmabrouk and others added 16 commits November 6, 2026 19:39
feat(frontend): Deployments polish in /m: history tools, row menu, Use API first, richer deploy dialogs
…e-drawer

feat(frontend): create and configure automatic evaluators in the editable drawer in /m
feat(frontend): automatic evaluators with types and categories in the /m playground evaluator picker
…-points

feat(frontend): create evaluators from New evaluation, a new queue and trace Annotate in /m
…uator-create

feat(frontend): create a new evaluator from the /m app playground evaluator picker
…nd load dialog

Entire-Checkpoint: 01M6S40YAT8HWBR7BVCEK78ZPA
…tions

feat(frontend): app overview evaluation tables with metrics, Application and New evaluation in /m
…ed-name

fix(frontend): keep the typed name in the new evaluation drawer when an app is picked
fix(frontend): a chat trace opened in the /m playground keeps its messages
fix(frontend): keep playground drafts when leaving or switching revision in /m
Keep the evaluator create flow mounted when the list fills, hand a new
evaluator back once, open older human revisions read-only, load every
revision page before the registry delete guard decides, hide Deploy and
Delete on an archived app overview, classify archived ids with their own
agent flag request, clamp month ranges, stop test set auto-load after a
failed page, and keep row menu clicks from opening the test case drawer.
fix(frontend): settle v0.128.10 review threads on /m parity batch 2
@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

Important

Review skipped

Too many files!

This PR contains 346 files, which is 46 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 29d554d and 005ac67.

Files ignored due to path filters: 4

  • api/uv.lock is excluded by !**/*.lock
  • clients/python/uv.lock is excluded by !**/*.lock
  • sdks/python/uv.lock is excluded by !**/*.lock
  • services/uv.lock is excluded by !**/*.lock
Files selected for processing: 346

  • api/pyproject.toml
  • clients/python/pyproject.toml
  • hosting/kubernetes/helm/Chart.yaml
  • sdks/python/pyproject.toml
  • services/pyproject.toml
  • web/ee/package.json
  • web/mobile/package.json
  • web/mobile/src/components/AppTypeIcon.tsx
  • web/mobile/src/features/annotations/QueueEvaluatorField.tsx
  • web/mobile/src/features/annotations/QueueListTable.tsx
  • web/mobile/src/features/annotations/QueueRowCells.tsx
  • web/mobile/src/features/annotations/QueueRowMenu.tsx
  • web/mobile/src/features/annotations/ScenarioListRow.tsx
  • web/mobile/src/features/annotations/ScenarioListTab.tsx
  • web/mobile/src/features/annotations/ScenarioTraceIOCell.tsx
  • web/mobile/src/features/app-overview/AppActionsMenu.tsx
  • web/mobile/src/features/app-overview/AppEvaluationsSection.tsx
  • web/mobile/src/features/app-overview/AppOverviewScreen.tsx
  • web/mobile/src/features/app-overview/AppRecentPromptsSection.tsx
  • web/mobile/src/features/app-overview/useLatestAppRuns.ts
  • web/mobile/src/features/app-overview/useOverviewApp.ts
  • web/mobile/src/features/archived-apps/ArchivedAppRowCells.tsx
  • web/mobile/src/features/archived-apps/ArchivedAppsScreen.tsx
  • web/mobile/src/features/archived-apps/ArchivedAppsTable.tsx
  • web/mobile/src/features/archived-apps/useRestoreArchivedApp.ts
  • web/mobile/src/features/evaluation-run/EditEvaluationDialog.tsx
  • web/mobile/src/features/evaluation-run/RunActionsMenu.tsx
  • web/mobile/src/features/evaluation-run/RunDetailsHeader.tsx
  • web/mobile/src/features/evaluation-run/RunDetailsScreen.tsx
  • web/mobile/src/features/evaluation-run/RunDetailsTitle.tsx
  • web/mobile/src/features/evaluation-run/RunEvaluatorPicker.tsx
  • web/mobile/src/features/evaluation-run/compare/CompareRunRow.tsx
  • web/mobile/src/features/evaluation-run/compare/CompareRunsButton.tsx
  • web/mobile/src/features/evaluation-run/compare/CompareRunsList.tsx
  • web/mobile/src/features/evaluation-run/compare/RunCompareBar.tsx
  • web/mobile/src/features/evaluation-run/compare/states/CompareRunsEmpty.tsx
  • web/mobile/src/features/evaluation-run/compare/states/CompareRunsSkeleton.tsx
  • web/mobile/src/features/evaluation-run/compare/useCompareCandidates.ts
  • web/mobile/src/features/evaluation-run/configuration/ApplicationConfigSection.tsx
  • web/mobile/src/features/evaluation-run/configuration/ConfigurationTab.tsx
  • web/mobile/src/features/evaluation-run/configuration/EvaluatorConfigCard.tsx
  • web/mobile/src/features/evaluation-run/configuration/EvaluatorsConfigSection.tsx
  • web/mobile/src/features/evaluation-run/configuration/RunSummaryCard.tsx
  • web/mobile/src/features/evaluation-run/configuration/TestsetRows.tsx
  • web/mobile/src/features/evaluation-run/configuration/useApplicationConfig.ts
  • web/mobile/src/features/evaluation-run/configuration/useEvaluatorConfigs.ts
  • web/mobile/src/features/evaluation-run/overview/OverviewTab.tsx
  • web/mobile/src/features/evaluation-run/overview/RunOverviewView.tsx
  • web/mobile/src/features/evaluation-run/overview/RunReferenceChip.tsx
  • web/mobile/src/features/evaluation-run/overview/RunStatusDot.tsx
  • web/mobile/src/features/evaluation-run/overview/TemporalMetricCard.tsx
  • web/mobile/src/features/evaluation-run/overview/runSummaryRows.tsx
  • web/mobile/src/features/evaluation-run/overview/useRunReferenceLinks.ts
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioColumnSettings.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioEvaluatorCell.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioFilter.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioFilterCondition.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioFilterValue.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioMetricText.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenarioTableRow.tsx
  • web/mobile/src/features/evaluation-run/scenarios/ScenariosTab.tsx
  • web/mobile/src/features/evaluation-run/scenarios/scenarioColumns.ts
  • web/mobile/src/features/evaluation-run/scenarios/scenarioTableColumns.ts
  • web/mobile/src/features/evaluation-run/scenarios/scenarioTableState.ts
  • web/mobile/src/features/evaluation-run/scenarios/states/ScenariosNoMatch.tsx
  • web/mobile/src/features/evaluation-run/scenarios/useRunScenarios.ts
  • web/mobile/src/features/evaluation-run/scenarios/useScenarioFilter.ts
  • web/mobile/src/features/evaluation-run/useEditEvaluationRun.ts
  • web/mobile/src/features/evaluation-run/useRunEditDialog.tsx
  • web/mobile/src/features/evaluations/list/EvaluationRunsTable.tsx
  • web/mobile/src/features/evaluations/list/EvaluationsScreen.tsx
  • web/mobile/src/features/evaluations/list/MultiCheckMenu.tsx
  • web/mobile/src/features/evaluations/list/RunApplicationCell.tsx
  • web/mobile/src/features/evaluations/list/RunFilterChips.tsx
  • web/mobile/src/features/evaluations/list/RunFiltersPanel.tsx
  • web/mobile/src/features/evaluations/list/RunMetricCells.tsx
  • web/mobile/src/features/evaluations/list/RunMetricValue.tsx
  • web/mobile/src/features/evaluations/list/RunQueryCell.tsx
  • web/mobile/src/features/evaluations/list/RunRowCells.tsx
  • web/mobile/src/features/evaluations/list/RunStatusFilter.tsx
  • web/mobile/src/features/evaluations/list/RunTestsetCell.tsx
  • web/mobile/src/features/evaluations/list/RunVersionChip.tsx
  • web/mobile/src/features/evaluations/list/queryConditionLines.ts
  • web/mobile/src/features/evaluations/list/runReferences.ts
  • web/mobile/src/features/evaluations/list/useEvaluationRunsFilters.ts
  • web/mobile/src/features/evaluations/list/useEvaluationRunsList.ts
  • web/mobile/src/features/evaluations/list/useEvaluatorColumns.ts
  • web/mobile/src/features/evaluations/list/useRunFilterOptions.ts
  • web/mobile/src/features/evaluations/list/useRunListColumns.ts
  • web/mobile/src/features/evaluations/new/EvaluationsRoute.tsx
  • web/mobile/src/features/evaluations/new/EvaluatorsEmpty.tsx
  • web/mobile/src/features/evaluations/new/EvaluatorsSection.tsx
  • web/mobile/src/features/evaluations/new/NewEvaluationForm.tsx
  • web/mobile/src/features/evaluations/new/NewEvaluationSheet.tsx
  • web/mobile/src/features/evaluations/new/newEvaluationDraft.ts
  • web/mobile/src/features/evaluators/EvaluatorRowCells.tsx
  • web/mobile/src/features/evaluators/EvaluatorRowMenu.tsx
  • web/mobile/src/features/evaluators/EvaluatorsScreen.tsx
  • web/mobile/src/features/evaluators/create/CreateEvaluatorFlow.tsx
  • web/mobile/src/features/evaluators/create/EvaluatorEditorDrawer.tsx
  • web/mobile/src/features/evaluators/create/EvaluatorTemplatePicker.tsx
  • web/mobile/src/features/evaluators/create/EvaluatorTemplateRow.tsx
  • web/mobile/src/features/evaluators/create/EvaluatorTestPane.tsx
  • web/mobile/src/features/evaluators/create/PlaygroundEvaluatorPicker.tsx
  • web/mobile/src/features/evaluators/create/states/EvaluatorTemplatesNoMatch.tsx
  • web/mobile/src/features/evaluators/create/states/EvaluatorTemplatesSkeleton.tsx
  • web/mobile/src/features/evaluators/create/useCreateEvaluatorFromTemplate.ts
  • web/mobile/src/features/evaluators/create/useEvaluatorEditor.ts
  • web/mobile/src/features/evaluators/create/useEvaluatorTemplates.ts
  • web/mobile/src/features/evaluators/human/HumanEvaluatorSheet.tsx
  • web/mobile/src/features/evaluators/human/useSaveHumanEvaluator.ts
  • web/mobile/src/features/evaluators/useEvaluatorOverviewHref.ts
  • web/mobile/src/features/nav/AppIdentity.tsx
  • web/mobile/src/features/nav/AppSwitcher.tsx
  • web/mobile/src/features/nav/appNavScope.tsx
  • web/mobile/src/features/observability/annotate/SelectEvaluatorsStep.tsx
  • web/mobile/src/features/observability/annotate/states/SelectEvaluatorsEmpty.tsx
  • web/mobile/src/features/observability/sessionDrawer/SessionTurnPanel.tsx
  • web/mobile/src/features/playground/EvaluatorPlaygroundHeader.tsx
  • web/mobile/src/features/playground/EvaluatorPlaygroundScreen.tsx
  • web/mobile/src/features/playground/EvaluatorPlaygroundWorkspace.tsx
  • web/mobile/src/features/playground/EvaluatorTypeTag.tsx
  • web/mobile/src/features/playground/PlaygroundHeader.tsx
  • web/mobile/src/features/playground/PlaygroundNewEvaluation.tsx
  • web/mobile/src/features/playground/PlaygroundTestsetDrop.tsx
  • web/mobile/src/features/playground/PlaygroundWorkspace.tsx
  • web/mobile/src/features/playground/RevisionActions.tsx
  • web/mobile/src/features/playground/RevisionMenu.tsx
  • web/mobile/src/features/playground/playgroundSnapshot.ts
  • web/mobile/src/features/playground/useEvaluatorPlaygroundSelection.ts
  • web/mobile/src/features/playground/usePlaygroundLeaveGuard.ts
  • web/mobile/src/features/playground/usePlaygroundSelection.ts
  • web/mobile/src/features/playground/useSwitchRevision.ts
  • web/mobile/src/features/prompts/CreatePromptDialog.tsx
  • web/mobile/src/features/prompts/CreatePromptDrawer.tsx
  • web/mobile/src/features/prompts/PromptRowCells.tsx
  • web/mobile/src/features/prompts/PromptsBreadcrumb.tsx
  • web/mobile/src/features/prompts/PromptsCreateMenu.tsx
  • web/mobile/src/features/prompts/PromptsScreen.tsx
  • web/mobile/src/features/prompts/PromptsView.tsx
  • web/mobile/src/features/prompts/dialogs/SetupWorkflowDialog.tsx
  • web/mobile/src/features/prompts/promptsCopy.ts
  • web/mobile/src/features/prompts/useCreatePrompt.ts
  • web/mobile/src/features/settings/NameDialog.tsx
  • web/mobile/src/features/testsets/archived/ArchivedTestsetRowCells.tsx
  • web/mobile/src/features/testsets/archived/ArchivedTestsetsScreen.tsx
  • web/mobile/src/features/testsets/archived/ArchivedTestsetsTable.tsx
  • web/mobile/src/features/testsets/create/FilePreviewTable.tsx
  • web/mobile/src/features/testsets/create/TestsetFileDrop.tsx
  • web/mobile/src/features/testsets/create/TestsetNameDialog.tsx
  • web/mobile/src/features/testsets/create/UploadTestsetStep.tsx
  • web/mobile/src/features/testsets/create/testsetFileCheck.ts
  • web/mobile/src/features/testsets/create/useTestsetFilePick.ts
  • web/mobile/src/features/testsets/detail/ArchivedTestsetNotice.tsx
  • web/mobile/src/features/testsets/detail/ColumnDialogs.tsx
  • web/mobile/src/features/testsets/detail/EditTestsetDetailsDialog.tsx
  • web/mobile/src/features/testsets/detail/ImportRevisionDialog.tsx
  • web/mobile/src/features/testsets/detail/TestcaseEditorDrawer.tsx
  • web/mobile/src/features/testsets/detail/TestcaseEditorDrawerContent.tsx
  • web/mobile/src/features/testsets/detail/TestcaseQueuePicker.tsx
  • web/mobile/src/features/testsets/detail/TestcaseRowMenu.tsx
  • web/mobile/src/features/testsets/detail/TestsetDetailScreen.tsx
  • web/mobile/src/features/testsets/detail/TestsetGrid.tsx
  • web/mobile/src/features/testsets/detail/TestsetToolbar.tsx
  • web/mobile/src/features/testsets/detail/useArchivedTestset.ts
  • web/mobile/src/features/testsets/list/ArchiveTestsetsDialog.tsx
  • web/mobile/src/features/testsets/list/TestsetRevisionRows.tsx
  • web/mobile/src/features/testsets/list/TestsetRowCells.tsx
  • web/mobile/src/features/testsets/list/TestsetRowMenu.tsx
  • web/mobile/src/features/testsets/list/TestsetsDateFilter.tsx
  • web/mobile/src/features/testsets/list/TestsetsExportButton.tsx
  • web/mobile/src/features/testsets/list/TestsetsListScreen.tsx
  • web/mobile/src/features/testsets/list/TestsetsTable.tsx
  • web/mobile/src/features/testsets/list/copyTestsetId.ts
  • web/mobile/src/features/testsets/list/states/TestsetsNoMatch.tsx
  • web/mobile/src/features/testsets/list/testsetCreatedRange.ts
  • web/mobile/src/features/testsets/list/testsetRowTypes.ts
  • web/mobile/src/features/testsets/list/useTestsetRowActions.ts
  • web/mobile/src/features/testsets/list/useTestsetsList.ts
  • web/mobile/src/features/variants/DeleteRevisionDialog.tsx
  • web/mobile/src/features/variants/DeleteSelectionDialog.tsx
  • web/mobile/src/features/variants/DeployRevisionDialog.tsx
  • web/mobile/src/features/variants/DeployToEnvironmentDialog.tsx
  • web/mobile/src/features/variants/DeploymentHistoryTable.tsx
  • web/mobile/src/features/variants/DeploymentRowMenu.tsx
  • web/mobile/src/features/variants/DeploymentsTab.tsx
  • web/mobile/src/features/variants/EnvironmentCards.tsx
  • web/mobile/src/features/variants/deploymentHistoryCsv.ts
  • web/mobile/src/features/variants/deploymentVariantLabel.ts
  • web/mobile/src/styles/globals.css
  • web/mobile/tests/unit/annotationCreateQueue.render.test.tsx
  • web/mobile/tests/unit/annotationQueueEvaluatorField.render.test.tsx
  • web/mobile/tests/unit/annotationQueueTable.render.test.tsx
  • web/mobile/tests/unit/annotationScenarioList.render.test.tsx
  • web/mobile/tests/unit/appEvaluationsSection.render.test.tsx
  • web/mobile/tests/unit/appNavScope.test.tsx
  • web/mobile/tests/unit/appOverviewBeta.render.test.tsx
  • web/mobile/tests/unit/appOverviewScreen.render.test.tsx
  • web/mobile/tests/unit/archivedAppsParity.render.test.tsx
  • web/mobile/tests/unit/archivedTestsetsScreen.render.test.tsx
  • web/mobile/tests/unit/chainTokenPathProvider.render.test.tsx
  • web/mobile/tests/unit/createEvaluatorFlow.render.test.tsx
  • web/mobile/tests/unit/createPrompt.render.test.tsx
  • web/mobile/tests/unit/deploymentsTab.render.test.tsx
  • web/mobile/tests/unit/editableRevisionDrawer.render.test.tsx
  • web/mobile/tests/unit/evaluationRunsColumns.render.test.tsx
  • web/mobile/tests/unit/evaluationRunsList.test.tsx
  • web/mobile/tests/unit/evaluationsScreen.render.test.tsx
  • web/mobile/tests/unit/evaluatorRowOverview.render.test.tsx
  • web/mobile/tests/unit/evaluatorTemplatePicker.render.test.tsx
  • web/mobile/tests/unit/evaluatorTestPane.render.test.tsx
  • web/mobile/tests/unit/evaluatorsScreen.render.test.tsx
  • web/mobile/tests/unit/executionHeaders.render.test.tsx
  • web/mobile/tests/unit/humanEvaluatorSheet.render.test.tsx
  • web/mobile/tests/unit/nameDialogLabel.render.test.tsx
  • web/mobile/tests/unit/newEvaluationDraft.test.ts
  • web/mobile/tests/unit/newEvaluationEvaluators.render.test.tsx
  • web/mobile/tests/unit/observabilitySessionDrawer.render.test.tsx
  • web/mobile/tests/unit/playgroundCompletionRuns.render.test.tsx
  • web/mobile/tests/unit/playgroundEditorStyle.test.ts
  • web/mobile/tests/unit/playgroundEvaluator.render.test.tsx
  • web/mobile/tests/unit/playgroundEvaluatorCreate.render.test.tsx
  • web/mobile/tests/unit/playgroundEvaluatorPicker.render.test.tsx
  • web/mobile/tests/unit/playgroundRefinePrompt.render.test.tsx
  • web/mobile/tests/unit/playgroundRevisionActions.render.test.tsx
  • web/mobile/tests/unit/playgroundRowSyncTag.render.test.tsx
  • web/mobile/tests/unit/playgroundRunResult.render.test.tsx
  • web/mobile/tests/unit/playgroundScreen.render.test.tsx
  • web/mobile/tests/unit/playgroundSelection.test.tsx
  • web/mobile/tests/unit/playgroundSnapshot.test.tsx
  • web/mobile/tests/unit/registrySelection.render.test.tsx
  • web/mobile/tests/unit/runConfigEvaluators.render.test.tsx
  • web/mobile/tests/unit/runConfigSections.render.test.tsx
  • web/mobile/tests/unit/runConfigTestcaseRead.render.test.tsx
  • web/mobile/tests/unit/runDetailsHeader.render.test.tsx
  • web/mobile/tests/unit/runOverviewCharts.render.test.tsx
  • web/mobile/tests/unit/runOverviewFixtures.ts
  • web/mobile/tests/unit/runScenariosFixtures.ts
  • web/mobile/tests/unit/runScenariosTab.render.test.tsx
  • web/mobile/tests/unit/runScenariosTable.render.test.tsx
  • web/mobile/tests/unit/runSummaryCard.render.test.tsx
  • web/mobile/tests/unit/runSummaryTable.render.test.tsx
  • web/mobile/tests/unit/selectEvaluatorsStep.render.test.tsx
  • web/mobile/tests/unit/testcaseEditorDrawer.render.test.tsx
  • web/mobile/tests/unit/testsetCreatedRange.test.ts
  • web/mobile/tests/unit/testsetDetailScreen.render.test.tsx
  • web/mobile/tests/unit/testsetFileDrop.render.test.tsx
  • web/mobile/tests/unit/testsetGrid.render.test.tsx
  • web/mobile/tests/unit/testsetHeader.render.test.tsx
  • web/mobile/tests/unit/testsetNameDialog.render.test.tsx
  • web/mobile/tests/unit/testsetQueue.render.test.tsx
  • web/mobile/tests/unit/testsetsListDeveloperMode.render.test.tsx
  • web/mobile/tests/unit/testsetsTable.render.test.tsx
  • web/mobile/tests/unit/variantDialogs.render.test.tsx
  • web/oss/package.json
  • web/package.json
  • web/packages/agenta-api-client/package.json
  • web/packages/agenta-entities/src/evaluationRun/api/index.ts
  • web/packages/agenta-entities/src/evaluationRun/api/queryRevisions.ts
  • web/packages/agenta-entities/src/evaluationRun/api/runActions.ts
  • web/packages/agenta-entities/src/evaluationRun/api/runsList.ts
  • web/packages/agenta-entities/src/evaluationRun/core/columnVisibility.ts
  • web/packages/agenta-entities/src/evaluationRun/core/index.ts
  • web/packages/agenta-entities/src/evaluationRun/core/liveQuery.ts
  • web/packages/agenta-entities/src/evaluationRun/core/metricFormat.ts
  • web/packages/agenta-entities/src/evaluationRun/core/runEdit.ts
  • web/packages/agenta-entities/src/evaluationRun/core/runListColumns.ts
  • web/packages/agenta-entities/src/evaluationRun/core/runStatsMap.ts
  • web/packages/agenta-entities/src/evaluationRun/core/scenarioMetrics.ts
  • web/packages/agenta-entities/src/evaluationRun/etl/index.ts
  • web/packages/agenta-entities/src/evaluationRun/etl/scenarioFilter.ts
  • web/packages/agenta-entities/src/evaluationRun/index.ts
  • web/packages/agenta-entities/src/evaluationRun/state/index.ts
  • web/packages/agenta-entities/src/evaluationRun/state/liveQueryRevision.ts
  • web/packages/agenta-entities/src/evaluationRun/state/runDetails.ts
  • web/packages/agenta-entities/src/evaluationRun/state/runMetrics.ts
  • web/packages/agenta-entities/src/testset/api/api.ts
  • web/packages/agenta-entities/src/testset/core/fileImport.ts
  • web/packages/agenta-entities/src/workflow/api/templates.ts
  • web/packages/agenta-entities/src/workflow/core/evaluatorTemplateCatalog.ts
  • web/packages/agenta-entities/src/workflow/core/index.ts
  • web/packages/agenta-entities/src/workflow/index.ts
  • web/packages/agenta-entities/src/workflow/snapshotAdapter.ts
  • web/packages/agenta-entities/src/workflow/state/evaluatorUtils.ts
  • web/packages/agenta-entities/src/workflow/state/index.ts
  • web/packages/agenta-entities/tests/unit/evaluation-run-edit.test.ts
  • web/packages/agenta-entities/tests/unit/evaluation-run-header.test.ts
  • web/packages/agenta-entities/tests/unit/evaluation-run-list-columns.test.ts
  • web/packages/agenta-entities/tests/unit/evaluation-run-metrics.test.ts
  • web/packages/agenta-entities/tests/unit/evaluation-run-scenario-table.test.ts
  • web/packages/agenta-entities/tests/unit/evaluation-runs-list-api.test.ts
  • web/packages/agenta-entities/tests/unit/evaluatorTemplateCatalog.test.ts
  • web/packages/agenta-entities/tests/unit/testset-file-import.test.ts
  • web/packages/agenta-entity-ui/package.json
  • web/packages/agenta-entity-ui/src/selection/components/UnifiedEntityPicker/types.ts
  • web/packages/agenta-entity-ui/src/selection/components/UnifiedEntityPicker/variants/PopoverCascaderVariant.tsx
  • web/packages/agenta-entity-ui/src/shared/EntityTable.tsx
  • web/packages/agenta-entity-ui/src/testcase/TestcaseDataEditor.tsx
  • web/packages/agenta-entity-ui/src/testcase/TestcaseDataEditor.types.ts
  • web/packages/agenta-entity-ui/src/testcase/TestcaseDataEditor.utils.ts
  • web/packages/agenta-entity-ui/src/testcase/TestcaseTable.tsx
  • web/packages/agenta-entity-ui/tests/unit/testcaseDataEditorFieldOrder.test.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ChatTurnView/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ExecutionRow/ComparisonLayout.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ExecutionRow/SingleLayout.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ExecutionRow/shared.tsx
  • web/packages/agenta-playground-ui/src/hooks/usePlaygroundNodeLabels.ts
  • web/packages/agenta-playground-ui/src/panels/chat/ChatMessage.tsx
  • web/packages/agenta-playground-ui/src/panels/compare/CompletionCompareRow.tsx
  • web/packages/agenta-playground-ui/src/panels/config/ConfigPanel.tsx
  • web/packages/agenta-playground-ui/src/panels/config/ConfigPanelHeader.tsx
  • web/packages/agenta-playground-ui/src/panels/config/RevisionSwitcher.tsx
  • web/packages/agenta-playground-ui/src/panels/config/RevisionTree.tsx
  • web/packages/agenta-playground-ui/src/panels/drawer/EditableRevisionDrawer.tsx
  • web/packages/agenta-playground-ui/src/panels/drawer/EditableRevisionDrawerBody.tsx
  • web/packages/agenta-playground-ui/src/panels/drawer/types.ts
  • web/packages/agenta-playground-ui/src/panels/drawer/useDrawerPlaygroundSession.ts
  • web/packages/agenta-playground-ui/src/panels/evaluator/ChainTokenPathProvider.tsx
  • web/packages/agenta-playground-ui/src/panels/evaluator/EvaluatorPicker.tsx
  • web/packages/agenta-playground-ui/src/panels/evaluator/RunOnSelector.tsx
  • web/packages/agenta-playground-ui/src/panels/focus/FocusDrawer.tsx
  • web/packages/agenta-playground-ui/src/panels/focus/FocusOutputs.tsx
  • web/packages/agenta-playground-ui/src/panels/inputs/InputValueEditor.tsx
  • web/packages/agenta-playground-ui/src/panels/inputs/InputVariableCardHeader.tsx
  • web/packages/agenta-playground-ui/src/panels/runs/CompletionRow.tsx
  • web/packages/agenta-playground-ui/src/panels/runs/RevisionResultCard.tsx
  • web/packages/agenta-playground-ui/src/panels/runs/RowActions.tsx
  • web/packages/agenta-playground-ui/src/panels/runs/RunError.tsx
  • web/packages/agenta-playground-ui/src/panels/runs/RunResult.tsx
  • web/packages/agenta-playground-ui/src/panels/runs/RunsPanelHeader.tsx
  • web/packages/agenta-playground-ui/src/state/clearPlayground.ts
  • web/packages/agenta-ui/src/Editor/index.ts
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenPathSuggestionsContext.tsx
  • web/packages/agenta-ui/src/drill-in/core/DrillInFieldHeader.tsx
  • web/packages/agenta-ui/src/list-table/ListTableColumnsMenu.tsx
  • web/packages/agenta-ui/src/list-table/ListTableExportButton.tsx
  • web/packages/agenta-ui/src/list-table/ListTableLoadMore.tsx
  • web/packages/agenta-ui/src/list-table/csv.ts
  • web/packages/agenta-ui/src/list-table/formatListDateTime.ts
  • web/packages/agenta-ui/src/list-table/index.ts
  • web/packages/agenta-ui/src/list-table/types.ts
  • web/packages/agenta-ui/src/list-table/useListTableColumnVisibility.ts
  • web/packages/agenta-ui/tests/unit/formatListDateTime.test.ts
  • web/packages/agenta-ui/tests/unit/listTableCsv.test.ts
  • web/packages/agenta-ui/tests/unit/listTableExtras.render.test.tsx
  • web/storybook/stories/developer-views/EvaluationRunsTable.stories.tsx

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

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • New Features
    • You can now drop a CSV file into the test-set load dialog to open the creation flow with the file ready to upload.
    • The file name is displayed and used to prefill the test-set name; you can edit it before creating the test set.

The playground now opens test-set creation when a user drops a file in the load dialog. The create dialog passes that file to the upload step, which processes it as the initial upload.

Changes: Playground test-set creation

Layer / File(s) Summary
Add file-drop creation to the load dialog
web/packages/agenta-playground-ui/src/panels/testsets/LoadTestsetDialog.tsx, web/mobile/src/features/playground/PlaygroundTestsetDrop.tsx, web/mobile/src/features/playground/PlaygroundTestsetMenu.tsx
The load dialog accepts host-provided creation content instead of an onCreate callback. The playground provides a file-drop control and retains the dropped file when opening the create dialog.
Pass the dropped file to upload
web/mobile/src/features/testsets/create/CreateTestsetDialog.tsx, web/mobile/src/features/testsets/create/UploadTestsetStep.tsx, web/mobile/tests/unit/playgroundCreateTestset.render.test.tsx, web/mobile/tests/unit/uploadTestset.test.tsx
The create dialog passes an optional initial file to the upload step. The upload step processes it once. Tests cover the playground drop flow, filename prefill, and upload request.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • Agenta-AI/agenta#8038: Adds the file-drop and test-set upload components that this change reuses and extends.
  • Agenta-AI/agenta#8062: Adds the playground test-set menu and load dialog that this change extends with file-drop creation.
Merge Risk: Minimal · previous review 29d55

Users can still select a file to create and load a test set. The non-developer entrypoint looks different, but no material workflow failure is established.

Pre-merge checks: Passed 5

Check name Status Explanation
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title describes the test-set file-drop change. Its evaluator-state claim is not supported by the supplied changes.
Description check Passed The description explains the test-set file-drop flow. Its evaluator-state claims are not supported by the supplied changes.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 7 files.

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between 55c2079 and 29d554d.

Files selected for processing: 7

  • web/mobile/src/features/playground/PlaygroundTestsetDrop.tsx
  • web/mobile/src/features/playground/PlaygroundTestsetMenu.tsx
  • web/mobile/src/features/testsets/create/CreateTestsetDialog.tsx
  • web/mobile/src/features/testsets/create/UploadTestsetStep.tsx
  • web/mobile/tests/unit/playgroundCreateTestset.render.test.tsx
  • web/mobile/tests/unit/uploadTestset.test.tsx
  • web/packages/agenta-playground-ui/src/panels/testsets/LoadTestsetDialog.tsx

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 5 remain after this review.

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Website preview

Preview URL: https://pr-8210-agenta-website-preview.mahmoud-637.workers.dev

Built from 005ac67b7e84fa433f4b1388ce198e9cdfb97055. This comment updates in place on every push.

@github-actions

github-actions Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Railway Preview Environment

Item Value
Status stopped
Commit 005ac67b7e84fa433f4b1388ce198e9cdfb97055
Manual expiry (UTC) Not granted
CI deadline (UTC) Not granted
Workflow https://github.com/Agenta-AI/agenta/actions/runs/42300064847

Dependent tests finished. Post /preview for manual review. Environment absence verified; retained storage requires separate provider accounting.

Post /preview as a new comment to request a one-hour preview. Repeating it while active does not extend the hour.
Preview data is disposable. Expiry is enforced by the next successful cleanup sweep, not an exact timer.
Environment deletion stops its compute. Provider-retained storage and permanent services may still be billed.

mmabrouk and others added 3 commits November 6, 2026 20:25
…keep archived app revisions read-only

A live run with no run-wide metric row showed the newest minute's value as the run value.
The old app shows no value there, so the card now shows none.

An archived app's overview opened the editable revision drawer in beta developer mode, which
can commit a new revision. It now opens the read-only drawer.
…hived-drawer

fix(frontend): hide the newest-minute value on live metric cards and keep archived app revisions read-only
@mmabrouk

mmabrouk commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

🤖 The AI agent says: @coderabbitai review

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

@mmabrouk I’ll review the changes.

Action not completed

Already reviewed the last commit. Use @coderabbitai full review to rerun a review of the entire changeset.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

… test cases and the evaluator draft

Entire-Checkpoint: 01M6S91994Q0MSY279H311R0RK
@mmabrouk mmabrouk changed the title feat(frontend): drop a file to create a test set from the /m playground load dialog feat(frontend): drop a file to create a test set from the /m playground load dialog, and keep the evaluator playground state in its address Nov 6, 2026
Comment on lines +109 to +113
await axios.post(
`${getAgentaApiUrl()}/simple/evaluations/${runId}/process`,
{scenario_ids: scenarioIds, overwrite: false},
{params: {project_id: projectId}},
)
@mmabrouk

mmabrouk commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

🤖 The AI agent says: @coderabbitai review

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

@mmabrouk I’ll request a review of the changes.

Action not completed

Review skipped: 345 files exceed the limit of 300.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

… the real router

Entire-Checkpoint: 01M6SDF7ZKH3WCB68MWQ6PXGX0

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants