fastworkflow 2.15.4__tar.gz → 2.15.5__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.
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/PKG-INFO +1 -1
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/__init__.py +16 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/chat_session.py +5 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/command_executor.py +1 -21
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/run/__main__.py +23 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/workflow_agent.py +53 -2
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/pyproject.toml +1 -1
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/LICENSE +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/README.md +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/.DS_Store +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_commands/.gitkeep +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/abort.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/you_misunderstood.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/go_up.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/reset_context.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_can_i_do.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_is_current_context.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/_commands/wildcard.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/_workflows/command_metadata_extraction/command_context_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/__main__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/ast_class_extractor.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/class_analysis_structures.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/cli_specification.md +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/command_dependency_resolver.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/command_file_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/command_file_template.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/command_import_utils.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/command_stub_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/context_folder_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/context_model_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/dependency_manager.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/dir_scanner.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/documentation_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/genai_postprocessor.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/inheritance_block_regenerator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/libcst_transformers.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/navigator_stub_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/pydantic_model_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/utterance_generator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/cache_matching.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/cli.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/command_context_model.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/command_directory.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/command_interfaces.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/command_metadata_api.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/command_routing.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/docs/context_modules_prd.txt +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/extended_workflow_example/README.md +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/extended_workflow_example/_commands/WorkItem/get_status.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/extended_workflow_example/_commands/generate_report.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/extended_workflow_example/_commands/startup.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/extended_workflow_example/simple_workflow_template.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/extended_workflow_example/workflow_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/fastworkflow.env +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/fastworkflow.passwords.env +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/hello_world/_commands/README.md +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/hello_world/_commands/add_two_numbers.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/hello_world/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/hello_world/application/add_two_numbers.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_1/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_1/_commands/send_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_1/application/send_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_2/_commands/User/send_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_2/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_2/_commands/startup.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_2/application/user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_3/_commands/PremiumUser/send_priority_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_3/_commands/User/send_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_3/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_3/_commands/initialize_user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_3/application/user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/_ChatRoom.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/add_user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/broadcast_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/get_current_user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/list_users.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/set_current_user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/_PremiumUser.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/send_priority_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/User/_User.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/User/send_message.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/_commands/set_root_context.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/application/chatroom.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/application/user.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/context_hierarchy_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/messaging_app_4/startup_action.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/calculate.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/cancel_pending_order.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/exchange_delivered_order_items.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_email.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_name_zip.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/get_order_details.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/get_product_details.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/get_user_details.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/list_all_product_types.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_address.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_items.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_payment.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/modify_user_address.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/return_delivered_order_items.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/_commands/transfer_to_human_agents.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/context_inheritance_model.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/retail_data/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/retail_data/orders.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/retail_data/products.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/retail_data/users.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/calculate.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/cancel_pending_order.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/exchange_delivered_order_items.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_email.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_name_zip.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/get_order_details.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/get_product_details.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/get_user_details.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/list_all_product_types.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_address.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_items.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_payment.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/modify_user_address.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/return_delivered_order_items.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/think.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/tool.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/transfer_to_human_agents.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/workflow_description.txt +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/_WorkItem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/add_child_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/get_status.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/go_to_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/mark_as_complete.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_first_child_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_last_child_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_next_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_previous_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_all_child_workitems.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_child_workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/show_schema.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/_commands/startup.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/application/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/application/workitem.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/simple_workflow_template.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/simple_workflow_template/startup_action.json +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/mcp_server.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/model_pipeline_training.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/refine/__main__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/run/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/run_agent/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/run_agent/__main__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/run_agent/agent_module.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/train/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/train/__main__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/train/generate_synthetic.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/user_message_queues.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/__init__.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/command_dependency_graph.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/context_utils.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/dspy_cache_utils.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/dspy_logger.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/dspy_utils.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/env.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/fuzzy_match.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/generate_param_examples.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/logging.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/parameterize_func_decorator.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/pydantic_model_2_dspy_signature_class.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/python_utils.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/signatures.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/utils/startup_progress.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/workflow.py +0 -0
- {fastworkflow-2.15.4 → fastworkflow-2.15.5}/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.5
|
|
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
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import contextlib
|
|
2
|
+
from dataclasses import dataclass
|
|
2
3
|
from enum import Enum
|
|
3
4
|
import os
|
|
5
|
+
import time
|
|
4
6
|
from typing import Any, Optional, Union
|
|
5
7
|
|
|
6
8
|
from pydantic import BaseModel
|
|
@@ -47,6 +49,20 @@ class MCPToolResult(BaseModel):
|
|
|
47
49
|
content: list[MCPContent]
|
|
48
50
|
isError: bool = False
|
|
49
51
|
|
|
52
|
+
class CommandTraceEventDirection(str, Enum):
|
|
53
|
+
AGENT_TO_WORKFLOW = "agent_to_workflow"
|
|
54
|
+
WORKFLOW_TO_AGENT = "workflow_to_agent"
|
|
55
|
+
|
|
56
|
+
@dataclass
|
|
57
|
+
class CommandTraceEvent:
|
|
58
|
+
direction: CommandTraceEventDirection
|
|
59
|
+
raw_command: str | None # for AGENT_TO_WORKFLOW
|
|
60
|
+
command_name: str | None # for WORKFLOW_TO_AGENT
|
|
61
|
+
parameters: dict | str | None
|
|
62
|
+
response_text: str | None
|
|
63
|
+
success: bool | None
|
|
64
|
+
timestamp_ms: int
|
|
65
|
+
|
|
50
66
|
class CommandOutput(BaseModel):
|
|
51
67
|
command_responses: list[CommandResponse]
|
|
52
68
|
workflow_name: str = ""
|
|
@@ -119,6 +119,7 @@ class ChatSession:
|
|
|
119
119
|
# Create queues for user messages and command outputs
|
|
120
120
|
self._user_message_queue = Queue()
|
|
121
121
|
self._command_output_queue = Queue()
|
|
122
|
+
self._command_trace_queue = Queue()
|
|
122
123
|
self._status = SessionStatus.STOPPED
|
|
123
124
|
self._chat_worker = None
|
|
124
125
|
|
|
@@ -290,6 +291,10 @@ class ChatSession:
|
|
|
290
291
|
def command_output_queue(self) -> Queue:
|
|
291
292
|
return self._command_output_queue
|
|
292
293
|
|
|
294
|
+
@property
|
|
295
|
+
def command_trace_queue(self) -> Queue:
|
|
296
|
+
return self._command_trace_queue
|
|
297
|
+
|
|
293
298
|
@property
|
|
294
299
|
def workflow_is_complete(self) -> bool:
|
|
295
300
|
workflow = ChatSession.get_active_workflow()
|
|
@@ -45,18 +45,7 @@ class CommandExecutor(CommandExecutorInterface):
|
|
|
45
45
|
command = command)
|
|
46
46
|
)
|
|
47
47
|
|
|
48
|
-
import json
|
|
49
|
-
|
|
50
48
|
if command_output.command_handled or not command_output.success:
|
|
51
|
-
# Append executed action to action.json for external consumers
|
|
52
|
-
record = {
|
|
53
|
-
"command" if command_output.success else "failing command": command,
|
|
54
|
-
"command_name": command_output.command_name,
|
|
55
|
-
"parameters": command_output.command_parameters.model_dump() if command_output.command_parameters else None,
|
|
56
|
-
"response": command_output.command_responses[0].response if command_output.success else ''}
|
|
57
|
-
with open("action.json", "a", encoding="utf-8") as f:
|
|
58
|
-
f.write(json.dumps(record, ensure_ascii=False) + "\n")
|
|
59
|
-
|
|
60
49
|
return command_output
|
|
61
50
|
|
|
62
51
|
command_name = command_output.command_responses[0].artifacts["command_name"]
|
|
@@ -93,16 +82,7 @@ class CommandExecutor(CommandExecutorInterface):
|
|
|
93
82
|
command_output.workflow_name = workflow_name
|
|
94
83
|
command_output.context = context
|
|
95
84
|
command_output.command_name = command_name
|
|
96
|
-
command_output.command_parameters =
|
|
97
|
-
|
|
98
|
-
# Append executed action to action.json for external consumers
|
|
99
|
-
record = {
|
|
100
|
-
"command": command,
|
|
101
|
-
"command_name": command_name,
|
|
102
|
-
"parameters": input_obj.model_dump() if input_obj else None,
|
|
103
|
-
"response": command_output.command_responses[0].response}
|
|
104
|
-
with open("action.json", "a", encoding="utf-8") as f:
|
|
105
|
-
f.write(json.dumps(record, ensure_ascii=False) + "\n")
|
|
85
|
+
command_output.command_parameters = input_obj or None
|
|
106
86
|
|
|
107
87
|
return command_output
|
|
108
88
|
|
|
@@ -219,6 +219,29 @@ def run_main(args):
|
|
|
219
219
|
with console.status("[bold cyan]Processing command...[/bold cyan]", spinner="dots") as status:
|
|
220
220
|
counter = 0
|
|
221
221
|
while wait_thread.is_alive():
|
|
222
|
+
# Check for agent traces if in agent mode
|
|
223
|
+
if args.run_as_agent:
|
|
224
|
+
while True:
|
|
225
|
+
try:
|
|
226
|
+
evt = fastworkflow.chat_session.command_trace_queue.get_nowait()
|
|
227
|
+
except queue.Empty:
|
|
228
|
+
break
|
|
229
|
+
|
|
230
|
+
# Choose styles based on success
|
|
231
|
+
info_style = "dim orange3" if (evt.success is False) else "dim yellow"
|
|
232
|
+
resp_style = "dim orange3" if (evt.success is False) else "dim green"
|
|
233
|
+
|
|
234
|
+
if evt.direction == fastworkflow.CommandTraceEventDirection.AGENT_TO_WORKFLOW:
|
|
235
|
+
console.print(Text("Agent -> Workflow: ", style=info_style), end="")
|
|
236
|
+
console.print(Text(str(evt.raw_command or ""), style=info_style))
|
|
237
|
+
else:
|
|
238
|
+
# command info (dim yellow or dim orange3)
|
|
239
|
+
info = f"{evt.command_name or ''}, {evt.parameters}: "
|
|
240
|
+
console.print(Text("Workflow -> Agent: ", style=info_style), end="")
|
|
241
|
+
console.print(Text(info, style=info_style), end="")
|
|
242
|
+
# response (dim green or dim orange3)
|
|
243
|
+
console.print(Text(str(evt.response_text or ""), style=resp_style))
|
|
244
|
+
|
|
222
245
|
time.sleep(0.5)
|
|
223
246
|
counter += 1
|
|
224
247
|
if counter % 2 == 0: # Update message every second
|
|
@@ -3,6 +3,8 @@ Agent integration module for fastWorkflow.
|
|
|
3
3
|
Provides workflow tool agent functionality for intelligent tool selection.
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
|
+
import json
|
|
7
|
+
import time
|
|
6
8
|
import dspy
|
|
7
9
|
|
|
8
10
|
import fastworkflow
|
|
@@ -78,18 +80,67 @@ def _execute_workflow_query(command: str, chat_session_obj: fastworkflow.ChatSes
|
|
|
78
80
|
Commands must be formatted using plain text for command name followed by XML tags enclosing parameter values (if any) as follows: command_name <param1_name>param1_value</param1_name> <param2_name>param2_value</param2_name> ...
|
|
79
81
|
Don't use this tool to respond to a clarification requests in PARAMETER EXTRACTION ERROR state
|
|
80
82
|
"""
|
|
83
|
+
# Emit trace event before execution
|
|
84
|
+
chat_session_obj.command_trace_queue.put(fastworkflow.CommandTraceEvent(
|
|
85
|
+
direction=fastworkflow.CommandTraceEventDirection.AGENT_TO_WORKFLOW,
|
|
86
|
+
raw_command=command,
|
|
87
|
+
command_name=None,
|
|
88
|
+
parameters=None,
|
|
89
|
+
response_text=None,
|
|
90
|
+
success=None,
|
|
91
|
+
timestamp_ms=int(time.time() * 1000),
|
|
92
|
+
))
|
|
93
|
+
|
|
81
94
|
# Directly invoke the command without going through queues
|
|
82
95
|
# This allows the agent to synchronously call workflow tools
|
|
83
96
|
from fastworkflow.command_executor import CommandExecutor
|
|
84
97
|
command_output = CommandExecutor.invoke_command(chat_session_obj, command)
|
|
85
98
|
|
|
99
|
+
# Emit trace event after execution
|
|
100
|
+
# Extract command name and parameters from command_output
|
|
101
|
+
name = command_output.command_name
|
|
102
|
+
params = command_output.command_parameters
|
|
103
|
+
|
|
104
|
+
# Handle parameter serialization
|
|
105
|
+
params_dict = params.model_dump() if params else None
|
|
106
|
+
|
|
107
|
+
# Extract response text
|
|
108
|
+
resp_text = ""
|
|
109
|
+
if command_output.command_responses:
|
|
110
|
+
response_parts = [
|
|
111
|
+
cmd_response.response
|
|
112
|
+
for cmd_response in command_output.command_responses
|
|
113
|
+
if cmd_response.response
|
|
114
|
+
]
|
|
115
|
+
resp_text = "\n".join(response_parts)
|
|
116
|
+
|
|
117
|
+
chat_session_obj.command_trace_queue.put(fastworkflow.CommandTraceEvent(
|
|
118
|
+
direction=fastworkflow.CommandTraceEventDirection.WORKFLOW_TO_AGENT,
|
|
119
|
+
raw_command=None,
|
|
120
|
+
command_name=name,
|
|
121
|
+
parameters=params_dict,
|
|
122
|
+
response_text=resp_text or "",
|
|
123
|
+
success=bool(command_output.success),
|
|
124
|
+
timestamp_ms=int(time.time() * 1000),
|
|
125
|
+
))
|
|
126
|
+
|
|
127
|
+
# Append executed action to action.json for external consumers (agent mode only)
|
|
128
|
+
record = {
|
|
129
|
+
"command" if command_output.success else "failing command": command,
|
|
130
|
+
"command_name": name,
|
|
131
|
+
"parameters": params_dict,
|
|
132
|
+
"response": resp_text if command_output.success else ""
|
|
133
|
+
}
|
|
134
|
+
with open("action.json", "a", encoding="utf-8") as f:
|
|
135
|
+
f.write(json.dumps(record, ensure_ascii=False) + "\n")
|
|
136
|
+
|
|
86
137
|
# Format output - extract text from command response
|
|
87
|
-
if
|
|
138
|
+
if command_output.command_responses:
|
|
88
139
|
response_parts = []
|
|
89
140
|
response_parts.extend(
|
|
90
141
|
cmd_response.response
|
|
91
142
|
for cmd_response in command_output.command_responses
|
|
92
|
-
if
|
|
143
|
+
if cmd_response.response
|
|
93
144
|
)
|
|
94
145
|
return "\n".join(response_parts) if response_parts else "Command executed successfully."
|
|
95
146
|
|
|
@@ -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.5"
|
|
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.4 → fastworkflow-2.15.5}/fastworkflow/build/command_dependency_resolver.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
|
{fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/build/inheritance_block_regenerator.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
|
{fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/fastworkflow.passwords.env
RENAMED
|
File without changes
|
{fastworkflow-2.15.4 → fastworkflow-2.15.5}/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
|
{fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/calculate.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
|
{fastworkflow-2.15.4 → fastworkflow-2.15.5}/fastworkflow/examples/retail_workflow/tools/think.py
RENAMED
|
File without changes
|
{fastworkflow-2.15.4 → fastworkflow-2.15.5}/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
|
|
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.4 → fastworkflow-2.15.5}/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
|