alita-sdk 0.3.432__py3-none-any.whl → 0.3.433__py3-none-any.whl

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.
@@ -346,15 +346,20 @@ class McpToolkit(BaseToolkit):
346
346
  if response.status_code != 200:
347
347
  raise Exception(f"HTTP {response.status_code}: {response.text}")
348
348
 
349
- # Check if response is actually JSON
349
+ # Check content type and parse accordingly
350
350
  content_type = response.headers.get('Content-Type', '')
351
- if 'application/json' not in content_type:
352
- raise Exception(f"Expected JSON response but got Content-Type: {content_type}. Response: {response.text[:200]}")
353
-
354
- try:
355
- data = response.json()
356
- except ValueError as json_err:
357
- raise Exception(f"Invalid JSON response: {json_err}. Response text: {response.text[:200]}")
351
+
352
+ if 'text/event-stream' in content_type:
353
+ # Parse SSE (Server-Sent Events) format
354
+ data = cls._parse_sse_response(response.text)
355
+ elif 'application/json' in content_type:
356
+ # Parse regular JSON
357
+ try:
358
+ data = response.json()
359
+ except ValueError as json_err:
360
+ raise Exception(f"Invalid JSON response: {json_err}. Response text: {response.text[:200]}")
361
+ else:
362
+ raise Exception(f"Unexpected Content-Type: {content_type}. Response: {response.text[:200]}")
358
363
 
359
364
  if "error" in data:
360
365
  raise Exception(f"MCP Error: {data['error']}")
@@ -369,6 +374,30 @@ class McpToolkit(BaseToolkit):
369
374
  logger.error(f"Failed to discover tools from MCP toolkit '{toolkit_name}': {e}")
370
375
  raise
371
376
 
377
+ @staticmethod
378
+ def _parse_sse_response(sse_text: str) -> Dict[str, Any]:
379
+ """
380
+ Parse Server-Sent Events (SSE) format response.
381
+ SSE format: event: message\ndata: {json}\n\n
382
+ """
383
+ import json
384
+
385
+ lines = sse_text.strip().split('\n')
386
+ data_line = None
387
+
388
+ for line in lines:
389
+ if line.startswith('data:'):
390
+ data_line = line[5:].strip() # Remove 'data:' prefix
391
+ break
392
+
393
+ if not data_line:
394
+ raise Exception(f"No data found in SSE response: {sse_text[:200]}")
395
+
396
+ try:
397
+ return json.loads(data_line)
398
+ except json.JSONDecodeError as e:
399
+ raise Exception(f"Failed to parse SSE data as JSON: {e}. Data: {data_line[:200]}")
400
+
372
401
  @classmethod
373
402
  def _create_tool_from_dict(
374
403
  cls,
@@ -119,6 +119,15 @@ class McpInspectTool(BaseTool):
119
119
 
120
120
  return self._format_results(results, resource_type)
121
121
 
122
+ def _parse_sse(self, text: str) -> Dict[str, Any]:
123
+ """Parse Server-Sent Events (SSE) format response."""
124
+ for line in text.split('\n'):
125
+ line = line.strip()
126
+ if line.startswith('data:'):
127
+ json_str = line[5:].strip()
128
+ return json.loads(json_str)
129
+ raise ValueError("No data found in SSE response")
130
+
122
131
  async def _list_tools(self, session: aiohttp.ClientSession) -> Dict[str, Any]:
123
132
  """List available tools from the MCP server."""
124
133
  request = {
@@ -138,7 +147,14 @@ class McpInspectTool(BaseTool):
138
147
  if response.status != 200:
139
148
  raise Exception(f"HTTP {response.status}: {await response.text()}")
140
149
 
141
- data = await response.json()
150
+ # Handle both JSON and SSE responses
151
+ content_type = response.headers.get('Content-Type', '')
152
+ if 'text/event-stream' in content_type:
153
+ # Parse SSE format
154
+ text = await response.text()
155
+ data = self._parse_sse(text)
156
+ else:
157
+ data = await response.json()
142
158
 
143
159
  if "error" in data:
144
160
  raise Exception(f"MCP Error: {data['error']}")
@@ -164,7 +180,13 @@ class McpInspectTool(BaseTool):
164
180
  if response.status != 200:
165
181
  raise Exception(f"HTTP {response.status}: {await response.text()}")
166
182
 
167
- data = await response.json()
183
+ # Handle both JSON and SSE responses
184
+ content_type = response.headers.get('Content-Type', '')
185
+ if 'text/event-stream' in content_type:
186
+ text = await response.text()
187
+ data = self._parse_sse(text)
188
+ else:
189
+ data = await response.json()
168
190
 
169
191
  if "error" in data:
170
192
  raise Exception(f"MCP Error: {data['error']}")
@@ -190,7 +212,13 @@ class McpInspectTool(BaseTool):
190
212
  if response.status != 200:
191
213
  raise Exception(f"HTTP {response.status}: {await response.text()}")
192
214
 
193
- data = await response.json()
215
+ # Handle both JSON and SSE responses
216
+ content_type = response.headers.get('Content-Type', '')
217
+ if 'text/event-stream' in content_type:
218
+ text = await response.text()
219
+ data = self._parse_sse(text)
220
+ else:
221
+ data = await response.json()
194
222
 
195
223
  if "error" in data:
196
224
  raise Exception(f"MCP Error: {data['error']}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alita_sdk
3
- Version: 0.3.432
3
+ Version: 0.3.433
4
4
  Summary: SDK for building langchain agents using resources from Alita
5
5
  Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedj27@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -103,7 +103,7 @@ alita_sdk/runtime/toolkits/application.py,sha256=HHAKgwKOckxc7EQG-AV7rz4POOzQJKF
103
103
  alita_sdk/runtime/toolkits/artifact.py,sha256=YChNCX4QhVpaQG7Jk4TS-Wl0Aruc4slQ2K21zh9nNO0,3176
104
104
  alita_sdk/runtime/toolkits/configurations.py,sha256=kIDAlnryPQfbZyFxV-9SzN2-Vefzx06TX1BBdIIpN90,141
105
105
  alita_sdk/runtime/toolkits/datasource.py,sha256=qk78OdPoReYPCWwahfkKLbKc4pfsu-061oXRryFLP6I,2498
106
- alita_sdk/runtime/toolkits/mcp.py,sha256=lh1REOY680Q3yP4DfmzFLllmJIZy1IM90NZd1CwLrDY,25730
106
+ alita_sdk/runtime/toolkits/mcp.py,sha256=5fdmY5s5lfw4NieovFYr0C9STiCHGFuOtAZ1uFKaj0U,26764
107
107
  alita_sdk/runtime/toolkits/prompt.py,sha256=WIpTkkVYWqIqOWR_LlSWz3ug8uO9tm5jJ7aZYdiGRn0,1192
108
108
  alita_sdk/runtime/toolkits/subgraph.py,sha256=wwUK8JjPXkGzyVZ3tAukmvST6eGbqx_U11rpnmbrvtg,2105
109
109
  alita_sdk/runtime/toolkits/tools.py,sha256=YCTjrTJuwj2V2C8ZQqXhFvUbVr7NQcUHZlCQLLvoeGA,10946
@@ -121,7 +121,7 @@ alita_sdk/runtime/tools/indexer_tool.py,sha256=whSLPevB4WD6dhh2JDXEivDmTvbjiMV1M
121
121
  alita_sdk/runtime/tools/llm.py,sha256=iRG_wU4T01LRsjEMPZe5Uah7LiMqDc-vspwkMuQtltk,16136
122
122
  alita_sdk/runtime/tools/loop.py,sha256=uds0WhZvwMxDVFI6MZHrcmMle637cQfBNg682iLxoJA,8335
123
123
  alita_sdk/runtime/tools/loop_output.py,sha256=U4hO9PCQgWlXwOq6jdmCGbegtAxGAPXObSxZQ3z38uk,8069
124
- alita_sdk/runtime/tools/mcp_inspect_tool.py,sha256=wgnv0z9MvB-PWriGKHHpY2IMxjBkd7Cbz4kvwGp9aq8,10243
124
+ alita_sdk/runtime/tools/mcp_inspect_tool.py,sha256=38X8euaxDbEGjcfp6ElvExZalpZun6QEr6ZEW4nU5pQ,11496
125
125
  alita_sdk/runtime/tools/mcp_server_tool.py,sha256=y6y0j3JeUajNatpsLVJfP0JEknhlRcDRJ0PlJ3Ch8fA,6626
126
126
  alita_sdk/runtime/tools/pgvector_search.py,sha256=NN2BGAnq4SsDHIhUcFZ8d_dbEOM8QwB0UwpsWCYruXU,11692
127
127
  alita_sdk/runtime/tools/prompt.py,sha256=nJafb_e5aOM1Rr3qGFCR-SKziU9uCsiP2okIMs9PppM,741
@@ -358,8 +358,8 @@ alita_sdk/tools/zephyr_scale/api_wrapper.py,sha256=kT0TbmMvuKhDUZc0i7KO18O38JM9S
358
358
  alita_sdk/tools/zephyr_squad/__init__.py,sha256=0ne8XLJEQSLOWfzd2HdnqOYmQlUliKHbBED5kW_Vias,2895
359
359
  alita_sdk/tools/zephyr_squad/api_wrapper.py,sha256=kmw_xol8YIYFplBLWTqP_VKPRhL_1ItDD0_vXTe_UuI,14906
360
360
  alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py,sha256=R371waHsms4sllHCbijKYs90C-9Yu0sSR3N4SUfQOgU,5066
361
- alita_sdk-0.3.432.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
362
- alita_sdk-0.3.432.dist-info/METADATA,sha256=5ta9EQvl3qdFIGaqQCAQLW9VWo7PYJRHdNmffxCbdK8,19071
363
- alita_sdk-0.3.432.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
364
- alita_sdk-0.3.432.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
365
- alita_sdk-0.3.432.dist-info/RECORD,,
361
+ alita_sdk-0.3.433.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
362
+ alita_sdk-0.3.433.dist-info/METADATA,sha256=EIfa8_iHpAyNV8f5hADnzfRQEKDglXU7--aHZ8qxcxU,19071
363
+ alita_sdk-0.3.433.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
364
+ alita_sdk-0.3.433.dist-info/top_level.txt,sha256=0vJYy5p_jK6AwVb1aqXr7Kgqgk3WDtQ6t5C-XI9zkmg,10
365
+ alita_sdk-0.3.433.dist-info/RECORD,,