dv-pipecat-flows 0.0.22.dev2400__tar.gz → 0.0.22.dev2500__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.
- {dv_pipecat_flows-0.0.22.dev2400/src/dv_pipecat_flows.egg-info → dv_pipecat_flows-0.0.22.dev2500}/PKG-INFO +1 -1
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500/src/dv_pipecat_flows.egg-info}/PKG-INFO +1 -1
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/manager.py +33 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/uv.lock +1185 -109
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.agents/skills/loki-logs/SKILL.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.agents/skills/loki-logs/query-reference.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.claude/skills/loki-logs/SKILL.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.claude/skills/loki-logs/query-reference.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.gitattributes +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.gitignore +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.python-version +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/.readthedocs.yaml +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/AGENTS.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/CHANGELOG.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/CLAUDE.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/CONTRIBUTING.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/LICENSE +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/MANIFEST.in +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/README.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/dev-requirements.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/docker-compose.dev.yml +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/.eslintrc.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/.prettierrc +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/css/tailwind.css +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/examples/food_ordering.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/examples/movie_explorer.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/examples/patient_intake.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/examples/restaurant_reservation.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/examples/travel_planner.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/favicon.png +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/favicon.svg +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/index.html +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/editor/canvas.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/editor/editorState.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/editor/sidePanel.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/editor/toolbar.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/main.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/baseNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/endNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/flowNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/functionNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/index.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/mergeNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/nodes/startNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/types.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/utils/export.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/utils/helpers.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/utils/import.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/js/utils/validation.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/jsdoc.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/package-lock.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/package.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/postcss.config.cjs +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/public/favicon.png +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/public/favicon.svg +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/tailwind.config.cjs +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/vercel.json +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/editor/vite.config.js +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/engine_primitives_plan.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/env.example +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/images/food-ordering-flow.png +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/pipecat-flows.png +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/pipecat_upgrade.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/pyproject.toml +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/remote-asterisk-code/README.md +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/remote-asterisk-code/extensions.conf +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/remote-asterisk-code/rtp.conf +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/requirements.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/scripts/check-pypi-package.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/scripts/fix-ruff.sh +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/scripts/pre-commit.sh +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/setup.cfg +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/dv_pipecat_flows.egg-info/SOURCES.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/dv_pipecat_flows.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/dv_pipecat_flows.egg-info/requires.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/dv_pipecat_flows.egg-info/top_level.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/__init__.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/actions.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/adapters.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/condition_evaluator.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/exceptions.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/flow_validator.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/processors/__init__.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/processors/router_mode_guard.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/processors/speak_interruption_guard.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/processors/user_turn_observer.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/router_mode.py +0 -0
- {dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/types.py +0 -0
{dv_pipecat_flows-0.0.22.dev2400 → dv_pipecat_flows-0.0.22.dev2500}/src/pipecat_flows/manager.py
RENAMED
|
@@ -2586,6 +2586,39 @@ In all of these cases, you can provide a `name` in your new node's config for de
|
|
|
2586
2586
|
await self._short_circuit_to(pure_code_target)
|
|
2587
2587
|
return
|
|
2588
2588
|
|
|
2589
|
+
# ``pure_code_target is None`` for a node that SHOULD be
|
|
2590
|
+
# pure-code-dispatched is an author-config failure: condition
|
|
2591
|
+
# router with no matching rule + no ``router_default_next``
|
|
2592
|
+
# (or default points at a deleted node and the backend's
|
|
2593
|
+
# ``_resolve_node_ref`` returned None), or an action node
|
|
2594
|
+
# with success/failure both pointing at deleted targets.
|
|
2595
|
+
# Falling through to LLM dispatch below makes no sense — these
|
|
2596
|
+
# nodes have ``task_messages: []`` (no LLM context), so the
|
|
2597
|
+
# bot just sits silent until ``user_idle_processor`` fires
|
|
2598
|
+
# the generic "Sorry, could you please repeat that?" prompt.
|
|
2599
|
+
# End the call gracefully with a logged error so the misconfig
|
|
2600
|
+
# is visible instead of silently degrading.
|
|
2601
|
+
auto_transition = node_config.get("auto_transition")
|
|
2602
|
+
if auto_transition == "__condition__" or isinstance(auto_transition, dict):
|
|
2603
|
+
self._current_node = node_id
|
|
2604
|
+
logger.error(
|
|
2605
|
+
f"Pure-code dispatch on '{node_id}' resolved no target "
|
|
2606
|
+
f"(auto_transition={auto_transition!r}). Ending the call "
|
|
2607
|
+
f"gracefully — this is an author-config error: a condition "
|
|
2608
|
+
f"router with no matching rule + no valid router_default_next, "
|
|
2609
|
+
f"OR an action node whose success/failure targets were deleted."
|
|
2610
|
+
)
|
|
2611
|
+
try:
|
|
2612
|
+
await self._action_manager.execute_actions(
|
|
2613
|
+
[{"type": "end_conversation"}]
|
|
2614
|
+
)
|
|
2615
|
+
except Exception as end_exc:
|
|
2616
|
+
logger.warning(
|
|
2617
|
+
f"end_conversation action failed during graceful-end on "
|
|
2618
|
+
f"'{node_id}': {end_exc!r}"
|
|
2619
|
+
)
|
|
2620
|
+
return
|
|
2621
|
+
|
|
2589
2622
|
# Router-mode LLM short-circuit: if this node uses constrained
|
|
2590
2623
|
# JSON output (llm_mode="router"), run the small classification
|
|
2591
2624
|
# call, parse the response, recurse into the chosen branch.
|