chore: release package#715
Merged
Merged
Conversation
c92e8e8 to
6a06d78
Compare
6a06d78 to
e9eacd6
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/client@5.8.1
Patch Changes
f61f284: Re-export the storyboard assertion registry (
registerAssertion,getAssertion,listAssertions,clearAssertionRegistry,resolveAssertions, and typesAssertionSpec,AssertionContext,AssertionResult) from@adcp/client/testingso authors of invariantmodules can import them from the documented package entry point. The
underlying module (
./storyboard/assertions) already exported these;only the parent
./testingindex was missing the re-exports. Closesthe gap introduced by feat(storyboard): cross-step assertion registry + runner hooks (adcp#2639) #692.
bdebac9:
refs_resolvescope: canonicalize$agent_urlby stripping transportsuffixes instead of comparing raw target URL to bare agent origins.
Before this fix, storyboards using
scope: { key: 'agent_url', equals: '$agent_url' }silently graded every source refout_of_scopeon MCPand A2A runners, because
$agent_urlexpanded to the runner's targetURL (with
/mcp,/a2a, or/.well-known/agent.jsonsuffixes) whilerefs carried the bare agent URL per AdCP convention. Net effect: the
check degraded from integrity enforcement to a no-op on every MCP agent.
The scope comparator now mirrors
SingleAgentClient.computeBaseUrl:strip
/mcp,/a2a,/sse, and/.well-known/agent[-card].jsonsuffixes; lowercase scheme and host; drop default ports; strip
userinfo, query, and fragment. Path below the transport suffix is
preserved, so sibling agents at different subpaths on a shared host
(e.g.
https://publisher.com/.well-known/adcp/salesvs/.well-known/adcp/creative) remain distinguishable. Closes refs_resolve $agent_url should canonicalize transport path before scope compare #710.bdebac9:
refs_resolve: harden grader-visible observation andactual.missingpayloads against hostile agent responses.
Compliance reports may be published or forwarded to third parties, so
every ref field emitted by the runner is now:
a regex fallback that scrubs
scheme://user:pass@shapes embeddedin non-URL fields. Credentials planted in
agent_urlvalues can nolonger leak through compliance output.
http(s)schemes(e.g.
javascript:,data:,file:) are replaced with a<non-http scheme: …>placeholder so downstream UIs renderingagent_urlas a link cannot inherit a stored-XSS vector.code-point-boundary truncation that preserves surrogate pairs.
observations_truncatedmarker when the cap fires. Metaobservations (
scope_excluded_all_refs,target_paginated)precede per-ref entries so the cap never drops primary signal.
Match and dedup behavior is unchanged: the internal projection used
for ref comparison is kept separate from the sanitized projection used
for user-facing output, so truncation never false-collapses dedup
keys.
refsMatchandprojectRefalso now usehasOwnPropertytoprevent storyboard authors from accidentally drawing match keys from
Object.prototype. Closes refs_resolve: observations payload hygiene (userinfo strip, size caps, escaping) #714.bdebac9:
refs_resolve: emit ascope_excluded_all_refsmeta-observation whena scope filter partitions every source ref out. The integrity check
enforces nothing when no ref falls in-scope; graders previously got a
silent pass. The meta-observation surfaces the structural smell without
changing pass/fail semantics. Suppressed under
on_out_of_scope: 'ignore'(which explicitly opts out of scope warnings). Closes refs_resolve: warn when scope filter excludes 100% of source refs #711.
bdebac9:
refs_resolve: detect paginated current-step targets and demoteunresolved refs to observations instead of failing the check.
Previously, when the target response carried
pagination.has_more: true, any ref legitimately defined on a later page graded asmissing— a false-positive failure against a conformant paginatingseller. The runner now emits a
target_paginatedmeta-observation andreports each would-be-missing ref as an
unresolved_with_paginationobservation, letting the check pass until the spec-level resolution
lands (compliance mode requiring sellers to return everything
referenced by products in a single response). Closes refs_resolve: pagination of list_creative_formats target #712.
c4ff3e6: Skill example refresh to match recent upstream schema changes and fix a brand-rights coverage gap surfaced by the
compliance:skill-matrixdogfood harness:list_creative_formats.renders[]: upstream restructured renders to requireroleplus exactly one ofdimensions(object) orparameters_from_format_id: trueunderoneOf. Updated seller, creative, generative-seller, and retail-media skill examples; flaggedrenders: [{ width, height }]as the canonical wrong shape.get_media_buys.media_buys[]:currencyandtotal_budgetare now required per row. Seller skill example now shows both; added a persistence note (save these fields oncreate_media_buyso subsequent queries can echo them).contextresponse field: schema-typed asobject. Across all 8 skills, rewrote the "Context and Ext Passthrough" section to stop recommendingcontext: args.contextecho (which fabricates string values whenargs.contextis undefined or confused with domain fields likecampaign_context). Explicit guidance: leave the field out of your return —createAdcpServerauto-injects the request's context object; hand-setting a non-object string fails validation and the framework does not overwrite.brand_rights/governance_deniedscenario expects the brand agent to callcheck_governancebefore issuing a license. Addedaccounts: { syncAccounts, syncGovernance }handlers and acheckGovernance()call in theacquireRightsexample, returningGOVERNANCE_DENIEDwith findings propagated from the governance agent.