From 88a17ce95143f61cc026b9d60783de6b8f4d3acc Mon Sep 17 00:00:00 2001 From: Abhishek Mishra Date: Tue, 4 Aug 2026 20:58:50 +0530 Subject: [PATCH] release: 5.4.0 Bump version to 5.4.0 and date the changelog so the publish job releases to PyPI. 5.4.0 = crew silent-agent fix (context seeded from LLM-request messages), crew greeting lifecycle, AgentTools tool config via the branch flow, transfer on_hold_music optional, and the smallestai calls CLI. --- changelog.md | 14 ++++++++++++-- pyproject.toml | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/changelog.md b/changelog.md index 1f2a15bf..91ad9940 100644 --- a/changelog.md +++ b/changelog.md @@ -1,4 +1,4 @@ -## 5.4.0 - unreleased +## 5.4.0 - 2026-08-04 Configure agent tools (transfer_call, end_call, ...) from code. @@ -12,12 +12,22 @@ Configure agent tools (transfer_call, end_call, ...) from code. fields are stripped (the API rejects nulls), and API error bodies are surfaced. * Re-exported `Tool`, `SinglePromptConfig`, and `ToolTransferOption` from `smallestai.atoms.helpers` (they are not exported from `atoms.types`). +* **crew (silent agent fix)**: `OutputCrewNode` now seeds its context from the + authoritative message list carried on the LLM-request event, instead of relying + only on separately-accumulated transcript events. Those could race the request or + be dropped, leaving the context empty — the custom LLM then errored on "no + non-system message" and the agent went silent for the whole call (greeting once, + never responding, never transferring). The node's own system prompt is preserved. +* **crew (greeting lifecycle)**: send `AgentReady` before starting nodes so a + greeting emitted in `start()` works, and add an `on_event` hook so a subclass can + react to events without accidentally silencing the framework routing. * **crew**: `SDKAgentTransferConversationEvent.on_hold_music` is now optional (defaults to `None`). It was declared `Optional[...]` but without a default, so it was effectively required — every crew transfer had to pass it (even as `None`) or event construction raised a `ValidationError`. Callers that want audio during the transfer bridge still pass `ringtone` / `relaxing_sound` / - `uplifting_beats`. + `uplifting_beats`. Note: `on_hold_music` applies to warm transfers; cold transfer + is a direct connect with no hold-music window. * **CLI** (`smallestai calls`): new `list`, `get`, `transcript`, and `recording` subcommands to inspect call logs, details, transcripts, and recording URLs from the terminal (read-only, dogfoods `client.atoms.calls`). Each supports `--json`. diff --git a/pyproject.toml b/pyproject.toml index 35044108..95263417 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ dynamic = ["version"] [tool.poetry] name = "smallestai" -version = "5.3.4" +version = "5.4.0" description = "" readme = "README.md" authors = []