dv-pipecat-flows 0.0.22.dev1700__tar.gz → 0.0.22.dev1900__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.22.dev1700/src/dv_pipecat_flows.egg-info → dv_pipecat_flows-0.0.22.dev1900}/PKG-INFO +1 -1
  2. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900/src/dv_pipecat_flows.egg-info}/PKG-INFO +1 -1
  3. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/manager.py +10 -4
  4. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/router_mode.py +11 -5
  5. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/uv.lock +1185 -109
  6. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.agents/skills/loki-logs/SKILL.md +0 -0
  7. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.agents/skills/loki-logs/query-reference.md +0 -0
  8. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.claude/skills/loki-logs/SKILL.md +0 -0
  9. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.claude/skills/loki-logs/query-reference.md +0 -0
  10. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.gitattributes +0 -0
  11. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.gitignore +0 -0
  12. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.pre-commit-config.yaml +0 -0
  13. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.python-version +0 -0
  14. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/.readthedocs.yaml +0 -0
  15. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/AGENTS.md +0 -0
  16. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/CHANGELOG.md +0 -0
  17. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/CLAUDE.md +0 -0
  18. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/CONTRIBUTING.md +0 -0
  19. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/LICENSE +0 -0
  20. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/MANIFEST.in +0 -0
  21. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/README.md +0 -0
  22. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/dev-requirements.txt +0 -0
  23. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/docker-compose.dev.yml +0 -0
  24. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/.eslintrc.json +0 -0
  25. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/.prettierrc +0 -0
  26. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/css/tailwind.css +0 -0
  27. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/examples/food_ordering.json +0 -0
  28. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/examples/movie_explorer.json +0 -0
  29. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/examples/patient_intake.json +0 -0
  30. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/examples/restaurant_reservation.json +0 -0
  31. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/examples/travel_planner.json +0 -0
  32. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/favicon.png +0 -0
  33. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/favicon.svg +0 -0
  34. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/index.html +0 -0
  35. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/editor/canvas.js +0 -0
  36. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/editor/editorState.js +0 -0
  37. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/editor/sidePanel.js +0 -0
  38. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/editor/toolbar.js +0 -0
  39. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/main.js +0 -0
  40. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/baseNode.js +0 -0
  41. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/endNode.js +0 -0
  42. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/flowNode.js +0 -0
  43. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/functionNode.js +0 -0
  44. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/index.js +0 -0
  45. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/mergeNode.js +0 -0
  46. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/nodes/startNode.js +0 -0
  47. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/types.js +0 -0
  48. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/utils/export.js +0 -0
  49. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/utils/helpers.js +0 -0
  50. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/utils/import.js +0 -0
  51. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/js/utils/validation.js +0 -0
  52. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/jsdoc.json +0 -0
  53. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/package-lock.json +0 -0
  54. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/package.json +0 -0
  55. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/postcss.config.cjs +0 -0
  56. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/public/favicon.png +0 -0
  57. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/public/favicon.svg +0 -0
  58. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/tailwind.config.cjs +0 -0
  59. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/vercel.json +0 -0
  60. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/editor/vite.config.js +0 -0
  61. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/engine_primitives_plan.md +0 -0
  62. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/env.example +0 -0
  63. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/images/food-ordering-flow.png +0 -0
  64. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/pipecat-flows.png +0 -0
  65. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/pipecat_upgrade.md +0 -0
  66. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/pyproject.toml +0 -0
  67. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/remote-asterisk-code/README.md +0 -0
  68. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/remote-asterisk-code/extensions.conf +0 -0
  69. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/remote-asterisk-code/rtp.conf +0 -0
  70. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/requirements.txt +0 -0
  71. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/scripts/check-pypi-package.py +0 -0
  72. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/scripts/fix-ruff.sh +0 -0
  73. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/scripts/pre-commit.sh +0 -0
  74. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/setup.cfg +0 -0
  75. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/dv_pipecat_flows.egg-info/SOURCES.txt +0 -0
  76. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/dv_pipecat_flows.egg-info/dependency_links.txt +0 -0
  77. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/dv_pipecat_flows.egg-info/requires.txt +0 -0
  78. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/dv_pipecat_flows.egg-info/top_level.txt +0 -0
  79. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/__init__.py +0 -0
  80. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/actions.py +0 -0
  81. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/adapters.py +0 -0
  82. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/condition_evaluator.py +0 -0
  83. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/exceptions.py +0 -0
  84. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/flow_validator.py +0 -0
  85. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/processors/__init__.py +0 -0
  86. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/processors/router_mode_guard.py +0 -0
  87. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/processors/speak_interruption_guard.py +0 -0
  88. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/processors/user_turn_observer.py +0 -0
  89. {dv_pipecat_flows-0.0.22.dev1700 → dv_pipecat_flows-0.0.22.dev1900}/src/pipecat_flows/types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-flows
3
- Version: 0.0.22.dev1700
3
+ Version: 0.0.22.dev1900
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.22.dev1700
3
+ Version: 0.0.22.dev1900
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
@@ -1023,7 +1023,13 @@ In all of these cases, you can provide a `name` in your new node's config for de
1023
1023
 
1024
1024
  # Case 3: condition-router sentinel.
1025
1025
  if auto_transition == "__condition__":
1026
- conditions = node_config.get("conditions") or []
1026
+ # Field name matches what the backend lowerer emits
1027
+ # (agent/commons/flow_lowering.py: `router_conditions`) and what
1028
+ # the bot's Pydantic Node round-trips. Reading the unprefixed
1029
+ # `conditions` returned None on every condition-router → all
1030
+ # rules silently skipped → fell through to `router_default_next`
1031
+ # regardless of which branch matched.
1032
+ conditions = node_config.get("router_conditions") or []
1027
1033
  default_next = node_config.get("router_default_next")
1028
1034
  tool_outputs = self.state.get("tool_outputs") or {}
1029
1035
  return evaluate_conditions(
@@ -2380,15 +2386,15 @@ In all of these cases, you can provide a `name` in your new node's config for de
2380
2386
  except (RouterParseError, RouterProviderError) as exc:
2381
2387
  logger.error(
2382
2388
  f"Router-mode LLM failed for node {node_id}: {exc!r}; "
2383
- f"routing to router_exhausted_node"
2389
+ f"routing to router_exhausted_next"
2384
2390
  )
2385
- router_target = node_config.get("router_exhausted_node")
2391
+ router_target = node_config.get("router_exhausted_next")
2386
2392
  if router_target:
2387
2393
  await self._short_circuit_to(router_target)
2388
2394
  else:
2389
2395
  logger.error(
2390
2396
  f"Router-mode node {node_id} returned no target and no "
2391
- f"exhausted_node configured; staying on current node"
2397
+ f"router_exhausted_next configured; staying on current node"
2392
2398
  )
2393
2399
  return
2394
2400
 
@@ -259,15 +259,21 @@ def pick_branch_target(
259
259
  if branch_id == UNCLEAR_BRANCH_ID:
260
260
  attempts = attempt_state.get(node_id, 0) + 1
261
261
  attempt_state[node_id] = attempts
262
- max_unclear = int(node_config.get("router_max_unclear", 2))
263
- if attempts > max_unclear:
262
+ # NB: field names match what the backend lowerer emits (see
263
+ # agent/commons/flow_lowering.py `router_unclear_next`,
264
+ # `router_exhausted_next`, `router_max_attempts`) and what the bot's
265
+ # Pydantic Node round-trips. The TypedDict in types.py still lists
266
+ # the legacy `_node` / `_max_unclear` names for historical reasons,
267
+ # but those keys never reach this dict at runtime.
268
+ max_attempts = int(node_config.get("router_max_attempts", 2))
269
+ if attempts > max_attempts:
264
270
  attempt_state[node_id] = 0 # reset for next time we enter this node
265
- return node_config.get("router_exhausted_node")
271
+ return node_config.get("router_exhausted_next")
266
272
  # Under cap: prefer the new inline re-prompt if configured, else fall
267
- # back to the legacy separate-Speak unclear_next.
273
+ # back to the legacy separate-Speak unclear target.
268
274
  if node_config.get("router_reprompt_message"):
269
275
  return REPROMPT_IN_PLACE
270
- return node_config.get("router_unclear_node")
276
+ return node_config.get("router_unclear_next")
271
277
 
272
278
  return None # caller treats unknown id as a parse failure
273
279