grasp-sdk 0.1.1__tar.gz → 0.1.2__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 grasp-sdk might be problematic. Click here for more details.
- {grasp_sdk-0.1.1/grasp_sdk.egg-info → grasp_sdk-0.1.2}/PKG-INFO +1 -1
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/__init__.py +8 -2
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/sandbox/chrome-stable.mjs +4 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/sandbox/chromium.mjs +4 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/services/browser.py +8 -17
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/services/sandbox.py +3 -4
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2/grasp_sdk.egg-info}/PKG-INFO +1 -1
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/pyproject.toml +1 -1
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/MANIFEST.in +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/README.md +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/build_and_publish.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/example_usage.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/models/__init__.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/sandbox/jsconfig.json +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/services/__init__.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/utils/__init__.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/utils/auth.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/utils/config.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk/utils/logger.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk.egg-info/SOURCES.txt +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk.egg-info/dependency_links.txt +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk.egg-info/entry_points.txt +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk.egg-info/not-zip-safe +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk.egg-info/requires.txt +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/grasp_sdk.egg-info/top_level.txt +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/py.typed +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/requirements.txt +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/setup.cfg +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/setup.py +0 -0
- {grasp_sdk-0.1.1 → grasp_sdk-0.1.2}/test_install.py +0 -0
|
@@ -72,8 +72,8 @@ class GraspServer:
|
|
|
72
72
|
connection = await self.create_browser_task()
|
|
73
73
|
|
|
74
74
|
# Register server
|
|
75
|
-
if connection['id']:
|
|
76
|
-
|
|
75
|
+
# if connection['id']:
|
|
76
|
+
# _servers[connection['id']] = self
|
|
77
77
|
|
|
78
78
|
return connection
|
|
79
79
|
|
|
@@ -162,6 +162,12 @@ class GraspServer:
|
|
|
162
162
|
browser_config
|
|
163
163
|
)
|
|
164
164
|
await self.browser_service.initialize()
|
|
165
|
+
|
|
166
|
+
# Register server
|
|
167
|
+
_servers[str(self.browser_service.id)] = self
|
|
168
|
+
self.logger.info("🚀 Browser service initialized", {
|
|
169
|
+
'id': self.browser_service.id,
|
|
170
|
+
})
|
|
165
171
|
|
|
166
172
|
self.logger.info('🌐 Launching Chromium browser with CDP...')
|
|
167
173
|
cdp_connection = await self.browser_service.launch_browser(browser_type)
|
|
@@ -232,6 +232,10 @@ try {
|
|
|
232
232
|
});
|
|
233
233
|
|
|
234
234
|
const server = http.createServer(async (req, res) => {
|
|
235
|
+
if (req.url === '/health') {
|
|
236
|
+
res.end('ok');
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
235
239
|
if (req.url === '/json/version' || req.url === '/json/version/') {
|
|
236
240
|
try {
|
|
237
241
|
// 向本地 CDP 发请求,获取原始 JSON
|
|
@@ -229,6 +229,10 @@ try {
|
|
|
229
229
|
});
|
|
230
230
|
|
|
231
231
|
const server = http.createServer(async (req, res) => {
|
|
232
|
+
if (req.url === '/health') {
|
|
233
|
+
res.end('ok');
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
232
236
|
if (req.url === '/json/version' || req.url === '/json/version/') {
|
|
233
237
|
try {
|
|
234
238
|
// 向本地 CDP 发请求,获取原始 JSON
|
|
@@ -80,27 +80,18 @@ class BrowserService:
|
|
|
80
80
|
self._health_check_task: Optional[asyncio.Task] = None
|
|
81
81
|
|
|
82
82
|
def _get_default_logger(self):
|
|
83
|
-
"""
|
|
84
|
-
|
|
85
|
-
Returns:
|
|
86
|
-
Logger instance
|
|
87
|
-
"""
|
|
83
|
+
"""Gets or creates a default logger instance."""
|
|
88
84
|
try:
|
|
89
|
-
from utils.logger import Logger
|
|
90
85
|
return get_logger().child('BrowserService')
|
|
91
86
|
except Exception:
|
|
92
87
|
# If logger is not initialized, create a default one
|
|
93
|
-
logger
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
logger.addHandler(handler)
|
|
101
|
-
logger.setLevel(logging.INFO)
|
|
102
|
-
return logger
|
|
103
|
-
|
|
88
|
+
from ..utils.logger import Logger
|
|
89
|
+
default_logger = Logger({
|
|
90
|
+
'level': 'debug' if self.config.get('debug', False) else 'info',
|
|
91
|
+
'console': True,
|
|
92
|
+
})
|
|
93
|
+
return default_logger.child('BrowserService')
|
|
94
|
+
|
|
104
95
|
async def initialize(self) -> None:
|
|
105
96
|
"""Initialize the Grasp sandbox.
|
|
106
97
|
|
|
@@ -133,9 +133,6 @@ class SandboxService:
|
|
|
133
133
|
|
|
134
134
|
try:
|
|
135
135
|
self.status = SandboxStatus.CREATING
|
|
136
|
-
self.logger.info('Creating Grasp sandbox', {
|
|
137
|
-
'templateId': self.config['templateId'],
|
|
138
|
-
})
|
|
139
136
|
|
|
140
137
|
# Verify authentication
|
|
141
138
|
res = await verify(self.config)
|
|
@@ -145,7 +142,9 @@ class SandboxService:
|
|
|
145
142
|
api_key = res['data']['token']
|
|
146
143
|
|
|
147
144
|
# Create sandbox
|
|
148
|
-
|
|
145
|
+
self.logger.info('Creating Grasp sandbox', {
|
|
146
|
+
'templateId': self.config['templateId'],
|
|
147
|
+
})
|
|
149
148
|
# Use Sandbox constructor directly (e2b SDK 1.5.3+)
|
|
150
149
|
self.sandbox = await AsyncSandbox.create(
|
|
151
150
|
template=self.config['templateId'],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|