feat: add deployment-choice modal for GitHub and Slack responders#1379
feat: add deployment-choice modal for GitHub and Slack responders#1379hieptl wants to merge 4 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
❌ Mock-LLM E2E Tests58/60 passed · 1 failed · 1 skipped Commit:
🔍 Failure details (1)❌ automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversationPosted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
❌ Mock-LLM Docker E2E Test Results56/60 passed · 2 failed · 2 skipped Commit:
🔍 Failure details (2)❌ chromium › automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversation❌ chromium › automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversationPosted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
❌ Mock-LLM E2E Tests58/60 passed · 1 failed · 1 skipped Commit:
🔍 Failure details (1)❌ automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversationPosted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
❌ Mock-LLM Docker E2E Test Results56/60 passed · 2 failed · 2 skipped Commit:
🔍 Failure details (2)❌ chromium › automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversation❌ chromium › automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversationPosted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
❌ Mock-LLM E2E Tests58/60 passed · 1 failed · 1 skipped Commit:
🔍 Failure details (1)❌ automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversationPosted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
❌ Mock-LLM Docker E2E Test Results56/60 passed · 2 failed · 2 skipped Commit:
🔍 Failure details (2)❌ chromium › automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversation❌ chromium › automations/mock-llm-preset-automation.spec.ts › preset automation → slash command conversation › automation card sends the correct slash command to a conversationPosted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
✅ Mock-LLM E2E Tests60/60 passed Commit:
Posted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
✅ Mock-LLM Docker E2E Test Results60/60 passed Commit:
Posted by the Mock-LLM E2E workflow · results are deterministic (scripted LLM responses) |
HUMAN:
GitHub and Slack responders poll continuously and only run while the
laptop is awake and Agent Canvas is open. Launching one from the
recommended-automations grid previously jumped straight into local setup
with no hint of that limitation.
Show a "Choose how your responder should run" modal at creation time with
two side-by-side options: poll locally (continue the existing local setup)
or use OpenHands Cloud (open the cloud integrations page so the responder
keeps running when the laptop is closed).
Add a centralized runtime-selection mechanism in
src/utils/responder-deployment.ts: an isResponderAutomation predicate
(pure GitHub/Slack automations only — excludes the multi-tool incident
retrospective drafter) and a resolveResponderDeploymentOption switch over
local / user-cloud / openhands-cloud targets. user-cloud is a documented
future stub. The switch returns a descriptor so side effects stay in the
launcher.
The local choice resumes the existing missing-MCP + launch flow (extracted
into proceedWithLocalLaunch); the cloud choice opens
https://app.all-hands.dev/settings/integrations and launches nothing.
Add 8 RESPONDER_DEPLOYMENT$ i18n keys across all 15 locales. Update the
four launcher tests that select a GitHub responder to step through the
modal, and add coverage for the cloud option, the non-responder bypass,
and the resolver/predicate.
AGENT:
Why
GitHub and Slack responder automations are event-driven and run by cron-polling, which only happens while the laptop is awake and Agent Canvas is running. Launching one from the recommended-automations grid previously went straight into local setup, giving no signal that the responder stops when the laptop is closed. Users who want an always-on bot had no prompt to consider OpenHands Cloud. This adds a deployment-choice modal at creation time so the trade-off is explicit.
Summary
https://app.all-hands.dev/settings/integrations).src/utils/responder-deployment.ts) — anisResponderAutomationpredicate (pure GitHub/Slack only; excludes the multi-tool incident-retrospective drafter) and aresolveResponderDeploymentOptionswitch overlocal/user-cloud(future stub) /openhands-cloud.RESPONDER_DEPLOYMENT$i18n keys across all 15 locales.Issue Number
Resolves #868
How to Test
Manual (in
npm run dev:mock, on a Local backend):https://app.all-hands.dev/settings/integrationsopens in a new tab and no conversation is created.Automated coverage added/updated in
__tests__/components/automations/recommended-automations.test.tsx(modal step + cloud-option + non-responder bypass) and__tests__/utils/responder-deployment.test.ts(predicate scope + resolver URL).Video/Screenshots
app-2012.mov
Type
🐳 Docker images for this PR
• GHCR package: https://github.com/OpenHands/agent-canvas/pkgs/container/agent-canvas
ghcr.io/openhands/agent-canvasghcr.io/openhands/agent-server:1.28.1-pythonopenhands-automation==1.0.0a95f59ccbe17b626b1f501a969263909c6ff7294d3Pull (multi-arch manifest)
# Multi-arch manifest — Docker automatically pulls the correct architecture docker pull ghcr.io/openhands/agent-canvas:sha-5f59ccbRun
All tags pushed for this build
About Multi-Architecture Support
sha-5f59ccb) is a multi-arch manifest supporting both amd64 and arm64sha-5f59ccb-amd64) are also available if needed