pi-quiver 3.3.1 → 3.3.2
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 +4 -0
- package/README.md +2 -2
- package/fast-mode.ts +13 -12
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,10 @@ Published to npm as `pi-quiver` (`pi install npm:pi-quiver`). Pushing a
|
|
|
8
8
|
via OIDC trusted publishing. The release helper at
|
|
9
9
|
`.agents/skills/release/scripts/release.sh` cuts the tag; CI publishes.
|
|
10
10
|
|
|
11
|
+
## v3.3.2 - 2026-07-30
|
|
12
|
+
|
|
13
|
+
- **`fast-mode` supports Claude Opus 5.** Added `claude-opus-5` to the model prefix allowlist (fast mode API mechanics are identical to Opus 4.8: `speed: "fast"` + `fast-mode-2026-02-01` beta; compat verified identical in pi-ai 0.82.1, so `buildBetaHeader`'s OAuth-only preservation still holds).
|
|
14
|
+
|
|
11
15
|
## v3.3.1 - 2026-07-19
|
|
12
16
|
|
|
13
17
|
- **`provider-stall-watchdog`: bounded multi-stall retry via `maxStallRetries`.** Each semantic stall converts to a retryable error until the budget is exhausted; previously only the first stall retried, so a longer provider outage forced manual resubmission (observed stuck streams recover in seconds on a fresh request). Default = layered `retry.maxRetries` (Pi default 3); explicit config wins; positive integer, fails closed. A successful assistant turn resets the counter, mirroring Pi's retry loop.
|
package/README.md
CHANGED
|
@@ -66,7 +66,7 @@ A 300 KB changelog page never touches your context window - you get a preview an
|
|
|
66
66
|
| `doc_to_md.ts` | `doc_to_md` | Convert a local PDF/DOCX/PPTX to Markdown. High-fidelity via `pymupdf4llm` (run through `uv`); degraded pure-JS fallback (`unpdf`) when `uv`/Python is unavailable or conversion times out. DOCX/PPTX convert via LibreOffice first. |
|
|
67
67
|
| `session-name.ts` | `/session-name` | Manual + opt-in automatic session naming, with Ghostty tab rename. OFF by default. |
|
|
68
68
|
| `sword-header.ts` | `/builtin-header` | Themed ASCII startup header replacing pi's default logo. OFF by default. |
|
|
69
|
-
| `fast-mode.ts` | `/fast` | Inject Anthropic fast-mode (`speed: "fast"` + `anthropic-beta: fast-mode-2026-02-01`) into every Claude Opus 4.8 request, any thinking level. `--fast` flag + `/fast [on\|off\|status]`. OFF by default. |
|
|
69
|
+
| `fast-mode.ts` | `/fast` | Inject Anthropic fast-mode (`speed: "fast"` + `anthropic-beta: fast-mode-2026-02-01`) into every Claude Opus 4.8 / Opus 5 request, any thinking level. `--fast` flag + `/fast [on\|off\|status]`. OFF by default. |
|
|
70
70
|
| `provider-stall-watchdog.ts` | - | Opt-in semantic-silence watchdog for human interactive TUI runs. Warns after 2 minutes and recovers after 4 minutes; policy D offers each stall to Pi's retry loop until the stall retry budget (`maxStallRetries`, default = `retry.maxRetries`) is exhausted. OFF by default. |
|
|
71
71
|
|
|
72
72
|
Full routing rules, size-gate mechanics, and config: [doc/fetch.md](doc/fetch.md), [doc/doc-to-md.md](doc/doc-to-md.md).
|
|
@@ -148,7 +148,7 @@ These extensions are opt-in via `settings.json` (project `.pi/settings.json` ove
|
|
|
148
148
|
}
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
`sessionAutoName.enabled` makes one extra short LLM call per session (once, after the first turn) to title it; `false` (default) makes no model calls. `fastMode` only affects `claude-opus-4-8` requests on Anthropic's `anthropic-messages` API; enabling it opts into premium fast-mode pricing. `--fast` forces it on for one launch; `/fast on|off` toggles live. Proxy providers (opencode, cloudflare-ai-gateway) are excluded. `fastMode`'s header injection needs the `before_provider_headers` hook (pi bundling `@earendil-works/pi-coding-agent` >= 0.80.5); on older pi the beta header is silently not sent. See [doc/fetch.md](doc/fetch.md) and [doc/doc-to-md.md](doc/doc-to-md.md) for the ingestion tools' full reference; session-name/sword-header behavior above is complete.
|
|
151
|
+
`sessionAutoName.enabled` makes one extra short LLM call per session (once, after the first turn) to title it; `false` (default) makes no model calls. `fastMode` only affects `claude-opus-4-8` and `claude-opus-5` requests on Anthropic's `anthropic-messages` API; enabling it opts into premium fast-mode pricing. `--fast` forces it on for one launch; `/fast on|off` toggles live. Proxy providers (opencode, cloudflare-ai-gateway) are excluded. `fastMode`'s header injection needs the `before_provider_headers` hook (pi bundling `@earendil-works/pi-coding-agent` >= 0.80.5); on older pi the beta header is silently not sent. See [doc/fetch.md](doc/fetch.md) and [doc/doc-to-md.md](doc/doc-to-md.md) for the ingestion tools' full reference; session-name/sword-header behavior above is complete.
|
|
152
152
|
|
|
153
153
|
Recommended explicit retry and watchdog settings:
|
|
154
154
|
|
package/fast-mode.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Fast mode for Claude Opus 4.8.
|
|
2
|
+
* Fast mode for Claude Opus 4.8 / Opus 5.
|
|
3
3
|
*
|
|
4
4
|
* When enabled, injects Anthropic's fast-mode signals into every qualifying
|
|
5
|
-
* Opus 4.8 request on the anthropic-messages API, regardless of thinking level:
|
|
5
|
+
* Opus 4.8 / Opus 5 request on the anthropic-messages API, regardless of thinking level:
|
|
6
6
|
* - payload: { ...payload, speed: "fast" } (before_provider_request)
|
|
7
7
|
* - header: anthropic-beta: ...,fast-mode-2026-02-01 (before_provider_headers)
|
|
8
8
|
*
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
*
|
|
14
14
|
* Header coupling to pi-ai internals: pi assembles `anthropic-beta` AFTER this
|
|
15
15
|
* hook and merges the hook's headers LAST, so setting the header here REPLACES
|
|
16
|
-
* pi's list. For opus-4-8 pi's conditional betas (fine-grained tool
|
|
17
|
-
* interleaved thinking) are never applied (eager tool streaming
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* pi's list. For opus-4-8 and opus-5 pi's conditional betas (fine-grained tool
|
|
17
|
+
* streaming, interleaved thinking) are never applied (eager tool streaming
|
|
18
|
+
* defaults on + forceAdaptiveThinking; verified identical compat in pi-ai
|
|
19
|
+
* 0.82.1), so the only betas to preserve are the OAuth identity betas. We
|
|
20
|
+
* detect OAuth via the same token marker pi uses and rebuild the exact list.
|
|
21
|
+
* If pi later adds betas for these models, revisit buildBetaHeader.
|
|
21
22
|
*/
|
|
22
23
|
|
|
23
24
|
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
@@ -25,9 +26,9 @@ import { resolveConfig } from "./extension-config.ts";
|
|
|
25
26
|
|
|
26
27
|
export const FAST_MODE_BETA = "fast-mode-2026-02-01";
|
|
27
28
|
export const FAST_SPEED = "fast";
|
|
28
|
-
// Loose
|
|
29
|
-
// scope (D1); a future
|
|
30
|
-
export const FAST_MODE_MODEL_PREFIXES = ["claude-opus-4-8"];
|
|
29
|
+
// Loose prefixes: match dated snapshots (claude-opus-4-8-*, claude-opus-5-*).
|
|
30
|
+
// Opus 4.7 is out of scope (D1); a future model needs a one-line addition here.
|
|
31
|
+
export const FAST_MODE_MODEL_PREFIXES = ["claude-opus-4-8", "claude-opus-5"];
|
|
31
32
|
export const OAUTH_IDENTITY_BETAS = ["claude-code-20250219", "oauth-2025-04-20"];
|
|
32
33
|
const STATUS_KEY = "fast-mode";
|
|
33
34
|
const BETA_HEADER = "anthropic-beta";
|
|
@@ -121,7 +122,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
121
122
|
|
|
122
123
|
pi.registerFlag("fast", {
|
|
123
124
|
type: "boolean",
|
|
124
|
-
description: "Enable Anthropic fast mode for Opus 4.8 requests this launch",
|
|
125
|
+
description: "Enable Anthropic fast mode for Opus 4.8/5 requests this launch",
|
|
125
126
|
});
|
|
126
127
|
|
|
127
128
|
pi.on("session_start", async (_event, ctx) => {
|
|
@@ -147,7 +148,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
147
148
|
});
|
|
148
149
|
|
|
149
150
|
pi.registerCommand("fast", {
|
|
150
|
-
description: "Manage Opus 4.8 fast mode: /fast [on|off|status]",
|
|
151
|
+
description: "Manage Opus 4.8/5 fast mode: /fast [on|off|status]",
|
|
151
152
|
getArgumentCompletions: (prefix) => {
|
|
152
153
|
const p = prefix.trim().toLowerCase();
|
|
153
154
|
if (p.includes(" ")) return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-quiver",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.2",
|
|
4
4
|
"description": "Personal pack of Pi coding-agent extensions: context-safe fetch, doc_to_md PDF/DOCX/PPTX-to-Markdown conversion, session naming, a themed ASCII startup header, Opus 4.8 fast mode, and a provider-stall watchdog.",
|
|
5
5
|
"author": "Jacek Juraszek",
|
|
6
6
|
"license": "MIT",
|