Validate extension against latest Pi release #18
Labels
No labels
dependencies
No milestone
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
alex/pi-shared#18
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
export default function (pi: ExtensionAPI) {Read Pi v0.80.10 release notes, there are changes about models management via extension that might affect this
/pi analyze and if changes are needed open a pr
maxthinking level for Mistral #19Now let me look at the rest of the relevant types and verify the extension type-checks against the new types.Let me examine the
ThinkingLeveltype andthinkingLevelMapdefinition, since 0.80.6 added a newmaxthinking level.Now let me look at thethinkingLevelMaptype definition in the pi-aiModeltype, sinceThinkingLevelnow includesmax.Let me check howthinkingLevelMapis consumed to determine supported thinking levels (whether an omittedmaxkey is treated as hidden or as a default).Let me verify theModeltype'scostandcompatshapes still match what the extension uses, then run a real type-check.Now let me run an actual TypeScript type-check against the installed v0.80.10 types to confirm the extension is compatible.The extension type-checks cleanly against v0.80.10. Let me confirm the runtime behavior of the newmaxthinking level against this extension's config to complete the analysis.Analysis complete. The extension type-checks cleanly against v0.80.10 (strictmode, exit 0) and behaves correctly: the newmaxthinking level (added in 0.80.6) is already hidden for the Mistral model because pi treats an undefinedthinkingLevelMap.maxentry as unsupported. So no breakage occurs.The one actionable improvement: the extension explicitly enumerates every thinking level with its mapping, but
max(introduced in 0.80.6) is implicitly absent. Addingmax: nullrestores that explicitness/robustness (same runtime result, but documents intent and guards against future logic changes). Let me make that change and open a PR.I see the comment got duplicated. Let me clean that up into a single coherent comment block.Now let me re-run the type-check to confirm the change still compiles cleanly.Type-check passes. Let me verify the git diff and open the PR.Let me remove thepackage-lock.jsonartifact (not tracked in this repo) so only the intended change is committed.Only the intended change remains. Now let me open the PR.I validated thenvidiaextension against pi v0.80.10 and opened PR #19 with the one improvement it needed.What I found
I read the full
0.80.4 → 0.80.10changelog for anything touching model management via extensions:maxthinking level (abovexhigh). This is the one that's directly relevant.refreshModels(context)dynamic-discovery hook and madeModelRegistry.refresh()async — both only affect extensions that opt in / call them directly.For
extensions/nvidia.tsspecifically:pi.registerProvider(...)with a static model list and never touchesrefresh()or the new optional features.0.80.10types (tsc --noEmit --strict→ exit 0).thinkingLevelMapisPartial, thecost/compatshapes are unchanged.maxlevel already behaves correctly at runtime — pi treats an unsetthinkingLevelMap.maxas unsupported, so it's already hidden for Mistral (verified: supported levels come out as['minimal', 'high']).The change
The extension deliberately lists every thinking level with its mapping, but
max(added in 0.80.6) was implicitly absent. PR #19 addsmax: nulland clarifies the comment — identical runtime result, but it documents intent and hardens against any future change to how pi resolves an unset map entry. MiniMax (non-reasoning) needed no change.View action run | Model: zai/glm-5.2 (thinking: max) | Time: 6m 20s | Tokens: 1.3M | Pi SDK v0.80.7 | Action v2.26.0