dv-pipecat-flows 0.0.0.dev2057__tar.gz → 0.0.0.dev2071__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 (89) hide show
  1. {dv_pipecat_flows-0.0.0.dev2057/src/dv_pipecat_flows.egg-info → dv_pipecat_flows-0.0.0.dev2071}/PKG-INFO +1 -1
  2. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071/src/dv_pipecat_flows.egg-info}/PKG-INFO +1 -1
  3. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/manager.py +12 -4
  4. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/types.py +6 -0
  5. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.agents/skills/loki-logs/SKILL.md +0 -0
  6. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.agents/skills/loki-logs/query-reference.md +0 -0
  7. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.claude/skills/loki-logs/SKILL.md +0 -0
  8. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.claude/skills/loki-logs/query-reference.md +0 -0
  9. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.gitattributes +0 -0
  10. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.gitignore +0 -0
  11. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.pre-commit-config.yaml +0 -0
  12. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.python-version +0 -0
  13. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/.readthedocs.yaml +0 -0
  14. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/AGENTS.md +0 -0
  15. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/CHANGELOG.md +0 -0
  16. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/CLAUDE.md +0 -0
  17. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/CONTRIBUTING.md +0 -0
  18. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/LICENSE +0 -0
  19. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/MANIFEST.in +0 -0
  20. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/README.md +0 -0
  21. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/dev-requirements.txt +0 -0
  22. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/docker-compose.dev.yml +0 -0
  23. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/.eslintrc.json +0 -0
  24. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/.prettierrc +0 -0
  25. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/css/tailwind.css +0 -0
  26. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/examples/food_ordering.json +0 -0
  27. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/examples/movie_explorer.json +0 -0
  28. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/examples/patient_intake.json +0 -0
  29. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/examples/restaurant_reservation.json +0 -0
  30. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/examples/travel_planner.json +0 -0
  31. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/favicon.png +0 -0
  32. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/favicon.svg +0 -0
  33. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/index.html +0 -0
  34. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/editor/canvas.js +0 -0
  35. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/editor/editorState.js +0 -0
  36. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/editor/sidePanel.js +0 -0
  37. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/editor/toolbar.js +0 -0
  38. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/main.js +0 -0
  39. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/baseNode.js +0 -0
  40. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/endNode.js +0 -0
  41. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/flowNode.js +0 -0
  42. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/functionNode.js +0 -0
  43. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/index.js +0 -0
  44. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/mergeNode.js +0 -0
  45. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/nodes/startNode.js +0 -0
  46. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/types.js +0 -0
  47. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/utils/export.js +0 -0
  48. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/utils/helpers.js +0 -0
  49. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/utils/import.js +0 -0
  50. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/js/utils/validation.js +0 -0
  51. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/jsdoc.json +0 -0
  52. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/package-lock.json +0 -0
  53. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/package.json +0 -0
  54. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/postcss.config.cjs +0 -0
  55. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/public/favicon.png +0 -0
  56. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/public/favicon.svg +0 -0
  57. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/tailwind.config.cjs +0 -0
  58. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/vercel.json +0 -0
  59. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/editor/vite.config.js +0 -0
  60. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/engine_primitives_plan.md +0 -0
  61. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/env.example +0 -0
  62. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/images/food-ordering-flow.png +0 -0
  63. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/pipecat-flows.png +0 -0
  64. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/pipecat_upgrade.md +0 -0
  65. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/pyproject.toml +0 -0
  66. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/remote-asterisk-code/README.md +0 -0
  67. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/remote-asterisk-code/extensions.conf +0 -0
  68. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/remote-asterisk-code/rtp.conf +0 -0
  69. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/requirements.txt +0 -0
  70. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/scripts/check-pypi-package.py +0 -0
  71. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/scripts/fix-ruff.sh +0 -0
  72. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/scripts/pre-commit.sh +0 -0
  73. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/setup.cfg +0 -0
  74. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/dv_pipecat_flows.egg-info/SOURCES.txt +0 -0
  75. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/dv_pipecat_flows.egg-info/dependency_links.txt +0 -0
  76. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/dv_pipecat_flows.egg-info/requires.txt +0 -0
  77. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/dv_pipecat_flows.egg-info/top_level.txt +0 -0
  78. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/__init__.py +0 -0
  79. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/actions.py +0 -0
  80. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/adapters.py +0 -0
  81. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/condition_evaluator.py +0 -0
  82. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/exceptions.py +0 -0
  83. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/flow_validator.py +0 -0
  84. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/processors/__init__.py +0 -0
  85. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/processors/router_mode_guard.py +0 -0
  86. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/processors/speak_interruption_guard.py +0 -0
  87. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/processors/user_turn_observer.py +0 -0
  88. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/src/pipecat_flows/router_mode.py +0 -0
  89. {dv_pipecat_flows-0.0.0.dev2057 → dv_pipecat_flows-0.0.0.dev2071}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-flows
3
- Version: 0.0.0.dev2057
3
+ Version: 0.0.0.dev2071
4
4
  Summary: Conversation Flow management for Pipecat AI applications
5
5
  License: BSD 2-Clause License
6
6
  Project-URL: Source, https://github.com/pipecat-ai/pipecat-flows
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-flows
3
- Version: 0.0.0.dev2057
3
+ Version: 0.0.0.dev2071
4
4
  Summary: Conversation Flow management for Pipecat AI applications
5
5
  License: BSD 2-Clause License
6
6
  Project-URL: Source, https://github.com/pipecat-ai/pipecat-flows
@@ -981,6 +981,7 @@ class FlowManager:
981
981
  transition_callback: Optional[Callable] = None,
982
982
  state_update_keys: Optional[List[str]] = None,
983
983
  router_node_meta: Optional[Dict[str, Any]] = None,
984
+ cancel_on_interruption: Optional[bool] = None,
984
985
  ) -> None:
985
986
  """Register a function with the LLM if not already registered.
986
987
 
@@ -991,6 +992,9 @@ class FlowManager:
991
992
  transition_to: Optional node to transition to (static flows)
992
993
  transition_callback: Optional transition callback (dynamic flows)
993
994
  new_functions: Set to track newly registered functions for this node
995
+ cancel_on_interruption: Optional per-function override. None (default)
996
+ keeps the flow-managed default of False; True makes the function
997
+ abortable by user speech (only safe for terminal functions).
994
998
 
995
999
  Raises:
996
1000
  FlowError: If function registration fails
@@ -1013,13 +1017,16 @@ class FlowManager:
1013
1017
  )
1014
1018
 
1015
1019
  # Register function with LLM (or LLMSwitcher).
1016
- # Flow-managed functions must not be cancelled on interruption:
1017
- # transition functions need to complete so _pending_transition is
1018
- # set and the on_context_updated callback fires.
1020
+ # Flow-managed functions must not be cancelled on interruption by
1021
+ # default: transition functions need to complete so
1022
+ # _pending_transition is set and the on_context_updated callback
1023
+ # fires. A schema may opt a terminal function (e.g. end_call) into
1024
+ # interruptibility via cancel_on_interruption; None preserves the
1025
+ # safe default of False.
1019
1026
  self._llm.register_function(
1020
1027
  name,
1021
1028
  transition_func,
1022
- cancel_on_interruption=False,
1029
+ cancel_on_interruption=bool(cancel_on_interruption),
1023
1030
  )
1024
1031
 
1025
1032
  new_functions.add(name)
@@ -2708,6 +2715,7 @@ In all of these cases, you can provide a `name` in your new node's config for de
2708
2715
  transition_callback=schema.transition_callback,
2709
2716
  state_update_keys=schema.state_update_keys,
2710
2717
  router_node_meta=schema.router_node_meta,
2718
+ cancel_on_interruption=schema.cancel_on_interruption,
2711
2719
  )
2712
2720
 
2713
2721
  async def register_direct_function(func):
@@ -289,6 +289,12 @@ class FlowsFunctionSchema:
289
289
  # None means this function is a direct agent→non-router transition;
290
290
  # no synthetic events fire.
291
291
  router_node_meta: Optional[Dict[str, Any]] = None
292
+ # When True, this function call is cancelled if the user speaks (interrupts)
293
+ # while it is in flight. None (default) is treated by the flow manager as
294
+ # False — flow-managed functions must complete so their transitions fire.
295
+ # Set True only for terminal functions (e.g. end_call) that should be
296
+ # abortable by user speech.
297
+ cancel_on_interruption: Optional[bool] = None
292
298
 
293
299
  def __post_init__(self):
294
300
  """Validate the schema configuration.