chore: release package#1749
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
9d5fb6c to
83e3a79
Compare
83e3a79 to
cd8e7b4
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@adcp/sdk@7.4.0
Minor Changes
22f5cd4: feat(testing):
getSeededMediaBuyDeliverybridge callback + nit-test coverage on existing bridges (closes feat(testing): next-phaseTestControllerBridgeseeded callbacks for proxy sellers #1755 phase 1)Adds a sixth opt-in callback to
TestControllerBridge<TAccount>for theget_media_buy_deliveryread path so platform-proxy sellers can seed delivery-snapshot fixtures into conformance storyboards without driving real measurement through the upstream adapter:getSeededMediaBuyDelivery(ctx)→ merged intoget_media_buy_deliveryresponse (dedup bymedia_buy_id, seeded wins on collision — follows the established collision precedent set bymergeSeededMediaBuys/mergeSeededCreatives/mergeSeededAccounts: storyboards seed deliberately, so a seeded fixture for an existingmedia_buy_idis an explicit author override). Same sandbox + resolved-account + controller-present gating as the other bridges.BridgeFromSessionStoreOptionsgains a matchingselectSeededMediaBuyDeliveryselector.After the merge,
aggregated_totalsis recomputed from the merged per-deliverytotalssomedia_buy_count/impressions/spendreflect the merged set (otherwise the response would be wire-incorrect). Policy:impressions,spend,media_buy_count) always recompute.clicks,completed_views,views,conversions,conversion_value) recompute only when every merged delivery populates the field; partial population falls back to the handler's value (no silent under-counting).roas,completion_rate,cost_per_acquisition) recompute only when both inputs recomputed AND divisor is non-zero (noInfinity/NaN).reach,reach_unit,frequency,new_to_brand_rate) keep the handler's value verbatim — not derivable from per-deliverytotals.Also adds regression coverage on the bridges that landed in
7.3.0:getSeededAccountFinancialsnow has an explicit assertion that the resolvedctx.account.account_idwins over the request'saccount.account_idwhen both are present (so fixtures are interchangeable acrossAccountReferencevariants).list_creativesmixed-collision math has explicit coverage: when handler and bridge overlap partially,query_summary.total_matchinggrows only by the non-colliding subset (+= newCount, not+= seededCount).12e4a7f: feat(testing): per-tool seeded callbacks on
TestControllerBridgefor platform-proxy sellers (closes feat(testing): extendTestControllerBridgewith per-tool seeded callbacks (creatives, media-buys, accounts, financials, formats) #1002)TestControllerBridgepreviously exposed onlygetSeededProducts, leaving platform-proxy sellers (DSPs, walled gardens, retail-media networks) without a way to feed seeded fixtures into the read path of every other read tool — storyboard seeds againstseed_creative/seed_media_buywere dead writes when the adapter proxied to upstream APIs.Extends
TestControllerBridge<TAccount>with five opt-in callbacks mirroringgetSeededProducts(post-handler merge, sandbox + resolved-account + controller-present gating, warn-and-drop validation, never throws):getSeededCreatives(ctx)→ merged intolist_creatives(dedup bycreative_id)getSeededMediaBuys(ctx)→ merged intoget_media_buys(dedup bymedia_buy_id)getSeededAccounts(ctx)→ merged intolist_accounts(dedup byaccount_id)getSeededAccountFinancials(ctx)→ replacesget_account_financialsenvelope when seededaccount.account_idmatches the request (singleton response, replace semantics)getSeededCreativeFormats(ctx)→ merged intolist_creative_formats(dedup by canonicalformat_id.agent_url|format_id.id)BridgeFromSessionStoreOptionsgains matchingselectSeeded*selectors so adopters wiring storyboards via the session-store pattern get all bridges in one helper. Per-tool callbacks are omitted from the returned bridge when no selector is provided.Production traffic is unchanged: bridges run only on sandbox-flagged requests against a registered controller.
Patch Changes
8f3511d: Add a server-side guard that fails fast when forked adapter examples still contain
.exampletenant domains outside test or development.ba56164: fix(client): pass
text/event-streamresponses throughenforceSizeLimit(fix(client):enforceSizeLimitshould bypasstext/event-streamresponses #1176)The response-body byte cap was designed for one-shot JSON discovery responses
(
get_adcp_capabilities, agent-card lookup). SSE responses legitimately streamN status frames + a final result frame whose cumulative bytes can exceed any
reasonable cap, but each frame is bounded by protocol-level framing. Bypass the
cap for
text/event-stream(case-insensitive prefix match, covers; charset=utf-8variants). Adopters can now safely set
maxResponseByteson long-lived buyersessions without tearing down legitimate streams.
@adcp/eslint-plugin@0.1.0
Minor Changes
4d54139: feat(eslint-plugin): ship
@adcp/eslint-pluginwithno-credential-read-from-argsrule (feat(eslint-plugin): phase 1 —no-credential-read-from-argsrule in new@adcp/eslint-pluginworkspace #1541)New workspace shipping the first build-time guard against the SDK's AdCP Testing Framework with Authentication, Hierarchical Logging & Security Features #1 adopter
footgun: reading credential-shaped keys off the buyer-supplied
argsbag insideextractContext/synthesizeFromArgsplatform method implementations. Build-timesibling to the SDK's
credentialPolicy: 'authInfo-only'runtime guard — sameregex set (imported from
@adcp/sdk/server'sDEFAULT_CREDENTIAL_PATTERNS),caught earlier. Detection is method-name keyed, not interface-type keyed, so
duck-typed
definePlatformshapes and class methods that don'timplementsthe interface explicitly are both covered. Phase 2 (
adcp doctorsubcommandand suggestion-level
prefer-authinfo-credential-channelrule) tracked in feat(eslint-plugin): phase 1 —no-credential-read-from-argsrule in new@adcp/eslint-pluginworkspace #1541.Patch Changes