chore: release package#1591
Merged
Merged
Conversation
1c695de to
3da4af1
Compare
3da4af1 to
cb75665
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@6.14.0
Minor Changes
d8a4dbc: feat(cli): storyboard CI UX improvements — soft-fail, summary file, specialism resolution
Adds three improvements to
adcp storyboardsurfaced by silent CI failures in reference adopter repos:--soft-fail: exit 0 even when storyboards fail, printing aSTORYBOARD FAILURES (N): scenario1, …block to stderr. Eliminates thecontinue-on-error: true/|| truesilent-failure pattern — adopters get "non-blocking but visible" without regressions going unnoticed. Applies to all run modes (capability-driven, bundle,--file,--local-agent, multi-instance, agents-map). Exit 1 (runner crash) and 2 (usage error) are not suppressed.--summary-file [PATH]: write a Markdown run summary to a file after the run. Defaults tostoryboard-result-summary.mdwhenPATHis omitted. Auto-activates when$GITHUB_STEP_SUMMARYis set so the summary appears in the GitHub Actions job summary tab without an extra upload step.adcp storyboard show --specialism <slug>: resolve which storyboards are graded when an agent claims a specialism (e.g.adcp storyboard show --specialism sales-guaranteed). Shows the full scenario list including protocol baseline and universal storyboards, with capability-gating annotations.Patch Changes
6f41b27: Narrow
AgentClient.withSession()so the retained server-sidependingTaskIdonly auto-threads onto the next call when the call is plausibly a continuation of the SAME task — same skill name AND same effectivecontextId. A different skill or a switched contextId signals new work, and the retained handle is stale; sending it produces "Task not found" against spec-compliant A2A sellers (per A2A 0.3.0 §3.4 —Message.taskIdcontinues the parent task). Closes AgentClient.withSession: auto-thread pendingTaskId only when contextId matches the retained task's session #1590.Defense in depth on top of the storyboard-runner reset shipped in fix(storyboard-runner): reset retained A2A session ids per storyboard (#1585) #1588 (storyboard runner: A2A "Task X not found" on completed-task lookups during batch runs #1585). The runner-level fix protects
comply()-style harnesses that own client lifecycle; this SDK-level narrowing protects every adopter who reuses oneAgentClientacross logically distinct conversations without an explicitresetContext()boundary.HITL flows (e.g.,
createMediaBuy→input-required→createMediaBuyresume) match same-skill same-context and continue to thread as before. Caller-suppliedoptions.taskIdalways wins, regardless of skill match.Internally pairs
pendingTaskwith the(contextId, taskName)it was retained under.getPendingTaskId()surface unchanged;resetContext()clears the handle as before.e772ac2: Bump
ADCP_VERSIONto 3.0.7. Pulls in the upstream storyboard fix formedia_buy_seller/measurement_terms_rejected(fix(compliance): measurement_terms_rejected — UUID-aliased idempotency_keys + spec-aligned narrative adcp#4218) — bothcreate_media_buysteps now use$generate:uuid_v4#…aliases instead of hardcoded literals, so each test run mints fresh idempotency keys and the spec-mandatedIDEMPOTENCY_CONFLICTarm no longer fires against long-running seller deployments. Closes adcp-client#1586.Also includes a docs-only refinement to the
list_creativesfiltering type column (accounts: AccountRef[],format_ids: FormatID[],statuses: CreativeStatus) — no schema or wire-format change.COMPATIBLE_ADCP_VERSIONSextended with'3.0.7'for editor autocomplete on theadcpVersionconstructor option. Generated types regenerated; functional schema content is identical to 3.0.6 (this release was docs + storyboard fix only).7a2f05c: test(storyboard): refactor
test/lib/storyboard-cascade-skip-on-skip.test.jsfrom prose-driven scenarios to a(skip_reason × peer_shape × phase_topology)fixture-table matrix (Storyboard tests: refactor cascade-skip-on-skip.test.js to a (skip_reason × peer_shape × topology) matrix #1548)Test-only change. Preserves all 35 historical assertions but reorganizes them as named matrix rows with a coverage-holes assertion at the bottom that fails CI when a new dimension value is introduced and left uncovered. Empty cells in the cube are now structurally visible to reviewers rather than discovered as production bugs (the asymmetric blind spot pattern that PR fix(storyboard): sole stateful step missing_tool no longer trips cascade #1545 fixed). Net line shrink ~41% (2143 → 1256). No runner behavior change.
3229edd: Docs corpus migration: rewrite remaining
createAdcpServerv5 examples to v6createAdcpServerFromPlatformacrossskills/build-seller-agent/,skills/build-decisioning-*/,docs/guides/BUILD-AN-AGENT.md,docs/guides/CONCURRENCY.md,docs/guides/CTX-METADATA-SAFETY.md,docs/guides/account-resolution.md,docs/guides/SIGNING-GUIDE.md,docs/guides/VALIDATE-LOCALLY.md,docs/guides/VALIDATE-YOUR-AGENT.md, anddocs/llms.txt. Closes the corpus drift that left LLM-generated platforms starting from the v5 handler-bag shape despite the v6 surface being GA. Migration guides retain v5 references where the historical context is intentional.6b596e0: test(examples): wire
comply_test_controllerintoexamples/hello_seller_adapter_proposal_mode.tsand add issue-Storyboard examples: add hello-seller-adapter-proposal-mode for sole-stateful-step coverage #1549 invariant assertions to its gate test (Storyboard examples: add hello-seller-adapter-proposal-mode for sole-stateful-step coverage #1549)Test + worked-example change. The proposal-mode reference adapter now declares
compliance_testing.scenariosand shipscomplyTestadapters (seed.media_buy,force.media_buy_status,simulate.delivery) for parity with the other reference seller adapters — relevant when downstream cascade scenarios in the broadersales_proposal_modestoryboard suite drive the controller. The companion gate test (test/examples/hello-seller-adapter-proposal-mode.test.js) adds invariant assertions specific to the SDK behavior PR fix(storyboard): sole stateful step missing_tool no longer trips cascade #1545 introduced: sync_accounts skip carries the sole-stateful-step exemption marker, and downstream phases (brief_with_proposals,refine_proposal,finalize_proposal,accept_proposal) are not cascade-skipped from the setup-phase skip. Closes the example-tier coverage gap noted bynodejs-testing-experton PR fix(storyboard): sole stateful step missing_tool no longer trips cascade #1545. No library behavior change.bd84cc0: Fix A2A "Task not found" on first call of every storyboard after the first when running batch compliance suites (storyboard runner: A2A "Task X not found" on completed-task lookups during batch runs #1585).
comply()shares oneAgentClientacross every storyboard for transport reuse. The client retainspendingTaskIdfrom non-terminal responses (submitted/working/input-required) and auto-threads it into every subsequent A2Amessage/send. Without a per-storyboard reset, a staletask_idfrom a prior storyboard's HITL or working step rode into the next storyboard's first call (typicallyget_products), and spec-compliant sellers correctly returned "Task <uuid> not found" because the buyer was referencing a task it never opened against this seller.The runner now calls
client.resetContext()on every shared client at the start ofexecuteStoryboardPass, re-establishing the documented one-AgentClient-per-conversation boundary at the storyboard boundary. MCP transports are unaffected (no session ids on the wire). Sibling of storyboard runner: A2A error_code validator reads Task.status.state instead of unwrapping DataPart adcp_error #1571, storyboard runner: failed-Task DataPart adcp_error not unwrapped on polling/blocking path (sibling of #1571) #1575, fix(unwrapper): prefer DataPart artifact over top-level JSON-RPC error (sibling of #1575) #1579 — the previous fixes addressed unwrap-layer drops; this one addresses the upstream session-leak that caused the lookups in the first place.2d66e85: fix(framework): remove duplicate
listCreativeFormatsdeclarations onCreativeBuilderPlatform/CreativeAdServerPlatform(chore(framework): sweep typed handler entrypoints for runtime/type signature mismatches (no-account narrow audit) #1384)Both interfaces previously declared
listCreativeFormatstwice — once correctly asNoAccountCtx<TCtxMeta>(matching the dispatch reality that no-account tools may receivectx.account === undefined) and a second time asCtx<TCtxMeta>(claimingaccountnon-optional). TypeScript overload resolution on the implementation site preserved the narrow (so adopters were not silently exposed to the runtime crash DX: accounts.resolve(undefined) returning null silently breaks typed handlers for no-account tools #1327 fixed forpreviewCreative/providePerformanceFeedback), but the duplicate was a footgun for adopters reading the interface and a tripwire for future refactors.Removed the
Ctx-typed declaration on both interfaces, folded the precedence note into the survivingNoAccountCtxdeclaration onCreativeBuilderPlatform, and added regression locks indecisioning.type-checks.tsto prevent the duplicate from regressing.This sweep also re-verified the rest of the typed-handler ctx surface introduced by DX: accounts.resolve(undefined) returning null silently breaks typed handlers for no-account tools #1327:
ctx.agent,ctx.ctxMetadata,ctx.recipes,ctx.handoffToTask,ctx.state.*, andctx.resolve.*all match their dispatch guarantees into-context.ts/from-platform.ts.ctx.authInfo,ctx.emitWebhook, andctx.publishStatusChangeare not onRequestContext(they live on the legacyHandlerContextor as module-level exports) — out of scope for the typed-handler surface.