From eb4f0ac1ae81fec80445217f8a220b3638be3c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 13 May 2026 21:06:09 -0700 Subject: [PATCH] Add changelog for #4493 --- changelog/4493.added.md | 1 + changelog/4493.changed.2.md | 1 + changelog/4493.changed.md | 1 + 3 files changed, 3 insertions(+) create mode 100644 changelog/4493.added.md create mode 100644 changelog/4493.changed.2.md create mode 100644 changelog/4493.changed.md diff --git a/changelog/4493.added.md b/changelog/4493.added.md new file mode 100644 index 000000000..cf8e47454 --- /dev/null +++ b/changelog/4493.added.md @@ -0,0 +1 @@ +- Added `pipecat.tasks`, a task-based agent framework folded in from the standalone `pipecat-subagents` package. Tasks inherit from `BaseTask`, share a `TaskBus`, register in a `TaskRegistry`, and exchange typed work via `@job` handlers. `LLMTask` and `LLMContextTask` provide ready-made LLM-driven tasks. `PipelineRunner.spawn(task)` registers fire-and-forget tasks alongside the main pipeline task. diff --git a/changelog/4493.changed.2.md b/changelog/4493.changed.2.md new file mode 100644 index 000000000..e4b294a7c --- /dev/null +++ b/changelog/4493.changed.2.md @@ -0,0 +1 @@ +- ⚠️ `FrameProcessorSetup.pipeline_task` and `FunctionCallParams.pipeline_task` are now mandatory fields, and `FrameProcessor.pipeline_task` raises if read before `setup()` instead of returning `None`. Real-world code (frame processors set up by `PipelineTask`, tool handlers invoked by `LLMService`) is unaffected; only callers that construct these dataclasses by hand (typically tests) now have to supply a `pipeline_task` reference. diff --git a/changelog/4493.changed.md b/changelog/4493.changed.md new file mode 100644 index 000000000..7975110e1 --- /dev/null +++ b/changelog/4493.changed.md @@ -0,0 +1 @@ +- `PipelineTask` now inherits from `BaseTask`, so every pipeline task is also a bus participant. It accepts a new optional `bridged=()` parameter that auto-wraps the pipeline with bus edge processors, letting the task exchange frames with other bridged tasks over the shared `TaskBus`. The bus is supplied by `PipelineRunner` via `task.attach(registry=..., bus=...)` instead of through the constructor.