chore: release v1.40.0 - #420
Merged
Merged
Conversation
Cuts the accumulated Unreleased work: 72 non-merge commits since v1.39.0, 42 of them feat/fix. Minor, not patch — two additive features, no breaking changes. ### Added - GET /__aimock/fixtures — read-only fixture-count introspection (#407) - Recorded OpenAI/OpenRouter token usage, including OpenRouter usage.cost (#368) - AG-UI subagent lifecycle events + subagentRunId attribution (#391) ### Changed - The AG-UI drift CI lane runs every agui-*.drift.ts guard, not one file ### Fixed - X-AIMock-Strict is parsed case-insensitively, whitespace tolerated (#408) - Non-websocket upgrade probes no longer 404, and the body survives on every supported Node (#410, #418) - The AG-UI drift collector no longer reports clean for an unreadable failure - The AG-UI drift canonical parser no longer drops a field after a trailing comment - openrouter is no longer logged as an unknown SSE provider when recording Version surfaces bumped — seven, verified by grepping the repo for the old string rather than working from a list (zero occurrences remain): package.json, charts/aimock/Chart.yaml appVersion, .claude-plugin/plugin.json, .claude-plugin/marketplace.json (the `^` range under plugins[0].source), packages/aimock-pytest/src/aimock_pytest/_version.py (the npm pin the pytest harness downloads by default), docs/index.html's version badge, and packages/aimock-pytest/README.md's documented default. packages/aimock-pytest/pyproject.toml stays at 0.5.3 — that is the Python package's own version, released on its own PyPI cadence. README gains a Recorded-token-usage-and-cost bullet: the feature list enumerates record/replay capabilities individually, so a user-visible one landing without an entry there is a real omission. The new control-API route needs no README line — the README documents no /__aimock/* routes at all; it is covered in docs/control-api. package.json's description is deliberately NOT hand-synced: publish-release.yml rewrites it from the README subtitle in the runner before npm publish, without committing, which is why git and the npm page differ by design.
commit: |
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.
Cuts the accumulated
[Unreleased]work. 72 non-merge commits since v1.39.0, 42 of themfeat:/fix:— minor, not patch: two additive features, no breaking changes.Prepared, not merged.
publish-release.ymlfires on push-to-main, so merging this publishes to npm, tags, cuts the GitHub Release, dispatches the Docker build, and posts to#oss-alerts. Merge when you want it live.What ships
Added —
GET /__aimock/fixturesfixture-count introspection (#407) · recorded OpenAI/OpenRouter token usage incl. OpenRouterusage.cost(#368) · AG-UI subagent lifecycle events +subagentRunIdattribution (#391)Fixed —
X-AIMock-Strictparsed case-insensitively with whitespace tolerated (#408) · non-websocket upgrade probes no longer 404 and the body survives on every supported Node (#410 → #418) · AG-UI drift collector no longer reports clean for an unreadable failure · AG-UI canonical parser no longer drops a field after a trailing comment ·openrouterno longer logged as an unknown SSE provider when recordingChanged — the AG-UI drift CI lane runs every
agui-*.drift.tsguard rather than one hardcoded fileVersion surfaces — seven
Found by grepping the repo for
1.39.0rather than working from a checklist, because the checklist is what went wrong at v1.34.0 (four of six surfaces shipped stale). Zero occurrences of the old string remain:package.jsonversioncharts/aimock/Chart.yamlappVersion.claude-plugin/plugin.jsonversion.claude-plugin/marketplace.json^range underplugins[0].sourcepackages/aimock-pytest/.../_version.pyAIMOCK_VERSION— the npm pin the pytest harness downloads by defaultdocs/index.htmlpackages/aimock-pytest/README.md--aimock-versiondefaultTwo of those (6, 7) aren't in the release SOP's list but carry the version string and would have shipped stale.
packages/aimock-pytest/pyproject.tomlstays at 0.5.3 — that's the Python package's own version, on its own PyPI cadence.Two things I checked rather than assumed
Bumping
_version.pyin the release commit is safe.publish-pytestrunsnpm view @copilotkit/aimock@$AIMOCK_VERSION, which would fail against an unpublished version — but it'sneeds: [build, publish]and gated onneeds.publish.result == 'success', so 1.40.0 is on npm by the time it reads the pin. No chicken-and-egg.package.json.descriptionis deliberately not hand-synced. It diverges from the README subtitle in git, which looks like the drift the SOP warns about. It isn't:publish-release.ymlrewrites it from the README subtitle in the runner beforenpm publish, without committing. Editing it here would fight the workflow.README
Gains a Recorded token usage and cost bullet. The feature list enumerates record/replay capabilities individually (timing-aware replay, multi-turn, ordered blocks), so a user-visible one landing without an entry is a real omission. The new control-API route needs no README line — the README documents no
/__aimock/*routes at all; that lives indocs/control-api.Verification
typecheck(all three configs) exit 0 ·buildexit 0 · release/publish-pin/drift-script workflow tests 44 passing · prettier clean · commit body wrapped ≤100 cols for commitlint.Full-suite note: five tests failed on a first run and all five passed in isolation —
cli.test.tsSIGTERM,multimedia.test.tstranscription frame scheduling,proxy-buffer-cap.test.ts, and bothpublish-pin-workflow.test.tsreal-pip cases. All wall-clock or network-bound, and none reachable from a version-string change. CI is the arbiter.🤖 Generated with Claude Code
https://claude.ai/code/session_01Y445N6QQBeAdiLcEvEpqGe