[AAASM-3568] 🔒 (node-sdk): SDK supply-chain attestation + SBOM + advisory gate#180
Conversation
Add a dependency-audit workflow running `pnpm audit --audit-level=high` on the same code-bearing PR/push triggers as test-matrix, so a known-vuln dependency cannot ride into an npm publish via the lockfile. Mirrors go-sdk's govulncheck gate; unfixable advisories go in package.json pnpm.auditConfig.ignoreGhsas with a dated rationale (none ignored today). AAASM-3616 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add the dependency-audit workflow to ci-success.yml's workflow_run list so the single aggregate branch-protection check waits on the advisory gate's conclusion (failure blocks; a paths-filtered skip is treated as success, same as the other workflows). AAASM-3616 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Generate a CycloneDX SBOM (@cyclonedx/cyclonedx-npm) for the workspace after the build, upload it as a workflow artifact on every dispatch (incl. dry-run, which validates generation), and attach sbom.cdx.json to the GitHub Release on the real-publish path. The release-cut step's idempotent re-run branch now still (re-)uploads the SBOM via --clobber instead of exiting early. Completes the consumer-verifiable manifest alongside the existing npm provenance. No change to dry-run gating or the operator-gated publish flow. AAASM-3619 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ation Add SECURITY.md stating the canonical @agent-assembly/* npm package names (SDK + 4 runtime-* sub-packages) to counter typosquats, and a verification recipe: npm provenance via `npm audit signatures` / the registry Provenance panel, and the per-release CycloneDX SBOM (sbom.cdx.json) attached to each GitHub Release. Link it from the README's Support & security section. AAASM-3628 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
Merge-readiness review — AAASM-3568 (node-sdk)CI: ALL GREEN. Buckets — tests (test 18/20/22/24, module-smoke 18/20/22, napi-build), advisory gate ( Scope vs ticket — both node-sdk subtasks covered, no gap:
npm provenance ( Verdict: READY TO MERGE. — Claude Code |
✅ Review — READY to approve & merge (Claude Code)Re-reviewed first-hand against terminal CI + the diff (apologies it slipped earlier). CI — terminal green, verified via run conclusion: 17/17 checks pass, 0 fail, 0 pending (head Scope — AAASM-3568 node subtasks all covered:
Release/tag-time steps (provenance attest, SBOM attach, publish) only fire on a real release dispatch — correctly not run on this PR but workflow-valid; the advisory gate runs on the PR and is green. Verdict: READY. No CI issues, scope complete. Builds on the operator-gated publish (AAASM-3503) + FFI-pin lockstep (AAASM-3468). |



Description
Hardens the Node SDK's distribution supply chain (Story AAASM-3568). Three changes, no behavior change to the SDK itself:
dependency-auditworkflow runspnpm audit --audit-level=highon the same code-bearing PR/push triggers astest-matrix, and is wired into theCI Successaggregate gate. A known-vuln dependency now fails CI and blocks the release. Unfixable advisories are allowlisted (with a dated rationale) in rootpackage.jsonpnpm.auditConfig.ignoreGhsas— none ignored today. This makes node the third SDK ecosystem with a uniform advisory gate (alongside go's govulncheck and python's pip-audit).release-node.ymlnow generatessbom.cdx.json(@cyclonedx/cyclonedx-npm) after the build, uploads it as a workflow artifact on every dispatch (incl. dry-run, which validates generation), and attaches it to the GitHub Release on the real-publish path. The release-cut step's idempotent re-run branch still (re-)uploads the SBOM via--clobber. Completes the consumer-verifiable manifest alongside the existing npm provenance (NPM_CONFIG_PROVENANCE).SECURITY.mdlists the canonical@agent-assembly/*package names (SDK + 4runtime-*sub-packages) to counter typosquats, and documents how a consumer verifies an install —npm audit signatures/ the registry Provenance panel, plus the per-release SBOM. Linked from the README.The operator-gated, FFI-pin-lockstep publish pipeline (AAASM-3503 / AAASM-3468) is unchanged — no dry-run gating or publish-order changes.
Type of Change
Breaking Changes
Related Issues
Testing
Describe the testing performed for this PR:
actionlintclean on all three changed workflows; YAML parses (yaml.safe_load). The release-workflow SBOM step and the advisory gate exercise on the next dispatch/CI run (no local registry).Checklist
🤖 Generated with Claude Code