robosystems-client 0.2.12__py3-none-any.whl → 0.2.13__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.

Potentially problematic release.


This version of robosystems-client might be problematic. Click here for more details.

@@ -9,19 +9,35 @@ from ...models.agent_request import AgentRequest
9
9
  from ...models.agent_response import AgentResponse
10
10
  from ...models.error_response import ErrorResponse
11
11
  from ...models.http_validation_error import HTTPValidationError
12
- from ...types import Response
12
+ from ...models.response_mode import ResponseMode
13
+ from ...types import UNSET, Response, Unset
13
14
 
14
15
 
15
16
  def _get_kwargs(
16
17
  graph_id: str,
17
18
  *,
18
19
  body: AgentRequest,
20
+ mode: Union[None, ResponseMode, Unset] = UNSET,
19
21
  ) -> dict[str, Any]:
20
22
  headers: dict[str, Any] = {}
21
23
 
24
+ params: dict[str, Any] = {}
25
+
26
+ json_mode: Union[None, Unset, str]
27
+ if isinstance(mode, Unset):
28
+ json_mode = UNSET
29
+ elif isinstance(mode, ResponseMode):
30
+ json_mode = mode.value
31
+ else:
32
+ json_mode = mode
33
+ params["mode"] = json_mode
34
+
35
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
36
+
22
37
  _kwargs: dict[str, Any] = {
23
38
  "method": "post",
24
39
  "url": f"/v1/graphs/{graph_id}/agent",
40
+ "params": params,
25
41
  }
26
42
 
27
43
  _kwargs["json"] = body.to_dict()
@@ -40,6 +56,10 @@ def _parse_response(
40
56
 
41
57
  return response_200
42
58
 
59
+ if response.status_code == 202:
60
+ response_202 = cast(Any, None)
61
+ return response_202
62
+
43
63
  if response.status_code == 400:
44
64
  response_400 = cast(Any, None)
45
65
  return response_400
@@ -84,10 +104,11 @@ def sync_detailed(
84
104
  *,
85
105
  client: AuthenticatedClient,
86
106
  body: AgentRequest,
107
+ mode: Union[None, ResponseMode, Unset] = UNSET,
87
108
  ) -> Response[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
88
109
  r"""Auto-select agent for query
89
110
 
90
- Automatically select the best agent for your query.
111
+ Automatically select the best agent for your query with intelligent execution strategy.
91
112
 
92
113
  **Agent Selection Process:**
93
114
 
@@ -96,7 +117,8 @@ def sync_detailed(
96
117
  2. Enriching context with RAG if enabled
97
118
  3. Evaluating all available agents against selection criteria
98
119
  4. Selecting the best match based on confidence scores
99
- 5. Executing the query with the selected agent
120
+ 5. Choosing execution strategy (sync/SSE/async) based on expected time
121
+ 6. Executing the query with the selected agent
100
122
 
101
123
  **Available Agent Types:**
102
124
  - `financial`: Financial analysis, SEC filings, company metrics
@@ -109,6 +131,14 @@ def sync_detailed(
109
131
  - `extended`: Comprehensive analysis (~15-60s), deep research
110
132
  - `streaming`: Real-time response streaming
111
133
 
134
+ **Execution Strategies (automatic):**
135
+ - Fast operations (<5s): Immediate synchronous response
136
+ - Medium operations (5-30s): SSE streaming with progress updates
137
+ - Long operations (>30s): Async Celery worker with operation tracking
138
+
139
+ **Response Mode Override:**
140
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
141
+
112
142
  **Confidence Score Interpretation:**
113
143
  - `0.9-1.0`: High confidence, agent is ideal match
114
144
  - `0.7-0.9`: Good confidence, agent is suitable
@@ -132,6 +162,8 @@ def sync_detailed(
132
162
 
133
163
  Args:
134
164
  graph_id (str):
165
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
166
+ auto
135
167
  body (AgentRequest): Request model for agent interactions.
136
168
 
137
169
  Raises:
@@ -145,6 +177,7 @@ def sync_detailed(
145
177
  kwargs = _get_kwargs(
146
178
  graph_id=graph_id,
147
179
  body=body,
180
+ mode=mode,
148
181
  )
149
182
 
150
183
  response = client.get_httpx_client().request(
@@ -159,10 +192,11 @@ def sync(
159
192
  *,
160
193
  client: AuthenticatedClient,
161
194
  body: AgentRequest,
195
+ mode: Union[None, ResponseMode, Unset] = UNSET,
162
196
  ) -> Optional[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
163
197
  r"""Auto-select agent for query
164
198
 
165
- Automatically select the best agent for your query.
199
+ Automatically select the best agent for your query with intelligent execution strategy.
166
200
 
167
201
  **Agent Selection Process:**
168
202
 
@@ -171,7 +205,8 @@ def sync(
171
205
  2. Enriching context with RAG if enabled
172
206
  3. Evaluating all available agents against selection criteria
173
207
  4. Selecting the best match based on confidence scores
174
- 5. Executing the query with the selected agent
208
+ 5. Choosing execution strategy (sync/SSE/async) based on expected time
209
+ 6. Executing the query with the selected agent
175
210
 
176
211
  **Available Agent Types:**
177
212
  - `financial`: Financial analysis, SEC filings, company metrics
@@ -184,6 +219,14 @@ def sync(
184
219
  - `extended`: Comprehensive analysis (~15-60s), deep research
185
220
  - `streaming`: Real-time response streaming
186
221
 
222
+ **Execution Strategies (automatic):**
223
+ - Fast operations (<5s): Immediate synchronous response
224
+ - Medium operations (5-30s): SSE streaming with progress updates
225
+ - Long operations (>30s): Async Celery worker with operation tracking
226
+
227
+ **Response Mode Override:**
228
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
229
+
187
230
  **Confidence Score Interpretation:**
188
231
  - `0.9-1.0`: High confidence, agent is ideal match
189
232
  - `0.7-0.9`: Good confidence, agent is suitable
@@ -207,6 +250,8 @@ def sync(
207
250
 
208
251
  Args:
209
252
  graph_id (str):
253
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
254
+ auto
210
255
  body (AgentRequest): Request model for agent interactions.
211
256
 
212
257
  Raises:
@@ -221,6 +266,7 @@ def sync(
221
266
  graph_id=graph_id,
222
267
  client=client,
223
268
  body=body,
269
+ mode=mode,
224
270
  ).parsed
225
271
 
226
272
 
@@ -229,10 +275,11 @@ async def asyncio_detailed(
229
275
  *,
230
276
  client: AuthenticatedClient,
231
277
  body: AgentRequest,
278
+ mode: Union[None, ResponseMode, Unset] = UNSET,
232
279
  ) -> Response[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
233
280
  r"""Auto-select agent for query
234
281
 
235
- Automatically select the best agent for your query.
282
+ Automatically select the best agent for your query with intelligent execution strategy.
236
283
 
237
284
  **Agent Selection Process:**
238
285
 
@@ -241,7 +288,8 @@ async def asyncio_detailed(
241
288
  2. Enriching context with RAG if enabled
242
289
  3. Evaluating all available agents against selection criteria
243
290
  4. Selecting the best match based on confidence scores
244
- 5. Executing the query with the selected agent
291
+ 5. Choosing execution strategy (sync/SSE/async) based on expected time
292
+ 6. Executing the query with the selected agent
245
293
 
246
294
  **Available Agent Types:**
247
295
  - `financial`: Financial analysis, SEC filings, company metrics
@@ -254,6 +302,14 @@ async def asyncio_detailed(
254
302
  - `extended`: Comprehensive analysis (~15-60s), deep research
255
303
  - `streaming`: Real-time response streaming
256
304
 
305
+ **Execution Strategies (automatic):**
306
+ - Fast operations (<5s): Immediate synchronous response
307
+ - Medium operations (5-30s): SSE streaming with progress updates
308
+ - Long operations (>30s): Async Celery worker with operation tracking
309
+
310
+ **Response Mode Override:**
311
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
312
+
257
313
  **Confidence Score Interpretation:**
258
314
  - `0.9-1.0`: High confidence, agent is ideal match
259
315
  - `0.7-0.9`: Good confidence, agent is suitable
@@ -277,6 +333,8 @@ async def asyncio_detailed(
277
333
 
278
334
  Args:
279
335
  graph_id (str):
336
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
337
+ auto
280
338
  body (AgentRequest): Request model for agent interactions.
281
339
 
282
340
  Raises:
@@ -290,6 +348,7 @@ async def asyncio_detailed(
290
348
  kwargs = _get_kwargs(
291
349
  graph_id=graph_id,
292
350
  body=body,
351
+ mode=mode,
293
352
  )
294
353
 
295
354
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -302,10 +361,11 @@ async def asyncio(
302
361
  *,
303
362
  client: AuthenticatedClient,
304
363
  body: AgentRequest,
364
+ mode: Union[None, ResponseMode, Unset] = UNSET,
305
365
  ) -> Optional[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
306
366
  r"""Auto-select agent for query
307
367
 
308
- Automatically select the best agent for your query.
368
+ Automatically select the best agent for your query with intelligent execution strategy.
309
369
 
310
370
  **Agent Selection Process:**
311
371
 
@@ -314,7 +374,8 @@ async def asyncio(
314
374
  2. Enriching context with RAG if enabled
315
375
  3. Evaluating all available agents against selection criteria
316
376
  4. Selecting the best match based on confidence scores
317
- 5. Executing the query with the selected agent
377
+ 5. Choosing execution strategy (sync/SSE/async) based on expected time
378
+ 6. Executing the query with the selected agent
318
379
 
319
380
  **Available Agent Types:**
320
381
  - `financial`: Financial analysis, SEC filings, company metrics
@@ -327,6 +388,14 @@ async def asyncio(
327
388
  - `extended`: Comprehensive analysis (~15-60s), deep research
328
389
  - `streaming`: Real-time response streaming
329
390
 
391
+ **Execution Strategies (automatic):**
392
+ - Fast operations (<5s): Immediate synchronous response
393
+ - Medium operations (5-30s): SSE streaming with progress updates
394
+ - Long operations (>30s): Async Celery worker with operation tracking
395
+
396
+ **Response Mode Override:**
397
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
398
+
330
399
  **Confidence Score Interpretation:**
331
400
  - `0.9-1.0`: High confidence, agent is ideal match
332
401
  - `0.7-0.9`: Good confidence, agent is suitable
@@ -350,6 +419,8 @@ async def asyncio(
350
419
 
351
420
  Args:
352
421
  graph_id (str):
422
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
423
+ auto
353
424
  body (AgentRequest): Request model for agent interactions.
354
425
 
355
426
  Raises:
@@ -365,5 +436,6 @@ async def asyncio(
365
436
  graph_id=graph_id,
366
437
  client=client,
367
438
  body=body,
439
+ mode=mode,
368
440
  )
369
441
  ).parsed
@@ -9,7 +9,8 @@ from ...models.agent_request import AgentRequest
9
9
  from ...models.agent_response import AgentResponse
10
10
  from ...models.error_response import ErrorResponse
11
11
  from ...models.http_validation_error import HTTPValidationError
12
- from ...types import Response
12
+ from ...models.response_mode import ResponseMode
13
+ from ...types import UNSET, Response, Unset
13
14
 
14
15
 
15
16
  def _get_kwargs(
@@ -17,12 +18,27 @@ def _get_kwargs(
17
18
  agent_type: str,
18
19
  *,
19
20
  body: AgentRequest,
21
+ mode: Union[None, ResponseMode, Unset] = UNSET,
20
22
  ) -> dict[str, Any]:
21
23
  headers: dict[str, Any] = {}
22
24
 
25
+ params: dict[str, Any] = {}
26
+
27
+ json_mode: Union[None, Unset, str]
28
+ if isinstance(mode, Unset):
29
+ json_mode = UNSET
30
+ elif isinstance(mode, ResponseMode):
31
+ json_mode = mode.value
32
+ else:
33
+ json_mode = mode
34
+ params["mode"] = json_mode
35
+
36
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
37
+
23
38
  _kwargs: dict[str, Any] = {
24
39
  "method": "post",
25
40
  "url": f"/v1/graphs/{graph_id}/agent/{agent_type}",
41
+ "params": params,
26
42
  }
27
43
 
28
44
  _kwargs["json"] = body.to_dict()
@@ -41,6 +57,10 @@ def _parse_response(
41
57
 
42
58
  return response_200
43
59
 
60
+ if response.status_code == 202:
61
+ response_202 = cast(Any, None)
62
+ return response_202
63
+
44
64
  if response.status_code == 400:
45
65
  response_400 = cast(Any, None)
46
66
  return response_400
@@ -90,21 +110,32 @@ def sync_detailed(
90
110
  *,
91
111
  client: AuthenticatedClient,
92
112
  body: AgentRequest,
113
+ mode: Union[None, ResponseMode, Unset] = UNSET,
93
114
  ) -> Response[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
94
115
  """Execute specific agent
95
116
 
96
- Execute a specific agent type directly.
117
+ Execute a specific agent type directly with intelligent execution strategy.
97
118
 
98
119
  Available agents:
99
120
  - **financial**: Financial analysis, SEC filings, accounting data
100
121
  - **research**: Deep research and comprehensive analysis
101
122
  - **rag**: Fast retrieval without AI (no credits required)
102
123
 
124
+ **Execution Strategies (automatic):**
125
+ - Fast operations (<5s): Immediate synchronous response
126
+ - Medium operations (5-30s): SSE streaming with progress updates
127
+ - Long operations (>30s): Async Celery worker with operation tracking
128
+
129
+ **Response Mode Override:**
130
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
131
+
103
132
  Use this endpoint when you know which agent you want to use.
104
133
 
105
134
  Args:
106
135
  graph_id (str):
107
136
  agent_type (str):
137
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
138
+ auto
108
139
  body (AgentRequest): Request model for agent interactions.
109
140
 
110
141
  Raises:
@@ -119,6 +150,7 @@ def sync_detailed(
119
150
  graph_id=graph_id,
120
151
  agent_type=agent_type,
121
152
  body=body,
153
+ mode=mode,
122
154
  )
123
155
 
124
156
  response = client.get_httpx_client().request(
@@ -134,21 +166,32 @@ def sync(
134
166
  *,
135
167
  client: AuthenticatedClient,
136
168
  body: AgentRequest,
169
+ mode: Union[None, ResponseMode, Unset] = UNSET,
137
170
  ) -> Optional[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
138
171
  """Execute specific agent
139
172
 
140
- Execute a specific agent type directly.
173
+ Execute a specific agent type directly with intelligent execution strategy.
141
174
 
142
175
  Available agents:
143
176
  - **financial**: Financial analysis, SEC filings, accounting data
144
177
  - **research**: Deep research and comprehensive analysis
145
178
  - **rag**: Fast retrieval without AI (no credits required)
146
179
 
180
+ **Execution Strategies (automatic):**
181
+ - Fast operations (<5s): Immediate synchronous response
182
+ - Medium operations (5-30s): SSE streaming with progress updates
183
+ - Long operations (>30s): Async Celery worker with operation tracking
184
+
185
+ **Response Mode Override:**
186
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
187
+
147
188
  Use this endpoint when you know which agent you want to use.
148
189
 
149
190
  Args:
150
191
  graph_id (str):
151
192
  agent_type (str):
193
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
194
+ auto
152
195
  body (AgentRequest): Request model for agent interactions.
153
196
 
154
197
  Raises:
@@ -164,6 +207,7 @@ def sync(
164
207
  agent_type=agent_type,
165
208
  client=client,
166
209
  body=body,
210
+ mode=mode,
167
211
  ).parsed
168
212
 
169
213
 
@@ -173,21 +217,32 @@ async def asyncio_detailed(
173
217
  *,
174
218
  client: AuthenticatedClient,
175
219
  body: AgentRequest,
220
+ mode: Union[None, ResponseMode, Unset] = UNSET,
176
221
  ) -> Response[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
177
222
  """Execute specific agent
178
223
 
179
- Execute a specific agent type directly.
224
+ Execute a specific agent type directly with intelligent execution strategy.
180
225
 
181
226
  Available agents:
182
227
  - **financial**: Financial analysis, SEC filings, accounting data
183
228
  - **research**: Deep research and comprehensive analysis
184
229
  - **rag**: Fast retrieval without AI (no credits required)
185
230
 
231
+ **Execution Strategies (automatic):**
232
+ - Fast operations (<5s): Immediate synchronous response
233
+ - Medium operations (5-30s): SSE streaming with progress updates
234
+ - Long operations (>30s): Async Celery worker with operation tracking
235
+
236
+ **Response Mode Override:**
237
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
238
+
186
239
  Use this endpoint when you know which agent you want to use.
187
240
 
188
241
  Args:
189
242
  graph_id (str):
190
243
  agent_type (str):
244
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
245
+ auto
191
246
  body (AgentRequest): Request model for agent interactions.
192
247
 
193
248
  Raises:
@@ -202,6 +257,7 @@ async def asyncio_detailed(
202
257
  graph_id=graph_id,
203
258
  agent_type=agent_type,
204
259
  body=body,
260
+ mode=mode,
205
261
  )
206
262
 
207
263
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -215,21 +271,32 @@ async def asyncio(
215
271
  *,
216
272
  client: AuthenticatedClient,
217
273
  body: AgentRequest,
274
+ mode: Union[None, ResponseMode, Unset] = UNSET,
218
275
  ) -> Optional[Union[AgentResponse, Any, ErrorResponse, HTTPValidationError]]:
219
276
  """Execute specific agent
220
277
 
221
- Execute a specific agent type directly.
278
+ Execute a specific agent type directly with intelligent execution strategy.
222
279
 
223
280
  Available agents:
224
281
  - **financial**: Financial analysis, SEC filings, accounting data
225
282
  - **research**: Deep research and comprehensive analysis
226
283
  - **rag**: Fast retrieval without AI (no credits required)
227
284
 
285
+ **Execution Strategies (automatic):**
286
+ - Fast operations (<5s): Immediate synchronous response
287
+ - Medium operations (5-30s): SSE streaming with progress updates
288
+ - Long operations (>30s): Async Celery worker with operation tracking
289
+
290
+ **Response Mode Override:**
291
+ Use query parameter `?mode=sync|async` to override automatic strategy selection.
292
+
228
293
  Use this endpoint when you know which agent you want to use.
229
294
 
230
295
  Args:
231
296
  graph_id (str):
232
297
  agent_type (str):
298
+ mode (Union[None, ResponseMode, Unset]): Override execution mode: sync, async, stream, or
299
+ auto
233
300
  body (AgentRequest): Request model for agent interactions.
234
301
 
235
302
  Raises:
@@ -246,5 +313,6 @@ async def asyncio(
246
313
  agent_type=agent_type,
247
314
  client=client,
248
315
  body=body,
316
+ mode=mode,
249
317
  )
250
318
  ).parsed
@@ -16,7 +16,7 @@ def _get_kwargs(
16
16
  ) -> dict[str, Any]:
17
17
  _kwargs: dict[str, Any] = {
18
18
  "method": "get",
19
- "url": f"/v1/graphs/{graph_id}/agent/{agent_type}/metadata",
19
+ "url": f"/v1/graphs/{graph_id}/agent/{agent_type}",
20
20
  }
21
21
 
22
22
  return _kwargs
@@ -28,7 +28,7 @@ def _get_kwargs(
28
28
 
29
29
  _kwargs: dict[str, Any] = {
30
30
  "method": "get",
31
- "url": f"/v1/graphs/{graph_id}/agent/list",
31
+ "url": f"/v1/graphs/{graph_id}/agent",
32
32
  "params": params,
33
33
  }
34
34
 
@@ -141,7 +141,7 @@ def sync_detailed(
141
141
  No credits are consumed for viewing transaction history.
142
142
 
143
143
  Args:
144
- graph_id (str):
144
+ graph_id (str): Graph database identifier
145
145
  transaction_type (Union[None, Unset, str]): Filter by transaction type (allocation,
146
146
  consumption, bonus, refund)
147
147
  operation_type (Union[None, Unset, str]): Filter by operation type (e.g., entity_lookup,
@@ -206,7 +206,7 @@ def sync(
206
206
  No credits are consumed for viewing transaction history.
207
207
 
208
208
  Args:
209
- graph_id (str):
209
+ graph_id (str): Graph database identifier
210
210
  transaction_type (Union[None, Unset, str]): Filter by transaction type (allocation,
211
211
  consumption, bonus, refund)
212
212
  operation_type (Union[None, Unset, str]): Filter by operation type (e.g., entity_lookup,
@@ -266,7 +266,7 @@ async def asyncio_detailed(
266
266
  No credits are consumed for viewing transaction history.
267
267
 
268
268
  Args:
269
- graph_id (str):
269
+ graph_id (str): Graph database identifier
270
270
  transaction_type (Union[None, Unset, str]): Filter by transaction type (allocation,
271
271
  consumption, bonus, refund)
272
272
  operation_type (Union[None, Unset, str]): Filter by operation type (e.g., entity_lookup,
@@ -329,7 +329,7 @@ async def asyncio(
329
329
  No credits are consumed for viewing transaction history.
330
330
 
331
331
  Args:
332
- graph_id (str):
332
+ graph_id (str): Graph database identifier
333
333
  transaction_type (Union[None, Unset, str]): Filter by transaction type (allocation,
334
334
  consumption, bonus, refund)
335
335
  operation_type (Union[None, Unset, str]): Filter by operation type (e.g., entity_lookup,
@@ -14,6 +14,14 @@ from .query_client import (
14
14
  QueryOptions,
15
15
  QueuedQueryError,
16
16
  )
17
+ from .agent_client import (
18
+ AgentClient,
19
+ AgentResult,
20
+ QueuedAgentResponse,
21
+ AgentQueryRequest,
22
+ AgentOptions,
23
+ QueuedAgentError,
24
+ )
17
25
  from .operation_client import (
18
26
  OperationClient,
19
27
  OperationStatus,
@@ -118,6 +126,13 @@ __all__ = [
118
126
  "QueryRequest",
119
127
  "QueryOptions",
120
128
  "QueuedQueryError",
129
+ # Agent Client
130
+ "AgentClient",
131
+ "AgentResult",
132
+ "QueuedAgentResponse",
133
+ "AgentQueryRequest",
134
+ "AgentOptions",
135
+ "QueuedAgentError",
121
136
  # Operation Client
122
137
  "OperationClient",
123
138
  "OperationStatus",
@@ -189,6 +204,16 @@ def stream_query(graph_id: str, query: str, parameters=None, chunk_size=None):
189
204
  return extensions.query.stream_query(graph_id, query, parameters, chunk_size)
190
205
 
191
206
 
207
+ def agent_query(graph_id: str, message: str, context=None):
208
+ """Execute an agent query using the default extensions instance"""
209
+ return extensions.agent.query(graph_id, message, context)
210
+
211
+
212
+ def analyze_financials(graph_id: str, message: str, on_progress=None):
213
+ """Execute financial agent using the default extensions instance"""
214
+ return extensions.agent.analyze_financials(graph_id, message, on_progress)
215
+
216
+
192
217
  # DataFrame convenience functions (if pandas is available)
193
218
  if (
194
219
  HAS_PANDAS
@@ -0,0 +1,526 @@
1
+ """Enhanced Agent Client with SSE support
2
+
3
+ Provides intelligent agent execution with automatic strategy selection.
4
+ """
5
+
6
+ from dataclasses import dataclass
7
+ from typing import Dict, Any, Optional, Callable
8
+ from datetime import datetime
9
+
10
+ from ..api.agent.auto_select_agent import sync_detailed as auto_select_agent
11
+ from ..api.agent.execute_specific_agent import sync_detailed as execute_specific_agent
12
+ from ..models.agent_request import AgentRequest
13
+ from ..models.agent_message import AgentMessage
14
+ from .sse_client import SSEClient, SSEConfig, EventType
15
+
16
+
17
+ @dataclass
18
+ class AgentQueryRequest:
19
+ """Request object for agent queries"""
20
+
21
+ message: str
22
+ history: Optional[list] = None
23
+ context: Optional[Dict[str, Any]] = None
24
+ mode: Optional[str] = None # 'quick', 'standard', 'extended', 'streaming'
25
+ enable_rag: Optional[bool] = None
26
+ force_extended_analysis: Optional[bool] = None
27
+
28
+
29
+ @dataclass
30
+ class AgentOptions:
31
+ """Options for agent execution"""
32
+
33
+ mode: Optional[str] = "auto" # 'auto', 'sync', 'async'
34
+ max_wait: Optional[int] = None
35
+ on_progress: Optional[Callable[[str, Optional[int]], None]] = None
36
+
37
+
38
+ @dataclass
39
+ class AgentResult:
40
+ """Result from agent execution"""
41
+
42
+ content: str
43
+ agent_used: str
44
+ mode_used: str
45
+ metadata: Optional[Dict[str, Any]] = None
46
+ tokens_used: Optional[Dict[str, int]] = None
47
+ confidence_score: Optional[float] = None
48
+ execution_time: Optional[float] = None
49
+ timestamp: Optional[str] = None
50
+
51
+
52
+ @dataclass
53
+ class QueuedAgentResponse:
54
+ """Response when agent execution is queued"""
55
+
56
+ status: str
57
+ operation_id: str
58
+ message: str
59
+ sse_endpoint: Optional[str] = None
60
+
61
+
62
+ class QueuedAgentError(Exception):
63
+ """Exception thrown when agent execution is queued and maxWait is 0"""
64
+
65
+ def __init__(self, queue_info: QueuedAgentResponse):
66
+ super().__init__("Agent execution was queued")
67
+ self.queue_info = queue_info
68
+
69
+
70
+ class AgentClient:
71
+ """Enhanced agent client with SSE streaming support"""
72
+
73
+ def __init__(self, config: Dict[str, Any]):
74
+ self.config = config
75
+ self.base_url = config["base_url"]
76
+ self.headers = config.get("headers", {})
77
+ self.token = config.get("token")
78
+ self.sse_client: Optional[SSEClient] = None
79
+
80
+ def execute_query(
81
+ self,
82
+ graph_id: str,
83
+ request: AgentQueryRequest,
84
+ options: AgentOptions = None,
85
+ ) -> AgentResult:
86
+ """Execute agent query with automatic agent selection"""
87
+ if options is None:
88
+ options = AgentOptions()
89
+
90
+ # Build request data
91
+ agent_request = AgentRequest(
92
+ message=request.message,
93
+ history=[
94
+ AgentMessage(role=msg["role"], content=msg["content"])
95
+ for msg in (request.history or [])
96
+ ],
97
+ context=request.context,
98
+ mode=request.mode,
99
+ enable_rag=request.enable_rag,
100
+ force_extended_analysis=request.force_extended_analysis,
101
+ )
102
+
103
+ # Execute through the generated client
104
+ from ..client import AuthenticatedClient
105
+
106
+ if not self.token:
107
+ raise Exception("No API key provided. Set X-API-Key in headers.")
108
+
109
+ client = AuthenticatedClient(
110
+ base_url=self.base_url,
111
+ token=self.token,
112
+ prefix="",
113
+ auth_header_name="X-API-Key",
114
+ headers=self.headers,
115
+ )
116
+
117
+ try:
118
+ response = auto_select_agent(
119
+ graph_id=graph_id,
120
+ client=client,
121
+ body=agent_request,
122
+ )
123
+
124
+ # Check response type and handle accordingly
125
+ if hasattr(response, "parsed") and response.parsed:
126
+ response_data = response.parsed
127
+
128
+ # Handle both dict and attrs object responses
129
+ if isinstance(response_data, dict):
130
+ data = response_data
131
+ else:
132
+ # Response is an attrs object
133
+ data = response_data
134
+
135
+ # Check if this is an immediate response (sync or SSE execution)
136
+ has_content = False
137
+ if isinstance(data, dict):
138
+ has_content = "content" in data and "agent_used" in data
139
+ else:
140
+ has_content = hasattr(data, "content") and hasattr(data, "agent_used")
141
+
142
+ if has_content:
143
+ # Extract data from either dict or attrs object
144
+ if isinstance(data, dict):
145
+ return AgentResult(
146
+ content=data["content"],
147
+ agent_used=data["agent_used"],
148
+ mode_used=data["mode_used"],
149
+ metadata=data.get("metadata"),
150
+ tokens_used=data.get("tokens_used"),
151
+ confidence_score=data.get("confidence_score"),
152
+ execution_time=data.get("execution_time"),
153
+ timestamp=data.get("timestamp", datetime.now().isoformat()),
154
+ )
155
+ else:
156
+ # attrs object - access attributes directly
157
+ from ..types import UNSET
158
+
159
+ return AgentResult(
160
+ content=data.content if data.content is not UNSET else "",
161
+ agent_used=data.agent_used if data.agent_used is not UNSET else "unknown",
162
+ mode_used=data.mode_used.value
163
+ if hasattr(data.mode_used, "value")
164
+ else data.mode_used
165
+ if data.mode_used is not UNSET
166
+ else "standard",
167
+ metadata=data.metadata if data.metadata is not UNSET else None,
168
+ tokens_used=data.tokens_used if data.tokens_used is not UNSET else None,
169
+ confidence_score=data.confidence_score
170
+ if data.confidence_score is not UNSET
171
+ else None,
172
+ execution_time=data.execution_time
173
+ if data.execution_time is not UNSET
174
+ else None,
175
+ timestamp=data.timestamp
176
+ if hasattr(data, "timestamp") and data.timestamp is not UNSET
177
+ else datetime.now().isoformat(),
178
+ )
179
+
180
+ # Check if this is a queued response (async Celery execution)
181
+ is_queued = False
182
+ queued_response = None
183
+
184
+ if isinstance(data, dict):
185
+ is_queued = "operation_id" in data
186
+ if is_queued:
187
+ queued_response = QueuedAgentResponse(
188
+ status=data.get("status", "queued"),
189
+ operation_id=data["operation_id"],
190
+ message=data.get("message", "Agent execution queued"),
191
+ sse_endpoint=data.get("sse_endpoint"),
192
+ )
193
+ else:
194
+ is_queued = hasattr(data, "operation_id")
195
+ if is_queued:
196
+ from ..types import UNSET
197
+
198
+ queued_response = QueuedAgentResponse(
199
+ status=data.status if hasattr(data, "status") else "queued",
200
+ operation_id=data.operation_id,
201
+ message=data.message
202
+ if hasattr(data, "message") and data.message is not UNSET
203
+ else "Agent execution queued",
204
+ sse_endpoint=data.sse_endpoint
205
+ if hasattr(data, "sse_endpoint") and data.sse_endpoint is not UNSET
206
+ else None,
207
+ )
208
+
209
+ if is_queued and queued_response:
210
+ # If user doesn't want to wait, raise with queue info
211
+ if options.max_wait == 0:
212
+ raise QueuedAgentError(queued_response)
213
+
214
+ # Use SSE to monitor the operation
215
+ return self._wait_for_agent_completion(queued_response.operation_id, options)
216
+
217
+ except Exception as e:
218
+ if isinstance(e, QueuedAgentError):
219
+ raise
220
+
221
+ error_msg = str(e)
222
+ # Check for authentication errors
223
+ if (
224
+ "401" in error_msg or "403" in error_msg or "unauthorized" in error_msg.lower()
225
+ ):
226
+ raise Exception(f"Authentication failed during agent execution: {error_msg}")
227
+ else:
228
+ raise Exception(f"Agent execution failed: {error_msg}")
229
+
230
+ # Unexpected response format
231
+ raise Exception("Unexpected response format from agent endpoint")
232
+
233
+ def execute_agent(
234
+ self,
235
+ graph_id: str,
236
+ agent_type: str,
237
+ request: AgentQueryRequest,
238
+ options: AgentOptions = None,
239
+ ) -> AgentResult:
240
+ """Execute specific agent type"""
241
+ if options is None:
242
+ options = AgentOptions()
243
+
244
+ # Build request data
245
+ agent_request = AgentRequest(
246
+ message=request.message,
247
+ history=[
248
+ AgentMessage(role=msg["role"], content=msg["content"])
249
+ for msg in (request.history or [])
250
+ ],
251
+ context=request.context,
252
+ mode=request.mode,
253
+ enable_rag=request.enable_rag,
254
+ force_extended_analysis=request.force_extended_analysis,
255
+ )
256
+
257
+ # Execute through the generated client
258
+ from ..client import AuthenticatedClient
259
+
260
+ if not self.token:
261
+ raise Exception("No API key provided. Set X-API-Key in headers.")
262
+
263
+ client = AuthenticatedClient(
264
+ base_url=self.base_url,
265
+ token=self.token,
266
+ prefix="",
267
+ auth_header_name="X-API-Key",
268
+ headers=self.headers,
269
+ )
270
+
271
+ try:
272
+ response = execute_specific_agent(
273
+ graph_id=graph_id,
274
+ agent_type=agent_type,
275
+ client=client,
276
+ body=agent_request,
277
+ )
278
+
279
+ # Check response type and handle accordingly
280
+ if hasattr(response, "parsed") and response.parsed:
281
+ response_data = response.parsed
282
+
283
+ # Handle both dict and attrs object responses
284
+ if isinstance(response_data, dict):
285
+ data = response_data
286
+ else:
287
+ data = response_data
288
+
289
+ # Check if this is an immediate response
290
+ has_content = False
291
+ if isinstance(data, dict):
292
+ has_content = "content" in data and "agent_used" in data
293
+ else:
294
+ has_content = hasattr(data, "content") and hasattr(data, "agent_used")
295
+
296
+ if has_content:
297
+ # Extract data from either dict or attrs object
298
+ if isinstance(data, dict):
299
+ return AgentResult(
300
+ content=data["content"],
301
+ agent_used=data["agent_used"],
302
+ mode_used=data["mode_used"],
303
+ metadata=data.get("metadata"),
304
+ tokens_used=data.get("tokens_used"),
305
+ confidence_score=data.get("confidence_score"),
306
+ execution_time=data.get("execution_time"),
307
+ timestamp=data.get("timestamp", datetime.now().isoformat()),
308
+ )
309
+ else:
310
+ # attrs object
311
+ from ..types import UNSET
312
+
313
+ return AgentResult(
314
+ content=data.content if data.content is not UNSET else "",
315
+ agent_used=data.agent_used if data.agent_used is not UNSET else "unknown",
316
+ mode_used=data.mode_used.value
317
+ if hasattr(data.mode_used, "value")
318
+ else data.mode_used
319
+ if data.mode_used is not UNSET
320
+ else "standard",
321
+ metadata=data.metadata if data.metadata is not UNSET else None,
322
+ tokens_used=data.tokens_used if data.tokens_used is not UNSET else None,
323
+ confidence_score=data.confidence_score
324
+ if data.confidence_score is not UNSET
325
+ else None,
326
+ execution_time=data.execution_time
327
+ if data.execution_time is not UNSET
328
+ else None,
329
+ timestamp=data.timestamp
330
+ if hasattr(data, "timestamp") and data.timestamp is not UNSET
331
+ else datetime.now().isoformat(),
332
+ )
333
+
334
+ # Check if this is a queued response
335
+ is_queued = False
336
+ queued_response = None
337
+
338
+ if isinstance(data, dict):
339
+ is_queued = "operation_id" in data
340
+ if is_queued:
341
+ queued_response = QueuedAgentResponse(
342
+ status=data.get("status", "queued"),
343
+ operation_id=data["operation_id"],
344
+ message=data.get("message", "Agent execution queued"),
345
+ sse_endpoint=data.get("sse_endpoint"),
346
+ )
347
+ else:
348
+ is_queued = hasattr(data, "operation_id")
349
+ if is_queued:
350
+ from ..types import UNSET
351
+
352
+ queued_response = QueuedAgentResponse(
353
+ status=data.status if hasattr(data, "status") else "queued",
354
+ operation_id=data.operation_id,
355
+ message=data.message
356
+ if hasattr(data, "message") and data.message is not UNSET
357
+ else "Agent execution queued",
358
+ sse_endpoint=data.sse_endpoint
359
+ if hasattr(data, "sse_endpoint") and data.sse_endpoint is not UNSET
360
+ else None,
361
+ )
362
+
363
+ if is_queued and queued_response:
364
+ # If user doesn't want to wait, raise with queue info
365
+ if options.max_wait == 0:
366
+ raise QueuedAgentError(queued_response)
367
+
368
+ # Use SSE to monitor the operation
369
+ return self._wait_for_agent_completion(queued_response.operation_id, options)
370
+
371
+ except Exception as e:
372
+ if isinstance(e, QueuedAgentError):
373
+ raise
374
+
375
+ error_msg = str(e)
376
+ if (
377
+ "401" in error_msg or "403" in error_msg or "unauthorized" in error_msg.lower()
378
+ ):
379
+ raise Exception(f"Authentication failed during agent execution: {error_msg}")
380
+ else:
381
+ raise Exception(f"Agent execution failed: {error_msg}")
382
+
383
+ # Unexpected response format
384
+ raise Exception("Unexpected response format from agent endpoint")
385
+
386
+ def _wait_for_agent_completion(
387
+ self, operation_id: str, options: AgentOptions
388
+ ) -> AgentResult:
389
+ """Wait for agent completion and return final result"""
390
+ result = None
391
+ error = None
392
+ completed = False
393
+
394
+ # Set up SSE connection
395
+ sse_config = SSEConfig(base_url=self.base_url, headers=self.headers)
396
+ sse_client = SSEClient(sse_config)
397
+
398
+ def on_progress(data):
399
+ if options.on_progress:
400
+ options.on_progress(
401
+ data.get("message", "Processing..."), data.get("percentage")
402
+ )
403
+
404
+ def on_agent_started(data):
405
+ if options.on_progress:
406
+ options.on_progress(f"Agent {data.get('agent_type')} started", 0)
407
+
408
+ def on_agent_initialized(data):
409
+ if options.on_progress:
410
+ options.on_progress(f"{data.get('agent_name')} initialized", 10)
411
+
412
+ def on_agent_completed(data):
413
+ nonlocal result, completed
414
+ result = AgentResult(
415
+ content=data.get("content", ""),
416
+ agent_used=data.get("agent_used", "unknown"),
417
+ mode_used=data.get("mode_used", "standard"),
418
+ metadata=data.get("metadata"),
419
+ tokens_used=data.get("tokens_used"),
420
+ confidence_score=data.get("confidence_score"),
421
+ execution_time=data.get("execution_time"),
422
+ timestamp=data.get("timestamp", datetime.now().isoformat()),
423
+ )
424
+ completed = True
425
+
426
+ def on_completed(data):
427
+ nonlocal result, completed
428
+ if not result:
429
+ # Fallback to generic completion event
430
+ agent_result = data.get("result", data)
431
+ result = AgentResult(
432
+ content=agent_result.get("content", ""),
433
+ agent_used=agent_result.get("agent_used", "unknown"),
434
+ mode_used=agent_result.get("mode_used", "standard"),
435
+ metadata=agent_result.get("metadata"),
436
+ tokens_used=agent_result.get("tokens_used"),
437
+ confidence_score=agent_result.get("confidence_score"),
438
+ execution_time=agent_result.get("execution_time"),
439
+ timestamp=agent_result.get("timestamp", datetime.now().isoformat()),
440
+ )
441
+ completed = True
442
+
443
+ def on_error(err):
444
+ nonlocal error, completed
445
+ error = Exception(err.get("message", err.get("error", "Unknown error")))
446
+ completed = True
447
+
448
+ def on_cancelled():
449
+ nonlocal error, completed
450
+ error = Exception("Agent execution cancelled")
451
+ completed = True
452
+
453
+ # Register event handlers
454
+ sse_client.on(EventType.OPERATION_PROGRESS.value, on_progress)
455
+ sse_client.on("agent_started", on_agent_started)
456
+ sse_client.on("agent_initialized", on_agent_initialized)
457
+ sse_client.on("progress", on_progress)
458
+ sse_client.on("agent_completed", on_agent_completed)
459
+ sse_client.on(EventType.OPERATION_COMPLETED.value, on_completed)
460
+ sse_client.on(EventType.OPERATION_ERROR.value, on_error)
461
+ sse_client.on("error", on_error)
462
+ sse_client.on(EventType.OPERATION_CANCELLED.value, on_cancelled)
463
+
464
+ # Connect and wait
465
+ sse_client.connect(operation_id)
466
+
467
+ # Wait for completion
468
+ import time
469
+
470
+ while not completed:
471
+ if error:
472
+ sse_client.close()
473
+ raise error
474
+ time.sleep(0.1)
475
+
476
+ sse_client.close()
477
+ return result
478
+
479
+ def query(
480
+ self, graph_id: str, message: str, context: Dict[str, Any] = None
481
+ ) -> AgentResult:
482
+ """Convenience method for simple agent queries with auto-selection"""
483
+ request = AgentQueryRequest(message=message, context=context)
484
+ return self.execute_query(graph_id, request, AgentOptions(mode="auto"))
485
+
486
+ def analyze_financials(
487
+ self,
488
+ graph_id: str,
489
+ message: str,
490
+ on_progress: Optional[Callable[[str, Optional[int]], None]] = None,
491
+ ) -> AgentResult:
492
+ """Execute financial agent for financial analysis"""
493
+ request = AgentQueryRequest(message=message)
494
+ return self.execute_agent(
495
+ graph_id, "financial", request, AgentOptions(on_progress=on_progress)
496
+ )
497
+
498
+ def research(
499
+ self,
500
+ graph_id: str,
501
+ message: str,
502
+ on_progress: Optional[Callable[[str, Optional[int]], None]] = None,
503
+ ) -> AgentResult:
504
+ """Execute research agent for deep research"""
505
+ request = AgentQueryRequest(message=message)
506
+ return self.execute_agent(
507
+ graph_id, "research", request, AgentOptions(on_progress=on_progress)
508
+ )
509
+
510
+ def rag(
511
+ self,
512
+ graph_id: str,
513
+ message: str,
514
+ on_progress: Optional[Callable[[str, Optional[int]], None]] = None,
515
+ ) -> AgentResult:
516
+ """Execute RAG agent for fast retrieval"""
517
+ request = AgentQueryRequest(message=message)
518
+ return self.execute_agent(
519
+ graph_id, "rag", request, AgentOptions(on_progress=on_progress)
520
+ )
521
+
522
+ def close(self):
523
+ """Cancel any active SSE connections"""
524
+ if self.sse_client:
525
+ self.sse_client.close()
526
+ self.sse_client = None
@@ -7,6 +7,7 @@ from dataclasses import dataclass
7
7
  from typing import Dict, Any, Optional, Callable
8
8
 
9
9
  from .query_client import QueryClient
10
+ from .agent_client import AgentClient
10
11
  from .operation_client import OperationClient
11
12
  from .table_ingest_client import TableIngestClient
12
13
  from .graph_client import GraphClient
@@ -58,6 +59,7 @@ class RoboSystemsExtensions:
58
59
 
59
60
  # Initialize clients
60
61
  self.query = QueryClient(self.config)
62
+ self.agent = AgentClient(self.config)
61
63
  self.operations = OperationClient(self.config)
62
64
  self.tables = TableIngestClient(self.config)
63
65
  self.graphs = GraphClient(self.config)
@@ -88,6 +90,7 @@ class RoboSystemsExtensions:
88
90
  def close(self):
89
91
  """Clean up all active connections"""
90
92
  self.query.close()
93
+ self.agent.close()
91
94
  self.operations.close_all()
92
95
  self.tables.close()
93
96
  self.graphs.close()
@@ -16,7 +16,8 @@ class CheckoutStatusResponse:
16
16
  Attributes:
17
17
  status (str): Checkout status: 'pending_payment', 'provisioning', 'completed', 'failed'
18
18
  subscription_id (str): Internal subscription ID
19
- resource_id (Union[None, Unset, str]): Resource ID (graph_id or repository name) once provisioned
19
+ resource_id (Union[None, Unset, str]): Resource ID (graph_id for both graphs and repositories) once provisioned.
20
+ For repositories, this is the repository slug (e.g., 'sec')
20
21
  operation_id (Union[None, Unset, str]): SSE operation ID for monitoring provisioning progress
21
22
  error (Union[None, Unset, str]): Error message if checkout failed
22
23
  """
@@ -20,7 +20,8 @@ class CreateCheckoutRequest:
20
20
  Attributes:
21
21
  plan_name (str): Billing plan name (e.g., 'kuzu-standard')
22
22
  resource_type (str): Resource type ('graph' or 'repository')
23
- resource_config (CreateCheckoutRequestResourceConfig): Configuration for the resource to be provisioned
23
+ resource_config (CreateCheckoutRequestResourceConfig): Configuration for the resource to be provisioned. For
24
+ repositories: {'repository_name': 'graph_id'} where graph_id is the repository slug (e.g., 'sec')
24
25
  """
25
26
 
26
27
  plan_name: str
@@ -9,7 +9,10 @@ T = TypeVar("T", bound="CreateCheckoutRequestResourceConfig")
9
9
 
10
10
  @_attrs_define
11
11
  class CreateCheckoutRequestResourceConfig:
12
- """Configuration for the resource to be provisioned"""
12
+ """Configuration for the resource to be provisioned. For repositories: {'repository_name': 'graph_id'} where graph_id
13
+ is the repository slug (e.g., 'sec')
14
+
15
+ """
13
16
 
14
17
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
15
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robosystems-client
3
- Version: 0.2.12
3
+ Version: 0.2.13
4
4
  Summary: Python Client for RoboSystems financial graph database API
5
5
  Author: RFS LLC
6
6
  License: MIT
@@ -6,11 +6,11 @@ robosystems_client/sdk-config.yaml,sha256=Y_A8qSC2zHLYy6d443Rlgdkw2GleOSFjYvq_Qm
6
6
  robosystems_client/types.py,sha256=l5mTsR9GphXnb6qHvveUHNZ_GpiRMqweGNjgKmn6qXE,1349
7
7
  robosystems_client/api/__init__.py,sha256=zTSiG_ujSjAqWPyc435YXaX9XTlpMjiJWBbV-f-YtdA,45
8
8
  robosystems_client/api/agent/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
9
- robosystems_client/api/agent/auto_select_agent.py,sha256=LqCbvraxIRVNZj0deybh5MrihKmgDDx9LTcEyS7GJx8,11990
9
+ robosystems_client/api/agent/auto_select_agent.py,sha256=6jiddkXrfm-JCc3E6CW0qVsSur0dfKkVeVlYttzfCqo,15096
10
10
  robosystems_client/api/agent/batch_process_queries.py,sha256=t_CSO2XTbKAFOWR-Ac8ALxu6ZmCL7ZnYOeDvTonwu2k,6785
11
- robosystems_client/api/agent/execute_specific_agent.py,sha256=HtwtHjYErWGRZjqnWeRGArX34Mcg-_dWgzk8onzlyQ4,6794
12
- robosystems_client/api/agent/get_agent_metadata.py,sha256=ZQi4EHiEDgYQRZ1-B6UGM7rlGRo7o5fY8zDhkhjkwlc,5827
13
- robosystems_client/api/agent/list_agents.py,sha256=w_9vFSwkGfboT0xLU2LmaU4cHuML7VoWEaWG588hv8U,6326
11
+ robosystems_client/api/agent/execute_specific_agent.py,sha256=IqP08Vq-mpT_66i6XqRumVlGVfw4FzZzFJxdfyQkTSc,9608
12
+ robosystems_client/api/agent/get_agent_metadata.py,sha256=CsAMH3vzVXo7KJ95zlf1oT5juLmjIWahsEmFkpG_9Kk,5818
13
+ robosystems_client/api/agent/list_agents.py,sha256=ns_fWdfZxQlrD_IQHTIw5-tyqIxvmpnI1sXn6DgxoZo,6321
14
14
  robosystems_client/api/agent/recommend_agent.py,sha256=WK1826OQeGbLGPQX-xTzSHHVBVKLf-QtQ9gVP0ZjK7c,6689
15
15
  robosystems_client/api/auth/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
16
16
  robosystems_client/api/auth/check_password_strength.py,sha256=4oVo056LpbSGHVH733tjRdZFt0uJ_fJR7IFz1nvxB0E,4673
@@ -61,7 +61,7 @@ robosystems_client/api/credits_/check_credit_balance.py,sha256=0iPXBgsEQs_nWsZKw
61
61
  robosystems_client/api/credits_/check_storage_limits.py,sha256=mo0PRFLmwcVGjdlLBq2r02QcoVrmcH8EozV2RcFesA8,6187
62
62
  robosystems_client/api/credits_/get_credit_summary.py,sha256=-uvETiHAuFBDtzeIAc8KnRnf6irV74MnsKAWWOltZwo,6041
63
63
  robosystems_client/api/credits_/get_storage_usage.py,sha256=oFlj7Ziiopk9vXRWAtHHDCy_vtvufCNoOrtD9mkFMR0,6770
64
- robosystems_client/api/credits_/list_credit_transactions.py,sha256=QV4W9SMxgN24wlniCTskwamOkIJR_cIwUJK-4hPDGJ0,12218
64
+ robosystems_client/api/credits_/list_credit_transactions.py,sha256=9Ny3tqu2nFTEa7jB8XHABxJjLL8dLPZu4ILRHcjMv9M,12322
65
65
  robosystems_client/api/graph_health/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
66
66
  robosystems_client/api/graph_health/get_database_health.py,sha256=aEUYDiUMQ-paxRrABb9xY3dgs_mW7loyTuz5Y4oX790,7318
67
67
  robosystems_client/api/graph_info/__init__.py,sha256=5vd9uJWAjRqa9xzxzYkLD1yoZ12Ld_bAaNB5WX4fbE8,56
@@ -137,10 +137,11 @@ robosystems_client/api/user/update_user.py,sha256=nSr6ZRKD_Wu1I_QwHWd9GGH1TLYluM
137
137
  robosystems_client/api/user/update_user_api_key.py,sha256=kIccWO3m6t7S6MNCQNndASq533nou-zhF9qg9sNrrZM,4688
138
138
  robosystems_client/api/user/update_user_password.py,sha256=djtS4Aqc0B2efYlqYhAwLyaQ8R1sTIkSP5XPMas5va0,5015
139
139
  robosystems_client/extensions/README.md,sha256=qfHFjdgA_J-zNXziNZE6M1MKJiwVkocBi01w_HhvzEk,16136
140
- robosystems_client/extensions/__init__.py,sha256=izFk2oW08XUKLAulpMwQS_4PrbhL_zsjVdXBiPx-XiU,5210
140
+ robosystems_client/extensions/__init__.py,sha256=XYec7cxFRVLtTAG25MCHtg8Th9m5FsBb5J7q-aediK4,5900
141
+ robosystems_client/extensions/agent_client.py,sha256=Db2C4hrakVsf6ScnBcNk6rte3Kwn4cQBEHsR_joWMTs,17750
141
142
  robosystems_client/extensions/auth_integration.py,sha256=ABOJ8aVjfHehNGNzim1iR9-Cdh7Mr22ce-WgWWeqJt0,6535
142
143
  robosystems_client/extensions/dataframe_utils.py,sha256=gK1bgkVqBF0TvWVdGQvqWrt-ur_Rw11j8uNtMoulLWE,12312
143
- robosystems_client/extensions/extensions.py,sha256=ROnCobUek4Dke9dVx2sTzNKhz309NOG40EDSYHtNmWs,6257
144
+ robosystems_client/extensions/extensions.py,sha256=QkKIc6cU7uJ5unvH5bdrvq8RuAraqGHh7eY7wpwMVy8,6360
144
145
  robosystems_client/extensions/graph_client.py,sha256=OBi0xj0SLIRKLeSu_DiGt2ZakCmhggvNrMP3jdRfEgQ,10326
145
146
  robosystems_client/extensions/operation_client.py,sha256=B1qju-wWQrnrnVJixKGgsA_KEInviwJwdlJxzm_i7P0,13359
146
147
  robosystems_client/extensions/query_client.py,sha256=cX3e8EBoTeg4Lwm6edJYRULM2UmGpfqNX3f48S8TQbE,19430
@@ -196,7 +197,7 @@ robosystems_client/models/cancel_operation_response_canceloperation.py,sha256=ba
196
197
  robosystems_client/models/cancellation_response.py,sha256=2URj3ukcdjh5UvPpnSauP_CLz-9TLM4Il20MYBzzfTw,1955
197
198
  robosystems_client/models/check_credit_balance_response_checkcreditbalance.py,sha256=izJJIZJaZkfJY7pqYg7nBPEv9IgRpJ5WSw6hu7VUZEk,1304
198
199
  robosystems_client/models/checkout_response.py,sha256=NxmvkrjQrSGzhf3qCUILxw6KLezt_pS4TSGo8IyfRpM,4162
199
- robosystems_client/models/checkout_status_response.py,sha256=jA1197K_GlPPK3kFyntZ6SuXdgF2DyR0PBrn4MagiaY,3792
200
+ robosystems_client/models/checkout_status_response.py,sha256=_XDA5ahmEwYyQJ7YDs253fp5U6g_RKkfBkk6K3F5osA,3877
200
201
  robosystems_client/models/connection_options_response.py,sha256=J-VjmGYJn_BOhuExZBlJIHXedyf_CXcoRf2XfklOnrk,2309
201
202
  robosystems_client/models/connection_provider_info.py,sha256=Im0k56k1USElC9G5m2g7elOJ5CHZ08lDOLg5vOmx_AA,6600
202
203
  robosystems_client/models/connection_provider_info_auth_type.py,sha256=cSRUkd90osfbj2MP5Hl8dinEoIXBPrCOIFGYYrk-4D0,201
@@ -207,8 +208,8 @@ robosystems_client/models/connection_response_provider.py,sha256=th7b2inab-PZWaQ
207
208
  robosystems_client/models/copy_operation_limits.py,sha256=S0j8lPVghl-ih5xI-oCHK1hBRZf7SeE7FiZEMjuXzEA,3059
208
209
  robosystems_client/models/create_api_key_request.py,sha256=aP-X8CtffeRUXDqG-WzM4gn8_DOwPt5CURmGYIbjgqY,2829
209
210
  robosystems_client/models/create_api_key_response.py,sha256=9cqlZDogqxdSXxxHT6PnfClTP-Q35CvfQjNIvPEe1Pw,1797
210
- robosystems_client/models/create_checkout_request.py,sha256=c5FjtddJ2vnzQxaDOhfNO34ZrqSuswoPjXYdVq-us04,2439
211
- robosystems_client/models/create_checkout_request_resource_config.py,sha256=J76EoSg2Pdz1741GwzAVfV9TrWzXJmAQCZnpdz76akc,1306
211
+ robosystems_client/models/create_checkout_request.py,sha256=NoiSMuFMG24iMipMTwy34PnYyEt1x9fNauEVatIB1-s,2552
212
+ robosystems_client/models/create_checkout_request_resource_config.py,sha256=-gYfuQmp61mGggvvMZe4t1YGl9CDuIN0_O49ONbz-qs,1415
212
213
  robosystems_client/models/create_connection_request.py,sha256=B9riNF1QK1P3RB680lFAJGsZtYbPHVc14u1TBnIv0QQ,5948
213
214
  robosystems_client/models/create_connection_request_provider.py,sha256=TBZm3ApK31i1jit4WUxqtFtJq-LYKqXeVAHJIJh9Slw,190
214
215
  robosystems_client/models/create_graph_request.py,sha256=THs5EEB8-cpfkyDUu0XzwuWMnScboE_ir3vrQ44mPJY,6174
@@ -392,7 +393,7 @@ robosystems_client/models/upgrade_subscription_request.py,sha256=Ph-Wu1pA6zOEi6j
392
393
  robosystems_client/models/user_graphs_response.py,sha256=k4zDipn-9HqwiJHUq8Si1XSemCDJv_t9SfTtJxc6w_k,2648
393
394
  robosystems_client/models/user_response.py,sha256=uMYsvPKLo5YUwsT-PV8Tu5qrFG81X8-ODBllFyX2C6E,3650
394
395
  robosystems_client/models/validation_error.py,sha256=R77OuQG2nJ3WDFfY--xbEhg6x1D7gAAp_1UdnG8Ka2A,1949
395
- robosystems_client-0.2.12.dist-info/METADATA,sha256=X9sdwC35xr9TCGACrEQMT7_Eh_cboFa_xulAfJq3P8U,3904
396
- robosystems_client-0.2.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
397
- robosystems_client-0.2.12.dist-info/licenses/LICENSE,sha256=LjFqQPU4eQh7jAQ04SmE9eC0j74HCdXvzbo0hjW4mWo,1063
398
- robosystems_client-0.2.12.dist-info/RECORD,,
396
+ robosystems_client-0.2.13.dist-info/METADATA,sha256=TYN9PHsu7MNUQJJ2lfmtnnR26gvDE914orgzefglUN4,3904
397
+ robosystems_client-0.2.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
398
+ robosystems_client-0.2.13.dist-info/licenses/LICENSE,sha256=LjFqQPU4eQh7jAQ04SmE9eC0j74HCdXvzbo0hjW4mWo,1063
399
+ robosystems_client-0.2.13.dist-info/RECORD,,