codemie-sdk-python 0.1.429__tar.gz → 0.1.430__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.
Files changed (60) hide show
  1. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/PKG-INFO +1 -1
  2. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/pyproject.toml +1 -1
  3. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/assistant.py +60 -1
  4. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/assistant.py +39 -1
  5. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/README.md +0 -0
  6. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/__init__.py +0 -0
  7. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/auth/__init__.py +0 -0
  8. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/auth/credentials.py +0 -0
  9. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/client/__init__.py +0 -0
  10. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/client/client.py +0 -0
  11. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/exceptions.py +0 -0
  12. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/__init__.py +0 -0
  13. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/admin.py +0 -0
  14. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/analytics.py +0 -0
  15. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/categories.py +0 -0
  16. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/common.py +0 -0
  17. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/conversation.py +0 -0
  18. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/datasource.py +0 -0
  19. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/errors.py +0 -0
  20. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/file_operation.py +0 -0
  21. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/guardrails.py +0 -0
  22. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/integration.py +0 -0
  23. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/llm.py +0 -0
  24. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/mermaid.py +0 -0
  25. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/project.py +0 -0
  26. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/skill.py +0 -0
  27. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/task.py +0 -0
  28. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/user.py +0 -0
  29. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/vendor_assistant.py +0 -0
  30. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/vendor_guardrail.py +0 -0
  31. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/vendor_knowledgebase.py +0 -0
  32. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/vendor_workflow.py +0 -0
  33. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/workflow.py +0 -0
  34. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/workflow_execution_payload.py +0 -0
  35. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/workflow_state.py +0 -0
  36. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/models/workflow_thoughts.py +0 -0
  37. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/admin.py +0 -0
  38. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/analytics.py +0 -0
  39. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/categories.py +0 -0
  40. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/codemie_guardrails.py +0 -0
  41. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/conversation.py +0 -0
  42. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/datasource.py +0 -0
  43. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/files.py +0 -0
  44. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/integration.py +0 -0
  45. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/llm.py +0 -0
  46. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/mermaid.py +0 -0
  47. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/project.py +0 -0
  48. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/skill.py +0 -0
  49. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/task.py +0 -0
  50. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/user.py +0 -0
  51. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/vendor_assistant.py +0 -0
  52. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/vendor_guardrail.py +0 -0
  53. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/vendor_knowledgebase.py +0 -0
  54. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/vendor_workflow.py +0 -0
  55. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/webhook.py +0 -0
  56. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/workflow.py +0 -0
  57. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/workflow_execution.py +0 -0
  58. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/services/workflow_execution_state.py +0 -0
  59. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/utils/__init__.py +0 -0
  60. {codemie_sdk_python-0.1.429 → codemie_sdk_python-0.1.430}/src/codemie_sdk/utils/http.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codemie-sdk-python
3
- Version: 0.1.429
3
+ Version: 0.1.430
4
4
  Summary: CodeMie SDK for Python
5
5
  Author: Vadym Vlasenko
6
6
  Author-email: vadym_vlasenko@epam.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "codemie-sdk-python"
3
- version = "0.1.429"
3
+ version = "0.1.430"
4
4
  description = "CodeMie SDK for Python"
5
5
  authors = [
6
6
  "Vadym Vlasenko <vadym_vlasenko@epam.com>",
@@ -3,7 +3,7 @@
3
3
  import uuid
4
4
  from datetime import datetime
5
5
  from enum import Enum
6
- from typing import Any, Type
6
+ from typing import Any, Type, Optional, List, Union, Dict
7
7
 
8
8
  from pydantic import BaseModel, Field, ConfigDict, model_validator
9
9
 
@@ -455,6 +455,65 @@ class AssistantChatRequest(BaseModel):
455
455
  )
456
456
 
457
457
 
458
+ class AgentMode(str, Enum):
459
+ """Enum for agent execution mode."""
460
+
461
+ GENERAL = "general"
462
+ PLAN_EXECUTE = "plan_execute"
463
+
464
+
465
+ class VirtualAssistantChatRequest(BaseModel):
466
+ """Request model for ephemeral virtual assistant inference.
467
+
468
+ The assistant definition is provided inline; no database record is used.
469
+ History is never persisted regardless of save_history value.
470
+ """
471
+
472
+ model_config = ConfigDict(extra="ignore", use_enum_values=True)
473
+
474
+ # --- Assistant definition fields ---
475
+ system_prompt: str = Field(
476
+ default="", description="System prompt for the virtual assistant."
477
+ )
478
+ llm_model_type: Optional[str] = Field(
479
+ default=None,
480
+ description="LLM model identifier. Falls back to deployment default if omitted.",
481
+ )
482
+ temperature: Optional[float] = Field(default=None, ge=0.0, le=2.0)
483
+ top_p: Optional[float] = Field(default=None, ge=0.0, le=1.0)
484
+ toolkits: List[ToolKitDetails] = Field(default_factory=list)
485
+ context: List[Context] = Field(default_factory=list)
486
+ mcp_servers: List[MCPServerDetails] = Field(default_factory=list)
487
+ skill_ids: List[str] = Field(default_factory=list)
488
+ assistant_ids: List[str] = Field(default_factory=list)
489
+ agent_mode: AgentMode = Field(default=AgentMode.GENERAL)
490
+ plan_prompt: Optional[str] = Field(default=None)
491
+ smart_tool_selection_enabled: bool = Field(default=False)
492
+ prompt_variables: List[PromptVariable] = Field(default_factory=list)
493
+
494
+ # --- Chat parameters ---
495
+ conversation_id: Optional[str] = Field(
496
+ default_factory=lambda: str(uuid.uuid4()),
497
+ description="Conversation identifier. Auto-generated if omitted.",
498
+ )
499
+ text: Optional[str] = Field(default=None, description="User message text.")
500
+ content_raw: Optional[str] = Field(default="")
501
+ file_names: Optional[List[str]] = Field(default_factory=list)
502
+ history: Union[List[ChatMessage], str] = Field(default_factory=list)
503
+ stream: bool = Field(default=False)
504
+ output_schema: Optional[Union[dict, Type[BaseModel]]] = Field(default=None)
505
+ tools_config: Optional[List[ToolConfig]] = Field(default=None)
506
+ metadata: Optional[Dict[str, Any]] = Field(default=None)
507
+ top_k: int = Field(default=10)
508
+ propagate_headers: bool = Field(default=False)
509
+ disable_cache: Optional[bool] = Field(default=False)
510
+ mcp_server_single_usage: Optional[bool] = Field(default=None)
511
+ save_history: bool = Field(
512
+ default=False,
513
+ description="Always False for virtual assistants. Field is accepted but ignored.",
514
+ )
515
+
516
+
458
517
  class BaseModelResponse(BaseModel):
459
518
  """
460
519
  Model for chat response from assistant.
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import inspect
6
6
  import json
7
7
  from pathlib import Path
8
- from typing import Union, Any, Literal
8
+ from typing import Union, Any, Literal, Optional, Dict
9
9
  from pydantic import BaseModel
10
10
  from copy import deepcopy
11
11
 
@@ -20,6 +20,7 @@ from ..models.assistant import (
20
20
  AssistantUpdateResponse,
21
21
  ToolKitDetails,
22
22
  AssistantChatRequest,
23
+ VirtualAssistantChatRequest,
23
24
  BaseModelResponse,
24
25
  AssistantBase,
25
26
  Context,
@@ -434,6 +435,43 @@ class AssistantService:
434
435
 
435
436
  return response
436
437
 
438
+ def ask_virtual(
439
+ self,
440
+ request: VirtualAssistantChatRequest,
441
+ headers: Optional[Dict[str, str]] = None,
442
+ ) -> Union[requests.Response, BaseModelResponse]:
443
+ """Run inference using an inline (virtual) assistant definition.
444
+
445
+ No database assistant record is required. History is never persisted.
446
+
447
+ Args:
448
+ request: Virtual assistant chat request with inline assistant definition
449
+ headers: Optional additional HTTP headers (e.g., X-* for MCP propagation)
450
+
451
+ Returns:
452
+ Chat response or streaming response
453
+ """
454
+ pydantic_schema = None
455
+ if (
456
+ request.output_schema is not None
457
+ and inspect.isclass(request.output_schema)
458
+ and issubclass(request.output_schema, BaseModel)
459
+ ):
460
+ pydantic_schema = deepcopy(request.output_schema)
461
+ request.output_schema = request.output_schema.model_json_schema()
462
+
463
+ response = self._api.post(
464
+ "/v1/assistants/virtual/model",
465
+ BaseModelResponse,
466
+ json_data=request.model_dump(exclude_none=True, by_alias=True),
467
+ stream=request.stream,
468
+ extra_headers=headers,
469
+ )
470
+ if not request.stream and pydantic_schema:
471
+ response.generated = pydantic_schema.model_validate(response.generated)
472
+
473
+ return response
474
+
437
475
  def upload_file_to_chat(self, file_path: Path):
438
476
  """Upload a file to assistant chat and return the response containing file_url."""
439
477