chore(release): cut amplifier-agent 0.14.0 - #137
Merged
Conversation
Engine-only release. Adds the gemini and vllm provider modules as valid provider.module host-config values, and carries the Windows durability fixes for the serve lifecycle and UTF-8/BOM file reads. No wrapper release: wrappers/typescript and wrappers/python-py are unchanged since wrapper-v0.7.1. PROTOCOL_VERSION stays at 0.3.0, so no cross-component coordination is required. 🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Engine-only release:
amplifier-agent0.13.0 -> 0.14.0, taggedv0.14.0.What this releases
amplifier-agent(engine)v0.14.0amplifier-agent-tswrappers/typescript/unchanged sincewrapper-v0.7.1amplifier-agent-pywrappers/python-py/unchanged, still never publishedMinor rather than patch:
geminiandvllmare new validprovider.modulevalues and new module entries inbundle.md. That is new surface, not a fix.User-visible change
Two new providers.
provider.module: "gemini"talks to Google's Gemini API as a normal key-based provider (GOOGLE_API_KEY, orGEMINI_API_KEYas the module's own fallback; default modelgemini-2.5-flash).provider.module: "vllm"integrates a self-hosted or remote vLLM server for open-weight models, speaking vLLM's OpenAI-compatible Responses API rather than the Chat Completions wire. Its credential is an endpoint, not a key:VLLM_BASE_URLis required andVLLM_API_KEYis optional, since a local vLLM server commonly needs none.servelifecycle no longer misbehaves on Windows. Three POSIX assumptions were wrong there. Most consequentially,os.kill(pid, 0)is not a benign liveness probe on Windows: CPython mapsCTRL_C_EVENTtoGenerateConsoleCtrlEvent, and becauseCTRL_C_EVENT == 0, signal 0 delivered a real console Ctrl+C to the target's process group —serve statuscould interrupt the very server it was reporting on. Liveness now usesOpenProcess/WaitForSingleObject.SIGKILLescalation falls back toSIGTERM, and detached restart usesDETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP. The 0600/0700 state-file permission verification is skipped on Windows, where it could never pass and previously refused to writeserve.jsonat all;chmodis still applied and POSIX enforcement still fails closed.Windows-authored files are read as UTF-8 with an optional BOM. A BOM-prefixed agent
.mdpreviously spawned a sub-agent with the wrong tools, or none, silently — the surviving U+FEFF made thestartswith("---")frontmatter check false, sotools,hooks,model_role, andmetawere dropped from the overlay with no error. A BOM-prefixedcredentials.jsonwas reported as corrupt when it was valid, and a genuinely non-UTF-8 one killed the CLI with a raw traceback out of a handler that caught onlyJSONDecodeError.Windows installs need
git config --global core.longpaths truefirst, documented indocs/INSTALL.md. Committed eval fixtures reach ~178-character paths, anduv tool install --from git+...clones into a deep temp build dir, pushing them pastMAX_PATH; the checkout fails before the build starts.Scope of impact
Engine-only. No wrapper or SDK changes, so nothing cross-component needs to land alongside this.
PROTOCOL_VERSIONdid not move. It stays at0.3.0, so no wrapper pin, conformance fixture, or downstream SDK needs coordination.Downstream:
amplifier-app-opencodefloor moves to 0.14.0MIN_AGENT_VERSIONgoes 0.12.0 -> 0.14.0. The floor is a requirement statement, not a mirror of the latest release, and this release clears that bar on its own merits: opencode drivesserve, and the Windows lifecycle fixes above are directly opencode-observable rather than engine-internal. The UTF-8/BOM credential reads and the new providers surfacing throughGET /v1/modelsreinforce it.That bump is not part of this PR. It is executed downstream after
v0.14.0is tagged, becauseAGENT_PINNED_REFresolves tof"v{MIN_AGENT_VERSION}"and pinning to a tag that does not yet exist would break launch-time self-heal. Note the cost when it lands:AGENT_HARD_FLOORtracks the minimum, so every opencode user below it is force-reinstalled rather than self-updated.amplifier-app-paperclipandamplifier-app-nanoclawcaret-pinamplifier-agent-ts, which this release does not touch.Gate
make verifyis green: lint,pyright src/(0 errors), codegen staleness, cross-manifest versions, wheel contents (6/6 checks againstamplifier_agent-0.14.0-py3-none-any.whl), 10/10 conformance parity fixtures, and 121 TypeScript wrapper tests.Merging does not publish
Merging this PR publishes nothing. The release happens when
v0.14.0is pushed as a tag, which triggers the PyPI upload and the GitHub Release. Sinceinstall.shandamplifier-agent updateinstall from git and resolve "latest" through the GitHub Releases API, that tag is what users actually receive.