fastworkflow 2.15.10__tar.gz → 2.15.11__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.
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/PKG-INFO +1 -1
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/intent_detection.py +2 -2
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_email.py +6 -5
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/signatures.py +88 -101
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/pyproject.toml +1 -1
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/LICENSE +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/README.md +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/.DS_Store +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_commands/.gitkeep +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/abort.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/you_misunderstood.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/go_up.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/reset_context.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_can_i_do.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_is_current_context.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/_commands/wildcard.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/command_context_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/_workflows/command_metadata_extraction/parameter_extraction.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/__main__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/ast_class_extractor.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/class_analysis_structures.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/cli_specification.md +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/command_dependency_resolver.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/command_file_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/command_file_template.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/command_import_utils.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/command_stub_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/context_folder_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/context_model_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/dependency_manager.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/dir_scanner.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/documentation_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/genai_postprocessor.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/inheritance_block_regenerator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/libcst_transformers.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/navigator_stub_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/pydantic_model_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/utterance_generator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/cache_matching.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/chat_session.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/cli.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/command_context_model.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/command_directory.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/command_executor.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/command_interfaces.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/command_metadata_api.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/command_routing.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/docs/context_modules_prd.txt +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/extended_workflow_example/README.md +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/extended_workflow_example/_commands/WorkItem/get_status.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/extended_workflow_example/_commands/generate_report.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/extended_workflow_example/_commands/startup.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/extended_workflow_example/simple_workflow_template.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/extended_workflow_example/workflow_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/fastworkflow.env +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/fastworkflow.passwords.env +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/hello_world/_commands/README.md +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/hello_world/_commands/add_two_numbers.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/hello_world/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/hello_world/application/add_two_numbers.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_1/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_1/_commands/send_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_1/application/send_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_2/_commands/User/send_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_2/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_2/_commands/startup.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_2/application/user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_3/_commands/PremiumUser/send_priority_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_3/_commands/User/send_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_3/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_3/_commands/initialize_user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_3/application/user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/_ChatRoom.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/add_user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/broadcast_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/get_current_user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/list_users.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/set_current_user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/_PremiumUser.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/send_priority_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/User/_User.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/User/send_message.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/_commands/set_root_context.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/application/chatroom.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/application/user.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/context_hierarchy_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/messaging_app_4/startup_action.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/calculate.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/cancel_pending_order.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/exchange_delivered_order_items.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_name_zip.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/get_order_details.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/get_product_details.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/get_user_details.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/list_all_product_types.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_address.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_items.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_payment.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/modify_user_address.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/return_delivered_order_items.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/_commands/transfer_to_human_agents.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/retail_data/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/retail_data/orders.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/retail_data/products.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/retail_data/users.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/calculate.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/cancel_pending_order.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/exchange_delivered_order_items.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_email.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_name_zip.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/get_order_details.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/get_product_details.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/get_user_details.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/list_all_product_types.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_address.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_items.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_payment.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/modify_user_address.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/return_delivered_order_items.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/think.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/tool.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/transfer_to_human_agents.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/workflow_description.txt +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/_WorkItem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/add_child_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/get_status.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/go_to_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/mark_as_complete.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_first_child_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_last_child_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_next_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_previous_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_all_child_workitems.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_child_workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/show_schema.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/_commands/startup.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/application/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/application/workitem.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/simple_workflow_template.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/simple_workflow_template/startup_action.json +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/mcp_server.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/model_pipeline_training.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/refine/__main__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/run/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/run/__main__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/run_agent/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/run_agent/__main__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/run_agent/agent_module.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/train/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/train/__main__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/train/generate_synthetic.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/user_message_queues.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/__init__.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/command_dependency_graph.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/context_utils.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/dspy_cache_utils.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/dspy_logger.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/dspy_utils.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/env.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/fuzzy_match.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/generate_param_examples.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/logging.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/parameterize_func_decorator.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/pydantic_model_2_dspy_signature_class.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/python_utils.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/react.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/startup_progress.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/workflow.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/workflow_agent.py +0 -0
- {fastworkflow-2.15.10 → fastworkflow-2.15.11}/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.
|
|
3
|
+
Version: 2.15.11
|
|
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:
|
|
@@ -11,16 +11,17 @@ from ..tools.find_user_id_by_email import FindUserIdByEmail
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class Signature:
|
|
14
|
-
"""
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
signature_components = {
|
|
170
|
+
"statement": (str, dspy.InputField(desc="Statement according to Dhar"))
|
|
171
|
+
}
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
steps = []
|
|
174
|
+
field_num = 1
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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
|
-
|
|
203
|
+
info_text = attribute_metadata.description or f"The {attribute_name}"
|
|
204
204
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
|
|
218
|
-
|
|
217
|
+
requirement_status = "Optional" if is_optional else "Required"
|
|
218
|
+
info_text += f". This field is {requirement_status}."
|
|
219
219
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
226
|
-
|
|
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}:
|
|
230
|
-
"
|
|
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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
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
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
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 =
|
|
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
|
|
@@ -9,7 +9,7 @@ repository = "https://github.com/radiantlogicinc/fastworkflow"
|
|
|
9
9
|
|
|
10
10
|
[tool.poetry]
|
|
11
11
|
name = "fastworkflow"
|
|
12
|
-
version = "2.15.
|
|
12
|
+
version = "2.15.11"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/class_analysis_structures.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/command_dependency_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/context_folder_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/inheritance_block_regenerator.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/navigator_stub_generator.py
RENAMED
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/build/pydantic_model_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/fastworkflow.passwords.env
RENAMED
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/hello_world/_commands/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/think.py
RENAMED
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/examples/retail_workflow/tools/tool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/command_dependency_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-2.15.10 → fastworkflow-2.15.11}/fastworkflow/utils/parameterize_func_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|