dv-pipecat-flows 0.0.26.dev156__tar.gz → 0.0.26.dev158__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.26.dev156/src/dv_pipecat_flows.egg-info → dv_pipecat_flows-0.0.26.dev158}/PKG-INFO +1 -1
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158/src/dv_pipecat_flows.egg-info}/PKG-INFO +1 -1
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/dv_pipecat_flows.egg-info/scm_file_list.json +1 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/dv_pipecat_flows.egg-info/scm_version.json +2 -2
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/adapters.py +70 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.agents/skills/pipecat-logs/SKILL.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.agents/skills/pipecat-logs/query-reference.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.claude/skills/pipecat-logs/SKILL.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.claude/skills/pipecat-logs/query-reference.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.gitattributes +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.gitignore +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.python-version +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/.readthedocs.yaml +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/AGENTS.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/CHANGELOG.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/CLAUDE.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/CONTRIBUTING.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/LICENSE +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/MANIFEST.in +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/README.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/.env.example +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/.gitignore +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/README.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/ARCHITECTURE.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/CODE_MAP.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/CONFIG.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/CONTRACTS.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/COPILOT_TODO.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/DISTRIBUTION.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/HLD.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/METHODS.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/VOICE_E2E.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/ANALYSIS_stagehand_vs_hybrid.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/RESULTS.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/_env.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/bench.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/bench_browseruse.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/bench_stagehand.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/inspect_browseruse.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/inspect_browseruse_showcase.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/inspect_stagehand_prompt.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/pages/checkout.html +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/pages/dashboard.html +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/pages/signup.html +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/results_browseruse.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/results_perception.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/results_stagehand.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/tasks.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/try_hybrid.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/try_hybrid_multistep.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/try_hybrid_oneshot.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/pyproject.toml +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/scripts/dev-stack.sh +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/uv.lock +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/dev-requirements.txt +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/docker-compose.dev.yml +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/.eslintrc.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/.prettierrc +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/css/tailwind.css +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/examples/food_ordering.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/examples/movie_explorer.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/examples/patient_intake.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/examples/restaurant_reservation.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/examples/travel_planner.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/favicon.png +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/favicon.svg +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/index.html +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/canvas.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/editorState.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/sidePanel.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/toolbar.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/main.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/baseNode.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/endNode.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/flowNode.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/functionNode.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/index.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/mergeNode.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/startNode.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/types.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/utils/export.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/utils/helpers.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/utils/import.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/utils/validation.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/jsdoc.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/package-lock.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/package.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/postcss.config.cjs +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/public/favicon.png +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/public/favicon.svg +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/tailwind.config.cjs +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/vercel.json +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/vite.config.js +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/engine_primitives_plan.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/env.example +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/images/food-ordering-flow.png +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/pipecat-flows.png +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/pipecat_upgrade.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/pyproject.toml +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/remote-asterisk-code/README.md +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/remote-asterisk-code/extensions.conf +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/remote-asterisk-code/rtp.conf +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/requirements.txt +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/scripts/build_uae_pipecat_secret_blob.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/scripts/check-ar-package.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/scripts/fix-ruff.sh +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/scripts/pre-commit.sh +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/scripts/test_build_uae_pipecat_secret_blob.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/setup.cfg +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/dv_pipecat_flows.egg-info/SOURCES.txt +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/dv_pipecat_flows.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/dv_pipecat_flows.egg-info/requires.txt +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/dv_pipecat_flows.egg-info/top_level.txt +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/__init__.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/actions.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/condition_evaluator.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/exceptions.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/flow_validator.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/manager.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/processors/__init__.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/processors/router_mode_guard.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/processors/speak_interruption_guard.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/processors/user_turn_observer.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/router_mode.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/types.py +0 -0
- {dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/uv.lock +0 -0
|
@@ -775,6 +775,7 @@
|
|
|
775
775
|
"tests/__init__.py",
|
|
776
776
|
"tests/test_actions.py",
|
|
777
777
|
"tests/test_adapters.py",
|
|
778
|
+
"tests/test_anthropic_router_completion.py",
|
|
778
779
|
"tests/test_capture_code_conversation_mimic.py",
|
|
779
780
|
"tests/test_capture_code_handler.py",
|
|
780
781
|
"tests/test_capture_code_processor.py",
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/adapters.py
RENAMED
|
@@ -18,6 +18,7 @@ The adapter system allows the flow manager to work with different LLM
|
|
|
18
18
|
providers while maintaining a consistent internal format.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
|
+
import json
|
|
21
22
|
import sys
|
|
22
23
|
from typing import Any, Callable, Dict, List, Optional, Union
|
|
23
24
|
|
|
@@ -297,6 +298,69 @@ class LLMAdapter:
|
|
|
297
298
|
raise NotImplementedError("Subclasses must implement this method")
|
|
298
299
|
|
|
299
300
|
|
|
301
|
+
def _text_of(content: Any) -> str:
|
|
302
|
+
if isinstance(content, list):
|
|
303
|
+
return "".join(p.get("text", "") if isinstance(p, dict) else str(p) for p in content)
|
|
304
|
+
return content if isinstance(content, str) else ""
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
async def anthropic_router_completion(
|
|
308
|
+
client: Any,
|
|
309
|
+
model_name: Optional[str],
|
|
310
|
+
system_prompt: str,
|
|
311
|
+
response_schema: Dict[str, Any],
|
|
312
|
+
context_messages: List[Dict[str, Any]],
|
|
313
|
+
schema_name: str = "router_decision",
|
|
314
|
+
) -> Optional[str]:
|
|
315
|
+
"""Claude router decision: one forced tool call whose input is the routing JSON.
|
|
316
|
+
|
|
317
|
+
The recent turns are sent as alternating user / assistant text (tool traffic and
|
|
318
|
+
system messages dropped), starting and ending on a user turn as the Messages API
|
|
319
|
+
requires. Thinking is turned off explicitly: Anthropic rejects a forced tool choice
|
|
320
|
+
while thinking is on, and Claude 5.x models think unless told not to.
|
|
321
|
+
|
|
322
|
+
Returns the tool input as a JSON string, or None on failure.
|
|
323
|
+
"""
|
|
324
|
+
turns: List[Dict[str, str]] = []
|
|
325
|
+
for msg in context_messages or []:
|
|
326
|
+
role = msg.get("role")
|
|
327
|
+
text = _text_of(msg.get("content")).strip()
|
|
328
|
+
if role not in ("user", "assistant") or not text:
|
|
329
|
+
continue
|
|
330
|
+
if turns and turns[-1]["role"] == role:
|
|
331
|
+
turns[-1]["content"] += "\n\n" + text
|
|
332
|
+
else:
|
|
333
|
+
turns.append({"role": role, "content": text})
|
|
334
|
+
if not turns or turns[0]["role"] != "user":
|
|
335
|
+
turns.insert(0, {"role": "user", "content": "(start of conversation)"})
|
|
336
|
+
if turns[-1]["role"] != "user":
|
|
337
|
+
turns.append({"role": "user", "content": "Pick the branch for the conversation above."})
|
|
338
|
+
try:
|
|
339
|
+
response = await client.messages.create(
|
|
340
|
+
model=model_name,
|
|
341
|
+
max_tokens=1024,
|
|
342
|
+
system=system_prompt,
|
|
343
|
+
messages=turns,
|
|
344
|
+
tools=[
|
|
345
|
+
{
|
|
346
|
+
"name": schema_name,
|
|
347
|
+
"description": "Record the routing decision.",
|
|
348
|
+
"input_schema": response_schema,
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
tool_choice={"type": "tool", "name": schema_name},
|
|
352
|
+
extra_body={"thinking": {"type": "disabled"}},
|
|
353
|
+
)
|
|
354
|
+
except Exception as exc: # noqa: BLE001
|
|
355
|
+
logger.error(f"Anthropic router completion failed: {exc!r}")
|
|
356
|
+
return None
|
|
357
|
+
for block in response.content:
|
|
358
|
+
if getattr(block, "type", "") == "tool_use":
|
|
359
|
+
return json.dumps(block.input)
|
|
360
|
+
logger.warning("Anthropic router completion returned no tool call")
|
|
361
|
+
return None
|
|
362
|
+
|
|
363
|
+
|
|
300
364
|
class UniversalLLMAdapter(LLMAdapter):
|
|
301
365
|
"""Format adapter when universal LLMContext is in use.
|
|
302
366
|
|
|
@@ -429,6 +493,12 @@ class UniversalLLMAdapter(LLMAdapter):
|
|
|
429
493
|
)
|
|
430
494
|
return None
|
|
431
495
|
|
|
496
|
+
if hasattr(client, "messages") and hasattr(client.messages, "create"):
|
|
497
|
+
# Anthropic client (Claude on the Anthropic API or Bedrock).
|
|
498
|
+
return await anthropic_router_completion(
|
|
499
|
+
client, model_name, system_prompt, response_schema, context_messages, schema_name
|
|
500
|
+
)
|
|
501
|
+
|
|
432
502
|
logger.warning(
|
|
433
503
|
f"Universal router completion: llm_service "
|
|
434
504
|
f"{type(llm_service).__name__} exposes neither responses nor "
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/.env.example
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/CODE_MAP.md
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/CONFIG.md
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/CONTRACTS.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/HLD.md
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/METHODS.md
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/docs/VOICE_E2E.md
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/RESULTS.md
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/_env.py
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/bench.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/tasks.py
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/eval/try_hybrid.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/browser_copilot/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/examples/food_ordering.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/canvas.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/editorState.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/sidePanel.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/editor/toolbar.js
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/baseNode.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/endNode.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/flowNode.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/functionNode.js
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/mergeNode.js
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/nodes/startNode.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/utils/helpers.js
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/js/utils/validation.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/editor/tailwind.config.cjs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/images/food-ordering-flow.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/remote-asterisk-code/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/remote-asterisk-code/rtp.conf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/scripts/check-ar-package.py
RENAMED
|
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
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/__init__.py
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/actions.py
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/router_mode.py
RENAMED
|
File without changes
|
{dv_pipecat_flows-0.0.26.dev156 → dv_pipecat_flows-0.0.26.dev158}/src/pipecat_flows/types.py
RENAMED
|
File without changes
|
|
File without changes
|