fastworkflow 2.17.7__tar.gz → 2.17.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (183) hide show
  1. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/PKG-INFO +1 -1
  2. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/README.md +26 -0
  3. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/__main__.py +2 -1
  4. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/jwt_manager.py +8 -0
  5. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/utils.py +29 -3
  6. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/pyproject.toml +1 -1
  7. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/LICENSE +0 -0
  8. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/README.md +0 -0
  9. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/.DS_Store +0 -0
  10. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/__init__.py +0 -0
  11. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_commands/.gitkeep +0 -0
  12. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/__init__.py +0 -0
  13. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/__init__.py +0 -0
  14. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/abort.py +0 -0
  15. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/ErrorCorrection/you_misunderstood.py +0 -0
  16. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/go_up.py +0 -0
  17. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/reset_context.py +0 -0
  18. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_can_i_do.py +0 -0
  19. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/IntentDetection/what_is_current_context.py +0 -0
  20. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/__init__.py +0 -0
  21. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/_commands/wildcard.py +0 -0
  22. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/command_context_model.json +0 -0
  23. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/intent_detection.py +0 -0
  24. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/_workflows/command_metadata_extraction/parameter_extraction.py +0 -0
  25. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/__main__.py +0 -0
  26. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/ast_class_extractor.py +0 -0
  27. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/class_analysis_structures.py +0 -0
  28. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/cli_specification.md +0 -0
  29. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/command_dependency_resolver.py +0 -0
  30. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/command_file_generator.py +0 -0
  31. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/command_file_template.py +0 -0
  32. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/command_import_utils.py +0 -0
  33. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/command_stub_generator.py +0 -0
  34. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/context_folder_generator.py +0 -0
  35. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/context_model_generator.py +0 -0
  36. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/dependency_manager.py +0 -0
  37. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/dir_scanner.py +0 -0
  38. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/documentation_generator.py +0 -0
  39. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/genai_postprocessor.py +0 -0
  40. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/inheritance_block_regenerator.py +0 -0
  41. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/libcst_transformers.py +0 -0
  42. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/navigator_stub_generator.py +0 -0
  43. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/pydantic_model_generator.py +0 -0
  44. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/build/utterance_generator.py +0 -0
  45. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/cache_matching.py +0 -0
  46. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/chat_session.py +0 -0
  47. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/cli.py +0 -0
  48. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/command_context_model.py +0 -0
  49. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/command_directory.py +0 -0
  50. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/command_executor.py +0 -0
  51. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/command_interfaces.py +0 -0
  52. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/command_metadata_api.py +0 -0
  53. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/command_routing.py +0 -0
  54. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/docs/context_modules_prd.txt +0 -0
  55. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/extended_workflow_example/README.md +0 -0
  56. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/extended_workflow_example/_commands/WorkItem/get_status.py +0 -0
  57. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/extended_workflow_example/_commands/generate_report.py +0 -0
  58. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/extended_workflow_example/_commands/startup.py +0 -0
  59. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/extended_workflow_example/simple_workflow_template.json +0 -0
  60. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/extended_workflow_example/workflow_inheritance_model.json +0 -0
  61. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/fastworkflow.env +0 -0
  62. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/fastworkflow.passwords.env +0 -0
  63. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/hello_world/_commands/README.md +0 -0
  64. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/hello_world/_commands/add_two_numbers.py +0 -0
  65. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/hello_world/_commands/context_inheritance_model.json +0 -0
  66. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/hello_world/application/add_two_numbers.py +0 -0
  67. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_1/_commands/context_inheritance_model.json +0 -0
  68. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_1/_commands/send_message.py +0 -0
  69. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_1/application/send_message.py +0 -0
  70. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_2/_commands/User/send_message.py +0 -0
  71. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_2/_commands/context_inheritance_model.json +0 -0
  72. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_2/_commands/startup.py +0 -0
  73. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_2/application/user.py +0 -0
  74. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_3/_commands/PremiumUser/send_priority_message.py +0 -0
  75. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_3/_commands/User/send_message.py +0 -0
  76. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_3/_commands/context_inheritance_model.json +0 -0
  77. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_3/_commands/initialize_user.py +0 -0
  78. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_3/application/user.py +0 -0
  79. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/_ChatRoom.py +0 -0
  80. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/add_user.py +0 -0
  81. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/broadcast_message.py +0 -0
  82. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/get_current_user.py +0 -0
  83. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/list_users.py +0 -0
  84. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/ChatRoom/set_current_user.py +0 -0
  85. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/_PremiumUser.py +0 -0
  86. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/PremiumUser/send_priority_message.py +0 -0
  87. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/User/_User.py +0 -0
  88. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/User/send_message.py +0 -0
  89. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/context_inheritance_model.json +0 -0
  90. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/_commands/set_root_context.py +0 -0
  91. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/application/chatroom.py +0 -0
  92. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/application/user.py +0 -0
  93. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/context_hierarchy_model.json +0 -0
  94. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/messaging_app_4/startup_action.json +0 -0
  95. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/calculate.py +0 -0
  96. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/cancel_pending_order.py +0 -0
  97. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/exchange_delivered_order_items.py +0 -0
  98. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_email.py +0 -0
  99. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/find_user_id_by_name_zip.py +0 -0
  100. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/get_order_details.py +0 -0
  101. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/get_product_details.py +0 -0
  102. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/get_user_details.py +0 -0
  103. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/list_all_product_types.py +0 -0
  104. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_address.py +0 -0
  105. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_items.py +0 -0
  106. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/modify_pending_order_payment.py +0 -0
  107. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/modify_user_address.py +0 -0
  108. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/return_delivered_order_items.py +0 -0
  109. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/_commands/transfer_to_human_agents.py +0 -0
  110. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/context_inheritance_model.json +0 -0
  111. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/retail_data/__init__.py +0 -0
  112. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/retail_data/orders.json +0 -0
  113. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/retail_data/products.json +0 -0
  114. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/retail_data/users.json +0 -0
  115. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/calculate.py +0 -0
  116. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/cancel_pending_order.py +0 -0
  117. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/exchange_delivered_order_items.py +0 -0
  118. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_email.py +0 -0
  119. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/find_user_id_by_name_zip.py +0 -0
  120. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/get_order_details.py +0 -0
  121. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/get_product_details.py +0 -0
  122. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/get_user_details.py +0 -0
  123. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/list_all_product_types.py +0 -0
  124. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_address.py +0 -0
  125. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_items.py +0 -0
  126. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/modify_pending_order_payment.py +0 -0
  127. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/modify_user_address.py +0 -0
  128. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/return_delivered_order_items.py +0 -0
  129. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/think.py +0 -0
  130. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/tool.py +0 -0
  131. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/tools/transfer_to_human_agents.py +0 -0
  132. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/retail_workflow/workflow_description.txt +0 -0
  133. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/__init__.py +0 -0
  134. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/_WorkItem.py +0 -0
  135. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/add_child_workitem.py +0 -0
  136. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/get_status.py +0 -0
  137. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/go_to_workitem.py +0 -0
  138. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/mark_as_complete.py +0 -0
  139. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_first_child_workitem.py +0 -0
  140. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_last_child_workitem.py +0 -0
  141. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_next_workitem.py +0 -0
  142. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/move_to_previous_workitem.py +0 -0
  143. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_all_child_workitems.py +0 -0
  144. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/remove_child_workitem.py +0 -0
  145. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/WorkItem/show_schema.py +0 -0
  146. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/_commands/startup.py +0 -0
  147. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/application/__init__.py +0 -0
  148. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/application/workitem.py +0 -0
  149. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/simple_workflow_template.json +0 -0
  150. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/examples/simple_workflow_template/startup_action.json +0 -0
  151. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/mcp_server.py +0 -0
  152. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/model_pipeline_training.py +0 -0
  153. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/refine/__main__.py +0 -0
  154. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run/__init__.py +0 -0
  155. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run/__main__.py +0 -0
  156. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/__init__.py +0 -0
  157. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/conversation_store.py +0 -0
  158. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/mcp_specific.py +0 -0
  159. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/run_fastapi_mcp/redoc_2_standalone_html.py +0 -0
  160. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/train/__init__.py +0 -0
  161. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/train/__main__.py +0 -0
  162. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/train/generate_synthetic.py +0 -0
  163. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/user_message_queues.py +0 -0
  164. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/__init__.py +0 -0
  165. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/chat_adapter.py +0 -0
  166. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/command_dependency_graph.py +0 -0
  167. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/context_utils.py +0 -0
  168. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/dspy_cache_utils.py +0 -0
  169. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/dspy_logger.py +0 -0
  170. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/dspy_utils.py +0 -0
  171. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/env.py +0 -0
  172. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/fuzzy_match.py +0 -0
  173. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/generate_param_examples.py +0 -0
  174. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/logging.py +0 -0
  175. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/parameterize_func_decorator.py +0 -0
  176. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/pydantic_model_2_dspy_signature_class.py +0 -0
  177. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/python_utils.py +0 -0
  178. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/react.py +0 -0
  179. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/signatures.py +0 -0
  180. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/utils/startup_progress.py +0 -0
  181. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/workflow.py +0 -0
  182. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/workflow_agent.py +0 -0
  183. {fastworkflow-2.17.7 → fastworkflow-2.17.8}/fastworkflow/workflow_inheritance_model.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastworkflow
3
- Version: 2.17.7
3
+ Version: 2.17.8
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
@@ -82,6 +82,32 @@ uvicorn services.run_fastapi.main:app --workflow_path /path/to/workflow --expect
82
82
  - Tokens without valid signatures are rejected
83
83
  - Recommended for production deployments in untrusted environments
84
84
 
85
+ ### Token Access in Workflow Context
86
+
87
+ JWT tokens are automatically passed to workflows via the `workflow_context` parameter as `http_bearer_token`. This allows workflows to access the bearer token for making authenticated API calls or forwarding authentication.
88
+
89
+ **Important notes:**
90
+ - The token is **only available to authenticated endpoints** (those using `get_session_and_ensure_runtime` dependency)
91
+ - The token is stored in the workflow context dictionary under the key `http_bearer_token`
92
+ - Token is **automatically updated** on every authenticated request, ensuring workflows always have the current valid token
93
+ - Token expiration is **automatically verified** by `verify_token()` in both secure mode (`--expect_encrypted_jwt` flag) and trusted network mode
94
+ - In secure mode: Full cryptographic signature verification + expiration checking
95
+ - In trusted network mode: Expiration checking is performed (signature verification disabled)
96
+ - Tokens should be treated as sensitive data and handled securely in workflows
97
+ - The `/initialize` endpoint is unauthenticated and does NOT provide a token to the workflow context; tokens are only available after calling `/initialize` and using the returned token in subsequent requests
98
+
99
+ **Example usage in workflow:**
100
+
101
+ ```python
102
+ # In workflow code
103
+ workflow_context = self._context # Gets the workflow_context
104
+ bearer_token = workflow_context.get('http_bearer_token')
105
+
106
+ # Use token for API calls
107
+ headers = {"Authorization": f"Bearer {bearer_token}"}
108
+ response = requests.get("https://api.example.com/data", headers=headers)
109
+ ```
110
+
85
111
  ## API Endpoints (REST)
86
112
 
87
113
  ### `POST /initialize`
@@ -126,7 +126,8 @@ async def get_session_and_ensure_runtime(
126
126
  workflow_path=ARGS.workflow_path,
127
127
  context=json.loads(ARGS.context) if ARGS.context else None,
128
128
  startup_command=ARGS.startup_command,
129
- startup_action=fastworkflow.Action(**json.loads(ARGS.startup_action)) if ARGS.startup_action else None
129
+ startup_action=fastworkflow.Action(**json.loads(ARGS.startup_action)) if ARGS.startup_action else None,
130
+ http_bearer_token=session.http_bearer_token
130
131
  )
131
132
 
132
133
  return session
@@ -269,6 +269,14 @@ def verify_token(token: str, expected_type: str = "access") -> dict:
269
269
  logger.warning(f"Token decoding failed: {e}")
270
270
  raise JWTError(f"Failed to decode token: {e}") from e
271
271
 
272
+ # Manually check expiration even in unverified mode
273
+ if exp_timestamp := payload.get("exp"):
274
+ import time
275
+ current_time = int(time.time())
276
+ if exp_timestamp < current_time:
277
+ logger.warning(f"Token expired: exp={exp_timestamp}, now={current_time}")
278
+ raise JWTError("Token has expired")
279
+
272
280
  # Validate token type for consistency (outside try-except to allow JWTError to propagate)
273
281
  if payload.get("type") != expected_type:
274
282
  raise JWTError(f"Invalid token type: expected {expected_type}, got {payload.get('type')}")
@@ -42,6 +42,7 @@ class SessionData(BaseModel):
42
42
  issued_at: int # Unix timestamp
43
43
  expires_at: int # Unix timestamp
44
44
  jti: str # JWT ID (unique token identifier)
45
+ http_bearer_token: Optional[str] = None # The actual JWT token string for workflow context access
45
46
 
46
47
 
47
48
  class InvokeRequest(BaseModel):
@@ -174,13 +175,14 @@ def get_session_from_jwt(
174
175
  try:
175
176
  payload = verify_token(token, expected_type="access")
176
177
 
177
- # Extract session data from payload
178
+ # Extract session data from payload, including the token for workflow context
178
179
  return SessionData(
179
180
  user_id=payload["sub"],
180
181
  token_type=payload["type"],
181
182
  issued_at=payload["iat"],
182
183
  expires_at=payload["exp"],
183
- jti=payload["jti"]
184
+ jti=payload["jti"],
185
+ http_bearer_token=token # Store the actual token for workflow access
184
186
  )
185
187
 
186
188
  except JWTError as e:
@@ -204,7 +206,8 @@ async def ensure_user_runtime_exists(
204
206
  context: Optional[dict] = None,
205
207
  startup_command: Optional[str] = None,
206
208
  startup_action: Optional['fastworkflow.Action'] = None,
207
- stream_format: str = "ndjson"
209
+ stream_format: str = "ndjson",
210
+ http_bearer_token: Optional[str] = None
208
211
  ) -> None:
209
212
  """
210
213
  Ensure a user runtime exists in the session manager. If not, create it.
@@ -220,6 +223,7 @@ async def ensure_user_runtime_exists(
220
223
  startup_command: Optional startup command
221
224
  startup_action: Optional startup action
222
225
  stream_format: Stream format preference ("ndjson" or "sse", default "ndjson")
226
+ http_bearer_token: Optional JWT token to update in workflow context
223
227
 
224
228
  Raises:
225
229
  HTTPException: If session creation fails
@@ -228,8 +232,30 @@ async def ensure_user_runtime_exists(
228
232
  existing_runtime = await session_manager.get_session(user_id)
229
233
  if existing_runtime:
230
234
  logger.debug(f"Session for user_id {user_id} already exists, skipping creation")
235
+
236
+ # Update the workflow's context with the current token if provided
237
+ if http_bearer_token and existing_runtime.chat_session:
238
+ active_workflow = existing_runtime.chat_session.get_active_workflow()
239
+ if active_workflow and active_workflow.context:
240
+ # Update the workflow's context with the current token
241
+ # Note: We mutate the dictionary in-place (no setter call), which means:
242
+ # 1. The change is immediate and visible to workflow code
243
+ # 2. The workflow is NOT marked dirty (won't persist to disk)
244
+ # 3. This is intentional for JWT tokens - we don't want to persist sensitive tokens
245
+ active_workflow.context['http_bearer_token'] = http_bearer_token
246
+ logger.debug(f"Updated http_bearer_token in workflow context for user_id {user_id}")
247
+
231
248
  return
232
249
 
250
+ # Prepare workflow context, ensuring http_bearer_token is available
251
+ if http_bearer_token:
252
+ if context:
253
+ # Add or replace http_bearer_token in the context
254
+ context['http_bearer_token'] = http_bearer_token
255
+ else:
256
+ # Initialize context with http_bearer_token
257
+ context = {'http_bearer_token': http_bearer_token}
258
+
233
259
  logger.info(f"Creating new session for user_id: {user_id}")
234
260
 
235
261
  # Resolve conversation store base folder from SPEEDDICT_FOLDERNAME/user_conversations
@@ -9,7 +9,7 @@ repository = "https://github.com/radiantlogicinc/fastworkflow"
9
9
 
10
10
  [tool.poetry]
11
11
  name = "fastworkflow"
12
- version = "2.17.7"
12
+ version = "2.17.8"
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