fastworkflow 3.2.0__tar.gz → 3.2.1__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-3.2.0 → fastworkflow-3.2.1}/PKG-INFO +1 -1
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/model_pipeline_training.py +63 -22
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/training_report.py +35 -21
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/pyproject.toml +1 -1
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/LICENSE +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/README.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/.DS_Store +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_commands/.gitkeep +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/abort.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/you_misunderstood.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/go_up.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/reset_context.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_can_i_do.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_is_current_context.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/_commands/wildcard.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/command_context_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/intent_detection.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/_workflows/command_metadata_extraction/parameter_extraction.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/active_workflow.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/__main__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/ast_class_extractor.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/class_analysis_structures.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/cli_specification.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/command_dependency_resolver.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/command_file_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/command_file_template.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/command_import_utils.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/command_stub_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/context_folder_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/context_model_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/dependency_manager.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/dir_scanner.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/documentation_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/genai_postprocessor.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/inheritance_block_regenerator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/libcst_transformers.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/navigator_stub_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/pydantic_model_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/build/utterance_generator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/cache_matching.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/chat_session.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/checkpoint_store.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/cli.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/command_context_model.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/command_directory.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/command_executor.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/command_interfaces.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/command_metadata_api.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/command_routing.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/conversation_history_io.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/conversation_labeling.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/distillation.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/README.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/_commands/WorkItem/get_status.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/_commands/generate_report.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/_commands/startup.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/simple_workflow_template.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/workflow_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/fastworkflow.env +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/fastworkflow.passwords.env +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/hello_world/_commands/README.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/hello_world/_commands/add_two_numbers.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/hello_world/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/hello_world/application/add_two_numbers.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_1/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_1/_commands/send_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_1/application/send_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/_commands/User/_User.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/_commands/User/send_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/_commands/startup.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/application/user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/_commands/PremiumUser/_PremiumUser.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/_commands/PremiumUser/send_priority_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/_commands/User/_User.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/_commands/User/send_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/_commands/initialize_user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/application/user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/_ChatRoom.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/add_user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/broadcast_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/get_current_user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/list_users.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/set_current_user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/_PremiumUser.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/send_priority_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/User/_User.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/User/send_message.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/context_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/_commands/set_root_context.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/application/chatroom.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/application/user.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/context_hierarchy_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/startup_action.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/calculate.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/cancel_pending_order.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/exchange_delivered_order_items.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_email.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_name_zip.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/get_order_details.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/get_product_details.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/get_user_details.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/list_all_product_types.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_address.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_items.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_payment.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/modify_user_address.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/return_delivered_order_items.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/_commands/transfer_to_human_agents.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/context_inheritance_model.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/retail_data/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/retail_data/orders.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/retail_data/products.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/retail_data/users.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/calculate.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/cancel_pending_order.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/exchange_delivered_order_items.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_email.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_name_zip.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/get_order_details.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/get_product_details.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/get_user_details.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/list_all_product_types.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_address.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_items.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_payment.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/modify_user_address.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/return_delivered_order_items.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/think.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/tool.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/transfer_to_human_agents.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/workflow_description.txt +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/_WorkItem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/add_child_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/get_status.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/go_to_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/mark_as_complete.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_first_child_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_last_child_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_next_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_previous_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_all_child_workitems.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_child_workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/show_schema.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/_commands/startup.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/application/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/application/workitem.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/simple_workflow_template.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/simple_workflow_template/startup_action.json +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/intent_clarification_agent.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/kvstore.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/mcp_server.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/metrics.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/nlu_labels.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/observability_store.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/refine/__main__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run/__main__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_chatbot/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_chatbot/launcher.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_chatbot/server.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_chatbot/static/index.html +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/README.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/__main__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/checkpoint.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/jwt_manager.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/mcp_specific.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/redoc_2_standalone_html.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/server_memory.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/turns.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/run_fastapi_mcp/utils.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/serialization_hooks.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/session_state_store.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/build-task-benchmarks/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/build-task-benchmarks/reference.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/debug-workflow-conversations/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/debug-workflow-conversations/reference.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/declare-parameter-producers/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/design-context-models/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/design-context-models/reference.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/detect-duplicate-capabilities/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/evaluate-intent-routing/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/integrate-chat-agent/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/integrate-chat-agent/reference.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/resolve-parameter-values/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/supply-training-personas/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/train-and-publish-models/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/train-and-publish-models/reference.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/skills_for_coding_fastworkflows/validate-command-parameters/SKILL.md +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/state_paths.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/state_serialization.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/storage_keys.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/tracing.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/__main__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/artifact_versioning.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/class_balance.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/determinism.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/duplicate_detection.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/generate_synthetic.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/heldout_evaluation.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/metrics_persistence.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/param_example_cache.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/personas.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/selective_training.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/train/utterance_cache.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/turn.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/user_message_queues.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/__init__.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/chat_adapter.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/context_utils.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/dspy_cache_utils.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/dspy_logger.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/dspy_utils.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/env.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/fuzzy_match.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/generate_param_examples.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/insights_loader.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/logging.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/parameterize_func_decorator.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/pydantic_model_2_dspy_signature_class.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/python_utils.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/react.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/signatures.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/utils/startup_progress.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/workflow.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/workflow_agent.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/workflow_execution_context.py +0 -0
- {fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/workflow_inheritance_model.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: fastworkflow
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.1
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
-
from typing import Callable, ClassVar, Optional
|
|
2
|
+
from typing import Callable, ClassVar, Iterable, Optional
|
|
3
3
|
from transformers import AutoTokenizer, AutoModel, AutoModelForSequenceClassification
|
|
4
4
|
from torch.optim import AdamW
|
|
5
5
|
from sklearn.decomposition import PCA
|
|
@@ -55,50 +55,91 @@ class TrainingDataError(ValueError):
|
|
|
55
55
|
"""Raised before model fitting when a label cannot be trained and evaluated."""
|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
def _name_labels(
|
|
59
|
+
labels: Iterable[int],
|
|
60
|
+
decode_label: Optional[Callable[[int], str]] = None,
|
|
61
|
+
) -> str:
|
|
62
|
+
"""Render labels as a plain comma-separated list, sorted for a stable message.
|
|
63
|
+
|
|
64
|
+
Deliberately not a list repr. `decode_label` returns a numpy string, so a repr
|
|
65
|
+
renders as `[np.str_('cmd')]`, and the report prints through a rich console that
|
|
66
|
+
reads a bracketed run with no spaces as console markup and deletes it - which
|
|
67
|
+
silently dropped the one detail these messages exist to carry.
|
|
68
|
+
"""
|
|
69
|
+
names = sorted(
|
|
70
|
+
str(decode_label(label)) if decode_label else str(label) for label in labels
|
|
71
|
+
)
|
|
72
|
+
return ", ".join(names)
|
|
73
|
+
|
|
74
|
+
|
|
58
75
|
def split_training_data(
|
|
59
76
|
dataset: list[tuple[str, int]],
|
|
60
77
|
decode_label: Optional[Callable[[int], str]] = None,
|
|
61
78
|
) -> tuple[list[tuple[str, int]], list[tuple[str, int]]]:
|
|
62
79
|
"""Create a deterministic, class-aware train/evaluation split.
|
|
63
80
|
|
|
64
|
-
Every label
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
Every label that *can* appear on both sides does. A label with fewer rows than
|
|
82
|
+
`heldout_evaluation.MIN_TRAINING_ROWS_PER_LABEL` cannot be stratified, so it trains
|
|
83
|
+
and goes unmeasured rather than failing the run: that is already what the persona
|
|
84
|
+
holdout does when its own split would starve a label, and aborting here instead
|
|
85
|
+
spends the entire LLM and GPU budget only to publish nothing - over a label whose
|
|
86
|
+
evaluation coverage the developer may never have wanted. Being unmeasured is
|
|
87
|
+
reported, not fatal.
|
|
88
|
+
|
|
89
|
+
Splitting still replaces the unstratified 25% split that could randomly put every
|
|
90
|
+
row for a small class in the evaluation set, leaving the classifier unable to learn
|
|
91
|
+
that command.
|
|
67
92
|
|
|
68
93
|
``decode_label`` turns the encoded label back into its command name for the
|
|
69
|
-
error
|
|
70
|
-
commands without reverse-engineering the LabelEncoder, which is the
|
|
71
|
-
this argument exists to prevent.
|
|
94
|
+
warning and error messages. Without it those messages name labels the developer
|
|
95
|
+
cannot map to commands without reverse-engineering the LabelEncoder, which is the
|
|
96
|
+
state this argument exists to prevent.
|
|
72
97
|
"""
|
|
73
98
|
label_counts = Counter(label for _, label in dataset)
|
|
74
|
-
|
|
99
|
+
unmeasurable = {
|
|
75
100
|
label
|
|
76
101
|
for label, count in label_counts.items()
|
|
77
102
|
if count < heldout_evaluation.MIN_TRAINING_ROWS_PER_LABEL
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
103
|
+
}
|
|
104
|
+
# Partition rather than filter, so the unmeasurable rows still reach the model. They
|
|
105
|
+
# are appended in dataset order to keep the split reproducible.
|
|
106
|
+
splittable = [row for row in dataset if row[1] not in unmeasurable]
|
|
107
|
+
unmeasured_rows = [row for row in dataset if row[1] in unmeasurable]
|
|
108
|
+
if unmeasurable:
|
|
109
|
+
logger.warning(
|
|
110
|
+
f"{len(unmeasurable)} intent label(s) have fewer than "
|
|
111
|
+
f"{heldout_evaluation.MIN_TRAINING_ROWS_PER_LABEL} rows, so they train "
|
|
112
|
+
f"without an evaluation row and are unmeasured on the routing axis: "
|
|
113
|
+
f"{_name_labels(unmeasurable, decode_label)}"
|
|
85
114
|
)
|
|
86
115
|
|
|
116
|
+
label_counts = Counter(label for _, label in splittable)
|
|
87
117
|
label_count = len(label_counts)
|
|
88
|
-
|
|
89
|
-
|
|
118
|
+
if not label_count:
|
|
119
|
+
# Nothing can be measured, so there is no evaluation set to tune a threshold
|
|
120
|
+
# against and no score to publish. That is a different failure from one thin
|
|
121
|
+
# label and stays fatal.
|
|
122
|
+
raise TrainingDataError(
|
|
123
|
+
f"No intent label has the "
|
|
124
|
+
f"{heldout_evaluation.MIN_TRAINING_ROWS_PER_LABEL} rows needed to form an "
|
|
125
|
+
f"evaluation set; every label is below the floor: "
|
|
126
|
+
f"{_name_labels(unmeasurable, decode_label)}"
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
test_size = max((len(splittable) + 3) // 4, label_count)
|
|
130
|
+
if len(splittable) - test_size < label_count:
|
|
90
131
|
raise TrainingDataError(
|
|
91
|
-
f"Cannot split {len(
|
|
92
|
-
"at least one row per label in both training and evaluation sets."
|
|
132
|
+
f"Cannot split {len(splittable)} rows across {label_count} labels while "
|
|
133
|
+
"keeping at least one row per label in both training and evaluation sets."
|
|
93
134
|
)
|
|
94
135
|
|
|
95
136
|
train_data, test_data = train_test_split(
|
|
96
|
-
|
|
137
|
+
splittable,
|
|
97
138
|
test_size=test_size,
|
|
98
139
|
random_state=42,
|
|
99
|
-
stratify=[label for _, label in
|
|
140
|
+
stratify=[label for _, label in splittable],
|
|
100
141
|
)
|
|
101
|
-
return list(train_data), list(test_data)
|
|
142
|
+
return list(train_data) + unmeasured_rows, list(test_data)
|
|
102
143
|
|
|
103
144
|
|
|
104
145
|
def save_label_encoder(filepath):
|
|
@@ -39,10 +39,11 @@ available at the end of a training run and can be retained with its artifacts.
|
|
|
39
39
|
|
|
40
40
|
The two floors, and how much to trust them
|
|
41
41
|
------------------------------------------
|
|
42
|
-
See `DEFAULT_MIN_TRAINING_ROWS` and `DEFAULT_MIN_SEED_UTTERANCES`.
|
|
43
|
-
from
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
See `DEFAULT_MIN_TRAINING_ROWS` and `DEFAULT_MIN_SEED_UTTERANCES`. The row floor is
|
|
43
|
+
derived from the minimum needed to both train and evaluate a label; falling below it
|
|
44
|
+
means that label trains without evaluation coverage. The seed floor is an observation
|
|
45
|
+
from a single workflow. Both are advisory because neither makes the trained label
|
|
46
|
+
unusable.
|
|
46
47
|
|
|
47
48
|
`TrainingReport.has_blocking_problems` rejects structurally unusable data before
|
|
48
49
|
publication; fallback and seed-count findings remain advisory.
|
|
@@ -148,14 +149,17 @@ class RowStatus(str, Enum):
|
|
|
148
149
|
#: Generation degraded (R3a fallback). The command trained on its command name
|
|
149
150
|
#: plus hand-written seeds plus whatever arrived before the failure.
|
|
150
151
|
FELL_BACK = "fell_back"
|
|
151
|
-
#: Fewer rows than the floor.
|
|
152
|
+
#: Fewer rows than the train-and-evaluate floor. The rows still train, but the
|
|
153
|
+
#: label has no evaluation coverage and is therefore reported as unmeasured.
|
|
152
154
|
BELOW_FLOOR = "below_floor"
|
|
153
155
|
#: The command has `Signature.Input`, but its generator returned no rows in at
|
|
154
156
|
#: least one context. This is an explicit trainer skip, not missing provenance.
|
|
155
157
|
NO_UTTERANCES = "no_utterances"
|
|
156
|
-
#: The command
|
|
157
|
-
#:
|
|
158
|
-
#: was lost. Distinct from EXCLUDED, which is by design
|
|
158
|
+
#: The command has no provenance record AND no context provenance showing it was
|
|
159
|
+
#: trained: either it was never reached (a training run that died part-way) or
|
|
160
|
+
#: provenance was lost. Distinct from EXCLUDED, which is by design, and from a
|
|
161
|
+
#: command that supplies hand-written utterances without calling the generator -
|
|
162
|
+
#: that one has nothing to record and is judged on its row count.
|
|
159
163
|
MISSING = "missing"
|
|
160
164
|
#: No `Signature.Input`, so `model_pipeline_training._requires_utterances` returns
|
|
161
165
|
#: False and the command is deliberately not an intent-detection label at all. It
|
|
@@ -183,13 +187,12 @@ _STATUS_SEVERITY: dict[RowStatus, int] = {
|
|
|
183
187
|
RowStatus.OK: 7,
|
|
184
188
|
}
|
|
185
189
|
|
|
186
|
-
#: Statuses that make a training dataset structurally unusable. EXCLUDED
|
|
187
|
-
#: THIN_SEEDS are
|
|
188
|
-
#:
|
|
189
|
-
#: reported loudly but does not fail when
|
|
190
|
+
#: Statuses that make a training dataset structurally unusable. EXCLUDED is a design
|
|
191
|
+
#: choice. THIN_SEEDS and BELOW_FLOOR are advisory: the former rests on one workflow's
|
|
192
|
+
#: curve, while the latter means the label trained but could not also contribute an
|
|
193
|
+
#: evaluation row. FELL_BACK is reported loudly but does not fail when rows remain.
|
|
190
194
|
BLOCKING_STATUSES: frozenset[RowStatus] = frozenset(
|
|
191
195
|
{
|
|
192
|
-
RowStatus.BELOW_FLOOR,
|
|
193
196
|
RowStatus.NO_UTTERANCES,
|
|
194
197
|
RowStatus.MISSING,
|
|
195
198
|
}
|
|
@@ -671,6 +674,9 @@ def _classify_status(
|
|
|
671
674
|
put a non-command at the top of a list of broken commands. A reserved label that
|
|
672
675
|
genuinely fell back is still surfaced, because a degraded escalation class
|
|
673
676
|
degrades the workflow like anything else.
|
|
677
|
+
|
|
678
|
+
Absent generation provenance is only a defect when nothing else shows the command
|
|
679
|
+
trained; see the comment on the `has_provenance` branch below.
|
|
674
680
|
"""
|
|
675
681
|
if kind is CommandKind.RESERVED and not fell_back:
|
|
676
682
|
return RowStatus.NOT_APPLICABLE
|
|
@@ -690,7 +696,17 @@ def _classify_status(
|
|
|
690
696
|
if not has_provenance:
|
|
691
697
|
if trains_as_label is False:
|
|
692
698
|
return RowStatus.EXCLUDED
|
|
693
|
-
|
|
699
|
+
if not has_included_context:
|
|
700
|
+
# No generation record AND no sign the trainer ever reached this command:
|
|
701
|
+
# the run died part-way or provenance was lost. That is what MISSING means.
|
|
702
|
+
return RowStatus.MISSING
|
|
703
|
+
# An `UtteranceProvenance` record describes *generation*, and only
|
|
704
|
+
# `generate_diverse_utterances` writes one. A command whose `generate_utterances`
|
|
705
|
+
# returns hand-written rows directly never calls the generator, so it has nothing
|
|
706
|
+
# to record - exactly the reasoning `NOT_APPLICABLE` already applies to reserved
|
|
707
|
+
# labels. The trainer's own context provenance proves this command trained, and
|
|
708
|
+
# carries the row counts, so judge it on the floor like anything else instead of
|
|
709
|
+
# blocking publication over a record that was never owed.
|
|
694
710
|
if rows_by_context and any(
|
|
695
711
|
context_rows < min_rows for context_rows in rows_by_context.values()
|
|
696
712
|
):
|
|
@@ -1063,11 +1079,11 @@ def format_report(report: TrainingReport) -> str:
|
|
|
1063
1079
|
f" BELOW ROW FLOOR ({len(below_floor)}) — fewer than {report.min_rows} rows."
|
|
1064
1080
|
)
|
|
1065
1081
|
lines.append(
|
|
1066
|
-
"
|
|
1067
|
-
"evaluation."
|
|
1082
|
+
" These labels trained, but the class-aware split could not also reserve "
|
|
1083
|
+
"an evaluation row."
|
|
1068
1084
|
)
|
|
1069
1085
|
lines.append(
|
|
1070
|
-
"
|
|
1086
|
+
" They are unmeasured on the routing axis; this does not block publication."
|
|
1071
1087
|
)
|
|
1072
1088
|
lines.extend(_detail_lines(below_floor, width))
|
|
1073
1089
|
|
|
@@ -1212,7 +1228,7 @@ def format_report(report: TrainingReport) -> str:
|
|
|
1212
1228
|
|
|
1213
1229
|
lines.append("")
|
|
1214
1230
|
lines.append(
|
|
1215
|
-
f" Floors: rows >= {report.min_rows} (
|
|
1231
|
+
f" Floors: rows >= {report.min_rows} (evaluation coverage — one train and one "
|
|
1216
1232
|
f"evaluation row per label),"
|
|
1217
1233
|
)
|
|
1218
1234
|
lines.append(
|
|
@@ -1220,9 +1236,7 @@ def format_report(report: TrainingReport) -> str:
|
|
|
1220
1236
|
f"one workflow's"
|
|
1221
1237
|
)
|
|
1222
1238
|
lines.append(" observation). These are trainer policy, not workflow configuration.")
|
|
1223
|
-
lines.append(
|
|
1224
|
-
" Structural failures stop publication; advisory findings do not."
|
|
1225
|
-
)
|
|
1239
|
+
lines.append(" Missing or empty training data stops publication; advisory findings do not.")
|
|
1226
1240
|
lines.append(rule)
|
|
1227
1241
|
return "\n".join(lines)
|
|
1228
1242
|
|
|
@@ -9,7 +9,7 @@ repository = "https://github.com/radiantlogicinc/fastworkflow"
|
|
|
9
9
|
|
|
10
10
|
[tool.poetry]
|
|
11
11
|
name = "fastworkflow"
|
|
12
|
-
version = "3.2.
|
|
12
|
+
version = "3.2.1"
|
|
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
|
|
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-3.2.0 → fastworkflow-3.2.1}/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
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/extended_workflow_example/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
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/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
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/_commands/startup.py
RENAMED
|
File without changes
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_2/application/user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_3/application/user.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-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/application/user.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/messaging_app_4/startup_action.json
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
|
{fastworkflow-3.2.0 → fastworkflow-3.2.1}/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-3.2.0 → fastworkflow-3.2.1}/fastworkflow/examples/retail_workflow/tools/think.py
RENAMED
|
File without changes
|