vellum-ai 1.8.4__py3-none-any.whl → 1.8.6__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.
Files changed (56) hide show
  1. vellum/__init__.py +6 -0
  2. vellum/client/core/client_wrapper.py +2 -2
  3. vellum/client/types/__init__.py +6 -0
  4. vellum/client/types/api_actor_type_enum.py +7 -0
  5. vellum/client/types/api_request_parent_context.py +6 -0
  6. vellum/client/types/external_parent_context.py +2 -0
  7. vellum/client/types/integration_trigger_context.py +38 -0
  8. vellum/client/types/node_execution_fulfilled_event.py +2 -0
  9. vellum/client/types/node_execution_initiated_event.py +2 -0
  10. vellum/client/types/node_execution_paused_event.py +2 -0
  11. vellum/client/types/node_execution_rejected_event.py +2 -0
  12. vellum/client/types/node_execution_resumed_event.py +2 -0
  13. vellum/client/types/node_execution_span.py +2 -0
  14. vellum/client/types/node_execution_streaming_event.py +2 -0
  15. vellum/client/types/node_parent_context.py +2 -0
  16. vellum/client/types/parent_context.py +4 -0
  17. vellum/client/types/prompt_deployment_parent_context.py +2 -0
  18. vellum/client/types/scheduled_trigger_context.py +38 -0
  19. vellum/client/types/slim_workflow_execution_read.py +2 -0
  20. vellum/client/types/span_link.py +2 -0
  21. vellum/client/types/workflow_deployment_event_executions_response.py +2 -0
  22. vellum/client/types/workflow_deployment_parent_context.py +2 -0
  23. vellum/client/types/workflow_event_execution_read.py +2 -0
  24. vellum/client/types/workflow_execution_detail.py +2 -0
  25. vellum/client/types/workflow_execution_fulfilled_event.py +2 -0
  26. vellum/client/types/workflow_execution_initiated_event.py +2 -0
  27. vellum/client/types/workflow_execution_paused_event.py +2 -0
  28. vellum/client/types/workflow_execution_rejected_event.py +2 -0
  29. vellum/client/types/workflow_execution_resumed_event.py +2 -0
  30. vellum/client/types/workflow_execution_snapshotted_event.py +2 -0
  31. vellum/client/types/workflow_execution_span.py +2 -0
  32. vellum/client/types/workflow_execution_streaming_event.py +2 -0
  33. vellum/client/types/workflow_parent_context.py +2 -0
  34. vellum/client/types/workflow_sandbox_parent_context.py +2 -0
  35. vellum/types/api_actor_type_enum.py +3 -0
  36. vellum/types/integration_trigger_context.py +3 -0
  37. vellum/types/scheduled_trigger_context.py +3 -0
  38. vellum/workflows/descriptors/base.py +11 -0
  39. vellum/workflows/descriptors/tests/test_utils.py +7 -0
  40. vellum/workflows/events/types.py +2 -0
  41. vellum/workflows/nodes/displayable/tool_calling_node/node.py +15 -1
  42. vellum/workflows/triggers/__init__.py +2 -1
  43. vellum/workflows/triggers/base.py +12 -4
  44. vellum/workflows/triggers/schedule.py +18 -0
  45. vellum/workflows/utils/uuids.py +4 -17
  46. {vellum_ai-1.8.4.dist-info → vellum_ai-1.8.6.dist-info}/METADATA +1 -1
  47. {vellum_ai-1.8.4.dist-info → vellum_ai-1.8.6.dist-info}/RECORD +56 -49
  48. vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py +3 -3
  49. vellum_ee/workflows/display/utils/expressions.py +1 -2
  50. vellum_ee/workflows/display/workflows/base_workflow_display.py +4 -4
  51. vellum_ee/workflows/server/virtual_file_loader.py +45 -1
  52. vellum_ee/workflows/tests/test_server.py +0 -64
  53. vellum_ee/workflows/tests/test_virtual_files.py +51 -0
  54. {vellum_ai-1.8.4.dist-info → vellum_ai-1.8.6.dist-info}/LICENSE +0 -0
  55. {vellum_ai-1.8.4.dist-info → vellum_ai-1.8.6.dist-info}/WHEEL +0 -0
  56. {vellum_ai-1.8.4.dist-info → vellum_ai-1.8.6.dist-info}/entry_points.txt +0 -0
@@ -3,6 +3,7 @@ from typing import Any, ClassVar, Dict, Generic, Iterator, List, Optional, Set,
3
3
  from vellum import ChatMessage, PromptBlock, PromptOutput
4
4
  from vellum.client.types.prompt_parameters import PromptParameters
5
5
  from vellum.client.types.prompt_settings import PromptSettings
6
+ from vellum.client.types.string_chat_message_content import StringChatMessageContent
6
7
  from vellum.prompts.constants import DEFAULT_PROMPT_PARAMETERS
7
8
  from vellum.workflows.context import execution_context, get_parent_context
8
9
  from vellum.workflows.errors.types import WorkflowErrorCode
@@ -107,7 +108,20 @@ class ToolCallingNode(BaseNode[StateType], Generic[StateType]):
107
108
  continue
108
109
 
109
110
  if event.name == "workflow.execution.streaming":
110
- if event.output.name == "chat_history":
111
+ if event.output.name == "results":
112
+ if event.output.is_streaming:
113
+ if isinstance(event.output.delta, str):
114
+ text_message = ChatMessage(
115
+ text=event.output.delta,
116
+ role="ASSISTANT",
117
+ content=StringChatMessageContent(type="STRING", value=event.output.delta),
118
+ source=None,
119
+ )
120
+ yield BaseOutput(
121
+ name="chat_history",
122
+ delta=[text_message],
123
+ )
124
+ elif event.output.name == "chat_history":
111
125
  if event.output.is_fulfilled:
112
126
  fulfilled_output_names.add(event.output.name)
113
127
  yield event.output
@@ -1,6 +1,7 @@
1
1
  from vellum.workflows.triggers.base import BaseTrigger
2
2
  from vellum.workflows.triggers.integration import IntegrationTrigger
3
3
  from vellum.workflows.triggers.manual import ManualTrigger
4
+ from vellum.workflows.triggers.schedule import ScheduleTrigger
4
5
  from vellum.workflows.triggers.vellum_integration import VellumIntegrationTrigger
5
6
 
6
- __all__ = ["BaseTrigger", "IntegrationTrigger", "ManualTrigger", "VellumIntegrationTrigger"]
7
+ __all__ = ["BaseTrigger", "IntegrationTrigger", "ManualTrigger", "ScheduleTrigger", "VellumIntegrationTrigger"]
@@ -1,14 +1,16 @@
1
1
  from abc import ABC, ABCMeta
2
2
  import inspect
3
+ from uuid import UUID
3
4
  from typing import TYPE_CHECKING, Any, ClassVar, Dict, Iterator, Tuple, Type, cast, get_origin
4
5
 
6
+ from vellum.workflows.references.trigger import TriggerAttributeReference
7
+ from vellum.workflows.types.utils import get_class_attr_names, infer_types
8
+ from vellum.workflows.utils.uuids import uuid4_from_hash
9
+
5
10
  if TYPE_CHECKING:
6
11
  from vellum.workflows.graph.graph import Graph, GraphTarget
7
12
  from vellum.workflows.state.base import BaseState
8
13
 
9
- from vellum.workflows.references.trigger import TriggerAttributeReference
10
- from vellum.workflows.types.utils import get_class_attr_names, infer_types
11
-
12
14
 
13
15
  def _is_annotated(cls: Type, name: str) -> bool:
14
16
  annotations = getattr(cls, "__annotations__", {})
@@ -28,7 +30,11 @@ def _is_annotated(cls: Type, name: str) -> bool:
28
30
  class BaseTriggerMeta(ABCMeta):
29
31
  def __new__(mcs, name: str, bases: Tuple[Type, ...], dct: Dict[str, Any]) -> Any:
30
32
  cls = super().__new__(mcs, name, bases, dct)
31
- return cls
33
+ trigger_class = cast(Type["BaseTrigger"], cls)
34
+
35
+ trigger_class.__id__ = uuid4_from_hash(f"{trigger_class.__module__}.{trigger_class.__qualname__}")
36
+
37
+ return trigger_class
32
38
 
33
39
  """
34
40
  Metaclass for BaseTrigger that enables class-level >> operator.
@@ -192,6 +198,8 @@ class BaseTrigger(ABC, metaclass=BaseTriggerMeta):
192
198
  Like nodes, triggers work at the class level only. Do not instantiate triggers.
193
199
  """
194
200
 
201
+ __id__: UUID
202
+
195
203
  @classmethod
196
204
  def attribute_references(cls) -> Dict[str, "TriggerAttributeReference[Any]"]:
197
205
  """Return class-level trigger attribute descriptors keyed by attribute name."""
@@ -0,0 +1,18 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ from vellum.workflows.triggers.base import BaseTrigger
5
+
6
+
7
+ class ScheduleTrigger(BaseTrigger):
8
+ """
9
+ Trigger representing time-based workflow invocation.
10
+ Supports Cron-based schedules (e.g., "0 9 * * MON" for every Monday at 9am)
11
+ """
12
+
13
+ current_run_at: datetime
14
+ next_run_at: datetime
15
+
16
+ class Config:
17
+ cron: str
18
+ timezone: Optional[str] = None
@@ -43,30 +43,17 @@ def uuid4_from_hash(input_str: str) -> UUID:
43
43
  return UUID(bytes=bytes(hash_list))
44
44
 
45
45
 
46
- def get_trigger_id(trigger_class: "type[BaseTrigger]") -> UUID:
47
- """
48
- Generate a deterministic trigger ID from a trigger class using
49
- the class's __qualname__ to ensure stability across different import paths.
50
-
51
- Args:
52
- trigger_class: The trigger class to generate an ID for
53
-
54
- Returns:
55
- A deterministic UUID based on the trigger class qualname
56
- """
57
- return uuid4_from_hash(trigger_class.__qualname__)
58
-
59
-
60
46
  def get_trigger_attribute_id(trigger_class: "type[BaseTrigger]", attribute_name: str) -> UUID:
61
47
  """
62
48
  Generate a deterministic trigger attribute ID from a trigger class and attribute name
63
- using the class's __qualname__ and attribute name to ensure stability.
49
+ using the class's module name, __qualname__, and attribute name to ensure stability and uniqueness.
64
50
 
65
51
  Args:
66
52
  trigger_class: The trigger class containing the attribute
67
53
  attribute_name: The name of the attribute
68
54
 
69
55
  Returns:
70
- A deterministic UUID based on the trigger class qualname and attribute name
56
+ A deterministic UUID based on the trigger class module, qualname, and attribute name
71
57
  """
72
- return uuid4_from_hash(f"{trigger_class.__qualname__}|{attribute_name}")
58
+ trigger_id = trigger_class.__id__
59
+ return uuid4_from_hash(f"{trigger_id}|{attribute_name}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 1.8.4
3
+ Version: 1.8.6
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -111,7 +111,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_ser
111
111
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=exT7U-axwtYgFylagScflSQLJEND51qIAx2UATju6JM,6023
112
112
  vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_map_reference_serialization.py,sha256=vl3pxUJlrYRA8zzFJ-gRm7fe-5fviLNSIsUC7imnMqk,3502
113
113
  vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py,sha256=ZRcDhOSVKFHvt_rBkNSL7j3VLeWKQbH-KRoJWrtWD2s,2193
114
- vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py,sha256=pbxmm03mCFvt4-YfxwVRxjMOvm36IdbwVOMwTSU30q0,3743
114
+ vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py,sha256=QjyxK94uPWaBmCmCWxQwuW0OopR06mVcsIjmsnr8UwE,3743
115
115
  vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_any_serialization.py,sha256=4WAmSEJZlDBLPhsD1f4GwY9ahB9F6qJKGnL6j7ZYlzQ,1740
116
116
  vellum_ee/workflows/display/tests/workflow_serialization/test_vellum_integration_trigger_serialization.py,sha256=eG7_D76ErR7IrCpWRG4gLKoKGV7VfBL1buezNJ_wkZc,9038
117
117
  vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py,sha256=vbDFBrWUPeeW7cxjNA6SXrsHlYcbOAhlQ4C45Vdnr1c,3428
@@ -121,7 +121,7 @@ vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
121
121
  vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
122
122
  vellum_ee/workflows/display/utils/events.py,sha256=XcaQSfmk2s9ZNiU8__ZqH_zfp6KUVACczz9TBWVy7Jc,2208
123
123
  vellum_ee/workflows/display/utils/exceptions.py,sha256=E8Lvo7LY1BoZ54M_NR_opDjJsAAiCUfow1HgoHcTHmg,989
124
- vellum_ee/workflows/display/utils/expressions.py,sha256=q6jgr13gET3rsAtz9XAPqtWQ2RKq_ZMq2OwrtyPhlRg,21345
124
+ vellum_ee/workflows/display/utils/expressions.py,sha256=w7HEb01jcm4lorpCplf6YscR-IssQiuKlmMFBe-kHzI,21233
125
125
  vellum_ee/workflows/display/utils/registry.py,sha256=1qXiBTdsnro6FeCX0FGBEK7CIf6wa--Jt50iZ_nEp_M,3460
126
126
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
@@ -130,11 +130,11 @@ vellum_ee/workflows/display/utils/tests/test_expressions.py,sha256=s8aHAwuuJS1_W
130
130
  vellum_ee/workflows/display/utils/vellum.py,sha256=Bt7kdLdXoBsHn5dVEY2uKcF542VL09jwu8J_30rl2vk,6413
131
131
  vellum_ee/workflows/display/vellum.py,sha256=J2mdJZ1sdLW535DDUkq_Vm8Z572vhuxHxVZF9deKSdk,391
132
132
  vellum_ee/workflows/display/workflows/__init__.py,sha256=JTB9ObEV3l4gGGdtfBHwVJtTTKC22uj-a-XjTVwXCyA,148
133
- vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=EX_OCxoJafXeoaQ71UXC_MzlyTEh4ER0ZcV6-efHyLw,52396
133
+ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=YA65D_PqJ52HkkhaLFfuE8kigaltd5IAFTlqLPtZRxs,52353
134
134
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
135
135
  vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=lg-c_3P3ldtqWq2VFsk_2Mkn3pVdXWuT59QpH7QwXVs,39764
136
136
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
- vellum_ee/workflows/server/virtual_file_loader.py,sha256=3egb-Xsfxy6I_AGVH09Fgd74qofDMKtiVzJitW8sRHw,3265
137
+ vellum_ee/workflows/server/virtual_file_loader.py,sha256=LYp29fZIemLV05GJVJWOvCZUr_HQPMVuO66Mf8N9AkU,5194
138
138
  vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
139
  vellum_ee/workflows/tests/local_files/__init__.py,sha256=UyP6kKkRqr9cTKHQF4MVLdLk5MM9GGcLuqxXsQGm22Y,51
140
140
  vellum_ee/workflows/tests/local_files/base_class.py,sha256=UuiC7J68MVr6A4949QYiBpXOLdsvFG_Cw1muEPiHT6I,298
@@ -157,14 +157,14 @@ vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIP
157
157
  vellum_ee/workflows/tests/test_display_meta.py,sha256=PkXJVnMZs9GNooDkd59n4YTBAX3XGPQWeSSVbhehVFM,5112
158
158
  vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50PllvtAZoI8-uPs,6066
159
159
  vellum_ee/workflows/tests/test_serialize_module.py,sha256=thzGsNzYCRXXdaC5yk1ZjtXrIO6uPdSnzdapKLCOsC8,6241
160
- vellum_ee/workflows/tests/test_server.py,sha256=2_n84q_QZN_zW2rZgDenQUXM3x43TcPsRs1fDA6BK1U,29805
161
- vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
162
- vellum/__init__.py,sha256=E_FsKfOkXg7KvOiBjE0vTWn34tAnYQvijb5FAHcsLDE,49836
160
+ vellum_ee/workflows/tests/test_server.py,sha256=abparWA7ViR0pkK4dFMdnlhKnmvd0BmSPJf4GJQXyUA,28283
161
+ vellum_ee/workflows/tests/test_virtual_files.py,sha256=2K1jEHbWmYe9o3PnwEp9ZmVAbJUKpgd3yDlcWOl6bVg,4481
162
+ vellum/__init__.py,sha256=i3_LxyUG6tOzzBIGg9KVV9SEWyZSQecpFqXonkVya5g,50006
163
163
  vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
164
164
  vellum/client/__init__.py,sha256=-nugZzQKoUJsStXe6PnOD__8kbDLKKokceDgpGxQ_q0,74576
165
165
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
166
166
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
167
- vellum/client/core/client_wrapper.py,sha256=zsaxJoGR-yEFSYk9Ri6PtjBQ1agr-Rs2J4qXd2-A8KE,2840
167
+ vellum/client/core/client_wrapper.py,sha256=mwe_YpJ1tIU1dr4fBWp5874l6UJJHXcHOvnarq2iHwU,2840
168
168
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
169
169
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
170
170
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -273,7 +273,7 @@ vellum/client/resources/workspaces/client.py,sha256=36KYa2FDu6h65q2GscUFOJs4qKei
273
273
  vellum/client/resources/workspaces/raw_client.py,sha256=M3Ewk1ZfEZ44EeTvBtBNoNKi5whwfLY-1GR07SyfDTI,3517
274
274
  vellum/client/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
275
  vellum/client/tests/test_utils.py,sha256=zk8z45-2xrm9sZ2hq8PTqY8MXmXtPqMqYK0VBBX0GHg,1176
276
- vellum/client/types/__init__.py,sha256=4x0VD1hiSDruxauc6TI6yO9u9buX0C0RXKGwbUQrB6o,75393
276
+ vellum/client/types/__init__.py,sha256=VeRf4mpRf2b-mVi8-uLQsvlR9loWjnP2OsbkcM9Thek,75661
277
277
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=B69EesIH6fpNsdoiJaSG9zF1Sl17FnjoTu4CBkUSoHk,608
278
278
  vellum/client/types/ad_hoc_expand_meta.py,sha256=Kajcj3dKKed5e7uZibRnE3ZonK_bB2JPM-3aLjLfUp4,1295
279
279
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=5kD6ZcbU8P8ynK0lMD8Mh7vHzvQt06ziMyphvWYg6FU,968
@@ -281,9 +281,10 @@ vellum/client/types/ad_hoc_initiated_prompt_execution_meta.py,sha256=2yFw2XRaT9Q
281
281
  vellum/client/types/ad_hoc_rejected_prompt_execution_meta.py,sha256=lqygrDY8yb0baJAszVtyZOOwtdNo5ISm4ZXQo0lq7sU,813
282
282
  vellum/client/types/ad_hoc_streaming_prompt_execution_meta.py,sha256=lIQ1nKrBGDG0D4SWqUCPKwtwMxSVHEZ4Xaa53nxHtKs,705
283
283
  vellum/client/types/add_openai_api_key_enum.py,sha256=GB7sLK_Ou7-Xn73sKJHUo6Gx3TjyhU7uJvWZAg4UeaI,92
284
+ vellum/client/types/api_actor_type_enum.py,sha256=qMM1kHW1_eXjkPSUJoelvr9H8XMDNMHSjfDFJiJpe30,214
284
285
  vellum/client/types/api_node_result.py,sha256=xXj04OXiuSxcw2GieKh92Pkf3EdBDsLrhRs_yJw5vC0,693
285
286
  vellum/client/types/api_node_result_data.py,sha256=x8aH2HmPG7v5d58y8z5Vi_yD2fLu0atmDzOXui898pQ,873
286
- vellum/client/types/api_request_parent_context.py,sha256=iQgu3KCZLeJuw-8k0NVWq07vjnqWXpWjHDdhf4PQmlI,1486
287
+ vellum/client/types/api_request_parent_context.py,sha256=wUGQy8HvNWMSpb1-SOAKKNiy75Q6gwShcOZ-HlbFldk,1874
287
288
  vellum/client/types/api_version_enum.py,sha256=PObXD86PDEuoxBpLg2pIv_xEeHbN99r2tgAKnCiu5hk,166
288
289
  vellum/client/types/array_chat_message_content.py,sha256=g4qSJDNPSrSC9GSMSJP80tT8qgWlnVD9Oo3KMEfcZIU,744
289
290
  vellum/client/types/array_chat_message_content_item.py,sha256=WOzctR-ilus8AntH0XLCkCz2ryjGXpip-YH-KXUGrYQ,719
@@ -423,7 +424,7 @@ vellum/client/types/execution_thinking_vellum_value.py,sha256=y0XP6vDBXWNXYOZDqz
423
424
  vellum/client/types/execution_vellum_value.py,sha256=dxJ2CkTFHG4BQEuAx4IB5en4lkLiFL8L6iOjssauMro,1494
424
425
  vellum/client/types/execution_video_vellum_value.py,sha256=KnobVNtHERiRNtOwtfYajWBBORV_50Vvizo-cClohf8,835
425
426
  vellum/client/types/external_input_descriptor.py,sha256=nT7fF1LN7MLuJ9BF60tXTPN-Re2DIygOEA5avLKV7Mw,769
426
- vellum/client/types/external_parent_context.py,sha256=rmv3Tojb-cGj-nR_PiR_jIbexgQkWr51Oh1Ag3IMtTE,1481
427
+ vellum/client/types/external_parent_context.py,sha256=ev29RVGIoWYJ-ioCbVaFtV5WNybmQU9pPBPASI1SvIo,1663
427
428
  vellum/client/types/external_test_case_execution.py,sha256=C6Wf22sVXASR5pS-ZfYBngzDYJr4eAtDE6ONEW56OqQ,974
428
429
  vellum/client/types/external_test_case_execution_request.py,sha256=NaoWvB9G1zzzORZb8Lpiy9U6zkYtGUfcHmsJBLhRQ5Q,1025
429
430
  vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py,sha256=9X2mLej880ROWjrEzF-LUYaMAERMi0B_Omg34-ghARM,683
@@ -501,6 +502,7 @@ vellum/client/types/integration_credential_access_type.py,sha256=sWkuDjW3aD7ApZ1
501
502
  vellum/client/types/integration_name.py,sha256=5YatDLwjK5QttKIAgwc662WVJZyfVmK7D7DIqkmNZdw,1226
502
503
  vellum/client/types/integration_provider.py,sha256=lIh3yPyPEzmSAu8L4Gsd-iDkmDSNobo0_TB75zMtIXk,129
503
504
  vellum/client/types/integration_read.py,sha256=sUNCS01TIlHPJHEH3ZheIbPi-CplbFQ5XAV1QtOO1Gg,1035
505
+ vellum/client/types/integration_trigger_context.py,sha256=PqzeyLBq8EK8GrEf5k-b-xQNDG0nYbyDI506UyTwA2I,1669
504
506
  vellum/client/types/invoked_port.py,sha256=nw2k-y7NrpcH6T1V96U3F8_pbrsceqBPIz3RQXN8gJY,518
505
507
  vellum/client/types/iteration_state_enum.py,sha256=83JSh842OJgQiLtNn1KMimy6RlEYRVH3mDmYWS6Ewzo,180
506
508
  vellum/client/types/jinja_prompt_block.py,sha256=IRWwjk9sGoF49bycXzWP_XYo8fksglZ0hu5geCTystM,903
@@ -562,19 +564,19 @@ vellum/client/types/named_test_case_video_variable_value.py,sha256=8lTwnF_kArykf
562
564
  vellum/client/types/named_test_case_video_variable_value_request.py,sha256=pErjItSd2CoquJtiSW8uz5oDTvS1LMuB_ocWCvs1oWk,696
563
565
  vellum/client/types/new_member_join_behavior_enum.py,sha256=s9Z_6JKM6R4gPNtIJYCe84_DNBHucj6dHOx6bdFPoLo,258
564
566
  vellum/client/types/node_execution_fulfilled_body.py,sha256=foRkObll1ZBsh3Po6tHT6CKnDcUaMFEoQWc-rjLDn7A,849
565
- vellum/client/types/node_execution_fulfilled_event.py,sha256=WRuXDamUa4FefGgRC6JAoDRrPlEf9AbC74EZxSH24E4,1897
567
+ vellum/client/types/node_execution_fulfilled_event.py,sha256=AQQ1mVhXHzyA9K9kSfzygylclmK4AKI0e-0TbEqUUio,2079
566
568
  vellum/client/types/node_execution_initiated_body.py,sha256=PmI24HmrlHFoROgJdAJIXHcYwuS_v_JPxLGKpDeCc4I,701
567
- vellum/client/types/node_execution_initiated_event.py,sha256=MEEcgN9AjEAdDeUCGQyg7WaaxEpfPPA6AJKmIMGZMF8,1897
569
+ vellum/client/types/node_execution_initiated_event.py,sha256=Xtypdu-joqn4efHec8PlJecZ4a4SKy8rSQQ7NQPmrF8,2079
568
570
  vellum/client/types/node_execution_paused_body.py,sha256=pAySHgvgRO6iV1pfO_lRyufk4ecA0LON8CCap4YTZsk,640
569
- vellum/client/types/node_execution_paused_event.py,sha256=9JqnlTAtnMhnSlztrp9GpjCdSYVcKvV_h1jQszRInt8,1876
571
+ vellum/client/types/node_execution_paused_event.py,sha256=54RA3iRLm9pjHPht88mtKI93turkfZjdAqnmAQs_K2A,2058
570
572
  vellum/client/types/node_execution_rejected_body.py,sha256=PxLPedDB-Budfm9OtFtyjLnpaMO3rK_DQg62sv1TpsA,757
571
- vellum/client/types/node_execution_rejected_event.py,sha256=JzbQux0bYivwK7edTydq6vrGQEVRdvypa4ZipTrmsig,1890
573
+ vellum/client/types/node_execution_rejected_event.py,sha256=Ar-UcmL62VRS64JYKZ91tBUlSTlL_w98Dab2lCpbuxA,2072
572
574
  vellum/client/types/node_execution_resumed_body.py,sha256=M8nhwykvfwFgRKAyiVXJZC3Mrd7JankiTdO8muHQWMA,641
573
- vellum/client/types/node_execution_resumed_event.py,sha256=SQ0EPqJnnAWulBb2H46v5p809UznM8YVIsdbyPOHn_s,1883
574
- vellum/client/types/node_execution_span.py,sha256=97H5YovyPEk-EcWy1aOzi06SFhzy_aLlbARMeEwZrDU,1944
575
+ vellum/client/types/node_execution_resumed_event.py,sha256=qp7DP5CiO2zwYDwYZk7yqv5LIYZdZ0nMVK5iTuslDoo,2065
576
+ vellum/client/types/node_execution_span.py,sha256=MllkobQGkCak8VpNnCxt3BIizGzH0-TC3EPIdwEK4_w,2126
575
577
  vellum/client/types/node_execution_span_attributes.py,sha256=eKki7Fn1u1lem50CftfYglH6yuRRjq0d5FXAtxTuUP4,594
576
578
  vellum/client/types/node_execution_streaming_body.py,sha256=7XoldYoZwU5bFUOglFG48roWqvjxION6blYsoHFYYQY,702
577
- vellum/client/types/node_execution_streaming_event.py,sha256=ZXEG9Xd2V3Ivy-ihg8mom2SmGxda6eTNXPmOuJmDdU4,1897
579
+ vellum/client/types/node_execution_streaming_event.py,sha256=K_l6xpoEhBcVSfJcxie399EjphSBc4UZOPa-XyI-1jQ,2079
578
580
  vellum/client/types/node_input_compiled_array_value.py,sha256=4ABwdQaEKpusNtRocwEP2dwe9nPHDCtgrfTqG9-_0Kw,910
579
581
  vellum/client/types/node_input_compiled_audio_value.py,sha256=YswJ4ernhGbvEzagoDjW4I1vssGEXgEQBAYduLT50qI,685
580
582
  vellum/client/types/node_input_compiled_chat_history_value.py,sha256=z7ehHME9AtexSyhciPRbFGMeKvxj8v6RbydMk3JV-xI,718
@@ -599,7 +601,7 @@ vellum/client/types/node_output_compiled_search_results_value.py,sha256=_GFd8h5c
599
601
  vellum/client/types/node_output_compiled_string_value.py,sha256=XbQBIfY6qoTAQ2Z6aN916vU9lsHDgOYSqehUKNVp2Zw,844
600
602
  vellum/client/types/node_output_compiled_thinking_value.py,sha256=KwmbC13BgyA70IesWKyTVL4SY5Rw2HDRNWeGlyTkIrk,917
601
603
  vellum/client/types/node_output_compiled_value.py,sha256=KU1F3NhpQUWr65HjLdXUznc6k5fPOh7VX3o04kOEkKk,1182
602
- vellum/client/types/node_parent_context.py,sha256=vAL5pAPz6nOAnbJGCmZbIB6IKtC1MeYzJEsaRB7LHW4,1615
604
+ vellum/client/types/node_parent_context.py,sha256=eyP0L5CJzLxyvUPx72U8DoAU13KE8MQya29nlAYGrLA,1797
603
605
  vellum/client/types/normalized_log_probs.py,sha256=aA0eGibpbcMZHLA-F5exAxU6i4FEZVdLm5ZlvxyZ0dA,670
604
606
  vellum/client/types/normalized_token_log_probs.py,sha256=i1dpTPE9G4u6E68Md1TL1LtimOSYKdq3Gfziy-yMwyE,678
605
607
  vellum/client/types/number_input.py,sha256=27hUXuCRvlsFsEDIEieKKKAjZB5uJyP2pX_pPHWoNSE,703
@@ -629,7 +631,7 @@ vellum/client/types/paginated_test_suite_test_case_list.py,sha256=gDVdq10b5u3NEz
629
631
  vellum/client/types/paginated_workflow_deployment_release_list.py,sha256=0THeQdJlr-hBLZIcCFHs8oPZUzmTUMhmNpWMhTb0q7c,988
630
632
  vellum/client/types/paginated_workflow_release_tag_read_list.py,sha256=QhnPPpYE5T_0Kzl6QJ9YWcsc4WYf74px_KOiQTWRqNY,782
631
633
  vellum/client/types/paginated_workflow_sandbox_example_list.py,sha256=GHWCQdTYmFeoN0lxdreN0RldKcUa2Duazlfke2cLOc4,781
632
- vellum/client/types/parent_context.py,sha256=U4eS717FDcsTPO37ckQs2axtzei-eyivwfjSmGYSOjU,890
634
+ vellum/client/types/parent_context.py,sha256=s27Wd9_DFCYm4CS0osRw6JpJI5npsQTmbjF70h8jEQw,1092
633
635
  vellum/client/types/pdf_search_result_meta_source.py,sha256=KaYx-xvNtOn_ADRDBbb48qGsLtqXfcmfzqob8r-SLgc,1090
634
636
  vellum/client/types/pdf_search_result_meta_source_request.py,sha256=Fh2EUxWyhdP7yW2CUNvSTSZo8EcukgogALr4HpppHvQ,1097
635
637
  vellum/client/types/plain_text_prompt_block.py,sha256=vqZESoqj6P1IyHFmRAk2kmdU3ktsM_852crRCBcYV64,894
@@ -641,7 +643,7 @@ vellum/client/types/prompt_block.py,sha256=950JeKeNKZ0DQXwCD-Sy9SDMtiR7F-BqCrJZo
641
643
  vellum/client/types/prompt_block_state.py,sha256=BRAzTYARoSU36IVZGWMeeqhl5fgFMXCyhJ8rCbfB-f0,163
642
644
  vellum/client/types/prompt_deployment_expand_meta_request.py,sha256=v7sW8hDHULzNa103FB3WugGMsRUnt0ijbzRy476M3fg,1874
643
645
  vellum/client/types/prompt_deployment_input_request.py,sha256=xmmr6IEpCHdB6rSu59xmFQutY-ntdlJHVd9EVrJI16U,674
644
- vellum/client/types/prompt_deployment_parent_context.py,sha256=eaUiZxuLLqEor67y1noRfXsMn5cJNz3tBGjkw_SHbps,1790
646
+ vellum/client/types/prompt_deployment_parent_context.py,sha256=eqZogYM2qu5vo41TPiJyFYWAulL_m2aBe_GOwq9nXb4,1972
645
647
  vellum/client/types/prompt_deployment_release.py,sha256=ar_MMrWcIJ6cKxW3qAVaybW1nPkqOfmQZTdto68o4CM,1310
646
648
  vellum/client/types/prompt_deployment_release_prompt_deployment.py,sha256=S7XjAfNih43SBcvnZeOstM9dsOrAtY3ERGV5iDNfZdA,546
647
649
  vellum/client/types/prompt_deployment_release_prompt_version.py,sha256=Q-OF8JixvuqyTcK_INjLujBWfCFnTsxAp-Z4JeOPN7U,813
@@ -693,6 +695,7 @@ vellum/client/types/scenario_input_image_variable_value.py,sha256=o3rwhVnXp3XCOK
693
695
  vellum/client/types/scenario_input_json_variable_value.py,sha256=07_Fj9UOzMGvz1H0j1awmMz0Q6ErliwjgKVU_iUyZb8,716
694
696
  vellum/client/types/scenario_input_string_variable_value.py,sha256=PI_pk-WOXVRBSW6PZKDZW11svxd2r9E6bCpl0zC0MTM,717
695
697
  vellum/client/types/scenario_input_video_variable_value.py,sha256=6AxOsLtHNZv-1UyBue6fMs5_vLFCXidx7e_9kP0hHrs,680
698
+ vellum/client/types/scheduled_trigger_context.py,sha256=hRDqFVeR_M_TS-Km7QicXl_7N9VJclGa5gJKYlyHaB4,1665
696
699
  vellum/client/types/search_filters_request.py,sha256=Moxewgl8KwjIy-VBistrchXQAqfsn5fkqO5R2UzLlI8,1276
697
700
  vellum/client/types/search_node_result.py,sha256=2DbnKCus81-fj56IoGZqIL6Tw6hjf5jH0O2P_AXah8o,713
698
701
  vellum/client/types/search_node_result_data.py,sha256=rXs0R0OG2pjTcE6bMp5lN6_cUusFiVUDwkC3pVo5l6o,810
@@ -722,8 +725,8 @@ vellum/client/types/slim_integration_auth_config_read.py,sha256=Mbn1DjJIJJjkqrta
722
725
  vellum/client/types/slim_integration_read.py,sha256=hKc9a85Vi7WNIq6JDPABettHUz-vmV-ViXRsoIpD_MY,754
723
726
  vellum/client/types/slim_release_review.py,sha256=vWNkPXk5wZ_scHsWHz_77PfMZRDn-4qUkqVbCKqY1zQ,747
724
727
  vellum/client/types/slim_workflow_deployment.py,sha256=jIciGPCW9QNtDRdq3w_zUdrrE4cg1LWkcoyGM-L6cs0,2085
725
- vellum/client/types/slim_workflow_execution_read.py,sha256=NHNLs5Uf6YvrRZbFnnaYj2iTe2zozsbd5M-tZixu9jU,2302
726
- vellum/client/types/span_link.py,sha256=roO93-xRnqZy2hx9WJFNZW46o8l2bGf3ugeaBepegr4,1433
728
+ vellum/client/types/slim_workflow_execution_read.py,sha256=YNo50zH7CMfKgzzGHmPFJ2BuqLfJj2qQlvKyD82eqIQ,2484
729
+ vellum/client/types/span_link.py,sha256=752EVyc9OW3PA0fR7j31-MWylCkydiYFvh26AXU4nLE,1615
727
730
  vellum/client/types/span_link_type_enum.py,sha256=SQsPKp1Jb8PWE2tkCHt9d5fZP8Oz77vG8_VYKF-h9J4,186
728
731
  vellum/client/types/streaming_ad_hoc_execute_prompt_event.py,sha256=BZZHXI_vq28VAmRbbIIK2wyRSkQpWfOPD7kiydhQmd8,1147
729
732
  vellum/client/types/streaming_execute_prompt_event.py,sha256=zqAeXugb9kOgkm7PHIjw5CIL6058WZ4kik3pa18SDbo,1125
@@ -881,9 +884,9 @@ vellum/client/types/video_prompt_block.py,sha256=8uyJRzNnoV6vB4sVPxtxx9gsVkLsfHa
881
884
  vellum/client/types/video_vellum_value.py,sha256=8KfVyPZ0b3nv0wuo-p88yE9jc5VyYXk0HPnesgiYGjY,711
882
885
  vellum/client/types/video_vellum_value_request.py,sha256=q6dptI5XdJNFwtTRlNyPqU0EUlRDFlhH8GjJgMzY2c8,740
883
886
  vellum/client/types/workflow_deployment_display_data.py,sha256=6D2CqxfJLFZPpmjYZ5FNOPMLPvvcAlYz7Y23_CmzJqA,780
884
- vellum/client/types/workflow_deployment_event_executions_response.py,sha256=KXzRC0iaXsBu9ezA4p7PIHL4-IWIQ-lX6NW6noTHtZ4,1570
887
+ vellum/client/types/workflow_deployment_event_executions_response.py,sha256=Hjzl9I9ijUmwZlVkh26vFEaQViNUzOJl3WFNRrXDumU,1752
885
888
  vellum/client/types/workflow_deployment_history_item.py,sha256=RF_ByBLXRo47MhAuyUV4FkxmN_j879-UylfRyZaYAm0,1327
886
- vellum/client/types/workflow_deployment_parent_context.py,sha256=1JdTw3LL6tgCgiMVrX35SZVu7mZcxz6SbxWPCUBZ09s,1796
889
+ vellum/client/types/workflow_deployment_parent_context.py,sha256=HCPZE-CG3r9FC54wXww8B5iJw47emI-aZ9BqYkqaFwI,1978
887
890
  vellum/client/types/workflow_deployment_read.py,sha256=bSdmiGtOUdZoNRH14PtmoLsSGACh0xwUXG6Fqr5a30I,2494
888
891
  vellum/client/types/workflow_deployment_release.py,sha256=yd9Okgpdm8Oob9VmIKaksZjmRv2uLHGJtc-H5sO10F8,1520
889
892
  vellum/client/types/workflow_deployment_release_workflow_deployment.py,sha256=ZmQhemAQEqARhkSvc9DFdgfTKQfSHvRTS9reW1Wx9dI,550
@@ -892,31 +895,31 @@ vellum/client/types/workflow_display_icon.py,sha256=SmjaK8yazBntU1Nh57bVz_sYf59D
892
895
  vellum/client/types/workflow_error.py,sha256=iDMQ3Wx7E8lf6BYtBTGpeIxG46iF9mjzTpjxyJVTXgM,283
893
896
  vellum/client/types/workflow_event.py,sha256=M_ra0CjUffCPqPRFJM_oR1IY4egHDGa0tY1HAoA8j5k,1532
894
897
  vellum/client/types/workflow_event_error.py,sha256=qNqSGvPOLODPTiaWmsUKyTx9W91JDIm9r9s05zsTsfg,779
895
- vellum/client/types/workflow_event_execution_read.py,sha256=9AZGartKk8qZxepwmjOKEIcWGxGUIOlusZqCxpfgrOw,2456
898
+ vellum/client/types/workflow_event_execution_read.py,sha256=o1k4QGuqDXpsR2hEjshunhVYZdDCgVyie69Y0dtNHm4,2638
896
899
  vellum/client/types/workflow_execution_actual.py,sha256=QJn7xXOtSJT30se2KdOyAYVJKjU53uhdvpjcMDIz1eM,962
897
900
  vellum/client/types/workflow_execution_actual_chat_history_request.py,sha256=E3Vt4l6PpE24_teWe3Kfu_4z1sbosaz_Uk1iUI9cZ-s,1957
898
901
  vellum/client/types/workflow_execution_actual_json_request.py,sha256=jLsQxdg7SVyUkdu_Gyo3iDKgZcQnO5hsP0PHPsiGwrg,1895
899
902
  vellum/client/types/workflow_execution_actual_string_request.py,sha256=syFCXeB4MwjKblXfSBNfCSG4dJIR8Ww937gTcmTPh1w,1859
900
- vellum/client/types/workflow_execution_detail.py,sha256=R1tONdNarehoqk7zsK0D2wCSJEe9WauZmKHp5yKVLB8,2186
903
+ vellum/client/types/workflow_execution_detail.py,sha256=llaD8egEluL4Bghht3LSDtdDYaq_QIAjqkBzeUunMj8,2368
901
904
  vellum/client/types/workflow_execution_event_error_code.py,sha256=rTlQKobDv7-ZnRnDcabQjncY7PCieH15JsMiZlAqwMI,655
902
905
  vellum/client/types/workflow_execution_event_type.py,sha256=ESKqV3ItoAlqBooruf-i0AnmEh_GvCySZ0Co3r9Bvt0,170
903
906
  vellum/client/types/workflow_execution_fulfilled_body.py,sha256=kZeUs78pRiFPz1RzssvU6k4g0xvwfNCcXPg1OLXFntw,888
904
- vellum/client/types/workflow_execution_fulfilled_event.py,sha256=eZ_DtDmRK-S2Q0LEJHlGS_FPd-UVvpgetRXqvWlSh4M,1925
907
+ vellum/client/types/workflow_execution_fulfilled_event.py,sha256=l3qT2ZQSuZjSJj1_oTvNbV1ErIR7wv36wfxeaqFVpt0,2107
905
908
  vellum/client/types/workflow_execution_initiated_body.py,sha256=0y2mi-RtpxPzWgl1ZO2eDOJdUvNSM_iVz6B_OySGucg,709
906
- vellum/client/types/workflow_execution_initiated_event.py,sha256=JpzYEKYJPe5blgMjuwJn6o5fHsKW_kJMx89Keq8pGCE,1925
909
+ vellum/client/types/workflow_execution_initiated_event.py,sha256=iPxK6bO1GK-eFJv_25MqHNYzUDcwxKMcwfsS7zyIGR4,2107
907
910
  vellum/client/types/workflow_execution_node_result_event.py,sha256=4rLmfNqLq2UYUGW1_CBb1yCXaCgBwFjq1UQ4-txSimU,1040
908
911
  vellum/client/types/workflow_execution_paused_body.py,sha256=YzALzCHE9wRkyRuseriaGKst_oidAaIUNar9B6doMrY,769
909
- vellum/client/types/workflow_execution_paused_event.py,sha256=nLzQ4j_qB7Z7q9D8TfPDCeCYfGuk-8_emlBcAx_oOu4,1904
912
+ vellum/client/types/workflow_execution_paused_event.py,sha256=ZfBlrfqlhJjqvuTY0Rlcqgrvvb72zVcYRwlJ6lPx5XA,2086
910
913
  vellum/client/types/workflow_execution_rejected_body.py,sha256=biJQ8_PDeJGELgjjUbZayC3tzoDkFSs2o-o04IKA6fg,765
911
- vellum/client/types/workflow_execution_rejected_event.py,sha256=j1QzOxkcmcFfA9zHOiKBnv7qF_YrFePq380us1nnYEk,1918
914
+ vellum/client/types/workflow_execution_rejected_event.py,sha256=GE58UnAD62dkQ-NaSMEGYKFhg7iFBGfs6EO9nB2NYN4,2100
912
915
  vellum/client/types/workflow_execution_resumed_body.py,sha256=L0Atzk7328tpjhRKC0Y8AoWuMebtdHzd4gBjYkvKDIM,649
913
- vellum/client/types/workflow_execution_resumed_event.py,sha256=7PTH1rLBlvC4414LG3L3AdMRrJEmtrJSOWwM5sptAZc,1911
916
+ vellum/client/types/workflow_execution_resumed_event.py,sha256=X-jorirYgQ7tLbEk6VnrbKGhII2ezWRPsSox9aLHiNo,2093
914
917
  vellum/client/types/workflow_execution_snapshotted_body.py,sha256=1r0dnZJNAy34ckeNfCvkSphs_AfVbKhn0IJKvB06Yyo,778
915
- vellum/client/types/workflow_execution_snapshotted_event.py,sha256=sEQ-fqW0VmiuigFZnPvtd2wNZG462-rnsk4Zi8qlA6I,1939
916
- vellum/client/types/workflow_execution_span.py,sha256=xeePJEONTakpoEf1aodhs10E8GPoxy7oSdogZARxYO0,1984
918
+ vellum/client/types/workflow_execution_snapshotted_event.py,sha256=4J87G_iEE8Ub8gB5YI_UoV27gWgvPSfpTyrCai844UY,2121
919
+ vellum/client/types/workflow_execution_span.py,sha256=q0UuGdYcaOaMlW2f0KOpx2c_3OQmmr-PkVHzSgl8VN8,2166
917
920
  vellum/client/types/workflow_execution_span_attributes.py,sha256=OE_uL3qChioClcS3P46EW6ajLEyDsNl9sQJ13Tw50cY,560
918
921
  vellum/client/types/workflow_execution_streaming_body.py,sha256=YklXqGzLrCYyZ6DOpy8YQodMfiyH_d2x93ajGg-rwLk,710
919
- vellum/client/types/workflow_execution_streaming_event.py,sha256=f_z7Qr_9Uh8C8z2jjusb8CHoXUANMmT9PDTUoyq528A,1925
922
+ vellum/client/types/workflow_execution_streaming_event.py,sha256=k4x3oioU_MafduHqdUCfOGNwPhke6Gi7qS_ajBS8yqs,2107
920
923
  vellum/client/types/workflow_execution_usage_calculation_error.py,sha256=37j4n45pYQ5yLCJ2kfvoCnb_m0VDH_dTtseLvryKHQ8,718
921
924
  vellum/client/types/workflow_execution_usage_calculation_error_code_enum.py,sha256=O8CGCaWKuhnRjmQXTsw4gQn5hfDFiKED8bJYzP8R0LM,258
922
925
  vellum/client/types/workflow_execution_usage_calculation_fulfilled_body.py,sha256=_EftcFx4Z_eeYgZ_yx_jnDk1KUTu-AuP5HL-dU5b5Q4,693
@@ -939,7 +942,7 @@ vellum/client/types/workflow_output_json.py,sha256=S8k166a9-pAv2PjbwATWo7FlSzdye
939
942
  vellum/client/types/workflow_output_number.py,sha256=nrG20pZjxE78U6JoDx5iN3zSLqRBZUtw_LNtjXPAbZw,776
940
943
  vellum/client/types/workflow_output_search_results.py,sha256=yDtDPFguX9klzTbwBrFfyK0yNl2EZboN6UpYNG6rWjw,867
941
944
  vellum/client/types/workflow_output_string.py,sha256=EmxzAl3NNXZzPmmt68BHDWfiN1R70qomqVNGMIIu7_4,774
942
- vellum/client/types/workflow_parent_context.py,sha256=RtjSqcTyUgUTbsDcNmY_AagBvV4ZU3SWF9HZAhSME20,1609
945
+ vellum/client/types/workflow_parent_context.py,sha256=RPP8m2PDICnzD81EKa_Ux3DF-TZD8h7AiQMTeyODyuE,1791
943
946
  vellum/client/types/workflow_push_deployment_config_request.py,sha256=mDJTj5WbDU-RXUxEMOfF9k7GlBUD6wE-WUB2P01r6Pw,762
944
947
  vellum/client/types/workflow_push_exec_config.py,sha256=6TaVMVqhSOz4DnY46l8axPDtytSioXDl9nHvFXSxH1g,94
945
948
  vellum/client/types/workflow_push_response.py,sha256=Tkwpvh_Ar1yl-kyClh2fTIP2e0cqyk1ohbArIp8I9gs,688
@@ -966,7 +969,7 @@ vellum/client/types/workflow_result_event_output_data_number.py,sha256=p2_zkt3zN
966
969
  vellum/client/types/workflow_result_event_output_data_search_results.py,sha256=vsMTbZuFwFwDqW3Uvm6_NODluCXmhV9H4DBI-HozfpI,1136
967
970
  vellum/client/types/workflow_result_event_output_data_string.py,sha256=sejfzNfmeygtVNedvsU1cXvjfG5z3UUROX735r2sEOQ,1192
968
971
  vellum/client/types/workflow_sandbox_example.py,sha256=pl9mx0Wvgg3kRmIoOlAx4XebMhOeSvgy438BPcQNy-4,724
969
- vellum/client/types/workflow_sandbox_parent_context.py,sha256=8FJ8vq7CVTg-OnOXlbVCAFaT1_J-EEEDiX1PDc1OTzw,1570
972
+ vellum/client/types/workflow_sandbox_parent_context.py,sha256=HErPi2s8-SumB_kwSEmkHOfjJ77A11zSaiys60YS8Zg,1752
970
973
  vellum/client/types/workflow_stream_event.py,sha256=6dQx_D-UPfJVrIsSW6krmZKDKeP9kPojFHDgqy_58io,362
971
974
  vellum/client/types/workspace_read.py,sha256=NAVouD25ZHvldLrAvAOwL2w2f1tqZaSC05wZ--YvBCQ,661
972
975
  vellum/client/types/workspace_secret_read.py,sha256=qWabw1u5HZpuv77kAwtAQigj4CDB41csJ2wmXu5eJS8,678
@@ -1111,6 +1114,7 @@ vellum/types/ad_hoc_initiated_prompt_execution_meta.py,sha256=wtaIyv48QAoJ2eYblX
1111
1114
  vellum/types/ad_hoc_rejected_prompt_execution_meta.py,sha256=yZ75GQ6oe1_CI8CgzLm0NB5ULGRZN3Jd69UWcLZuDHY,175
1112
1115
  vellum/types/ad_hoc_streaming_prompt_execution_meta.py,sha256=bjLXbYHIiDaJrkzHJe3F0vm0Bp1H0nHfWvwP-TzBdKM,176
1113
1116
  vellum/types/add_openai_api_key_enum.py,sha256=d7yf_J3uFBltfE5wwQR_JH31NCXjzkRSpW0bXOF0FAM,161
1117
+ vellum/types/api_actor_type_enum.py,sha256=r3AfKgLFApgW_gv4nfWnd5l-8nZkD6JFEgf8l9ZTakY,157
1114
1118
  vellum/types/api_node_result.py,sha256=VrpkInL6qGJgQUmxo2-M90_Qsucc18qYVKao-QRE6lM,153
1115
1119
  vellum/types/api_node_result_data.py,sha256=lYRxTwl8hFRoGKlWP6PEuWaMD4me6nNUS0nc1GJaISU,158
1116
1120
  vellum/types/api_request_parent_context.py,sha256=dY3ISQe4zsLyNR_8gziC3sR_cfY_IDDhfW85OJarvDA,164
@@ -1331,6 +1335,7 @@ vellum/types/integration_credential_access_type.py,sha256=nvvklDHyz-q6lsQJ0jlNYP
1331
1335
  vellum/types/integration_name.py,sha256=NrAy5QDLUhx4WnED40MTujnjAKzjGxd9lpCrMgC8YZs,154
1332
1336
  vellum/types/integration_provider.py,sha256=_34xKlxHRA37I4Mrc1y3MncasgHNAYT_cQbzeobdsJs,158
1333
1337
  vellum/types/integration_read.py,sha256=W57b4-R6rK3nDllk4o954UFJVw7oi0f-GNOIta-Gv58,154
1338
+ vellum/types/integration_trigger_context.py,sha256=ZnTak0Geyp0woc6Fjoh7iy4raqmZiJV5bJsWcXXhpzU,165
1334
1339
  vellum/types/invoked_port.py,sha256=vZUOhbmvydZyxm-dvjh-cVAY4F55Xc7TNEhNLwep7R8,150
1335
1340
  vellum/types/iteration_state_enum.py,sha256=782UXz90fWfEkSxo9iJ1PYXB2UcmV_SgpjqZrI9ZrEc,158
1336
1341
  vellum/types/jinja_prompt_block.py,sha256=PzJdqnRYhHn958T61ycJPJkggbpbuJ12JCBAztKZAj8,156
@@ -1523,6 +1528,7 @@ vellum/types/scenario_input_image_variable_value.py,sha256=3-AEkjeo0QUp1RQiyouAT
1523
1528
  vellum/types/scenario_input_json_variable_value.py,sha256=_SdTrpu5-zfBvQmTbq1LHVLjdFZR8HAQT8ckU7ZzOcQ,172
1524
1529
  vellum/types/scenario_input_string_variable_value.py,sha256=MoHVC5ArkofAtemyk1m1SXkco1_6OZ59C7ilGrYyTlA,174
1525
1530
  vellum/types/scenario_input_video_variable_value.py,sha256=5I7uQvn2zDTnJr0owPhb3ZvlmoSvh7ABjI1gLAAJwgQ,173
1531
+ vellum/types/scheduled_trigger_context.py,sha256=YhKqhZgAG__bnbCethl292pAYzntJvxXuiChl9lufmA,163
1526
1532
  vellum/types/search_filters_request.py,sha256=5FsWAJNOvgErJ9hl_1arivGCFWs4aN_rDshzjj58rIk,160
1527
1533
  vellum/types/search_node_result.py,sha256=BY0a_9sB6PhLKgyFlrrGOHwC2d-8PhcDrZg1yB7eZQA,156
1528
1534
  vellum/types/search_node_result_data.py,sha256=mIUpEUBwh6_5Vp0cRrUI2peHREOwKYDi0WesMPiPHNs,161
@@ -1816,9 +1822,9 @@ vellum/workflows/__init__.py,sha256=gd5AiZqVTcvqelhysG0jOWYfC6pJKRAVhS7qwf0bHU4,
1816
1822
  vellum/workflows/constants.py,sha256=ApFp3fm_DOuakvZV-c0ybieyVp-wELgHk-GTzDJoDCg,1429
1817
1823
  vellum/workflows/context.py,sha256=ViyIeMDhUv-MhnynLaXPlvlbYxRU45ySvYidCNSbFZU,2458
1818
1824
  vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1819
- vellum/workflows/descriptors/base.py,sha256=v3WG2d_pekYtVK3Y2FSdVhf_XwNUnvXgSWuhr0VQRJM,16666
1825
+ vellum/workflows/descriptors/base.py,sha256=GAAk11R8Vg2kysh_MV9pBVrvYRnRiWDvap2znLf48Kw,17053
1820
1826
  vellum/workflows/descriptors/exceptions.py,sha256=Rv2uMiaO2a2SADhJzl_VHhV6dqwAhZAzaJPoThP7SZc,653
1821
- vellum/workflows/descriptors/tests/test_utils.py,sha256=HJ5DoRz0sJvViGxyZ_FtytZjxN2J8xTkGtaVwCy6Q90,6928
1827
+ vellum/workflows/descriptors/tests/test_utils.py,sha256=Ymw8YKYeooiXcg64-tQ9_-PPJGzyGDWuG60RIG2tqPQ,7204
1822
1828
  vellum/workflows/descriptors/utils.py,sha256=Z7kuhwb_D_kfcwKIAr1xI_AqYH6WFoZBYuslKQWZBFU,4399
1823
1829
  vellum/workflows/edges/__init__.py,sha256=auViJbvYiR1gzgGlhMv1fPDMvgXGOwa5g-YZn97fvUo,107
1824
1830
  vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
@@ -1839,7 +1845,7 @@ vellum/workflows/events/stream.py,sha256=xhXJTZirFi0xad5neAQNogrIQ4h47fpnKbVC3vC
1839
1845
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1840
1846
  vellum/workflows/events/tests/test_basic_workflow.py,sha256=Pj6orHsXz37jWC5FARi0Sx2Gjf99Owri2Cvr6Chb79k,1765
1841
1847
  vellum/workflows/events/tests/test_event.py,sha256=5rzsQdXksVZIapFSdKQlQGsLPJY2esAwsh_JOtKH_rM,21566
1842
- vellum/workflows/events/types.py,sha256=FjZi4ta_Atb_BnT0yGUHfz-LHun6IWYU80HWolhBkXY,5279
1848
+ vellum/workflows/events/types.py,sha256=P5Xq0ObthcHBaJItQ9AFz8Afk_mebmdWE8DEOZROh7U,5383
1843
1849
  vellum/workflows/events/workflow.py,sha256=1BdrBdlDpTvsiHcm5KaFA7q6veauQaYlNVUMN8QG0gA,11495
1844
1850
  vellum/workflows/exceptions.py,sha256=l_ZklQQVvbsIdbmbn89aEeTL7x6x08m5kCwKXXPnTDc,2277
1845
1851
  vellum/workflows/executable.py,sha256=um-gLJMVYfGJwGJfZIPlCRHhHIYm6pn8PUEfeqrNx5k,218
@@ -2004,7 +2010,7 @@ vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py,sha2
2004
2010
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
2005
2011
  vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=Bjv-wZyFgNaVZb9KEMMZd9lFoLzbPEPjEMpANizMZw4,2413
2006
2012
  vellum/workflows/nodes/displayable/tool_calling_node/__init__.py,sha256=3n0-ysmFKsr40CVxPthc0rfJgqVJeZuUEsCmYudLVRg,117
2007
- vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=odjxzXi6l9kD_ncWih_462nUX61SKbxMnAYw0j2LwGo,9129
2013
+ vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=p9O9x7-YPeSaPLUFevr-DzRFA5CzNPsDuJWArkD9hE0,9909
2008
2014
  vellum/workflows/nodes/displayable/tool_calling_node/state.py,sha256=CcBVb_YtwfSSka4ze678k6-qwmzMSfjfVP8_Y95feSo,302
2009
2015
  vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2010
2016
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py,sha256=in1fbEz5x1tx3uKv9YXdvOncsHucNL8Ro6Go7lBuuOQ,8962
@@ -2064,10 +2070,11 @@ vellum/workflows/tests/test_dataset_row.py,sha256=S8aIiYU9TRzJ8GTl5qCjnJ-fuHdxat
2064
2070
  vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
2065
2071
  vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83yc5FIM33zuo8,353
2066
2072
  vellum/workflows/tests/triggers/test_vellum_integration_trigger.py,sha256=24_wePSpjt7VdyjlLG23W_HHT9EtnsIrI-TW0zcVjY4,5172
2067
- vellum/workflows/triggers/__init__.py,sha256=-TCWDx0WdjV4V3z7VJMbfIBRxEycVgQr3lz9laS32Og,359
2068
- vellum/workflows/triggers/base.py,sha256=nWhsSMeskRs1gpRYTuM9UTqpuVH6cwkqVWznpNzxU7k,8412
2073
+ vellum/workflows/triggers/__init__.py,sha256=TPFTcfctEL-XP0GpQ6EWc-0XWolU3trab2S6VKKe9Bs,441
2074
+ vellum/workflows/triggers/base.py,sha256=xcai_kVu74hIH55RSEBNBvlrA3QfDeUzJjdg6oqqAcg,8683
2069
2075
  vellum/workflows/triggers/integration.py,sha256=hAWQMoIubosKgM56rrsAJVhPnc4MjA5YBPRpDgl6J08,2221
2070
2076
  vellum/workflows/triggers/manual.py,sha256=PgbZ92gcK25yz6REXm98zWic1QBfhxLKfGCeHpZEUx4,1266
2077
+ vellum/workflows/triggers/schedule.py,sha256=3XY519njXWvbBGoxOyQju9iAMVx8fYmce2eSD13bfWM,437
2071
2078
  vellum/workflows/triggers/tests/__init__.py,sha256=R8lag_iCRyulijHMK4e3Gf6YVB5NplfvwZeTkaRj8gQ,30
2072
2079
  vellum/workflows/triggers/tests/test_integration.py,sha256=q7EeftNwgI2EcnV8GwHTxCQ_SyZKHl2dIPCQOQ7yxSM,4046
2073
2080
  vellum/workflows/triggers/vellum_integration.py,sha256=AvqdAXRy5XWbFJtiyVLG0E82PslQrCex_srTGctPhFc,8419
@@ -2091,7 +2098,7 @@ vellum/workflows/utils/tests/test_functions.py,sha256=J_WEyVX1yE3lUhoX8etgkbPuwQ
2091
2098
  vellum/workflows/utils/tests/test_names.py,sha256=DnRRnuORxQXx9ESegCzkxiWcHy2_bBi7lXgbFi3FZK8,757
2092
2099
  vellum/workflows/utils/tests/test_uuids.py,sha256=i77ABQ0M3S-aFLzDXHJq_yr5FPkJEWCMBn1HJ3DObrE,437
2093
2100
  vellum/workflows/utils/tests/test_vellum_variables.py,sha256=X7b-bbN3bFRx0WG31bowcaOgsXxEPYnh2sgpsqgKIsQ,2096
2094
- vellum/workflows/utils/uuids.py,sha256=xQ-Clad8Srl3QqCrs8_UEgto0OFe8zH7VtuIlCgMWHg,2412
2101
+ vellum/workflows/utils/uuids.py,sha256=qgR6aQ4oEn_Q6ftIwvJpgcrkhicNZI9JVNovhOOauBw,2035
2095
2102
  vellum/workflows/utils/vellum_variables.py,sha256=X3lZn-EoWengRWBWRhTNW7hqbj7LkV-6NSMwCskWEbg,7203
2096
2103
  vellum/workflows/utils/zip.py,sha256=HVg_YZLmBOTXKaDV3Xhaf3V6sYnfqqZXQ8CpuafkbPY,1181
2097
2104
  vellum/workflows/vellum_client.py,sha256=3iDR7VV_NgLSm1iZQCKDvrmfEaX1bOJiU15QrxyHpv0,1237
@@ -2102,8 +2109,8 @@ vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
2102
2109
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
2103
2110
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
2104
2111
  vellum/workflows/workflows/tests/test_event_filters.py,sha256=CPsgtn2F8QMuNMxN5MB6IwTY0y_8JWBCZsio75vxp6c,3638
2105
- vellum_ai-1.8.4.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2106
- vellum_ai-1.8.4.dist-info/METADATA,sha256=2A_OzgYI-fjot2f0Dc4Y8R2gbHSYOXv0zNpGlzhV4wc,5547
2107
- vellum_ai-1.8.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2108
- vellum_ai-1.8.4.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2109
- vellum_ai-1.8.4.dist-info/RECORD,,
2112
+ vellum_ai-1.8.6.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2113
+ vellum_ai-1.8.6.dist-info/METADATA,sha256=kt1BJsAjvhgy9zxyX1L7VPkJK6b4Bs7obNJm6tuqJJI,5547
2114
+ vellum_ai-1.8.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2115
+ vellum_ai-1.8.6.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2116
+ vellum_ai-1.8.6.dist-info/RECORD,,
@@ -24,7 +24,7 @@ def test_manual_trigger_serialization():
24
24
  assert isinstance(triggers, list)
25
25
 
26
26
  assert len(triggers) == 1
27
- assert triggers[0] == {"id": "b09c1902-3cca-4c79-b775-4c32e3e88466", "type": "MANUAL", "attributes": []}
27
+ assert triggers[0] == {"id": "b3c8ab56-001f-4157-bbc2-4a7fe5ebf8c6", "type": "MANUAL", "attributes": []}
28
28
 
29
29
 
30
30
  def test_manual_trigger_multiple_entrypoints():
@@ -54,7 +54,7 @@ def test_manual_trigger_multiple_entrypoints():
54
54
  assert isinstance(triggers, list)
55
55
 
56
56
  assert len(triggers) == 1
57
- assert triggers[0] == {"id": "b09c1902-3cca-4c79-b775-4c32e3e88466", "type": "MANUAL", "attributes": []}
57
+ assert triggers[0] == {"id": "b3c8ab56-001f-4157-bbc2-4a7fe5ebf8c6", "type": "MANUAL", "attributes": []}
58
58
 
59
59
 
60
60
  def test_unknown_trigger_type():
@@ -107,4 +107,4 @@ def test_manual_trigger_entrypoint_id_consistency():
107
107
  "to maintain trigger-entrypoint linkage"
108
108
  )
109
109
  # Also verify the expected UUID
110
- assert trigger_id == "b09c1902-3cca-4c79-b775-4c32e3e88466"
110
+ assert trigger_id == "b3c8ab56-001f-4157-bbc2-4a7fe5ebf8c6"
@@ -353,9 +353,8 @@ def serialize_value(executable_id: UUID, display_context: "WorkflowDisplayContex
353
353
  }
354
354
 
355
355
  if isinstance(value, TriggerAttributeReference):
356
- # Generate trigger ID using the same hash formula as in base_workflow_display.py
357
356
  trigger_class = value.trigger_class
358
- trigger_id = uuid4_from_hash(trigger_class.__qualname__)
357
+ trigger_id = trigger_class.__id__
359
358
 
360
359
  return {
361
360
  "type": "TRIGGER_ATTRIBUTE",
@@ -30,7 +30,7 @@ from vellum.workflows.triggers.vellum_integration import VellumIntegrationTrigge
30
30
  from vellum.workflows.types.core import Json, JsonArray, JsonObject
31
31
  from vellum.workflows.types.generics import WorkflowType
32
32
  from vellum.workflows.types.utils import get_original_base
33
- from vellum.workflows.utils.uuids import get_trigger_id, uuid4_from_hash
33
+ from vellum.workflows.utils.uuids import uuid4_from_hash
34
34
  from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_variable_type
35
35
  from vellum.workflows.vellum_client import create_vellum_client
36
36
  from vellum_ee.workflows.display.base import (
@@ -202,7 +202,7 @@ class BaseWorkflowDisplay(Generic[WorkflowType]):
202
202
  if has_manual_trigger:
203
203
  # ManualTrigger: use trigger ID for ENTRYPOINT node (backward compatibility)
204
204
  trigger_class = manual_trigger_edges[0].trigger_class
205
- entrypoint_node_id = get_trigger_id(trigger_class)
205
+ entrypoint_node_id = trigger_class.__id__
206
206
  entrypoint_node_source_handle_id = self.display_context.workflow_display.entrypoint_node_source_handle_id
207
207
 
208
208
  # Add ENTRYPOINT node for ManualTrigger workflows
@@ -386,7 +386,7 @@ class BaseWorkflowDisplay(Generic[WorkflowType]):
386
386
  if has_only_integration_trigger:
387
387
  # Use trigger ID directly as sourceNodeId (no ENTRYPOINT node)
388
388
  trigger_class = integration_trigger_edges[0].trigger_class
389
- trigger_id = get_trigger_id(trigger_class)
389
+ trigger_id = trigger_class.__id__
390
390
  trigger_source_handle_id = trigger_id # Use trigger ID as handle ID
391
391
 
392
392
  for target_node, entrypoint_display in self.display_context.entrypoint_displays.items():
@@ -550,7 +550,7 @@ class BaseWorkflowDisplay(Generic[WorkflowType]):
550
550
  )
551
551
 
552
552
  # Return as a list with a single trigger object matching Django schema
553
- trigger_id = get_trigger_id(trigger_class)
553
+ trigger_id = trigger_class.__id__
554
554
 
555
555
  # Serialize trigger attributes like node outputs
556
556
  attribute_references = trigger_class.attribute_references().values()
@@ -30,7 +30,11 @@ class VirtualFileLoader(importlib.abc.Loader):
30
30
 
31
31
  if module_info:
32
32
  file_path, code = module_info
33
- compiled = compile(code, file_path, "exec")
33
+ namespaced_path = (
34
+ file_path if file_path.startswith(f"{self.namespace}/") else f"{self.namespace}/{file_path}"
35
+ )
36
+ module.__file__ = namespaced_path
37
+ compiled = compile(code, namespaced_path, "exec")
34
38
  exec(compiled, module.__dict__)
35
39
 
36
40
  def get_source(self, fullname):
@@ -58,6 +62,18 @@ class VirtualFileLoader(importlib.abc.Loader):
58
62
  if code is not None:
59
63
  return file_path, code
60
64
 
65
+ relative_name = self._to_relative(fullname)
66
+ if relative_name is not None and self._is_package_directory(relative_name):
67
+ return self._generate_init_content(relative_name)
68
+
69
+ return None
70
+
71
+ def _to_relative(self, fullname: str) -> Optional[str]:
72
+ """Convert a fully qualified module name to a relative name without the namespace prefix."""
73
+ if fullname.startswith(self.namespace + "."):
74
+ return fullname[len(self.namespace) + 1 :]
75
+ elif fullname == self.namespace:
76
+ return ""
61
77
  return None
62
78
 
63
79
  def _get_file_path(self, fullname):
@@ -67,6 +83,34 @@ class VirtualFileLoader(importlib.abc.Loader):
67
83
  file_key_name = re.sub(r"^" + re.escape(self.namespace) + r"/", "", file_path)
68
84
  return self.files.get(file_key_name)
69
85
 
86
+ def _is_package_directory(self, fullname: str) -> bool:
87
+ """Check if directory contains .py files that should be treated as a package."""
88
+ directory_prefix = fullname.replace(".", "/") + "/"
89
+
90
+ # Exclude top-level display directory from auto-generation as it typically has
91
+ # specific __init__.py content that shouldn't be replaced with empty files.
92
+ if directory_prefix == "display/":
93
+ return False
94
+
95
+ for file_path in self.files.keys():
96
+ if file_path.startswith(directory_prefix):
97
+ if file_path.endswith(".py") and not file_path.endswith("__init__.py"):
98
+ return True
99
+ remaining_path = file_path[len(directory_prefix) :]
100
+ if "/" in remaining_path:
101
+ return True
102
+
103
+ return False
104
+
105
+ def _generate_init_content(self, fullname: str) -> tuple[str, str]:
106
+ """Auto-generate empty __init__.py content to mark directory as a package."""
107
+ directory_prefix = fullname.replace(".", "/") + "/"
108
+ file_path = directory_prefix + "__init__.py"
109
+
110
+ code = ""
111
+
112
+ return file_path, code
113
+
70
114
 
71
115
  class VirtualFileFinder(BaseWorkflowFinder):
72
116
  def __init__(self, files: dict[str, str], namespace: str, source_module: Optional[str] = None):