soprano-sdk 0.2.8__tar.gz → 0.2.9__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.
Files changed (105) hide show
  1. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/PKG-INFO +1 -1
  2. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/pyproject.toml +1 -1
  3. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/nodes/collect_input.py +1 -8
  4. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/.github/workflows/test_build_and_publish.yaml +0 -0
  5. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/.gitignore +0 -0
  6. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/.python-version +0 -0
  7. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/CLAUDE.md +0 -0
  8. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/LICENSE +0 -0
  9. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/README.md +0 -0
  10. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/ASYNC_FUNCTIONS_README.md +0 -0
  11. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/concert_booking/__init__.py +0 -0
  12. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/concert_booking/booking_helpers.py +0 -0
  13. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/concert_booking/concert_ticket_booking.yaml +0 -0
  14. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/framework_example.yaml +0 -0
  15. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/greeting_functions.py +0 -0
  16. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/greeting_workflow.yaml +0 -0
  17. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/main.py +0 -0
  18. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/payment_async_functions.py +0 -0
  19. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/payment_async_workflow.yaml +0 -0
  20. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/persistence/README.md +0 -0
  21. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/persistence/conversation_based.py +0 -0
  22. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/persistence/entity_based.py +0 -0
  23. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/persistence/mongodb_demo.py +0 -0
  24. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/return_functions.py +0 -0
  25. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/return_workflow.yaml +0 -0
  26. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/structured_output_example.yaml +0 -0
  27. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/README.md +0 -0
  28. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/crewai_supervisor_ui.py +0 -0
  29. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/langgraph_supervisor_ui.py +0 -0
  30. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/tools/__init__.py +0 -0
  31. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/tools/crewai_tools.py +0 -0
  32. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/tools/langgraph_tools.py +0 -0
  33. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/supervisors/workflow_tools.py +0 -0
  34. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/test_payment_async.py +0 -0
  35. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/tools/__init__.py +0 -0
  36. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/tools/address.py +0 -0
  37. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/examples/validator.py +0 -0
  38. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/langgraph_demo.py +0 -0
  39. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/langgraph_selfloop_demo.py +0 -0
  40. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/langgraph_v.py +0 -0
  41. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/main.py +0 -0
  42. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/return_fsm.excalidraw +0 -0
  43. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/return_state_machine.png +0 -0
  44. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/legacy/ui.py +0 -0
  45. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/scripts/visualize_workflow.py +0 -0
  46. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/scripts/workflow_demo.py +0 -0
  47. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/scripts/workflow_demo_ui.py +0 -0
  48. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/__init__.py +0 -0
  49. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/agents/__init__.py +0 -0
  50. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/agents/adaptor.py +0 -0
  51. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/agents/factory.py +0 -0
  52. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/agents/structured_output.py +0 -0
  53. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/authenticators/__init__.py +0 -0
  54. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/authenticators/mfa.py +0 -0
  55. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/core/__init__.py +0 -0
  56. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/core/constants.py +0 -0
  57. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/core/engine.py +0 -0
  58. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/core/rollback_strategies.py +0 -0
  59. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/core/state.py +0 -0
  60. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/engine.py +0 -0
  61. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/nodes/__init__.py +0 -0
  62. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/nodes/async_function.py +0 -0
  63. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/nodes/base.py +0 -0
  64. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/nodes/call_function.py +0 -0
  65. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/nodes/factory.py +0 -0
  66. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/routing/__init__.py +0 -0
  67. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/routing/router.py +0 -0
  68. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/tools.py +0 -0
  69. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/utils/__init__.py +0 -0
  70. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/utils/function.py +0 -0
  71. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/utils/logger.py +0 -0
  72. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/utils/template.py +0 -0
  73. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/utils/tool.py +0 -0
  74. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/utils/tracing.py +0 -0
  75. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/validation/__init__.py +0 -0
  76. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/validation/schema.py +0 -0
  77. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/soprano_sdk/validation/validator.py +0 -0
  78. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/debug_jinja2.py +0 -0
  79. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_agent_factory.py +0 -0
  80. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_async_function.py +0 -0
  81. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_collect_input_refactor.py +0 -0
  82. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_external_values.py +0 -0
  83. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_inputs_validation.py +0 -0
  84. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_jinja2_path.py +0 -0
  85. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_jinja2_standalone.py +0 -0
  86. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_mfa_scenarios.py +0 -0
  87. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_persistence.py +0 -0
  88. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_structured_output.py +0 -0
  89. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/tests/test_transition_routing.py +0 -0
  90. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/todo.md +0 -0
  91. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/uv.lock +0 -0
  92. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/.eslintrc.cjs +0 -0
  93. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/.gitignore +0 -0
  94. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/README.md +0 -0
  95. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/index.html +0 -0
  96. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/package-lock.json +0 -0
  97. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/package.json +0 -0
  98. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/App.jsx +0 -0
  99. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/CustomNode.jsx +0 -0
  100. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/StepDetailsModal.jsx +0 -0
  101. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/WorkflowGraph.jsx +0 -0
  102. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/WorkflowInfoPanel.jsx +0 -0
  103. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/assets/react.svg +0 -0
  104. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/src/main.jsx +0 -0
  105. {soprano_sdk-0.2.8 → soprano_sdk-0.2.9}/workflow-visualizer/vite.config.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soprano-sdk
3
- Version: 0.2.8
3
+ Version: 0.2.9
4
4
  Summary: YAML-driven workflow engine with AI agent integration for building conversational SOPs
5
5
  Author: Arvind Thangamani
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "soprano-sdk"
7
- version = "0.2.8"
7
+ version = "0.2.9"
8
8
  description = "YAML-driven workflow engine with AI agent integration for building conversational SOPs"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -372,19 +372,12 @@ class CollectInputStrategy(ActionStrategy):
372
372
  if not (prompt := self.agent_config.get('initial_message')):
373
373
  agent_response = agent.invoke([{"role": "user", "content": ""}])
374
374
 
375
- # If using structured output, extract bot_response field
376
375
  if self.is_structured_output:
377
376
  try:
378
377
  response_dict = json.loads(agent_response) if isinstance(agent_response, str) else agent_response
379
378
  prompt = response_dict.get("bot_response", "")
380
- if not prompt:
381
- raise ValueError("Structured output returned empty bot_response for initial message")
382
379
  except (json.JSONDecodeError, TypeError, ValueError) as e:
383
- logger.error(f"Failed to extract bot_response from structured output: {e}")
384
- raise RuntimeError(
385
- f"When using structured output without initial_message, the agent must populate "
386
- f"the bot_response field for the initial prompt. Error: {e}"
387
- )
380
+ prompt = ""
388
381
  else:
389
382
  prompt = agent_response
390
383
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes