* chore: bump version to 1.4.5 for hotfix
* fix(#1133): honor model_policy on the claude runtime via alias mapping
model_policy (including the anthropic-fable Claude Fable 5 preset) was
silently ignored on the default `claude` runtime: resolveModelInternal
gated the policy branch on `runtime !== 'claude'`, so agents kept
resolving from model_profile and no warning was emitted.
Wire model_policy into the claude path: map the policy-resolved model ID
back to a Claude Code agent alias (claude-fable-5 -> fable, claude-opus-4-8
-> opus, etc.). A value that is already a bare alias is returned as-is; an
ID with no Claude alias warns once to stderr and falls back to the
configured tier alias rather than emitting an unspawnable ID. Non-claude
runtimes return full IDs verbatim (unchanged) and resolveModelForTier
precedence is unchanged.
Authored against the v1.4.4 base (src/core.cts) for the 1.4.5 hotfix
line — NOT next, where this logic lives in src/model-resolver.cts; the
forward-port to next is a separate follow-up.
Closes#1133
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore: promote CHANGELOG for v1.4.5
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Add a Gemini CLI extension package so users can install, update, and
remove GSD through Gemini's own extension lifecycle and have it appear in
`gemini extensions list`:
gemini extensions install https://github.com/open-gsd/gsd-core
gemini extensions update gsd-core
gemini extensions uninstall gsd-core
gemini extensions link /path/to/gsd-core # dev
This mirrors the additive Claude Code plugin manifest (#766): a thin,
version-stamped manifest enforced by an in-repo drift test. The extension
ships the context-file payload (GEMINI.md), loaded into every Gemini
session; slash-command/agent/hook TOML projection into the extension is a
documented follow-up. The manual `npx gsd-core --gemini` installer (which
provides the /gsd:* commands) is unchanged — purely additive, no breaking
change.
- gemini-extension.json: name=binName, version tracks package.json,
description, contextFileName=GEMINI.md (minimal; no mcpServers — gsd
ships no MCP server)
- GEMINI.md: Gemini-session context payload
- package.json: add both artifacts to files[] so they publish
- CONTEXT.md: add "Gemini Extension Package" glossary entry
- docs: USER-GUIDE + install-on-your-runtime how-to
- tests/issue-775-gemini-extension.test.cjs: manifest validity, version
parity with package.json, contextFileName existence, files[] publication
Closes#775
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>