mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-03-22 13:47:19 +08:00
fix: wire suggested task prompts for V1 (#12787)
Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
@@ -11,7 +11,7 @@ from openhands.app_server.event_callback.event_callback_models import (
|
||||
EventCallbackProcessor,
|
||||
)
|
||||
from openhands.app_server.sandbox.sandbox_models import SandboxStatus
|
||||
from openhands.integrations.service_types import ProviderType
|
||||
from openhands.integrations.service_types import ProviderType, SuggestedTask
|
||||
from openhands.sdk.conversation.state import ConversationExecutionStatus
|
||||
from openhands.sdk.llm import MetricsSnapshot
|
||||
from openhands.sdk.plugin import PluginSource
|
||||
@@ -150,6 +150,7 @@ class AppConversationStartRequest(OpenHandsModel):
|
||||
selected_repository: str | None = None
|
||||
selected_branch: str | None = None
|
||||
git_provider: ProviderType | None = None
|
||||
suggested_task: SuggestedTask | None = None
|
||||
title: str | None = None
|
||||
trigger: ConversationTrigger | None = None
|
||||
pr_number: list[int] = Field(default_factory=list)
|
||||
|
||||
@@ -18,6 +18,7 @@ from openhands.agent_server.models import (
|
||||
ConversationInfo,
|
||||
SendMessageRequest,
|
||||
StartConversationRequest,
|
||||
TextContent,
|
||||
)
|
||||
from openhands.app_server.app_conversation.app_conversation_info_service import (
|
||||
AppConversationInfoService,
|
||||
@@ -78,6 +79,7 @@ from openhands.app_server.utils.llm_metadata import (
|
||||
)
|
||||
from openhands.experiments.experiment_manager import ExperimentManagerImpl
|
||||
from openhands.integrations.provider import ProviderType
|
||||
from openhands.integrations.service_types import SuggestedTask
|
||||
from openhands.sdk import Agent, AgentContext, LocalWorkspace
|
||||
from openhands.sdk.llm import LLM
|
||||
from openhands.sdk.plugin import PluginSource
|
||||
@@ -85,6 +87,7 @@ from openhands.sdk.secret import LookupSecret, SecretValue, StaticSecret
|
||||
from openhands.sdk.utils.paging import page_iterator
|
||||
from openhands.sdk.workspace.remote.async_remote_workspace import AsyncRemoteWorkspace
|
||||
from openhands.server.types import AppMode
|
||||
from openhands.storage.data_models.conversation_metadata import ConversationTrigger
|
||||
from openhands.tools.preset.default import (
|
||||
get_default_tools,
|
||||
)
|
||||
@@ -209,6 +212,8 @@ class LiveStatusAppConversationService(AppConversationServiceBase):
|
||||
)
|
||||
self._inherit_configuration_from_parent(request, parent_info)
|
||||
|
||||
self._apply_suggested_task(request)
|
||||
|
||||
task = AppConversationStartTask(
|
||||
created_by_user_id=user_id,
|
||||
request=request,
|
||||
@@ -569,6 +574,33 @@ class LiveStatusAppConversationService(AppConversationServiceBase):
|
||||
if not request.llm_model and parent_info.llm_model:
|
||||
request.llm_model = parent_info.llm_model
|
||||
|
||||
def _apply_suggested_task(self, request: AppConversationStartRequest) -> None:
|
||||
"""Apply suggested task defaults to the start request."""
|
||||
suggested_task: SuggestedTask | None = request.suggested_task
|
||||
if not suggested_task:
|
||||
return
|
||||
|
||||
if request.initial_message is not None:
|
||||
raise ValueError(
|
||||
'initial_message cannot be provided when suggested_task is present'
|
||||
)
|
||||
|
||||
prompt = suggested_task.get_prompt_for_task()
|
||||
if not prompt:
|
||||
raise ValueError(
|
||||
f'Suggested task returned empty prompt for task type {suggested_task.task_type}'
|
||||
)
|
||||
request.initial_message = SendMessageRequest(
|
||||
role='user',
|
||||
content=[TextContent(text=prompt)],
|
||||
)
|
||||
request.trigger = ConversationTrigger.SUGGESTED_TASK
|
||||
|
||||
if not request.selected_repository:
|
||||
request.selected_repository = suggested_task.repo
|
||||
if not request.git_provider:
|
||||
request.git_provider = suggested_task.git_provider
|
||||
|
||||
def _compute_plan_path(
|
||||
self,
|
||||
working_dir: str,
|
||||
|
||||
Reference in New Issue
Block a user