Repository navigation
feat(bot-prs): show sweep progress and keep long sweeps alive - #2936
Merged
Merged
Conversation
muster-backend serves POST /call/progress, streaming a tool's notifications/progress as NDJSON before its result; gs-node runs the call on the official MCP SDK (1.32.1), restarting its wait on every notification. The Bot PRs page sweeps through it and shows each team's progress while marge works.
Contributor
JS Dependency Audit0 added · 4 removed · 239 total (-4 vs base) Projects audited
Removed by this PR (4)
Full current vulnerability list (239)
|
QuentinBisson
marked this pull request as ready for review
October 13, 2026 09:54
Published Helm chart
|
| Chart | backstage |
| Version | 2.96.1-r4230f5aat20261013095049h2a34c5e |
| OCI reference | oci://gsoci.azurecr.io/charts/giantswarm/backstage:2.96.1-r4230f5aat20261013095049h2a34c5e |
| Digest | sha256:4325e9e3e3ab040ee9173b800fe687345c0107201db514b4904ed646da5b0812 |
| Registry | public — gsoci.azurecr.io |
| Git catalog | giantswarm-operations-platform-test-catalog (index) |
Pull this chart
helm pull oci://gsoci.azurecr.io/charts/giantswarm/backstage --version 2.96.1-r4230f5aat20261013095049h2a34c5ePosted by architect-orb · build 61236 · commit 2a34c5e · updated in place on every push
teemow
added a commit
that referenced
this pull request
Oct 14, 2026
…a-agent-manager * origin/main: feat(agent-platform)!: Agent Platform shell — the new portal UI (#2899) chore(deps): update ai-sdk packages (#2944) chore(deps): update dependency @lezer/highlight to v1.2.5 (#2943) fix(deps): update dependency @giantswarm/semver-ts to v0.2.4 (#2895) chore: align files according to platform standards (#2942) chore: align files according to platform standards (#2941) fix(bot-prs): report a GitHub rate limit once, with its reset, and hold marge calls until then (#2939) feat(bot-prs): show sweep progress and keep long sweeps alive (#2936) chore: align files according to platform standards (#2935) feat(agent-platform): workspace-manager client over muster, no UI (#2908) fix(gs-node): answer structuredContent where a tool's text is prose (#2901) feat(gs): sort and filter the catalog by Architect Orb Version (#2898) # Conflicts: # .changeset/ui-react-mobile-primitives.md # .claude/skills/agent-platform-ux-coding/SKILL.md # .claude/skills/tables/SKILL.md # app-config.yaml # docs/agent-platform-configuration.md # docs/agent-platform.md # e2e/agentlab/README.md # e2e/agentlab/agent-platform-navigation.spec.ts # e2e/agentlab/agents.spec.ts # e2e/agentlab/fixtures.ts # e2e/agentlab/mcp-servers.spec.ts # e2e/agentlab/mobile-navigation.spec.ts # e2e/agentlab/models.spec.ts # packages/app/src/App.tsx # packages/app/src/modules/agentShell/AgentShellNav/AgentShellNav.test.tsx # packages/app/src/modules/agentShell/AgentShellNav/AgentShellNav.tsx # packages/app/src/modules/agentShell/CustomizePage/CustomizePage.test.tsx # packages/app/src/modules/agentShell/CustomizePage/CustomizePage.tsx # packages/app/src/modules/agentShell/ShellMain/ShellMain.test.tsx # packages/app/src/modules/agentShell/ShellMain/ShellMain.tsx # packages/app/src/modules/agentShell/ShellSignInPage/ShellSignInPage.test.tsx # packages/app/src/modules/agentShell/ShellSignInPage/ShellSignInPage.tsx # packages/app/src/modules/agentShell/ShellSignInPage/index.ts # packages/app/src/modules/agentShell/ShellSignInPage/useProviderSignIn.ts # packages/app/src/modules/agentShell/layoutExtension.test.tsx # packages/app/src/modules/agentShell/layoutExtension.tsx # packages/app/src/modules/app/AppSignInPage/AppSignInPage.test.tsx # packages/app/src/modules/app/AppSignInPage/AppSignInPage.tsx # packages/app/src/utils/telemetry.test.ts # packages/app/src/utils/telemetry.ts # plugins/agent-platform-backend/src/KagentClient.ts # plugins/agent-platform-backend/src/router.ts # plugins/agent-platform/config.d.ts # plugins/agent-platform/src/apis/AgentManagerClient.ts # plugins/agent-platform/src/components/AddSkillPage/AddSkillPage.test.tsx # plugins/agent-platform/src/components/AddSkillPage/AddSkillPage.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentDetailPage.firstPaint.test.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentDetailPage.test.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentDetailPage.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentDetailTabs.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentPlainOverview.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentTechnicalDetails.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentToolsetCard.test.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentToolsetCard.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentUpdateSkillsDialog.test.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentUpdateSkillsDialog.tsx # plugins/agent-platform/src/components/AgentDetailPage/AgentUsageTab.tsx # plugins/agent-platform/src/components/AgentPlatformHome/AgentPlatformHome.test.tsx # plugins/agent-platform/src/components/AgentPlatformHome/AgentPlatformHome.tsx # plugins/agent-platform/src/components/AgentReachLine/AgentReachLine.test.tsx # plugins/agent-platform/src/components/AgentReachLine/AgentReachLine.tsx # plugins/agent-platform/src/components/AgentReachLine/index.ts # plugins/agent-platform/src/components/AgentUsageSection/ByAgentTable.test.tsx # plugins/agent-platform/src/components/AgentsRouter/AgentsRouter.test.tsx # plugins/agent-platform/src/components/CommandPalette/CommandPalette.test.tsx # plugins/agent-platform/src/components/CommandPalette/CommandPalette.tsx # plugins/agent-platform/src/components/CreateAgentAssist/CreateAgentAssist.test.tsx # plugins/agent-platform/src/components/CustomizeAgentsPanel/CustomizeAgentsPanel.test.tsx # plugins/agent-platform/src/components/CustomizeAgentsPanel/CustomizeAgentsPanel.tsx # plugins/agent-platform/src/components/CustomizeDataProvider/CustomizeDataProvider.test.tsx # plugins/agent-platform/src/components/CustomizeModelsPanel/CustomizeModelsPanel.test.tsx # plugins/agent-platform/src/components/CustomizeModelsPanel/CustomizeModelsPanel.tsx # plugins/agent-platform/src/components/CustomizeSkillsPanel/CustomizeSkillsPanel.test.tsx # plugins/agent-platform/src/components/EditAgentPage/EditAgentPage.test.tsx # plugins/agent-platform/src/components/EditModelPage/EditModelPage.test.tsx # plugins/agent-platform/src/components/EditModelPage/EditModelPage.tsx # plugins/agent-platform/src/components/EditSkillPage/EditSkillPage.test.tsx # plugins/agent-platform/src/components/GpuCapacityPage/GpuCapacityPage.test.tsx # plugins/agent-platform/src/components/GpuCapacityPage/GpuCapacityPanel.test.tsx # plugins/agent-platform/src/components/GpuCapacityPage/GpuCapacityPanel.tsx # plugins/agent-platform/src/components/GpuNodePools/GpuNodePoolsPanel.test.tsx # plugins/agent-platform/src/components/GpuNodePools/ModelCachePanel.test.tsx # plugins/agent-platform/src/components/InstallationSelect/InstallationSelect.test.tsx # plugins/agent-platform/src/components/LlmUsage/ActivityHeatmap/ActivityHeatmap.test.tsx # plugins/agent-platform/src/components/LlmUsage/CostKpiTiles/CostKpiTiles.tsx # plugins/agent-platform/src/components/LlmUsage/CostPerDayCard/CostPerDayCard.tsx # plugins/agent-platform/src/components/LlmUsage/LlmByAgentTable/LlmByAgentTable.test.tsx # plugins/agent-platform/src/components/LlmUsage/LlmByModelTable/LlmByModelTable.test.tsx # plugins/agent-platform/src/components/LlmUsage/PricingCoverageNote/PricingCoverageNote.test.tsx # plugins/agent-platform/src/components/LlmUsage/SessionKpiTiles/SessionKpiTiles.tsx # plugins/agent-platform/src/components/LlmUsage/UsageKpiTiles/UsageKpiTiles.tsx # plugins/agent-platform/src/components/LlmUsage/index.ts # plugins/agent-platform/src/components/ModelDetailPage/ModelDetailPage.test.tsx # plugins/agent-platform/src/components/ModelDetailPage/ModelDetailPage.tsx # plugins/agent-platform/src/components/ModelDetailPage/ModelReadView.tsx # plugins/agent-platform/src/components/ModelHostingActions/ModelHostingActions.test.tsx # plugins/agent-platform/src/components/ModelHostingKpis/ModelHostingKpis.tsx # plugins/agent-platform/src/components/ModelsRouter/ModelsRouter.test.tsx # plugins/agent-platform/src/components/ModelsRouter/ModelsRouter.tsx # plugins/agent-platform/src/components/NewAgentReviewPage/EditAgentReview.tsx # plugins/agent-platform/src/components/NewAgentReviewPage/NewAgentReviewPage.test.tsx # plugins/agent-platform/src/components/NewAgentReviewPage/reviewParts.tsx # plugins/agent-platform/src/components/NewAgentToolsPage/NewAgentToolsPage.test.tsx # plugins/agent-platform/src/components/NewAgentToolsPage/ToolsetSummaryBar.test.tsx # plugins/agent-platform/src/components/NewModelPage/NewModelPage.test.tsx # plugins/agent-platform/src/components/NewSessionComposer/NewSessionComposer.test.tsx # plugins/agent-platform/src/components/NewSessionComposer/NewSessionComposer.tsx # plugins/agent-platform/src/components/PendingConfirmationPanel/PendingConfirmationPanel.test.tsx # plugins/agent-platform/src/components/PendingConfirmationPanel/PendingConfirmationPanel.tsx # plugins/agent-platform/src/components/ProfilePage/ProfilePage.test.tsx # plugins/agent-platform/src/components/ProfilePage/ProfilePage.tsx # plugins/agent-platform/src/components/RecentSessions/RecentSessions.test.tsx # plugins/agent-platform/src/components/RecentSessions/RecentSessions.tsx # plugins/agent-platform/src/components/ServingPage/ServedModelsTable.test.tsx # plugins/agent-platform/src/components/ServingPage/ServedModelsTable.tsx # plugins/agent-platform/src/components/ServingPage/ServingPage.test.tsx # plugins/agent-platform/src/components/ServingPage/ServingPage.tsx # plugins/agent-platform/src/components/SessionComposer/SessionComposer.test.tsx # plugins/agent-platform/src/components/SessionComposer/SessionComposer.tsx # plugins/agent-platform/src/components/SessionCostPopover/SessionCostPopover.test.tsx # plugins/agent-platform/src/components/SessionCostPopover/SessionCostPopover.tsx # plugins/agent-platform/src/components/SessionDetailPage/SessionDetailPage.newSession.test.tsx # plugins/agent-platform/src/components/SessionDetailPage/SessionDetailPage.test.tsx # plugins/agent-platform/src/components/SessionDetailPage/SessionDetailPage.tsx # plugins/agent-platform/src/components/SessionsIndexPage/SessionsIndexPage.test.tsx # plugins/agent-platform/src/components/SessionsIndexPage/SessionsIndexPage.tsx # plugins/agent-platform/src/components/SessionsMigrationNotice/SessionsMigrationNotice.tsx # plugins/agent-platform/src/components/SessionsTable/ShellSessionsTable.test.tsx # plugins/agent-platform/src/components/ShellCustomizeRedirect/ShellCustomizeRedirect.tsx # plugins/agent-platform/src/components/SkillDetailPage/SkillDetailPage.test.tsx # plugins/agent-platform/src/components/SkillFiles/SkillFiles.test.tsx # plugins/agent-platform/src/components/SlackPromoBanner/SlackPromoBanner.test.tsx # plugins/agent-platform/src/components/StartNewSession/StartNewSession.tsx # plugins/agent-platform/src/components/ToolsetResolutionList/ToolsetResolutionList.tsx # plugins/agent-platform/src/components/UnreachableInstallationsAlert/UnreachableInstallationsAlert.test.tsx # plugins/agent-platform/src/components/UnreachableInstallationsAlert/UnreachableInstallationsAlert.tsx # plugins/agent-platform/src/components/UsageCostPage/UsageCostPage.tsx # plugins/agent-platform/src/components/UsageRouter/UsageRouter.test.tsx # plugins/agent-platform/src/hooks/useCreateSession.test.tsx # plugins/agent-platform/src/hooks/useCreateSession.ts # plugins/agent-platform/src/hooks/useFavoriteAgents.test.tsx # plugins/agent-platform/src/hooks/useFavoriteAgents.ts # plugins/agent-platform/src/hooks/useLlmUsage.test.ts # plugins/agent-platform/src/index.ts # plugins/agent-platform/src/lib/contextWindows.test.ts # plugins/agent-platform/src/lib/contextWindows.ts # plugins/agent-platform/src/lib/customize.test.ts # plugins/agent-platform/src/lib/customize.ts # plugins/agent-platform/src/lib/kagentTimeline.test.ts # plugins/agent-platform/src/lib/llmUsageQueries.test.ts # plugins/agent-platform/src/lib/llmUsageQueries.ts # plugins/agent-platform/src/lib/sendKey.test.ts # plugins/agent-platform/src/lib/sendKey.ts # plugins/agent-platform/src/routes.ts # plugins/gs-backend/src/agentSkills/createSkillPullRequest.test.ts # plugins/gs-backend/src/agentSkills/createSkillPullRequest.ts # plugins/gs-backend/src/signedInConfig.ts # plugins/muster/src/components/ConnectorPage/ConnectorPage.test.tsx # plugins/muster/src/components/ConnectorPage/ConnectorPage.tsx # plugins/muster/src/components/ConnectorPage/ConnectorToolsTab/ConnectorToolsTab.tsx # plugins/muster/src/components/CustomizeConnectorsPanel/CustomizeConnectorsPanel.test.tsx # plugins/muster/src/components/CustomizeConnectorsPanel/CustomizeConnectorsPanel.tsx # plugins/muster/src/components/CustomizeConnectorsPanel/connectorRows.ts # plugins/muster/src/components/CustomizeMusterProvider/CustomizeMusterProvider.test.tsx # plugins/muster/src/components/CustomizeMusterProvider/CustomizeMusterProvider.tsx # plugins/muster/src/components/CustomizeWorkflowsPanel/CustomizeWorkflowsPanel.test.tsx # plugins/muster/src/components/McpServersPage/serverCapabilities.test.tsx # plugins/muster/src/components/McpServersPage/serverDetail.tsx # plugins/muster/src/components/McpUsageSection/McpUsageSection.test.tsx # plugins/muster/src/components/NewConnectorWizard/ConnectorWizardFrame.tsx # plugins/muster/src/components/NewConnectorWizard/NewConnectorTestPage.test.tsx # plugins/muster/src/components/NewConnectorWizard/NewConnectorWizard.test.tsx # plugins/muster/src/components/ToolPage/ToolPage.test.tsx # plugins/muster/src/components/ToolPage/ToolPage.tsx # plugins/muster/src/components/WorkflowPage/WorkflowPage.test.tsx # plugins/muster/src/components/WorkflowPage/contentAreaLayer.ts # plugins/muster/src/components/shared/ServerSignIn.tsx # plugins/muster/src/components/shared/index.ts # plugins/ui-react/src/components/DisabledAction/DisabledAction.test.tsx # plugins/ui-react/src/components/InfoHint/InfoHint.test.tsx # plugins/ui-react/src/components/RouteTabs/RouteTabs.test.tsx # plugins/ui-react/src/components/ShellDocumentTitle/ShellDocumentTitle.test.tsx # plugins/ui-react/src/components/ShellDocumentTitle/ShellDocumentTitle.tsx # plugins/ui-react/src/components/ShellDocumentTitle/index.ts # plugins/ui-react/src/components/ShellPage/ShellPage.test.tsx # plugins/ui-react/src/components/ShellPage/ShellPage.tsx # plugins/ui-react/src/components/StackedRowList/StackedRowList.test.tsx # plugins/ui-react/src/components/StackedRowList/StackedRowList.tsx # plugins/ui-react/src/components/WizardFrame/WizardFrame.test.tsx # plugins/ui-react/src/components/WizardFrame/WizardFrame.tsx # plugins/ui-react/src/components/index.ts # plugins/ui-react/src/hooks/usePhoneColumns/usePhoneColumns.test.tsx # plugins/ui-react/src/utils/breakpoints.test.tsx # plugins/ui-react/src/utils/index.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rationale
On the Bot PRs page, Classify now and Approve and merge on a large queue (honeybadger, 290 PRs) outlast the muster server's timeout for marge (120 s on gazelle) and fail, although marge is still working.
Changes
MusterMcpClient.callToolWithProgressruns a tool call on the official MCP SDK (@modelcontextprotocol/sdk1.32.1, deduped with the copy@backstage/plugin-mcp-actions-backenduses), sends a progressToken and restarts its wait on everynotifications/progress.@ai-sdk/mcpsupports neither, so only calls that stream progress move to the SDK for now.POST /call/progressstreams the progress as NDJSON, then oneresultorerrorline; a caller that disconnects cancels the call.MusterApi.callToolWithProgress, andMusterAnswerCutErrorfor an answer that ends before its result.Effect on end users
Bot PRs: Classify now, Approve and merge and Sweep show how far marge has got for each team, and no longer fail on large queues while marge is still working.
Background and context
giantswarm/roadmap#4394. Needs giantswarm/muster#1487 (progress restarts the per-server timeout) and giantswarm/marge#242 (marge reports progress) deployed; without them the page behaves as today.
Ask to reviewers
Two MCP client stacks in gs-node for now; moving the rest of
MusterMcpClientto the official SDK is a follow-up.