diff --git a/pyproject.toml b/pyproject.toml index a8190da..5aebb7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "scrapybara" [tool.poetry] name = "scrapybara" -version = "2.3.2" +version = "2.3.3" description = "" readme = "README.md" authors = [] diff --git a/src/scrapybara/client.py b/src/scrapybara/client.py index 5546ce3..f5aa4ea 100644 --- a/src/scrapybara/client.py +++ b/src/scrapybara/client.py @@ -1717,7 +1717,8 @@ def act( ([TextPart(text=step.text)] if step.text else []) + (step.reasoning_parts if step.reasoning_parts else []) + (step.tool_calls or []) - ) + ), + response_id=step.response_id ) result_messages.append(assistant_msg) if step.tool_results: @@ -1874,6 +1875,7 @@ def act_stream( tool_calls=tool_calls if tool_calls else None, finish_reason=act_response.finish_reason, usage=act_response.usage, + response_id=act_response.message.response_id if act_response.message.response_id else None ) # Check if there are tool calls @@ -2135,7 +2137,8 @@ async def act( ([TextPart(text=step.text)] if step.text else []) + (step.reasoning_parts if step.reasoning_parts else []) + (step.tool_calls or []) - ) + ), + response_id=step.response_id ) result_messages.append(assistant_msg) if step.tool_results: @@ -2292,6 +2295,7 @@ async def act_stream( tool_calls=tool_calls if tool_calls else None, finish_reason=act_response.finish_reason, usage=act_response.usage, + response_id=act_response.message.response_id if act_response.message.response_id else None ) # Check if there are tool calls diff --git a/src/scrapybara/core/client_wrapper.py b/src/scrapybara/core/client_wrapper.py index de6a855..dc8f5cd 100644 --- a/src/scrapybara/core/client_wrapper.py +++ b/src/scrapybara/core/client_wrapper.py @@ -16,7 +16,7 @@ def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { "X-Fern-Language": "Python", "X-Fern-SDK-Name": "scrapybara", - "X-Fern-SDK-Version": "2.3.2", + "X-Fern-SDK-Version": "2.3.3", } headers["x-api-key"] = self.api_key return headers diff --git a/src/scrapybara/tools/__init__.py b/src/scrapybara/tools/__init__.py index 0bd8744..5d8d605 100644 --- a/src/scrapybara/tools/__init__.py +++ b/src/scrapybara/tools/__init__.py @@ -1,4 +1,4 @@ -from typing import Any, List, Optional, Tuple +from typing import Any, List, Optional from pydantic import BaseModel, Field from ..types import Action, Button, ClickMouseActionClickType, Tool @@ -121,7 +121,7 @@ class EditToolParameters(BaseModel): file_text: Optional[str] = Field( None, description="File content for create command" ) - view_range: Optional[Tuple[int, int]] = Field( + view_range: Optional[List[int]] = Field( None, description="Line range for view command" ) old_str: Optional[str] = Field( diff --git a/src/scrapybara/types/act.py b/src/scrapybara/types/act.py index acad2f5..6e2bc1c 100644 --- a/src/scrapybara/types/act.py +++ b/src/scrapybara/types/act.py @@ -33,6 +33,7 @@ class ToolResultPart(BaseModel): class ReasoningPart(BaseModel): type: Literal["reasoning"] = "reasoning" + id: Optional[str] = None reasoning: str signature: Optional[str] = None instructions: Optional[str] = None @@ -45,6 +46,7 @@ class UserMessage(BaseModel): class AssistantMessage(BaseModel): role: Literal["assistant"] = "assistant" content: List[Union[TextPart, ToolCallPart, ReasoningPart]] + response_id: Optional[str] = None class ToolMessage(BaseModel): @@ -88,6 +90,7 @@ class SingleActResponse(BaseModel): # Step definition class Step(BaseModel): text: str + response_id: Optional[str] = None reasoning_parts: Optional[List[ReasoningPart]] = None tool_calls: Optional[List[ToolCallPart]] = None tool_results: Optional[List[ToolResultPart]] = None