├── src ├── utils.ts ├── cli.ts ├── types.ts ├── index.ts └── agent.ts ├── .gitignore ├── tsconfig.json ├── eslint.config.mjs ├── .github ├── dependabot.yml └── workflows │ ├── publish.yml │ └── ci.yml ├── package.json ├── .releaserc.json ├── CLAUDE.md ├── CHANGELOG.md ├── README.md └── pnpm-lock.yaml /src/utils.ts: -------------------------------------------------------------------------------- 1 | export async function* toAsyncIterable(items: T[]): AsyncIterable { 2 | for (const item of items) { 3 | yield item; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { main } from "./index.js"; 4 | 5 | main().catch((error) => { 6 | console.error("[Main] Unhandled error:", error); 7 | process.exit(1); 8 | }); 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules/ 3 | 4 | # Build output 5 | dist/ 6 | 7 | # IDE 8 | .vscode/ 9 | .idea/ 10 | *.swp 11 | *.swo 12 | *~ 13 | 14 | # Logs 15 | *.log 16 | npm-debug.log* 17 | yarn-debug.log* 18 | yarn-error.log* 19 | 20 | # Environment 21 | .env 22 | .env.local 23 | .env.*.local 24 | 25 | # OS 26 | .DS_Store 27 | Thumbs.db 28 | 29 | # TypeScript 30 | *.tsbuildinfo 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "module": "ES2022", 5 | "lib": ["ES2022"], 6 | "moduleResolution": "node", 7 | "outDir": "./dist", 8 | "rootDir": "./src", 9 | "strict": true, 10 | "esModuleInterop": true, 11 | "skipLibCheck": true, 12 | "forceConsistentCasingInFileNames": true, 13 | "resolveJsonModule": true, 14 | "declaration": true, 15 | "declarationMap": true, 16 | "sourceMap": true, 17 | "allowSyntheticDefaultImports": true 18 | }, 19 | "include": ["src/**/*"], 20 | "exclude": ["node_modules", "dist"] 21 | } 22 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import js from "@eslint/js"; 2 | import tseslint from "typescript-eslint"; 3 | import globals from "globals"; 4 | 5 | export default tseslint.config( 6 | js.configs.recommended, 7 | ...tseslint.configs.recommended, 8 | { 9 | languageOptions: { 10 | ecmaVersion: 2020, 11 | sourceType: "module", 12 | globals: { 13 | ...globals.node, 14 | ...globals.es2020, 15 | }, 16 | parserOptions: { 17 | project: "./tsconfig.json", 18 | }, 19 | }, 20 | }, 21 | { 22 | rules: { 23 | "@typescript-eslint/no-explicit-any": "warn", 24 | "@typescript-eslint/explicit-module-boundary-types": "off", 25 | "@typescript-eslint/no-unused-vars": [ 26 | "warn", 27 | { argsIgnorePattern: "^_" }, 28 | ], 29 | }, 30 | }, 31 | { 32 | ignores: ["dist/**", "node_modules/**", "*.config.mjs"], 33 | }, 34 | ); 35 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "npm" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | day: "monday" 8 | time: "04:00" 9 | open-pull-requests-limit: 10 10 | groups: 11 | typescript: 12 | patterns: 13 | - "typescript" 14 | - "@types/*" 15 | eslint: 16 | patterns: 17 | - "eslint" 18 | - "@typescript-eslint/*" 19 | anthropic: 20 | patterns: 21 | - "@anthropic-ai/*" 22 | zed: 23 | patterns: 24 | - "@zed-industries/*" 25 | commit-message: 26 | prefix: "deps" 27 | include: "scope" 28 | 29 | - package-ecosystem: "github-actions" 30 | directory: "/" 31 | schedule: 32 | interval: "weekly" 33 | day: "monday" 34 | time: "04:00" 35 | commit-message: 36 | prefix: "ci" 37 | include: "scope" 38 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | - master 8 | workflow_dispatch: 9 | 10 | permissions: 11 | contents: write 12 | packages: write 13 | issues: write 14 | pull-requests: write 15 | 16 | jobs: 17 | release: 18 | name: Release 19 | runs-on: ubuntu-latest 20 | steps: 21 | - name: Checkout 22 | uses: actions/checkout@v5 23 | with: 24 | fetch-depth: 0 25 | persist-credentials: false 26 | 27 | - name: Setup Node.js 28 | uses: actions/setup-node@v4 29 | with: 30 | node-version: "20.x" 31 | 32 | - name: Install pnpm 33 | uses: pnpm/action-setup@v4 34 | with: 35 | version: 9 36 | run_install: false 37 | 38 | - name: Get pnpm store directory 39 | shell: bash 40 | run: | 41 | echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV 42 | 43 | - name: Setup pnpm cache 44 | uses: actions/cache@v4 45 | with: 46 | path: ${{ env.STORE_PATH }} 47 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} 48 | restore-keys: | 49 | ${{ runner.os }}-pnpm-store- 50 | 51 | - name: Install dependencies 52 | run: pnpm install --frozen-lockfile 53 | 54 | - name: Build 55 | run: pnpm build 56 | 57 | - name: Verify build output 58 | run: ls -la dist/ 59 | 60 | - name: Release 61 | env: 62 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 63 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 64 | run: npx semantic-release 65 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | branches: [main, master] 8 | 9 | jobs: 10 | test: 11 | name: Test and Build 12 | runs-on: ${{ matrix.os }} 13 | strategy: 14 | matrix: 15 | os: [ubuntu-latest, macos-latest, windows-latest] 16 | node-version: [18.x, 20.x, 22.x] 17 | 18 | steps: 19 | - name: Checkout code 20 | uses: actions/checkout@v5 21 | 22 | - name: Setup Node.js ${{ matrix.node-version }} 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version: ${{ matrix.node-version }} 26 | 27 | - name: Install pnpm 28 | uses: pnpm/action-setup@v4 29 | with: 30 | version: 9 31 | run_install: false 32 | 33 | - name: Get pnpm store directory 34 | shell: bash 35 | run: | 36 | echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV 37 | 38 | - name: Setup pnpm cache 39 | uses: actions/cache@v4 40 | with: 41 | path: ${{ env.STORE_PATH }} 42 | key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} 43 | restore-keys: | 44 | ${{ runner.os }}-pnpm-store- 45 | 46 | - name: Install dependencies 47 | run: pnpm install --frozen-lockfile 48 | 49 | - name: Run type checking 50 | run: pnpm typecheck 51 | 52 | - name: Run linting 53 | run: pnpm lint 54 | 55 | - name: Build project 56 | run: pnpm build 57 | 58 | - name: Upload build artifacts 59 | if: matrix.os == 'ubuntu-latest' && matrix.node-version == '20.x' 60 | uses: actions/upload-artifact@v4 61 | with: 62 | name: dist 63 | path: dist/ 64 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | // Re-export all types from the agent-client-protocol 2 | export * from "@zed-industries/agent-client-protocol"; 3 | 4 | // Claude Code SDK message types 5 | export interface ClaudeMessage { 6 | type: string; 7 | text?: string; 8 | id?: string; 9 | tool_name?: string; 10 | input?: unknown; 11 | output?: string; 12 | error?: string; 13 | event?: ClaudeStreamEvent; 14 | message?: { 15 | role?: string; 16 | content?: Array<{ 17 | type: string; 18 | text?: string; 19 | // For tool_use blocks in assistant messages 20 | id?: string; 21 | name?: string; 22 | input?: Record; 23 | // For tool_result in user messages 24 | tool_use_id?: string; 25 | content?: string; 26 | }>; 27 | }; 28 | result?: string; 29 | subtype?: string; 30 | } 31 | 32 | export interface ClaudeStreamEvent { 33 | type: string; 34 | content_block?: { 35 | type: string; 36 | text?: string; 37 | }; 38 | delta?: { 39 | type: string; 40 | text?: string; 41 | }; 42 | } 43 | 44 | export interface ClaudeQueryOptions { 45 | maxTurns?: number; 46 | permissionMode?: "ask_on_edit" | "ask_always" | "auto" | "default"; 47 | onStatus?: (status: string) => void; 48 | } 49 | 50 | // type from https://github.com/Yuyz0112/claude-code-reverse/blob/c0d99ea1ab7168c12ba74838cfea355ce10f6c56/results/tools/TodoWrite.tool.yaml#L242-L259 51 | export type ClaudeTodoList = Array<{ 52 | id: string; 53 | content: string; 54 | status: "pending" | "in_progress" | "completed"; 55 | priority?: "high" | "medium" | "low"; 56 | }> 57 | 58 | export interface ACPToolCallRegularContent { 59 | type: "content"; 60 | content: { 61 | type: "text"; 62 | text: string; 63 | }; 64 | } 65 | 66 | export interface ACPToolCallDiffContent { 67 | type: "diff"; 68 | path: string; 69 | oldText: string; 70 | newText: string; 71 | } 72 | 73 | export type ACPToolCallContent = ACPToolCallRegularContent | ACPToolCallDiffContent; 74 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "acp-claude-code", 3 | "version": "0.8.0", 4 | "description": "ACP (Agent Client Protocol) bridge for Claude Code", 5 | "main": "dist/cli.js", 6 | "type": "module", 7 | "bin": { 8 | "acp-claude-code": "dist/cli.js" 9 | }, 10 | "files": [ 11 | "dist", 12 | "README.md", 13 | "LICENSE" 14 | ], 15 | "engines": { 16 | "node": ">=18.0.0" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "git+https://github.com/xuanwo/acp-claude-code.git" 21 | }, 22 | "bugs": { 23 | "url": "https://github.com/xuanwo/acp-claude-code/issues" 24 | }, 25 | "homepage": "https://github.com/xuanwo/acp-claude-code#readme", 26 | "publishConfig": { 27 | "access": "public", 28 | "registry": "https://registry.npmjs.org/" 29 | }, 30 | "scripts": { 31 | "build": "tsc", 32 | "start": "node dist/cli.js", 33 | "dev": "tsx src/cli.ts", 34 | "typecheck": "tsc --noEmit", 35 | "lint": "eslint src", 36 | "format": "prettier --experimental-cli --write .", 37 | "prepublishOnly": "pnpm run build", 38 | "prepare": "pnpm run build" 39 | }, 40 | "keywords": [ 41 | "acp", 42 | "claude", 43 | "claude-code", 44 | "zed", 45 | "ai-agent" 46 | ], 47 | "author": "Xuanwo", 48 | "license": "MIT", 49 | "dependencies": { 50 | "@anthropic-ai/claude-code": "latest", 51 | "@zed-industries/agent-client-protocol": "0.1.2" 52 | }, 53 | "devDependencies": { 54 | "@eslint/js": "9.17.0", 55 | "@semantic-release/changelog": "6.0.3", 56 | "@semantic-release/git": "10.0.1", 57 | "@semantic-release/github": "11.0.5", 58 | "@semantic-release/npm": "12.0.2", 59 | "@types/node": "^24.3.0", 60 | "@typescript-eslint/eslint-plugin": "^8.20.0", 61 | "@typescript-eslint/parser": "^8.20.0", 62 | "conventional-changelog-conventionalcommits": "8.0.0", 63 | "eslint": "^9.17.0", 64 | "globals": "15.14.0", 65 | "prettier": "^3.6.2", 66 | "semantic-release": "24.2.0", 67 | "tsx": "^4.0.0", 68 | "typescript": "^5.0.0", 69 | "typescript-eslint": "8.20.0" 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { AgentSideConnection } from "@zed-industries/agent-client-protocol"; 2 | import { ClaudeACPAgent } from "./agent.js"; 3 | import { Writable, Readable } from "node:stream"; 4 | import { WritableStream, ReadableStream } from "node:stream/web"; 5 | 6 | export async function main() { 7 | // Only log to stderr in debug mode 8 | const DEBUG = process.env.ACP_DEBUG === "true"; 9 | 10 | const log = (message: string) => { 11 | if (DEBUG) { 12 | console.error(`[ACP-Claude] ${message}`); 13 | } 14 | }; 15 | 16 | log("Starting Claude Code ACP Bridge..."); 17 | 18 | try { 19 | // Prevent any accidental stdout writes that could corrupt the protocol 20 | console.log = (...args) => { 21 | console.error("[WARNING] console.log intercepted:", ...args); 22 | }; 23 | 24 | log("Creating ACP connection via stdio..."); 25 | 26 | // Convert Node.js streams to Web Streams 27 | // IMPORTANT: stdout is for sending to client, stdin is for receiving from client 28 | const outputStream = Writable.toWeb( 29 | process.stdout, 30 | ) as WritableStream; 31 | const inputStream = Readable.toWeb( 32 | process.stdin, 33 | ) as ReadableStream; 34 | 35 | // We're implementing an Agent, so we use AgentSideConnection 36 | // First parameter is output (to client), second is input (from client) 37 | new AgentSideConnection( 38 | (client) => new ClaudeACPAgent(client), 39 | outputStream, // WritableStream for sending data to client (stdout) 40 | inputStream, // ReadableStream for receiving data from client (stdin) 41 | ); 42 | 43 | log("Claude Code ACP Bridge is running"); 44 | 45 | // Keep the process alive 46 | process.stdin.resume(); 47 | 48 | // Handle graceful shutdown 49 | process.on("SIGINT", () => { 50 | log("Received SIGINT, shutting down..."); 51 | process.exit(0); 52 | }); 53 | 54 | process.on("SIGTERM", () => { 55 | log("Received SIGTERM, shutting down..."); 56 | process.exit(0); 57 | }); 58 | 59 | // Handle uncaught errors 60 | process.on("uncaughtException", (error) => { 61 | console.error("[FATAL] Uncaught exception:", error); 62 | process.exit(1); 63 | }); 64 | 65 | process.on("unhandledRejection", (reason, promise) => { 66 | console.error( 67 | "[FATAL] Unhandled rejection at:", 68 | promise, 69 | "reason:", 70 | reason, 71 | ); 72 | process.exit(1); 73 | }); 74 | } catch (error) { 75 | console.error("[FATAL] Error starting ACP bridge:", error); 76 | process.exit(1); 77 | } 78 | } 79 | 80 | export { ClaudeACPAgent }; 81 | -------------------------------------------------------------------------------- /.releaserc.json: -------------------------------------------------------------------------------- 1 | { 2 | "branches": ["main", "master"], 3 | "plugins": [ 4 | [ 5 | "@semantic-release/commit-analyzer", 6 | { 7 | "preset": "conventionalcommits", 8 | "releaseRules": [ 9 | { "type": "feat", "release": "minor" }, 10 | { "type": "fix", "release": "patch" }, 11 | { "type": "perf", "release": "patch" }, 12 | { "type": "revert", "release": "patch" }, 13 | { "type": "docs", "scope": "README", "release": "patch" }, 14 | { "type": "build", "scope": "deps", "release": "patch" }, 15 | { "type": "refactor", "release": "minor" }, 16 | { "breaking": true, "release": "major" }, 17 | { "type": "feat", "breaking": true, "release": "major" }, 18 | { "type": "fix", "breaking": true, "release": "major" }, 19 | { "type": "refactor", "breaking": true, "release": "major" }, 20 | { "type": "perf", "breaking": true, "release": "major" } 21 | ] 22 | } 23 | ], 24 | [ 25 | "@semantic-release/release-notes-generator", 26 | { 27 | "preset": "conventionalcommits", 28 | "presetConfig": { 29 | "types": [ 30 | { "type": "feat", "section": "Features", "hidden": false }, 31 | { "type": "fix", "section": "Bug Fixes", "hidden": false }, 32 | { "type": "perf", "section": "Performance", "hidden": false }, 33 | { "type": "revert", "section": "Reverts", "hidden": false }, 34 | { "type": "docs", "section": "Documentation", "hidden": false }, 35 | { "type": "style", "section": "Styles", "hidden": false }, 36 | { 37 | "type": "refactor", 38 | "section": "Code Refactoring", 39 | "hidden": false 40 | }, 41 | { "type": "test", "section": "Tests", "hidden": false }, 42 | { "type": "build", "section": "Build System", "hidden": false }, 43 | { "type": "ci", "section": "CI/CD", "hidden": false }, 44 | { "type": "chore", "section": "Miscellaneous", "hidden": false } 45 | ] 46 | } 47 | } 48 | ], 49 | [ 50 | "@semantic-release/changelog", 51 | { 52 | "changelogFile": "CHANGELOG.md" 53 | } 54 | ], 55 | ["@semantic-release/github", {}], 56 | [ 57 | "@semantic-release/npm", 58 | { 59 | "npmPublish": true 60 | } 61 | ], 62 | [ 63 | "@semantic-release/git", 64 | { 65 | "assets": ["package.json", "pnpm-lock.yaml", "CHANGELOG.md"], 66 | "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" 67 | } 68 | ] 69 | ] 70 | } 71 | -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- 1 | # CLAUDE.md 2 | 3 | This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. 4 | 5 | ## Project Overview 6 | 7 | This is an ACP (Agent Client Protocol) bridge that enables Claude Code to work with Zed editor and other ACP-compatible clients. It wraps the Claude Code SDK to provide ACP protocol compatibility. 8 | 9 | ## Common Development Tasks 10 | 11 | ### Build and Development Commands 12 | 13 | - `pnpm run build` - Build the TypeScript project to dist/ 14 | - `pnpm run dev` - Run in development mode with hot reload using tsx 15 | - `pnpm run typecheck` - Run TypeScript type checking without emitting files 16 | - `pnpm run lint` - Run ESLint on the src/ directory 17 | - `pnpm run start` - Run the built application from dist/ 18 | 19 | ### Testing the ACP Agent 20 | 21 | - Run directly: `node dist/index.js` (after building) 22 | - Run in development: `pnpm run dev` 23 | - Debug mode: Set `ACP_DEBUG=true` environment variable for verbose logging 24 | 25 | ## Architecture 26 | 27 | The project implements the Agent Client Protocol with three main components: 28 | 29 | 1. **Agent (src/agent.ts)** - Core ClaudeACPAgent class that: 30 | - Manages sessions with 1:1 mapping between ACP and Claude sessions 31 | - Handles streaming responses from Claude Code SDK 32 | - Converts between ACP and Claude message formats 33 | - Maps tool calls to appropriate ACP tool kinds 34 | 35 | 2. **Server (src/index.ts)** - Entry point that: 36 | - Initializes the ACP server using stdio transport 37 | - Sets up the ClaudeACPAgent with the ACP client 38 | 39 | 3. **Types (src/types.ts)** - TypeScript interfaces for Claude SDK messages 40 | 41 | ## Key Implementation Details 42 | 43 | ### Session Management 44 | 45 | - Sessions are stored in a Map with random IDs 46 | - Each session tracks `pendingPrompt` and `abortController` 47 | - Cancellation is handled via AbortController 48 | 49 | ### Message Processing 50 | 51 | - Claude SDK messages are processed in `handleClaudeMessage()` 52 | - Tool calls are mapped to ACP tool kinds (read, edit, delete, move, search, execute, think, fetch, other) 53 | - Streaming text is sent as agent_message_chunk updates 54 | 55 | ### Authentication 56 | 57 | - Uses Claude Code's built-in authentication from ~/.claude/config.json 58 | - Users should authenticate via `claude setup-token` before using 59 | 60 | ## Package Management 61 | 62 | - Use `pnpm` for all package management operations 63 | - Install packages with exact versions (no ^ or ~ prefixes) 64 | 65 | ## Important Files 66 | 67 | - **package.json** - Project configuration and scripts 68 | - **tsconfig.json** - TypeScript compiler configuration 69 | - **.eslintrc.json** - ESLint rules configuration 70 | - **dist/** - Compiled JavaScript output (gitignored) 71 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [0.8.0](https://github.com/xuanwo/acp-claude-code/compare/v0.7.2...v0.8.0) (2025-09-02) 2 | 3 | ### Features 4 | 5 | * support image content and resource content ([#62](https://github.com/xuanwo/acp-claude-code/issues/62)) ([d55ac27](https://github.com/xuanwo/acp-claude-code/commit/d55ac27611b249db56840bdac6ad5cb7e0c8b694)) 6 | 7 | ## [0.7.2](https://github.com/xuanwo/acp-claude-code/compare/v0.7.1...v0.7.2) (2025-09-02) 8 | 9 | ### Bug Fixes 10 | 11 | * compatible with cases where priority is empty ([#61](https://github.com/xuanwo/acp-claude-code/issues/61)) ([6d7b34f](https://github.com/xuanwo/acp-claude-code/commit/6d7b34f15a4bfd88e0e8364677bef10ac6b06d97)) 12 | 13 | ## [0.7.1](https://github.com/xuanwo/acp-claude-code/compare/v0.7.0...v0.7.1) (2025-09-02) 14 | 15 | ### Bug Fixes 16 | 17 | * remove maxTurns ([#58](https://github.com/xuanwo/acp-claude-code/issues/58)) ([6cf086c](https://github.com/xuanwo/acp-claude-code/commit/6cf086ce51520f31c0db91f0f9927c28f690f7d7)) 18 | 19 | ## [0.7.0](https://github.com/xuanwo/acp-claude-code/compare/v0.6.0...v0.7.0) (2025-09-02) 20 | 21 | ### Features 22 | 23 | * support tool call diff content ([#57](https://github.com/xuanwo/acp-claude-code/issues/57)) ([29a1776](https://github.com/xuanwo/acp-claude-code/commit/29a1776e4f4f0065467562ed90bbb266e9c72da8)) 24 | 25 | ### Miscellaneous 26 | 27 | * Use pretty name for agent ([#53](https://github.com/xuanwo/acp-claude-code/issues/53)) ([d33c3d6](https://github.com/xuanwo/acp-claude-code/commit/d33c3d653b68f75e5f74bf238b29f905c14f1bf8)) 28 | 29 | ## [0.6.0](https://github.com/xuanwo/acp-claude-code/compare/v0.5.4...v0.6.0) (2025-08-31) 30 | 31 | ### Features 32 | 33 | * support agent plan ([#51](https://github.com/xuanwo/acp-claude-code/issues/51)) ([a5c94d5](https://github.com/xuanwo/acp-claude-code/commit/a5c94d5e91cd35d1b9878ba8c0a7a6065c83faa4)) 34 | 35 | ## [0.5.4](https://github.com/xuanwo/acp-claude-code/compare/v0.5.3...v0.5.4) (2025-08-30) 36 | 37 | ### Bug Fixes 38 | 39 | * add support for pathToClaudeCodeExecutable ([#48](https://github.com/xuanwo/acp-claude-code/issues/48)) ([aa68737](https://github.com/xuanwo/acp-claude-code/commit/aa68737d3b65bbabcb8af8807d4302707cd09ccc)) 40 | 41 | ## [0.5.3](https://github.com/xuanwo/acp-claude-code/compare/v0.5.2...v0.5.3) (2025-08-29) 42 | 43 | ### Bug Fixes 44 | 45 | * **agent:** update loadSession return type to Promise for compatibility ([#46](https://github.com/xuanwo/acp-claude-code/issues/46)) ([2486229](https://github.com/xuanwo/acp-claude-code/commit/248622985953ec3813c65ea628dc375ff3e28190)) 46 | 47 | ## [0.5.2](https://github.com/xuanwo/acp-claude-code/compare/v0.5.1...v0.5.2) (2025-08-28) 48 | 49 | ### Bug Fixes 50 | 51 | * Handle tool_use in assistant messages and tool_result in user messages ([#45](https://github.com/xuanwo/acp-claude-code/issues/45)) ([d585e19](https://github.com/xuanwo/acp-claude-code/commit/d585e19516a13e406c4316d3ce4b7ac7d55e133f)), closes [#43](https://github.com/xuanwo/acp-claude-code/issues/43) 52 | 53 | ## [0.5.1](https://github.com/xuanwo/acp-claude-code/compare/v0.5.0...v0.5.1) (2025-08-28) 54 | 55 | ### Bug Fixes 56 | 57 | * Update package.json entry points to use cli.js ([#32](https://github.com/xuanwo/acp-claude-code/issues/32)) ([6cfb2ba](https://github.com/xuanwo/acp-claude-code/commit/6cfb2ba84fead04a37d9fe0d7e7f062429adad08)) 58 | 59 | ## [0.5.0](https://github.com/xuanwo/acp-claude-code/compare/v0.4.0...v0.5.0) (2025-08-28) 60 | 61 | ### Features 62 | 63 | * Add basic code formatting ([#31](https://github.com/xuanwo/acp-claude-code/issues/31)) ([284c3ca](https://github.com/xuanwo/acp-claude-code/commit/284c3ca73356ffde1c7293dba715ac6d03433ef2)) 64 | 65 | ## [0.4.0](https://github.com/xuanwo/acp-claude-code/compare/v0.3.2...v0.4.0) (2025-08-28) 66 | 67 | ### Features 68 | 69 | - Separate CLI entry point from library exports ([#28](https://github.com/xuanwo/acp-claude-code/issues/28)) ([406a38d](https://github.com/xuanwo/acp-claude-code/commit/406a38d3c56754dd45468247a2d35a9c2e070540)) 70 | 71 | ### Documentation 72 | 73 | - Add notes on zed's efforts ([c1c0111](https://github.com/xuanwo/acp-claude-code/commit/c1c0111d0fc65ec972a6e3993c405acf116fb23d)) 74 | 75 | ### Miscellaneous 76 | 77 | - Upgrade eslint to v9 ([#27](https://github.com/xuanwo/acp-claude-code/issues/27)) ([250e063](https://github.com/xuanwo/acp-claude-code/commit/250e063c4a04de408d1eafc201631602793f6298)) 78 | 79 | ## [0.3.2](https://github.com/xuanwo/acp-claude-code/compare/v0.3.1...v0.3.2) (2025-08-28) 80 | 81 | ### Bug Fixes 82 | 83 | - Make permission and tool use work in zed ([#26](https://github.com/xuanwo/acp-claude-code/issues/26)) ([8b0b458](https://github.com/xuanwo/acp-claude-code/commit/8b0b45852092c2f7b9af6344011a856ee7f7a6d6)) 84 | 85 | ## [0.3.1](https://github.com/xuanwo/acp-claude-code/compare/v0.3.0...v0.3.1) (2025-08-28) 86 | 87 | ### Bug Fixes 88 | 89 | - Remove not needed checks ([#25](https://github.com/xuanwo/acp-claude-code/issues/25)) ([670631d](https://github.com/xuanwo/acp-claude-code/commit/670631debf8ecbdc33957003add12956dc7aa329)) 90 | 91 | ### CI/CD 92 | 93 | - Create github releases but not assets ([686e0c9](https://github.com/xuanwo/acp-claude-code/commit/686e0c9606ab3a5d722dc85d79ea2cd83ae305eb)) 94 | - **deps:** Bump actions/checkout from 4 to 5 ([#23](https://github.com/xuanwo/acp-claude-code/issues/23)) ([cd2435f](https://github.com/xuanwo/acp-claude-code/commit/cd2435f2467ca312680590f08638540ae432d32e)) 95 | 96 | ## [0.3.0](https://github.com/xuanwo/acp-claude-code/compare/v0.2.2...v0.3.0) (2025-08-27) 97 | 98 | ### Features 99 | 100 | - Support session resume ([#19](https://github.com/xuanwo/acp-claude-code/issues/19)) ([513ec9d](https://github.com/xuanwo/acp-claude-code/commit/513ec9d719178eaf18184c586529f134d0140070)) 101 | 102 | ### CI/CD 103 | 104 | - Don't upload dist to github directly ([64cd37d](https://github.com/xuanwo/acp-claude-code/commit/64cd37df1065e880faff38c778aabbb25127b552)) 105 | 106 | ## [0.2.2](https://github.com/xuanwo/acp-claude-code/compare/v0.2.1...v0.2.2) (2025-08-27) 107 | 108 | ### Bug Fixes 109 | 110 | - Fix npm publish again ([#12](https://github.com/xuanwo/acp-claude-code/issues/12)) ([d31b45d](https://github.com/xuanwo/acp-claude-code/commit/d31b45d8bad7be0f602492e726f768157f108abc)) 111 | - tool_use not generated correctly ([#14](https://github.com/xuanwo/acp-claude-code/issues/14)) ([58d61b2](https://github.com/xuanwo/acp-claude-code/commit/58d61b2e07ba571c631e7fde5c278d91ea861512)) 112 | 113 | ### CI/CD 114 | 115 | - Setup semantic release ([#15](https://github.com/xuanwo/acp-claude-code/issues/15)) ([6cc4507](https://github.com/xuanwo/acp-claude-code/commit/6cc450732904d2fb4d96cd5d170ac4385688f104)) 116 | - Use NPM_TOKEN for release ([c98d80d](https://github.com/xuanwo/acp-claude-code/commit/c98d80d53b0ee43f774bc0c764c9bb692fc0b54f)) 117 | 118 | ### Miscellaneous 119 | 120 | - Fix wrong fields in package.json ([#16](https://github.com/xuanwo/acp-claude-code/issues/16)) ([cc7d28a](https://github.com/xuanwo/acp-claude-code/commit/cc7d28a7320f808e473826af0780ad730999cb97)) 121 | - Remove registry-url during setup node ([fcbdae7](https://github.com/xuanwo/acp-claude-code/commit/fcbdae7c5f9099b434e4b8a2cf0c65efe9b8192e)) 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ACP Claude Code Bridge 2 | 3 | A bridge implementation that enables Claude Code to work with the Agent Client Protocol (ACP), allowing it to integrate with Zed editor and other ACP-compatible clients. 4 | 5 | **This project is [deprecated in favor of @zed-industries/claude-code-acp](https://github.com/Xuanwo/acp-claude-code/issues/64). Thank you all for the journey and for making this project fun to work on. Let's build something new together!** 6 | 7 | ## Architecture 8 | 9 | This project implements an ACP Agent that wraps the Claude Code SDK, providing: 10 | 11 | - **Session persistence**: Maintains conversation context across multiple messages 12 | - **Streaming responses**: Real-time output from Claude 13 | - **Tool call support**: Full integration with Claude's tool use capabilities (TODO) 14 | - **Message format conversion**: Seamless translation between ACP and Claude SDK formats 15 | 16 | ## Usage in Zed 17 | 18 | Add to your Zed settings.json: 19 | 20 | ### Basic Configuration 21 | 22 | ```json 23 | { 24 | "agent_servers": { 25 | "Claude Code": { 26 | "command": "npx", 27 | "args": ["acp-claude-code"] 28 | } 29 | } 30 | } 31 | ``` 32 | 33 | ### With Permission Mode Configuration 34 | 35 | To auto-accept file edits (recommended for better workflow): 36 | 37 | ```json 38 | { 39 | "agent_servers": { 40 | "Claude Code": { 41 | "command": "npx", 42 | "args": ["acp-claude-code"], 43 | "env": { 44 | "ACP_PERMISSION_MODE": "acceptEdits" 45 | } 46 | } 47 | } 48 | } 49 | ``` 50 | 51 | To bypass all permissions (use with caution): 52 | 53 | ```json 54 | { 55 | "agent_servers": { 56 | "Claude Code": { 57 | "command": "npx", 58 | "args": ["acp-claude-code"], 59 | "env": { 60 | "ACP_PERMISSION_MODE": "bypassPermissions" 61 | } 62 | } 63 | } 64 | } 65 | ``` 66 | 67 | ### With Debug Logging 68 | 69 | For troubleshooting: 70 | 71 | ```json 72 | { 73 | "agent_servers": { 74 | "Claude Code": { 75 | "command": "npx", 76 | "args": ["acp-claude-code"], 77 | "env": { 78 | "ACP_DEBUG": "true", 79 | "ACP_PERMISSION_MODE": "acceptEdits" 80 | } 81 | } 82 | } 83 | } 84 | ``` 85 | 86 | ### With Custom Claude Code Executable Path 87 | 88 | If you need to use a specific Claude Code executable (e.g., development build): 89 | 90 | ```json 91 | { 92 | "agent_servers": { 93 | "Claude Code": { 94 | "command": "npx", 95 | "args": ["acp-claude-code"], 96 | "env": { 97 | "ACP_PATH_TO_CLAUDE_CODE_EXECUTABLE": "/path/to/your/claude-code", 98 | "ACP_PERMISSION_MODE": "acceptEdits" 99 | } 100 | } 101 | } 102 | } 103 | ``` 104 | 105 | ### Using pnpm/pnpx 106 | 107 | If you prefer pnpm: 108 | 109 | ```json 110 | { 111 | "agent_servers": { 112 | "Claude Code": { 113 | "command": "pnpx", 114 | "args": ["acp-claude-code"], 115 | "env": { 116 | "ACP_PERMISSION_MODE": "acceptEdits" 117 | } 118 | } 119 | } 120 | } 121 | ``` 122 | 123 | ## Development 124 | 125 | ### Building from source 126 | 127 | If you want to build and run from source instead of using the npm package: 128 | 129 | ```bash 130 | # Clone the repository 131 | git clone https://github.com/xuanwo/acp-claude-code.git 132 | cd acp-claude-code 133 | 134 | # Install dependencies 135 | pnpm install 136 | 137 | # Build the project 138 | pnpm run build 139 | 140 | # Run directly 141 | node dist/index.js 142 | ``` 143 | 144 | For development with hot reload: 145 | 146 | ```bash 147 | # Run in development mode 148 | pnpm run dev 149 | 150 | # Type checking 151 | pnpm run typecheck 152 | 153 | # Build 154 | pnpm run build 155 | 156 | # Lint checking 157 | pnpm run lint 158 | ``` 159 | 160 | ## Features 161 | 162 | ### Implemented 163 | 164 | - ✅ Full ACP protocol implementation 165 | - ✅ Session persistence with Claude's native session management 166 | - ✅ Streaming responses 167 | - ✅ Text content blocks 168 | - ✅ Claude SDK integration 169 | - ✅ Tool call support with proper status updates 170 | - ✅ Session loading capability 171 | - ✅ Permission management with configurable modes 172 | - ✅ Rich content display (todo lists, tool usage) 173 | - ✅ Image content blocks 174 | - ✅ Resource content blocks 175 | 176 | ### Planned 177 | 178 | - [ ] Audio content blocks 179 | - [ ] Advanced error handling 180 | - [ ] Session export/import 181 | 182 | ## Authentication 183 | 184 | This bridge uses Claude Code's built-in authentication. You need to authenticate Claude Code first: 185 | 186 | ```bash 187 | # Login with your Anthropic account 188 | claude setup-token 189 | 190 | # Or if you're already logged in through the Claude Code CLI, it will use that session 191 | ``` 192 | 193 | The bridge will automatically use the existing Claude Code authentication from `~/.claude/config.json`. 194 | 195 | ## Permission Modes 196 | 197 | The bridge supports different permission modes for Claude's file operations: 198 | 199 | ### Available Modes 200 | 201 | - **`default`** - Asks for permission on file operations (default) 202 | - **`acceptEdits`** - Auto-accepts file edits, still asks for other operations (recommended) 203 | - **`bypassPermissions`** - Bypasses all permission checks (use with caution!) 204 | 205 | ### Configuration in Zed 206 | 207 | Set the permission mode in your Zed settings.json using the `env` field as shown in the usage examples above. 208 | 209 | ### Dynamic Permission Mode Switching 210 | 211 | You can also change permission mode during a conversation by including special markers in your prompt: 212 | 213 | - `[ACP:PERMISSION:ACCEPT_EDITS]` - Switch to acceptEdits mode 214 | - `[ACP:PERMISSION:BYPASS]` - Switch to bypassPermissions mode 215 | - `[ACP:PERMISSION:DEFAULT]` - Switch back to default mode 216 | 217 | Example: 218 | 219 | ``` 220 | [ACP:PERMISSION:ACCEPT_EDITS] 221 | Please update all the TypeScript files to use the new API 222 | ``` 223 | 224 | ## Environment Variables 225 | 226 | The bridge supports the following environment variables: 227 | 228 | - **`ACP_DEBUG`** - Enable debug logging (`true`/`false`) 229 | - **`ACP_PERMISSION_MODE`** - Set permission mode (`default`/`acceptEdits`/`bypassPermissions`) 230 | - **`ACP_PATH_TO_CLAUDE_CODE_EXECUTABLE`** - Path to a custom Claude Code executable 231 | 232 | ## Debugging 233 | 234 | Debug logging can be enabled in your Zed configuration (see usage examples above) or when running manually: 235 | 236 | ```bash 237 | # Set the debug environment variable 238 | ACP_DEBUG=true npx acp-claude-code 239 | ``` 240 | 241 | Debug logs will output: 242 | 243 | - Session creation and management 244 | - Message processing 245 | - Tool call execution 246 | - Claude SDK interactions 247 | 248 | ## Troubleshooting 249 | 250 | ### Session not persisting 251 | 252 | The bridge now correctly maintains session context using Claude's native session management. Each ACP session maps to a Claude session that persists throughout the conversation. 253 | 254 | ### "Claude Code process exited" error 255 | 256 | Make sure you're authenticated with Claude Code: 257 | 258 | ```bash 259 | claude setup-token 260 | ``` 261 | 262 | ### Tool calls not working 263 | 264 | Tool calls are fully supported. Ensure your Zed client is configured to handle tool call updates properly. 265 | 266 | ## Technical Details 267 | 268 | ### Session Management 269 | 270 | The bridge uses a two-step session management approach: 271 | 272 | 1. Creates an ACP session ID initially 273 | 2. On first message, obtains and stores Claude's session ID 274 | 3. Uses Claude's `resume` parameter for subsequent messages to maintain context 275 | 276 | ### Message Flow 277 | 278 | 1. **Client → Agent**: ACP protocol messages 279 | 2. **Agent → Claude SDK**: Converted to Claude SDK format with session resume 280 | 3. **Claude SDK → Agent**: Stream of response messages 281 | 4. **Agent → Client**: Converted back to ACP protocol format 282 | 283 | ## License 284 | 285 | MIT 286 | -------------------------------------------------------------------------------- /src/agent.ts: -------------------------------------------------------------------------------- 1 | import { query } from "@anthropic-ai/claude-code"; 2 | import type { SDKMessage, SDKUserMessage } from "@anthropic-ai/claude-code"; 3 | import { 4 | Agent, 5 | Client, 6 | PROTOCOL_VERSION, 7 | InitializeRequest, 8 | InitializeResponse, 9 | NewSessionRequest, 10 | NewSessionResponse, 11 | AuthenticateRequest, 12 | PromptRequest, 13 | PromptResponse, 14 | CancelNotification, 15 | LoadSessionRequest, 16 | } from "@zed-industries/agent-client-protocol"; 17 | import type { ACPToolCallContent, ACPToolCallRegularContent, ClaudeMessage, ClaudeStreamEvent, ClaudeTodoList } from "./types.js"; 18 | import { toAsyncIterable } from "./utils.js"; 19 | 20 | interface AgentSession { 21 | pendingPrompt: AsyncIterableIterator | null; 22 | abortController: AbortController | null; 23 | claudeSessionId?: string; // Claude's actual session_id, obtained after first message 24 | permissionMode?: "default" | "acceptEdits" | "bypassPermissions" | "plan"; // Permission mode for this session 25 | todoWriteToolCallIds: Set; // Set of tool_call_id for todo_write tool 26 | toolCallContents: Map; // Map of tool_call_id to tool call content 27 | } 28 | 29 | export class ClaudeACPAgent implements Agent { 30 | private sessions: Map = new Map(); 31 | private DEBUG = process.env.ACP_DEBUG === "true"; 32 | private defaultPermissionMode: 33 | | "default" 34 | | "acceptEdits" 35 | | "bypassPermissions" 36 | | "plan" = 37 | (process.env.ACP_PERMISSION_MODE as 38 | | "default" 39 | | "acceptEdits" 40 | | "bypassPermissions" 41 | | "plan") || "default"; 42 | private pathToClaudeCodeExecutable: string | undefined = 43 | process.env.ACP_PATH_TO_CLAUDE_CODE_EXECUTABLE; 44 | 45 | constructor(private client: Client) { 46 | this.log("Initialized with client"); 47 | } 48 | 49 | private log(message: string, ...args: unknown[]) { 50 | if (this.DEBUG) { 51 | console.error(`[ClaudeACPAgent] ${message}`, ...args); 52 | } 53 | } 54 | 55 | async initialize(params: InitializeRequest): Promise { 56 | this.log(`Initialize with protocol version: ${params.protocolVersion}`); 57 | 58 | return { 59 | protocolVersion: PROTOCOL_VERSION, 60 | agentCapabilities: { 61 | loadSession: true, // Enable session loading 62 | promptCapabilities: { 63 | image: true, 64 | audio: false, 65 | embeddedContext: true, 66 | }, 67 | }, 68 | }; 69 | } 70 | 71 | async newSession(_params: NewSessionRequest): Promise { 72 | this.log("Creating new session"); 73 | 74 | // For now, create a temporary session ID 75 | // We'll get the real Claude session_id on the first message 76 | // and store it for future use 77 | const sessionId = Math.random().toString(36).substring(2); 78 | 79 | this.sessions.set(sessionId, { 80 | pendingPrompt: null, 81 | abortController: null, 82 | claudeSessionId: undefined, // Will be set after first message 83 | permissionMode: this.defaultPermissionMode, 84 | todoWriteToolCallIds: new Set(), 85 | toolCallContents: new Map(), 86 | }); 87 | 88 | this.log(`Created session: ${sessionId}`); 89 | 90 | return { 91 | sessionId, 92 | }; 93 | } 94 | 95 | async loadSession?(params: LoadSessionRequest): Promise { 96 | this.log(`Loading session: ${params.sessionId}`); 97 | 98 | // Check if we already have this session 99 | const existingSession = this.sessions.get(params.sessionId); 100 | if (existingSession) { 101 | this.log( 102 | `Session ${params.sessionId} already exists with Claude session_id: ${existingSession.claudeSessionId}`, 103 | ); 104 | // Keep the existing session with its Claude session_id intact 105 | return; // Return null to indicate success 106 | } 107 | 108 | // Create a new session entry for this ID if it doesn't exist 109 | // This handles the case where the agent restarts but Zed still has the session ID 110 | this.sessions.set(params.sessionId, { 111 | pendingPrompt: null, 112 | abortController: null, 113 | claudeSessionId: undefined, 114 | permissionMode: this.defaultPermissionMode, 115 | todoWriteToolCallIds: new Set(), 116 | toolCallContents: new Map(), 117 | }); 118 | 119 | this.log( 120 | `Created new session entry for loaded session: ${params.sessionId}`, 121 | ); 122 | return; // Return null to indicate success 123 | } 124 | 125 | async authenticate(_params: AuthenticateRequest): Promise { 126 | this.log("Authenticate called"); 127 | // Claude Code SDK handles authentication internally through ~/.claude/config.json 128 | // Users should run `claude setup-token` or login through the CLI 129 | this.log("Using Claude Code authentication from ~/.claude/config.json"); 130 | } 131 | 132 | async prompt(params: PromptRequest): Promise { 133 | const currentSessionId = params.sessionId; 134 | const session = this.sessions.get(currentSessionId); 135 | 136 | if (!session) { 137 | this.log( 138 | `Session ${currentSessionId} not found in map. Available sessions: ${Array.from(this.sessions.keys()).join(", ")}`, 139 | ); 140 | throw new Error(`Session ${currentSessionId} not found`); 141 | } 142 | 143 | this.log(`Processing prompt for session: ${currentSessionId}`); 144 | this.log( 145 | `Session state: claudeSessionId=${session.claudeSessionId}, pendingPrompt=${!!session.pendingPrompt}, abortController=${!!session.abortController}`, 146 | ); 147 | this.log( 148 | `Available sessions: ${Array.from(this.sessions.keys()).join(", ")}`, 149 | ); 150 | 151 | // Cancel any pending prompt 152 | if (session.abortController) { 153 | session.abortController.abort(); 154 | } 155 | 156 | session.abortController = new AbortController(); 157 | 158 | try { 159 | const userMessage = { 160 | type: "user", 161 | message: { 162 | role: "user", 163 | content: [] as SDKUserMessage["message"]["content"], 164 | }, 165 | }; 166 | const textMessagePieces: string[] = []; 167 | let imageIdx = 0; 168 | for (const block of params.prompt) { 169 | if (block.type === "text") { 170 | textMessagePieces.push(block.text); 171 | } 172 | if (block.type === "image") { 173 | imageIdx++; 174 | textMessagePieces.push(`[Image #${imageIdx}]`); 175 | userMessage.message.content.push({ 176 | type: "image", 177 | source: { 178 | type: "base64", 179 | media_type: block.mimeType, 180 | data: block.data, 181 | } 182 | }); 183 | } 184 | let uri; 185 | if (block.type === "resource") { 186 | uri = block.resource.uri; 187 | } 188 | if (block.type === "resource_link") { 189 | uri = block.uri; 190 | } 191 | if (uri) { 192 | if (uri.startsWith("file://")) { 193 | const filePath = uri.substring(7); 194 | textMessagePieces.push("@" + filePath); 195 | } else { 196 | textMessagePieces.push(uri); 197 | } 198 | } 199 | } 200 | 201 | const promptText = textMessagePieces.join(""); 202 | if (promptText) { 203 | userMessage.message.content.push({ 204 | type: "text", 205 | text: promptText, 206 | }); 207 | } 208 | 209 | if (!session.claudeSessionId) { 210 | this.log("First message for this session, no resume"); 211 | } else { 212 | this.log(`Resuming Claude session: ${session.claudeSessionId}`); 213 | } 214 | 215 | // Check for permission mode hints in the prompt 216 | let permissionMode = session.permissionMode || this.defaultPermissionMode; 217 | 218 | // Allow dynamic permission mode switching via special commands 219 | if (promptText.includes("[ACP:PERMISSION:ACCEPT_EDITS]")) { 220 | permissionMode = "acceptEdits"; 221 | session.permissionMode = "acceptEdits"; 222 | } else if (promptText.includes("[ACP:PERMISSION:BYPASS]")) { 223 | permissionMode = "bypassPermissions"; 224 | session.permissionMode = "bypassPermissions"; 225 | } else if (promptText.includes("[ACP:PERMISSION:DEFAULT]")) { 226 | permissionMode = "default"; 227 | session.permissionMode = "default"; 228 | } 229 | 230 | this.log(`Using permission mode: ${permissionMode}`); 231 | 232 | // Start Claude query 233 | const messages = query({ 234 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 235 | prompt: toAsyncIterable([userMessage]) as any, 236 | options: { 237 | permissionMode, 238 | pathToClaudeCodeExecutable: this.pathToClaudeCodeExecutable, 239 | // Resume if we have a Claude session_id 240 | resume: session.claudeSessionId || undefined, 241 | }, 242 | }); 243 | 244 | session.pendingPrompt = messages as AsyncIterableIterator; 245 | 246 | // Process messages and send updates 247 | let messageCount = 0; 248 | 249 | for await (const message of messages) { 250 | if (session.abortController?.signal.aborted) { 251 | return { stopReason: "cancelled" }; 252 | } 253 | 254 | messageCount++; 255 | this.log( 256 | `Processing message #${messageCount} of type: ${(message as SDKMessage).type}`, 257 | ); 258 | 259 | // Extract and store Claude's session_id from any message that has it 260 | const sdkMessage = message as SDKMessage; 261 | this.tryToStoreClaudeSessionId(currentSessionId, sdkMessage); 262 | 263 | // Log message type and content for debugging 264 | if (sdkMessage.type === "user") { 265 | this.log(`Processing user message`); 266 | } else if (sdkMessage.type === "assistant") { 267 | this.log(`Processing assistant message`); 268 | // Log assistant message content for debugging 269 | if ("message" in sdkMessage && sdkMessage.message) { 270 | const assistantMsg = sdkMessage.message as { 271 | content?: Array<{ type: string; text?: string }>; 272 | }; 273 | if (assistantMsg.content) { 274 | this.log( 275 | `Assistant content: ${JSON.stringify(assistantMsg.content).substring(0, 200)}`, 276 | ); 277 | } 278 | } 279 | } 280 | 281 | await this.handleClaudeMessage( 282 | currentSessionId, 283 | message as ClaudeMessage, 284 | ); 285 | } 286 | 287 | this.log(`Processed ${messageCount} messages total`); 288 | this.log(`Final Claude session_id: ${session.claudeSessionId}`); 289 | session.pendingPrompt = null; 290 | 291 | // Ensure the session is properly saved with the Claude session_id 292 | this.sessions.set(currentSessionId, session); 293 | 294 | return { 295 | stopReason: "end_turn", 296 | }; 297 | } catch (error) { 298 | this.log("Error during prompt processing:", error); 299 | 300 | if (session.abortController?.signal.aborted) { 301 | return { stopReason: "cancelled" }; 302 | } 303 | 304 | // Send error to client 305 | await this.client.sessionUpdate({ 306 | sessionId: params.sessionId, 307 | update: { 308 | sessionUpdate: "agent_message_chunk", 309 | content: { 310 | type: "text", 311 | text: `Error: ${error instanceof Error ? error.message : String(error)}`, 312 | }, 313 | }, 314 | }); 315 | 316 | return { 317 | stopReason: "end_turn", 318 | }; 319 | } finally { 320 | session.pendingPrompt = null; 321 | session.abortController = null; 322 | } 323 | } 324 | 325 | async cancel(params: CancelNotification): Promise { 326 | this.log(`Cancel requested for session: ${params.sessionId}`); 327 | 328 | const session = this.sessions.get(params.sessionId); 329 | if (session) { 330 | session.abortController?.abort(); 331 | 332 | if (session.pendingPrompt && session.pendingPrompt.return) { 333 | await session.pendingPrompt.return(); 334 | session.pendingPrompt = null; 335 | } 336 | } 337 | } 338 | 339 | private async sendAgentPlan(sessionId: string, todos: ClaudeTodoList): Promise { 340 | // The status and priority of ACP plan entry can directly correspond to the status and priority in claude-code todo, just need to remove the todo id. 341 | const planEntries = todos.map((todo) => { 342 | return { 343 | content: todo.content, 344 | status: todo.status, 345 | priority: todo.priority ?? "low", 346 | }; 347 | }); 348 | await this.client.sessionUpdate({ 349 | sessionId, 350 | update: { 351 | sessionUpdate: "plan", 352 | entries: planEntries, 353 | }, 354 | }); 355 | } 356 | 357 | private async handleClaudeMessage( 358 | sessionId: string, 359 | message: ClaudeMessage | SDKMessage, 360 | ): Promise { 361 | // Use a more flexible type handling approach 362 | const msg = message as ClaudeMessage; 363 | const messageType = "type" in message ? message.type : undefined; 364 | this.log( 365 | `Handling message type: ${messageType}`, 366 | JSON.stringify(message).substring(0, 200), 367 | ); 368 | 369 | const session = this.sessions.get(sessionId); 370 | 371 | switch (messageType) { 372 | case "system": 373 | // System messages are internal, don't send to client 374 | break; 375 | 376 | case "user": 377 | // Handle user message that may contain tool results 378 | if (msg.message && msg.message.content) { 379 | for (const content of msg.message.content) { 380 | if (content.type === "tool_result") { 381 | this.log(`Tool result received for: ${content.tool_use_id}`); 382 | 383 | if (content.tool_use_id && session?.todoWriteToolCallIds.has(content.tool_use_id)) { 384 | continue; 385 | } 386 | 387 | const newContent: ACPToolCallRegularContent = { 388 | type: "content", 389 | content: { 390 | type: "text", 391 | text: (content.content || "") + "\n", 392 | }, 393 | } 394 | 395 | const prevToolCallContent = session?.toolCallContents.get(content.tool_use_id || "") || []; 396 | const toolCallContent = [...prevToolCallContent, newContent]; 397 | session?.toolCallContents.set(content.tool_use_id || "", toolCallContent); 398 | 399 | // Send tool_call_update with completed status 400 | await this.client.sessionUpdate({ 401 | sessionId, 402 | update: { 403 | sessionUpdate: "tool_call_update", 404 | toolCallId: content.tool_use_id || "", 405 | status: "completed", 406 | content: toolCallContent, 407 | rawOutput: content.content ? { output: content.content } : undefined, 408 | }, 409 | }); 410 | } 411 | } 412 | } 413 | break; 414 | 415 | case "assistant": 416 | // Handle assistant message from Claude 417 | if (msg.message && msg.message.content) { 418 | for (const content of msg.message.content) { 419 | if (content.type === "text") { 420 | // Send text content without adding extra newlines 421 | // Claude already formats the text properly 422 | await this.client.sessionUpdate({ 423 | sessionId, 424 | update: { 425 | sessionUpdate: "agent_message_chunk", 426 | content: { 427 | type: "text", 428 | text: content.text || "", 429 | }, 430 | }, 431 | }); 432 | } else if (content.type === "tool_use") { 433 | // Handle tool_use blocks in assistant messages 434 | this.log( 435 | `Tool use block in assistant message: ${content.name}, id: ${content.id}`, 436 | ); 437 | 438 | if (content.name === "TodoWrite" && content.input?.todos) { 439 | session?.todoWriteToolCallIds.add(content.id || ""); 440 | const todos = content.input.todos as ClaudeTodoList; 441 | await this.sendAgentPlan(sessionId, todos); 442 | } else { 443 | const toolCallContent = this.getToolCallContent(content.name || "", content.input as Record); 444 | session?.toolCallContents.set(content.id || "", toolCallContent); 445 | // Send tool_call notification to client 446 | await this.client.sessionUpdate({ 447 | sessionId, 448 | update: { 449 | sessionUpdate: "tool_call", 450 | toolCallId: content.id || "", 451 | title: content.name || "Tool", 452 | kind: this.mapToolKind(content.name || ""), 453 | status: "pending", 454 | content: toolCallContent, 455 | rawInput: content.input as Record, 456 | }, 457 | }); 458 | } 459 | } 460 | } 461 | } else if ("text" in msg && typeof msg.text === "string") { 462 | // Handle direct text in assistant message 463 | await this.client.sessionUpdate({ 464 | sessionId, 465 | update: { 466 | sessionUpdate: "agent_message_chunk", 467 | content: { 468 | type: "text", 469 | text: msg.text, 470 | }, 471 | }, 472 | }); 473 | } 474 | break; 475 | 476 | case "result": 477 | // Result message indicates completion 478 | this.log("Query completed with result:", msg.result); 479 | break; 480 | 481 | case "text": 482 | // Direct text messages - preserve formatting without extra newlines 483 | await this.client.sessionUpdate({ 484 | sessionId, 485 | update: { 486 | sessionUpdate: "agent_message_chunk", 487 | content: { 488 | type: "text", 489 | text: msg.text || "", 490 | }, 491 | }, 492 | }); 493 | break; 494 | 495 | case "tool_use_start": { 496 | // Log the tool call details for debugging 497 | this.log(`Tool call started: ${msg.tool_name}`, `ID: ${msg.id}`); 498 | 499 | // Handle tool input - ensure it's a proper object 500 | const input = msg.input || {}; 501 | 502 | // Log the input for debugging 503 | if (this.DEBUG) { 504 | try { 505 | this.log(`Tool input:`, JSON.stringify(input, null, 2)); 506 | 507 | // Special logging for content field 508 | if (input && typeof input === "object" && "content" in input) { 509 | const content = (input as Record).content; 510 | if (typeof content === "string") { 511 | const preview = content.substring(0, 100); 512 | this.log( 513 | `Content preview: ${preview}${content.length > 100 ? "..." : ""}`, 514 | ); 515 | } 516 | } 517 | } catch (e) { 518 | this.log("Error logging input:", e); 519 | } 520 | } 521 | 522 | if ( 523 | msg.tool_name === "TodoWrite" && 524 | input && 525 | typeof input === "object" && 526 | "todos" in input 527 | ) { 528 | const todos = ( 529 | input as { 530 | todos: ClaudeTodoList; 531 | } 532 | ).todos; 533 | if (todos && Array.isArray(todos)) { 534 | session?.todoWriteToolCallIds.add(msg.id || ""); 535 | await this.sendAgentPlan(sessionId, todos); 536 | } 537 | } else { 538 | const toolCallContent = this.getToolCallContent(msg.tool_name || "", input as Record); 539 | session?.toolCallContents.set(msg.id || "", toolCallContent); 540 | 541 | await this.client.sessionUpdate({ 542 | sessionId, 543 | update: { 544 | sessionUpdate: "tool_call", 545 | toolCallId: msg.id || "", 546 | title: msg.tool_name || "Tool", 547 | kind: this.mapToolKind(msg.tool_name || ""), 548 | status: "pending", 549 | content: toolCallContent, 550 | // Pass the input directly without extra processing 551 | rawInput: input as Record, 552 | }, 553 | }); 554 | } 555 | break; 556 | } 557 | 558 | case "tool_use_output": { 559 | const outputText = msg.output || ""; 560 | 561 | // Log the tool output for debugging 562 | this.log(`Tool call completed: ${msg.id}`); 563 | this.log(`Tool output length: ${outputText.length} characters`); 564 | 565 | if (msg.id && session?.todoWriteToolCallIds.has(msg.id)) { 566 | break; 567 | } 568 | 569 | const newContent: ACPToolCallRegularContent = { 570 | type: "content", 571 | content: { 572 | type: "text", 573 | text: outputText, 574 | }, 575 | } 576 | const prevToolCallContent = session?.toolCallContents.get(msg.id || "") || []; 577 | const toolCallContent = [...prevToolCallContent, newContent]; 578 | session?.toolCallContents.set(msg.id || "", toolCallContent); 579 | 580 | await this.client.sessionUpdate({ 581 | sessionId, 582 | update: { 583 | sessionUpdate: "tool_call_update", 584 | toolCallId: msg.id || "", 585 | status: "completed", 586 | content: toolCallContent, 587 | // Pass output directly without extra wrapping 588 | rawOutput: msg.output ? { output: outputText } : undefined, 589 | }, 590 | }); 591 | break; 592 | } 593 | 594 | case "tool_use_error": 595 | await this.client.sessionUpdate({ 596 | sessionId, 597 | update: { 598 | sessionUpdate: "tool_call_update", 599 | toolCallId: msg.id || "", 600 | status: "failed", 601 | content: [ 602 | { 603 | type: "content", 604 | content: { 605 | type: "text", 606 | text: `Error: ${msg.error}`, 607 | }, 608 | }, 609 | ], 610 | rawOutput: { error: msg.error }, 611 | }, 612 | }); 613 | break; 614 | 615 | case "stream_event": { 616 | // Handle stream events if needed 617 | const event = msg.event as ClaudeStreamEvent; 618 | if ( 619 | event.type === "content_block_start" && 620 | event.content_block?.type === "text" 621 | ) { 622 | await this.client.sessionUpdate({ 623 | sessionId, 624 | update: { 625 | sessionUpdate: "agent_message_chunk", 626 | content: { 627 | type: "text", 628 | text: event.content_block.text || "", 629 | }, 630 | }, 631 | }); 632 | } else if ( 633 | event.type === "content_block_delta" && 634 | event.delta?.type === "text_delta" 635 | ) { 636 | await this.client.sessionUpdate({ 637 | sessionId, 638 | update: { 639 | sessionUpdate: "agent_message_chunk", 640 | content: { 641 | type: "text", 642 | text: event.delta.text || "", 643 | }, 644 | }, 645 | }); 646 | } else if (event.type === "content_block_stop") { 647 | // Content block ended - Claude handles its own formatting 648 | this.log("Content block stopped"); 649 | } 650 | break; 651 | } 652 | 653 | default: 654 | this.log( 655 | `Unhandled message type: ${messageType}`, 656 | JSON.stringify(message).substring(0, 500), 657 | ); 658 | } 659 | } 660 | 661 | private mapToolKind( 662 | toolName: string, 663 | ): 664 | | "read" 665 | | "edit" 666 | | "delete" 667 | | "move" 668 | | "search" 669 | | "execute" 670 | | "think" 671 | | "fetch" 672 | | "other" { 673 | const lowerName = toolName.toLowerCase(); 674 | 675 | if ( 676 | lowerName.includes("read") || 677 | lowerName.includes("view") || 678 | lowerName.includes("get") 679 | ) { 680 | return "read"; 681 | } else if ( 682 | lowerName.includes("write") || 683 | lowerName.includes("create") || 684 | lowerName.includes("update") || 685 | lowerName.includes("edit") 686 | ) { 687 | return "edit"; 688 | } else if (lowerName.includes("delete") || lowerName.includes("remove")) { 689 | return "delete"; 690 | } else if (lowerName.includes("move") || lowerName.includes("rename")) { 691 | return "move"; 692 | } else if ( 693 | lowerName.includes("search") || 694 | lowerName.includes("find") || 695 | lowerName.includes("grep") 696 | ) { 697 | return "search"; 698 | } else if ( 699 | lowerName.includes("run") || 700 | lowerName.includes("execute") || 701 | lowerName.includes("bash") 702 | ) { 703 | return "execute"; 704 | } else if (lowerName.includes("think") || lowerName.includes("plan")) { 705 | return "think"; 706 | } else if (lowerName.includes("fetch") || lowerName.includes("download")) { 707 | return "fetch"; 708 | } else { 709 | return "other"; 710 | } 711 | } 712 | 713 | private getToolCallContent(toolName: string, toolInput: Record): ACPToolCallContent[] { 714 | const result: ACPToolCallContent[] = []; 715 | switch (toolName) { 716 | case "Edit": { 717 | if (toolInput.file_path && toolInput.old_string && toolInput.new_string) { 718 | result.push({ 719 | type: "diff", 720 | path: toolInput.file_path as string, 721 | oldText: toolInput.old_string as string, 722 | newText: toolInput.new_string as string, 723 | }); 724 | } 725 | break; 726 | }; 727 | case "MultiEdit": { 728 | if (toolInput.file_path && toolInput.edits) { 729 | for (const edit of toolInput.edits as Array<{ 730 | old_string: string; 731 | new_string: string; 732 | }>) { 733 | result.push({ 734 | type: "diff", 735 | path: toolInput.file_path as string, 736 | oldText: edit.old_string as string, 737 | newText: edit.new_string as string, 738 | }); 739 | } 740 | } 741 | }; 742 | }; 743 | return result; 744 | } 745 | 746 | private tryToStoreClaudeSessionId(sessionId: string, sdkMessage: SDKMessage) { 747 | const session = this.sessions.get(sessionId); 748 | if (!session) { 749 | return; 750 | } 751 | if ( 752 | "session_id" in sdkMessage && 753 | typeof sdkMessage.session_id === "string" && 754 | sdkMessage.session_id 755 | ) { 756 | if (session.claudeSessionId !== sdkMessage.session_id) { 757 | this.log( 758 | `Updating Claude session_id from ${session.claudeSessionId} to ${sdkMessage.session_id}`, 759 | ); 760 | session.claudeSessionId = sdkMessage.session_id; 761 | return sdkMessage.session_id; 762 | } 763 | } 764 | } 765 | } 766 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@anthropic-ai/claude-code': 12 | specifier: latest 13 | version: 1.0.98 14 | '@zed-industries/agent-client-protocol': 15 | specifier: 0.1.2 16 | version: 0.1.2 17 | devDependencies: 18 | '@eslint/js': 19 | specifier: 9.17.0 20 | version: 9.17.0 21 | '@semantic-release/changelog': 22 | specifier: 6.0.3 23 | version: 6.0.3(semantic-release@24.2.0(typescript@5.9.2)) 24 | '@semantic-release/git': 25 | specifier: 10.0.1 26 | version: 10.0.1(semantic-release@24.2.0(typescript@5.9.2)) 27 | '@semantic-release/github': 28 | specifier: 11.0.5 29 | version: 11.0.5(semantic-release@24.2.0(typescript@5.9.2)) 30 | '@semantic-release/npm': 31 | specifier: 12.0.2 32 | version: 12.0.2(semantic-release@24.2.0(typescript@5.9.2)) 33 | '@types/node': 34 | specifier: ^24.3.0 35 | version: 24.3.0 36 | '@typescript-eslint/eslint-plugin': 37 | specifier: ^8.20.0 38 | version: 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2) 39 | '@typescript-eslint/parser': 40 | specifier: ^8.20.0 41 | version: 8.41.0(eslint@9.34.0)(typescript@5.9.2) 42 | conventional-changelog-conventionalcommits: 43 | specifier: 8.0.0 44 | version: 8.0.0 45 | eslint: 46 | specifier: ^9.17.0 47 | version: 9.34.0 48 | globals: 49 | specifier: 15.14.0 50 | version: 15.14.0 51 | prettier: 52 | specifier: ^3.6.2 53 | version: 3.6.2 54 | semantic-release: 55 | specifier: 24.2.0 56 | version: 24.2.0(typescript@5.9.2) 57 | tsx: 58 | specifier: ^4.0.0 59 | version: 4.20.5 60 | typescript: 61 | specifier: ^5.0.0 62 | version: 5.9.2 63 | typescript-eslint: 64 | specifier: 8.20.0 65 | version: 8.20.0(eslint@9.34.0)(typescript@5.9.2) 66 | 67 | packages: 68 | 69 | '@anthropic-ai/claude-code@1.0.98': 70 | resolution: {integrity: sha512-IV193Eh8STdRcN3VkNcojPIlLnQPch+doBVrDSEV1rPPePISy7pzHFZL0Eg7zIPj9gHkHV1D2s0RMMwzVXJThA==} 71 | engines: {node: '>=18.0.0'} 72 | hasBin: true 73 | 74 | '@babel/code-frame@7.27.1': 75 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 76 | engines: {node: '>=6.9.0'} 77 | 78 | '@babel/helper-validator-identifier@7.27.1': 79 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 80 | engines: {node: '>=6.9.0'} 81 | 82 | '@colors/colors@1.5.0': 83 | resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} 84 | engines: {node: '>=0.1.90'} 85 | 86 | '@esbuild/aix-ppc64@0.25.9': 87 | resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} 88 | engines: {node: '>=18'} 89 | cpu: [ppc64] 90 | os: [aix] 91 | 92 | '@esbuild/android-arm64@0.25.9': 93 | resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} 94 | engines: {node: '>=18'} 95 | cpu: [arm64] 96 | os: [android] 97 | 98 | '@esbuild/android-arm@0.25.9': 99 | resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} 100 | engines: {node: '>=18'} 101 | cpu: [arm] 102 | os: [android] 103 | 104 | '@esbuild/android-x64@0.25.9': 105 | resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} 106 | engines: {node: '>=18'} 107 | cpu: [x64] 108 | os: [android] 109 | 110 | '@esbuild/darwin-arm64@0.25.9': 111 | resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} 112 | engines: {node: '>=18'} 113 | cpu: [arm64] 114 | os: [darwin] 115 | 116 | '@esbuild/darwin-x64@0.25.9': 117 | resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} 118 | engines: {node: '>=18'} 119 | cpu: [x64] 120 | os: [darwin] 121 | 122 | '@esbuild/freebsd-arm64@0.25.9': 123 | resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} 124 | engines: {node: '>=18'} 125 | cpu: [arm64] 126 | os: [freebsd] 127 | 128 | '@esbuild/freebsd-x64@0.25.9': 129 | resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} 130 | engines: {node: '>=18'} 131 | cpu: [x64] 132 | os: [freebsd] 133 | 134 | '@esbuild/linux-arm64@0.25.9': 135 | resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} 136 | engines: {node: '>=18'} 137 | cpu: [arm64] 138 | os: [linux] 139 | 140 | '@esbuild/linux-arm@0.25.9': 141 | resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} 142 | engines: {node: '>=18'} 143 | cpu: [arm] 144 | os: [linux] 145 | 146 | '@esbuild/linux-ia32@0.25.9': 147 | resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} 148 | engines: {node: '>=18'} 149 | cpu: [ia32] 150 | os: [linux] 151 | 152 | '@esbuild/linux-loong64@0.25.9': 153 | resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} 154 | engines: {node: '>=18'} 155 | cpu: [loong64] 156 | os: [linux] 157 | 158 | '@esbuild/linux-mips64el@0.25.9': 159 | resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} 160 | engines: {node: '>=18'} 161 | cpu: [mips64el] 162 | os: [linux] 163 | 164 | '@esbuild/linux-ppc64@0.25.9': 165 | resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} 166 | engines: {node: '>=18'} 167 | cpu: [ppc64] 168 | os: [linux] 169 | 170 | '@esbuild/linux-riscv64@0.25.9': 171 | resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} 172 | engines: {node: '>=18'} 173 | cpu: [riscv64] 174 | os: [linux] 175 | 176 | '@esbuild/linux-s390x@0.25.9': 177 | resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} 178 | engines: {node: '>=18'} 179 | cpu: [s390x] 180 | os: [linux] 181 | 182 | '@esbuild/linux-x64@0.25.9': 183 | resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} 184 | engines: {node: '>=18'} 185 | cpu: [x64] 186 | os: [linux] 187 | 188 | '@esbuild/netbsd-arm64@0.25.9': 189 | resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} 190 | engines: {node: '>=18'} 191 | cpu: [arm64] 192 | os: [netbsd] 193 | 194 | '@esbuild/netbsd-x64@0.25.9': 195 | resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} 196 | engines: {node: '>=18'} 197 | cpu: [x64] 198 | os: [netbsd] 199 | 200 | '@esbuild/openbsd-arm64@0.25.9': 201 | resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} 202 | engines: {node: '>=18'} 203 | cpu: [arm64] 204 | os: [openbsd] 205 | 206 | '@esbuild/openbsd-x64@0.25.9': 207 | resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} 208 | engines: {node: '>=18'} 209 | cpu: [x64] 210 | os: [openbsd] 211 | 212 | '@esbuild/openharmony-arm64@0.25.9': 213 | resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} 214 | engines: {node: '>=18'} 215 | cpu: [arm64] 216 | os: [openharmony] 217 | 218 | '@esbuild/sunos-x64@0.25.9': 219 | resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} 220 | engines: {node: '>=18'} 221 | cpu: [x64] 222 | os: [sunos] 223 | 224 | '@esbuild/win32-arm64@0.25.9': 225 | resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} 226 | engines: {node: '>=18'} 227 | cpu: [arm64] 228 | os: [win32] 229 | 230 | '@esbuild/win32-ia32@0.25.9': 231 | resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} 232 | engines: {node: '>=18'} 233 | cpu: [ia32] 234 | os: [win32] 235 | 236 | '@esbuild/win32-x64@0.25.9': 237 | resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} 238 | engines: {node: '>=18'} 239 | cpu: [x64] 240 | os: [win32] 241 | 242 | '@eslint-community/eslint-utils@4.7.0': 243 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 244 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 245 | peerDependencies: 246 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 247 | 248 | '@eslint-community/regexpp@4.12.1': 249 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 250 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 251 | 252 | '@eslint/config-array@0.21.0': 253 | resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 254 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 255 | 256 | '@eslint/config-helpers@0.3.1': 257 | resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@eslint/core@0.15.2': 261 | resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} 262 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 263 | 264 | '@eslint/eslintrc@3.3.1': 265 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 266 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 267 | 268 | '@eslint/js@9.17.0': 269 | resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} 270 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 271 | 272 | '@eslint/js@9.34.0': 273 | resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} 274 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 275 | 276 | '@eslint/object-schema@2.1.6': 277 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 278 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 279 | 280 | '@eslint/plugin-kit@0.3.5': 281 | resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} 282 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 283 | 284 | '@humanfs/core@0.19.1': 285 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 286 | engines: {node: '>=18.18.0'} 287 | 288 | '@humanfs/node@0.16.6': 289 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 290 | engines: {node: '>=18.18.0'} 291 | 292 | '@humanwhocodes/module-importer@1.0.1': 293 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 294 | engines: {node: '>=12.22'} 295 | 296 | '@humanwhocodes/retry@0.3.1': 297 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 298 | engines: {node: '>=18.18'} 299 | 300 | '@humanwhocodes/retry@0.4.3': 301 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 302 | engines: {node: '>=18.18'} 303 | 304 | '@img/sharp-darwin-arm64@0.33.5': 305 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 306 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 307 | cpu: [arm64] 308 | os: [darwin] 309 | 310 | '@img/sharp-darwin-x64@0.33.5': 311 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 312 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 313 | cpu: [x64] 314 | os: [darwin] 315 | 316 | '@img/sharp-libvips-darwin-arm64@1.0.4': 317 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 318 | cpu: [arm64] 319 | os: [darwin] 320 | 321 | '@img/sharp-libvips-darwin-x64@1.0.4': 322 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 323 | cpu: [x64] 324 | os: [darwin] 325 | 326 | '@img/sharp-libvips-linux-arm64@1.0.4': 327 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 328 | cpu: [arm64] 329 | os: [linux] 330 | 331 | '@img/sharp-libvips-linux-arm@1.0.5': 332 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 333 | cpu: [arm] 334 | os: [linux] 335 | 336 | '@img/sharp-libvips-linux-x64@1.0.4': 337 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 338 | cpu: [x64] 339 | os: [linux] 340 | 341 | '@img/sharp-linux-arm64@0.33.5': 342 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 343 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 344 | cpu: [arm64] 345 | os: [linux] 346 | 347 | '@img/sharp-linux-arm@0.33.5': 348 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 349 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 350 | cpu: [arm] 351 | os: [linux] 352 | 353 | '@img/sharp-linux-x64@0.33.5': 354 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 355 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 356 | cpu: [x64] 357 | os: [linux] 358 | 359 | '@img/sharp-win32-x64@0.33.5': 360 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 361 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 362 | cpu: [x64] 363 | os: [win32] 364 | 365 | '@nodelib/fs.scandir@2.1.5': 366 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 367 | engines: {node: '>= 8'} 368 | 369 | '@nodelib/fs.stat@2.0.5': 370 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 371 | engines: {node: '>= 8'} 372 | 373 | '@nodelib/fs.walk@1.2.8': 374 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 375 | engines: {node: '>= 8'} 376 | 377 | '@octokit/auth-token@6.0.0': 378 | resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} 379 | engines: {node: '>= 20'} 380 | 381 | '@octokit/core@7.0.3': 382 | resolution: {integrity: sha512-oNXsh2ywth5aowwIa7RKtawnkdH6LgU1ztfP9AIUCQCvzysB+WeU8o2kyyosDPwBZutPpjZDKPQGIzzrfTWweQ==} 383 | engines: {node: '>= 20'} 384 | 385 | '@octokit/endpoint@11.0.0': 386 | resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==} 387 | engines: {node: '>= 20'} 388 | 389 | '@octokit/graphql@9.0.1': 390 | resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==} 391 | engines: {node: '>= 20'} 392 | 393 | '@octokit/openapi-types@25.1.0': 394 | resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==} 395 | 396 | '@octokit/plugin-paginate-rest@13.1.1': 397 | resolution: {integrity: sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw==} 398 | engines: {node: '>= 20'} 399 | peerDependencies: 400 | '@octokit/core': '>=6' 401 | 402 | '@octokit/plugin-retry@8.0.1': 403 | resolution: {integrity: sha512-KUoYR77BjF5O3zcwDQHRRZsUvJwepobeqiSSdCJ8lWt27FZExzb0GgVxrhhfuyF6z2B2zpO0hN5pteni1sqWiw==} 404 | engines: {node: '>= 20'} 405 | peerDependencies: 406 | '@octokit/core': '>=7' 407 | 408 | '@octokit/plugin-throttling@11.0.1': 409 | resolution: {integrity: sha512-S+EVhy52D/272L7up58dr3FNSMXWuNZolkL4zMJBNIfIxyZuUcczsQAU4b5w6dewJXnKYVgSHSV5wxitMSW1kw==} 410 | engines: {node: '>= 20'} 411 | peerDependencies: 412 | '@octokit/core': ^7.0.0 413 | 414 | '@octokit/request-error@7.0.0': 415 | resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==} 416 | engines: {node: '>= 20'} 417 | 418 | '@octokit/request@10.0.3': 419 | resolution: {integrity: sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA==} 420 | engines: {node: '>= 20'} 421 | 422 | '@octokit/types@14.1.0': 423 | resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} 424 | 425 | '@pnpm/config.env-replace@1.1.0': 426 | resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} 427 | engines: {node: '>=12.22.0'} 428 | 429 | '@pnpm/network.ca-file@1.0.2': 430 | resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} 431 | engines: {node: '>=12.22.0'} 432 | 433 | '@pnpm/npm-conf@2.3.1': 434 | resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} 435 | engines: {node: '>=12'} 436 | 437 | '@sec-ant/readable-stream@0.4.1': 438 | resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} 439 | 440 | '@semantic-release/changelog@6.0.3': 441 | resolution: {integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==} 442 | engines: {node: '>=14.17'} 443 | peerDependencies: 444 | semantic-release: '>=18.0.0' 445 | 446 | '@semantic-release/commit-analyzer@13.0.1': 447 | resolution: {integrity: sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==} 448 | engines: {node: '>=20.8.1'} 449 | peerDependencies: 450 | semantic-release: '>=20.1.0' 451 | 452 | '@semantic-release/error@3.0.0': 453 | resolution: {integrity: sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==} 454 | engines: {node: '>=14.17'} 455 | 456 | '@semantic-release/error@4.0.0': 457 | resolution: {integrity: sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==} 458 | engines: {node: '>=18'} 459 | 460 | '@semantic-release/git@10.0.1': 461 | resolution: {integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==} 462 | engines: {node: '>=14.17'} 463 | peerDependencies: 464 | semantic-release: '>=18.0.0' 465 | 466 | '@semantic-release/github@11.0.5': 467 | resolution: {integrity: sha512-wJamzHteXwBdopvkTD6BJjPz1UHLm20twlVCSMA9zpd3B5KrOQX137jfTbNJT6ZVz3pXtg0S1DroQl4wifJ4WQ==} 468 | engines: {node: '>=20.8.1'} 469 | peerDependencies: 470 | semantic-release: '>=24.1.0' 471 | 472 | '@semantic-release/npm@12.0.2': 473 | resolution: {integrity: sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==} 474 | engines: {node: '>=20.8.1'} 475 | peerDependencies: 476 | semantic-release: '>=20.1.0' 477 | 478 | '@semantic-release/release-notes-generator@14.0.3': 479 | resolution: {integrity: sha512-XxAZRPWGwO5JwJtS83bRdoIhCiYIx8Vhr+u231pQAsdFIAbm19rSVJLdnBN+Avvk7CKvNQE/nJ4y7uqKH6WTiw==} 480 | engines: {node: '>=20.8.1'} 481 | peerDependencies: 482 | semantic-release: '>=20.1.0' 483 | 484 | '@sindresorhus/is@4.6.0': 485 | resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} 486 | engines: {node: '>=10'} 487 | 488 | '@sindresorhus/merge-streams@2.3.0': 489 | resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} 490 | engines: {node: '>=18'} 491 | 492 | '@sindresorhus/merge-streams@4.0.0': 493 | resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 494 | engines: {node: '>=18'} 495 | 496 | '@types/estree@1.0.8': 497 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 498 | 499 | '@types/json-schema@7.0.15': 500 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 501 | 502 | '@types/node@24.3.0': 503 | resolution: {integrity: sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow==} 504 | 505 | '@types/normalize-package-data@2.4.4': 506 | resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} 507 | 508 | '@typescript-eslint/eslint-plugin@8.20.0': 509 | resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} 510 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 511 | peerDependencies: 512 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 513 | eslint: ^8.57.0 || ^9.0.0 514 | typescript: '>=4.8.4 <5.8.0' 515 | 516 | '@typescript-eslint/eslint-plugin@8.41.0': 517 | resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==} 518 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 519 | peerDependencies: 520 | '@typescript-eslint/parser': ^8.41.0 521 | eslint: ^8.57.0 || ^9.0.0 522 | typescript: '>=4.8.4 <6.0.0' 523 | 524 | '@typescript-eslint/parser@8.20.0': 525 | resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} 526 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 527 | peerDependencies: 528 | eslint: ^8.57.0 || ^9.0.0 529 | typescript: '>=4.8.4 <5.8.0' 530 | 531 | '@typescript-eslint/parser@8.41.0': 532 | resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==} 533 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 534 | peerDependencies: 535 | eslint: ^8.57.0 || ^9.0.0 536 | typescript: '>=4.8.4 <6.0.0' 537 | 538 | '@typescript-eslint/project-service@8.41.0': 539 | resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} 540 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 541 | peerDependencies: 542 | typescript: '>=4.8.4 <6.0.0' 543 | 544 | '@typescript-eslint/scope-manager@8.20.0': 545 | resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} 546 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 547 | 548 | '@typescript-eslint/scope-manager@8.41.0': 549 | resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} 550 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 551 | 552 | '@typescript-eslint/tsconfig-utils@8.41.0': 553 | resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} 554 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 555 | peerDependencies: 556 | typescript: '>=4.8.4 <6.0.0' 557 | 558 | '@typescript-eslint/type-utils@8.20.0': 559 | resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} 560 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 561 | peerDependencies: 562 | eslint: ^8.57.0 || ^9.0.0 563 | typescript: '>=4.8.4 <5.8.0' 564 | 565 | '@typescript-eslint/type-utils@8.41.0': 566 | resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==} 567 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 568 | peerDependencies: 569 | eslint: ^8.57.0 || ^9.0.0 570 | typescript: '>=4.8.4 <6.0.0' 571 | 572 | '@typescript-eslint/types@8.20.0': 573 | resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} 574 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 575 | 576 | '@typescript-eslint/types@8.41.0': 577 | resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} 578 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 579 | 580 | '@typescript-eslint/typescript-estree@8.20.0': 581 | resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} 582 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 583 | peerDependencies: 584 | typescript: '>=4.8.4 <5.8.0' 585 | 586 | '@typescript-eslint/typescript-estree@8.41.0': 587 | resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==} 588 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 589 | peerDependencies: 590 | typescript: '>=4.8.4 <6.0.0' 591 | 592 | '@typescript-eslint/utils@8.20.0': 593 | resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} 594 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 595 | peerDependencies: 596 | eslint: ^8.57.0 || ^9.0.0 597 | typescript: '>=4.8.4 <5.8.0' 598 | 599 | '@typescript-eslint/utils@8.41.0': 600 | resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==} 601 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 602 | peerDependencies: 603 | eslint: ^8.57.0 || ^9.0.0 604 | typescript: '>=4.8.4 <6.0.0' 605 | 606 | '@typescript-eslint/visitor-keys@8.20.0': 607 | resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} 608 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 609 | 610 | '@typescript-eslint/visitor-keys@8.41.0': 611 | resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} 612 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 613 | 614 | '@zed-industries/agent-client-protocol@0.1.2': 615 | resolution: {integrity: sha512-A1RCN7Uf09vngbhBVLiZENenKYOYD2OGiILLGXPaSBloDbem8xmLaDmrKQuYl0kjLJ1DcWmVaHUv97n1l5vJ6w==} 616 | 617 | acorn-jsx@5.3.2: 618 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 619 | peerDependencies: 620 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 621 | 622 | acorn@8.15.0: 623 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 624 | engines: {node: '>=0.4.0'} 625 | hasBin: true 626 | 627 | agent-base@7.1.4: 628 | resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} 629 | engines: {node: '>= 14'} 630 | 631 | aggregate-error@3.1.0: 632 | resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 633 | engines: {node: '>=8'} 634 | 635 | aggregate-error@5.0.0: 636 | resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} 637 | engines: {node: '>=18'} 638 | 639 | ajv@6.12.6: 640 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 641 | 642 | ansi-escapes@7.0.0: 643 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} 644 | engines: {node: '>=18'} 645 | 646 | ansi-regex@5.0.1: 647 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 648 | engines: {node: '>=8'} 649 | 650 | ansi-regex@6.2.0: 651 | resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} 652 | engines: {node: '>=12'} 653 | 654 | ansi-styles@3.2.1: 655 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 656 | engines: {node: '>=4'} 657 | 658 | ansi-styles@4.3.0: 659 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 660 | engines: {node: '>=8'} 661 | 662 | any-promise@1.3.0: 663 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 664 | 665 | argparse@2.0.1: 666 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 667 | 668 | argv-formatter@1.0.0: 669 | resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} 670 | 671 | array-ify@1.0.0: 672 | resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} 673 | 674 | balanced-match@1.0.2: 675 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 676 | 677 | before-after-hook@4.0.0: 678 | resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} 679 | 680 | bottleneck@2.19.5: 681 | resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} 682 | 683 | brace-expansion@1.1.12: 684 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 685 | 686 | brace-expansion@2.0.2: 687 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 688 | 689 | braces@3.0.3: 690 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 691 | engines: {node: '>=8'} 692 | 693 | callsites@3.1.0: 694 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 695 | engines: {node: '>=6'} 696 | 697 | chalk@2.4.2: 698 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 699 | engines: {node: '>=4'} 700 | 701 | chalk@4.1.2: 702 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 703 | engines: {node: '>=10'} 704 | 705 | chalk@5.6.0: 706 | resolution: {integrity: sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==} 707 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 708 | 709 | char-regex@1.0.2: 710 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 711 | engines: {node: '>=10'} 712 | 713 | clean-stack@2.2.0: 714 | resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 715 | engines: {node: '>=6'} 716 | 717 | clean-stack@5.2.0: 718 | resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==} 719 | engines: {node: '>=14.16'} 720 | 721 | cli-highlight@2.1.11: 722 | resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} 723 | engines: {node: '>=8.0.0', npm: '>=5.0.0'} 724 | hasBin: true 725 | 726 | cli-table3@0.6.5: 727 | resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} 728 | engines: {node: 10.* || >= 12.*} 729 | 730 | cliui@7.0.4: 731 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 732 | 733 | cliui@8.0.1: 734 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 735 | engines: {node: '>=12'} 736 | 737 | color-convert@1.9.3: 738 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 739 | 740 | color-convert@2.0.1: 741 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 742 | engines: {node: '>=7.0.0'} 743 | 744 | color-name@1.1.3: 745 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 746 | 747 | color-name@1.1.4: 748 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 749 | 750 | compare-func@2.0.0: 751 | resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} 752 | 753 | concat-map@0.0.1: 754 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 755 | 756 | config-chain@1.1.13: 757 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} 758 | 759 | conventional-changelog-angular@8.0.0: 760 | resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} 761 | engines: {node: '>=18'} 762 | 763 | conventional-changelog-conventionalcommits@8.0.0: 764 | resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} 765 | engines: {node: '>=18'} 766 | 767 | conventional-changelog-writer@8.2.0: 768 | resolution: {integrity: sha512-Y2aW4596l9AEvFJRwFGJGiQjt2sBYTjPD18DdvxX9Vpz0Z7HQ+g1Z+6iYDAm1vR3QOJrDBkRHixHK/+FhkR6Pw==} 769 | engines: {node: '>=18'} 770 | hasBin: true 771 | 772 | conventional-commits-filter@5.0.0: 773 | resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} 774 | engines: {node: '>=18'} 775 | 776 | conventional-commits-parser@6.2.0: 777 | resolution: {integrity: sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==} 778 | engines: {node: '>=18'} 779 | hasBin: true 780 | 781 | convert-hrtime@5.0.0: 782 | resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} 783 | engines: {node: '>=12'} 784 | 785 | core-util-is@1.0.3: 786 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 787 | 788 | cosmiconfig@9.0.0: 789 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} 790 | engines: {node: '>=14'} 791 | peerDependencies: 792 | typescript: '>=4.9.5' 793 | peerDependenciesMeta: 794 | typescript: 795 | optional: true 796 | 797 | cross-spawn@7.0.6: 798 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 799 | engines: {node: '>= 8'} 800 | 801 | crypto-random-string@4.0.0: 802 | resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} 803 | engines: {node: '>=12'} 804 | 805 | debug@4.4.1: 806 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 807 | engines: {node: '>=6.0'} 808 | peerDependencies: 809 | supports-color: '*' 810 | peerDependenciesMeta: 811 | supports-color: 812 | optional: true 813 | 814 | deep-extend@0.6.0: 815 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 816 | engines: {node: '>=4.0.0'} 817 | 818 | deep-is@0.1.4: 819 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 820 | 821 | dir-glob@3.0.1: 822 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 823 | engines: {node: '>=8'} 824 | 825 | dot-prop@5.3.0: 826 | resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} 827 | engines: {node: '>=8'} 828 | 829 | duplexer2@0.1.4: 830 | resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} 831 | 832 | emoji-regex@8.0.0: 833 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 834 | 835 | emojilib@2.4.0: 836 | resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} 837 | 838 | env-ci@11.1.1: 839 | resolution: {integrity: sha512-mT3ks8F0kwpo7SYNds6nWj0PaRh+qJxIeBVBXAKTN9hphAzZv7s0QAZQbqnB1fAv/r4pJUGE15BV9UrS31FP2w==} 840 | engines: {node: ^18.17 || >=20.6.1} 841 | 842 | env-paths@2.2.1: 843 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 844 | engines: {node: '>=6'} 845 | 846 | environment@1.1.0: 847 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} 848 | engines: {node: '>=18'} 849 | 850 | error-ex@1.3.2: 851 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 852 | 853 | esbuild@0.25.9: 854 | resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} 855 | engines: {node: '>=18'} 856 | hasBin: true 857 | 858 | escalade@3.2.0: 859 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 860 | engines: {node: '>=6'} 861 | 862 | escape-string-regexp@1.0.5: 863 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 864 | engines: {node: '>=0.8.0'} 865 | 866 | escape-string-regexp@4.0.0: 867 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 868 | engines: {node: '>=10'} 869 | 870 | escape-string-regexp@5.0.0: 871 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 872 | engines: {node: '>=12'} 873 | 874 | eslint-scope@8.4.0: 875 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 876 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 877 | 878 | eslint-visitor-keys@3.4.3: 879 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 880 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 881 | 882 | eslint-visitor-keys@4.2.1: 883 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 884 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 885 | 886 | eslint@9.34.0: 887 | resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} 888 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 889 | hasBin: true 890 | peerDependencies: 891 | jiti: '*' 892 | peerDependenciesMeta: 893 | jiti: 894 | optional: true 895 | 896 | espree@10.4.0: 897 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 898 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 899 | 900 | esquery@1.6.0: 901 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 902 | engines: {node: '>=0.10'} 903 | 904 | esrecurse@4.3.0: 905 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 906 | engines: {node: '>=4.0'} 907 | 908 | estraverse@5.3.0: 909 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 910 | engines: {node: '>=4.0'} 911 | 912 | esutils@2.0.3: 913 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 914 | engines: {node: '>=0.10.0'} 915 | 916 | execa@5.1.1: 917 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 918 | engines: {node: '>=10'} 919 | 920 | execa@8.0.1: 921 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 922 | engines: {node: '>=16.17'} 923 | 924 | execa@9.6.0: 925 | resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} 926 | engines: {node: ^18.19.0 || >=20.5.0} 927 | 928 | fast-content-type-parse@3.0.0: 929 | resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} 930 | 931 | fast-deep-equal@3.1.3: 932 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 933 | 934 | fast-glob@3.3.3: 935 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 936 | engines: {node: '>=8.6.0'} 937 | 938 | fast-json-stable-stringify@2.1.0: 939 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 940 | 941 | fast-levenshtein@2.0.6: 942 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 943 | 944 | fastq@1.19.1: 945 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 946 | 947 | figures@2.0.0: 948 | resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} 949 | engines: {node: '>=4'} 950 | 951 | figures@6.1.0: 952 | resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} 953 | engines: {node: '>=18'} 954 | 955 | file-entry-cache@8.0.0: 956 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 957 | engines: {node: '>=16.0.0'} 958 | 959 | fill-range@7.1.1: 960 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 961 | engines: {node: '>=8'} 962 | 963 | find-up-simple@1.0.1: 964 | resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} 965 | engines: {node: '>=18'} 966 | 967 | find-up@2.1.0: 968 | resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} 969 | engines: {node: '>=4'} 970 | 971 | find-up@5.0.0: 972 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 973 | engines: {node: '>=10'} 974 | 975 | find-versions@6.0.0: 976 | resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} 977 | engines: {node: '>=18'} 978 | 979 | flat-cache@4.0.1: 980 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 981 | engines: {node: '>=16'} 982 | 983 | flatted@3.3.3: 984 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 985 | 986 | from2@2.3.0: 987 | resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} 988 | 989 | fs-extra@11.3.1: 990 | resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} 991 | engines: {node: '>=14.14'} 992 | 993 | fsevents@2.3.3: 994 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 995 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 996 | os: [darwin] 997 | 998 | function-timeout@1.0.2: 999 | resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==} 1000 | engines: {node: '>=18'} 1001 | 1002 | get-caller-file@2.0.5: 1003 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1004 | engines: {node: 6.* || 8.* || >= 10.*} 1005 | 1006 | get-stream@6.0.1: 1007 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1008 | engines: {node: '>=10'} 1009 | 1010 | get-stream@7.0.1: 1011 | resolution: {integrity: sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==} 1012 | engines: {node: '>=16'} 1013 | 1014 | get-stream@8.0.1: 1015 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 1016 | engines: {node: '>=16'} 1017 | 1018 | get-stream@9.0.1: 1019 | resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} 1020 | engines: {node: '>=18'} 1021 | 1022 | get-tsconfig@4.10.1: 1023 | resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} 1024 | 1025 | git-log-parser@1.2.1: 1026 | resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} 1027 | 1028 | glob-parent@5.1.2: 1029 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1030 | engines: {node: '>= 6'} 1031 | 1032 | glob-parent@6.0.2: 1033 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1034 | engines: {node: '>=10.13.0'} 1035 | 1036 | globals@14.0.0: 1037 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1038 | engines: {node: '>=18'} 1039 | 1040 | globals@15.14.0: 1041 | resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} 1042 | engines: {node: '>=18'} 1043 | 1044 | globby@14.1.0: 1045 | resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} 1046 | engines: {node: '>=18'} 1047 | 1048 | graceful-fs@4.2.10: 1049 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1050 | 1051 | graceful-fs@4.2.11: 1052 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1053 | 1054 | graphemer@1.4.0: 1055 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1056 | 1057 | handlebars@4.7.8: 1058 | resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} 1059 | engines: {node: '>=0.4.7'} 1060 | hasBin: true 1061 | 1062 | has-flag@3.0.0: 1063 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1064 | engines: {node: '>=4'} 1065 | 1066 | has-flag@4.0.0: 1067 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1068 | engines: {node: '>=8'} 1069 | 1070 | highlight.js@10.7.3: 1071 | resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} 1072 | 1073 | hook-std@3.0.0: 1074 | resolution: {integrity: sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==} 1075 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1076 | 1077 | hosted-git-info@7.0.2: 1078 | resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} 1079 | engines: {node: ^16.14.0 || >=18.0.0} 1080 | 1081 | hosted-git-info@8.1.0: 1082 | resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} 1083 | engines: {node: ^18.17.0 || >=20.5.0} 1084 | 1085 | http-proxy-agent@7.0.2: 1086 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} 1087 | engines: {node: '>= 14'} 1088 | 1089 | https-proxy-agent@7.0.6: 1090 | resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 1091 | engines: {node: '>= 14'} 1092 | 1093 | human-signals@2.1.0: 1094 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1095 | engines: {node: '>=10.17.0'} 1096 | 1097 | human-signals@5.0.0: 1098 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 1099 | engines: {node: '>=16.17.0'} 1100 | 1101 | human-signals@8.0.1: 1102 | resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} 1103 | engines: {node: '>=18.18.0'} 1104 | 1105 | ignore@5.3.2: 1106 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1107 | engines: {node: '>= 4'} 1108 | 1109 | ignore@7.0.5: 1110 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1111 | engines: {node: '>= 4'} 1112 | 1113 | import-fresh@3.3.1: 1114 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1115 | engines: {node: '>=6'} 1116 | 1117 | import-from-esm@1.3.4: 1118 | resolution: {integrity: sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==} 1119 | engines: {node: '>=16.20'} 1120 | 1121 | import-from-esm@2.0.0: 1122 | resolution: {integrity: sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==} 1123 | engines: {node: '>=18.20'} 1124 | 1125 | import-meta-resolve@4.1.0: 1126 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 1127 | 1128 | imurmurhash@0.1.4: 1129 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1130 | engines: {node: '>=0.8.19'} 1131 | 1132 | indent-string@4.0.0: 1133 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1134 | engines: {node: '>=8'} 1135 | 1136 | indent-string@5.0.0: 1137 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1138 | engines: {node: '>=12'} 1139 | 1140 | index-to-position@1.1.0: 1141 | resolution: {integrity: sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==} 1142 | engines: {node: '>=18'} 1143 | 1144 | inherits@2.0.4: 1145 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1146 | 1147 | ini@1.3.8: 1148 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 1149 | 1150 | into-stream@7.0.0: 1151 | resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} 1152 | engines: {node: '>=12'} 1153 | 1154 | is-arrayish@0.2.1: 1155 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1156 | 1157 | is-extglob@2.1.1: 1158 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1159 | engines: {node: '>=0.10.0'} 1160 | 1161 | is-fullwidth-code-point@3.0.0: 1162 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1163 | engines: {node: '>=8'} 1164 | 1165 | is-glob@4.0.3: 1166 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1167 | engines: {node: '>=0.10.0'} 1168 | 1169 | is-number@7.0.0: 1170 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1171 | engines: {node: '>=0.12.0'} 1172 | 1173 | is-obj@2.0.0: 1174 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} 1175 | engines: {node: '>=8'} 1176 | 1177 | is-plain-obj@4.1.0: 1178 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1179 | engines: {node: '>=12'} 1180 | 1181 | is-stream@2.0.1: 1182 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1183 | engines: {node: '>=8'} 1184 | 1185 | is-stream@3.0.0: 1186 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1187 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1188 | 1189 | is-stream@4.0.1: 1190 | resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} 1191 | engines: {node: '>=18'} 1192 | 1193 | is-unicode-supported@2.1.0: 1194 | resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} 1195 | engines: {node: '>=18'} 1196 | 1197 | isarray@1.0.0: 1198 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1199 | 1200 | isexe@2.0.0: 1201 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1202 | 1203 | issue-parser@7.0.1: 1204 | resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} 1205 | engines: {node: ^18.17 || >=20.6.1} 1206 | 1207 | java-properties@1.0.2: 1208 | resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==} 1209 | engines: {node: '>= 0.6.0'} 1210 | 1211 | js-tokens@4.0.0: 1212 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1213 | 1214 | js-yaml@4.1.0: 1215 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1216 | hasBin: true 1217 | 1218 | json-buffer@3.0.1: 1219 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1220 | 1221 | json-parse-better-errors@1.0.2: 1222 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} 1223 | 1224 | json-parse-even-better-errors@2.3.1: 1225 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1226 | 1227 | json-schema-traverse@0.4.1: 1228 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1229 | 1230 | json-stable-stringify-without-jsonify@1.0.1: 1231 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1232 | 1233 | jsonfile@6.2.0: 1234 | resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} 1235 | 1236 | keyv@4.5.4: 1237 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1238 | 1239 | levn@0.4.1: 1240 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1241 | engines: {node: '>= 0.8.0'} 1242 | 1243 | lines-and-columns@1.2.4: 1244 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1245 | 1246 | load-json-file@4.0.0: 1247 | resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} 1248 | engines: {node: '>=4'} 1249 | 1250 | locate-path@2.0.0: 1251 | resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} 1252 | engines: {node: '>=4'} 1253 | 1254 | locate-path@6.0.0: 1255 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1256 | engines: {node: '>=10'} 1257 | 1258 | lodash-es@4.17.21: 1259 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 1260 | 1261 | lodash.capitalize@4.2.1: 1262 | resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} 1263 | 1264 | lodash.escaperegexp@4.1.2: 1265 | resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} 1266 | 1267 | lodash.isplainobject@4.0.6: 1268 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 1269 | 1270 | lodash.isstring@4.0.1: 1271 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 1272 | 1273 | lodash.merge@4.6.2: 1274 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1275 | 1276 | lodash.uniqby@4.7.0: 1277 | resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} 1278 | 1279 | lodash@4.17.21: 1280 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1281 | 1282 | lru-cache@10.4.3: 1283 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1284 | 1285 | marked-terminal@7.3.0: 1286 | resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} 1287 | engines: {node: '>=16.0.0'} 1288 | peerDependencies: 1289 | marked: '>=1 <16' 1290 | 1291 | marked@12.0.2: 1292 | resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} 1293 | engines: {node: '>= 18'} 1294 | hasBin: true 1295 | 1296 | meow@13.2.0: 1297 | resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} 1298 | engines: {node: '>=18'} 1299 | 1300 | merge-stream@2.0.0: 1301 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1302 | 1303 | merge2@1.4.1: 1304 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1305 | engines: {node: '>= 8'} 1306 | 1307 | micromatch@4.0.8: 1308 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1309 | engines: {node: '>=8.6'} 1310 | 1311 | mime@4.0.7: 1312 | resolution: {integrity: sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==} 1313 | engines: {node: '>=16'} 1314 | hasBin: true 1315 | 1316 | mimic-fn@2.1.0: 1317 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1318 | engines: {node: '>=6'} 1319 | 1320 | mimic-fn@4.0.0: 1321 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1322 | engines: {node: '>=12'} 1323 | 1324 | minimatch@3.1.2: 1325 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1326 | 1327 | minimatch@9.0.5: 1328 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1329 | engines: {node: '>=16 || 14 >=14.17'} 1330 | 1331 | minimist@1.2.8: 1332 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1333 | 1334 | ms@2.1.3: 1335 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1336 | 1337 | mz@2.7.0: 1338 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1339 | 1340 | natural-compare@1.4.0: 1341 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1342 | 1343 | neo-async@2.6.2: 1344 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 1345 | 1346 | nerf-dart@1.0.0: 1347 | resolution: {integrity: sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==} 1348 | 1349 | node-emoji@2.2.0: 1350 | resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} 1351 | engines: {node: '>=18'} 1352 | 1353 | normalize-package-data@6.0.2: 1354 | resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} 1355 | engines: {node: ^16.14.0 || >=18.0.0} 1356 | 1357 | normalize-url@8.0.2: 1358 | resolution: {integrity: sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==} 1359 | engines: {node: '>=14.16'} 1360 | 1361 | npm-run-path@4.0.1: 1362 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1363 | engines: {node: '>=8'} 1364 | 1365 | npm-run-path@5.3.0: 1366 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 1367 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1368 | 1369 | npm-run-path@6.0.0: 1370 | resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} 1371 | engines: {node: '>=18'} 1372 | 1373 | npm@10.9.3: 1374 | resolution: {integrity: sha512-6Eh1u5Q+kIVXeA8e7l2c/HpnFFcwrkt37xDMujD5be1gloWa9p6j3Fsv3mByXXmqJHy+2cElRMML8opNT7xIJQ==} 1375 | engines: {node: ^18.17.0 || >=20.5.0} 1376 | hasBin: true 1377 | bundledDependencies: 1378 | - '@isaacs/string-locale-compare' 1379 | - '@npmcli/arborist' 1380 | - '@npmcli/config' 1381 | - '@npmcli/fs' 1382 | - '@npmcli/map-workspaces' 1383 | - '@npmcli/package-json' 1384 | - '@npmcli/promise-spawn' 1385 | - '@npmcli/redact' 1386 | - '@npmcli/run-script' 1387 | - '@sigstore/tuf' 1388 | - abbrev 1389 | - archy 1390 | - cacache 1391 | - chalk 1392 | - ci-info 1393 | - cli-columns 1394 | - fastest-levenshtein 1395 | - fs-minipass 1396 | - glob 1397 | - graceful-fs 1398 | - hosted-git-info 1399 | - ini 1400 | - init-package-json 1401 | - is-cidr 1402 | - json-parse-even-better-errors 1403 | - libnpmaccess 1404 | - libnpmdiff 1405 | - libnpmexec 1406 | - libnpmfund 1407 | - libnpmhook 1408 | - libnpmorg 1409 | - libnpmpack 1410 | - libnpmpublish 1411 | - libnpmsearch 1412 | - libnpmteam 1413 | - libnpmversion 1414 | - make-fetch-happen 1415 | - minimatch 1416 | - minipass 1417 | - minipass-pipeline 1418 | - ms 1419 | - node-gyp 1420 | - nopt 1421 | - normalize-package-data 1422 | - npm-audit-report 1423 | - npm-install-checks 1424 | - npm-package-arg 1425 | - npm-pick-manifest 1426 | - npm-profile 1427 | - npm-registry-fetch 1428 | - npm-user-validate 1429 | - p-map 1430 | - pacote 1431 | - parse-conflict-json 1432 | - proc-log 1433 | - qrcode-terminal 1434 | - read 1435 | - semver 1436 | - spdx-expression-parse 1437 | - ssri 1438 | - supports-color 1439 | - tar 1440 | - text-table 1441 | - tiny-relative-date 1442 | - treeverse 1443 | - validate-npm-package-name 1444 | - which 1445 | - write-file-atomic 1446 | 1447 | object-assign@4.1.1: 1448 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1449 | engines: {node: '>=0.10.0'} 1450 | 1451 | onetime@5.1.2: 1452 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1453 | engines: {node: '>=6'} 1454 | 1455 | onetime@6.0.0: 1456 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1457 | engines: {node: '>=12'} 1458 | 1459 | optionator@0.9.4: 1460 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1461 | engines: {node: '>= 0.8.0'} 1462 | 1463 | p-each-series@3.0.0: 1464 | resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==} 1465 | engines: {node: '>=12'} 1466 | 1467 | p-filter@4.1.0: 1468 | resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} 1469 | engines: {node: '>=18'} 1470 | 1471 | p-is-promise@3.0.0: 1472 | resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} 1473 | engines: {node: '>=8'} 1474 | 1475 | p-limit@1.3.0: 1476 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 1477 | engines: {node: '>=4'} 1478 | 1479 | p-limit@3.1.0: 1480 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1481 | engines: {node: '>=10'} 1482 | 1483 | p-locate@2.0.0: 1484 | resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} 1485 | engines: {node: '>=4'} 1486 | 1487 | p-locate@5.0.0: 1488 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1489 | engines: {node: '>=10'} 1490 | 1491 | p-map@7.0.3: 1492 | resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} 1493 | engines: {node: '>=18'} 1494 | 1495 | p-reduce@2.1.0: 1496 | resolution: {integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==} 1497 | engines: {node: '>=8'} 1498 | 1499 | p-reduce@3.0.0: 1500 | resolution: {integrity: sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==} 1501 | engines: {node: '>=12'} 1502 | 1503 | p-try@1.0.0: 1504 | resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} 1505 | engines: {node: '>=4'} 1506 | 1507 | parent-module@1.0.1: 1508 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1509 | engines: {node: '>=6'} 1510 | 1511 | parse-json@4.0.0: 1512 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} 1513 | engines: {node: '>=4'} 1514 | 1515 | parse-json@5.2.0: 1516 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1517 | engines: {node: '>=8'} 1518 | 1519 | parse-json@8.3.0: 1520 | resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} 1521 | engines: {node: '>=18'} 1522 | 1523 | parse-ms@4.0.0: 1524 | resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} 1525 | engines: {node: '>=18'} 1526 | 1527 | parse5-htmlparser2-tree-adapter@6.0.1: 1528 | resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} 1529 | 1530 | parse5@5.1.1: 1531 | resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} 1532 | 1533 | parse5@6.0.1: 1534 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 1535 | 1536 | path-exists@3.0.0: 1537 | resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} 1538 | engines: {node: '>=4'} 1539 | 1540 | path-exists@4.0.0: 1541 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1542 | engines: {node: '>=8'} 1543 | 1544 | path-key@3.1.1: 1545 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1546 | engines: {node: '>=8'} 1547 | 1548 | path-key@4.0.0: 1549 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1550 | engines: {node: '>=12'} 1551 | 1552 | path-type@4.0.0: 1553 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1554 | engines: {node: '>=8'} 1555 | 1556 | path-type@6.0.0: 1557 | resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} 1558 | engines: {node: '>=18'} 1559 | 1560 | picocolors@1.1.1: 1561 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1562 | 1563 | picomatch@2.3.1: 1564 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1565 | engines: {node: '>=8.6'} 1566 | 1567 | pify@3.0.0: 1568 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} 1569 | engines: {node: '>=4'} 1570 | 1571 | pkg-conf@2.1.0: 1572 | resolution: {integrity: sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==} 1573 | engines: {node: '>=4'} 1574 | 1575 | prelude-ls@1.2.1: 1576 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1577 | engines: {node: '>= 0.8.0'} 1578 | 1579 | prettier@3.6.2: 1580 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 1581 | engines: {node: '>=14'} 1582 | hasBin: true 1583 | 1584 | pretty-ms@9.2.0: 1585 | resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} 1586 | engines: {node: '>=18'} 1587 | 1588 | process-nextick-args@2.0.1: 1589 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 1590 | 1591 | proto-list@1.2.4: 1592 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} 1593 | 1594 | punycode@2.3.1: 1595 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1596 | engines: {node: '>=6'} 1597 | 1598 | queue-microtask@1.2.3: 1599 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1600 | 1601 | rc@1.2.8: 1602 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 1603 | hasBin: true 1604 | 1605 | read-package-up@11.0.0: 1606 | resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} 1607 | engines: {node: '>=18'} 1608 | 1609 | read-pkg@9.0.1: 1610 | resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} 1611 | engines: {node: '>=18'} 1612 | 1613 | readable-stream@2.3.8: 1614 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 1615 | 1616 | registry-auth-token@5.1.0: 1617 | resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} 1618 | engines: {node: '>=14'} 1619 | 1620 | require-directory@2.1.1: 1621 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1622 | engines: {node: '>=0.10.0'} 1623 | 1624 | resolve-from@4.0.0: 1625 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1626 | engines: {node: '>=4'} 1627 | 1628 | resolve-from@5.0.0: 1629 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1630 | engines: {node: '>=8'} 1631 | 1632 | resolve-pkg-maps@1.0.0: 1633 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1634 | 1635 | reusify@1.1.0: 1636 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1637 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1638 | 1639 | run-parallel@1.2.0: 1640 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1641 | 1642 | safe-buffer@5.1.2: 1643 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1644 | 1645 | semantic-release@24.2.0: 1646 | resolution: {integrity: sha512-fQfn6e/aYToRtVJYKqneFM1Rg3KP2gh3wSWtpYsLlz6uaPKlISrTzvYAFn+mYWo07F0X1Cz5ucU89AVE8X1mbg==} 1647 | engines: {node: '>=20.8.1'} 1648 | hasBin: true 1649 | 1650 | semver-diff@4.0.0: 1651 | resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} 1652 | engines: {node: '>=12'} 1653 | 1654 | semver-regex@4.0.5: 1655 | resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} 1656 | engines: {node: '>=12'} 1657 | 1658 | semver@7.7.2: 1659 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1660 | engines: {node: '>=10'} 1661 | hasBin: true 1662 | 1663 | shebang-command@2.0.0: 1664 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1665 | engines: {node: '>=8'} 1666 | 1667 | shebang-regex@3.0.0: 1668 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1669 | engines: {node: '>=8'} 1670 | 1671 | signal-exit@3.0.7: 1672 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1673 | 1674 | signal-exit@4.1.0: 1675 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1676 | engines: {node: '>=14'} 1677 | 1678 | signale@1.4.0: 1679 | resolution: {integrity: sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==} 1680 | engines: {node: '>=6'} 1681 | 1682 | skin-tone@2.0.0: 1683 | resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} 1684 | engines: {node: '>=8'} 1685 | 1686 | slash@5.1.0: 1687 | resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} 1688 | engines: {node: '>=14.16'} 1689 | 1690 | source-map@0.6.1: 1691 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1692 | engines: {node: '>=0.10.0'} 1693 | 1694 | spawn-error-forwarder@1.0.0: 1695 | resolution: {integrity: sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==} 1696 | 1697 | spdx-correct@3.2.0: 1698 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 1699 | 1700 | spdx-exceptions@2.5.0: 1701 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 1702 | 1703 | spdx-expression-parse@3.0.1: 1704 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1705 | 1706 | spdx-license-ids@3.0.22: 1707 | resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} 1708 | 1709 | split2@1.0.0: 1710 | resolution: {integrity: sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==} 1711 | 1712 | stream-combiner2@1.1.1: 1713 | resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} 1714 | 1715 | string-width@4.2.3: 1716 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1717 | engines: {node: '>=8'} 1718 | 1719 | string_decoder@1.1.1: 1720 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1721 | 1722 | strip-ansi@6.0.1: 1723 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1724 | engines: {node: '>=8'} 1725 | 1726 | strip-bom@3.0.0: 1727 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1728 | engines: {node: '>=4'} 1729 | 1730 | strip-final-newline@2.0.0: 1731 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1732 | engines: {node: '>=6'} 1733 | 1734 | strip-final-newline@3.0.0: 1735 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1736 | engines: {node: '>=12'} 1737 | 1738 | strip-final-newline@4.0.0: 1739 | resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} 1740 | engines: {node: '>=18'} 1741 | 1742 | strip-json-comments@2.0.1: 1743 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 1744 | engines: {node: '>=0.10.0'} 1745 | 1746 | strip-json-comments@3.1.1: 1747 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1748 | engines: {node: '>=8'} 1749 | 1750 | super-regex@1.0.0: 1751 | resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==} 1752 | engines: {node: '>=18'} 1753 | 1754 | supports-color@5.5.0: 1755 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1756 | engines: {node: '>=4'} 1757 | 1758 | supports-color@7.2.0: 1759 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1760 | engines: {node: '>=8'} 1761 | 1762 | supports-hyperlinks@3.2.0: 1763 | resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} 1764 | engines: {node: '>=14.18'} 1765 | 1766 | temp-dir@3.0.0: 1767 | resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} 1768 | engines: {node: '>=14.16'} 1769 | 1770 | tempy@3.1.0: 1771 | resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} 1772 | engines: {node: '>=14.16'} 1773 | 1774 | thenify-all@1.6.0: 1775 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1776 | engines: {node: '>=0.8'} 1777 | 1778 | thenify@3.3.1: 1779 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1780 | 1781 | through2@2.0.5: 1782 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} 1783 | 1784 | time-span@5.1.0: 1785 | resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} 1786 | engines: {node: '>=12'} 1787 | 1788 | to-regex-range@5.0.1: 1789 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1790 | engines: {node: '>=8.0'} 1791 | 1792 | traverse@0.6.8: 1793 | resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} 1794 | engines: {node: '>= 0.4'} 1795 | 1796 | ts-api-utils@2.1.0: 1797 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1798 | engines: {node: '>=18.12'} 1799 | peerDependencies: 1800 | typescript: '>=4.8.4' 1801 | 1802 | tsx@4.20.5: 1803 | resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} 1804 | engines: {node: '>=18.0.0'} 1805 | hasBin: true 1806 | 1807 | type-check@0.4.0: 1808 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1809 | engines: {node: '>= 0.8.0'} 1810 | 1811 | type-fest@1.4.0: 1812 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} 1813 | engines: {node: '>=10'} 1814 | 1815 | type-fest@2.19.0: 1816 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} 1817 | engines: {node: '>=12.20'} 1818 | 1819 | type-fest@4.41.0: 1820 | resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 1821 | engines: {node: '>=16'} 1822 | 1823 | typescript-eslint@8.20.0: 1824 | resolution: {integrity: sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==} 1825 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1826 | peerDependencies: 1827 | eslint: ^8.57.0 || ^9.0.0 1828 | typescript: '>=4.8.4 <5.8.0' 1829 | 1830 | typescript@5.9.2: 1831 | resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 1832 | engines: {node: '>=14.17'} 1833 | hasBin: true 1834 | 1835 | uglify-js@3.19.3: 1836 | resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} 1837 | engines: {node: '>=0.8.0'} 1838 | hasBin: true 1839 | 1840 | undici-types@7.10.0: 1841 | resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} 1842 | 1843 | unicode-emoji-modifier-base@1.0.0: 1844 | resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} 1845 | engines: {node: '>=4'} 1846 | 1847 | unicorn-magic@0.1.0: 1848 | resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} 1849 | engines: {node: '>=18'} 1850 | 1851 | unicorn-magic@0.3.0: 1852 | resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} 1853 | engines: {node: '>=18'} 1854 | 1855 | unique-string@3.0.0: 1856 | resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} 1857 | engines: {node: '>=12'} 1858 | 1859 | universal-user-agent@7.0.3: 1860 | resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} 1861 | 1862 | universalify@2.0.1: 1863 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 1864 | engines: {node: '>= 10.0.0'} 1865 | 1866 | uri-js@4.4.1: 1867 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1868 | 1869 | url-join@5.0.0: 1870 | resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} 1871 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1872 | 1873 | util-deprecate@1.0.2: 1874 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1875 | 1876 | validate-npm-package-license@3.0.4: 1877 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1878 | 1879 | which@2.0.2: 1880 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1881 | engines: {node: '>= 8'} 1882 | hasBin: true 1883 | 1884 | word-wrap@1.2.5: 1885 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1886 | engines: {node: '>=0.10.0'} 1887 | 1888 | wordwrap@1.0.0: 1889 | resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} 1890 | 1891 | wrap-ansi@7.0.0: 1892 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1893 | engines: {node: '>=10'} 1894 | 1895 | xtend@4.0.2: 1896 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 1897 | engines: {node: '>=0.4'} 1898 | 1899 | y18n@5.0.8: 1900 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1901 | engines: {node: '>=10'} 1902 | 1903 | yargs-parser@20.2.9: 1904 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 1905 | engines: {node: '>=10'} 1906 | 1907 | yargs-parser@21.1.1: 1908 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1909 | engines: {node: '>=12'} 1910 | 1911 | yargs@16.2.0: 1912 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 1913 | engines: {node: '>=10'} 1914 | 1915 | yargs@17.7.2: 1916 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1917 | engines: {node: '>=12'} 1918 | 1919 | yocto-queue@0.1.0: 1920 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1921 | engines: {node: '>=10'} 1922 | 1923 | yoctocolors@2.1.2: 1924 | resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} 1925 | engines: {node: '>=18'} 1926 | 1927 | zod@3.25.76: 1928 | resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 1929 | 1930 | snapshots: 1931 | 1932 | '@anthropic-ai/claude-code@1.0.98': 1933 | optionalDependencies: 1934 | '@img/sharp-darwin-arm64': 0.33.5 1935 | '@img/sharp-darwin-x64': 0.33.5 1936 | '@img/sharp-linux-arm': 0.33.5 1937 | '@img/sharp-linux-arm64': 0.33.5 1938 | '@img/sharp-linux-x64': 0.33.5 1939 | '@img/sharp-win32-x64': 0.33.5 1940 | 1941 | '@babel/code-frame@7.27.1': 1942 | dependencies: 1943 | '@babel/helper-validator-identifier': 7.27.1 1944 | js-tokens: 4.0.0 1945 | picocolors: 1.1.1 1946 | 1947 | '@babel/helper-validator-identifier@7.27.1': {} 1948 | 1949 | '@colors/colors@1.5.0': 1950 | optional: true 1951 | 1952 | '@esbuild/aix-ppc64@0.25.9': 1953 | optional: true 1954 | 1955 | '@esbuild/android-arm64@0.25.9': 1956 | optional: true 1957 | 1958 | '@esbuild/android-arm@0.25.9': 1959 | optional: true 1960 | 1961 | '@esbuild/android-x64@0.25.9': 1962 | optional: true 1963 | 1964 | '@esbuild/darwin-arm64@0.25.9': 1965 | optional: true 1966 | 1967 | '@esbuild/darwin-x64@0.25.9': 1968 | optional: true 1969 | 1970 | '@esbuild/freebsd-arm64@0.25.9': 1971 | optional: true 1972 | 1973 | '@esbuild/freebsd-x64@0.25.9': 1974 | optional: true 1975 | 1976 | '@esbuild/linux-arm64@0.25.9': 1977 | optional: true 1978 | 1979 | '@esbuild/linux-arm@0.25.9': 1980 | optional: true 1981 | 1982 | '@esbuild/linux-ia32@0.25.9': 1983 | optional: true 1984 | 1985 | '@esbuild/linux-loong64@0.25.9': 1986 | optional: true 1987 | 1988 | '@esbuild/linux-mips64el@0.25.9': 1989 | optional: true 1990 | 1991 | '@esbuild/linux-ppc64@0.25.9': 1992 | optional: true 1993 | 1994 | '@esbuild/linux-riscv64@0.25.9': 1995 | optional: true 1996 | 1997 | '@esbuild/linux-s390x@0.25.9': 1998 | optional: true 1999 | 2000 | '@esbuild/linux-x64@0.25.9': 2001 | optional: true 2002 | 2003 | '@esbuild/netbsd-arm64@0.25.9': 2004 | optional: true 2005 | 2006 | '@esbuild/netbsd-x64@0.25.9': 2007 | optional: true 2008 | 2009 | '@esbuild/openbsd-arm64@0.25.9': 2010 | optional: true 2011 | 2012 | '@esbuild/openbsd-x64@0.25.9': 2013 | optional: true 2014 | 2015 | '@esbuild/openharmony-arm64@0.25.9': 2016 | optional: true 2017 | 2018 | '@esbuild/sunos-x64@0.25.9': 2019 | optional: true 2020 | 2021 | '@esbuild/win32-arm64@0.25.9': 2022 | optional: true 2023 | 2024 | '@esbuild/win32-ia32@0.25.9': 2025 | optional: true 2026 | 2027 | '@esbuild/win32-x64@0.25.9': 2028 | optional: true 2029 | 2030 | '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0)': 2031 | dependencies: 2032 | eslint: 9.34.0 2033 | eslint-visitor-keys: 3.4.3 2034 | 2035 | '@eslint-community/regexpp@4.12.1': {} 2036 | 2037 | '@eslint/config-array@0.21.0': 2038 | dependencies: 2039 | '@eslint/object-schema': 2.1.6 2040 | debug: 4.4.1 2041 | minimatch: 3.1.2 2042 | transitivePeerDependencies: 2043 | - supports-color 2044 | 2045 | '@eslint/config-helpers@0.3.1': {} 2046 | 2047 | '@eslint/core@0.15.2': 2048 | dependencies: 2049 | '@types/json-schema': 7.0.15 2050 | 2051 | '@eslint/eslintrc@3.3.1': 2052 | dependencies: 2053 | ajv: 6.12.6 2054 | debug: 4.4.1 2055 | espree: 10.4.0 2056 | globals: 14.0.0 2057 | ignore: 5.3.2 2058 | import-fresh: 3.3.1 2059 | js-yaml: 4.1.0 2060 | minimatch: 3.1.2 2061 | strip-json-comments: 3.1.1 2062 | transitivePeerDependencies: 2063 | - supports-color 2064 | 2065 | '@eslint/js@9.17.0': {} 2066 | 2067 | '@eslint/js@9.34.0': {} 2068 | 2069 | '@eslint/object-schema@2.1.6': {} 2070 | 2071 | '@eslint/plugin-kit@0.3.5': 2072 | dependencies: 2073 | '@eslint/core': 0.15.2 2074 | levn: 0.4.1 2075 | 2076 | '@humanfs/core@0.19.1': {} 2077 | 2078 | '@humanfs/node@0.16.6': 2079 | dependencies: 2080 | '@humanfs/core': 0.19.1 2081 | '@humanwhocodes/retry': 0.3.1 2082 | 2083 | '@humanwhocodes/module-importer@1.0.1': {} 2084 | 2085 | '@humanwhocodes/retry@0.3.1': {} 2086 | 2087 | '@humanwhocodes/retry@0.4.3': {} 2088 | 2089 | '@img/sharp-darwin-arm64@0.33.5': 2090 | optionalDependencies: 2091 | '@img/sharp-libvips-darwin-arm64': 1.0.4 2092 | optional: true 2093 | 2094 | '@img/sharp-darwin-x64@0.33.5': 2095 | optionalDependencies: 2096 | '@img/sharp-libvips-darwin-x64': 1.0.4 2097 | optional: true 2098 | 2099 | '@img/sharp-libvips-darwin-arm64@1.0.4': 2100 | optional: true 2101 | 2102 | '@img/sharp-libvips-darwin-x64@1.0.4': 2103 | optional: true 2104 | 2105 | '@img/sharp-libvips-linux-arm64@1.0.4': 2106 | optional: true 2107 | 2108 | '@img/sharp-libvips-linux-arm@1.0.5': 2109 | optional: true 2110 | 2111 | '@img/sharp-libvips-linux-x64@1.0.4': 2112 | optional: true 2113 | 2114 | '@img/sharp-linux-arm64@0.33.5': 2115 | optionalDependencies: 2116 | '@img/sharp-libvips-linux-arm64': 1.0.4 2117 | optional: true 2118 | 2119 | '@img/sharp-linux-arm@0.33.5': 2120 | optionalDependencies: 2121 | '@img/sharp-libvips-linux-arm': 1.0.5 2122 | optional: true 2123 | 2124 | '@img/sharp-linux-x64@0.33.5': 2125 | optionalDependencies: 2126 | '@img/sharp-libvips-linux-x64': 1.0.4 2127 | optional: true 2128 | 2129 | '@img/sharp-win32-x64@0.33.5': 2130 | optional: true 2131 | 2132 | '@nodelib/fs.scandir@2.1.5': 2133 | dependencies: 2134 | '@nodelib/fs.stat': 2.0.5 2135 | run-parallel: 1.2.0 2136 | 2137 | '@nodelib/fs.stat@2.0.5': {} 2138 | 2139 | '@nodelib/fs.walk@1.2.8': 2140 | dependencies: 2141 | '@nodelib/fs.scandir': 2.1.5 2142 | fastq: 1.19.1 2143 | 2144 | '@octokit/auth-token@6.0.0': {} 2145 | 2146 | '@octokit/core@7.0.3': 2147 | dependencies: 2148 | '@octokit/auth-token': 6.0.0 2149 | '@octokit/graphql': 9.0.1 2150 | '@octokit/request': 10.0.3 2151 | '@octokit/request-error': 7.0.0 2152 | '@octokit/types': 14.1.0 2153 | before-after-hook: 4.0.0 2154 | universal-user-agent: 7.0.3 2155 | 2156 | '@octokit/endpoint@11.0.0': 2157 | dependencies: 2158 | '@octokit/types': 14.1.0 2159 | universal-user-agent: 7.0.3 2160 | 2161 | '@octokit/graphql@9.0.1': 2162 | dependencies: 2163 | '@octokit/request': 10.0.3 2164 | '@octokit/types': 14.1.0 2165 | universal-user-agent: 7.0.3 2166 | 2167 | '@octokit/openapi-types@25.1.0': {} 2168 | 2169 | '@octokit/plugin-paginate-rest@13.1.1(@octokit/core@7.0.3)': 2170 | dependencies: 2171 | '@octokit/core': 7.0.3 2172 | '@octokit/types': 14.1.0 2173 | 2174 | '@octokit/plugin-retry@8.0.1(@octokit/core@7.0.3)': 2175 | dependencies: 2176 | '@octokit/core': 7.0.3 2177 | '@octokit/request-error': 7.0.0 2178 | '@octokit/types': 14.1.0 2179 | bottleneck: 2.19.5 2180 | 2181 | '@octokit/plugin-throttling@11.0.1(@octokit/core@7.0.3)': 2182 | dependencies: 2183 | '@octokit/core': 7.0.3 2184 | '@octokit/types': 14.1.0 2185 | bottleneck: 2.19.5 2186 | 2187 | '@octokit/request-error@7.0.0': 2188 | dependencies: 2189 | '@octokit/types': 14.1.0 2190 | 2191 | '@octokit/request@10.0.3': 2192 | dependencies: 2193 | '@octokit/endpoint': 11.0.0 2194 | '@octokit/request-error': 7.0.0 2195 | '@octokit/types': 14.1.0 2196 | fast-content-type-parse: 3.0.0 2197 | universal-user-agent: 7.0.3 2198 | 2199 | '@octokit/types@14.1.0': 2200 | dependencies: 2201 | '@octokit/openapi-types': 25.1.0 2202 | 2203 | '@pnpm/config.env-replace@1.1.0': {} 2204 | 2205 | '@pnpm/network.ca-file@1.0.2': 2206 | dependencies: 2207 | graceful-fs: 4.2.10 2208 | 2209 | '@pnpm/npm-conf@2.3.1': 2210 | dependencies: 2211 | '@pnpm/config.env-replace': 1.1.0 2212 | '@pnpm/network.ca-file': 1.0.2 2213 | config-chain: 1.1.13 2214 | 2215 | '@sec-ant/readable-stream@0.4.1': {} 2216 | 2217 | '@semantic-release/changelog@6.0.3(semantic-release@24.2.0(typescript@5.9.2))': 2218 | dependencies: 2219 | '@semantic-release/error': 3.0.0 2220 | aggregate-error: 3.1.0 2221 | fs-extra: 11.3.1 2222 | lodash: 4.17.21 2223 | semantic-release: 24.2.0(typescript@5.9.2) 2224 | 2225 | '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.0(typescript@5.9.2))': 2226 | dependencies: 2227 | conventional-changelog-angular: 8.0.0 2228 | conventional-changelog-writer: 8.2.0 2229 | conventional-commits-filter: 5.0.0 2230 | conventional-commits-parser: 6.2.0 2231 | debug: 4.4.1 2232 | import-from-esm: 2.0.0 2233 | lodash-es: 4.17.21 2234 | micromatch: 4.0.8 2235 | semantic-release: 24.2.0(typescript@5.9.2) 2236 | transitivePeerDependencies: 2237 | - supports-color 2238 | 2239 | '@semantic-release/error@3.0.0': {} 2240 | 2241 | '@semantic-release/error@4.0.0': {} 2242 | 2243 | '@semantic-release/git@10.0.1(semantic-release@24.2.0(typescript@5.9.2))': 2244 | dependencies: 2245 | '@semantic-release/error': 3.0.0 2246 | aggregate-error: 3.1.0 2247 | debug: 4.4.1 2248 | dir-glob: 3.0.1 2249 | execa: 5.1.1 2250 | lodash: 4.17.21 2251 | micromatch: 4.0.8 2252 | p-reduce: 2.1.0 2253 | semantic-release: 24.2.0(typescript@5.9.2) 2254 | transitivePeerDependencies: 2255 | - supports-color 2256 | 2257 | '@semantic-release/github@11.0.5(semantic-release@24.2.0(typescript@5.9.2))': 2258 | dependencies: 2259 | '@octokit/core': 7.0.3 2260 | '@octokit/plugin-paginate-rest': 13.1.1(@octokit/core@7.0.3) 2261 | '@octokit/plugin-retry': 8.0.1(@octokit/core@7.0.3) 2262 | '@octokit/plugin-throttling': 11.0.1(@octokit/core@7.0.3) 2263 | '@semantic-release/error': 4.0.0 2264 | aggregate-error: 5.0.0 2265 | debug: 4.4.1 2266 | dir-glob: 3.0.1 2267 | globby: 14.1.0 2268 | http-proxy-agent: 7.0.2 2269 | https-proxy-agent: 7.0.6 2270 | issue-parser: 7.0.1 2271 | lodash-es: 4.17.21 2272 | mime: 4.0.7 2273 | p-filter: 4.1.0 2274 | semantic-release: 24.2.0(typescript@5.9.2) 2275 | url-join: 5.0.0 2276 | transitivePeerDependencies: 2277 | - supports-color 2278 | 2279 | '@semantic-release/npm@12.0.2(semantic-release@24.2.0(typescript@5.9.2))': 2280 | dependencies: 2281 | '@semantic-release/error': 4.0.0 2282 | aggregate-error: 5.0.0 2283 | execa: 9.6.0 2284 | fs-extra: 11.3.1 2285 | lodash-es: 4.17.21 2286 | nerf-dart: 1.0.0 2287 | normalize-url: 8.0.2 2288 | npm: 10.9.3 2289 | rc: 1.2.8 2290 | read-pkg: 9.0.1 2291 | registry-auth-token: 5.1.0 2292 | semantic-release: 24.2.0(typescript@5.9.2) 2293 | semver: 7.7.2 2294 | tempy: 3.1.0 2295 | 2296 | '@semantic-release/release-notes-generator@14.0.3(semantic-release@24.2.0(typescript@5.9.2))': 2297 | dependencies: 2298 | conventional-changelog-angular: 8.0.0 2299 | conventional-changelog-writer: 8.2.0 2300 | conventional-commits-filter: 5.0.0 2301 | conventional-commits-parser: 6.2.0 2302 | debug: 4.4.1 2303 | get-stream: 7.0.1 2304 | import-from-esm: 2.0.0 2305 | into-stream: 7.0.0 2306 | lodash-es: 4.17.21 2307 | read-package-up: 11.0.0 2308 | semantic-release: 24.2.0(typescript@5.9.2) 2309 | transitivePeerDependencies: 2310 | - supports-color 2311 | 2312 | '@sindresorhus/is@4.6.0': {} 2313 | 2314 | '@sindresorhus/merge-streams@2.3.0': {} 2315 | 2316 | '@sindresorhus/merge-streams@4.0.0': {} 2317 | 2318 | '@types/estree@1.0.8': {} 2319 | 2320 | '@types/json-schema@7.0.15': {} 2321 | 2322 | '@types/node@24.3.0': 2323 | dependencies: 2324 | undici-types: 7.10.0 2325 | 2326 | '@types/normalize-package-data@2.4.4': {} 2327 | 2328 | '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)': 2329 | dependencies: 2330 | '@eslint-community/regexpp': 4.12.1 2331 | '@typescript-eslint/parser': 8.20.0(eslint@9.34.0)(typescript@5.9.2) 2332 | '@typescript-eslint/scope-manager': 8.20.0 2333 | '@typescript-eslint/type-utils': 8.20.0(eslint@9.34.0)(typescript@5.9.2) 2334 | '@typescript-eslint/utils': 8.20.0(eslint@9.34.0)(typescript@5.9.2) 2335 | '@typescript-eslint/visitor-keys': 8.20.0 2336 | eslint: 9.34.0 2337 | graphemer: 1.4.0 2338 | ignore: 5.3.2 2339 | natural-compare: 1.4.0 2340 | ts-api-utils: 2.1.0(typescript@5.9.2) 2341 | typescript: 5.9.2 2342 | transitivePeerDependencies: 2343 | - supports-color 2344 | 2345 | '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)': 2346 | dependencies: 2347 | '@eslint-community/regexpp': 4.12.1 2348 | '@typescript-eslint/parser': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 2349 | '@typescript-eslint/scope-manager': 8.41.0 2350 | '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 2351 | '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 2352 | '@typescript-eslint/visitor-keys': 8.41.0 2353 | eslint: 9.34.0 2354 | graphemer: 1.4.0 2355 | ignore: 7.0.5 2356 | natural-compare: 1.4.0 2357 | ts-api-utils: 2.1.0(typescript@5.9.2) 2358 | typescript: 5.9.2 2359 | transitivePeerDependencies: 2360 | - supports-color 2361 | 2362 | '@typescript-eslint/parser@8.20.0(eslint@9.34.0)(typescript@5.9.2)': 2363 | dependencies: 2364 | '@typescript-eslint/scope-manager': 8.20.0 2365 | '@typescript-eslint/types': 8.20.0 2366 | '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.9.2) 2367 | '@typescript-eslint/visitor-keys': 8.20.0 2368 | debug: 4.4.1 2369 | eslint: 9.34.0 2370 | typescript: 5.9.2 2371 | transitivePeerDependencies: 2372 | - supports-color 2373 | 2374 | '@typescript-eslint/parser@8.41.0(eslint@9.34.0)(typescript@5.9.2)': 2375 | dependencies: 2376 | '@typescript-eslint/scope-manager': 8.41.0 2377 | '@typescript-eslint/types': 8.41.0 2378 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 2379 | '@typescript-eslint/visitor-keys': 8.41.0 2380 | debug: 4.4.1 2381 | eslint: 9.34.0 2382 | typescript: 5.9.2 2383 | transitivePeerDependencies: 2384 | - supports-color 2385 | 2386 | '@typescript-eslint/project-service@8.41.0(typescript@5.9.2)': 2387 | dependencies: 2388 | '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) 2389 | '@typescript-eslint/types': 8.41.0 2390 | debug: 4.4.1 2391 | typescript: 5.9.2 2392 | transitivePeerDependencies: 2393 | - supports-color 2394 | 2395 | '@typescript-eslint/scope-manager@8.20.0': 2396 | dependencies: 2397 | '@typescript-eslint/types': 8.20.0 2398 | '@typescript-eslint/visitor-keys': 8.20.0 2399 | 2400 | '@typescript-eslint/scope-manager@8.41.0': 2401 | dependencies: 2402 | '@typescript-eslint/types': 8.41.0 2403 | '@typescript-eslint/visitor-keys': 8.41.0 2404 | 2405 | '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.9.2)': 2406 | dependencies: 2407 | typescript: 5.9.2 2408 | 2409 | '@typescript-eslint/type-utils@8.20.0(eslint@9.34.0)(typescript@5.9.2)': 2410 | dependencies: 2411 | '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.9.2) 2412 | '@typescript-eslint/utils': 8.20.0(eslint@9.34.0)(typescript@5.9.2) 2413 | debug: 4.4.1 2414 | eslint: 9.34.0 2415 | ts-api-utils: 2.1.0(typescript@5.9.2) 2416 | typescript: 5.9.2 2417 | transitivePeerDependencies: 2418 | - supports-color 2419 | 2420 | '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)': 2421 | dependencies: 2422 | '@typescript-eslint/types': 8.41.0 2423 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 2424 | '@typescript-eslint/utils': 8.41.0(eslint@9.34.0)(typescript@5.9.2) 2425 | debug: 4.4.1 2426 | eslint: 9.34.0 2427 | ts-api-utils: 2.1.0(typescript@5.9.2) 2428 | typescript: 5.9.2 2429 | transitivePeerDependencies: 2430 | - supports-color 2431 | 2432 | '@typescript-eslint/types@8.20.0': {} 2433 | 2434 | '@typescript-eslint/types@8.41.0': {} 2435 | 2436 | '@typescript-eslint/typescript-estree@8.20.0(typescript@5.9.2)': 2437 | dependencies: 2438 | '@typescript-eslint/types': 8.20.0 2439 | '@typescript-eslint/visitor-keys': 8.20.0 2440 | debug: 4.4.1 2441 | fast-glob: 3.3.3 2442 | is-glob: 4.0.3 2443 | minimatch: 9.0.5 2444 | semver: 7.7.2 2445 | ts-api-utils: 2.1.0(typescript@5.9.2) 2446 | typescript: 5.9.2 2447 | transitivePeerDependencies: 2448 | - supports-color 2449 | 2450 | '@typescript-eslint/typescript-estree@8.41.0(typescript@5.9.2)': 2451 | dependencies: 2452 | '@typescript-eslint/project-service': 8.41.0(typescript@5.9.2) 2453 | '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.9.2) 2454 | '@typescript-eslint/types': 8.41.0 2455 | '@typescript-eslint/visitor-keys': 8.41.0 2456 | debug: 4.4.1 2457 | fast-glob: 3.3.3 2458 | is-glob: 4.0.3 2459 | minimatch: 9.0.5 2460 | semver: 7.7.2 2461 | ts-api-utils: 2.1.0(typescript@5.9.2) 2462 | typescript: 5.9.2 2463 | transitivePeerDependencies: 2464 | - supports-color 2465 | 2466 | '@typescript-eslint/utils@8.20.0(eslint@9.34.0)(typescript@5.9.2)': 2467 | dependencies: 2468 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 2469 | '@typescript-eslint/scope-manager': 8.20.0 2470 | '@typescript-eslint/types': 8.20.0 2471 | '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.9.2) 2472 | eslint: 9.34.0 2473 | typescript: 5.9.2 2474 | transitivePeerDependencies: 2475 | - supports-color 2476 | 2477 | '@typescript-eslint/utils@8.41.0(eslint@9.34.0)(typescript@5.9.2)': 2478 | dependencies: 2479 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 2480 | '@typescript-eslint/scope-manager': 8.41.0 2481 | '@typescript-eslint/types': 8.41.0 2482 | '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.9.2) 2483 | eslint: 9.34.0 2484 | typescript: 5.9.2 2485 | transitivePeerDependencies: 2486 | - supports-color 2487 | 2488 | '@typescript-eslint/visitor-keys@8.20.0': 2489 | dependencies: 2490 | '@typescript-eslint/types': 8.20.0 2491 | eslint-visitor-keys: 4.2.1 2492 | 2493 | '@typescript-eslint/visitor-keys@8.41.0': 2494 | dependencies: 2495 | '@typescript-eslint/types': 8.41.0 2496 | eslint-visitor-keys: 4.2.1 2497 | 2498 | '@zed-industries/agent-client-protocol@0.1.2': 2499 | dependencies: 2500 | zod: 3.25.76 2501 | 2502 | acorn-jsx@5.3.2(acorn@8.15.0): 2503 | dependencies: 2504 | acorn: 8.15.0 2505 | 2506 | acorn@8.15.0: {} 2507 | 2508 | agent-base@7.1.4: {} 2509 | 2510 | aggregate-error@3.1.0: 2511 | dependencies: 2512 | clean-stack: 2.2.0 2513 | indent-string: 4.0.0 2514 | 2515 | aggregate-error@5.0.0: 2516 | dependencies: 2517 | clean-stack: 5.2.0 2518 | indent-string: 5.0.0 2519 | 2520 | ajv@6.12.6: 2521 | dependencies: 2522 | fast-deep-equal: 3.1.3 2523 | fast-json-stable-stringify: 2.1.0 2524 | json-schema-traverse: 0.4.1 2525 | uri-js: 4.4.1 2526 | 2527 | ansi-escapes@7.0.0: 2528 | dependencies: 2529 | environment: 1.1.0 2530 | 2531 | ansi-regex@5.0.1: {} 2532 | 2533 | ansi-regex@6.2.0: {} 2534 | 2535 | ansi-styles@3.2.1: 2536 | dependencies: 2537 | color-convert: 1.9.3 2538 | 2539 | ansi-styles@4.3.0: 2540 | dependencies: 2541 | color-convert: 2.0.1 2542 | 2543 | any-promise@1.3.0: {} 2544 | 2545 | argparse@2.0.1: {} 2546 | 2547 | argv-formatter@1.0.0: {} 2548 | 2549 | array-ify@1.0.0: {} 2550 | 2551 | balanced-match@1.0.2: {} 2552 | 2553 | before-after-hook@4.0.0: {} 2554 | 2555 | bottleneck@2.19.5: {} 2556 | 2557 | brace-expansion@1.1.12: 2558 | dependencies: 2559 | balanced-match: 1.0.2 2560 | concat-map: 0.0.1 2561 | 2562 | brace-expansion@2.0.2: 2563 | dependencies: 2564 | balanced-match: 1.0.2 2565 | 2566 | braces@3.0.3: 2567 | dependencies: 2568 | fill-range: 7.1.1 2569 | 2570 | callsites@3.1.0: {} 2571 | 2572 | chalk@2.4.2: 2573 | dependencies: 2574 | ansi-styles: 3.2.1 2575 | escape-string-regexp: 1.0.5 2576 | supports-color: 5.5.0 2577 | 2578 | chalk@4.1.2: 2579 | dependencies: 2580 | ansi-styles: 4.3.0 2581 | supports-color: 7.2.0 2582 | 2583 | chalk@5.6.0: {} 2584 | 2585 | char-regex@1.0.2: {} 2586 | 2587 | clean-stack@2.2.0: {} 2588 | 2589 | clean-stack@5.2.0: 2590 | dependencies: 2591 | escape-string-regexp: 5.0.0 2592 | 2593 | cli-highlight@2.1.11: 2594 | dependencies: 2595 | chalk: 4.1.2 2596 | highlight.js: 10.7.3 2597 | mz: 2.7.0 2598 | parse5: 5.1.1 2599 | parse5-htmlparser2-tree-adapter: 6.0.1 2600 | yargs: 16.2.0 2601 | 2602 | cli-table3@0.6.5: 2603 | dependencies: 2604 | string-width: 4.2.3 2605 | optionalDependencies: 2606 | '@colors/colors': 1.5.0 2607 | 2608 | cliui@7.0.4: 2609 | dependencies: 2610 | string-width: 4.2.3 2611 | strip-ansi: 6.0.1 2612 | wrap-ansi: 7.0.0 2613 | 2614 | cliui@8.0.1: 2615 | dependencies: 2616 | string-width: 4.2.3 2617 | strip-ansi: 6.0.1 2618 | wrap-ansi: 7.0.0 2619 | 2620 | color-convert@1.9.3: 2621 | dependencies: 2622 | color-name: 1.1.3 2623 | 2624 | color-convert@2.0.1: 2625 | dependencies: 2626 | color-name: 1.1.4 2627 | 2628 | color-name@1.1.3: {} 2629 | 2630 | color-name@1.1.4: {} 2631 | 2632 | compare-func@2.0.0: 2633 | dependencies: 2634 | array-ify: 1.0.0 2635 | dot-prop: 5.3.0 2636 | 2637 | concat-map@0.0.1: {} 2638 | 2639 | config-chain@1.1.13: 2640 | dependencies: 2641 | ini: 1.3.8 2642 | proto-list: 1.2.4 2643 | 2644 | conventional-changelog-angular@8.0.0: 2645 | dependencies: 2646 | compare-func: 2.0.0 2647 | 2648 | conventional-changelog-conventionalcommits@8.0.0: 2649 | dependencies: 2650 | compare-func: 2.0.0 2651 | 2652 | conventional-changelog-writer@8.2.0: 2653 | dependencies: 2654 | conventional-commits-filter: 5.0.0 2655 | handlebars: 4.7.8 2656 | meow: 13.2.0 2657 | semver: 7.7.2 2658 | 2659 | conventional-commits-filter@5.0.0: {} 2660 | 2661 | conventional-commits-parser@6.2.0: 2662 | dependencies: 2663 | meow: 13.2.0 2664 | 2665 | convert-hrtime@5.0.0: {} 2666 | 2667 | core-util-is@1.0.3: {} 2668 | 2669 | cosmiconfig@9.0.0(typescript@5.9.2): 2670 | dependencies: 2671 | env-paths: 2.2.1 2672 | import-fresh: 3.3.1 2673 | js-yaml: 4.1.0 2674 | parse-json: 5.2.0 2675 | optionalDependencies: 2676 | typescript: 5.9.2 2677 | 2678 | cross-spawn@7.0.6: 2679 | dependencies: 2680 | path-key: 3.1.1 2681 | shebang-command: 2.0.0 2682 | which: 2.0.2 2683 | 2684 | crypto-random-string@4.0.0: 2685 | dependencies: 2686 | type-fest: 1.4.0 2687 | 2688 | debug@4.4.1: 2689 | dependencies: 2690 | ms: 2.1.3 2691 | 2692 | deep-extend@0.6.0: {} 2693 | 2694 | deep-is@0.1.4: {} 2695 | 2696 | dir-glob@3.0.1: 2697 | dependencies: 2698 | path-type: 4.0.0 2699 | 2700 | dot-prop@5.3.0: 2701 | dependencies: 2702 | is-obj: 2.0.0 2703 | 2704 | duplexer2@0.1.4: 2705 | dependencies: 2706 | readable-stream: 2.3.8 2707 | 2708 | emoji-regex@8.0.0: {} 2709 | 2710 | emojilib@2.4.0: {} 2711 | 2712 | env-ci@11.1.1: 2713 | dependencies: 2714 | execa: 8.0.1 2715 | java-properties: 1.0.2 2716 | 2717 | env-paths@2.2.1: {} 2718 | 2719 | environment@1.1.0: {} 2720 | 2721 | error-ex@1.3.2: 2722 | dependencies: 2723 | is-arrayish: 0.2.1 2724 | 2725 | esbuild@0.25.9: 2726 | optionalDependencies: 2727 | '@esbuild/aix-ppc64': 0.25.9 2728 | '@esbuild/android-arm': 0.25.9 2729 | '@esbuild/android-arm64': 0.25.9 2730 | '@esbuild/android-x64': 0.25.9 2731 | '@esbuild/darwin-arm64': 0.25.9 2732 | '@esbuild/darwin-x64': 0.25.9 2733 | '@esbuild/freebsd-arm64': 0.25.9 2734 | '@esbuild/freebsd-x64': 0.25.9 2735 | '@esbuild/linux-arm': 0.25.9 2736 | '@esbuild/linux-arm64': 0.25.9 2737 | '@esbuild/linux-ia32': 0.25.9 2738 | '@esbuild/linux-loong64': 0.25.9 2739 | '@esbuild/linux-mips64el': 0.25.9 2740 | '@esbuild/linux-ppc64': 0.25.9 2741 | '@esbuild/linux-riscv64': 0.25.9 2742 | '@esbuild/linux-s390x': 0.25.9 2743 | '@esbuild/linux-x64': 0.25.9 2744 | '@esbuild/netbsd-arm64': 0.25.9 2745 | '@esbuild/netbsd-x64': 0.25.9 2746 | '@esbuild/openbsd-arm64': 0.25.9 2747 | '@esbuild/openbsd-x64': 0.25.9 2748 | '@esbuild/openharmony-arm64': 0.25.9 2749 | '@esbuild/sunos-x64': 0.25.9 2750 | '@esbuild/win32-arm64': 0.25.9 2751 | '@esbuild/win32-ia32': 0.25.9 2752 | '@esbuild/win32-x64': 0.25.9 2753 | 2754 | escalade@3.2.0: {} 2755 | 2756 | escape-string-regexp@1.0.5: {} 2757 | 2758 | escape-string-regexp@4.0.0: {} 2759 | 2760 | escape-string-regexp@5.0.0: {} 2761 | 2762 | eslint-scope@8.4.0: 2763 | dependencies: 2764 | esrecurse: 4.3.0 2765 | estraverse: 5.3.0 2766 | 2767 | eslint-visitor-keys@3.4.3: {} 2768 | 2769 | eslint-visitor-keys@4.2.1: {} 2770 | 2771 | eslint@9.34.0: 2772 | dependencies: 2773 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 2774 | '@eslint-community/regexpp': 4.12.1 2775 | '@eslint/config-array': 0.21.0 2776 | '@eslint/config-helpers': 0.3.1 2777 | '@eslint/core': 0.15.2 2778 | '@eslint/eslintrc': 3.3.1 2779 | '@eslint/js': 9.34.0 2780 | '@eslint/plugin-kit': 0.3.5 2781 | '@humanfs/node': 0.16.6 2782 | '@humanwhocodes/module-importer': 1.0.1 2783 | '@humanwhocodes/retry': 0.4.3 2784 | '@types/estree': 1.0.8 2785 | '@types/json-schema': 7.0.15 2786 | ajv: 6.12.6 2787 | chalk: 4.1.2 2788 | cross-spawn: 7.0.6 2789 | debug: 4.4.1 2790 | escape-string-regexp: 4.0.0 2791 | eslint-scope: 8.4.0 2792 | eslint-visitor-keys: 4.2.1 2793 | espree: 10.4.0 2794 | esquery: 1.6.0 2795 | esutils: 2.0.3 2796 | fast-deep-equal: 3.1.3 2797 | file-entry-cache: 8.0.0 2798 | find-up: 5.0.0 2799 | glob-parent: 6.0.2 2800 | ignore: 5.3.2 2801 | imurmurhash: 0.1.4 2802 | is-glob: 4.0.3 2803 | json-stable-stringify-without-jsonify: 1.0.1 2804 | lodash.merge: 4.6.2 2805 | minimatch: 3.1.2 2806 | natural-compare: 1.4.0 2807 | optionator: 0.9.4 2808 | transitivePeerDependencies: 2809 | - supports-color 2810 | 2811 | espree@10.4.0: 2812 | dependencies: 2813 | acorn: 8.15.0 2814 | acorn-jsx: 5.3.2(acorn@8.15.0) 2815 | eslint-visitor-keys: 4.2.1 2816 | 2817 | esquery@1.6.0: 2818 | dependencies: 2819 | estraverse: 5.3.0 2820 | 2821 | esrecurse@4.3.0: 2822 | dependencies: 2823 | estraverse: 5.3.0 2824 | 2825 | estraverse@5.3.0: {} 2826 | 2827 | esutils@2.0.3: {} 2828 | 2829 | execa@5.1.1: 2830 | dependencies: 2831 | cross-spawn: 7.0.6 2832 | get-stream: 6.0.1 2833 | human-signals: 2.1.0 2834 | is-stream: 2.0.1 2835 | merge-stream: 2.0.0 2836 | npm-run-path: 4.0.1 2837 | onetime: 5.1.2 2838 | signal-exit: 3.0.7 2839 | strip-final-newline: 2.0.0 2840 | 2841 | execa@8.0.1: 2842 | dependencies: 2843 | cross-spawn: 7.0.6 2844 | get-stream: 8.0.1 2845 | human-signals: 5.0.0 2846 | is-stream: 3.0.0 2847 | merge-stream: 2.0.0 2848 | npm-run-path: 5.3.0 2849 | onetime: 6.0.0 2850 | signal-exit: 4.1.0 2851 | strip-final-newline: 3.0.0 2852 | 2853 | execa@9.6.0: 2854 | dependencies: 2855 | '@sindresorhus/merge-streams': 4.0.0 2856 | cross-spawn: 7.0.6 2857 | figures: 6.1.0 2858 | get-stream: 9.0.1 2859 | human-signals: 8.0.1 2860 | is-plain-obj: 4.1.0 2861 | is-stream: 4.0.1 2862 | npm-run-path: 6.0.0 2863 | pretty-ms: 9.2.0 2864 | signal-exit: 4.1.0 2865 | strip-final-newline: 4.0.0 2866 | yoctocolors: 2.1.2 2867 | 2868 | fast-content-type-parse@3.0.0: {} 2869 | 2870 | fast-deep-equal@3.1.3: {} 2871 | 2872 | fast-glob@3.3.3: 2873 | dependencies: 2874 | '@nodelib/fs.stat': 2.0.5 2875 | '@nodelib/fs.walk': 1.2.8 2876 | glob-parent: 5.1.2 2877 | merge2: 1.4.1 2878 | micromatch: 4.0.8 2879 | 2880 | fast-json-stable-stringify@2.1.0: {} 2881 | 2882 | fast-levenshtein@2.0.6: {} 2883 | 2884 | fastq@1.19.1: 2885 | dependencies: 2886 | reusify: 1.1.0 2887 | 2888 | figures@2.0.0: 2889 | dependencies: 2890 | escape-string-regexp: 1.0.5 2891 | 2892 | figures@6.1.0: 2893 | dependencies: 2894 | is-unicode-supported: 2.1.0 2895 | 2896 | file-entry-cache@8.0.0: 2897 | dependencies: 2898 | flat-cache: 4.0.1 2899 | 2900 | fill-range@7.1.1: 2901 | dependencies: 2902 | to-regex-range: 5.0.1 2903 | 2904 | find-up-simple@1.0.1: {} 2905 | 2906 | find-up@2.1.0: 2907 | dependencies: 2908 | locate-path: 2.0.0 2909 | 2910 | find-up@5.0.0: 2911 | dependencies: 2912 | locate-path: 6.0.0 2913 | path-exists: 4.0.0 2914 | 2915 | find-versions@6.0.0: 2916 | dependencies: 2917 | semver-regex: 4.0.5 2918 | super-regex: 1.0.0 2919 | 2920 | flat-cache@4.0.1: 2921 | dependencies: 2922 | flatted: 3.3.3 2923 | keyv: 4.5.4 2924 | 2925 | flatted@3.3.3: {} 2926 | 2927 | from2@2.3.0: 2928 | dependencies: 2929 | inherits: 2.0.4 2930 | readable-stream: 2.3.8 2931 | 2932 | fs-extra@11.3.1: 2933 | dependencies: 2934 | graceful-fs: 4.2.11 2935 | jsonfile: 6.2.0 2936 | universalify: 2.0.1 2937 | 2938 | fsevents@2.3.3: 2939 | optional: true 2940 | 2941 | function-timeout@1.0.2: {} 2942 | 2943 | get-caller-file@2.0.5: {} 2944 | 2945 | get-stream@6.0.1: {} 2946 | 2947 | get-stream@7.0.1: {} 2948 | 2949 | get-stream@8.0.1: {} 2950 | 2951 | get-stream@9.0.1: 2952 | dependencies: 2953 | '@sec-ant/readable-stream': 0.4.1 2954 | is-stream: 4.0.1 2955 | 2956 | get-tsconfig@4.10.1: 2957 | dependencies: 2958 | resolve-pkg-maps: 1.0.0 2959 | 2960 | git-log-parser@1.2.1: 2961 | dependencies: 2962 | argv-formatter: 1.0.0 2963 | spawn-error-forwarder: 1.0.0 2964 | split2: 1.0.0 2965 | stream-combiner2: 1.1.1 2966 | through2: 2.0.5 2967 | traverse: 0.6.8 2968 | 2969 | glob-parent@5.1.2: 2970 | dependencies: 2971 | is-glob: 4.0.3 2972 | 2973 | glob-parent@6.0.2: 2974 | dependencies: 2975 | is-glob: 4.0.3 2976 | 2977 | globals@14.0.0: {} 2978 | 2979 | globals@15.14.0: {} 2980 | 2981 | globby@14.1.0: 2982 | dependencies: 2983 | '@sindresorhus/merge-streams': 2.3.0 2984 | fast-glob: 3.3.3 2985 | ignore: 7.0.5 2986 | path-type: 6.0.0 2987 | slash: 5.1.0 2988 | unicorn-magic: 0.3.0 2989 | 2990 | graceful-fs@4.2.10: {} 2991 | 2992 | graceful-fs@4.2.11: {} 2993 | 2994 | graphemer@1.4.0: {} 2995 | 2996 | handlebars@4.7.8: 2997 | dependencies: 2998 | minimist: 1.2.8 2999 | neo-async: 2.6.2 3000 | source-map: 0.6.1 3001 | wordwrap: 1.0.0 3002 | optionalDependencies: 3003 | uglify-js: 3.19.3 3004 | 3005 | has-flag@3.0.0: {} 3006 | 3007 | has-flag@4.0.0: {} 3008 | 3009 | highlight.js@10.7.3: {} 3010 | 3011 | hook-std@3.0.0: {} 3012 | 3013 | hosted-git-info@7.0.2: 3014 | dependencies: 3015 | lru-cache: 10.4.3 3016 | 3017 | hosted-git-info@8.1.0: 3018 | dependencies: 3019 | lru-cache: 10.4.3 3020 | 3021 | http-proxy-agent@7.0.2: 3022 | dependencies: 3023 | agent-base: 7.1.4 3024 | debug: 4.4.1 3025 | transitivePeerDependencies: 3026 | - supports-color 3027 | 3028 | https-proxy-agent@7.0.6: 3029 | dependencies: 3030 | agent-base: 7.1.4 3031 | debug: 4.4.1 3032 | transitivePeerDependencies: 3033 | - supports-color 3034 | 3035 | human-signals@2.1.0: {} 3036 | 3037 | human-signals@5.0.0: {} 3038 | 3039 | human-signals@8.0.1: {} 3040 | 3041 | ignore@5.3.2: {} 3042 | 3043 | ignore@7.0.5: {} 3044 | 3045 | import-fresh@3.3.1: 3046 | dependencies: 3047 | parent-module: 1.0.1 3048 | resolve-from: 4.0.0 3049 | 3050 | import-from-esm@1.3.4: 3051 | dependencies: 3052 | debug: 4.4.1 3053 | import-meta-resolve: 4.1.0 3054 | transitivePeerDependencies: 3055 | - supports-color 3056 | 3057 | import-from-esm@2.0.0: 3058 | dependencies: 3059 | debug: 4.4.1 3060 | import-meta-resolve: 4.1.0 3061 | transitivePeerDependencies: 3062 | - supports-color 3063 | 3064 | import-meta-resolve@4.1.0: {} 3065 | 3066 | imurmurhash@0.1.4: {} 3067 | 3068 | indent-string@4.0.0: {} 3069 | 3070 | indent-string@5.0.0: {} 3071 | 3072 | index-to-position@1.1.0: {} 3073 | 3074 | inherits@2.0.4: {} 3075 | 3076 | ini@1.3.8: {} 3077 | 3078 | into-stream@7.0.0: 3079 | dependencies: 3080 | from2: 2.3.0 3081 | p-is-promise: 3.0.0 3082 | 3083 | is-arrayish@0.2.1: {} 3084 | 3085 | is-extglob@2.1.1: {} 3086 | 3087 | is-fullwidth-code-point@3.0.0: {} 3088 | 3089 | is-glob@4.0.3: 3090 | dependencies: 3091 | is-extglob: 2.1.1 3092 | 3093 | is-number@7.0.0: {} 3094 | 3095 | is-obj@2.0.0: {} 3096 | 3097 | is-plain-obj@4.1.0: {} 3098 | 3099 | is-stream@2.0.1: {} 3100 | 3101 | is-stream@3.0.0: {} 3102 | 3103 | is-stream@4.0.1: {} 3104 | 3105 | is-unicode-supported@2.1.0: {} 3106 | 3107 | isarray@1.0.0: {} 3108 | 3109 | isexe@2.0.0: {} 3110 | 3111 | issue-parser@7.0.1: 3112 | dependencies: 3113 | lodash.capitalize: 4.2.1 3114 | lodash.escaperegexp: 4.1.2 3115 | lodash.isplainobject: 4.0.6 3116 | lodash.isstring: 4.0.1 3117 | lodash.uniqby: 4.7.0 3118 | 3119 | java-properties@1.0.2: {} 3120 | 3121 | js-tokens@4.0.0: {} 3122 | 3123 | js-yaml@4.1.0: 3124 | dependencies: 3125 | argparse: 2.0.1 3126 | 3127 | json-buffer@3.0.1: {} 3128 | 3129 | json-parse-better-errors@1.0.2: {} 3130 | 3131 | json-parse-even-better-errors@2.3.1: {} 3132 | 3133 | json-schema-traverse@0.4.1: {} 3134 | 3135 | json-stable-stringify-without-jsonify@1.0.1: {} 3136 | 3137 | jsonfile@6.2.0: 3138 | dependencies: 3139 | universalify: 2.0.1 3140 | optionalDependencies: 3141 | graceful-fs: 4.2.11 3142 | 3143 | keyv@4.5.4: 3144 | dependencies: 3145 | json-buffer: 3.0.1 3146 | 3147 | levn@0.4.1: 3148 | dependencies: 3149 | prelude-ls: 1.2.1 3150 | type-check: 0.4.0 3151 | 3152 | lines-and-columns@1.2.4: {} 3153 | 3154 | load-json-file@4.0.0: 3155 | dependencies: 3156 | graceful-fs: 4.2.11 3157 | parse-json: 4.0.0 3158 | pify: 3.0.0 3159 | strip-bom: 3.0.0 3160 | 3161 | locate-path@2.0.0: 3162 | dependencies: 3163 | p-locate: 2.0.0 3164 | path-exists: 3.0.0 3165 | 3166 | locate-path@6.0.0: 3167 | dependencies: 3168 | p-locate: 5.0.0 3169 | 3170 | lodash-es@4.17.21: {} 3171 | 3172 | lodash.capitalize@4.2.1: {} 3173 | 3174 | lodash.escaperegexp@4.1.2: {} 3175 | 3176 | lodash.isplainobject@4.0.6: {} 3177 | 3178 | lodash.isstring@4.0.1: {} 3179 | 3180 | lodash.merge@4.6.2: {} 3181 | 3182 | lodash.uniqby@4.7.0: {} 3183 | 3184 | lodash@4.17.21: {} 3185 | 3186 | lru-cache@10.4.3: {} 3187 | 3188 | marked-terminal@7.3.0(marked@12.0.2): 3189 | dependencies: 3190 | ansi-escapes: 7.0.0 3191 | ansi-regex: 6.2.0 3192 | chalk: 5.6.0 3193 | cli-highlight: 2.1.11 3194 | cli-table3: 0.6.5 3195 | marked: 12.0.2 3196 | node-emoji: 2.2.0 3197 | supports-hyperlinks: 3.2.0 3198 | 3199 | marked@12.0.2: {} 3200 | 3201 | meow@13.2.0: {} 3202 | 3203 | merge-stream@2.0.0: {} 3204 | 3205 | merge2@1.4.1: {} 3206 | 3207 | micromatch@4.0.8: 3208 | dependencies: 3209 | braces: 3.0.3 3210 | picomatch: 2.3.1 3211 | 3212 | mime@4.0.7: {} 3213 | 3214 | mimic-fn@2.1.0: {} 3215 | 3216 | mimic-fn@4.0.0: {} 3217 | 3218 | minimatch@3.1.2: 3219 | dependencies: 3220 | brace-expansion: 1.1.12 3221 | 3222 | minimatch@9.0.5: 3223 | dependencies: 3224 | brace-expansion: 2.0.2 3225 | 3226 | minimist@1.2.8: {} 3227 | 3228 | ms@2.1.3: {} 3229 | 3230 | mz@2.7.0: 3231 | dependencies: 3232 | any-promise: 1.3.0 3233 | object-assign: 4.1.1 3234 | thenify-all: 1.6.0 3235 | 3236 | natural-compare@1.4.0: {} 3237 | 3238 | neo-async@2.6.2: {} 3239 | 3240 | nerf-dart@1.0.0: {} 3241 | 3242 | node-emoji@2.2.0: 3243 | dependencies: 3244 | '@sindresorhus/is': 4.6.0 3245 | char-regex: 1.0.2 3246 | emojilib: 2.4.0 3247 | skin-tone: 2.0.0 3248 | 3249 | normalize-package-data@6.0.2: 3250 | dependencies: 3251 | hosted-git-info: 7.0.2 3252 | semver: 7.7.2 3253 | validate-npm-package-license: 3.0.4 3254 | 3255 | normalize-url@8.0.2: {} 3256 | 3257 | npm-run-path@4.0.1: 3258 | dependencies: 3259 | path-key: 3.1.1 3260 | 3261 | npm-run-path@5.3.0: 3262 | dependencies: 3263 | path-key: 4.0.0 3264 | 3265 | npm-run-path@6.0.0: 3266 | dependencies: 3267 | path-key: 4.0.0 3268 | unicorn-magic: 0.3.0 3269 | 3270 | npm@10.9.3: {} 3271 | 3272 | object-assign@4.1.1: {} 3273 | 3274 | onetime@5.1.2: 3275 | dependencies: 3276 | mimic-fn: 2.1.0 3277 | 3278 | onetime@6.0.0: 3279 | dependencies: 3280 | mimic-fn: 4.0.0 3281 | 3282 | optionator@0.9.4: 3283 | dependencies: 3284 | deep-is: 0.1.4 3285 | fast-levenshtein: 2.0.6 3286 | levn: 0.4.1 3287 | prelude-ls: 1.2.1 3288 | type-check: 0.4.0 3289 | word-wrap: 1.2.5 3290 | 3291 | p-each-series@3.0.0: {} 3292 | 3293 | p-filter@4.1.0: 3294 | dependencies: 3295 | p-map: 7.0.3 3296 | 3297 | p-is-promise@3.0.0: {} 3298 | 3299 | p-limit@1.3.0: 3300 | dependencies: 3301 | p-try: 1.0.0 3302 | 3303 | p-limit@3.1.0: 3304 | dependencies: 3305 | yocto-queue: 0.1.0 3306 | 3307 | p-locate@2.0.0: 3308 | dependencies: 3309 | p-limit: 1.3.0 3310 | 3311 | p-locate@5.0.0: 3312 | dependencies: 3313 | p-limit: 3.1.0 3314 | 3315 | p-map@7.0.3: {} 3316 | 3317 | p-reduce@2.1.0: {} 3318 | 3319 | p-reduce@3.0.0: {} 3320 | 3321 | p-try@1.0.0: {} 3322 | 3323 | parent-module@1.0.1: 3324 | dependencies: 3325 | callsites: 3.1.0 3326 | 3327 | parse-json@4.0.0: 3328 | dependencies: 3329 | error-ex: 1.3.2 3330 | json-parse-better-errors: 1.0.2 3331 | 3332 | parse-json@5.2.0: 3333 | dependencies: 3334 | '@babel/code-frame': 7.27.1 3335 | error-ex: 1.3.2 3336 | json-parse-even-better-errors: 2.3.1 3337 | lines-and-columns: 1.2.4 3338 | 3339 | parse-json@8.3.0: 3340 | dependencies: 3341 | '@babel/code-frame': 7.27.1 3342 | index-to-position: 1.1.0 3343 | type-fest: 4.41.0 3344 | 3345 | parse-ms@4.0.0: {} 3346 | 3347 | parse5-htmlparser2-tree-adapter@6.0.1: 3348 | dependencies: 3349 | parse5: 6.0.1 3350 | 3351 | parse5@5.1.1: {} 3352 | 3353 | parse5@6.0.1: {} 3354 | 3355 | path-exists@3.0.0: {} 3356 | 3357 | path-exists@4.0.0: {} 3358 | 3359 | path-key@3.1.1: {} 3360 | 3361 | path-key@4.0.0: {} 3362 | 3363 | path-type@4.0.0: {} 3364 | 3365 | path-type@6.0.0: {} 3366 | 3367 | picocolors@1.1.1: {} 3368 | 3369 | picomatch@2.3.1: {} 3370 | 3371 | pify@3.0.0: {} 3372 | 3373 | pkg-conf@2.1.0: 3374 | dependencies: 3375 | find-up: 2.1.0 3376 | load-json-file: 4.0.0 3377 | 3378 | prelude-ls@1.2.1: {} 3379 | 3380 | prettier@3.6.2: {} 3381 | 3382 | pretty-ms@9.2.0: 3383 | dependencies: 3384 | parse-ms: 4.0.0 3385 | 3386 | process-nextick-args@2.0.1: {} 3387 | 3388 | proto-list@1.2.4: {} 3389 | 3390 | punycode@2.3.1: {} 3391 | 3392 | queue-microtask@1.2.3: {} 3393 | 3394 | rc@1.2.8: 3395 | dependencies: 3396 | deep-extend: 0.6.0 3397 | ini: 1.3.8 3398 | minimist: 1.2.8 3399 | strip-json-comments: 2.0.1 3400 | 3401 | read-package-up@11.0.0: 3402 | dependencies: 3403 | find-up-simple: 1.0.1 3404 | read-pkg: 9.0.1 3405 | type-fest: 4.41.0 3406 | 3407 | read-pkg@9.0.1: 3408 | dependencies: 3409 | '@types/normalize-package-data': 2.4.4 3410 | normalize-package-data: 6.0.2 3411 | parse-json: 8.3.0 3412 | type-fest: 4.41.0 3413 | unicorn-magic: 0.1.0 3414 | 3415 | readable-stream@2.3.8: 3416 | dependencies: 3417 | core-util-is: 1.0.3 3418 | inherits: 2.0.4 3419 | isarray: 1.0.0 3420 | process-nextick-args: 2.0.1 3421 | safe-buffer: 5.1.2 3422 | string_decoder: 1.1.1 3423 | util-deprecate: 1.0.2 3424 | 3425 | registry-auth-token@5.1.0: 3426 | dependencies: 3427 | '@pnpm/npm-conf': 2.3.1 3428 | 3429 | require-directory@2.1.1: {} 3430 | 3431 | resolve-from@4.0.0: {} 3432 | 3433 | resolve-from@5.0.0: {} 3434 | 3435 | resolve-pkg-maps@1.0.0: {} 3436 | 3437 | reusify@1.1.0: {} 3438 | 3439 | run-parallel@1.2.0: 3440 | dependencies: 3441 | queue-microtask: 1.2.3 3442 | 3443 | safe-buffer@5.1.2: {} 3444 | 3445 | semantic-release@24.2.0(typescript@5.9.2): 3446 | dependencies: 3447 | '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.0(typescript@5.9.2)) 3448 | '@semantic-release/error': 4.0.0 3449 | '@semantic-release/github': 11.0.5(semantic-release@24.2.0(typescript@5.9.2)) 3450 | '@semantic-release/npm': 12.0.2(semantic-release@24.2.0(typescript@5.9.2)) 3451 | '@semantic-release/release-notes-generator': 14.0.3(semantic-release@24.2.0(typescript@5.9.2)) 3452 | aggregate-error: 5.0.0 3453 | cosmiconfig: 9.0.0(typescript@5.9.2) 3454 | debug: 4.4.1 3455 | env-ci: 11.1.1 3456 | execa: 9.6.0 3457 | figures: 6.1.0 3458 | find-versions: 6.0.0 3459 | get-stream: 6.0.1 3460 | git-log-parser: 1.2.1 3461 | hook-std: 3.0.0 3462 | hosted-git-info: 8.1.0 3463 | import-from-esm: 1.3.4 3464 | lodash-es: 4.17.21 3465 | marked: 12.0.2 3466 | marked-terminal: 7.3.0(marked@12.0.2) 3467 | micromatch: 4.0.8 3468 | p-each-series: 3.0.0 3469 | p-reduce: 3.0.0 3470 | read-package-up: 11.0.0 3471 | resolve-from: 5.0.0 3472 | semver: 7.7.2 3473 | semver-diff: 4.0.0 3474 | signale: 1.4.0 3475 | yargs: 17.7.2 3476 | transitivePeerDependencies: 3477 | - supports-color 3478 | - typescript 3479 | 3480 | semver-diff@4.0.0: 3481 | dependencies: 3482 | semver: 7.7.2 3483 | 3484 | semver-regex@4.0.5: {} 3485 | 3486 | semver@7.7.2: {} 3487 | 3488 | shebang-command@2.0.0: 3489 | dependencies: 3490 | shebang-regex: 3.0.0 3491 | 3492 | shebang-regex@3.0.0: {} 3493 | 3494 | signal-exit@3.0.7: {} 3495 | 3496 | signal-exit@4.1.0: {} 3497 | 3498 | signale@1.4.0: 3499 | dependencies: 3500 | chalk: 2.4.2 3501 | figures: 2.0.0 3502 | pkg-conf: 2.1.0 3503 | 3504 | skin-tone@2.0.0: 3505 | dependencies: 3506 | unicode-emoji-modifier-base: 1.0.0 3507 | 3508 | slash@5.1.0: {} 3509 | 3510 | source-map@0.6.1: {} 3511 | 3512 | spawn-error-forwarder@1.0.0: {} 3513 | 3514 | spdx-correct@3.2.0: 3515 | dependencies: 3516 | spdx-expression-parse: 3.0.1 3517 | spdx-license-ids: 3.0.22 3518 | 3519 | spdx-exceptions@2.5.0: {} 3520 | 3521 | spdx-expression-parse@3.0.1: 3522 | dependencies: 3523 | spdx-exceptions: 2.5.0 3524 | spdx-license-ids: 3.0.22 3525 | 3526 | spdx-license-ids@3.0.22: {} 3527 | 3528 | split2@1.0.0: 3529 | dependencies: 3530 | through2: 2.0.5 3531 | 3532 | stream-combiner2@1.1.1: 3533 | dependencies: 3534 | duplexer2: 0.1.4 3535 | readable-stream: 2.3.8 3536 | 3537 | string-width@4.2.3: 3538 | dependencies: 3539 | emoji-regex: 8.0.0 3540 | is-fullwidth-code-point: 3.0.0 3541 | strip-ansi: 6.0.1 3542 | 3543 | string_decoder@1.1.1: 3544 | dependencies: 3545 | safe-buffer: 5.1.2 3546 | 3547 | strip-ansi@6.0.1: 3548 | dependencies: 3549 | ansi-regex: 5.0.1 3550 | 3551 | strip-bom@3.0.0: {} 3552 | 3553 | strip-final-newline@2.0.0: {} 3554 | 3555 | strip-final-newline@3.0.0: {} 3556 | 3557 | strip-final-newline@4.0.0: {} 3558 | 3559 | strip-json-comments@2.0.1: {} 3560 | 3561 | strip-json-comments@3.1.1: {} 3562 | 3563 | super-regex@1.0.0: 3564 | dependencies: 3565 | function-timeout: 1.0.2 3566 | time-span: 5.1.0 3567 | 3568 | supports-color@5.5.0: 3569 | dependencies: 3570 | has-flag: 3.0.0 3571 | 3572 | supports-color@7.2.0: 3573 | dependencies: 3574 | has-flag: 4.0.0 3575 | 3576 | supports-hyperlinks@3.2.0: 3577 | dependencies: 3578 | has-flag: 4.0.0 3579 | supports-color: 7.2.0 3580 | 3581 | temp-dir@3.0.0: {} 3582 | 3583 | tempy@3.1.0: 3584 | dependencies: 3585 | is-stream: 3.0.0 3586 | temp-dir: 3.0.0 3587 | type-fest: 2.19.0 3588 | unique-string: 3.0.0 3589 | 3590 | thenify-all@1.6.0: 3591 | dependencies: 3592 | thenify: 3.3.1 3593 | 3594 | thenify@3.3.1: 3595 | dependencies: 3596 | any-promise: 1.3.0 3597 | 3598 | through2@2.0.5: 3599 | dependencies: 3600 | readable-stream: 2.3.8 3601 | xtend: 4.0.2 3602 | 3603 | time-span@5.1.0: 3604 | dependencies: 3605 | convert-hrtime: 5.0.0 3606 | 3607 | to-regex-range@5.0.1: 3608 | dependencies: 3609 | is-number: 7.0.0 3610 | 3611 | traverse@0.6.8: {} 3612 | 3613 | ts-api-utils@2.1.0(typescript@5.9.2): 3614 | dependencies: 3615 | typescript: 5.9.2 3616 | 3617 | tsx@4.20.5: 3618 | dependencies: 3619 | esbuild: 0.25.9 3620 | get-tsconfig: 4.10.1 3621 | optionalDependencies: 3622 | fsevents: 2.3.3 3623 | 3624 | type-check@0.4.0: 3625 | dependencies: 3626 | prelude-ls: 1.2.1 3627 | 3628 | type-fest@1.4.0: {} 3629 | 3630 | type-fest@2.19.0: {} 3631 | 3632 | type-fest@4.41.0: {} 3633 | 3634 | typescript-eslint@8.20.0(eslint@9.34.0)(typescript@5.9.2): 3635 | dependencies: 3636 | '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2) 3637 | '@typescript-eslint/parser': 8.20.0(eslint@9.34.0)(typescript@5.9.2) 3638 | '@typescript-eslint/utils': 8.20.0(eslint@9.34.0)(typescript@5.9.2) 3639 | eslint: 9.34.0 3640 | typescript: 5.9.2 3641 | transitivePeerDependencies: 3642 | - supports-color 3643 | 3644 | typescript@5.9.2: {} 3645 | 3646 | uglify-js@3.19.3: 3647 | optional: true 3648 | 3649 | undici-types@7.10.0: {} 3650 | 3651 | unicode-emoji-modifier-base@1.0.0: {} 3652 | 3653 | unicorn-magic@0.1.0: {} 3654 | 3655 | unicorn-magic@0.3.0: {} 3656 | 3657 | unique-string@3.0.0: 3658 | dependencies: 3659 | crypto-random-string: 4.0.0 3660 | 3661 | universal-user-agent@7.0.3: {} 3662 | 3663 | universalify@2.0.1: {} 3664 | 3665 | uri-js@4.4.1: 3666 | dependencies: 3667 | punycode: 2.3.1 3668 | 3669 | url-join@5.0.0: {} 3670 | 3671 | util-deprecate@1.0.2: {} 3672 | 3673 | validate-npm-package-license@3.0.4: 3674 | dependencies: 3675 | spdx-correct: 3.2.0 3676 | spdx-expression-parse: 3.0.1 3677 | 3678 | which@2.0.2: 3679 | dependencies: 3680 | isexe: 2.0.0 3681 | 3682 | word-wrap@1.2.5: {} 3683 | 3684 | wordwrap@1.0.0: {} 3685 | 3686 | wrap-ansi@7.0.0: 3687 | dependencies: 3688 | ansi-styles: 4.3.0 3689 | string-width: 4.2.3 3690 | strip-ansi: 6.0.1 3691 | 3692 | xtend@4.0.2: {} 3693 | 3694 | y18n@5.0.8: {} 3695 | 3696 | yargs-parser@20.2.9: {} 3697 | 3698 | yargs-parser@21.1.1: {} 3699 | 3700 | yargs@16.2.0: 3701 | dependencies: 3702 | cliui: 7.0.4 3703 | escalade: 3.2.0 3704 | get-caller-file: 2.0.5 3705 | require-directory: 2.1.1 3706 | string-width: 4.2.3 3707 | y18n: 5.0.8 3708 | yargs-parser: 20.2.9 3709 | 3710 | yargs@17.7.2: 3711 | dependencies: 3712 | cliui: 8.0.1 3713 | escalade: 3.2.0 3714 | get-caller-file: 2.0.5 3715 | require-directory: 2.1.1 3716 | string-width: 4.2.3 3717 | y18n: 5.0.8 3718 | yargs-parser: 21.1.1 3719 | 3720 | yocto-queue@0.1.0: {} 3721 | 3722 | yoctocolors@2.1.2: {} 3723 | 3724 | zod@3.25.76: {} 3725 | --------------------------------------------------------------------------------