diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..e5b6d8d --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..aa5febb --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.2/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "develop", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.changeset/perky-rooms-tan.md b/.changeset/perky-rooms-tan.md new file mode 100644 index 0000000..a845151 --- /dev/null +++ b/.changeset/perky-rooms-tan.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index d0c24e9..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaVersion: 2018, - sourceType: 'module', - }, - plugins: ['@typescript-eslint'], - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'], - ignorePatterns: ['node_modules/'], - rules: { - // Other rules... - "@typescript-eslint/no-var-requires": "off", - 'no-constant-condition': 'off', - "@typescript-eslint/no-explicit-any": "warn", - '@typescript-eslint/no-unused-vars': [ - 'error', // or 'off' to disable entirely - { - argsIgnorePattern: '^_', // Ignore unused function arguments that start with an underscore - varsIgnorePattern: '^_' // Ignore unused variables that start with an underscore - } - ], - } -}; diff --git a/.github/workflows/changeset-check.yml b/.github/workflows/changeset-check.yml new file mode 100644 index 0000000..2564fc1 --- /dev/null +++ b/.github/workflows/changeset-check.yml @@ -0,0 +1,36 @@ +name: Changeset Check + +on: + pull_request: + branches: [master, develop] + +jobs: + changeset: + name: Require changeset + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Check for changeset + run: | + echo "Checking for changeset files in this PR..." + echo "If this fails, run 'pnpm changeset' to add a changeset describing your changes." + echo "For changes that don't need a changelog entry (docs, CI, refactoring), use 'pnpm changeset --empty'." + pnpm changeset status --since=origin/${{ github.base_ref }} diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index c2cf56a..4e5e785 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -16,13 +16,30 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 + - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: "20" + - name: Get pnpm store directory + id: pnpm-cache + run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT + + - name: Cache pnpm store + uses: actions/cache@v4 + with: + path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - name: Install dependencies - run: npm install -g pnpm && pnpm i + run: pnpm install --frozen-lockfile - name: Linting run: pnpm lint diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 639c434..48d4332 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -21,6 +21,17 @@ jobs: - name: Install dependencies run: npm install -g pnpm && pnpm i + - name: Verify changesets are consumed + if: startsWith(github.ref, 'refs/tags/') + run: | + pnpm changeset version + if ! git diff --quiet; then + echo "Error: 'pnpm changeset version' produced uncommitted changes on a tag build." + echo "Please run 'pnpm changeset version' locally, commit the resulting changes, and re-create the tag." + git diff + exit 1 + fi + - name: Build run: pnpm build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4004561..bf63058 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,8 +50,8 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Run tests - run: pnpm test + - name: Run tests with coverage threshold + run: pnpm test:ci - name: Build project run: pnpm build diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..71e051f --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +pnpm lint-staged +pnpm typecheck diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4cc008c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# @offckb/cli + +## Changelog + +All notable changes to this project will be documented in this file. +This file is automatically updated by [changesets](https://github.com/changesets/changesets). diff --git a/docs/develop.md b/docs/develop.md index bf9657c..e8048d3 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -1,39 +1,300 @@ -## Development +# Development Guide -### Update built-in scripts +This is the **single source of truth** for all development workflows in OffCKB. -required +## Table of Contents +- [Development Guide](#development-guide) + - [Table of Contents](#table-of-contents) + - [Local Development Setup](#local-development-setup) + - [Prerequisites](#prerequisites) + - [Clone \& Install](#clone--install) + - [Run in Development Mode](#run-in-development-mode) + - [Build for Production](#build-for-production) + - [Common Commands](#common-commands) + - [Code Architecture](#code-architecture) + - [Branch Management](#branch-management) + - [PR Workflow](#pr-workflow) + - [Changesets (Changelog)](#changesets-changelog) + - [When to create a changeset](#when-to-create-a-changeset) + - [How to create a changeset](#how-to-create-a-changeset) + - [Empty changesets](#empty-changesets) + - [How changesets are consumed](#how-changesets-are-consumed) + - [Release Process](#release-process) + - [Standard Release (to npm `latest`)](#standard-release-to-npm-latest) + - [Canary Release (to npm `canary`)](#canary-release-to-npm-canary) + - [Testing](#testing) + - [Conventions](#conventions) + - [What to test](#what-to-test) + - [Coverage](#coverage) + - [Updating Built-in CKB Scripts](#updating-built-in-ckb-scripts) + - [Updating Chain Config](#updating-chain-config) + - [Updating Templates](#updating-templates) + - [Updating CKB WASM Debugger](#updating-ckb-wasm-debugger) + +--- + +## Local Development Setup + +### Prerequisites + +- Node.js >= 20.0.0 +- pnpm (install via `npm install -g pnpm`) + +### Clone & Install + +```sh +git clone --recurse-submodules https://github.com/ckb-devrel/offckb.git +cd offckb +pnpm install +``` + +> If you already cloned without `--recurse-submodules`, run `git submodule update --init --recursive`. + +### Run in Development Mode + +```sh +pnpm start +# This runs ts-node-dev with hot-reload on src/cli.ts +``` + +### Build for Production + +```sh +pnpm build +# tsc → ncc bundle → build/index.js +``` + +--- + +## Common Commands + +| Command | Description | +|-----------------------|----------------------------------------------| +| `pnpm start` | Run CLI in dev mode (ts-node-dev, hot-reload)| +| `pnpm build` | Build production bundle to `build/` | +| `pnpm lint` | Run ESLint on `src/**/*.ts` | +| `pnpm lint:fix` | Run ESLint with auto-fix | +| `pnpm fmt` | Format code with Prettier | +| `pnpm typecheck` | TypeScript type check (`tsc --noEmit`) | +| `pnpm test` | Run unit tests (Jest) | +| `pnpm test:watch` | Run tests in watch mode | +| `pnpm test:coverage` | Run tests with coverage report | +| `pnpm test:ci` | Run tests with coverage (CI mode) | +| `pnpm changeset` | Create a changeset file for your PR | +| `pnpm clean` | Remove `dist/`, `build/`, `target/` | + +--- + +## Code Architecture + +**Key directories:** + +| Directory | Role | +|-----------|------| +| `src/cli.ts` | Entry point — registers all CLI commands via `commander` | +| `src/cmd/` | Command implementations, one file per CLI command (e.g. `node.ts`, `create.ts`, `deploy.ts`) | +| `src/cfg/` | Configuration: accounts, environment paths, settings | +| `src/sdk/` | CKB SDK wrappers (RPC calls, network utilities) | +| `src/deploy/` | Contract deployment logic (migration, script handling, TOML generation) | +| `src/tools/` | WASM debugger, RPC proxy, transaction dumper | +| `src/tui/` | Terminal UI (blessed-based devnet config editor) | +| `src/templates/` | Project scaffolding template processing | +| `src/util/` | Shared utilities (fs, encoding, logger, validator, etc.) | +| `src/type/` | Shared TypeScript type definitions | +| `ckb/` | Git submodules for CKB smart contract source code, built via `Makefile` | +| `templates/v4/` | Project scaffolding templates shipped with the CLI | +| `build/` | ncc-bundled production output — **never edit directly** | + +**Conventions:** +- Adding a new CLI command: create `src/cmd/.ts`, register it in `src/cli.ts` +- `src/cmd/*` modules should use `src/sdk/` for CKB interaction and `src/util/` for helpers +- Keep `src/type/base.ts` for shared types; command-specific types stay in command files +- Native CKB script binaries live in `ckb/` submodules — modify via `Makefile`, not directly + +--- + +## Branch Management + +| Branch | Purpose | CI | +|--------|---------|----| +| `develop` | Development mainline. All feature/fix branches merge here first. Version is kept up-to-date with bumps. | lint + test (matrix) | +| `master` | Stable release branch. Receives merges from `develop` for formal releases. | lint + test + publish on tag | +| `feature/*` | New feature work. Branch from `develop`, merge back to `develop`. | lint + test | +| `fix/*` | Bug fixes. Branch from `develop`, merge back to `develop`. | lint + test | +| `v0.*.x` | Canary / maintenance branches. Pushes auto-publish canary releases to npm. | canary publish | + +**Normal flow — all changes go through `develop` first:** +``` +feature/* ──→ develop ──→ v0.*.x ──→ canary publish (npm canary tag) + └──→ master ──→ tag v*.*.* ──→ npm publish (latest) +``` + +**Exception — direct commits to `v0.*.x` (skip develop):** +Only for: +- Hotfix that needs immediate canary release +- Legacy/incompatible branches (e.g. v2, v3) that diverge from current `develop` + +``` +fix/* ──→ v0.*.x (direct) ──→ canary publish +``` + +--- + +## PR Workflow + +1. Create a branch from `develop` (e.g. `feature/add-foo` or `fix/bar-crash`) +2. Make your changes +3. Run `pnpm changeset` to generate a changeset file describing the change (**required by CI**) + - For changes that don't need a changelog entry (docs, CI config, pure refactoring), use `pnpm changeset --empty` +4. Commit and push. Pre-commit hooks will automatically run: + - ESLint (with auto-fix) + Prettier on staged `.ts` files + - Prettier on staged template/account files + - TypeScript type check (`tsc --noEmit`) +5. Open a PR to `develop` (or `master` for hotfix) +6. CI must pass: + - **Nodejs CI**: lint + build + format consistency check + - **Test**: unit tests + integration tests (Ubuntu/Windows/macOS) + - **Changeset Check**: verifies a changeset file is present +7. Get code review, then merge + +--- + +## Changesets (Changelog) + +We use [changesets](https://github.com/changesets/changesets) to manage changelog entries and version bumps. + +### When to create a changeset + +**Every PR** must include a changeset file. CI will block the PR otherwise. + +### How to create a changeset + +```sh +pnpm changeset +``` + +This interactive CLI will ask you: +1. **Version bump type**: `patch` (bug fix), `minor` (new feature), `major` (breaking change) +2. **Summary**: A human-readable description of the change (this goes into CHANGELOG.md) + +The command creates a markdown file in `.changeset/` — commit it with your PR. + +### Empty changesets + +For PRs that don't affect the published package (documentation, CI, internal refactoring): + +```sh +pnpm changeset --empty +``` + +This creates a changeset that satisfies CI but won't add a CHANGELOG entry or bump the version. + +### How changesets are consumed + +During the [release process](#release-process), `pnpm changeset version` reads all accumulated changeset files, determines the version bump, updates `package.json` version and `CHANGELOG.md`, then deletes the consumed changeset files. + +--- + +## Release Process + +### Standard Release (to npm `latest`) + +1. Ensure `develop` is stable and all target PRs are merged +2. On `develop`, run changeset version to consume accumulated changesets: + ```sh + pnpm changeset version + ``` + This consumes all `.changeset/*.md` files, updates `CHANGELOG.md` and bumps `package.json` version +3. Commit the version bump: + ```sh + git add . + git commit -m "chore: release v$(node -p 'require(\"./package.json\").version')" + ``` +4. Merge `develop` into `master` +5. On `master`, create and push the tag: + ```sh + git tag v$(node -p 'require("./package.json").version') + git push origin master --tags + ``` +6. The `Publish on Tag` workflow automatically publishes to npm + +### Canary Release (to npm `canary`) + +Merge `develop` into the target `v0.*.x` branch (or push directly for hotfix/legacy cases). The `Canary release on new commit` workflow will: +- Auto-bump version with a canary prerelease suffix (e.g. `0.4.5-canary-abc1234`) +- Publish to npm under the `canary` tag + +> **Note:** Direct commits to `v0.*.x` (bypassing develop) should only be used for hotfixes or legacy branches that are incompatible with current `develop`. + +--- + +## Testing + +### Conventions + +- Test files: `*.test.ts` +- Location: `tests/` directory (or `src/**/__tests__/` for co-located tests) +- Framework: Jest with ts-jest +- Run: `pnpm test` + +### What to test + +- **New features/fixes must include tests** +- Priority for coverage improvement: + 1. Pure logic modules: `src/util/`, `src/cfg/`, `src/scripts/`, `src/deploy/` + 2. Command logic: `src/cmd/*` (mock CKB node / file system as needed) + 3. Template processing: `src/templates/` +- Integration tests: `scripts/create-test.sh` (runs full create → build → test cycle) + +### Coverage + +- CI enforces a minimum coverage threshold (currently 10% statements) +- The threshold will be raised as tests are added +- View coverage locally: `pnpm test:coverage` then open `coverage/index.html` +- Coverage is uploaded to Codecov on CI (Ubuntu only) + +--- + +## Updating Built-in CKB Scripts + +**Prerequisites:** - rust/cargo -- capsule https://github.com/nervosnetwork/capsule/releases +- [capsule](https://github.com/nervosnetwork/capsule/releases) - docker -update submodule inside `ckb` and then run +Update the relevant submodule inside `ckb/`, then run: ```sh make all ``` -### Update chain config +See `Makefile` for individual targets: `omnilock`, `anyone-can-pay`, `xudt`, `spore`, `ckb-js-vm`, `nostr-lock`, `pw-lock`, `secp256k1_multisig_v2`. + +--- + +## Updating Chain Config -edit the things in `ckb/devnet` +Edit files in `ckb/devnet/`. -All the script configs are generated by `ckb list-hashes` so you don't need to care about it. +All script configs are generated by `ckb list-hashes` — you don't need to manually maintain script hashes. -### Update templates +--- -edit the things in `templates/v${version}` +## Updating Templates -## Update CKB wasm debugger +Edit files in `templates/v4/`. Template files use `.template` extension and are processed by `src/templates/processor.ts`. +--- -required +## Updating CKB WASM Debugger +**Prerequisites:** - rust/cargo -- add wasm32-wasip1 target via `rustup target add wasm32-wasip1` -- on linux, `sudo apt install gcc-multilib` +- wasm32-wasip1 target: `rustup target add wasm32-wasip1` +- On Linux: `sudo apt install gcc-multilib` -update the `ckb-standalone-debugger` submodule and run: +Update the `ckb-standalone-debugger` submodule, then run: ```sh make ckb-debugger diff --git a/jest.config.js b/jest.config.js index 6e48210..07a73c1 100644 --- a/jest.config.js +++ b/jest.config.js @@ -12,6 +12,11 @@ module.exports = { ], coverageDirectory: 'coverage', coverageReporters: ['text', 'lcov', 'html'], + coverageThreshold: { + global: { + statements: 10, + }, + }, moduleNameMapper: { '^@/(.*)$': '/src/$1', }, diff --git a/package.json b/package.json index e199324..6b5b14a 100644 --- a/package.json +++ b/package.json @@ -39,23 +39,25 @@ "fmt": "prettier --write '{src,templates,account}/**/*.{js,jsx,ts,tsx,md,json}'", "test": "jest", "test:watch": "jest --watch", - "test:coverage": "jest --coverage" - }, - "husky": { - "hooks": { - "pre-commit": "lint-staged" - } + "test:coverage": "jest --coverage", + "test:ci": "jest --coverage --ci", + "typecheck": "tsc --noEmit", + "changeset": "changeset", + "version-packages": "changeset version", + "release": "changeset publish", + "prepare": "husky" }, "lint-staged": { - "{src,templates,account}/**/*.{js,jsx,ts,tsx,md,json}": "prettier --ignore-unknown --write" - }, - "eslintConfig": { - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended" + "src/**/*.ts": [ + "eslint --fix", + "prettier --write" + ], + "{templates,account}/**/*.{js,jsx,ts,tsx,md,json}": [ + "prettier --ignore-unknown --write" ] }, "devDependencies": { + "@changesets/cli": "^2.29.8", "@types/adm-zip": "^0.5.5", "@types/blessed": "0.1.27", "@types/jest": "^30.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 282e098..86cced1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -57,6 +57,9 @@ importers: specifier: ^3.17.0 version: 3.17.0 devDependencies: + '@changesets/cli': + specifier: ^2.29.8 + version: 2.29.8(@types/node@20.17.24) '@types/adm-zip': specifier: ^0.5.5 version: 0.5.7 @@ -271,6 +274,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} @@ -286,6 +293,61 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@changesets/apply-release-plan@7.0.14': + resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} + + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.29.8': + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} + hasBin: true + + '@changesets/config@3.1.2': + resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.3': + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + + '@changesets/get-release-plan@4.0.14': + resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.2': + resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.6': + resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@ckb-ccc/core@1.5.3': resolution: {integrity: sha512-/W7SYbygBateN6odqkMhQlkoQFs+45pJ7hYZYEaEpRdF6DjU7sIOvVSkw3qXiUOK37b2qAWJj3I8CJQbesKpng==} @@ -629,6 +691,12 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@modelcontextprotocol/sdk@1.27.1': resolution: {integrity: sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==} engines: {node: '>=18'} @@ -752,6 +820,9 @@ packages: '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.17.24': resolution: {integrity: sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==} @@ -1011,6 +1082,10 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -1117,6 +1192,10 @@ packages: bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1258,6 +1337,10 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + ci-info@4.3.1: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} @@ -1418,6 +1501,10 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -1473,6 +1560,10 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -1613,6 +1704,9 @@ packages: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1700,6 +1794,14 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -1831,6 +1933,10 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + human-id@4.1.3: + resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} + hasBin: true + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -1944,10 +2050,18 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -2155,6 +2269,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2199,6 +2316,9 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -2310,6 +2430,10 @@ packages: engines: {node: '>=10'} hasBin: true + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2396,6 +2520,13 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -2412,6 +2543,10 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -2419,6 +2554,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2477,6 +2615,10 @@ packages: engines: {node: '>=0.10'} hasBin: true + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} @@ -2497,6 +2639,11 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + prettier@3.5.3: resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} engines: {node: '>=14'} @@ -2521,6 +2668,9 @@ packages: resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2535,6 +2685,10 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -2696,6 +2850,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -2785,6 +2942,10 @@ packages: resolution: {integrity: sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==} engines: {node: '>=18'} + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -2929,6 +3090,10 @@ packages: undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -3258,6 +3423,8 @@ snapshots: '@babel/core': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 + '@babel/runtime@7.28.6': {} + '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.28.6 @@ -3283,6 +3450,150 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} + '@changesets/apply-release-plan@7.0.14': + dependencies: + '@changesets/config': 3.1.2 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.7.3 + + '@changesets/assemble-release-plan@6.0.9': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.7.3 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.29.8(@types/node@20.17.24)': + dependencies: + '@changesets/apply-release-plan': 7.0.14 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.2 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-release-plan': 4.0.14 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.6 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.2(@types/node@20.17.24) + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + ci-info: 3.9.0 + enquirer: 2.4.1 + fs-extra: 7.0.1 + mri: 1.2.0 + p-limit: 2.3.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.7.3 + spawndamnit: 3.0.1 + term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' + + '@changesets/config@3.1.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.3 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.3': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.7.3 + + '@changesets/get-release-plan@4.0.14': + dependencies: + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.2 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.6 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.2': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 4.1.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.6': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.2 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.1.3 + prettier: 2.8.8 + '@ckb-ccc/core@1.5.3(typescript@5.8.2)(zod@3.25.76)': dependencies: '@joyid/ckb': 1.1.2(typescript@5.8.2)(zod@3.25.76) @@ -3764,6 +4075,22 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.28.6 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.28.6 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + '@modelcontextprotocol/sdk@1.27.1(zod@3.25.76)': dependencies: '@hono/node-server': 1.19.9(hono@4.12.2) @@ -3914,6 +4241,8 @@ snapshots: '@types/node': 20.17.24 form-data: 4.0.4 + '@types/node@12.20.55': {} + '@types/node@20.17.24': dependencies: undici-types: 6.19.8 @@ -4138,6 +4467,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -4251,6 +4582,10 @@ snapshots: bech32@2.0.0: {} + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + binary-extensions@2.3.0: {} bindings@1.5.0: @@ -4415,6 +4750,8 @@ snapshots: chownr@3.0.0: {} + ci-info@3.9.0: {} + ci-info@4.3.1: {} cipher-base@1.0.6: @@ -4564,6 +4901,8 @@ snapshots: depd@2.0.0: {} + detect-indent@6.1.0: {} + detect-newline@3.1.0: {} diff@4.0.4: {} @@ -4616,6 +4955,11 @@ snapshots: encodeurl@2.0.0: {} + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + environment@1.1.0: {} error-ex@1.3.4: @@ -4822,6 +5166,8 @@ snapshots: transitivePeerDependencies: - supports-color + extendable-error@0.1.7: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -4911,6 +5257,18 @@ snapshots: fresh@2.0.0: {} + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -5060,6 +5418,8 @@ snapshots: transitivePeerDependencies: - supports-color + human-id@4.1.3: {} + human-signals@2.1.0: {} human-signals@5.0.0: {} @@ -5139,10 +5499,16 @@ snapshots: is-stream@3.0.0: {} + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.19 + is-windows@1.0.2: {} + isarray@2.0.5: {} isexe@2.0.0: {} @@ -5531,6 +5897,10 @@ snapshots: json5@2.2.3: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -5584,6 +5954,8 @@ snapshots: lodash.merge@4.6.2: {} + lodash.startcase@4.4.0: {} + log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 @@ -5680,6 +6052,8 @@ snapshots: mkdirp@1.0.4: {} + mri@1.2.0: {} + ms@2.1.3: {} mute-stream@2.0.0: {} @@ -5749,6 +6123,12 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + outdent@0.5.0: {} + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -5765,10 +6145,16 @@ snapshots: dependencies: p-limit: 3.1.0 + p-map@2.1.0: {} + p-try@2.2.0: {} package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.11 + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -5809,6 +6195,8 @@ snapshots: pidtree@0.6.0: {} + pify@4.0.1: {} + pirates@4.0.7: {} pkce-challenge@5.0.1: {} @@ -5821,6 +6209,8 @@ snapshots: prelude-ls@1.2.1: {} + prettier@2.8.8: {} + prettier@3.5.3: {} pretty-format@30.2.0: @@ -5842,6 +6232,8 @@ snapshots: dependencies: side-channel: 1.1.0 + quansync@0.2.11: {} + queue-microtask@1.2.3: {} range-parser@1.2.1: {} @@ -5855,6 +6247,13 @@ snapshots: react-is@18.3.1: {} + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.2 + pify: 4.0.1 + strip-bom: 3.0.0 + readable-stream@3.6.2: dependencies: inherits: 2.0.4 @@ -6046,6 +6445,11 @@ snapshots: source-map@0.6.1: {} + spawndamnit@3.0.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + sprintf-js@1.0.3: {} stack-trace@0.0.10: {} @@ -6127,6 +6531,8 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 + term-size@2.2.1: {} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -6259,6 +6665,8 @@ snapshots: undici-types@6.19.8: {} + universalify@0.1.2: {} + unpipe@1.0.0: {} unrs-resolver@1.11.1: