fastworkflow 2.15.10__tar.gz → 2.15.12__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.

Potentially problematic release.


This version of fastworkflow might be problematic. Click here for more details.

Files changed (177) hide show
  1. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/PKG-INFO +1 -1
  2. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/intent_detection.py +2 -2
  3. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/chat_session.py +10 -0
  4. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_email.py +6 -5
  5. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/signatures.py +88 -101
  6. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/workflow_agent.py +2 -2
  7. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/pyproject.toml +1 -1
  8. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/LICENSE +0 -0
  9. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/README.md +0 -0
  10. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/.DS_Store +0 -0
  11. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/__init__.py +0 -0
  12. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_commands/.gitkeep +0 -0
  13. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/__init__.py +0 -0
  14. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/__init__.py +0 -0
  15. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/abort.py +0 -0
  16. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/you_misunderstood.py +0 -0
  17. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/go_up.py +0 -0
  18. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/reset_context.py +0 -0
  19. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_can_i_do.py +0 -0
  20. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_is_current_context.py +0 -0
  21. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/__init__.py +0 -0
  22. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/_commands/wildcard.py +0 -0
  23. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/command_context_model.json +0 -0
  24. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/_workflows/command_metadata_extraction/parameter_extraction.py +0 -0
  25. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/__main__.py +0 -0
  26. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/ast_class_extractor.py +0 -0
  27. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/class_analysis_structures.py +0 -0
  28. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/cli_specification.md +0 -0
  29. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/command_dependency_resolver.py +0 -0
  30. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/command_file_generator.py +0 -0
  31. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/command_file_template.py +0 -0
  32. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/command_import_utils.py +0 -0
  33. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/command_stub_generator.py +0 -0
  34. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/context_folder_generator.py +0 -0
  35. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/context_model_generator.py +0 -0
  36. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/dependency_manager.py +0 -0
  37. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/dir_scanner.py +0 -0
  38. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/documentation_generator.py +0 -0
  39. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/genai_postprocessor.py +0 -0
  40. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/inheritance_block_regenerator.py +0 -0
  41. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/libcst_transformers.py +0 -0
  42. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/navigator_stub_generator.py +0 -0
  43. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/pydantic_model_generator.py +0 -0
  44. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/build/utterance_generator.py +0 -0
  45. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/cache_matching.py +0 -0
  46. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/cli.py +0 -0
  47. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/command_context_model.py +0 -0
  48. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/command_directory.py +0 -0
  49. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/command_executor.py +0 -0
  50. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/command_interfaces.py +0 -0
  51. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/command_metadata_api.py +0 -0
  52. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/command_routing.py +0 -0
  53. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/docs/context_modules_prd.txt +0 -0
  54. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/extended_workflow_example/README.md +0 -0
  55. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/extended_workflow_example/_commands/WorkItem/get_status.py +0 -0
  56. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/extended_workflow_example/_commands/generate_report.py +0 -0
  57. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/extended_workflow_example/_commands/startup.py +0 -0
  58. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/extended_workflow_example/simple_workflow_template.json +0 -0
  59. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/extended_workflow_example/workflow_inheritance_model.json +0 -0
  60. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/fastworkflow.env +0 -0
  61. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/fastworkflow.passwords.env +0 -0
  62. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/hello_world/_commands/README.md +0 -0
  63. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/hello_world/_commands/add_two_numbers.py +0 -0
  64. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/hello_world/_commands/context_inheritance_model.json +0 -0
  65. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/hello_world/application/add_two_numbers.py +0 -0
  66. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_1/_commands/context_inheritance_model.json +0 -0
  67. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_1/_commands/send_message.py +0 -0
  68. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_1/application/send_message.py +0 -0
  69. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_2/_commands/User/send_message.py +0 -0
  70. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_2/_commands/context_inheritance_model.json +0 -0
  71. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_2/_commands/startup.py +0 -0
  72. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_2/application/user.py +0 -0
  73. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_3/_commands/PremiumUser/send_priority_message.py +0 -0
  74. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_3/_commands/User/send_message.py +0 -0
  75. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_3/_commands/context_inheritance_model.json +0 -0
  76. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_3/_commands/initialize_user.py +0 -0
  77. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_3/application/user.py +0 -0
  78. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/_ChatRoom.py +0 -0
  79. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/add_user.py +0 -0
  80. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/broadcast_message.py +0 -0
  81. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/get_current_user.py +0 -0
  82. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/list_users.py +0 -0
  83. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/set_current_user.py +0 -0
  84. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/_PremiumUser.py +0 -0
  85. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/send_priority_message.py +0 -0
  86. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/User/_User.py +0 -0
  87. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/User/send_message.py +0 -0
  88. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/context_inheritance_model.json +0 -0
  89. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/_commands/set_root_context.py +0 -0
  90. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/application/chatroom.py +0 -0
  91. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/application/user.py +0 -0
  92. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/context_hierarchy_model.json +0 -0
  93. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/messaging_app_4/startup_action.json +0 -0
  94. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/calculate.py +0 -0
  95. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/cancel_pending_order.py +0 -0
  96. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/exchange_delivered_order_items.py +0 -0
  97. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_name_zip.py +0 -0
  98. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/get_order_details.py +0 -0
  99. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/get_product_details.py +0 -0
  100. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/get_user_details.py +0 -0
  101. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/list_all_product_types.py +0 -0
  102. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_address.py +0 -0
  103. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_items.py +0 -0
  104. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_payment.py +0 -0
  105. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/modify_user_address.py +0 -0
  106. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/return_delivered_order_items.py +0 -0
  107. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/_commands/transfer_to_human_agents.py +0 -0
  108. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/context_inheritance_model.json +0 -0
  109. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/retail_data/__init__.py +0 -0
  110. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/retail_data/orders.json +0 -0
  111. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/retail_data/products.json +0 -0
  112. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/retail_data/users.json +0 -0
  113. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/calculate.py +0 -0
  114. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/cancel_pending_order.py +0 -0
  115. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/exchange_delivered_order_items.py +0 -0
  116. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_email.py +0 -0
  117. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_name_zip.py +0 -0
  118. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/get_order_details.py +0 -0
  119. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/get_product_details.py +0 -0
  120. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/get_user_details.py +0 -0
  121. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/list_all_product_types.py +0 -0
  122. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_address.py +0 -0
  123. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_items.py +0 -0
  124. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_payment.py +0 -0
  125. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/modify_user_address.py +0 -0
  126. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/return_delivered_order_items.py +0 -0
  127. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/think.py +0 -0
  128. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/tool.py +0 -0
  129. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/tools/transfer_to_human_agents.py +0 -0
  130. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/retail_workflow/workflow_description.txt +0 -0
  131. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/__init__.py +0 -0
  132. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/_WorkItem.py +0 -0
  133. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/add_child_workitem.py +0 -0
  134. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/get_status.py +0 -0
  135. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/go_to_workitem.py +0 -0
  136. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/mark_as_complete.py +0 -0
  137. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_first_child_workitem.py +0 -0
  138. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_last_child_workitem.py +0 -0
  139. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_next_workitem.py +0 -0
  140. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_previous_workitem.py +0 -0
  141. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_all_child_workitems.py +0 -0
  142. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_child_workitem.py +0 -0
  143. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/show_schema.py +0 -0
  144. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/_commands/startup.py +0 -0
  145. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/application/__init__.py +0 -0
  146. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/application/workitem.py +0 -0
  147. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/simple_workflow_template.json +0 -0
  148. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/examples/simple_workflow_template/startup_action.json +0 -0
  149. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/mcp_server.py +0 -0
  150. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/model_pipeline_training.py +0 -0
  151. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/refine/__main__.py +0 -0
  152. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/run/__init__.py +0 -0
  153. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/run/__main__.py +0 -0
  154. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/run_agent/__init__.py +0 -0
  155. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/run_agent/__main__.py +0 -0
  156. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/run_agent/agent_module.py +0 -0
  157. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/train/__init__.py +0 -0
  158. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/train/__main__.py +0 -0
  159. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/train/generate_synthetic.py +0 -0
  160. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/user_message_queues.py +0 -0
  161. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/__init__.py +0 -0
  162. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/command_dependency_graph.py +0 -0
  163. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/context_utils.py +0 -0
  164. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/dspy_cache_utils.py +0 -0
  165. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/dspy_logger.py +0 -0
  166. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/dspy_utils.py +0 -0
  167. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/env.py +0 -0
  168. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/fuzzy_match.py +0 -0
  169. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/generate_param_examples.py +0 -0
  170. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/logging.py +0 -0
  171. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/parameterize_func_decorator.py +0 -0
  172. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/pydantic_model_2_dspy_signature_class.py +0 -0
  173. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/python_utils.py +0 -0
  174. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/react.py +0 -0
  175. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/utils/startup_progress.py +0 -0
  176. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/workflow.py +0 -0
  177. {fastworkflow-2.15.10 → fastworkflow-2.15.12}/fastworkflow/workflow_inheritance_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastworkflow
3
- Version: 2.15.10
3
+ Version: 2.15.12
4
4
  Summary: A framework for rapidly building large-scale, deterministic, interactive workflows with a fault-tolerant, conversational UX
5
5
  License: Apache-2.0
6
6
  Keywords: fastworkflow,ai,workflow,llm,openai
@@ -96,8 +96,8 @@ class CommandNamePrediction:
96
96
  ].plain_utterances
97
97
  }
98
98
 
99
- # See if the command starts with a command name followed by a space
100
- tentative_command_name = command.split(" ", 1)[0]
99
+ # See if the command starts with a command name followed by a space or a '('
100
+ tentative_command_name = command.split(" ", 1)[0].split("(", 1)[0]
101
101
  normalized_command_name = tentative_command_name.lower()
102
102
  command_name = None
103
103
  if normalized_command_name in command_name_dict:
@@ -560,6 +560,16 @@ class ChatSession:
560
560
  """
561
561
  Summarizes conversation based on original user query, workflow actions and agentt response.
562
562
  """
563
+ # Lets log everything to a file called action_log.jsonl, if it exists
564
+ if os.path.exists("action_log.jsonl"):
565
+ log_entry = {
566
+ "user_query": user_query,
567
+ "agent_workflow_interactions": workflow_actions,
568
+ "final_agent_response": final_agent_response
569
+ }
570
+ with open("action_log.jsonl", "a", encoding="utf-8") as f:
571
+ f.write(json.dumps(log_entry) + "\n")
572
+
563
573
  class ConversationSummarySignature(dspy.Signature):
564
574
  """
565
575
  A summary of conversation
@@ -11,16 +11,17 @@ from ..tools.find_user_id_by_email import FindUserIdByEmail
11
11
 
12
12
 
13
13
  class Signature:
14
- """Find user id by email"""
14
+ """
15
+ Find user id by email.
16
+ If email is not available, use `find_user_id_by_name_zip` instead.
17
+ As a last resort transfer to a human agent
18
+ """
15
19
  class Input(BaseModel):
16
20
  """Parameters taken from user utterance."""
17
21
 
18
22
  email: str = Field(
19
23
  default="NOT_FOUND",
20
- description=(
21
- "The email address to search for. If email is not available, "
22
- "use `find_user_id_by_name_zip` instead. As a last resort transfer to a human agent"
23
- ),
24
+ description="The email address to search for",
24
25
  pattern=r"^(NOT_FOUND|[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})$",
25
26
  examples=["user@example.com"],
26
27
  )
@@ -157,7 +157,7 @@ Today's date is {today}.
157
157
  def create_signature_from_pydantic_model(
158
158
  pydantic_model: Type[BaseModel]
159
159
  ) -> Type[dspy.Signature]:
160
- """
160
+ """
161
161
  Create a DSPy Signature class from a Pydantic model with type annotations.
162
162
 
163
163
  Args:
@@ -166,79 +166,76 @@ Today's date is {today}.
166
166
  Returns:
167
167
  A DSPy Signature class
168
168
  """
169
- signature_components = {
170
- "command": (str, dspy.InputField(desc="User's request"))
171
- }
169
+ signature_components = {
170
+ "statement": (str, dspy.InputField(desc="Statement according to Dhar"))
171
+ }
172
172
 
173
- steps = ["query: The original user query (Always include this)."]
174
- field_num = 1
173
+ steps = []
174
+ field_num = 1
175
175
 
176
- for attribute_name, attribute_metadata in pydantic_model.model_fields.items():
177
- is_optional = False
178
- attribute_type = attribute_metadata.annotation
176
+ for attribute_name, attribute_metadata in pydantic_model.model_fields.items():
177
+ is_optional = False
178
+ attribute_type = attribute_metadata.annotation
179
179
 
180
- if hasattr(attribute_type, "__origin__") and attribute_type.__origin__ is Union:
181
- union_elements = get_args(attribute_type)
182
- if type(None) in union_elements:
183
- is_optional = True
184
- attribute_type = next((elem for elem in union_elements if elem is not type(None)), str)
185
-
186
- NOT_FOUND = fastworkflow.get_env_var("NOT_FOUND")
187
- if attribute_type is str:
188
- default_value = NOT_FOUND
189
- elif attribute_type is int:
190
- default_value = INVALID_INT_VALUE
191
- elif attribute_type is float:
192
- default_value = -sys.float_info.max
193
- else:
194
- default_value = None
180
+ if hasattr(attribute_type, "__origin__") and attribute_type.__origin__ is Union:
181
+ union_elements = get_args(attribute_type)
182
+ if type(None) in union_elements:
183
+ is_optional = True
184
+ attribute_type = next((elem for elem in union_elements if elem is not type(None)), str)
195
185
 
196
- if (
197
- attribute_metadata.default is not PydanticUndefined and
198
- attribute_metadata.default is not None and
199
- attribute_metadata.default != Ellipsis
200
- ):
201
- default_value = attribute_metadata.default
186
+ NOT_FOUND = fastworkflow.get_env_var("NOT_FOUND")
187
+ if attribute_type is str:
188
+ default_value = NOT_FOUND
189
+ elif attribute_type is int:
190
+ default_value = INVALID_INT_VALUE
191
+ elif attribute_type is float:
192
+ default_value = -sys.float_info.max
193
+ else:
194
+ default_value = None
195
+
196
+ if (
197
+ attribute_metadata.default is not PydanticUndefined and
198
+ attribute_metadata.default is not None and
199
+ attribute_metadata.default != Ellipsis
200
+ ):
201
+ default_value = attribute_metadata.default
202
202
 
203
- info_text = attribute_metadata.description or f"The {attribute_name}"
203
+ info_text = attribute_metadata.description or f"The {attribute_name}"
204
204
 
205
- if attribute_name != "query":
206
- steps.append(f"Step {field_num}: Identify the {attribute_name} ({info_text}).")
207
- field_num += 1
205
+ if attribute_name != "query":
206
+ steps.append(f"Step {field_num}: Identify the {attribute_name} ({info_text}).")
207
+ field_num += 1
208
208
 
209
- if isinstance(attribute_type, type) and issubclass(attribute_type, Enum):
210
- possible_values = [f"'{option.value}'" for option in attribute_type]
211
- info_text += f". Valid values: {', '.join(possible_values)}"
209
+ if isinstance(attribute_type, type) and issubclass(attribute_type, Enum):
210
+ possible_values = [f"'{option.value}'" for option in attribute_type]
211
+ info_text += f". Valid values: {', '.join(possible_values)}"
212
212
 
213
- if attribute_metadata.examples:
214
- sample_values = ", ".join([f"'{sample}'" for sample in attribute_metadata.examples])
215
- info_text += f". Examples: {sample_values}"
213
+ if attribute_metadata.examples:
214
+ sample_values = ", ".join([f"'{sample}'" for sample in attribute_metadata.examples])
215
+ info_text += f". Examples: {sample_values}"
216
216
 
217
- requirement_status = "Optional" if is_optional else "Required"
218
- info_text += f". This field is {requirement_status}."
217
+ requirement_status = "Optional" if is_optional else "Required"
218
+ info_text += f". This field is {requirement_status}."
219
219
 
220
- if is_optional:
221
- info_text += f" If not mentioned in the query, use: '{default_value or 'None'}'."
222
- elif default_value is not None:
223
- info_text += f" Default value: '{default_value}'."
220
+ if is_optional:
221
+ info_text += f" If not mentioned in the query, use: '{default_value or 'None'}'."
222
+ elif default_value is not None:
223
+ info_text += f" Default value: '{default_value}'."
224
224
 
225
- field_definition = dspy.OutputField(desc=info_text, default=default_value)
226
- signature_components[attribute_name] = (attribute_metadata.annotation, field_definition)
225
+ field_definition = dspy.OutputField(desc=info_text, default=default_value)
226
+ signature_components[attribute_name] = (attribute_metadata.annotation, field_definition)
227
227
 
228
228
  steps.extend((
229
- f"Step {field_num}: Check for any missing details.",
230
- "Return the default value for the parameters for which default value is specified.",
231
- "For parameters specified as enums, return the default value if the parameter value is not explicitly specified in the query",
232
- "Return None for the parameter value which is missing in the query",
233
- "Always return the query in the output.",
229
+ f"Step {field_num}: ",
230
+ "For missing parameter values - return the default if it is specified otherwise return None",
234
231
  ))
235
- generated_docstring = f"""Extract structured parameters from a user query using step-by-step reasoning. Today's date is {date.today()}.
236
-
237
- {chr(10).join(steps)}
238
- """
239
- instructions = generated_docstring
232
+
233
+ generated_docstring = (
234
+ f"Extract parameter values from the statement according to Dhar. Today's date is {date.today()}.\n"
235
+ f"{chr(10).join(steps)}"
236
+ )
240
237
 
241
- return dspy.Signature(signature_components, instructions)
238
+ return dspy.Signature(signature_components, generated_docstring)
242
239
 
243
240
  def extract_parameters(self, CommandParameters: Type[BaseModel] = None, subject_command_name: str = None, workflow_folderpath: str = None) -> BaseModel:
244
241
  """
@@ -270,7 +267,7 @@ Today's date is {today}.
270
267
  self.predictor = dspy.ChainOfThought(signature)
271
268
 
272
269
  def forward(self, command=None):
273
- return self.predictor(command=command)
270
+ return self.predictor(statement=command)
274
271
 
275
272
  param_extractor = ParamExtractor(params_signature)
276
273
 
@@ -351,15 +348,6 @@ Today's date is {today}.
351
348
  else:
352
349
  candidate_types = [annotation] # type: ignore[list-item]
353
350
 
354
- def try_coerce_enum(enum_cls: Type[Enum], val: Any) -> Tuple[bool, Optional[Enum]]:
355
- if isinstance(val, enum_cls):
356
- return True, val
357
- if isinstance(val, str):
358
- for member in enum_cls:
359
- if val == member.value or val.lower() == str(member.name).lower():
360
- return True, member
361
- return False, None
362
-
363
351
  def build_type_suggestion() -> List[str]:
364
352
  examples = getattr(field_info, "examples", []) or []
365
353
  example = examples[0] if examples else None
@@ -433,6 +421,20 @@ Today's date is {today}.
433
421
  # str
434
422
  if expected_type is str:
435
423
  return True, str(val)
424
+ # bool
425
+ if expected_type is bool:
426
+ if isinstance(val, bool):
427
+ return True, val
428
+ elif isinstance(val, str):
429
+ lower_val = val.lower().strip()
430
+ if lower_val in ('true', 'false'):
431
+ return True, lower_val == 'true'
432
+ # Also handle string representations of integers
433
+ elif lower_val in ('0', '1'):
434
+ return True, lower_val == '1'
435
+ elif isinstance(val, int):
436
+ return True, bool(val)
437
+ return False, None
436
438
  # int
437
439
  if expected_type is int:
438
440
  if isinstance(val, bool):
@@ -453,7 +455,7 @@ Today's date is {today}.
453
455
  return False, None
454
456
  # Enum
455
457
  if isinstance(expected_type, type) and issubclass(expected_type, Enum):
456
- ok, enum_val = try_coerce_enum(expected_type, val)
458
+ ok, enum_val = _try_coerce_enum(expected_type, val)
457
459
  return (ok, enum_val if ok else None)
458
460
  # Unknown: accept if already instance
459
461
  return (True, val) if isinstance(val, expected_type) else (False, None)
@@ -476,6 +478,15 @@ Today's date is {today}.
476
478
  coerced_list.append(coerced)
477
479
  return True, coerced_list
478
480
 
481
+ def _try_coerce_enum(enum_cls: Type[Enum], val: Any) -> Tuple[bool, Optional[Enum]]:
482
+ if isinstance(val, enum_cls):
483
+ return True, val
484
+ if isinstance(val, str):
485
+ for member in enum_cls:
486
+ if val == member.value or val.lower() == str(member.name).lower():
487
+ return True, member
488
+ return False, None
489
+
479
490
  for t in candidate_types:
480
491
  # list[...] and typing.List[...] support
481
492
  if _is_list_type(t):
@@ -484,39 +495,15 @@ Today's date is {today}.
484
495
  corrected_value = coerced_list
485
496
  valid_by_type = True
486
497
  break
487
- # str
488
- if t is str and isinstance(field_value, str):
489
- valid_by_type = True
490
- break
491
- # int
492
- if t is int:
493
- if isinstance(field_value, bool):
494
- pass # bool is subclass of int; treat as invalid here
495
- elif isinstance(field_value, int):
496
- valid_by_type = True
497
- break
498
- elif isinstance(field_value, str):
499
- with suppress(Exception):
500
- coerced = int(field_value.strip())
501
- corrected_value = coerced
502
- valid_by_type = True
503
- break
504
- # float
505
- if t is float:
506
- if isinstance(field_value, (int, float)) and not isinstance(field_value, bool):
507
- if isinstance(field_value, int):
508
- corrected_value = float(field_value)
498
+ # str, bool, int, float - use _coerce_scalar for consistency
499
+ if t in (str, bool, int, float):
500
+ ok, coerced = _coerce_scalar(t, field_value)
501
+ if ok:
502
+ corrected_value = coerced
509
503
  valid_by_type = True
510
- break
511
- elif isinstance(field_value, str):
512
- with suppress(Exception):
513
- coerced = float(field_value.strip())
514
- corrected_value = coerced
515
- valid_by_type = True
516
- break
517
- # Enum
504
+ break # Enum
518
505
  if isinstance(t, type) and issubclass(t, Enum):
519
- ok, enum_val = try_coerce_enum(t, field_value)
506
+ ok, enum_val = _try_coerce_enum(t, field_value)
520
507
  if ok:
521
508
  corrected_value = enum_val
522
509
  valid_by_type = True
@@ -127,10 +127,10 @@ def _execute_workflow_query(command: str, chat_session_obj: fastworkflow.ChatSes
127
127
 
128
128
  # Append executed action to action.json for external consumers (agent mode only)
129
129
  record = {
130
- "command" if command_output.success else "failing command": command,
130
+ "command": command,
131
131
  "command_name": name,
132
132
  "parameters": params_dict,
133
- "response": response_text if command_output.success else ""
133
+ "response": response_text
134
134
  }
135
135
  with open("action.json", "a", encoding="utf-8") as f:
136
136
  f.write(json.dumps(record, ensure_ascii=False) + "\n")
@@ -9,7 +9,7 @@ repository = "https://github.com/radiantlogicinc/fastworkflow"
9
9
 
10
10
  [tool.poetry]
11
11
  name = "fastworkflow"
12
- version = "2.15.10"
12
+ version = "2.15.12"
13
13
  description = "A framework for rapidly building large-scale, deterministic, interactive workflows with a fault-tolerant, conversational UX"
14
14
  authors = ["Dhar Rawal <drawal@radiantlogic.com>"]
15
15
  license = "Apache-2.0"
File without changes
File without changes