vellum-ai 1.3.1__py3-none-any.whl → 1.3.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.
Files changed (37) hide show
  1. vellum/__init__.py +6 -0
  2. vellum/client/README.md +5 -5
  3. vellum/client/__init__.py +20 -0
  4. vellum/client/core/client_wrapper.py +2 -2
  5. vellum/client/raw_client.py +20 -0
  6. vellum/client/reference.md +61 -27
  7. vellum/client/resources/ad_hoc/client.py +29 -29
  8. vellum/client/resources/ad_hoc/raw_client.py +13 -13
  9. vellum/client/resources/events/client.py +69 -33
  10. vellum/client/resources/events/raw_client.py +13 -9
  11. vellum/client/types/__init__.py +6 -0
  12. vellum/client/types/create_workflow_event_request.py +7 -0
  13. vellum/client/types/deprecated_prompt_request_input.py +8 -0
  14. vellum/client/types/event_create_response.py +5 -0
  15. vellum/client/types/logical_operator.py +1 -0
  16. vellum/client/types/processing_failure_reason_enum.py +3 -1
  17. vellum/client/types/slim_document.py +1 -0
  18. vellum/client/types/workflow_input.py +31 -0
  19. vellum/types/create_workflow_event_request.py +3 -0
  20. vellum/types/deprecated_prompt_request_input.py +3 -0
  21. vellum/types/workflow_input.py +3 -0
  22. vellum/workflows/constants.py +3 -0
  23. vellum/workflows/events/node.py +1 -0
  24. vellum/workflows/events/tests/test_event.py +1 -0
  25. vellum/workflows/events/workflow.py +1 -0
  26. vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py +16 -0
  27. vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py +3 -13
  28. vellum/workflows/nodes/tests/test_utils.py +23 -0
  29. vellum/workflows/nodes/utils.py +14 -0
  30. vellum/workflows/runner/runner.py +33 -12
  31. vellum/workflows/types/code_execution_node_wrappers.py +2 -1
  32. {vellum_ai-1.3.1.dist-info → vellum_ai-1.3.2.dist-info}/METADATA +1 -1
  33. {vellum_ai-1.3.1.dist-info → vellum_ai-1.3.2.dist-info}/RECORD +37 -30
  34. vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py +81 -0
  35. {vellum_ai-1.3.1.dist-info → vellum_ai-1.3.2.dist-info}/LICENSE +0 -0
  36. {vellum_ai-1.3.1.dist-info → vellum_ai-1.3.2.dist-info}/WHEEL +0 -0
  37. {vellum_ai-1.3.1.dist-info → vellum_ai-1.3.2.dist-info}/entry_points.txt +0 -0
@@ -404,6 +404,7 @@ class WorkflowRunner(Generic[StateType]):
404
404
  )
405
405
  except NodeException as e:
406
406
  logger.info(e)
407
+ captured_traceback = traceback.format_exc()
407
408
 
408
409
  self._workflow_event_inner_queue.put(
409
410
  NodeExecutionRejectedEvent(
@@ -412,12 +413,14 @@ class WorkflowRunner(Generic[StateType]):
412
413
  body=NodeExecutionRejectedBody(
413
414
  node_definition=node.__class__,
414
415
  error=e.error,
416
+ traceback=captured_traceback,
415
417
  ),
416
418
  parent=execution.parent_context,
417
419
  )
418
420
  )
419
421
  except WorkflowInitializationException as e:
420
422
  logger.info(e)
423
+ captured_traceback = traceback.format_exc()
421
424
  self._workflow_event_inner_queue.put(
422
425
  NodeExecutionRejectedEvent(
423
426
  trace_id=execution.trace_id,
@@ -425,6 +428,7 @@ class WorkflowRunner(Generic[StateType]):
425
428
  body=NodeExecutionRejectedBody(
426
429
  node_definition=node.__class__,
427
430
  error=e.error,
431
+ traceback=captured_traceback,
428
432
  ),
429
433
  parent=execution.parent_context,
430
434
  )
@@ -574,7 +578,7 @@ class WorkflowRunner(Generic[StateType]):
574
578
  )
575
579
  worker_thread.start()
576
580
 
577
- def _handle_work_item_event(self, event: WorkflowEvent) -> Optional[WorkflowError]:
581
+ def _handle_work_item_event(self, event: WorkflowEvent) -> Optional[NodeExecutionRejectedEvent]:
578
582
  active_node = self._active_nodes_by_execution_id.get(event.span_id)
579
583
  if not active_node:
580
584
  return None
@@ -582,7 +586,7 @@ class WorkflowRunner(Generic[StateType]):
582
586
  node = active_node.node
583
587
  if event.name == "node.execution.rejected":
584
588
  self._active_nodes_by_execution_id.pop(event.span_id)
585
- return event.error
589
+ return event
586
590
 
587
591
  if event.name == "node.execution.streaming":
588
592
  for workflow_output_descriptor in self.workflow.Outputs:
@@ -708,13 +712,24 @@ class WorkflowRunner(Generic[StateType]):
708
712
  parent=self._execution_context.parent_context,
709
713
  )
710
714
 
711
- def _reject_workflow_event(self, error: WorkflowError) -> WorkflowExecutionRejectedEvent:
715
+ def _reject_workflow_event(
716
+ self, error: WorkflowError, captured_traceback: Optional[str] = None
717
+ ) -> WorkflowExecutionRejectedEvent:
718
+ if captured_traceback is None:
719
+ try:
720
+ captured_traceback = traceback.format_exc()
721
+ if captured_traceback.strip() == "NoneType: None":
722
+ captured_traceback = None
723
+ except Exception:
724
+ pass
725
+
712
726
  return WorkflowExecutionRejectedEvent(
713
727
  trace_id=self._execution_context.trace_id,
714
728
  span_id=self._initial_state.meta.span_id,
715
729
  body=WorkflowExecutionRejectedBody(
716
730
  workflow_definition=self.workflow.__class__,
717
731
  error=error,
732
+ traceback=captured_traceback,
718
733
  ),
719
734
  parent=self._execution_context.parent_context,
720
735
  )
@@ -758,22 +773,26 @@ class WorkflowRunner(Generic[StateType]):
758
773
  else:
759
774
  self._concurrency_queue.put((self._initial_state, node_cls, None))
760
775
  except NodeException as e:
761
- self._workflow_event_outer_queue.put(self._reject_workflow_event(e.error))
776
+ captured_traceback = traceback.format_exc()
777
+ self._workflow_event_outer_queue.put(self._reject_workflow_event(e.error, captured_traceback))
762
778
  return
763
779
  except WorkflowInitializationException as e:
764
- self._workflow_event_outer_queue.put(self._reject_workflow_event(e.error))
780
+ captured_traceback = traceback.format_exc()
781
+ self._workflow_event_outer_queue.put(self._reject_workflow_event(e.error, captured_traceback))
765
782
  return
766
783
  except Exception:
767
784
  err_message = f"An unexpected error occurred while initializing node {node_cls.__name__}"
768
785
  logger.exception(err_message)
786
+ captured_traceback = traceback.format_exc()
769
787
  self._workflow_event_outer_queue.put(
770
788
  self._reject_workflow_event(
771
789
  WorkflowError(code=WorkflowErrorCode.INTERNAL_ERROR, message=err_message),
790
+ captured_traceback,
772
791
  )
773
792
  )
774
793
  return
775
794
 
776
- rejection_error: Optional[WorkflowError] = None
795
+ rejection_event: Optional[NodeExecutionRejectedEvent] = None
777
796
 
778
797
  while True:
779
798
  if not self._active_nodes_by_execution_id:
@@ -784,9 +803,9 @@ class WorkflowRunner(Generic[StateType]):
784
803
  self._workflow_event_outer_queue.put(event)
785
804
 
786
805
  with execution_context(parent_context=current_parent, trace_id=self._execution_context.trace_id):
787
- rejection_error = self._handle_work_item_event(event)
806
+ rejection_event = self._handle_work_item_event(event)
788
807
 
789
- if rejection_error:
808
+ if rejection_event:
790
809
  break
791
810
 
792
811
  # Handle any remaining events
@@ -795,9 +814,9 @@ class WorkflowRunner(Generic[StateType]):
795
814
  self._workflow_event_outer_queue.put(event)
796
815
 
797
816
  with execution_context(parent_context=current_parent, trace_id=self._execution_context.trace_id):
798
- rejection_error = self._handle_work_item_event(event)
817
+ rejection_event = self._handle_work_item_event(event)
799
818
 
800
- if rejection_error:
819
+ if rejection_event:
801
820
  break
802
821
  except Empty:
803
822
  pass
@@ -817,8 +836,10 @@ class WorkflowRunner(Generic[StateType]):
817
836
  )
818
837
  return
819
838
 
820
- if rejection_error:
821
- self._workflow_event_outer_queue.put(self._reject_workflow_event(rejection_error))
839
+ if rejection_event:
840
+ self._workflow_event_outer_queue.put(
841
+ self._reject_workflow_event(rejection_event.error, rejection_event.body.traceback)
842
+ )
822
843
  return
823
844
 
824
845
  fulfilled_outputs = self.workflow.Outputs()
@@ -1,4 +1,5 @@
1
1
  from vellum.client.types.function_call import FunctionCall
2
+ from vellum.workflows.constants import undefined
2
3
 
3
4
 
4
5
  class StringValueWrapper(str):
@@ -71,7 +72,7 @@ class DictWrapper(dict):
71
72
  # several values as VellumValue objects, we use the "value" key to return itself
72
73
  return self
73
74
 
74
- raise AttributeError(f"dict has no key: '{attr}'")
75
+ return undefined
75
76
 
76
77
  item = super().__getitem__(attr)
77
78
  if not isinstance(item, DictWrapper) and not isinstance(item, ListWrapper):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 1.3.1
3
+ Version: 1.3.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -102,6 +102,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling
102
102
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py,sha256=XIZZr5POo2NLn2uEWm9EC3rejeBMoO4X-JtzTH6mvp4,4074
103
103
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=pLCyMScV88DTBXRH7jXaXOEA1GBq8NIipCUFwIAWnwI,2771
104
104
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=exT7U-axwtYgFylagScflSQLJEND51qIAx2UATju6JM,6023
105
+ vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py,sha256=vbDFBrWUPeeW7cxjNA6SXrsHlYcbOAhlQ4C45Vdnr1c,3428
105
106
  vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_parameterization_error.py,sha256=vAdmn3YTBDpo55znbydQxsgg9ASqHcvsUPwiBR_7wfo,1461
106
107
  vellum_ee/workflows/display/types.py,sha256=cyZruu4sXAdHjwuFc7dydM4DcFNf-pp_CmulXItxac4,3679
107
108
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -145,12 +146,12 @@ vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50P
145
146
  vellum_ee/workflows/tests/test_serialize_module.py,sha256=lk-4dVnG2HcxxywBXxDR1ieH8D9RJt4lvchoZhtQPdU,2892
146
147
  vellum_ee/workflows/tests/test_server.py,sha256=dXFBraU99Y6cKp2aBhLFXQTScSRcE9WaWjo1z9piqdU,23344
147
148
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
148
- vellum/__init__.py,sha256=8-mW70qyqMe2d4jNe2hgthuXs5n3c0qTlkdV8Nz8qcs,47252
149
- vellum/client/README.md,sha256=Uwq9qIFZAHOVCgEfatfWe4YoW-QYYy6xVA1bMjPvx3k,5601
150
- vellum/client/__init__.py,sha256=LOu_TklkJG01SgXIpPWDhOX2QvKDyd2ZbQyr5H0m31I,72349
149
+ vellum/__init__.py,sha256=lv4OTbPgTegugVOpRy5xJPPwMvC1Zqrg4oFMEwY1KSg,47428
150
+ vellum/client/README.md,sha256=b6XKeYBBbhQx0v1sHWfM0gIJeJhUFF-aqL2ig7ADa08,5564
151
+ vellum/client/__init__.py,sha256=T5Ht_w-Mk_9nzGqdadhQB8V20M0vYj7am06ut0A3P1o,73401
151
152
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
152
153
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
153
- vellum/client/core/client_wrapper.py,sha256=yjqDTK-pFWVYr-n4F1kmy-TuBlGzXJBmaztIfr5uBF0,2840
154
+ vellum/client/core/client_wrapper.py,sha256=U9SkO9ewIIRiSsS9pT50GwmBH-rMjpV3QS5Htj-ipqs,2840
154
155
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
155
156
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
156
157
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -170,12 +171,12 @@ vellum/client/errors/internal_server_error.py,sha256=t1-kpoDC2biEuoE-Ne8v1kuQswv
170
171
  vellum/client/errors/not_found_error.py,sha256=YrqVM0oc3qkQbFbmmm6xr300VGfUNxMSy1UQUp2IOE8,336
171
172
  vellum/client/errors/too_many_requests_error.py,sha256=SJJemdgUlQHV_VpxK8UfFNexgZebNT5_MTOeQs6oVgc,397
172
173
  vellum/client/errors/unauthorized_error.py,sha256=waPl5Swiqsk3FQK-Lljzx4KDh4RPZ0wL6BLHjM8onQ8,394
173
- vellum/client/raw_client.py,sha256=IJNaTvVzigyiqHZ9g-nLZzXsV8P7aRUZHdXV0U3ddn8,112401
174
- vellum/client/reference.md,sha256=Y5xeW_q9baKaA9Dcd9RL8MQLcGEGAQZXbiCmcrA7yr0,95032
174
+ vellum/client/raw_client.py,sha256=cmMR0t87iUYvkIE9L4g0dcCmw3uUQNze9rD9CBv5rzs,113481
175
+ vellum/client/reference.md,sha256=IS1XNL62s3_Xz49ncvPJVZNvOMKyi36AYp2gYBt7xx8,95967
175
176
  vellum/client/resources/__init__.py,sha256=R10JFtO6U6QRvNubrmDIjncT7e5q4AiOKjXSK4wFuXc,1609
176
177
  vellum/client/resources/ad_hoc/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
177
- vellum/client/resources/ad_hoc/client.py,sha256=AbK_g9HPL2xEBHymwQ9rGO7js7X1YpNYcqPa-PxlsyM,14400
178
- vellum/client/resources/ad_hoc/raw_client.py,sha256=2eBoWQyB02LUqe7tF8ZZNJdF97XdeHyVY0N3O6EJIxc,24723
178
+ vellum/client/resources/ad_hoc/client.py,sha256=v5I_YzJaaPezsE4KVuMSUXJISstKuJ_9-VUeXakIJhw,14353
179
+ vellum/client/resources/ad_hoc/raw_client.py,sha256=JSbwEoowm41Wm9u4hQNoAIHG_-IX6IYfsBRn2tGZ-gM,24864
179
180
  vellum/client/resources/container_images/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
180
181
  vellum/client/resources/container_images/client.py,sha256=o3K1T2zuU738YsNvHeImytorl8sRCgnuv-u6F9O5fZk,9874
181
182
  vellum/client/resources/container_images/raw_client.py,sha256=ddsLR8tbDa7D-hJsjPU8n3GeTYN71CMwTfPK2_L5Sc4,14422
@@ -194,8 +195,8 @@ vellum/client/resources/documents/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7
194
195
  vellum/client/resources/documents/client.py,sha256=1IjqPf-ucvYK4A5CdtGP_0M4y9l1vBUn_Kq1GeqisxU,16791
195
196
  vellum/client/resources/documents/raw_client.py,sha256=-_94wO-A7RoSY9bea1mp1Qskurak9BJNw9IQ1Jz_MTI,25992
196
197
  vellum/client/resources/events/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
197
- vellum/client/resources/events/client.py,sha256=Ha0IBOo33pTu13pyzJ4vK2LJXikV07KmHznuTb3LQtI,4901
198
- vellum/client/resources/events/raw_client.py,sha256=Y854a-aKV8wnqoXCtvauMINgOnBUe6rqN1A6gQeVBm4,8369
198
+ vellum/client/resources/events/client.py,sha256=gTMjvXxPprTkNEqNBKZU810HBfnjlHjMMLQEiH135JU,6641
199
+ vellum/client/resources/events/raw_client.py,sha256=XsVnKcwkZy5CPFbIvdsfijaPOxjO_1S7g_LvWUKEXfA,8575
199
200
  vellum/client/resources/folder_entities/__init__.py,sha256=BSfCsUFsB-bXr4AwYaCcEU48j5U61VFxajugpspfDS0,195
200
201
  vellum/client/resources/folder_entities/client.py,sha256=F60BvZtI4Bnk2h7Z405JshsCLx7qh_yXZkqe3rPdpus,9291
201
202
  vellum/client/resources/folder_entities/raw_client.py,sha256=uYTdVE-lpzoPzxnXIKCb_A4N8L1R7R-K0rq_0txtV04,10697
@@ -245,7 +246,7 @@ vellum/client/resources/workspace_secrets/raw_client.py,sha256=ZfiNd1NisolmK07QP
245
246
  vellum/client/resources/workspaces/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
246
247
  vellum/client/resources/workspaces/client.py,sha256=36KYa2FDu6h65q2GscUFOJs4qKeiOA6grOYoCc0Gi3E,2936
247
248
  vellum/client/resources/workspaces/raw_client.py,sha256=M3Ewk1ZfEZ44EeTvBtBNoNKi5whwfLY-1GR07SyfDTI,3517
248
- vellum/client/types/__init__.py,sha256=-PQEF1IO-RdF7X4YeQf2ZO-OCPvy0pYxt11__WpVxso,71638
249
+ vellum/client/types/__init__.py,sha256=ZzAl8sIsRT3hkRaCO_tlR9fjgVIM7sQCxmLO_S5WrIo,71915
249
250
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=B69EesIH6fpNsdoiJaSG9zF1Sl17FnjoTu4CBkUSoHk,608
250
251
  vellum/client/types/ad_hoc_expand_meta.py,sha256=Kajcj3dKKed5e7uZibRnE3ZonK_bB2JPM-3aLjLfUp4,1295
251
252
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=5kD6ZcbU8P8ynK0lMD8Mh7vHzvQt06ziMyphvWYg6FU,968
@@ -318,6 +319,7 @@ vellum/client/types/container_image_build_config.py,sha256=Hl0PpR6fY8PDS8nvYktBs
318
319
  vellum/client/types/container_image_container_image_tag.py,sha256=TlXkSkD3udi_Cf-ZpiIAM_rkMzHyPrWJCUTm_3JWunA,586
319
320
  vellum/client/types/container_image_read.py,sha256=9vyFH5TGg_WNMIlt47gVfy0pce-SOVyQdOkej7ZjKgk,1101
320
321
  vellum/client/types/create_test_suite_test_case_request.py,sha256=qQCmHY3JcMuQ73l1VkY4Atmf0G2qUT20Tcax2uX3WCU,1610
322
+ vellum/client/types/create_workflow_event_request.py,sha256=0MmlvSgYkpd1HU-DyVJDzEPrgbQCjIeD96iZZZ4fxuU,208
321
323
  vellum/client/types/delimiter_chunker_config.py,sha256=iJqsicj4XkkUc2D807slcvrYrTF3LnSFtYwzFxmJFqE,601
322
324
  vellum/client/types/delimiter_chunker_config_request.py,sha256=EQ3iJK2p7flI3qLwtlMRCrOoPTL3tst0G4U1KU3cvIU,608
323
325
  vellum/client/types/delimiter_chunking.py,sha256=RNhnLZzN5325Tt845uQeA6nCFnRqcXtbxJFw19koBfU,714
@@ -328,6 +330,7 @@ vellum/client/types/deployment_provider_payload_response_payload.py,sha256=xHLQn
328
330
  vellum/client/types/deployment_read.py,sha256=gfkVoVD84glJuUFDX61uMwmhDYg46h2UXcXIhTEA-ls,2040
329
331
  vellum/client/types/deployment_release_tag_deployment_history_item.py,sha256=wVzgUnsa4Up9ReH_rP_l5ssfA0J1Nsfd4AN6lRsxhv4,595
330
332
  vellum/client/types/deployment_release_tag_read.py,sha256=SV_kKYFIjhfD5CR9Ab35pdJpAJSx-7jhk2x_HUiz-Uk,1242
333
+ vellum/client/types/deprecated_prompt_request_input.py,sha256=28_ZOtOsQQXS_X_qH4YyYEzeM-McMzbYXgTRni4fm1Q,255
331
334
  vellum/client/types/docker_service_token.py,sha256=rv0F19r2Sgba_Hbz757HFfTV8UioAQTV2xXkWxfn4sg,578
332
335
  vellum/client/types/document_chat_message_content.py,sha256=pzedhUAhgcmI5jaZFHZB-Ei57f5oixCCneZYki90nGU,709
333
336
  vellum/client/types/document_chat_message_content_request.py,sha256=S1Fb1ngDTbTfMR4z06YT9k5MQL83szNzV38BUxGhRqQ,738
@@ -355,7 +358,7 @@ vellum/client/types/error_detail_response.py,sha256=ojTyfayk-06SGyQ_agQRH7R-4dqp
355
358
  vellum/client/types/error_input.py,sha256=L0b21Sa-hMCSGLbD99_oaGwsvhdJdtifEfKd-1uKn8U,750
356
359
  vellum/client/types/error_vellum_value.py,sha256=5Q1iQJ3wfB-8KoARCK7FVLUxM4Upc9CFhOcKxJjgXLE,690
357
360
  vellum/client/types/error_vellum_value_request.py,sha256=7E9ZGq5OOZLp3v-AUkyn8uXIYiz6MKUzJjfKoqvS_ws,719
358
- vellum/client/types/event_create_response.py,sha256=_ogApuh152-AmqplxBSZPVzf_l5b3FERlDr8g6nbqnk,726
361
+ vellum/client/types/event_create_response.py,sha256=-AMF97kDAKTr0WsufK2st48AHi81e7_pG02dvDmkcLU,808
359
362
  vellum/client/types/execute_api_request_bearer_token.py,sha256=d2cP31_oLVIJ4Olm9wVbDMGfPVJoLgJgQTidJGyyJ7M,184
360
363
  vellum/client/types/execute_api_request_body.py,sha256=WySF2yj9rtx2vF4En0dfZkzPF2FNFtVRFW7P8Mw-hF8,217
361
364
  vellum/client/types/execute_api_request_headers_value.py,sha256=W9Qrqzia725vZZ_cyTzuDMLvVQ5JNkq0GHhM-XewBGk,185
@@ -458,7 +461,7 @@ vellum/client/types/json_input.py,sha256=vF9bbntErx0IwVGB0OqrYooPU7A9wxaHap_CZR_
458
461
  vellum/client/types/json_input_request.py,sha256=TAXQypA_hkTgjnGdojm56TjvsOXd0-uVB6TzcLCioEA,732
459
462
  vellum/client/types/json_vellum_value.py,sha256=v01fKiC-U9asT0GV4iorxWIXoPnG-3Do5hiJOaRO4go,653
460
463
  vellum/client/types/json_vellum_value_request.py,sha256=UqBCzov-GCNhgS8aJRUB2baLISdSX2T2EYDN0PWarJ0,660
461
- vellum/client/types/logical_operator.py,sha256=av5NiF3Z9lyP_qibvInCV_FZzpXoCHo5YMjOqC-Qe4M,654
464
+ vellum/client/types/logical_operator.py,sha256=UET8SvwJEorCZQMpfHyRrOcJIH1-eVX98oj-nhn1FsM,672
462
465
  vellum/client/types/logprobs_enum.py,sha256=D_458cZX2CAb6dX_ovrQ6HARlJkYcZRadKwsi1Cr-JM,151
463
466
  vellum/client/types/map_node_result.py,sha256=5v8rzWo6x7QLFyooHieauuRmBU_N91V5uHAvTHTNc6Q,716
464
467
  vellum/client/types/map_node_result_data.py,sha256=UlboKx1e5onq_4hTJhN80GZd8V2pkOx_uHjTsQQsOgk,663
@@ -580,7 +583,7 @@ vellum/client/types/pdf_search_result_meta_source.py,sha256=KaYx-xvNtOn_ADRDBbb4
580
583
  vellum/client/types/pdf_search_result_meta_source_request.py,sha256=Fh2EUxWyhdP7yW2CUNvSTSZo8EcukgogALr4HpppHvQ,1097
581
584
  vellum/client/types/plain_text_prompt_block.py,sha256=vqZESoqj6P1IyHFmRAk2kmdU3ktsM_852crRCBcYV64,894
582
585
  vellum/client/types/price.py,sha256=f-j-74UUDuX2c-IQxXH78KV8L-jLi6sdsHWVLRKqBy4,574
583
- vellum/client/types/processing_failure_reason_enum.py,sha256=R_KIW7TcQejhc-vLhtNf9SdkYADgoZCn4ch4_RRIvsI,195
586
+ vellum/client/types/processing_failure_reason_enum.py,sha256=cQ3Rmryo7U0Lkh-XZzWIDI9Re-oVh1GZb2cDgMR5sL8,224
584
587
  vellum/client/types/prompt_block.py,sha256=950JeKeNKZ0DQXwCD-Sy9SDMtiR7F-BqCrJZoxZt7JM,886
585
588
  vellum/client/types/prompt_block_state.py,sha256=BRAzTYARoSU36IVZGWMeeqhl5fgFMXCyhJ8rCbfB-f0,163
586
589
  vellum/client/types/prompt_deployment_expand_meta_request.py,sha256=v7sW8hDHULzNa103FB3WugGMsRUnt0ijbzRy476M3fg,1874
@@ -659,7 +662,7 @@ vellum/client/types/sentence_chunker_config_request.py,sha256=Da2ANuD4icLxI74emC
659
662
  vellum/client/types/sentence_chunking.py,sha256=MyEImiN0dhWEVFvD76Q6mCqIEjZcyY__Hhu0j9Gjs6Y,747
660
663
  vellum/client/types/sentence_chunking_request.py,sha256=itrdqiKJJ7UKWVGTfj9sJu3kMSThkBF_Qj-3KqFunP4,776
661
664
  vellum/client/types/slim_deployment_read.py,sha256=lEJ8Fx7QSmqjEK-LcR0y_hX2ywcaPbYjxINwPGy_ofw,1733
662
- vellum/client/types/slim_document.py,sha256=2eSbvk2u8NsFsT3SPmDRvdBJsytJ8zPAVhuTsC-hF8E,2359
665
+ vellum/client/types/slim_document.py,sha256=aytvaz8SF6MSSEA3iLXP7ZgZOw33CA-_bv2iSj5cH24,2409
663
666
  vellum/client/types/slim_document_document_to_document_index.py,sha256=Ogo8OFjtmcHjDmIynB9vckfjSZxFNhKM-cYpqSfREGI,1515
664
667
  vellum/client/types/slim_release_review.py,sha256=vWNkPXk5wZ_scHsWHz_77PfMZRDn-4qUkqVbCKqY1zQ,747
665
668
  vellum/client/types/slim_workflow_deployment.py,sha256=jIciGPCW9QNtDRdq3w_zUdrrE4cg1LWkcoyGM-L6cs0,2085
@@ -864,6 +867,7 @@ vellum/client/types/workflow_execution_view_online_eval_metric_result.py,sha256=
864
867
  vellum/client/types/workflow_execution_workflow_result_event.py,sha256=9au7DnaQu84TOYBDiSlDAjLcdDAxfMHOYwi4zbSQYBk,1047
865
868
  vellum/client/types/workflow_expand_meta_request.py,sha256=jdlSJB-g7vqhdRheEV0Zzi4CAQZSlGBeWlvbihHgeLU,1115
866
869
  vellum/client/types/workflow_initialization_error.py,sha256=1QIqmlPdbBPLEbMP-ThkC30FiIyxPBnK-g9eRKBdrHw,603
870
+ vellum/client/types/workflow_input.py,sha256=0AKNfArTz60M4M_i9J4in7ZpauU7fHmAQLIxtk5z6no,815
867
871
  vellum/client/types/workflow_node_result_data.py,sha256=kd7HHA8rI1eVkKzzmZixf4eY9I0GWFQUHUX1LxMc4iI,952
868
872
  vellum/client/types/workflow_node_result_event.py,sha256=NjEFaYmzEvb-8orEhLnmZWxw9fnf2EoNXlNux2eMjuE,604
869
873
  vellum/client/types/workflow_node_result_event_state.py,sha256=cC3CdfmXR8bPzSG4W6vDnndA9HAnfF3v4UzmyeVwxog,209
@@ -1100,6 +1104,7 @@ vellum/types/container_image_build_config.py,sha256=HwpCCo427Ee0j6_f72AV5gxaTAOR
1100
1104
  vellum/types/container_image_container_image_tag.py,sha256=RgDod58iPXdgq6sMp63qqmRF3gk_gTK1gwLVcgR58QA,173
1101
1105
  vellum/types/container_image_read.py,sha256=36LQzvJaDGH26wjD6_WxgzwkslgRZihSYXu5n4W7abk,158
1102
1106
  vellum/types/create_test_suite_test_case_request.py,sha256=D_d6psjOMWx5jr2c7FwNndSH1ay5afdu5QXckqtBmfU,173
1107
+ vellum/types/create_workflow_event_request.py,sha256=TwlP_GRYV0gpnlyUK8PzvRF9F9RMr1l9sV5jyIzDzpY,167
1103
1108
  vellum/types/delimiter_chunker_config.py,sha256=-YWJgMAU0rfWMFEY4joJP2tO46RwdlVV9dMmI8vCNFc,162
1104
1109
  vellum/types/delimiter_chunker_config_request.py,sha256=_jUh1W8OkCvOVePVujM3Wi55MxVjT4srnTVUeavEq78,170
1105
1110
  vellum/types/delimiter_chunking.py,sha256=V8UitO134joRwoUWgY-RPZhosDPX0OnVRC1k1DNkLx0,156
@@ -1110,6 +1115,7 @@ vellum/types/deployment_provider_payload_response_payload.py,sha256=nuzn6G1Tc5h6
1110
1115
  vellum/types/deployment_read.py,sha256=iJWCAuQLxL3GEMaMvC5SrUUEvVvSIPYWarQZ7yEyjvI,153
1111
1116
  vellum/types/deployment_release_tag_deployment_history_item.py,sha256=JMw5mQrNNJPDhY-fEW-ZtLh36kqytXy6NySfKwFXUr4,184
1112
1117
  vellum/types/deployment_release_tag_read.py,sha256=cZSBv5ueKerzqCpFz9VIKnzNYL72LCMknKlY-q_4qno,165
1118
+ vellum/types/deprecated_prompt_request_input.py,sha256=ddmp-naHZWLRGLOrQXlfM0IWpJbCFQ6SPMP3xl6FJSk,169
1113
1119
  vellum/types/docker_service_token.py,sha256=hQEc1XEqUssp2OMzWDE4igdsBdEOU5Dg-sCHBaaePr4,158
1114
1120
  vellum/types/document_chat_message_content.py,sha256=n_dmayC0_zMooetTlPM0-IGsaxTqIyfXNBEFS7_uOtI,167
1115
1121
  vellum/types/document_chat_message_content_request.py,sha256=dL-Es5ckNEnBTEaOjg95Yo3dpcSOZ6HQNaywC3Qb6DA,175
@@ -1646,6 +1652,7 @@ vellum/types/workflow_execution_view_online_eval_metric_result.py,sha256=dLnk3Cf
1646
1652
  vellum/types/workflow_execution_workflow_result_event.py,sha256=3bNxtChEfqny5eEazFcGmqQpmC8283Q0J2hxLje-uks,178
1647
1653
  vellum/types/workflow_expand_meta_request.py,sha256=Ahb7gjZekJ5qI0HGHLCbn3hCpkX08EnzeXEH_3ivB4E,166
1648
1654
  vellum/types/workflow_initialization_error.py,sha256=ZDbjOAEilOIpioDFdNolGIh8XFP0kssEmf0LEnLAMQw,167
1655
+ vellum/types/workflow_input.py,sha256=W-ANsou365XpgqSimqMzqD-O5J8U3g0HT0dK1Upiq5o,152
1649
1656
  vellum/types/workflow_node_result_data.py,sha256=xJGaXn837DXVIXd8i9IrFuo3iTKufsUlgogwHnW_MZw,163
1650
1657
  vellum/types/workflow_node_result_event.py,sha256=6j8UAupnbsYlO1Qn4RbSMEvLRPhVFV3F2rIg-a2ocUY,164
1651
1658
  vellum/types/workflow_node_result_event_state.py,sha256=dsQ6jjkq1kh3sivg1iTDPSh1TZ8cLtbMqNrGydhZEoo,170
@@ -1702,7 +1709,7 @@ vellum/utils/uuid.py,sha256=Ch6wWRgwICxLxJCTl5iE3EdRlZj2zADR-zUMUtjcMWM,214
1702
1709
  vellum/version.py,sha256=jq-1PlAYxN9AXuaZqbYk9ak27SgE2lw9Ia5gx1b1gVI,76
1703
1710
  vellum/workflows/README.md,sha256=hZdTKBIcsTKPofK68oPkBhyt0nnRh0csqC12k4FMHHA,3597
1704
1711
  vellum/workflows/__init__.py,sha256=CssPsbNvN6rDhoLuqpEv7MMKGa51vE6dvAh6U31Pcio,71
1705
- vellum/workflows/constants.py,sha256=2yg4_uo5gpqViy3ZLSwfC8qTybleYCtOnhA4Rj6bacM,1310
1712
+ vellum/workflows/constants.py,sha256=xweiPRUSVEnGz9BJvpIWu96Gfok89QneARu4K7wj7f8,1358
1706
1713
  vellum/workflows/context.py,sha256=ViyIeMDhUv-MhnynLaXPlvlbYxRU45ySvYidCNSbFZU,2458
1707
1714
  vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1708
1715
  vellum/workflows/descriptors/base.py,sha256=fRnRkECyDjfz2QEDCY9Q5mAerlJ6jR0R4nE-MP2VP_k,16558
@@ -1720,14 +1727,14 @@ vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy
1720
1727
  vellum/workflows/errors/types.py,sha256=nUWuniEfrhdtb-_2GzoDGlYnSJ_yuNUGjVkaKLNr-rM,4049
1721
1728
  vellum/workflows/events/__init__.py,sha256=V4mh766fyA70WvHelm9kfVZGrUgEKcJ9tJt8EepfQYU,832
1722
1729
  vellum/workflows/events/context.py,sha256=vCfMIPmz4j9Om36rRWa35A_JU_VccWWS52_mZkkqxak,3345
1723
- vellum/workflows/events/node.py,sha256=ZL_oGo7cnXfHNBVfl645fm5fgk-NnoAmV6BlR_YdLnk,5847
1730
+ vellum/workflows/events/node.py,sha256=2R5Yk86v6DNNfgPiCCQjrQ9JYKc71xKNokW2f2EFUUU,5883
1724
1731
  vellum/workflows/events/relational_threads.py,sha256=zmLrBCBYpdpQV0snKH3HleST-_hWAMy2LIT0xScfzi4,1516
1725
1732
  vellum/workflows/events/stream.py,sha256=xhXJTZirFi0xad5neAQNogrIQ4h47fpnKbVC3vCM5Js,889
1726
1733
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1727
1734
  vellum/workflows/events/tests/test_basic_workflow.py,sha256=Pj6orHsXz37jWC5FARi0Sx2Gjf99Owri2Cvr6Chb79k,1765
1728
- vellum/workflows/events/tests/test_event.py,sha256=c2pM8ZOuES_8XjLYP4cU4cChrZUZ1ZZ3HUNIaaPAxXk,18411
1735
+ vellum/workflows/events/tests/test_event.py,sha256=6R3RuN_lMJ9ooHQ9-HE1p0j2xL0FtGiRxkQ7PucFbD0,18450
1729
1736
  vellum/workflows/events/types.py,sha256=mVrqAH9Hs9SpXm08Hcxdyap_ImQPwGsxRr56rSNMP34,5043
1730
- vellum/workflows/events/workflow.py,sha256=rAj2jH94t-bWqtQRtG8mkxXpQxIfqux06QtKdFK_L54,8960
1737
+ vellum/workflows/events/workflow.py,sha256=XW9tpAmDb9BPj2RLYpdbN-SJz_UhwqKBTaMJkZM2ahM,8996
1731
1738
  vellum/workflows/exceptions.py,sha256=NiBiR3ggfmPxBVqD-H1SqmjI-7mIn0EStSN1BqApvCM,1213
1732
1739
  vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1733
1740
  vellum/workflows/expressions/accessor.py,sha256=3lu1-_-dBfZdJvtX-q66jbmRAZtqIfdsh_3_JNuzg1E,4462
@@ -1810,7 +1817,7 @@ vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TI
1810
1817
  vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=PCvD_XROP26k4cVYOdSQUfkDdbTljAJxtOTFzOUoS8c,4450
1811
1818
  vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
1812
1819
  vellum/workflows/nodes/core/templating_node/node.py,sha256=mn0JEbORWaM-mR7fgUZy-BItZCup8CaxZQaY_g3TSEE,3855
1813
- vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=RzX00apXes3Kz7AY0a_Ewx65byRwp2FFc1ceh0AWUOc,14381
1820
+ vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=gfLi8lJpTU5jGO1Kt6UuzVz1fQN8dcNhHBZG90enP-s,15013
1814
1821
  vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
1815
1822
  vellum/workflows/nodes/core/try_node/node.py,sha256=XdyOvlwQ3m4h0-_WNtaBl2t_CdlzPXclulkLOtUcX3E,4388
1816
1823
  vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1842,7 +1849,7 @@ vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=cCpZPna1Ex
1842
1849
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1843
1850
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1844
1851
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
1845
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py,sha256=0lxmU-XXie6qu35qAEfZJ3vKZ1XGvWV4eq9y2RMelOE,38521
1852
+ vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py,sha256=1XadX-I240ghXDSLBejYfDNUpDZcdQbB6aroCHlIBt4,38285
1846
1853
  vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=GxSjRBiH8kNg2dXUVTtnX47fqPIFoGHxRB4ySU6uVPk,3225
1847
1854
  vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
1848
1855
  vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=71ZUNfTiD7t2Kai2ypw0tmv1lSf1brQaHAQD-SeUrGE,1101
@@ -1900,8 +1907,8 @@ vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=c
1900
1907
  vellum/workflows/nodes/mocks.py,sha256=a1FjWEIocseMfjzM-i8DNozpUsaW0IONRpZmXBoWlyc,10455
1901
1908
  vellum/workflows/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1902
1909
  vellum/workflows/nodes/tests/test_mocks.py,sha256=mfPvrs75PKcsNsbJLQAN6PDFoVqs9TmQxpdyFKDdO60,7837
1903
- vellum/workflows/nodes/tests/test_utils.py,sha256=OPVZo9yi8qt0rVqayKhfgh4Hk-dVdIzqfbS89fDhRiE,4913
1904
- vellum/workflows/nodes/utils.py,sha256=CwDobM6T4Whm1B0cekPAIj7pdSxbFGRxx_BqgxZrimg,10265
1910
+ vellum/workflows/nodes/tests/test_utils.py,sha256=BUugAHx2C9YuCwTlsTXV1Glxca0kW3St6T9o_QFatSU,5649
1911
+ vellum/workflows/nodes/utils.py,sha256=wCvf8K5qruT5GwtvnHcQ-LMllktTD8aaFmAGpKQy--c,10720
1905
1912
  vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
1906
1913
  vellum/workflows/outputs/base.py,sha256=PUn0zhGzYCSZL34JXtXg9zALlXS_cqxZldLilPxDzb8,9614
1907
1914
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
@@ -1927,7 +1934,7 @@ vellum/workflows/resolvers/resolver.py,sha256=0Y9ArmN_2Gu62TpgYjFvSzhFMMFy7oGWOJ
1927
1934
  vellum/workflows/resolvers/tests/test_resolver.py,sha256=JX6-zjIQShNvt4XYmub6zmY0iUf6z90KZynqvEd33qA,5202
1928
1935
  vellum/workflows/resolvers/types.py,sha256=Hndhlk69g6EKLh_LYg5ILepW5U_h_BYNllfzhS9k8p4,237
1929
1936
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
1930
- vellum/workflows/runner/runner.py,sha256=jdFFDr-MCVzTm5NKEzOgrw_9osuwdiVk97SRo73uLRQ,39366
1937
+ vellum/workflows/runner/runner.py,sha256=kuW28ozlBi2thQRhgrKigxXtAcOYoGp0M6lYucYsrMw,40321
1931
1938
  vellum/workflows/sandbox.py,sha256=jwlFFQjHDwmbVoBah_Q3i8K_BrzOt-F6TXFauiyVyIk,3021
1932
1939
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
1933
1940
  vellum/workflows/state/base.py,sha256=m9fCqbZn21GshCVCjJTD1dPZEQjFrsMXqlg7tM9fIwM,24283
@@ -1941,7 +1948,7 @@ vellum/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
1941
1948
  vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
1942
1949
  vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83yc5FIM33zuo8,353
1943
1950
  vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
1944
- vellum/workflows/types/code_execution_node_wrappers.py,sha256=3MNIoFZKzVzNS5qFLVuDwMV17QJw72zo7NRf52yMq5A,3074
1951
+ vellum/workflows/types/code_execution_node_wrappers.py,sha256=m6C4cNEfPZFuqsS9qaJHOKq7UviOBDIYdAJalMWmabQ,3089
1945
1952
  vellum/workflows/types/core.py,sha256=TggDVs2lVya33xvu374EDhMC1b7RRlAAs0zWLaF46BA,1385
1946
1953
  vellum/workflows/types/definition.py,sha256=2vq3uGT-m994zRcla0yTUsMiPLKSDuzEZs7H6U9QbiE,4993
1947
1954
  vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEAb5CRU,1576
@@ -1970,8 +1977,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
1970
1977
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1971
1978
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=ptMntHzVyy8ZuzNgeTuk7hREgKQ5UBdgq8VJFSGaW4Y,20832
1972
1979
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
1973
- vellum_ai-1.3.1.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1974
- vellum_ai-1.3.1.dist-info/METADATA,sha256=8eP8UQcNY66V3X1QK8GmDgvQnyi_hHztrZQNUMTCT1M,5547
1975
- vellum_ai-1.3.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1976
- vellum_ai-1.3.1.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1977
- vellum_ai-1.3.1.dist-info/RECORD,,
1980
+ vellum_ai-1.3.2.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1981
+ vellum_ai-1.3.2.dist-info/METADATA,sha256=tnrvX2iEEP0vTsPk5wc2h5nOtdqyExs5bW8fBNV1-7U,5547
1982
+ vellum_ai-1.3.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1983
+ vellum_ai-1.3.2.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1984
+ vellum_ai-1.3.2.dist-info/RECORD,,
@@ -0,0 +1,81 @@
1
+ from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
2
+
3
+ from tests.workflows.web_search.workflow import WebSearchWorkflow
4
+
5
+
6
+ def test_serialize_web_search_workflow():
7
+ # GIVEN a WebSearchWorkflow with a node that has various input types
8
+ # - query from workflow input
9
+ # - api_key from VellumSecretReference
10
+ # - num_results as a constant integer
11
+ # - location as a constant string
12
+
13
+ # WHEN we serialize the workflow through the display system
14
+ workflow_display = get_workflow_display(workflow_class=WebSearchWorkflow)
15
+ serialized_workflow: dict = workflow_display.serialize()
16
+
17
+ # THEN we should get a properly structured serialized workflow
18
+ assert serialized_workflow.keys() == {
19
+ "workflow_raw_data",
20
+ "input_variables",
21
+ "state_variables",
22
+ "output_variables",
23
+ }
24
+
25
+ # AND it should have input variables
26
+ input_variables = serialized_workflow["input_variables"]
27
+ assert len(input_variables) == 1
28
+ assert input_variables[0]["key"] == "search_query"
29
+ assert input_variables[0]["type"] == "STRING"
30
+
31
+ # AND it should have output variables
32
+ output_variables = serialized_workflow["output_variables"]
33
+ assert len(output_variables) == 2
34
+ output_keys = {var["key"] for var in output_variables}
35
+ assert output_keys == {"search_results", "result_urls"}
36
+
37
+ # AND the web search node should be serialized as a GENERIC type node
38
+ workflow_raw_data = serialized_workflow["workflow_raw_data"]
39
+ nodes = workflow_raw_data["nodes"]
40
+
41
+ web_search_node = next(
42
+ (
43
+ node
44
+ for node in nodes
45
+ if node and node.get("type") == "GENERIC" and node.get("base", {}).get("name") == "WebSearchNode"
46
+ ),
47
+ None,
48
+ )
49
+
50
+ assert web_search_node is not None, "WebSearchNode should be serialized as GENERIC type"
51
+
52
+ # AND it should have the correct base module reference
53
+ expected_base = {
54
+ "name": "WebSearchNode",
55
+ "module": ["vellum", "workflows", "nodes", "displayable", "web_search_node", "node"],
56
+ }
57
+ assert (
58
+ web_search_node["base"] == expected_base
59
+ ), f"Base mismatch. Expected: {expected_base}, Found: {web_search_node['base']}"
60
+
61
+ # AND it should have all four serializable attributes defined in our display class
62
+ web_search_attributes = web_search_node["attributes"]
63
+ attribute_names = {attr["name"] for attr in web_search_attributes}
64
+
65
+ # AND the attributes should match exactly what we defined in __serializable_inputs__
66
+ assert attribute_names == {"query", "api_key", "num_results", "location"}
67
+
68
+ # AND it should have all three expected outputs from WebSearchNode
69
+ assert {output["name"] for output in web_search_node["outputs"]} == {"text", "urls", "results"}
70
+
71
+ # AND each attribute should have the correct value type based on its source
72
+ attr_types_by_name = {attr["name"]: attr["value"]["type"] for attr in web_search_attributes}
73
+
74
+ # AND query should reference the workflow input
75
+ assert attr_types_by_name["query"] == "WORKFLOW_INPUT"
76
+ # AND api_key should reference a Vellum secret
77
+ assert attr_types_by_name["api_key"] == "VELLUM_SECRET"
78
+ # AND num_results should be a constant value
79
+ assert attr_types_by_name["num_results"] == "CONSTANT_VALUE"
80
+ # AND location should be a constant value
81
+ assert attr_types_by_name["location"] == "CONSTANT_VALUE"