@oh-my-pi/pi-ai 16.2.4 → 16.2.5

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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [16.2.5] - 2026-06-28
6
+
7
+ ### Fixed
8
+
9
+ - Fixed Google and Cloud Code Assist streams that end without a finish reason (dropped connections or truncated responses) being treated as fatal; they are now classified as transient so the coding agent automatically retries.
10
+
5
11
  ## [16.2.4] - 2026-06-28
6
12
 
7
13
  ### Added
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-ai",
4
- "version": "16.2.4",
4
+ "version": "16.2.5",
5
5
  "description": "Unified LLM API with automatic model discovery and provider configuration",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": "Can Boluk",
@@ -38,9 +38,9 @@
38
38
  },
39
39
  "dependencies": {
40
40
  "@bufbuild/protobuf": "^2.12.0",
41
- "@oh-my-pi/pi-catalog": "16.2.4",
42
- "@oh-my-pi/pi-utils": "16.2.4",
43
- "@oh-my-pi/pi-wire": "16.2.4",
41
+ "@oh-my-pi/pi-catalog": "16.2.5",
42
+ "@oh-my-pi/pi-utils": "16.2.5",
43
+ "@oh-my-pi/pi-wire": "16.2.5",
44
44
  "arktype": "^2.2.0",
45
45
  "zod": "^4"
46
46
  },
@@ -36,7 +36,13 @@ export class ProviderResponseError extends Error {
36
36
  this.name = "ProviderResponseError";
37
37
  this.provider = options.provider;
38
38
  this.kind = options.kind ?? "output";
39
+ // A safety filter block is a terminal provider finish, not a transient fault.
39
40
  if (this.kind === "content-blocked") attach(this, create(Flag.ProviderFinishError));
41
+ // An incomplete stream (connection dropped / truncated before any terminal
42
+ // event) never produced a finish reason — the request didn't complete, so it
43
+ // is safe to retry. The retry layer's replay-unsafe guard still blocks a
44
+ // retry when partial tool output was already emitted.
45
+ else if (this.kind === "incomplete-stream") attach(this, create(Flag.Transient));
40
46
  }
41
47
  }
42
48