@llblab/pi-kit 0.30.0 → 0.30.1

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.
package/BACKLOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Backlog
2
2
 
3
- The 0.30.0 composition advances Telegram to 0.53.0; package pins, resource order and bundled runtime ownership remain authoritative in `package.json`. Release outcomes belong in [CHANGELOG.md](./CHANGELOG.md).
3
+ The 0.30.1 composition advances Telegram to 0.53.1; package pins, resource order and bundled runtime ownership remain authoritative in `package.json`. Release outcomes belong in [CHANGELOG.md](./CHANGELOG.md).
4
4
 
5
5
  ## Carried checks
6
6
 
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  All notable changes to `@llblab/pi-kit` are documented here.
4
4
 
5
+ ## 0.30.1: Telegram Text Reply Diagnostics
6
+
7
+ - `Telegram Voice Artifacts`: Advances the exact Telegram pin to `0.53.1`. Plain text replies no longer record a false "every voice synthesis provider failed" delivery error when a reply carries no voice content; genuine voice failures still fall back to text. Other pins, package membership, resources and load order are unchanged.
8
+
5
9
  ## 0.30.0: Telegram Live Rebinding and Windows Support
6
10
 
7
11
  - `Telegram Live Rebinding`: Advances the exact Telegram pin to `0.53.0`. Restore moves a held prompt or supported command to another Pi through one same-session save/apply/release channel with bounded old-Thread cleanup. Temporary routing tabs are named 🚦 Routing, Cancel removes the tab and any All copy right away, and a restart revives a still-waiting chooser. Toasts are plain text and navigation answers silently.
package/README.md CHANGED
@@ -18,7 +18,7 @@ Package links lead to the owning repositories for usage, documentation, issues,
18
18
  | [`@llblab/pi-codex-usage`](https://github.com/llblab/pi-codex-usage) | `0.12.1` | Shared Codex quota/Business credit status and persistent priority Fast toggle, mirrored in Telegram |
19
19
  | [`@llblab/pi-grow-loop`](https://github.com/llblab/pi-grow-loop) | `0.9.0` | Visible continuation scheduling and bounded worker Skills through compiled, manifest-owned resources |
20
20
  | [`@llblab/pi-state-flow`](https://github.com/llblab/pi-state-flow) | `0.26.4` | Scoped context/memory compiler with step-independent current memory, stable Passive/Active modes and visible blocked-state status |
21
- | [`@llblab/pi-telegram`](https://github.com/llblab/pi-telegram) | `0.53.0` | Telegram companion with live Thread rebinding, temporary routing tabs, Workspace Restore, follower Threads, Windows support, files, voice, and controls |
21
+ | [`@llblab/pi-telegram`](https://github.com/llblab/pi-telegram) | `0.53.1` | Telegram companion with live Thread rebinding, temporary routing tabs, Workspace Restore, follower Threads, Windows support, files, voice, and controls |
22
22
  | [`@llblab/skills`](https://github.com/llblab/skills) | `1.15.0` | Portable workflows for engineering, review, design, context maintenance, and other focused tasks |
23
23
 
24
24
  Versions are exact by design. An upstream release does not change an installed kit until this repository explicitly advances the dependency and publishes a new kit version. Runtime defects and package-specific feature requests belong in the linked repository; package selection and kit installation issues belong here.
@@ -45,7 +45,7 @@ Prefer the kit instead of separately loading the same packages. If you already u
45
45
 
46
46
  ## Development
47
47
 
48
- The `0.30.0` composition advances Telegram to `0.53.0`: same-session live Thread rebinding for prompts and supported commands, temporary routing tabs that disappear right after Cancel, and full Windows support for Restore, live rebinding and cleanup through the same strict journal reads. State Flow stays at `0.26.4`; all other pins, resources and load order remain unchanged. Telegram runtime storage stays in `tmp/pi-telegram`. Drain the prompt queue or accept losing waiting work before reload/restart; damaged-state reset discards all profiles' runtime continuity. `npm run validate` checks exact installed pins, declared resources, dependency audit and bundled inventory. It does not certify installed-client rendering; carried checks remain in [Backlog](./BACKLOG.md).
48
+ The `0.30.1` composition carries Telegram `0.53.1`, which stops plain text replies from recording false voice-delivery errors, on top of `0.53.0`: same-session live Thread rebinding for prompts and supported commands, temporary routing tabs that disappear right after Cancel, and full Windows support for Restore, live rebinding and cleanup through the same strict journal reads. State Flow stays at `0.26.4`; all other pins, resources and load order remain unchanged. Telegram runtime storage stays in `tmp/pi-telegram`. Drain the prompt queue or accept losing waiting work before reload/restart; damaged-state reset discards all profiles' runtime continuity. `npm run validate` checks exact installed pins, declared resources, dependency audit and bundled inventory. It does not certify installed-client rendering; carried checks remain in [Backlog](./BACKLOG.md).
49
49
 
50
50
  ```bash
51
51
  npm install
@@ -4,6 +4,10 @@
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.53.1: Text replies without false voice errors
8
+
9
+ - `Voice artifacts`: A reply plan without voice content no longer reaches outbound voice artifact delivery, so plain text replies stop recording "every voice synthesis provider failed" delivery errors; explicit `telegram_voice` markup and genuine synthesis failures keep their existing fallback behavior (#318).
10
+
7
11
  ## 0.53.0: Live Thread rebinding, routing tabs and Windows support
8
12
 
9
13
  - `Live-rebind state`: Atomic same-session Workspace binding/operation publication, fenced recipient application and bounded one-shot cleanup scheduling. Failed/unknown cleanup keeps the new binding without blocking the next attempt; chooser retirement keeps saved inputs. Shared-state retries recheck captured authority before every rename, so a revoked grant cannot overwrite retained state.
@@ -449,6 +449,10 @@ export function createTelegramOutboundReplyArtifactSender(deps) {
449
449
  : plan.voiceText
450
450
  ? [{ text: plan.voiceText, lang: plan.lang, rate: plan.rate }]
451
451
  : [];
452
+ // A plan without voice content has nothing to deliver; absence of
453
+ // content is not a synthesis failure.
454
+ if (voiceReplies.length === 0)
455
+ return;
452
456
  let anyDelivered = false;
453
457
  for (const reply of voiceReplies) {
454
458
  if (!isDeliveryActive())
@@ -1384,7 +1384,9 @@ export async function handleTelegramAgentEndRuntime(deps) {
1384
1384
  }
1385
1385
  if (!isDeliveryActive())
1386
1386
  return;
1387
- if (outboundReply && deps.sendOutboundReplyArtifacts) {
1387
+ if (outboundReply &&
1388
+ hasOutboundArtifacts &&
1389
+ deps.sendOutboundReplyArtifacts) {
1388
1390
  try {
1389
1391
  await deps.sendOutboundReplyArtifacts(turn, outboundReply, {
1390
1392
  replyToPrompt: !finalText,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llblab/pi-telegram",
3
- "version": "0.53.0",
3
+ "version": "0.53.1",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -900,6 +900,9 @@ export function createTelegramOutboundReplyArtifactSender(
900
900
  : plan.voiceText
901
901
  ? [{ text: plan.voiceText, lang: plan.lang, rate: plan.rate }]
902
902
  : [];
903
+ // A plan without voice content has nothing to deliver; absence of
904
+ // content is not a synthesis failure.
905
+ if (voiceReplies.length === 0) return;
903
906
 
904
907
  let anyDelivered = false;
905
908
 
@@ -2356,7 +2356,11 @@ export async function handleTelegramAgentEndRuntime<
2356
2356
  }
2357
2357
  }
2358
2358
  if (!isDeliveryActive()) return;
2359
- if (outboundReply && deps.sendOutboundReplyArtifacts) {
2359
+ if (
2360
+ outboundReply &&
2361
+ hasOutboundArtifacts &&
2362
+ deps.sendOutboundReplyArtifacts
2363
+ ) {
2360
2364
  try {
2361
2365
  await deps.sendOutboundReplyArtifacts(turn, outboundReply, {
2362
2366
  replyToPrompt: !finalText,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llblab/pi-telegram",
3
- "version": "0.53.0",
3
+ "version": "0.53.1",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llblab/pi-kit",
3
- "version": "0.30.0",
3
+ "version": "0.30.1",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -47,7 +47,7 @@
47
47
  "@llblab/pi-codex-usage": "0.12.1",
48
48
  "@llblab/pi-grow-loop": "0.9.0",
49
49
  "@llblab/pi-state-flow": "0.26.4",
50
- "@llblab/pi-telegram": "0.53.0",
50
+ "@llblab/pi-telegram": "0.53.1",
51
51
  "@llblab/skills": "1.15.0"
52
52
  },
53
53
  "bundledDependencies": [