hyperbrowser 0.68.0__tar.gz → 0.69.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hyperbrowser might be problematic. Click here for more details.

Files changed (60) hide show
  1. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/PKG-INFO +1 -1
  2. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/__init__.py +46 -0
  3. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/agents/browser_use.py +83 -2
  4. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/agents/claude_computer_use.py +15 -0
  5. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/agents/cua.py +13 -0
  6. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/agents/gemini_computer_use.py +15 -0
  7. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/agents/hyper_agent.py +11 -0
  8. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/consts.py +2 -0
  9. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/extract.py +11 -0
  10. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/scrape.py +12 -0
  11. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/pyproject.toml +1 -1
  12. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/LICENSE +0 -0
  13. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/README.md +0 -0
  14. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/__init__.py +0 -0
  15. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/async_client.py +0 -0
  16. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/base.py +0 -0
  17. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/agents/__init__.py +0 -0
  18. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/agents/browser_use.py +0 -0
  19. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/agents/claude_computer_use.py +0 -0
  20. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/agents/cua.py +0 -0
  21. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/agents/gemini_computer_use.py +0 -0
  22. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/agents/hyper_agent.py +0 -0
  23. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/computer_action.py +0 -0
  24. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/crawl.py +0 -0
  25. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/extension.py +0 -0
  26. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/extract.py +0 -0
  27. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/profile.py +0 -0
  28. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/scrape.py +0 -0
  29. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/session.py +0 -0
  30. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/async_manager/team.py +0 -0
  31. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/agents/__init__.py +0 -0
  32. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/agents/browser_use.py +0 -0
  33. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/agents/claude_computer_use.py +0 -0
  34. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/agents/cua.py +0 -0
  35. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/agents/gemini_computer_use.py +0 -0
  36. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/agents/hyper_agent.py +0 -0
  37. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/computer_action.py +0 -0
  38. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/crawl.py +0 -0
  39. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/extension.py +0 -0
  40. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/extract.py +0 -0
  41. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/profile.py +0 -0
  42. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/scrape.py +0 -0
  43. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/session.py +0 -0
  44. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/managers/sync_manager/team.py +0 -0
  45. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/client/sync.py +0 -0
  46. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/config.py +0 -0
  47. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/exceptions.py +0 -0
  48. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/computer_action.py +0 -0
  49. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/crawl.py +0 -0
  50. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/extension.py +0 -0
  51. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/profile.py +0 -0
  52. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/session.py +0 -0
  53. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/models/team.py +0 -0
  54. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/tools/__init__.py +0 -0
  55. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/tools/anthropic.py +0 -0
  56. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/tools/openai.py +0 -0
  57. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/tools/schema.py +0 -0
  58. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/transport/async_transport.py +0 -0
  59. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/transport/base.py +0 -0
  60. {hyperbrowser-0.68.0 → hyperbrowser-0.69.0}/hyperbrowser/transport/sync.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperbrowser
3
- Version: 0.68.0
3
+ Version: 0.69.0
4
4
  Summary: Python SDK for hyperbrowser
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -5,6 +5,26 @@ from .agents.browser_use import (
5
5
  StartBrowserUseTaskParams,
6
6
  StartBrowserUseTaskResponse,
7
7
  BrowserUseApiKeys,
8
+ BrowserUseAgentBrain,
9
+ BrowserUseAgentOutput,
10
+ BrowserUseActionResult,
11
+ BrowserUseStepMetadata,
12
+ BrowserUseTabInfo,
13
+ BrowserUseCoordinates,
14
+ BrowserUseCoordinateSet,
15
+ BrowserUseViewportInfo,
16
+ BrowserUseDOMHistoryElement,
17
+ BrowserUseBrowserStateHistory,
18
+ BrowserUseAgentHistory,
19
+ BrowserUseAgentOutputV0710,
20
+ BrowserUseActionResultV0710,
21
+ BrowserUseBrowserStateHistoryV0710,
22
+ BrowserUseStepMetadataV0710,
23
+ BrowserUseAgentHistoryV0710,
24
+ BrowserUseAgentHistoryLatest,
25
+ BrowserUseTaskMetadata,
26
+ BrowserUseStep,
27
+ cast_steps_for_version,
8
28
  )
9
29
  from .agents.claude_computer_use import (
10
30
  ClaudeComputerUseTaskStatus,
@@ -64,6 +84,7 @@ from .consts import (
64
84
  SessionEventLogType,
65
85
  State,
66
86
  SessionRegion,
87
+ BrowserUseVersion,
67
88
  )
68
89
  from .crawl import (
69
90
  CrawledPage,
@@ -82,6 +103,7 @@ from .extract import (
82
103
  ExtractJobStatusResponse,
83
104
  StartExtractJobParams,
84
105
  StartExtractJobResponse,
106
+ ExtractJobMetadata,
85
107
  )
86
108
  from .profile import (
87
109
  CreateProfileParams,
@@ -105,6 +127,7 @@ from .scrape import (
105
127
  StartBatchScrapeJobResponse,
106
128
  StartScrapeJobParams,
107
129
  StartScrapeJobResponse,
130
+ StorageStateOptions,
108
131
  )
109
132
  from .computer_action import (
110
133
  ClickActionParams,
@@ -169,6 +192,7 @@ __all__ = [
169
192
  "SessionEventLogType",
170
193
  "State",
171
194
  "SessionRegion",
195
+ "BrowserUseVersion",
172
196
  # agents
173
197
  "HyperAgentTaskStatus",
174
198
  "HyperAgentActionOutput",
@@ -185,6 +209,26 @@ __all__ = [
185
209
  "BrowserUseTaskStatusResponse",
186
210
  "StartBrowserUseTaskParams",
187
211
  "StartBrowserUseTaskResponse",
212
+ "BrowserUseAgentBrain",
213
+ "BrowserUseAgentOutput",
214
+ "BrowserUseActionResult",
215
+ "BrowserUseStepMetadata",
216
+ "BrowserUseTabInfo",
217
+ "BrowserUseCoordinates",
218
+ "BrowserUseCoordinateSet",
219
+ "BrowserUseViewportInfo",
220
+ "BrowserUseDOMHistoryElement",
221
+ "BrowserUseBrowserStateHistory",
222
+ "BrowserUseAgentHistory",
223
+ "BrowserUseAgentOutputV0710",
224
+ "BrowserUseActionResultV0710",
225
+ "BrowserUseBrowserStateHistoryV0710",
226
+ "BrowserUseStepMetadataV0710",
227
+ "BrowserUseAgentHistoryV0710",
228
+ "BrowserUseAgentHistoryLatest",
229
+ "BrowserUseStep",
230
+ "BrowserUseTaskMetadata",
231
+ "cast_steps_for_version",
188
232
  "ClaudeComputerUseTaskStatus",
189
233
  "ClaudeComputerUseStepResponse",
190
234
  "ClaudeComputerUseTaskData",
@@ -228,6 +272,7 @@ __all__ = [
228
272
  "ExtractJobStatusResponse",
229
273
  "StartExtractJobParams",
230
274
  "StartExtractJobResponse",
275
+ "ExtractJobMetadata",
231
276
  # profile
232
277
  "CreateProfileParams",
233
278
  "CreateProfileResponse",
@@ -249,6 +294,7 @@ __all__ = [
249
294
  "StartBatchScrapeJobResponse",
250
295
  "StartScrapeJobParams",
251
296
  "StartScrapeJobResponse",
297
+ "StorageStateOptions",
252
298
  # session
253
299
  "BasicResponse",
254
300
  "CreateSessionParams",
@@ -2,7 +2,7 @@ from typing import Any, Dict, List, Literal, Optional, Type, Union
2
2
 
3
3
  from pydantic import BaseModel, ConfigDict, Field
4
4
 
5
- from ..consts import BrowserUseLlm
5
+ from ..consts import BrowserUseLlm, BrowserUseVersion
6
6
  from ..session import CreateSessionParams
7
7
 
8
8
  BrowserUseTaskStatus = Literal["pending", "running", "completed", "failed", "stopped"]
@@ -32,6 +32,9 @@ class StartBrowserUseTaskParams(BaseModel):
32
32
  )
33
33
 
34
34
  task: str
35
+ version: Optional[BrowserUseVersion] = Field(
36
+ default=None, serialization_alias="version"
37
+ )
35
38
  llm: Optional[BrowserUseLlm] = Field(default=None, serialization_alias="llm")
36
39
  session_id: Optional[str] = Field(default=None, serialization_alias="sessionId")
37
40
  validate_output: Optional[bool] = Field(
@@ -193,15 +196,79 @@ class BrowserUseAgentHistory(BaseModel):
193
196
  metadata: Optional[BrowserUseStepMetadata] = None
194
197
 
195
198
 
199
+ # ===== 0.7.10-specific response models =====
200
+
201
+
202
+ class BrowserUseAgentOutputV0710(BaseModel):
203
+ thinking: Optional[str] = None
204
+ evaluation_previous_goal: Optional[str] = None
205
+ memory: Optional[str] = None
206
+ next_goal: Optional[str] = None
207
+ action: list[dict]
208
+
209
+
210
+ class BrowserUseActionResultV0710(BaseModel):
211
+ is_done: Optional[bool] = False
212
+ success: Optional[bool] = None
213
+ error: Optional[str] = None
214
+ metadata: Optional[dict] = None
215
+ attachments: Optional[list[str]] = None
216
+ long_term_memory: Optional[str] = None
217
+ extracted_content: Optional[str] = None
218
+ include_extracted_content_only_once: Optional[bool] = False
219
+ include_in_memory: bool = False
220
+
221
+
222
+ class BrowserUseBrowserStateHistoryV0710(BaseModel):
223
+ url: str
224
+ title: str
225
+ tabs: list[dict]
226
+ interacted_element: Union[list[Union[dict, None]], list[None]]
227
+
228
+
229
+ class BrowserUseStepMetadataV0710(BaseModel):
230
+ step_start_time: float
231
+ step_end_time: float
232
+ step_number: int
233
+
234
+
235
+ class BrowserUseAgentHistoryV0710(BaseModel):
236
+ model_output: Union[BrowserUseAgentOutputV0710, None]
237
+ result: list[BrowserUseActionResultV0710]
238
+ state: BrowserUseBrowserStateHistoryV0710
239
+ metadata: Optional[BrowserUseStepMetadataV0710] = None
240
+
241
+
242
+ # ===== latest response models =====
243
+
244
+ BrowserUseAgentHistoryLatest = Dict[str, Any]
245
+
246
+ BrowserUseStep = Union[
247
+ BrowserUseAgentHistory, BrowserUseAgentHistoryV0710, BrowserUseAgentHistoryLatest
248
+ ]
249
+
250
+
196
251
  class BrowserUseTaskData(BaseModel):
197
252
  model_config = ConfigDict(
198
253
  populate_by_alias=True,
199
254
  )
200
255
 
201
- steps: list[BrowserUseAgentHistory]
256
+ steps: list[BrowserUseStep]
202
257
  final_result: Optional[str] = Field(default=None, alias="finalResult")
203
258
 
204
259
 
260
+ class BrowserUseTaskMetadata(BaseModel):
261
+ model_config = ConfigDict(
262
+ populate_by_alias=True,
263
+ )
264
+
265
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
266
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
267
+ num_task_steps_completed: Optional[int] = Field(
268
+ default=None, alias="numTaskStepsCompleted"
269
+ )
270
+
271
+
205
272
  class BrowserUseTaskResponse(BaseModel):
206
273
  """
207
274
  Response from a browser use task.
@@ -213,6 +280,20 @@ class BrowserUseTaskResponse(BaseModel):
213
280
 
214
281
  job_id: str = Field(alias="jobId")
215
282
  status: BrowserUseTaskStatus
283
+ metadata: Optional[BrowserUseTaskMetadata] = Field(default=None, alias="metadata")
216
284
  data: Optional[BrowserUseTaskData] = Field(default=None, alias="data")
217
285
  error: Optional[str] = Field(default=None, alias="error")
218
286
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
287
+
288
+
289
+ def cast_steps_for_version(
290
+ steps: List[BrowserUseStep], version: BrowserUseVersion
291
+ ) -> List[BrowserUseStep]:
292
+ if version == "0.1.40":
293
+ return [BrowserUseAgentHistory.model_validate(s) for s in steps]
294
+ elif version == "0.7.10":
295
+ return [BrowserUseAgentHistoryV0710.model_validate(s) for s in steps]
296
+ elif version == "latest":
297
+ return steps
298
+ else:
299
+ raise ValueError(f"Invalid version: {version}")
@@ -104,6 +104,18 @@ class ClaudeComputerUseTaskData(BaseModel):
104
104
  final_result: Optional[str] = Field(default=None, alias="finalResult")
105
105
 
106
106
 
107
+ class ClaudeComputerUseTaskMetadata(BaseModel):
108
+ model_config = ConfigDict(
109
+ populate_by_alias=True,
110
+ )
111
+
112
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
113
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
114
+ num_task_steps_completed: Optional[int] = Field(
115
+ default=None, alias="numTaskStepsCompleted"
116
+ )
117
+
118
+
107
119
  class ClaudeComputerUseTaskResponse(BaseModel):
108
120
  """
109
121
  Response from a Claude Computer Use task.
@@ -115,6 +127,9 @@ class ClaudeComputerUseTaskResponse(BaseModel):
115
127
 
116
128
  job_id: str = Field(alias="jobId")
117
129
  status: ClaudeComputerUseTaskStatus
130
+ metadata: Optional[ClaudeComputerUseTaskMetadata] = Field(
131
+ default=None, alias="metadata"
132
+ )
118
133
  data: Optional[ClaudeComputerUseTaskData] = Field(default=None, alias="data")
119
134
  error: Optional[str] = Field(default=None, alias="error")
120
135
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -134,6 +134,18 @@ class CuaTaskData(BaseModel):
134
134
  final_result: Optional[str] = Field(default=None, alias="finalResult")
135
135
 
136
136
 
137
+ class CuaTaskMetadata(BaseModel):
138
+ model_config = ConfigDict(
139
+ populate_by_alias=True,
140
+ )
141
+
142
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
143
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
144
+ num_task_steps_completed: Optional[int] = Field(
145
+ default=None, alias="numTaskStepsCompleted"
146
+ )
147
+
148
+
137
149
  class CuaTaskResponse(BaseModel):
138
150
  """
139
151
  Response from a CUA task.
@@ -145,6 +157,7 @@ class CuaTaskResponse(BaseModel):
145
157
 
146
158
  job_id: str = Field(alias="jobId")
147
159
  status: CuaTaskStatus
160
+ metadata: Optional[CuaTaskMetadata] = Field(default=None, alias="metadata")
148
161
  data: Optional[CuaTaskData] = Field(default=None, alias="data")
149
162
  error: Optional[str] = Field(default=None, alias="error")
150
163
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -104,6 +104,18 @@ class GeminiComputerUseTaskData(BaseModel):
104
104
  final_result: Optional[str] = Field(default=None, alias="finalResult")
105
105
 
106
106
 
107
+ class GeminiComputerUseTaskMetadata(BaseModel):
108
+ model_config = ConfigDict(
109
+ populate_by_alias=True,
110
+ )
111
+
112
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
113
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
114
+ num_task_steps_completed: Optional[int] = Field(
115
+ default=None, alias="numTaskStepsCompleted"
116
+ )
117
+
118
+
107
119
  class GeminiComputerUseTaskResponse(BaseModel):
108
120
  """
109
121
  Response from a Gemini Computer Use task.
@@ -115,6 +127,9 @@ class GeminiComputerUseTaskResponse(BaseModel):
115
127
 
116
128
  job_id: str = Field(alias="jobId")
117
129
  status: GeminiComputerUseTaskStatus
130
+ metadata: Optional[GeminiComputerUseTaskMetadata] = Field(
131
+ default=None, alias="metadata"
132
+ )
118
133
  data: Optional[GeminiComputerUseTaskData] = Field(default=None, alias="data")
119
134
  error: Optional[str] = Field(default=None, alias="error")
120
135
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -126,6 +126,16 @@ class HyperAgentTaskData(BaseModel):
126
126
  final_result: Optional[str] = Field(default=None, alias="finalResult")
127
127
 
128
128
 
129
+ class HyperAgentTaskMetadata(BaseModel):
130
+ model_config = ConfigDict(
131
+ populate_by_alias=True,
132
+ )
133
+
134
+ num_task_steps_completed: Optional[int] = Field(
135
+ default=None, alias="numTaskStepsCompleted"
136
+ )
137
+
138
+
129
139
  class HyperAgentTaskResponse(BaseModel):
130
140
  """
131
141
  Response from a HyperAgent task.
@@ -137,6 +147,7 @@ class HyperAgentTaskResponse(BaseModel):
137
147
 
138
148
  job_id: str = Field(alias="jobId")
139
149
  status: HyperAgentTaskStatus
150
+ metadata: Optional[HyperAgentTaskMetadata] = Field(default=None, alias="metadata")
140
151
  data: Optional[HyperAgentTaskData] = Field(default=None, alias="data")
141
152
  error: Optional[str] = Field(default=None, alias="error")
142
153
  live_url: Optional[str] = Field(default=None, alias="liveUrl")
@@ -16,6 +16,8 @@ SessionEventLogType = Literal[
16
16
 
17
17
  POLLING_ATTEMPTS = 5
18
18
 
19
+ BrowserUseVersion = Literal["0.1.40", "0.7.10", "latest"]
20
+
19
21
  BrowserUseLlm = Literal[
20
22
  "gpt-4o",
21
23
  "gpt-4o-mini",
@@ -55,6 +55,16 @@ class ExtractJobStatusResponse(BaseModel):
55
55
  status: ExtractJobStatus
56
56
 
57
57
 
58
+ class ExtractJobMetadata(BaseModel):
59
+ model_config = ConfigDict(
60
+ populate_by_alias=True,
61
+ )
62
+
63
+ input_tokens: Optional[int] = Field(default=None, alias="inputTokens")
64
+ output_tokens: Optional[int] = Field(default=None, alias="outputTokens")
65
+ num_pages_scraped: Optional[int] = Field(default=None, alias="numPagesScraped")
66
+
67
+
58
68
  class ExtractJobResponse(BaseModel):
59
69
  """
60
70
  Response from a extract job.
@@ -67,4 +77,5 @@ class ExtractJobResponse(BaseModel):
67
77
  job_id: str = Field(alias="jobId")
68
78
  status: ExtractJobStatus
69
79
  error: Optional[str] = None
80
+ metadata: Optional[ExtractJobMetadata] = None
70
81
  data: Optional[dict] = None
@@ -23,6 +23,15 @@ class ScreenshotOptions(BaseModel):
23
23
  )
24
24
 
25
25
 
26
+ class StorageStateOptions(BaseModel):
27
+ local_storage: Optional[dict[str, str]] = Field(
28
+ default=None, serialization_alias="localStorage"
29
+ )
30
+ session_storage: Optional[dict[str, str]] = Field(
31
+ default=None, serialization_alias="sessionStorage"
32
+ )
33
+
34
+
26
35
  class ScrapeOptions(BaseModel):
27
36
  """
28
37
  Options for scraping a page.
@@ -46,6 +55,9 @@ class ScrapeOptions(BaseModel):
46
55
  screenshot_options: Optional[ScreenshotOptions] = Field(
47
56
  default=None, serialization_alias="screenshotOptions"
48
57
  )
58
+ storage_state: Optional[StorageStateOptions] = Field(
59
+ default=None, serialization_alias="storageState"
60
+ )
49
61
 
50
62
 
51
63
  class StartScrapeJobParams(BaseModel):
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "hyperbrowser"
3
- version = "0.68.0"
3
+ version = "0.69.0"
4
4
  description = "Python SDK for hyperbrowser"
5
5
  authors = ["Nikhil Shahi <nshahi1998@gmail.com>"]
6
6
  license = "MIT"
File without changes
File without changes