dv-pipecat-flows 0.0.22.dev918__tar.gz → 0.0.22.dev1116__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.dev918/src/dv_pipecat_flows.egg-info → dv_pipecat_flows-0.0.22.dev1116}/PKG-INFO +1 -1
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116/src/dv_pipecat_flows.egg-info}/PKG-INFO +1 -1
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/adapters.py +6 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/manager.py +21 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/uv.lock +277 -1149
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.claude/skills/loki-logs/SKILL.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.claude/skills/loki-logs/query-reference.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.gitattributes +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.gitignore +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.python-version +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/.readthedocs.yaml +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/AGENTS.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/CHANGELOG.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/CLAUDE.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/CONTRIBUTING.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/LICENSE +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/MANIFEST.in +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/README.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/dev-requirements.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/docker-compose.dev.yml +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/.eslintrc.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/.prettierrc +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/css/tailwind.css +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/examples/food_ordering.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/examples/movie_explorer.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/examples/patient_intake.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/examples/restaurant_reservation.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/examples/travel_planner.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/favicon.png +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/favicon.svg +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/index.html +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/editor/canvas.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/editor/editorState.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/editor/sidePanel.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/editor/toolbar.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/main.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/baseNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/endNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/flowNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/functionNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/index.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/mergeNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/nodes/startNode.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/types.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/utils/export.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/utils/helpers.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/utils/import.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/js/utils/validation.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/jsdoc.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/package-lock.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/package.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/postcss.config.cjs +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/public/favicon.png +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/public/favicon.svg +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/tailwind.config.cjs +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/vercel.json +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/editor/vite.config.js +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/env.example +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/images/food-ordering-flow.png +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/pipecat-flows.png +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/pipecat_upgrade.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/pyproject.toml +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/remote-asterisk-code/README.md +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/remote-asterisk-code/extensions.conf +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/remote-asterisk-code/rtp.conf +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/requirements.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/scripts/check-pypi-package.py +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/scripts/fix-ruff.sh +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/scripts/pre-commit.sh +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/setup.cfg +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/dv_pipecat_flows.egg-info/SOURCES.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/dv_pipecat_flows.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/dv_pipecat_flows.egg-info/requires.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/dv_pipecat_flows.egg-info/top_level.txt +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/__init__.py +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/actions.py +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/data_extractor.py +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/exceptions.py +0 -0
- {dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/types.py +0 -0
{dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/adapters.py
RENAMED
|
@@ -672,6 +672,12 @@ def create_adapter(llm, context_aggregator) -> LLMAdapter:
|
|
|
672
672
|
llm_type = type(llm).__name__
|
|
673
673
|
llm_class = type(llm)
|
|
674
674
|
|
|
675
|
+
if llm_type == "OpenAIResponsesLLMService":
|
|
676
|
+
# Responses API service uses universal LLMContext — should have been caught
|
|
677
|
+
# by the LLMContextAggregatorPair check above, but handle explicitly as a fallback
|
|
678
|
+
logger.debug("Creating universal adapter for OpenAI Responses API service")
|
|
679
|
+
return UniversalLLMAdapter()
|
|
680
|
+
|
|
675
681
|
if llm_type == "OpenAILLMService":
|
|
676
682
|
logger.debug("Creating OpenAI adapter")
|
|
677
683
|
return OpenAIAdapter()
|
{dv_pipecat_flows-0.0.22.dev918 → dv_pipecat_flows-0.0.22.dev1116}/src/pipecat_flows/manager.py
RENAMED
|
@@ -1135,12 +1135,23 @@ In all of these cases, you can provide a `name` in your new node's config for de
|
|
|
1135
1135
|
standard_functions, original_configs=functions_list
|
|
1136
1136
|
)
|
|
1137
1137
|
|
|
1138
|
+
# Collect mirror_context messages from tts_say pre-actions
|
|
1139
|
+
mirror_messages = []
|
|
1140
|
+
for action in node_config.get("pre_actions", []):
|
|
1141
|
+
if (
|
|
1142
|
+
action.get("type") == "tts_say"
|
|
1143
|
+
and action.get("mirror_context", True)
|
|
1144
|
+
and action.get("text")
|
|
1145
|
+
):
|
|
1146
|
+
mirror_messages.append({"role": "assistant", "content": action["text"]})
|
|
1147
|
+
|
|
1138
1148
|
# Update LLM context
|
|
1139
1149
|
await self._update_llm_context(
|
|
1140
1150
|
role_messages=node_config.get("role_messages"),
|
|
1141
1151
|
task_messages=node_config["task_messages"],
|
|
1142
1152
|
functions=formatted_tools,
|
|
1143
1153
|
strategy=node_config.get("context_strategy"),
|
|
1154
|
+
mirror_messages=mirror_messages,
|
|
1144
1155
|
)
|
|
1145
1156
|
logger.debug("Updated LLM context")
|
|
1146
1157
|
|
|
@@ -1186,6 +1197,7 @@ In all of these cases, you can provide a `name` in your new node's config for de
|
|
|
1186
1197
|
task_messages: List[dict],
|
|
1187
1198
|
functions: List[dict],
|
|
1188
1199
|
strategy: Optional[ContextStrategyConfig] = None,
|
|
1200
|
+
mirror_messages: Optional[List[dict]] = None,
|
|
1189
1201
|
) -> None:
|
|
1190
1202
|
"""Update LLM context with new messages and functions.
|
|
1191
1203
|
|
|
@@ -1194,6 +1206,9 @@ In all of these cases, you can provide a `name` in your new node's config for de
|
|
|
1194
1206
|
task_messages: Task messages to add to context.
|
|
1195
1207
|
functions: New functions to make available.
|
|
1196
1208
|
strategy: Optional context update configuration.
|
|
1209
|
+
mirror_messages: Optional assistant messages from tts_say pre-actions
|
|
1210
|
+
with mirror_context=True. These are appended after task_messages
|
|
1211
|
+
so the LLM sees what was spoken to the user.
|
|
1197
1212
|
|
|
1198
1213
|
Raises:
|
|
1199
1214
|
FlowError: If context update fails.
|
|
@@ -1243,6 +1258,12 @@ In all of these cases, you can provide a `name` in your new node's config for de
|
|
|
1243
1258
|
# Add task messages
|
|
1244
1259
|
messages.extend(task_messages)
|
|
1245
1260
|
|
|
1261
|
+
# Add mirror messages (tts_say text mirrored as assistant context)
|
|
1262
|
+
# Placed after task_messages so the LLM sees: [system instructions] + [what was spoken]
|
|
1263
|
+
if mirror_messages:
|
|
1264
|
+
messages.extend(mirror_messages)
|
|
1265
|
+
logger.debug(f"Added {len(mirror_messages)} mirror message(s) to LLM context")
|
|
1266
|
+
|
|
1246
1267
|
# For first node or RESET/RESET_WITH_SUMMARY strategy, use update frame
|
|
1247
1268
|
frame_type = (
|
|
1248
1269
|
LLMMessagesUpdateFrame
|