xpander-sdk 2.0.211__py3-none-any.whl → 2.0.213__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.
@@ -276,6 +276,8 @@ class OrchestrationNode(XPanderSharedModel):
276
276
  input_type: Expected input format. Defaults to Text.
277
277
  input_schema: JSON schema for structured input validation.
278
278
  input_instructions: Instructions to use for structured input.
279
+ agentic_context_input_instructions: Instructions to use for agentic context injection.
280
+ agentic_context_output_instructions: Instructions to use for agentic context update.
279
281
  """
280
282
 
281
283
  type: OrchestrationNodeType
@@ -304,3 +306,5 @@ class OrchestrationNode(XPanderSharedModel):
304
306
  input_type: Optional[OutputFormat] = OutputFormat.Text
305
307
  input_schema: Optional[Dict] = None
306
308
  input_instructions: Optional[str] = None
309
+ agentic_context_input_instructions: Optional[str] = None
310
+ agentic_context_output_instructions: Optional[str] = None
@@ -419,6 +419,7 @@ class Agent(XPanderSharedModel):
419
419
  title: Optional[str] = None,
420
420
  think_mode: Optional[ThinkMode] = ThinkMode.Default,
421
421
  disable_attachment_injection: Optional[bool] = False,
422
+ user_tokens: Optional[Dict] = None
422
423
  ) -> Task:
423
424
  """
424
425
  Asynchronously create a new task and link it to this agent.
@@ -443,6 +444,7 @@ class Agent(XPanderSharedModel):
443
444
  title (Optional[str]): Optional task title.
444
445
  think_mode (Optional[ThinkMode]): Optional task think mode, defaults to "default".
445
446
  disable_attachment_injection (Optional[bool]): Optional selection if to disable attachment injection to the context window.
447
+ user_tokens: Optional[Dict]: User tokens to be passed and injected for MCP Auth
446
448
 
447
449
  Returns:
448
450
  Task: Created Task object linked to this agent.
@@ -477,6 +479,7 @@ class Agent(XPanderSharedModel):
477
479
  "title": title,
478
480
  "think_mode": think_mode.value,
479
481
  "disable_attachment_injection": disable_attachment_injection,
482
+ "user_tokens": user_tokens,
480
483
  },
481
484
  )
482
485
  return Task(**created_task, configuration=self.configuration)
@@ -980,19 +980,30 @@ async def _resolve_agent_tools(agent: Agent, task: Optional[Task] = None, auth_e
980
980
  if not task:
981
981
  raise ValueError("MCP server with OAuth authentication detected but task not sent")
982
982
 
983
- if not task.input.user or not task.input.user.id:
984
- raise ValueError("MCP server with OAuth authentication detected but user id not set on the task (task.input.user.id)")
985
-
986
- auth_result: MCPOAuthGetTokenResponse = await authenticate_mcp_server(mcp_server=mcp,task=task,user_id=task.input.user.id, auth_events_callback=auth_events_callback)
987
- if auth_result and auth_result.data and isinstance(auth_result.data, MCPOAuthGetTokenGenericResponse) and auth_result.data.message:
988
- raise ValueError(f"MCP authentication failed: {auth_result.data.message}")
989
- if not auth_result:
990
- raise ValueError("MCP Server authentication failed")
991
- if auth_result.type != MCPOAuthResponseType.TOKEN_READY:
992
- raise ValueError("MCP Server authentication timeout")
993
- mcp.api_key = auth_result.data.access_token
983
+ # check if we have user tokens for this mcp
984
+ graph_item = next((gi for gi in agent.graph.items if gi.type == AgentGraphItemType.MCP and gi.settings and gi.settings.mcp_settings and gi.settings.mcp_settings.url and gi.settings.mcp_settings.url == mcp.url), None)
985
+ if graph_item and task.user_tokens and isinstance(task.user_tokens, dict) and graph_item.id in task.user_tokens:
986
+ mcp.api_key = task.user_tokens[graph_item.id]
987
+ else:
988
+ if not task.input.user or not task.input.user.id:
989
+ raise ValueError("MCP server with OAuth authentication detected but user id not set on the task (task.input.user.id)")
990
+
991
+ auth_result: MCPOAuthGetTokenResponse = await authenticate_mcp_server(mcp_server=mcp,task=task,user_id=task.input.user.id, auth_events_callback=auth_events_callback)
992
+ if auth_result and auth_result.data and isinstance(auth_result.data, MCPOAuthGetTokenGenericResponse) and auth_result.data.message:
993
+ raise ValueError(f"MCP authentication failed: {auth_result.data.message}")
994
+ if not auth_result:
995
+ raise ValueError("MCP Server authentication failed")
996
+ if auth_result.type != MCPOAuthResponseType.TOKEN_READY:
997
+ raise ValueError("MCP Server authentication timeout")
998
+ mcp.api_key = auth_result.data.access_token
994
999
 
995
1000
  if mcp.api_key:
1001
+
1002
+ # check if we have user tokens for this mcp
1003
+ graph_item = next((gi for gi in agent.graph.items if gi.type == AgentGraphItemType.MCP and gi.settings and gi.settings.mcp_settings and gi.settings.mcp_settings.url and gi.settings.mcp_settings.url == mcp.url), None)
1004
+ if graph_item and task.user_tokens and isinstance(task.user_tokens, dict) and graph_item.id in task.user_tokens:
1005
+ mcp.api_key = task.user_tokens[graph_item.id]
1006
+
996
1007
  if not mcp.headers:
997
1008
  mcp.headers = {}
998
1009
  mcp.headers["Authorization"] = f"Bearer {mcp.api_key}"
@@ -186,6 +186,7 @@ class Task(XPanderSharedModel):
186
186
  title: Optional[str] = (None,)
187
187
  think_mode: Optional[ThinkMode] = ThinkMode.Default
188
188
  disable_attachment_injection: Optional[bool] = False
189
+ user_tokens: Optional[Dict] = None
189
190
  deep_planning: Optional[DeepPlanning] = Field(default_factory=DeepPlanning)
190
191
  execution_attempts: Optional[int] = 1
191
192
 
@@ -240,6 +240,7 @@ class Tasks(ModuleBase):
240
240
  title: Optional[str] = None,
241
241
  think_mode: Optional[ThinkMode] = ThinkMode.Default,
242
242
  disable_attachment_injection: Optional[bool] = False,
243
+ user_tokens: Optional[Dict] = None
243
244
  ) -> Task:
244
245
  """
245
246
  Asynchronously create a new task for a specific agent.
@@ -268,6 +269,7 @@ class Tasks(ModuleBase):
268
269
  title (Optional[str]): Optional task title.
269
270
  think_mode (Optional[ThinkMode]): Optional task think mode, defaults to "default".
270
271
  disable_attachment_injection (Optional[bool]): Optional selection if to disable attachment injection to the context window.
272
+ user_tokens: Optional[Dict]: User tokens to be passed and injected for MCP Auth
271
273
 
272
274
  Returns:
273
275
  Task: Newly created task object containing all initial configuration data.
@@ -313,6 +315,7 @@ class Tasks(ModuleBase):
313
315
  "title": title,
314
316
  "think_mode": think_mode.value,
315
317
  "disable_attachment_injection": disable_attachment_injection,
318
+ "user_tokens": user_tokens
316
319
  },
317
320
  )
318
321
  return Task(**created_task, configuration=self.configuration)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xpander-sdk
3
- Version: 2.0.211
3
+ Version: 2.0.213
4
4
  Summary: xpander.ai Backend-as-a-service for AI Agents - SDK
5
5
  Home-page: https://www.xpander.ai
6
6
  Author: xpanderAI
@@ -16,7 +16,7 @@ xpander_sdk/models/events.py,sha256=HnootQSUIIRM4BIdaTbuPUEJ55hLVtA7KDCSsnHeBKw,
16
16
  xpander_sdk/models/frameworks.py,sha256=-7W_m5cvgS1qLp0gGAFP4noNWT82IT1ZqtQv5WuOC2k,2939
17
17
  xpander_sdk/models/generic.py,sha256=yw5rBRdZ-6ucTI4AwtskenddepOooiFRM--9xx5jrL8,681
18
18
  xpander_sdk/models/notifications.py,sha256=3tK4Z2gmA6YxRtqsWgzjiVISgJyHvmjTooiRgzrj5zY,3373
19
- xpander_sdk/models/orchestrations.py,sha256=yHg5dcmOBUJqlNtidnPdwiRWD_yQHET28un3NUwSTm0,11646
19
+ xpander_sdk/models/orchestrations.py,sha256=c-A6GHGfAneWUKniIFiwTP9f4mBo27rKcNlcgHJ8TxQ,11957
20
20
  xpander_sdk/models/shared.py,sha256=gW88kA_UslNinUjtQKpLVF0sHDZnckwLWexRapxPivU,3125
21
21
  xpander_sdk/models/user.py,sha256=_FTG0JO6iTrbcvJp-BBJ6nuj281zhyQB5ldQkBCyYDU,749
22
22
  xpander_sdk/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -27,7 +27,7 @@ xpander_sdk/modules/agents/models/agent.py,sha256=9foTMH4UOfgT9mPfObpeRxHEJButyQ
27
27
  xpander_sdk/modules/agents/models/agent_list.py,sha256=byEayS2uLwDKaVT3lAHltrFocQFKpr8XEwQ6NTEEEMo,4081
28
28
  xpander_sdk/modules/agents/models/knowledge_bases.py,sha256=YimpjVJxWe8YTbGMD6oGQOA_YV8ztHQHTTBOaBB44ZM,1037
29
29
  xpander_sdk/modules/agents/sub_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- xpander_sdk/modules/agents/sub_modules/agent.py,sha256=Mio5H9yoHKEnGtcDJB-87Unn9o88XWLzrr1QAAQhxJo,36948
30
+ xpander_sdk/modules/agents/sub_modules/agent.py,sha256=xMO_e8_sU--EVnPZDttyB-vo_t2Mmg84W_umTzfRIxg,37131
31
31
  xpander_sdk/modules/agents/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  xpander_sdk/modules/agents/utils/generic.py,sha256=XbG4OeHMQo4gVYCsasMlW_b8OoqS1xL3MlUZSjXivu0,81
33
33
  xpander_sdk/modules/backend/__init__.py,sha256=-NjikuZgHBhOM9xHML2vKsG0ICX9S2RKHktrWaODCBE,171
@@ -36,7 +36,7 @@ xpander_sdk/modules/backend/events_registry.py,sha256=d0V-lsz3I3G1QB643EM1i-a5oJ
36
36
  xpander_sdk/modules/backend/decorators/__init__.py,sha256=ub9c8G0Ll6AuCvfcFB6rqR8iamMJxtcW7QjWw3WSkPU,106
37
37
  xpander_sdk/modules/backend/decorators/on_auth_event.py,sha256=Xt_x9nncujMcF_SgM5hG6M-iZ6B-rDS97EPmgZkGdMk,4715
38
38
  xpander_sdk/modules/backend/frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- xpander_sdk/modules/backend/frameworks/agno.py,sha256=VQlFVhfz4NXPaQNzBXZLWXIJ2j_0UFDmozRFdY8emfE,42760
39
+ xpander_sdk/modules/backend/frameworks/agno.py,sha256=9uk2Ht-prT-2otEIfai5Rz2_hGi9wKrhf5GeNnTwCOo,43836
40
40
  xpander_sdk/modules/backend/frameworks/dispatch.py,sha256=ht9hT5-cHATofQbWsbWeTARx51Hne3TNNNjw6KECRtA,1814
41
41
  xpander_sdk/modules/backend/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  xpander_sdk/modules/backend/utils/mcp_oauth.py,sha256=5sYJcw557V3pSgutxUFzkBp5YxUJFUoB1V1rEe814pc,5430
@@ -62,12 +62,12 @@ xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base.py,sha256=0HTUYjC
62
62
  xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base_document_item.py,sha256=oLQApvsd573ZfYGV7Ji4XB5bNUyUFIeZWPIhZS1DIM4,1815
63
63
  xpander_sdk/modules/knowledge_bases/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  xpander_sdk/modules/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- xpander_sdk/modules/tasks/tasks_module.py,sha256=wOMegfNQ4qoY7PEII5828SjWrP0Jocg2TRsFOaaCmW0,20444
65
+ xpander_sdk/modules/tasks/tasks_module.py,sha256=Hn-Gkhv3gaj_sKAc6qYI1r18tV8UDez-J_FVJWFhhZg,20626
66
66
  xpander_sdk/modules/tasks/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  xpander_sdk/modules/tasks/models/task.py,sha256=pYzXg0jnE6ft4pVFvxiVexO5eMUFkg1VxXybzFtL1ys,4483
68
68
  xpander_sdk/modules/tasks/models/tasks_list.py,sha256=8V1T0vCtGN79qLMPwe37pOA7Wvuf8pbJNOhWL0BPo-8,5126
69
69
  xpander_sdk/modules/tasks/sub_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- xpander_sdk/modules/tasks/sub_modules/task.py,sha256=zRDHsE_LnYYa3OC79wVQqeRnpAogddHVI2R6-3IepJ4,37920
70
+ xpander_sdk/modules/tasks/sub_modules/task.py,sha256=0OsZnoP91od46jw5qln_nVqrK0gDre4q0UFQ47qbjA4,37959
71
71
  xpander_sdk/modules/tasks/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  xpander_sdk/modules/tasks/utils/files.py,sha256=KqqwSQSrwim2-H3XP5wOadDDfngAyEI034tA7Oon-vc,3631
73
73
  xpander_sdk/modules/tools_repository/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -90,8 +90,8 @@ xpander_sdk/utils/generic.py,sha256=XrRj2-L8c0YWpfPdDyXE-pVL-6lKF9VpyZzKHQ4wuCc,
90
90
  xpander_sdk/utils/tools.py,sha256=lyFkq2yP7DxBkyXYVlnFRwDhQCvf0fZZMDm5fBycze4,1244
91
91
  xpander_sdk/utils/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
92
  xpander_sdk/utils/agents/compactization_agent.py,sha256=S_U1dSmDC7I0JUsp_THUYjfutEI5QMBaMPJEXGp0_Sw,14389
93
- xpander_sdk-2.0.211.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
94
- xpander_sdk-2.0.211.dist-info/METADATA,sha256=pI60oWddX14WdaIMOX4x-qRbMG37kZAWb5rNG5dWZcc,17952
95
- xpander_sdk-2.0.211.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
96
- xpander_sdk-2.0.211.dist-info/top_level.txt,sha256=UCjnxQpsMy5Zoe7lmRuVDO6DI2V_6PgRFfm4oizRbVs,12
97
- xpander_sdk-2.0.211.dist-info/RECORD,,
93
+ xpander_sdk-2.0.213.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
94
+ xpander_sdk-2.0.213.dist-info/METADATA,sha256=4kBDIXQ7zHVN-6mjpgq6PUjYs_yme_fNHiP_ELFBlvQ,17952
95
+ xpander_sdk-2.0.213.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
96
+ xpander_sdk-2.0.213.dist-info/top_level.txt,sha256=UCjnxQpsMy5Zoe7lmRuVDO6DI2V_6PgRFfm4oizRbVs,12
97
+ xpander_sdk-2.0.213.dist-info/RECORD,,