Aleix Conchillo Flaqué
3d88b42e0b
FrameProcessor: add before/after events for processed/pushed frames
2025-09-19 20:47:21 -07:00
Aleix Conchillo Flaqué
42344125b1
tests: add unit tests for push_interruption_task_frame_and_wait()
2025-09-17 13:38:22 -07:00
Paul Kompfner
8bc3c89140
Fix a bug preventing usage of multiple ServiceSwitchers in a pipeline
2025-09-17 16:09:18 -04:00
Paul Kompfner
2cd2567a37
Add a unit tests validating that multiple ServiceSwitchers can be used in the same pipeline (currently failing)
2025-09-17 16:04:30 -04:00
Paul Kompfner
a12392182c
Simplify, undoing the change allowing controlling ServiceSwitcher with immediate frames (SystemFrames). Service switcher frames are ControlFrames, which are easier to reason about. We can always build the immediate option later if needed (i.e. if there's sufficient user pull for it)
2025-09-17 15:35:02 -04:00
Paul Kompfner
b814b70e1e
Allow controlling ServiceSwitcher with either immediate frames (SystemFrames) or in-order frames (ControlFrames).
...
Immediate is the "default", i.e. has the more obvious name (e.g. `ManuallySwitchServiceFrame` v `ManuallySwitchServiceControlFrame`), since that's *probably* what users will want to reach for. Also, the immediate frames are more likely to behave like what we had before the last few commits, where the service switch would always "jump the queue" by having an immediate effect once it hit the `ServiceSwitcher` in the pipeline, jumping ahead of frames in front of it destined for the service.
2025-09-17 15:35:02 -04:00
Paul Kompfner
a1f84e1b50
Remove extraneous unit tests
2025-09-17 15:35:02 -04:00
Paul Kompfner
e1b1dc16ec
Add unit tests for ServiceSwitcher
2025-09-17 15:35:02 -04:00
Aleix Conchillo Flaqué
db71089f5e
PipelineTask: add on_pipeline_finished event
...
This deprecates `on_pipeline_stopped`, `on_pipeline_ended` and
`on_pipeline_cancelled`.
2025-09-15 15:28:33 -07:00
kompfner
81cede2c60
Merge pull request #2653 from pipecat-ai/pk/llm-context-adapting-tests
...
`LLMContext`-adapting unit tests
2025-09-15 16:38:46 -04:00
Paul Kompfner
fe42187dc1
Implement LLMService.create_llm_specific_message() so that users don't need to just know what value of llm to provide to the LLMSpecificMessage constructor
2025-09-15 14:15:22 -04:00
Paul Kompfner
999e88c942
Add unit tests for AWSBedrockLLMAdapter.get_llm_invocation_params(), focusing on messages specifically
2025-09-15 12:08:21 -04:00
Paul Kompfner
c04df2f28b
Add unit tests for AnthropicLLMAdapter.get_llm_invocation_params(), focusing on messages specifically
2025-09-15 11:55:48 -04:00
Paul Kompfner
100ef0ab5c
Add unit tests for GeminiLLMAdapter.get_llm_invocation_params(), focusing on messages specifically
2025-09-15 11:38:23 -04:00
Paul Kompfner
42886d7105
Add unit tests for OpenAILLMAdapter.get_llm_invocation_params(), focusing on messages specifically. Also, fix a bug in OpenAILLMAdapter (found thanks to the unit tests) where it wasn't "unwrapping" LLMSpecificMessages.
2025-09-15 11:17:11 -04:00
Paul Kompfner
9f82c6b4a4
Add unit tests for run_inference
2025-09-12 11:07:11 -04:00
Aleix Conchillo Flaqué
57add41971
tests: add unit test for MinWordsInterruptionStrategy
2025-09-11 13:07:30 -07:00
Aleix Conchillo Flaqué
74b38b59d6
tests(utils): allow passing PipelineParams to run_test()
2025-09-11 13:02:21 -07:00
Aleix Conchillo Flaqué
0b21f8a6bd
FrameProcessor: add push_interruption_task_frame_and_wait()
2025-09-11 09:19:44 -07:00
Aleix Conchillo Flaqué
9d9f10ae0e
frames: StartInterruptionFrame is deprecated, use InterruptionFrame
2025-09-11 09:01:54 -07:00
Mark Backman
972546b24f
Add IVR navigation ( #2529 )
2025-08-29 20:08:17 -04:00
Aleix Conchillo Flaqué
a5c5e069ba
move pipecat.frames.frames.KeypadEntry to pipecat.audio.dtmf.types.KeypadEntry
2025-08-28 17:43:29 -07:00
Aleix Conchillo Flaqué
8ab81d289a
PipelineTask: warn if CancelFrame doesn't reach the end
2025-08-26 10:36:33 -07:00
Aleix Conchillo Flaqué
8044c4170d
PipelineRunner/PipelineTask: fix asyncio task cancellation
2025-08-21 23:50:00 -07:00
Aleix Conchillo Flaqué
24a628c85e
remove watchdog timers and specific asyncio implementations
...
Watchdog timers have been removed. They were introduced in 0.0.72 to help
diagnose pipeline freezes. Unfortunately, they proved ineffective since they
required developers to use Pipecat-specific queues, iterators, and events to
correctly reset the timer, which limited their usefulness and added friction.
2025-08-21 18:09:56 -07:00
Aleix Conchillo Flaqué
28c729cc36
replace asyncio.wait_for for wait_for2.wait_for
2025-08-20 15:26:57 -07:00
Aleix Conchillo Flaqué
f387776985
add custom asyncio.wait_for()
...
This patch uses `wait_for2` package to implement `asyncio.wait_for()` for
Python < 3.12.
In Python 3.12, `asyncio.wait_for()` is implemented in terms of
`asyncio.timeout()` which fixed a bunch of issues. However, this was never
backported (because of the lack of `async.timeout()`) and there are still many
remainig issues, specially in Python 3.10, in `async.wait_for()`.
See https://github.com/python/cpython/pull/98518
2025-08-20 14:09:05 -07:00
Aleix Conchillo Flaqué
4e3af00b6d
tests: try to use default SleepFrame time
2025-08-20 10:08:54 -07:00
Aleix Conchillo Flaqué
4015aedb86
tests: fix unit tests
2025-08-20 10:08:54 -07:00
Aleix Conchillo Flaqué
0508ddddfb
WatchdogPriorityQueue: fix watchdog sentinel insertion
...
We now force each inserted item in the priority queue to be a tuple and the
actual value to be last in the tuple. All the previous values in the tuple also
need to be numeric.
2025-08-12 17:40:58 -07:00
Aleix Conchillo Flaqué
3f3d757581
tests: added WatchdogQueue and WatchdogPriorityQueue unit tests
2025-08-12 11:48:22 -07:00
Captain Caius
3fae00e067
Add VADUserStartSpeakingFrame VADUserStopSpeakingFrame to STTMuteFilter
2025-08-10 19:35:04 -07:00
Paul Kompfner
07eb00722b
Fix langchain unit test
2025-08-07 14:45:35 -04:00
Mark Backman
26c937af87
Update match_endofsentence to use NLTK sentence tokenizer
2025-07-22 20:19:29 -04:00
Mark Backman
06c1255abe
fix: use a different aggregation timeout for emulated user speech ( #2185 )
...
* fix: use a different aggregation timeout for emulated user speech
* Add SpeechControlParamsFrame
* Update test_context_aggregator tests
2025-07-11 16:33:44 -04:00
Aleix Conchillo Flaqué
af8b4901d4
DtmfAggregator: cancel interruption task to avoid a dangling task
2025-07-03 08:18:48 -07:00
Paul Kompfner
ce3ca418c2
Unit tests for "direct" functions
2025-06-30 10:36:47 -04:00
Paul Kompfner
15b9a5faf6
Implement "direct functions", which allow you to bypass specifying a function configuration (as a FunctionSchema or in a provider-specific format) and use the Python function directly. Metadata is gathered automatically from the function signature and docstring.
2025-06-30 10:36:42 -04:00
Aleix Conchillo Flaqué
5a3457ba33
introduce task watchdog timers
2025-06-24 11:56:20 -07:00
Mark Backman
16c0e2460b
TurnTrackingObserver ends turn upon seeing EndFrame, CancelFrame
2025-06-23 11:08:51 -04:00
Aleix Conchillo Flaqué
028f7b2d65
PipelineTask: fix repeated on_idle_timeout
2025-06-19 09:14:10 -07:00
kompfner
16048956c3
Merge pull request #1956 from pipecat-ai/pk/make-add-observer-sync
...
Make `PipelineTask.add_observer()` synchronous. This allows callers t…
2025-06-09 13:19:34 -04:00
Paul Kompfner
513ce26200
Add unit test exercising synchronous usage of PipelineTask.add_observer() right after initializing the PipelineTask (before anything else is done with it)
2025-06-09 11:30:24 -04:00
Paul Kompfner
1cd96f94ff
Make PipelineTask.add_observer() synchronous. This allows callers to call it before run()ning the PipelineTask first. Without this change, if they tried to do that, they would get an error because the TaskManager's event loop hadn't been set yet.
2025-06-09 11:30:24 -04:00
Aleix Conchillo Flaqué
901dd041f0
buffer audio from TTS service before pushing frames
2025-06-09 07:29:09 -07:00
Aleix Conchillo Flaqué
5512de3221
allow custom interruption strategies
2025-06-02 12:01:26 -07:00
Mark Backman
4d2a02f318
Refactor to create task on StartFrame, also cleanup
2025-05-29 17:10:54 -04:00
Mark Backman
0bec7db03b
Emit a BotInterruptionFrame when the first keypress of a sequence is received
2025-05-29 17:07:18 -04:00
Mark Backman
74827f983f
Add tests, improve frame timing
2025-05-29 17:07:18 -04:00
marc.torsoc
ca35299dcd
add link cleaning and a test for it
2025-05-21 12:08:53 +02:00