Files
composiohq__composio/ts/scripts/changeset-release.sh
Alberto Schiabel 20aaa95c96 ci(ts): verify packed provider compatibility (#4355)
This PR:

- adds a clean consumer harness that packs core, its internal JSON
Schema dependency, and all ten TypeScript providers
- verifies tarball contents, npm installation, named public exports,
consumer typechecking, provider construction, and a credential-free
`wrapTool` conversion
- covers the current workspace core, one verified minimum-core lane per
provider, and the packed workspace core presented as `1.0.0-beta.0`
- preserves existing 0.x minimum peer ranges while recording the
verified floors separately for the future breaking release
- additively accepts core 1.0 prereleases without claiming stable 1.x
support yet
- widens the Anthropic and OpenAI Agents peer ranges to include the
upstream versions already used by this repository
- runs the gate in TypeScript CI and immediately before Changesets
publishing

The release guard fails before publication and its regression test
verifies build -> compatibility -> publish ordering plus failure
propagation.

## Non-breaking scope

No public API is removed or renamed, and the existing 0.x core peer
floors remain unchanged. All peer-range changes are additive. The gate
reports the nine floor corrections that should be made with the planned
breaking release.

## Validation

- `pnpm run check:provider-compatibility` (12 packed consumer lanes)
- `pnpm run test:provider-compatibility`
- `pnpm run test:release-workflow`
- `pnpm run build:packages` (19 packages)
- focused TypeScript compile and Oxlint checks
- Prettier, Changesets validation, and `git diff --check`
2026-09-07 12:33:53 +02:00

27 lines
833 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# changesets/action v2 reads Changesets v3's NDJSON events from
# CHANGESETS_OUTPUT. The CLI binary workflow owns @composio/cli GitHub Releases
# because those releases must include platform binary assets. Remove only that
# package's git-tag event so changesets/action publishes and releases every
# other package without creating an empty @composio/cli GitHub Release.
filtered_output_file=$(mktemp)
trap 'rm -f "$filtered_output_file"' EXIT
pnpm run build:packages
pnpm run check:provider-compatibility
set +e
pnpm changeset publish
status=$?
set -e
if [ -n "${CHANGESETS_OUTPUT:-}" ] && [ -f "$CHANGESETS_OUTPUT" ]; then
jq -c 'select(.packageName != "@composio/cli")' "$CHANGESETS_OUTPUT" >"$filtered_output_file"
mv "$filtered_output_file" "$CHANGESETS_OUTPUT"
fi
exit "$status"