Conversation
396272d to
857f3ab
Compare
adcb8fb to
0b8d6d7
Compare
…subpaths + plumb adcpVersion
- Root package renamed `@adcp/client` → `@adcp/sdk`. Continues from 5.21.x version line; both packages bump together via changesets `linked` config.
- New `packages/client-shim/` publishes `@adcp/client` as a thin re-export of `@adcp/sdk` across all 17 subpaths plus a CLI delegator (`require.resolve('@adcp/sdk/package.json')` + `process.env.ADCP_INVOKED_VIA_SHIM`). Existing `npm install @adcp/client` and `npx @adcp/client@latest …` keep working unchanged.
- Two new SDK subpath umbrellas: `@adcp/sdk/client` (alias of root) and `@adcp/sdk/compliance` (re-exports testing + conformance + compliance-fixtures + signing/testing). TypeScript's TS2308 catches future re-export collisions at compile time; `test/lib/compliance-umbrella.test.js` smoke-tests representative symbols stay visible.
- Workspaces config: `["."`, `"packages/*"]`. The `"."` entry lets the shim resolve the root as a workspace member rather than reaching for the registry. `packageManager: "npm@10.9.7"` pinned + CONTRIBUTING.md notes the npm-only constraint.
- Mass rename of `@adcp/client` → `@adcp/sdk` across skills, docs, JSDoc, examples, test refs, tsconfig paths. `Symbol.for('@adcp/client.*')` global-registry keys deliberately preserved (renaming them would break `instanceof` / brand checks across mixed-version trees).
- README + docs/api badges, migration-doc broken import, and call-adcp-agent SKILL guidance all corrected.
- Release workflow runs `npm deprecate '@adcp/client@<v>' '...'` after each `changeset publish` — surfaces the rename pointer to anyone still installing under the old name. Plugin manifest (`.claude-plugin/plugin.json`) gains an explicit `npm: "@adcp/sdk"` field; the plugin name stays as `adcp-client` to avoid breaking saved user state.
- Shim README documents the deprecation timeline: through 5.x, hard-deprecate at 6.0, removal signal = sustained download-ratio crossover for 2 months + 90-day notice.
- `SingleAgentClient`, `AgentClient`, `ADCPMultiAgentClient`, and `createAdcpServer` accept `adcpVersion?: AdcpVersion | (string & {})`. Default = pinned `ADCP_VERSION`. Each surface exposes `getAdcpVersion()` returning the resolved value.
- `resolveAdcpVersion()` validates at construction: pins whose derived major differs from `ADCP_MAJOR_VERSION` throw `ConfigurationError` with a roadmap-aware message pointing at Stage 3. Within major 3 every accepted pin agrees with the wire's global `adcp_major_version` constant — no silent drift.
- New `parseAdcpMajorVersion(version)` helper handles semver and legacy aliases. Type union `AdcpVersion` derived from `COMPATIBLE_ADCP_VERSIONS` gives editor autocomplete; `(string & {})` preserves forward-compat escape hatch.
- `'3.0.1'` added to `COMPATIBLE_ADCP_VERSIONS`. 18 new tests in `test/lib/adcp-version-option.test.js`.
- CLI `--version` flag (`bin/adcp.js`) prints `@adcp/sdk@<v>` plain, with `(invoked via @adcp/client compat shim)` trailer when invoked through the shim's bin wrapper.
- Stage 3 (per-instance schema/validator selection, lift the cross-major fence, plumb wire `adcp_major_version` per-instance) lands in a follow-up PR.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Five clear-text logging alerts CodeQL re-flagged on the rebased PR head — all pre-existing on main but worth scrubbing while we're here: - TaskExecutor.ts:1288, 1614 — log `error.name` instead of `error.message`. Class name is sufficient for triage; the message can carry agent / OAuth endpoint detail that flowed through transport helpers. - SingleAgentClient.ts:2693 — drop `result.data` from the v2-fallback warning. Replaced with `hasError`/`hasData` booleans so the shape is still obvious without spilling OAuth metadata. - bin/adcp-json-stdout.js:14 — `captureStdoutLogs` now redirects via `console.error.bind(console)` instead of a closure that re-emits args. Same observable behavior, but the bind form doesn't create a fresh log site that CodeQL traces from caller-side data. - bin/adcp.js:3553 — print only the host of the discovered token endpoint, not the full URL. Operators can confirm the discovered realm from host alone; query/path components occasionally carry tenant identifiers. No semantic regressions: all 5409 lib tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…changesets major-bump cascade
ecd9556 to
fc9702f
Compare
…d, run manually post-release)
bokelley
added a commit
that referenced
this pull request
Apr 29, 2026
Pulls 86 commits from main, including the @adcp/client → @adcp/sdk rename (PR #1044). Renamed all decisioning-branch imports / SKILL examples / JSDoc references from @adcp/client/{server,types,testing,telemetry} to @adcp/sdk/{server,types,testing,telemetry}. The @adcp/client compat shim on main keeps existing installs working unchanged; new code uses the canonical @adcp/sdk path. Conflicts resolved: - tsconfig.examples.json: unioned the gcp-kms-signing-provider entry from main with the 5 decisioning-platform sample entries from the branch. - src/lib/types/{core,tools,schemas,enums,inline-enums}.generated.ts: took main's versions (3.0.1 schema cache + paired hand-authored inline-enums.aliases.ts file). - src/lib/server/decisioning/context.ts: FormatID renamed to FormatReferenceStructuredObject upstream (adcp 3.0.1 hoisted inline FormatID into FormatReferenceStructuredObject). 231/231 tests + clean build + sample typecheck CI green.
4 tasks
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.
Summary
This PR delivers Stage 1 + Stage 2 of the multi-version SDK refactor. 5.22.0 minor in lockstep across both packages — fully backwards-compatible for existing consumers.
Stage 1 — package rename + subpath umbrella. Root package renamed
@adcp/client→@adcp/sdk. Old name continues publishing frompackages/client-shim/as a thin re-export of@adcp/sdk. Two new SDK subpath umbrellas added:@adcp/sdk/client(alias of root) and@adcp/sdk/compliance(testing + conformance + compliance-fixtures + signing/testing). Old@adcp/clientimports keep resolving via the shim;npx @adcp/client@latestkeeps working via a CLI delegator.Symbol.for('@adcp/client.*')global-registry keys preserved soinstanceofsurvives mixed-version trees.npm deprecatewired into the release workflow so the rename pointer surfaces at install time.Stage 2 —
adcpVersionconstructor option (plumbing only).SingleAgentClient,AgentClient,ADCPMultiAgentClient, andcreateAdcpServeracceptadcpVersion?: AdcpVersion | (string & {}). Default = pinnedADCP_VERSION. Each surface exposesgetAdcpVersion(). Construction-time validation rejects cross-major pins (throwsConfigurationError); within major 3 every accepted pin agrees with the wire — no silent drift. Stage 3 (per-instance schema/validator selection, lift the fence, plumb wireadcp_major_versionper-instance) lands in a follow-up PR.Test plan
npm run typecheckcleannpm run typecheck:examplescleannpm run build:libcleannpm run format:checkcleannpm run test:lib— 5355/5355 pass, 0 fail, 7 skippednpx changeset status --verboseconfirms both packages bump 5.21.1 → 5.22.0 minor in lockstepnode bin/adcp.js --version→@adcp/sdk@5.21.1ADCP_INVOKED_VIA_SHIM=1 node bin/adcp.js --version→@adcp/sdk@5.21.1 (invoked via @adcp/client compat shim)node_modules/@adcp/sdk -> ../..,node_modules/@adcp/client -> ../../packages/client-shimtest/lib/adcp-version-option.test.js— 18 new tests pass (defaults, valid pins, cross-major rejection, unparseable strings, per-surface validation)test/lib/compliance-umbrella.test.js— 4 new smoke tests pass (representative symbols re-export from each of the 4 source modules)Reviewers
Run by code-reviewer + javascript-protocol-expert + dx-expert + ad-tech-protocol-expert (twice each, before and after the follow-up cleanup pass). All four cleared the change with no remaining blockers.
Migration story for downstream consumers
All subpaths (
/server,/testing,/conformance,/signing, etc.) work under the new name with identical APIs. Mechanicals/@adcp\/client/@adcp\/sdk/gacross imports plus the dependency swap = full migration.🤖 Generated with Claude Code