Skip to content

V2 fabric#26

Open
abossard wants to merge 3 commits intomainfrom
v2_fabric
Open

V2 fabric#26
abossard wants to merge 3 commits intomainfrom
v2_fabric

Conversation

@abossard
Copy link
Copy Markdown
Owner

Signed-off-by: Andre Bossard anbossar@microsoft.com

Signed-off-by: Andre Bossard <anbossar@microsoft.com>
…ionality

Signed-off-by: Andre Bossard <anbossar@microsoft.com>
Copilot AI review requested due to automatic review settings March 18, 2026 14:44
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Agent Fabric (workbench) UI to be more resilient when rendering/editing schema-driven outputs, and expands Playwright coverage (including a new mocked flow) around editing agents and observing run history.

Changes:

  • Harden SchemaRenderer widgets by normalizing x-ui config and handling more input shapes for tables/charts.
  • Revamp SchemaEditor property UI and normalize schema/widget option parsing + serialization.
  • Add a mocked e2e test flow for “edit prompt changes next response while preserving history”, plus minor e2e stability tweaks; ignore .mcp.json.

Reviewed changes

Copilot reviewed 4 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/e2e/workbench.spec.js Adds serial mode, improves dialog close helper, and introduces a mocked edit-response/history e2e flow.
frontend/src/features/workbench/SchemaRenderer.jsx Adds normalization helpers and makes table/chart widgets more defensive.
frontend/src/features/workbench/SchemaEditor.jsx Refactors property editor layout and normalizes schema/widget option parsing/serialization.
frontend/src/features/workbench/AgentEditDialog.jsx Adds dialog sizing/scroll styling for better usability.
.gitignore Ignores .mcp.json.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +167 to +179
const resolvedUi = normalizeUiConfig(ui)
const firstRow = value.find((row) => row !== undefined && row !== null)
const columns = normalizeStringList(resolvedUi?.columns)
const fallbackColumns = isRecord(firstRow) ? Object.keys(firstRow) : ['value']
const columnsToRender = columns.length > 0 ? columns : fallbackColumns

const renderCellValue = (row, column) => {
const cellValue = isRecord(row) || Array.isArray(row) ? row[column] : column === 'value' ? row : ''
if (typeof cellValue === 'object' && cellValue !== null) {
return JSON.stringify(cellValue)
}
return String(cellValue ?? '')
}
id: String(item[ui?.idKey || 'id'] || item.label || item.name || item),
value: item[ui?.valueKey || 'value'] || item.count || 0,
id: String(item[idKey] || item.label || item.name || item),
value: item[valueKey] || item.count || 0,
Comment on lines +6 to 12
test.describe.configure({ mode: "serial" });

// ---------------------------------------------------------------------------
// Helpers (zero mocks — all live)
// ---------------------------------------------------------------------------

/** Delete all agents whose name contains "e2e-", closing any open dialogs first. */
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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