Add "Setting up workspace..." status message during repo cloning and setup (#7424)

Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
Robert Brennan
2025-03-22 15:52:59 -07:00
committed by GitHub
parent 01e0e29a9f
commit 0a0ed3f606
4 changed files with 35 additions and 7 deletions

View File

@@ -222,6 +222,7 @@ export enum I18nKey {
STATUS$STARTING_CONTAINER = "STATUS$STARTING_CONTAINER",
STATUS$PREPARING_CONTAINER = "STATUS$PREPARING_CONTAINER",
STATUS$CONTAINER_STARTED = "STATUS$CONTAINER_STARTED",
STATUS$SETTING_UP_WORKSPACE = "STATUS$SETTING_UP_WORKSPACE",
ACCOUNT_SETTINGS_MODAL$DISCONNECT = "ACCOUNT_SETTINGS_MODAL$DISCONNECT",
ACCOUNT_SETTINGS_MODAL$SAVE = "ACCOUNT_SETTINGS_MODAL$SAVE",
ACCOUNT_SETTINGS_MODAL$CLOSE = "ACCOUNT_SETTINGS_MODAL$CLOSE",

View File

@@ -3308,6 +3308,21 @@
"tr": "Konteyner başlatıldı.",
"ja": "コンテナが開始されました"
},
"STATUS$SETTING_UP_WORKSPACE": {
"en": "Setting up workspace...",
"zh-CN": "正在设置工作区...",
"zh-TW": "正在設置工作區...",
"de": "Arbeitsbereich wird eingerichtet...",
"ko-KR": "작업 공간을 설정하는 중...",
"no": "Setter opp arbeidsområde...",
"it": "Configurazione dell'area di lavoro...",
"pt": "Configurando espaço de trabalho...",
"es": "Configurando espacio de trabajo...",
"ar": "جاري إعداد مساحة العمل...",
"fr": "Configuration de l'espace de travail...",
"tr": "Çalışma alanı ayarlanıyor...",
"ja": "ワークスペースを設定中..."
},
"ACCOUNT_SETTINGS_MODAL$DISCONNECT": {
"en": "Disconnect",
"es": "Desconectar",

View File

@@ -69,6 +69,7 @@ STATUS_MESSAGES = {
'STATUS$PREPARING_CONTAINER': 'Preparing container...',
'STATUS$CONTAINER_STARTED': 'Container started.',
'STATUS$WAITING_FOR_CLIENT': 'Waiting for client...',
'STATUS$SETTING_UP_WORKSPACE': 'Setting up workspace...',
}
@@ -335,6 +336,11 @@ class Runtime(FileEditRuntimeMixin):
'github_token and selected_repository must be provided to clone a repository'
)
if self.status_callback:
self.status_callback(
'info', 'STATUS$SETTING_UP_WORKSPACE', 'Setting up workspace...'
)
github_token: SecretStr = git_provider_tokens[ProviderType.GITHUB].token
url = f'https://{github_token.get_secret_value()}@github.com/{selected_repository}.git'
dir_name = selected_repository.split('/')[-1]
@@ -369,6 +375,11 @@ class Runtime(FileEditRuntimeMixin):
if isinstance(read_obs, ErrorObservation):
return
if self.status_callback:
self.status_callback(
'info', 'STATUS$SETTING_UP_WORKSPACE', 'Setting up workspace...'
)
action = CmdRunAction(f'chmod +x {setup_script} && source {setup_script}')
obs = self.run_action(action)
if isinstance(obs, CmdOutputObservation) and obs.exit_code != 0:

View File

@@ -139,9 +139,7 @@ class AgentSession:
if git_provider_tokens:
provider_handler = ProviderHandler(provider_tokens=git_provider_tokens)
await provider_handler.set_event_stream_secrets(
self.event_stream
)
await provider_handler.set_event_stream_secrets(self.event_stream)
if not self._closed:
if initial_message:
@@ -243,12 +241,15 @@ class AgentSession:
headless_mode=False,
attach_to_existing=False,
git_provider_tokens=git_provider_tokens,
user_id=self.user_id
user_id=self.user_id,
)
else:
provider_handler = ProviderHandler(provider_tokens=git_provider_tokens or cast(PROVIDER_TOKEN_TYPE, MappingProxyType({})))
provider_handler = ProviderHandler(
provider_tokens=git_provider_tokens
or cast(PROVIDER_TOKEN_TYPE, MappingProxyType({}))
)
env_vars = await provider_handler.get_env_vars(expose_secrets=True)
self.runtime = runtime_cls(
config=config,
event_stream=self.event_stream,
@@ -257,7 +258,7 @@ class AgentSession:
status_callback=self._status_callback,
headless_mode=False,
attach_to_existing=False,
env_vars=env_vars
env_vars=env_vars,
)
# FIXME: this sleep is a terrible hack.