phenoml 0.0.1__py3-none-any.whl → 0.0.2__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 phenoml might be problematic. Click here for more details.

Files changed (38) hide show
  1. phenoml/agent/__init__.py +12 -12
  2. phenoml/agent/client.py +147 -10
  3. phenoml/agent/prompts/client.py +60 -60
  4. phenoml/agent/prompts/raw_client.py +134 -134
  5. phenoml/agent/raw_client.py +221 -14
  6. phenoml/agent/types/__init__.py +12 -12
  7. phenoml/agent/types/agent_get_chat_messages_request_order.py +5 -0
  8. phenoml/agent/types/agent_get_chat_messages_response.py +22 -0
  9. phenoml/agent/types/agent_provider.py +7 -0
  10. phenoml/agent/types/agent_template.py +7 -2
  11. phenoml/agent/types/chat_message_template.py +72 -0
  12. phenoml/agent/types/chat_session_template.py +67 -0
  13. phenoml/agent/types/provider_type.py +5 -0
  14. phenoml/core/client_wrapper.py +2 -2
  15. phenoml/tools/__init__.py +12 -0
  16. phenoml/tools/client.py +3 -0
  17. phenoml/tools/mcp_server/__init__.py +7 -0
  18. phenoml/tools/mcp_server/client.py +336 -0
  19. phenoml/tools/mcp_server/raw_client.py +641 -0
  20. phenoml/tools/mcp_server/tools/__init__.py +4 -0
  21. phenoml/tools/mcp_server/tools/client.py +358 -0
  22. phenoml/tools/mcp_server/tools/raw_client.py +656 -0
  23. phenoml/tools/types/__init__.py +10 -0
  24. phenoml/tools/types/mcp_server_response.py +33 -0
  25. phenoml/tools/types/mcp_server_response_data.py +51 -0
  26. phenoml/tools/types/mcp_server_tool_call_response.py +37 -0
  27. phenoml/tools/types/mcp_server_tool_response.py +33 -0
  28. phenoml/tools/types/mcp_server_tool_response_data.py +61 -0
  29. {phenoml-0.0.1.dist-info → phenoml-0.0.2.dist-info}/METADATA +1 -1
  30. {phenoml-0.0.1.dist-info → phenoml-0.0.2.dist-info}/RECORD +31 -21
  31. phenoml/agent/types/agent_create_request_provider.py +0 -13
  32. phenoml/agent/types/agent_create_request_provider_item.py +0 -7
  33. phenoml/agent/types/agent_template_provider.py +0 -13
  34. phenoml/agent/types/agent_template_provider_item.py +0 -5
  35. phenoml/agent/types/agent_update_request_provider.py +0 -13
  36. phenoml/agent/types/agent_update_request_provider_item.py +0 -7
  37. phenoml-0.0.1.dist-info/LICENSE +0 -21
  38. {phenoml-0.0.1.dist-info → phenoml-0.0.2.dist-info}/WHEEL +0 -0
phenoml/agent/__init__.py CHANGED
@@ -4,23 +4,23 @@
4
4
 
5
5
  from .types import (
6
6
  AgentChatResponse,
7
- AgentCreateRequestProvider,
8
- AgentCreateRequestProviderItem,
9
7
  AgentDeleteResponse,
10
8
  AgentFhirConfig,
9
+ AgentGetChatMessagesRequestOrder,
10
+ AgentGetChatMessagesResponse,
11
11
  AgentListResponse,
12
12
  AgentPromptsResponse,
13
+ AgentProvider,
13
14
  AgentResponse,
14
15
  AgentTemplate,
15
- AgentTemplateProvider,
16
- AgentTemplateProviderItem,
17
- AgentUpdateRequestProvider,
18
- AgentUpdateRequestProviderItem,
19
16
  ChatFhirClientConfig,
17
+ ChatMessageTemplate,
18
+ ChatSessionTemplate,
20
19
  JsonPatch,
21
20
  JsonPatchOperation,
22
21
  JsonPatchOperationOp,
23
22
  PromptTemplate,
23
+ ProviderType,
24
24
  SuccessResponse,
25
25
  )
26
26
  from .errors import BadRequestError, ForbiddenError, InternalServerError, NotFoundError, UnauthorizedError
@@ -29,20 +29,19 @@ from .prompts import PromptsDeleteResponse, PromptsListResponse
29
29
 
30
30
  __all__ = [
31
31
  "AgentChatResponse",
32
- "AgentCreateRequestProvider",
33
- "AgentCreateRequestProviderItem",
34
32
  "AgentDeleteResponse",
35
33
  "AgentFhirConfig",
34
+ "AgentGetChatMessagesRequestOrder",
35
+ "AgentGetChatMessagesResponse",
36
36
  "AgentListResponse",
37
37
  "AgentPromptsResponse",
38
+ "AgentProvider",
38
39
  "AgentResponse",
39
40
  "AgentTemplate",
40
- "AgentTemplateProvider",
41
- "AgentTemplateProviderItem",
42
- "AgentUpdateRequestProvider",
43
- "AgentUpdateRequestProviderItem",
44
41
  "BadRequestError",
45
42
  "ChatFhirClientConfig",
43
+ "ChatMessageTemplate",
44
+ "ChatSessionTemplate",
46
45
  "ForbiddenError",
47
46
  "InternalServerError",
48
47
  "JsonPatch",
@@ -52,6 +51,7 @@ __all__ = [
52
51
  "PromptTemplate",
53
52
  "PromptsDeleteResponse",
54
53
  "PromptsListResponse",
54
+ "ProviderType",
55
55
  "SuccessResponse",
56
56
  "UnauthorizedError",
57
57
  "prompts",
phenoml/agent/client.py CHANGED
@@ -7,12 +7,13 @@ from ..core.request_options import RequestOptions
7
7
  from .prompts.client import AsyncPromptsClient, PromptsClient
8
8
  from .raw_client import AsyncRawAgentClient, RawAgentClient
9
9
  from .types.agent_chat_response import AgentChatResponse
10
- from .types.agent_create_request_provider import AgentCreateRequestProvider
11
10
  from .types.agent_delete_response import AgentDeleteResponse
12
11
  from .types.agent_fhir_config import AgentFhirConfig
12
+ from .types.agent_get_chat_messages_request_order import AgentGetChatMessagesRequestOrder
13
+ from .types.agent_get_chat_messages_response import AgentGetChatMessagesResponse
13
14
  from .types.agent_list_response import AgentListResponse
15
+ from .types.agent_provider import AgentProvider
14
16
  from .types.agent_response import AgentResponse
15
- from .types.agent_update_request_provider import AgentUpdateRequestProvider
16
17
  from .types.chat_fhir_client_config import ChatFhirClientConfig
17
18
  from .types.json_patch import JsonPatch
18
19
 
@@ -43,8 +44,9 @@ class AgentClient:
43
44
  prompts: typing.Sequence[str],
44
45
  is_active: bool,
45
46
  description: typing.Optional[str] = OMIT,
47
+ tools: typing.Optional[typing.Sequence[str]] = OMIT,
46
48
  tags: typing.Optional[typing.Sequence[str]] = OMIT,
47
- provider: typing.Optional[AgentCreateRequestProvider] = OMIT,
49
+ provider: typing.Optional[AgentProvider] = OMIT,
48
50
  meta: typing.Optional[AgentFhirConfig] = OMIT,
49
51
  request_options: typing.Optional[RequestOptions] = None,
50
52
  ) -> AgentResponse:
@@ -65,10 +67,13 @@ class AgentClient:
65
67
  description : typing.Optional[str]
66
68
  Agent description
67
69
 
70
+ tools : typing.Optional[typing.Sequence[str]]
71
+ Array of MCP server tool IDs to use for this agent
72
+
68
73
  tags : typing.Optional[typing.Sequence[str]]
69
74
  Tags for categorizing the agent
70
75
 
71
- provider : typing.Optional[AgentCreateRequestProvider]
76
+ provider : typing.Optional[AgentProvider]
72
77
  FHIR provider type - can be a single provider or array of providers
73
78
 
74
79
  meta : typing.Optional[AgentFhirConfig]
@@ -99,6 +104,7 @@ class AgentClient:
99
104
  prompts=prompts,
100
105
  is_active=is_active,
101
106
  description=description,
107
+ tools=tools,
102
108
  tags=tags,
103
109
  provider=provider,
104
110
  meta=meta,
@@ -182,9 +188,10 @@ class AgentClient:
182
188
  name: typing.Optional[str] = OMIT,
183
189
  description: typing.Optional[str] = OMIT,
184
190
  prompts: typing.Optional[typing.Sequence[str]] = OMIT,
191
+ tools: typing.Optional[typing.Sequence[str]] = OMIT,
185
192
  is_active: typing.Optional[bool] = OMIT,
186
193
  tags: typing.Optional[typing.Sequence[str]] = OMIT,
187
- provider: typing.Optional[AgentUpdateRequestProvider] = OMIT,
194
+ provider: typing.Optional[AgentProvider] = OMIT,
188
195
  meta: typing.Optional[AgentFhirConfig] = OMIT,
189
196
  request_options: typing.Optional[RequestOptions] = None,
190
197
  ) -> AgentResponse:
@@ -205,13 +212,16 @@ class AgentClient:
205
212
  prompts : typing.Optional[typing.Sequence[str]]
206
213
  Array of prompt IDs to use for this agent
207
214
 
215
+ tools : typing.Optional[typing.Sequence[str]]
216
+ Array of MCP server tool IDs to use for this agent
217
+
208
218
  is_active : typing.Optional[bool]
209
219
  Whether the agent is active
210
220
 
211
221
  tags : typing.Optional[typing.Sequence[str]]
212
222
  Tags for categorizing the agent
213
223
 
214
- provider : typing.Optional[AgentUpdateRequestProvider]
224
+ provider : typing.Optional[AgentProvider]
215
225
  FHIR provider type - can be a single provider or array of providers
216
226
 
217
227
  meta : typing.Optional[AgentFhirConfig]
@@ -240,6 +250,7 @@ class AgentClient:
240
250
  name=name,
241
251
  description=description,
242
252
  prompts=prompts,
253
+ tools=tools,
243
254
  is_active=is_active,
244
255
  tags=tags,
245
256
  provider=provider,
@@ -391,6 +402,60 @@ class AgentClient:
391
402
  )
392
403
  return _response.data
393
404
 
405
+ def get_chat_messages(
406
+ self,
407
+ *,
408
+ chat_session_id: str,
409
+ num_messages: typing.Optional[int] = None,
410
+ role: typing.Optional[str] = None,
411
+ order: typing.Optional[AgentGetChatMessagesRequestOrder] = None,
412
+ request_options: typing.Optional[RequestOptions] = None,
413
+ ) -> AgentGetChatMessagesResponse:
414
+ """
415
+ Retrieves a list of chat messages for a given chat session
416
+
417
+ Parameters
418
+ ----------
419
+ chat_session_id : str
420
+ Chat session ID
421
+
422
+ num_messages : typing.Optional[int]
423
+ Number of messages to return
424
+
425
+ role : typing.Optional[str]
426
+ Filter by role
427
+
428
+ order : typing.Optional[AgentGetChatMessagesRequestOrder]
429
+ Order of messages
430
+
431
+ request_options : typing.Optional[RequestOptions]
432
+ Request-specific configuration.
433
+
434
+ Returns
435
+ -------
436
+ AgentGetChatMessagesResponse
437
+ Chat messages retrieved successfully
438
+
439
+ Examples
440
+ --------
441
+ from phenoml import phenoml
442
+
443
+ client = phenoml(
444
+ token="YOUR_TOKEN",
445
+ )
446
+ client.agent.get_chat_messages(
447
+ chat_session_id="chat_session_id",
448
+ )
449
+ """
450
+ _response = self._raw_client.get_chat_messages(
451
+ chat_session_id=chat_session_id,
452
+ num_messages=num_messages,
453
+ role=role,
454
+ order=order,
455
+ request_options=request_options,
456
+ )
457
+ return _response.data
458
+
394
459
 
395
460
  class AsyncAgentClient:
396
461
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -415,8 +480,9 @@ class AsyncAgentClient:
415
480
  prompts: typing.Sequence[str],
416
481
  is_active: bool,
417
482
  description: typing.Optional[str] = OMIT,
483
+ tools: typing.Optional[typing.Sequence[str]] = OMIT,
418
484
  tags: typing.Optional[typing.Sequence[str]] = OMIT,
419
- provider: typing.Optional[AgentCreateRequestProvider] = OMIT,
485
+ provider: typing.Optional[AgentProvider] = OMIT,
420
486
  meta: typing.Optional[AgentFhirConfig] = OMIT,
421
487
  request_options: typing.Optional[RequestOptions] = None,
422
488
  ) -> AgentResponse:
@@ -437,10 +503,13 @@ class AsyncAgentClient:
437
503
  description : typing.Optional[str]
438
504
  Agent description
439
505
 
506
+ tools : typing.Optional[typing.Sequence[str]]
507
+ Array of MCP server tool IDs to use for this agent
508
+
440
509
  tags : typing.Optional[typing.Sequence[str]]
441
510
  Tags for categorizing the agent
442
511
 
443
- provider : typing.Optional[AgentCreateRequestProvider]
512
+ provider : typing.Optional[AgentProvider]
444
513
  FHIR provider type - can be a single provider or array of providers
445
514
 
446
515
  meta : typing.Optional[AgentFhirConfig]
@@ -479,6 +548,7 @@ class AsyncAgentClient:
479
548
  prompts=prompts,
480
549
  is_active=is_active,
481
550
  description=description,
551
+ tools=tools,
482
552
  tags=tags,
483
553
  provider=provider,
484
554
  meta=meta,
@@ -578,9 +648,10 @@ class AsyncAgentClient:
578
648
  name: typing.Optional[str] = OMIT,
579
649
  description: typing.Optional[str] = OMIT,
580
650
  prompts: typing.Optional[typing.Sequence[str]] = OMIT,
651
+ tools: typing.Optional[typing.Sequence[str]] = OMIT,
581
652
  is_active: typing.Optional[bool] = OMIT,
582
653
  tags: typing.Optional[typing.Sequence[str]] = OMIT,
583
- provider: typing.Optional[AgentUpdateRequestProvider] = OMIT,
654
+ provider: typing.Optional[AgentProvider] = OMIT,
584
655
  meta: typing.Optional[AgentFhirConfig] = OMIT,
585
656
  request_options: typing.Optional[RequestOptions] = None,
586
657
  ) -> AgentResponse:
@@ -601,13 +672,16 @@ class AsyncAgentClient:
601
672
  prompts : typing.Optional[typing.Sequence[str]]
602
673
  Array of prompt IDs to use for this agent
603
674
 
675
+ tools : typing.Optional[typing.Sequence[str]]
676
+ Array of MCP server tool IDs to use for this agent
677
+
604
678
  is_active : typing.Optional[bool]
605
679
  Whether the agent is active
606
680
 
607
681
  tags : typing.Optional[typing.Sequence[str]]
608
682
  Tags for categorizing the agent
609
683
 
610
- provider : typing.Optional[AgentUpdateRequestProvider]
684
+ provider : typing.Optional[AgentProvider]
611
685
  FHIR provider type - can be a single provider or array of providers
612
686
 
613
687
  meta : typing.Optional[AgentFhirConfig]
@@ -644,6 +718,7 @@ class AsyncAgentClient:
644
718
  name=name,
645
719
  description=description,
646
720
  prompts=prompts,
721
+ tools=tools,
647
722
  is_active=is_active,
648
723
  tags=tags,
649
724
  provider=provider,
@@ -818,3 +893,65 @@ class AsyncAgentClient:
818
893
  request_options=request_options,
819
894
  )
820
895
  return _response.data
896
+
897
+ async def get_chat_messages(
898
+ self,
899
+ *,
900
+ chat_session_id: str,
901
+ num_messages: typing.Optional[int] = None,
902
+ role: typing.Optional[str] = None,
903
+ order: typing.Optional[AgentGetChatMessagesRequestOrder] = None,
904
+ request_options: typing.Optional[RequestOptions] = None,
905
+ ) -> AgentGetChatMessagesResponse:
906
+ """
907
+ Retrieves a list of chat messages for a given chat session
908
+
909
+ Parameters
910
+ ----------
911
+ chat_session_id : str
912
+ Chat session ID
913
+
914
+ num_messages : typing.Optional[int]
915
+ Number of messages to return
916
+
917
+ role : typing.Optional[str]
918
+ Filter by role
919
+
920
+ order : typing.Optional[AgentGetChatMessagesRequestOrder]
921
+ Order of messages
922
+
923
+ request_options : typing.Optional[RequestOptions]
924
+ Request-specific configuration.
925
+
926
+ Returns
927
+ -------
928
+ AgentGetChatMessagesResponse
929
+ Chat messages retrieved successfully
930
+
931
+ Examples
932
+ --------
933
+ import asyncio
934
+
935
+ from phenoml import Asyncphenoml
936
+
937
+ client = Asyncphenoml(
938
+ token="YOUR_TOKEN",
939
+ )
940
+
941
+
942
+ async def main() -> None:
943
+ await client.agent.get_chat_messages(
944
+ chat_session_id="chat_session_id",
945
+ )
946
+
947
+
948
+ asyncio.run(main())
949
+ """
950
+ _response = await self._raw_client.get_chat_messages(
951
+ chat_session_id=chat_session_id,
952
+ num_messages=num_messages,
953
+ role=role,
954
+ order=order,
955
+ request_options=request_options,
956
+ )
957
+ return _response.data
@@ -30,32 +30,6 @@ class PromptsClient:
30
30
  """
31
31
  return self._raw_client
32
32
 
33
- def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> PromptsListResponse:
34
- """
35
- Retrieves a list of agent prompts belonging to the authenticated user
36
-
37
- Parameters
38
- ----------
39
- request_options : typing.Optional[RequestOptions]
40
- Request-specific configuration.
41
-
42
- Returns
43
- -------
44
- PromptsListResponse
45
- Prompts retrieved successfully
46
-
47
- Examples
48
- --------
49
- from phenoml import phenoml
50
-
51
- client = phenoml(
52
- token="YOUR_TOKEN",
53
- )
54
- client.agent.prompts.list()
55
- """
56
- _response = self._raw_client.list(request_options=request_options)
57
- return _response.data
58
-
59
33
  def create(
60
34
  self,
61
35
  *,
@@ -122,6 +96,32 @@ class PromptsClient:
122
96
  )
123
97
  return _response.data
124
98
 
99
+ def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> PromptsListResponse:
100
+ """
101
+ Retrieves a list of agent prompts belonging to the authenticated user
102
+
103
+ Parameters
104
+ ----------
105
+ request_options : typing.Optional[RequestOptions]
106
+ Request-specific configuration.
107
+
108
+ Returns
109
+ -------
110
+ PromptsListResponse
111
+ Prompts retrieved successfully
112
+
113
+ Examples
114
+ --------
115
+ from phenoml import phenoml
116
+
117
+ client = phenoml(
118
+ token="YOUR_TOKEN",
119
+ )
120
+ client.agent.prompts.list()
121
+ """
122
+ _response = self._raw_client.list(request_options=request_options)
123
+ return _response.data
124
+
125
125
  def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> AgentPromptsResponse:
126
126
  """
127
127
  Retrieves a specific prompt by its ID
@@ -347,40 +347,6 @@ class AsyncPromptsClient:
347
347
  """
348
348
  return self._raw_client
349
349
 
350
- async def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> PromptsListResponse:
351
- """
352
- Retrieves a list of agent prompts belonging to the authenticated user
353
-
354
- Parameters
355
- ----------
356
- request_options : typing.Optional[RequestOptions]
357
- Request-specific configuration.
358
-
359
- Returns
360
- -------
361
- PromptsListResponse
362
- Prompts retrieved successfully
363
-
364
- Examples
365
- --------
366
- import asyncio
367
-
368
- from phenoml import Asyncphenoml
369
-
370
- client = Asyncphenoml(
371
- token="YOUR_TOKEN",
372
- )
373
-
374
-
375
- async def main() -> None:
376
- await client.agent.prompts.list()
377
-
378
-
379
- asyncio.run(main())
380
- """
381
- _response = await self._raw_client.list(request_options=request_options)
382
- return _response.data
383
-
384
350
  async def create(
385
351
  self,
386
352
  *,
@@ -455,6 +421,40 @@ class AsyncPromptsClient:
455
421
  )
456
422
  return _response.data
457
423
 
424
+ async def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> PromptsListResponse:
425
+ """
426
+ Retrieves a list of agent prompts belonging to the authenticated user
427
+
428
+ Parameters
429
+ ----------
430
+ request_options : typing.Optional[RequestOptions]
431
+ Request-specific configuration.
432
+
433
+ Returns
434
+ -------
435
+ PromptsListResponse
436
+ Prompts retrieved successfully
437
+
438
+ Examples
439
+ --------
440
+ import asyncio
441
+
442
+ from phenoml import Asyncphenoml
443
+
444
+ client = Asyncphenoml(
445
+ token="YOUR_TOKEN",
446
+ )
447
+
448
+
449
+ async def main() -> None:
450
+ await client.agent.prompts.list()
451
+
452
+
453
+ asyncio.run(main())
454
+ """
455
+ _response = await self._raw_client.list(request_options=request_options)
456
+ return _response.data
457
+
458
458
  async def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = None) -> AgentPromptsResponse:
459
459
  """
460
460
  Retrieves a specific prompt by its ID