├── .prettierrc ├── README.md ├── pnpm-workspace.yaml ├── packages └── am-i-vibing │ ├── tsconfig.json │ ├── scripts │ └── whoami.ts │ ├── src │ ├── index.ts │ ├── types.ts │ ├── providers.ts │ ├── cli.ts │ └── detector.ts │ ├── package.json │ ├── CHANGELOG.md │ ├── test │ ├── hello.test.ts │ └── detector.test.ts │ └── README.md ├── renovate.json ├── .changeset ├── config.json └── README.md ├── .gitignore ├── tsconfig.json ├── .github ├── workflows │ ├── test.yml │ ├── release.yml │ └── claude.yml └── pull_request_template.md ├── package.json ├── CONTRIBUTING.md ├── CLAUDE.md └── pnpm-lock.yaml /.prettierrc: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | packages/am-i-vibing/README.md -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - packages/* 3 | 4 | onlyBuiltDependencies: 5 | - esbuild 6 | -------------------------------------------------------------------------------- /packages/am-i-vibing/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "include": [ 4 | "src" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "github>unjs/renovate-config", 5 | ":widenPeerDependencies" 6 | ], 7 | "packageRules": [] 8 | } 9 | -------------------------------------------------------------------------------- /packages/am-i-vibing/scripts/whoami.ts: -------------------------------------------------------------------------------- 1 | import { detectAgenticEnvironment } from "../src/index.js"; 2 | 3 | const result = detectAgenticEnvironment(); 4 | console.log("Detected Agentic Environment:"); 5 | console.log(JSON.stringify(result, null, 2)); 6 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@3.0.2/schema.json", 3 | "changelog": [ 4 | "@changesets/changelog-github", 5 | { 6 | "repo": "ascorbic/am-i-vibing" 7 | } 8 | ], 9 | "commit": false, 10 | "fixed": [], 11 | "linked": [], 12 | "access": "public", 13 | "baseBranch": "main", 14 | "updateInternalDependencies": "patch", 15 | "ignore": [] 16 | } 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | 4 | # generated types 5 | .astro/ 6 | 7 | # dependencies 8 | node_modules/ 9 | 10 | # logs 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | pnpm-debug.log* 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | .aider.* 20 | # macOS-specific files 21 | .DS_Store 22 | 23 | # jetbrains setting folder 24 | .idea/ 25 | 26 | *.env 27 | .crush -------------------------------------------------------------------------------- /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /packages/am-i-vibing/src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * am-i-vibing - Detect agentic coding environments and AI assistant tools 3 | */ 4 | 5 | // Export types 6 | export type { AgenticType, ProviderConfig, DetectionResult } from "./types.js"; 7 | 8 | // Export providers 9 | export { providers, getProvider, getProvidersByType } from "./providers.js"; 10 | 11 | // Export detection functions 12 | export { 13 | detectAgenticEnvironment, 14 | isAgent, 15 | isInteractive, 16 | isHybrid, 17 | } from "./detector.js"; 18 | 19 | // Import for default export 20 | import { detectAgenticEnvironment } from "./detector.js"; 21 | 22 | // Convenience export for the main function 23 | export default detectAgenticEnvironment; 24 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Base Options: */ 4 | "esModuleInterop": true, 5 | "skipLibCheck": true, 6 | "target": "es2022", 7 | "allowJs": true, 8 | "resolveJsonModule": true, 9 | "moduleDetection": "force", 10 | "isolatedModules": true, 11 | "verbatimModuleSyntax": true, 12 | /* Strictness */ 13 | "strict": true, 14 | "noUncheckedIndexedAccess": true, 15 | "noImplicitOverride": true, 16 | /* AND if you're building for a library: */ 17 | "declaration": true, 18 | "declarationMap": true, 19 | /* If NOT transpiling with TypeScript: */ 20 | "module": "preserve", 21 | "noEmit": true, 22 | /* If your code doesn't run in the DOM: */ 23 | "lib": [ 24 | "es2022" 25 | ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | pull_request: 4 | push: 5 | branches: [main] 6 | jobs: 7 | test: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout 11 | uses: actions/checkout@v5 12 | - uses: pnpm/action-setup@v2 13 | with: 14 | version: 8.15.9 15 | - name: Setup Node 16 | uses: actions/setup-node@v4 17 | with: 18 | cache: "pnpm" 19 | check-latest: true 20 | registry-url: "https://registry.npmjs.org" 21 | - name: Install dependencies 22 | run: | 23 | corepack enable 24 | pnpm install 25 | - name: Build 26 | run: pnpm build 27 | - name: Test 28 | run: pnpm test 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "am-i-vibing", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "check": "pnpm run --filter am-i-vibing check", 8 | "test": "pnpm run --filter am-i-vibing test", 9 | "build": "pnpm run --filter am-i-vibing build", 10 | "whoami": "tsx packages/am-i-vibing/scripts/whoami.ts", 11 | "cli": "npx ./packages/am-i-vibing" 12 | }, 13 | "keywords": [], 14 | "author": "Matt Kane", 15 | "license": "MIT", 16 | "devDependencies": { 17 | "@changesets/changelog-github": "^0.5.2", 18 | "@changesets/cli": "^2.29.8", 19 | "@types/node": "^22.19.1", 20 | "prettier": "^3.7.4", 21 | "tsx": "^4.21.0", 22 | "typescript": "^5.9.3", 23 | "vitest": "^3.2.4" 24 | }, 25 | "packageManager": "pnpm@10.24.0", 26 | "dependencies": { 27 | "tsup": "^8.5.1" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /packages/am-i-vibing/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "am-i-vibing", 3 | "version": "0.1.0", 4 | "description": "Detect agentic coding environments and AI assistant tools", 5 | "type": "module", 6 | "main": "dist/index.js", 7 | "bin": { 8 | "am-i-vibing": "dist/cli.js" 9 | }, 10 | "files": [ 11 | "dist" 12 | ], 13 | "exports": { 14 | ".": "./dist/index.js" 15 | }, 16 | "scripts": { 17 | "build": "tsdown src/index.ts src/cli.ts --format esm --dts --clean", 18 | "dev": "tsdown src/index.ts src/cli.ts --format esm --dts --watch", 19 | "prepublishOnly": "node --run build", 20 | "check": "publint && attw --pack --ignore-rules=cjs-resolves-to-esm", 21 | "test": "vitest run", 22 | "whoami": "tsx scripts/whoami.ts" 23 | }, 24 | "devDependencies": { 25 | "@arethetypeswrong/cli": "^0.18.2", 26 | "@types/node": "^22.19.1", 27 | "publint": "^0.3.15", 28 | "tsdown": "^0.17.0", 29 | "typescript": "^5.9.3", 30 | "vitest": "^3.2.4" 31 | }, 32 | "repository": { 33 | "type": "git", 34 | "url": "git+https://github.com:ascorbic/am-i-vibing.git", 35 | "directory": "packages/am-i-vibing" 36 | }, 37 | "homepage": "https://github.com/ascorbic/am-i-vibing", 38 | "keywords": [ 39 | "ai", 40 | "agentic", 41 | "coding", 42 | "detection", 43 | "llm", 44 | "assistant" 45 | ], 46 | "author": "Matt Kane", 47 | "license": "MIT", 48 | "dependencies": { 49 | "process-ancestry": "^0.1.0" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | jobs: 11 | release: 12 | name: Release 13 | runs-on: ubuntu-latest 14 | permissions: 15 | contents: write 16 | id-token: write 17 | pull-requests: write 18 | repository-projects: write 19 | steps: 20 | - uses: navikt/github-app-token-generator@v1 21 | id: get-token 22 | with: 23 | private-key: ${{ secrets.APP_PRIVATE_KEY }} 24 | app-id: ${{ secrets.APP_ID }} 25 | - name: Checkout Repo 26 | uses: actions/checkout@v5 27 | with: 28 | persist-credentials: false 29 | fetch-depth: 0 30 | 31 | - name: Setup PNPM 32 | uses: pnpm/action-setup@v3 33 | 34 | - name: Setup Node 35 | uses: actions/setup-node@v4 36 | with: 37 | node-version: latest 38 | cache: "pnpm" 39 | 40 | - name: Install Dependencies 41 | run: pnpm install 42 | 43 | - name: Build Packages 44 | run: pnpm run build 45 | - run: pnpm run check 46 | 47 | - name: Create Release Pull Request or Publish to npm 48 | id: changesets 49 | uses: changesets/action@v1 50 | with: 51 | version: pnpm changeset version 52 | publish: pnpm changeset publish 53 | commit: "ci: release" 54 | title: "ci: release" 55 | env: 56 | GITHUB_TOKEN: ${{ steps.get-token.outputs.token }} 57 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 58 | -------------------------------------------------------------------------------- /packages/am-i-vibing/src/types.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * The type of AI coding environment detected 3 | */ 4 | export type AgenticType = "agent" | "interactive" | "hybrid"; 5 | 6 | /** 7 | * Environment variable definition - either just a name or a name/value tuple 8 | */ 9 | export type EnvVarDefinition = string | [string, string]; 10 | 11 | /** 12 | * Environment variable group with logical operators 13 | */ 14 | export interface EnvVarGroup { 15 | /** ANY of these environment variables can match (OR logic) */ 16 | any?: EnvVarDefinition[]; 17 | 18 | /** ALL of these environment variables must match (AND logic) */ 19 | all?: EnvVarDefinition[]; 20 | 21 | /** NONE of these environment variables should be present (NOT logic) */ 22 | none?: EnvVarDefinition[]; 23 | } 24 | 25 | /** 26 | * Configuration for detecting a specific AI coding provider 27 | */ 28 | export interface ProviderConfig { 29 | /** Unique identifier for the provider */ 30 | id: string; 31 | 32 | /** Human-readable name of the provider */ 33 | name: string; 34 | 35 | /** Type of AI coding environment */ 36 | type: AgenticType; 37 | 38 | /** Environment variables */ 39 | envVars?: Array; 40 | 41 | /** Process names to check for in the process tree */ 42 | processChecks?: string[]; 43 | 44 | /** Custom detection functions for complex logic */ 45 | customDetectors?: (() => boolean)[]; 46 | } 47 | 48 | /** 49 | * Result of agentic environment detection 50 | */ 51 | export interface DetectionResult { 52 | /** Whether an agentic environment was detected */ 53 | isAgentic: boolean; 54 | 55 | /** ID of the detected provider, if any */ 56 | id: string | null; 57 | 58 | /** Name of the detected provider, if any */ 59 | name: string | null; 60 | 61 | /** Type of agentic environment, if detected */ 62 | type: AgenticType | null; 63 | } 64 | -------------------------------------------------------------------------------- /packages/am-i-vibing/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # am-i-vibing 2 | 3 | ## 0.1.0 4 | 5 | ### Minor Changes 6 | 7 | - [#27](https://github.com/ascorbic/am-i-vibing/pull/27) [`c6fac23`](https://github.com/ascorbic/am-i-vibing/commit/c6fac2328bb2a4ccdf3ca55647b34fe0c747f434) Thanks [@ascorbic](https://github.com/ascorbic)! - Add support for Octofriend 8 | 9 | ## 0.0.5 10 | 11 | ### Patch Changes 12 | 13 | - [#24](https://github.com/ascorbic/am-i-vibing/pull/24) [`e8e7a42`](https://github.com/ascorbic/am-i-vibing/commit/e8e7a42f3cc1fd20e07cb0d704709d9abe4a2a96) Thanks [@ascorbic](https://github.com/ascorbic)! - Adds support for detecting Crush 14 | 15 | ## 0.0.4 16 | 17 | ### Patch Changes 18 | 19 | - [#19](https://github.com/ascorbic/am-i-vibing/pull/19) [`a4440e6`](https://github.com/ascorbic/am-i-vibing/commit/a4440e66aad4b356207a6ec19c007ab6013d27cb) Thanks [@ascorbic](https://github.com/ascorbic)! - feat: adds opencode detection 20 | 21 | ## 0.0.3 22 | 23 | ### Patch Changes 24 | 25 | - [#12](https://github.com/ascorbic/am-i-vibing/pull/12) [`42a7515`](https://github.com/ascorbic/am-i-vibing/commit/42a751583c6ce6d7f014dc4ef55138f932eae1b5) Thanks [@ascorbic](https://github.com/ascorbic)! - feat: Add detection for Jules agent 26 | 27 | ## 0.0.2 28 | 29 | ### Patch Changes 30 | 31 | - [#8](https://github.com/ascorbic/am-i-vibing/pull/8) [`a68a52a`](https://github.com/ascorbic/am-i-vibing/commit/a68a52a1b4f3e750dac090482b18dbd6111c6ff7) Thanks [@ascorbic](https://github.com/ascorbic)! - Add Warp 32 | 33 | - [#8](https://github.com/ascorbic/am-i-vibing/pull/8) [`a68a52a`](https://github.com/ascorbic/am-i-vibing/commit/a68a52a1b4f3e750dac090482b18dbd6111c6ff7) Thanks [@ascorbic](https://github.com/ascorbic)! - Add hybrid enviornment type 34 | 35 | - [#6](https://github.com/ascorbic/am-i-vibing/pull/6) [`0147b2c`](https://github.com/ascorbic/am-i-vibing/commit/0147b2c9ae43943266480d796150d42da9cd92dd) Thanks [@ascorbic](https://github.com/ascorbic)! - Add Windsurf agent provider detection 36 | 37 | ## 0.0.1 38 | 39 | ### Patch Changes 40 | 41 | - [`b777b71`](https://github.com/ascorbic/am-i-vibing/commit/b777b7171f1a396a254196a8587e7c72e8f9fbb0) Thanks [@ascorbic](https://github.com/ascorbic)! - Initial release 42 | -------------------------------------------------------------------------------- /.github/workflows/claude.yml: -------------------------------------------------------------------------------- 1 | name: Claude PR Assistant 2 | 3 | on: 4 | issue_comment: 5 | types: [created] 6 | pull_request_review_comment: 7 | types: [created] 8 | issues: 9 | types: [opened, assigned] 10 | pull_request_review: 11 | types: [submitted] 12 | 13 | jobs: 14 | claude-code-action: 15 | if: | 16 | (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || 17 | (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || 18 | (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || 19 | (github.event_name == 'issues' && contains(github.event.issue.body, '@claude')) 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: read 23 | pull-requests: read 24 | issues: read 25 | id-token: write 26 | steps: 27 | - name: Checkout repository 28 | uses: actions/checkout@v5 29 | with: 30 | fetch-depth: 1 31 | 32 | - name: Install pnpm 33 | uses: pnpm/action-setup@v4 34 | 35 | - name: Setup Node.js 36 | uses: actions/setup-node@v4 37 | with: 38 | node-version: "lts/*" 39 | cache: "pnpm" 40 | 41 | - name: Install dependencies 42 | run: pnpm install 43 | 44 | - name: Run Claude PR Action 45 | uses: anthropics/claude-code-action@beta 46 | with: 47 | claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} 48 | timeout_minutes: "5" 49 | mcp_config: | 50 | { 51 | "mcpServers": { 52 | "astro-docs": { 53 | "type": "http", 54 | "url": "https://mcp.docs.astro.build/mcp" 55 | } 56 | } 57 | } 58 | allowed_tools: | 59 | mcp__astro-docs__search_astro_docs 60 | Bash(pnpm install) 61 | Bash(pnpm run:*) 62 | Bash(npm run:*) 63 | Bash(npx packages/am-i-vibing) 64 | # Optional: Restrict network access to specific domains only 65 | # experimental_allowed_domains: | 66 | # .anthropic.com 67 | # .github.com 68 | # api.github.com 69 | # .githubusercontent.com 70 | # bun.sh 71 | # registry.npmjs.org 72 | # .blob.core.windows.net 73 | -------------------------------------------------------------------------------- /packages/am-i-vibing/test/hello.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from "vitest"; 2 | import { 3 | providers, 4 | getProvider, 5 | getProvidersByType, 6 | } from "../src/providers.js"; 7 | 8 | describe("providers", () => { 9 | it("should export provider configurations", () => { 10 | expect(providers).toBeDefined(); 11 | expect(Array.isArray(providers)).toBe(true); 12 | expect(providers.length).toBeGreaterThan(0); 13 | }); 14 | 15 | it("should include Claude Code provider", () => { 16 | const claudeCode = providers.find((p) => p.name === "Claude Code"); 17 | expect(claudeCode).toBeDefined(); 18 | expect(claudeCode?.type).toBe("agent"); 19 | expect(claudeCode?.envVars).toContain("CLAUDECODE"); 20 | }); 21 | 22 | it("should include Cursor provider", () => { 23 | const cursor = providers.find((p) => p.name === "Cursor"); 24 | expect(cursor).toBeDefined(); 25 | expect(cursor?.type).toBe("interactive"); 26 | }); 27 | 28 | it("should include Bolt.new providers", () => { 29 | const bolt = providers.find((p) => p.name === "Bolt.new"); 30 | const boltAgent = providers.find((p) => p.name === "Bolt.new Agent"); 31 | 32 | expect(bolt).toBeDefined(); 33 | expect(bolt?.type).toBe("interactive"); 34 | expect(boltAgent).toBeDefined(); 35 | expect(boltAgent?.type).toBe("agent"); 36 | }); 37 | 38 | it("should include Warp hybrid provider", () => { 39 | const warp = providers.find((p) => p.name === "Warp Terminal"); 40 | expect(warp).toBeDefined(); 41 | expect(warp?.type).toBe("hybrid"); 42 | }); 43 | 44 | it("getProvider should return correct provider", () => { 45 | const claudeCode = getProvider("Claude Code"); 46 | expect(claudeCode).toBeDefined(); 47 | expect(claudeCode?.name).toBe("Claude Code"); 48 | 49 | const nonExistent = getProvider("NonExistent"); 50 | expect(nonExistent).toBeUndefined(); 51 | }); 52 | 53 | it("getProvidersByType should filter providers correctly", () => { 54 | const agentProviders = getProvidersByType("agent"); 55 | const interactiveProviders = getProvidersByType("interactive"); 56 | const hybridProviders = getProvidersByType("hybrid"); 57 | 58 | expect(agentProviders.length).toBeGreaterThan(0); 59 | expect(interactiveProviders.length).toBeGreaterThan(0); 60 | expect(hybridProviders.length).toBeGreaterThan(0); 61 | 62 | expect(agentProviders.every((p) => p.type === "agent")).toBe(true); 63 | expect(interactiveProviders.every((p) => p.type === "interactive")).toBe( 64 | true, 65 | ); 66 | expect(hybridProviders.every((p) => p.type === "hybrid")).toBe(true); 67 | }); 68 | }); 69 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | # Provider Update/Addition 2 | 3 | ## Description 4 | 5 | Brief description of the AI tool provider being added or updated. 6 | 7 | ## Provider Details 8 | 9 | **Tool Name**: 10 | **Provider ID**: 11 | **Type**: 12 | **Detection Method**: 13 | 14 | ## Detection Configuration 15 | 16 | ### Environment Variables 17 | 18 | - [ ] String detection: `"ENV_VAR_NAME"` 19 | - [ ] Tuple detection: `["ENV_VAR_NAME", "expected-value"]` 20 | - [ ] Environment variable groups: `{ all: [...], any: [...], none: [...] }` 21 | 22 | ### Process Checks 23 | 24 | - Process names: `"process-name"` 25 | 26 | ### Custom Detectors 27 | 28 | - [ ] Custom detector functions implemented 29 | - [ ] Logic explanation: 30 | 31 | ## Testing 32 | 33 | ### Environment Testing 34 | - [ ] Tested in actual tool environment 35 | - [ ] CLI detection works: `pnpm run cli` 36 | - [ ] Debug output verified: `pnpm run cli --debug` 37 | 38 | ### Unit Testing 39 | - [ ] Unit tests added to `test/detector.test.ts` 40 | - [ ] Tests pass: `pnpm run test` 41 | - [ ] False positive tests included 42 | 43 | ### Build & Type Check 44 | - [ ] Build succeeds: `pnpm run build` 45 | - [ ] Type check passes: `pnpm run check` 46 | 47 | ## Research & Verification 48 | 49 | ### Environment Variable Source 50 | 51 | - [ ] Official documentation 52 | - [ ] Tool source code 53 | - [ ] Real environment testing 54 | - [ ] Community/forum discussion 55 | - Source link: 56 | 57 | ### Verification Method 58 | 59 | - [ ] Tested in live environment 60 | - [ ] Reproduced detection conditions 61 | - [ ] Verified with tool version: 62 | 63 | ## Changeset 64 | 65 | - [ ] Changeset created: `pnpm changeset` 66 | - [ ] Change type: `patch` | `minor` | `major` 67 | 68 | ## Checklist 69 | 70 | ### Provider Definition 71 | - [ ] Added to `src/providers.ts` 72 | - [ ] Follows naming conventions (`kebab-case` ID) 73 | - [ ] Correct provider type assigned 74 | - [ ] Detection method priority followed (env vars > process checks > custom detectors) 75 | 76 | ### Code Quality 77 | - [ ] No hardcoded values in detection logic 78 | - [ ] Proper TypeScript types used 79 | - [ ] Follows existing code patterns 80 | - [ ] No breaking changes (unless major version) 81 | 82 | ### Documentation 83 | - [ ] Provider documented in code comments if complex 84 | - [ ] Detection method explained if non-obvious 85 | - [ ] Updated relevant documentation if needed 86 | 87 | ## Additional Notes 88 | 89 | 90 | 91 | --- 92 | 93 | ## For Maintainers 94 | 95 | ### Review Checklist 96 | - [ ] Provider definition follows guidelines 97 | - [ ] Detection method is appropriate and reliable 98 | - [ ] Tests are comprehensive and pass 99 | - [ ] No false positives in common environments 100 | - [ ] Code follows project conventions 101 | - [ ] Changeset is appropriate for the change -------------------------------------------------------------------------------- /packages/am-i-vibing/src/providers.ts: -------------------------------------------------------------------------------- 1 | import type { ProviderConfig } from "./types.js"; 2 | 3 | /** 4 | * Provider configurations for major AI coding tools 5 | */ 6 | export const providers: ProviderConfig[] = [ 7 | { 8 | id: "sst-opencode", 9 | name: "SST OpenCode", 10 | type: "agent", 11 | envVars: [ 12 | { 13 | any: [ 14 | "OPENCODE_BIN_PATH", 15 | "OPENCODE_SERVER", 16 | "OPENCODE_APP_INFO", 17 | "OPENCODE_MODES", 18 | ], 19 | }, 20 | ], 21 | }, 22 | { 23 | id: "jules", 24 | name: "Jules", 25 | type: "agent", 26 | envVars: [{ all: [["HOME", "/home/jules"], ["USER", "swebot"]] }], 27 | }, 28 | { 29 | id: "claude-code", 30 | name: "Claude Code", 31 | type: "agent", 32 | envVars: ["CLAUDECODE"], 33 | }, 34 | { 35 | id: "cursor-agent", 36 | name: "Cursor Agent", 37 | type: "agent", 38 | envVars: [ 39 | { 40 | all: ["CURSOR_TRACE_ID", ["PAGER", "head -n 10000 | cat"]], 41 | }, 42 | ], 43 | }, 44 | { 45 | id: "cursor", 46 | name: "Cursor", 47 | type: "interactive", 48 | envVars: ["CURSOR_TRACE_ID"], 49 | }, 50 | { 51 | id: "gemini-agent", 52 | name: "Gemini Agent", 53 | type: "agent", 54 | processChecks: ["gemini"], 55 | }, 56 | { 57 | id: "codex", 58 | name: "OpenAI Codex", 59 | type: "agent", 60 | processChecks: ["codex"], 61 | }, 62 | { 63 | id: "replit", 64 | name: "Replit", 65 | type: "agent", 66 | envVars: ["REPL_ID"], 67 | }, 68 | { 69 | id: "aider", 70 | name: "Aider", 71 | type: "agent", 72 | envVars: ["AIDER_API_KEY"], 73 | processChecks: ["aider"], 74 | }, 75 | { 76 | id: "bolt-agent", 77 | name: "Bolt.new Agent", 78 | type: "agent", 79 | envVars: [ 80 | { 81 | all: [["SHELL", "/bin/jsh"], "npm_config_yes"], 82 | }, 83 | ], 84 | }, 85 | { 86 | id: "bolt", 87 | name: "Bolt.new", 88 | type: "interactive", 89 | envVars: [ 90 | { 91 | all: [["SHELL", "/bin/jsh"]], 92 | none: ["npm_config_yes"], 93 | }, 94 | ], 95 | }, 96 | { 97 | id: "zed-agent", 98 | name: "Zed Agent", 99 | type: "agent", 100 | envVars: [ 101 | { 102 | all: [ 103 | ["TERM_PROGRAM", "zed"], 104 | ["PAGER", "cat"], 105 | ], 106 | }, 107 | ], 108 | }, 109 | { 110 | id: "zed", 111 | name: "Zed", 112 | type: "interactive", 113 | envVars: [ 114 | { 115 | all: [["TERM_PROGRAM", "zed"]], 116 | none: [["PAGER", "cat"]], 117 | }, 118 | ], 119 | }, 120 | { 121 | id: "replit-assistant", 122 | name: "Replit Assistant", 123 | type: "agent", 124 | envVars: [ 125 | { 126 | all: ["REPL_ID", ["REPLIT_MODE", "assistant"]], 127 | }, 128 | ], 129 | }, 130 | { 131 | id: "replit", 132 | name: "Replit", 133 | type: "interactive", 134 | envVars: [ 135 | { 136 | all: ["REPL_ID"], 137 | none: [["REPLIT_MODE", "assistant"]], 138 | }, 139 | ], 140 | }, 141 | { 142 | id: "windsurf", 143 | name: "Windsurf", 144 | type: "agent", 145 | envVars: ["CODEIUM_EDITOR_APP_ROOT"], 146 | }, 147 | { 148 | id: "crush", 149 | name: "Crush", 150 | type: "agent", 151 | processChecks: ["crush"], 152 | }, 153 | { 154 | id: "vscode-copilot-agent", 155 | name: "GitHub Copilot in VS Code", 156 | type: "agent", 157 | envVars: [ 158 | { 159 | all: [ 160 | ["TERM_PROGRAM", "vscode"], 161 | ["GIT_PAGER", "cat"], 162 | ], 163 | }, 164 | ], 165 | }, 166 | { 167 | id: "warp", 168 | name: "Warp Terminal", 169 | type: "hybrid", 170 | envVars: [ 171 | { 172 | all: [ 173 | ["TERM_PROGRAM", "WarpTerminal"], 174 | ], 175 | }, 176 | ], 177 | }, 178 | { 179 | id: "octofriend", 180 | name: "Octofriend", 181 | type: "agent", 182 | processChecks: ["octofriend"], 183 | }, 184 | ]; 185 | 186 | /** 187 | * Get provider configuration by name 188 | */ 189 | export function getProvider(name: string): ProviderConfig | undefined { 190 | return providers.find((p) => p.name === name); 191 | } 192 | 193 | /** 194 | * Get all providers of a specific type 195 | */ 196 | export function getProvidersByType( 197 | type: "agent" | "interactive" | "hybrid", 198 | ): ProviderConfig[] { 199 | return providers.filter((p) => p.type === type); 200 | } 201 | -------------------------------------------------------------------------------- /packages/am-i-vibing/src/cli.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { parseArgs } from "node:util"; 4 | import { getProcessAncestry } from "process-ancestry"; 5 | import { 6 | detectAgenticEnvironment, 7 | isAgent, 8 | isInteractive, 9 | isHybrid, 10 | } from "./detector.js"; 11 | 12 | interface CliOptions { 13 | format?: "json" | "text"; 14 | check?: "agent" | "interactive" | "hybrid"; 15 | quiet?: boolean; 16 | help?: boolean; 17 | debug?: boolean; 18 | } 19 | 20 | function parseCliArgs(): CliOptions { 21 | const { values } = parseArgs({ 22 | args: process.argv.slice(2), 23 | options: { 24 | format: { 25 | type: "string", 26 | short: "f", 27 | default: "text", 28 | }, 29 | check: { 30 | type: "string", 31 | short: "c", 32 | }, 33 | quiet: { 34 | type: "boolean", 35 | short: "q", 36 | default: false, 37 | }, 38 | help: { 39 | type: "boolean", 40 | short: "h", 41 | default: false, 42 | }, 43 | debug: { 44 | type: "boolean", 45 | short: "d", 46 | default: false, 47 | }, 48 | }, 49 | allowPositionals: false, 50 | }); 51 | 52 | // Validate format option 53 | if (values.format && !["json", "text"].includes(values.format)) { 54 | console.error( 55 | `Error: Invalid format '${values.format}'. Must be 'json' or 'text'.`, 56 | ); 57 | process.exit(1); 58 | } 59 | 60 | // Validate check option 61 | if (values.check && !["agent", "interactive", "hybrid"].includes(values.check)) { 62 | console.error( 63 | `Error: Invalid check type '${values.check}'. Must be 'agent', 'interactive', or 'hybrid'.`, 64 | ); 65 | process.exit(1); 66 | } 67 | 68 | return { 69 | format: values.format as "json" | "text", 70 | check: values.check as "agent" | "interactive" | "hybrid", 71 | quiet: values.quiet, 72 | help: values.help, 73 | debug: values.debug, 74 | }; 75 | } 76 | 77 | function showHelp(): void { 78 | console.log(` 79 | am-i-vibing - Detect agentic coding environments 80 | 81 | USAGE: 82 | npx am-i-vibing [OPTIONS] 83 | 84 | OPTIONS: 85 | -f, --format Output format (default: text) 86 | -c, --check Check for specific environment type 87 | -q, --quiet Only output result, no labels 88 | -d, --debug Debug output with environment and process info 89 | -h, --help Show this help message 90 | 91 | EXAMPLES: 92 | npx am-i-vibing # Detect current environment 93 | npx am-i-vibing --format json # JSON output 94 | npx am-i-vibing --check agent # Check if running under agent 95 | npx am-i-vibing --check hybrid # Check if running under hybrid 96 | npx am-i-vibing --quiet # Minimal output 97 | npx am-i-vibing --debug # Debug with full environment info 98 | 99 | EXIT CODES: 100 | 0 Agentic environment detected (or specific check passed) 101 | 1 No agentic environment detected (or specific check failed) 102 | `); 103 | } 104 | 105 | function checkEnvironmentType(checkType: string): boolean { 106 | switch (checkType) { 107 | case "agent": 108 | return isAgent(); 109 | case "interactive": 110 | return isInteractive(); 111 | case "hybrid": 112 | return isHybrid(); 113 | default: 114 | return false; 115 | } 116 | } 117 | 118 | function formatOutput( 119 | result: ReturnType, 120 | options: CliOptions, 121 | ): string { 122 | if (options.debug) { 123 | let processAncestry: any[] = []; 124 | try { 125 | processAncestry = getProcessAncestry(); 126 | } catch (error) { 127 | processAncestry = [{ error: "Failed to get process ancestry" }]; 128 | } 129 | 130 | const debugOutput = { 131 | detection: result, 132 | environment: process.env, 133 | processAncestry, 134 | }; 135 | return JSON.stringify(debugOutput, null, 2); 136 | } 137 | 138 | if (options.format === "json") { 139 | return JSON.stringify(result, null, 2); 140 | } 141 | 142 | if (options.quiet) { 143 | if (options.check) { 144 | return checkEnvironmentType(options.check) ? "true" : "false"; 145 | } 146 | return result.isAgentic ? `${result.name}` : "none"; 147 | } 148 | 149 | if (options.check) { 150 | const matches = checkEnvironmentType(options.check); 151 | return matches 152 | ? `✓ Running in ${options.check} environment: ${result.name}` 153 | : `✗ Not running in ${options.check} environment`; 154 | } 155 | 156 | if (!result.isAgentic) { 157 | return "✗ No agentic environment detected"; 158 | } 159 | 160 | return `✓ Detected: [${result.id}] ${result.name} (${result.type})`; 161 | } 162 | 163 | function main(): void { 164 | const options = parseCliArgs(); 165 | 166 | if (options.help) { 167 | showHelp(); 168 | process.exit(0); 169 | } 170 | 171 | const result = detectAgenticEnvironment(); 172 | let exitCode = 1; 173 | 174 | if (options.check) { 175 | exitCode = checkEnvironmentType(options.check) ? 0 : 1; 176 | } else { 177 | exitCode = result.isAgentic ? 0 : 1; 178 | } 179 | 180 | const output = formatOutput(result, options); 181 | console.log(output); 182 | 183 | process.exit(exitCode); 184 | } 185 | 186 | main(); 187 | -------------------------------------------------------------------------------- /packages/am-i-vibing/src/detector.ts: -------------------------------------------------------------------------------- 1 | import type { 2 | DetectionResult, 3 | ProviderConfig, 4 | EnvVarDefinition, 5 | EnvVarGroup, 6 | } from "./types.js"; 7 | import { providers } from "./providers.js"; 8 | import { getProcessAncestry } from "process-ancestry"; 9 | 10 | /** 11 | * Check if a specific environment variable exists (handles both strings and tuples) 12 | */ 13 | function checkEnvVar( 14 | envVarDef: EnvVarDefinition, 15 | env: Record = process.env, 16 | ): boolean { 17 | const [envVar, expectedValue] = 18 | typeof envVarDef === "string" ? [envVarDef, undefined] : envVarDef; 19 | 20 | const actualValue = env[envVar]; 21 | return Boolean( 22 | actualValue && (!expectedValue || actualValue === expectedValue), 23 | ); 24 | } 25 | 26 | /** 27 | * Check if a process is running in the process tree 28 | */ 29 | function checkProcess( 30 | processName: string, 31 | processAncestry?: Array<{ command?: string }>, 32 | ): boolean { 33 | try { 34 | const ancestry = processAncestry ?? getProcessAncestry(); 35 | for (const ancestorProcess of ancestry) { 36 | if (ancestorProcess.command?.includes(processName)) { 37 | return true; 38 | } 39 | } 40 | } catch (error) { 41 | // Ignore process check errors 42 | } 43 | return false; 44 | } 45 | 46 | /** 47 | * Check if an environment variable group matches based on its properties 48 | */ 49 | function checkEnvVars( 50 | definition: EnvVarGroup | EnvVarDefinition, 51 | env: Record = process.env, 52 | ): boolean { 53 | if (typeof definition === "string" || Array.isArray(definition)) { 54 | return checkEnvVar(definition, env); 55 | } 56 | 57 | const { any, all, none } = definition; 58 | 59 | // Check ANY conditions (OR logic) - at least one must pass 60 | const anyResult = 61 | !any?.length || any.some((envVar) => checkEnvVar(envVar, env)); 62 | 63 | // Check ALL conditions (AND logic) - all must pass 64 | const allResult = 65 | !all?.length || all.every((envVar) => checkEnvVar(envVar, env)); 66 | 67 | // Check NONE conditions (NOT logic) - none should pass 68 | const noneResult = 69 | !none?.length || !none.some((envVar) => checkEnvVar(envVar, env)); 70 | 71 | return anyResult && allResult && noneResult; 72 | } 73 | 74 | /** 75 | * Run custom detectors for a provider 76 | */ 77 | function runCustomDetectors(provider: ProviderConfig): boolean { 78 | return ( 79 | provider.customDetectors?.some((detector) => { 80 | try { 81 | return detector(); 82 | } catch { 83 | return false; 84 | } 85 | }) ?? false 86 | ); 87 | } 88 | 89 | /** 90 | * Create a positive detection result 91 | */ 92 | function createDetectedResult(provider: ProviderConfig): DetectionResult { 93 | return { 94 | isAgentic: true, 95 | id: provider.id, 96 | name: provider.name, 97 | type: provider.type, 98 | }; 99 | } 100 | 101 | /** 102 | * Detect agentic coding environment 103 | */ 104 | export function detectAgenticEnvironment( 105 | env: Record = process.env, 106 | processAncestry?: Array<{ command?: string }>, 107 | ): DetectionResult { 108 | for (const provider of providers) { 109 | // Check environment variables 110 | if (provider.envVars?.some((group) => checkEnvVars(group, env))) { 111 | return createDetectedResult(provider); 112 | } 113 | 114 | // Check processes 115 | if (provider.processChecks?.some((processName) => checkProcess(processName, processAncestry))) { 116 | return createDetectedResult(provider); 117 | } 118 | 119 | // Run custom detectors 120 | if (runCustomDetectors(provider)) { 121 | return createDetectedResult(provider); 122 | } 123 | } 124 | 125 | // No provider detected 126 | return { 127 | isAgentic: false, 128 | id: null, 129 | name: null, 130 | type: null, 131 | }; 132 | } 133 | 134 | /** 135 | * Check if currently running in a specific provider 136 | */ 137 | export function isProvider( 138 | providerName: string, 139 | env: Record = process.env, 140 | processAncestry?: Array<{ command?: string }>, 141 | ): boolean { 142 | const result = detectAgenticEnvironment(env, processAncestry); 143 | return result.name === providerName; 144 | } 145 | 146 | /** 147 | * Check if currently running in any agent environment 148 | */ 149 | export function isAgent( 150 | env: Record = process.env, 151 | processAncestry?: Array<{ command?: string }>, 152 | ): boolean { 153 | const result = detectAgenticEnvironment(env, processAncestry); 154 | return result.type === "agent" || result.type === "hybrid"; 155 | } 156 | 157 | /** 158 | * Check if currently running in any interactive AI environment 159 | */ 160 | export function isInteractive( 161 | env: Record = process.env, 162 | processAncestry?: Array<{ command?: string }>, 163 | ): boolean { 164 | const result = detectAgenticEnvironment(env, processAncestry); 165 | return result.type === "interactive" || result.type === "hybrid"; 166 | } 167 | 168 | /** 169 | * Check if currently running in any hybrid AI environment 170 | */ 171 | export function isHybrid( 172 | env: Record = process.env, 173 | processAncestry?: Array<{ command?: string }>, 174 | ): boolean { 175 | const result = detectAgenticEnvironment(env, processAncestry); 176 | return result.type === "hybrid"; 177 | } 178 | -------------------------------------------------------------------------------- /packages/am-i-vibing/README.md: -------------------------------------------------------------------------------- 1 | # am-i-vibing 2 | 3 | Detect agentic coding environments and AI assistant tools. This library allows CLI tools and Node apps to detect when they're being executed by AI agents. This enables them to adapt by, for example, providing different output formats or logs. 4 | 5 | ## Installation 6 | 7 | Install as library: 8 | 9 | ```bash 10 | npm install am-i-vibing 11 | ``` 12 | 13 | Run as CLI tool: 14 | 15 | ```bash 16 | npx am-i-vibing 17 | ``` 18 | 19 | ```ts 20 | import { detectAgenticEnvironment } from "am-i-vibing"; 21 | const result = detectAgenticEnvironment(); 22 | console.log(`Detected: ${result.name} (${result.type})`); 23 | ``` 24 | 25 | ## Supported AI Tools 26 | 27 | - **Aider** 28 | - **Bolt** 29 | - **Claude Code** 30 | - **Cursor** 31 | - **Gemini CLI** 32 | - **GitHub Copilot Agent** 33 | - **Jules** 34 | - **Codex CLI** 35 | - **Replit** 36 | - **Warp** 37 | - **Windsurf** 38 | - **Zed** 39 | - **opencode** 40 | 41 | ## Example use case 42 | 43 | Generating LLM-specific error messages or logs: 44 | 45 | ```typescript 46 | import { isAgent } from "am-i-vibing"; 47 | const agent = isAgent(); 48 | 49 | function handleError(error: Error) { 50 | if (agent) { 51 | console.info(` 52 | # Error 53 | ${error.message} 54 | ${error.name} 55 | ${error.stack} 56 | Use the search_docs tool to find help for this error. If the tool is not available, 57 | prompt the user to enable the MCP server followng the instructions at https://example.com/mcp 58 | `); 59 | } else { 60 | console.error("An error occurred:", error.message); 61 | } 62 | } 63 | ``` 64 | 65 | ## Environment Types 66 | 67 | The library detects three main types of environments: 68 | 69 | - **Agent**: Command was directly run by an AI agent (e.g. Claude Code, Codex CLI, Jules) 70 | - **Interactive**: Interactive commands run inside an AI environment (e.g. Cursor terminal, Replit shell) 71 | - **Hybrid**: Environments that combine both agentic and interactive features in the same session (e.g. Warp) 72 | 73 | There may be false positives, such as if a user directly runs a command in an terminal opened by an AI tool, such as a Copilot terminal in VS Code. 74 | 75 | ## Library Usage 76 | 77 | ```typescript 78 | import { 79 | detectAgenticEnvironment, 80 | isAgent, 81 | isInteractive, 82 | isHybrid, 83 | } from "am-i-vibing"; 84 | 85 | // Full detection 86 | const result = detectAgenticEnvironment(); 87 | console.log(`Detected: ${result.name} (${result.type})`); 88 | console.log(`ID: ${result.id}`); 89 | console.log(`Is agentic: ${result.isAgentic}`); 90 | 91 | // Quick checks 92 | if (isAgent()) { 93 | console.log("Running under direct AI agent control"); 94 | } 95 | 96 | if (isInteractive()) { 97 | console.log("Running in interactive AI environment"); 98 | } 99 | 100 | if (isHybrid()) { 101 | console.log("Running in hybrid AI environment"); 102 | } 103 | 104 | // Note: Hybrid environments return true for both isAgent() and isInteractive() 105 | ``` 106 | 107 | ## Detection Result 108 | 109 | The library returns a `DetectionResult` object with the following structure: 110 | 111 | ```typescript 112 | interface DetectionResult { 113 | isAgentic: boolean; // Whether any agentic environment was detected 114 | id: string | null; // Provider ID (e.g., "claude-code") 115 | name: string | null; // Human-readable name (e.g., "Claude Code") 116 | type: AgenticType | null; // "agent" | "interactive" | "hybrid" 117 | } 118 | ``` 119 | 120 | ## CLI Usage 121 | 122 | Use the CLI to quickly check if you're running in an agentic environment: 123 | 124 | ```bash 125 | # Basic detection 126 | npx am-i-vibing 127 | # ✓ Detected: Claude Code (agent) 128 | 129 | # JSON output 130 | npx am-i-vibing --format json 131 | # {"isAgentic": true, "id": "claude-code", "name": "Claude Code", "type": "agent"} 132 | 133 | # Check for specific environment type 134 | npx am-i-vibing --check agent 135 | # ✓ Running in agent environment: Claude Code 136 | 137 | npx am-i-vibing --check interactive 138 | # ✗ Not running in interactive environment 139 | 140 | # Quiet mode (useful for scripts) 141 | npx am-i-vibing --quiet 142 | # Claude Code 143 | 144 | # Debug mode (full diagnostic output) 145 | npx am-i-vibing --debug 146 | # {"detection": {"isAgentic": true, "id": "claude-code", "name": "Claude Code", "type": "agent"}, "environment": {...}, "processAncestry": [...]} 147 | ``` 148 | 149 | ### CLI Options 150 | 151 | - `-f, --format ` - Output format (default: text) 152 | - `-c, --check ` - Check for specific environment type 153 | - `-q, --quiet` - Only output result, no labels 154 | - `-d, --debug` - Debug output with environment and process info 155 | - `-h, --help` - Show help message 156 | 157 | ### Exit Codes 158 | 159 | - `0` - Agentic environment detected (or specific check passed) 160 | - `1` - No agentic environment detected (or specific check failed) 161 | 162 | ## Debug Output 163 | 164 | The `--debug` flag provides comprehensive diagnostic information including: 165 | 166 | - **detection**: Standard detection result (same as `--format json`) 167 | - **environment**: Complete dump of `process.env` variables 168 | - **processAncestry**: Process tree showing parent processes up to the root 169 | 170 | This is useful for troubleshooting detection issues and understanding the runtime environment. 171 | 172 | ```bash 173 | npx am-i-vibing --debug 174 | # { 175 | # "detection": { ... }, 176 | # "environment": { ... }, 177 | # "processAncestry": [...] 178 | # } 179 | ``` 180 | 181 | ## License 182 | 183 | MIT 184 | 185 | Copyright © 2025 Matt Kane 186 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to am-i-vibing 2 | 3 | Thank you for your interest in contributing to am-i-vibing! This guide covers how to add new providers or update existing ones for AI coding tools detection. 4 | 5 | ## Provider Guidelines 6 | 7 | ### Research Requirements 8 | 9 | Before adding a new provider, ensure you have: 10 | 11 | 1. **Verified Environment Variables**: Use actual environment variables from real usage, not speculation 12 | 2. **Tested Detection**: Confirm the detection method works in the actual tool 13 | 3. **Documented Source**: Note where you found the environment variable information 14 | 15 | ### Detection Method Priority 16 | 17 | Use detection methods in this order of preference: 18 | 19 | 1. **Environment Variables (String)**: Simple presence check. Use if there is a unique variable that indicates the tool's presence. 20 | 21 | ```typescript 22 | envVars: ["TOOL_SPECIFIC_VAR"] 23 | ``` 24 | 25 | 2. **Environment Variables (Tuple)**: Name/value validation. Use if the variable name is generic but the value is specific to the tool. 26 | 27 | ```typescript 28 | envVars: [["TERM_PROGRAM", "tool-name"]] 29 | ``` 30 | 31 | 3. **Environment Variables (Groups)**: Complex logical combinations using `all`, `any`, and `none`. 32 | 33 | ```typescript 34 | envVars: [{ all: [["VAR1", "value1"], "VAR2"] }] 35 | ``` 36 | 37 | 4. **Process Tree Analysis**: For tools that don't set unique environment variables. Do not use unless environment variables are not available or reliable. 38 | 39 | ```typescript 40 | processChecks: ["tool-process-name"] 41 | ``` 42 | 43 | 5. **Custom Detectors**: Only for complex checks 44 | ```typescript 45 | customDetectors: [() => { 46 | // Complex detection logic 47 | return Boolean(condition); 48 | }] 49 | ``` 50 | 51 | ### Provider Categories 52 | 53 | Classify your provider correctly: 54 | 55 | - **`agent`**: Agent can execute commands autonomously 56 | - **`interactive`**: User is executing the command withing an AI-assisted environment 57 | - **`hybrid`**: Can operate in both modes depending on context, and we cannot determine which mode is active 58 | 59 | ### Environment Variable Guidelines 60 | 61 | #### String Detection 62 | 63 | Use for unique variables that indicate the tool's presence: 64 | 65 | ```typescript 66 | envVars: ["UNIQUE_TOOL_VAR"] 67 | ``` 68 | 69 | #### Tuple Detection 70 | 71 | Use when you need to validate both name and value: 72 | 73 | ```typescript 74 | envVars: [["GENERIC_VAR", "specific-value"]] 75 | ``` 76 | 77 | #### Environment Variable Groups 78 | 79 | Use for complex logical combinations: 80 | 81 | - **any**: ANY of these conditions can match (OR logic) - this is the default behavior 82 | - **all**: ALL of these conditions must match (AND logic) 83 | - **none**: NONE of these conditions should match (NOT logic) 84 | 85 | ```typescript 86 | // All conditions must be true 87 | envVars: [{ all: [["VAR1", "value1"], "VAR2"] }] 88 | 89 | // Any condition can be true (default behavior, rarely needs explicit syntax) 90 | envVars: [{ any: [["VAR1", "value1"], "VAR2"] }] 91 | 92 | // None of these should be true (exclusion) 93 | envVars: [{ none: [["VAR1", "unwanted-value"]] }] 94 | 95 | // Complex combinations 96 | envVars: [{ 97 | all: [["TERM_PROGRAM", "tool"], "REQUIRED_VAR"], 98 | none: [["MODE", "interactive"]] 99 | }] 100 | ``` 101 | 102 | ### Provider Definition Template 103 | 104 | ```typescript 105 | { 106 | id: 'tool-name', 107 | name: 'Tool Display Name', 108 | type: 'agent' | 'interactive' | 'hybrid', 109 | envVars?: ['ENV_VAR'] | [['ENV_VAR', 'value']] | [{ all: [...], any: [...], none: [...] }], 110 | processChecks?: ['process-name'], 111 | customDetectors?: [() => boolean] 112 | } 113 | ``` 114 | 115 | ### Real-World Examples 116 | 117 | #### Simple Environment Variable 118 | 119 | ```typescript 120 | { 121 | id: 'claude-code', 122 | name: 'Claude Code', 123 | type: 'agent', 124 | envVars: ['CLAUDECODE'] 125 | } 126 | ``` 127 | 128 | #### Tuple Detection 129 | 130 | ```typescript 131 | { 132 | id: 'cursor', 133 | name: 'Cursor', 134 | type: 'interactive', 135 | envVars: ['CURSOR_TRACE_ID'] 136 | } 137 | ``` 138 | 139 | #### Multiple Conditions (ALL) 140 | 141 | ```typescript 142 | { 143 | id: 'zed-agent', 144 | name: 'Zed Agent', 145 | type: 'agent', 146 | envVars: [ 147 | { 148 | all: [ 149 | ['TERM_PROGRAM', 'zed'], 150 | ['PAGER', 'cat'] 151 | ] 152 | } 153 | ] 154 | } 155 | ``` 156 | 157 | #### Complex Logic with ALL and NONE 158 | 159 | ```typescript 160 | { 161 | id: 'bolt', 162 | name: 'Bolt.new', 163 | type: 'interactive', 164 | envVars: [ 165 | { 166 | all: [['SHELL', '/bin/jsh']], 167 | none: ['npm_config_yes'] 168 | } 169 | ] 170 | } 171 | ``` 172 | 173 | #### Process Detection 174 | 175 | ```typescript 176 | { 177 | id: 'aider', 178 | name: 'Aider', 179 | type: 'agent', 180 | envVars: ['AIDER_API_KEY'], 181 | processChecks: ['aider'] 182 | } 183 | ``` 184 | 185 | ### Testing Your Provider 186 | 187 | 1. **Unit Tests**: Add tests in `test/detector.test.ts` 188 | 189 | ```typescript 190 | test("detects your-tool correctly", () => { 191 | const mockEnv = { YOUR_TOOL_VAR: "value" }; 192 | const result = detectAgenticEnvironment(mockEnv); 193 | expect(result.id).toBe("your-tool"); 194 | expect(result.isAgentic).toBe(true); 195 | }); 196 | ``` 197 | 198 | 2. **Real Environment Testing**: Test in the actual tool environment 199 | 200 | ```bash 201 | pnpm run cli 202 | pnpm run cli --debug 203 | ``` 204 | 205 | 3. **False Positive Testing**: Ensure your detection doesn't trigger in other environments 206 | 207 | ### Common Pitfalls to Avoid 208 | 209 | 1. **Don't Guess**: Only use verified environment variables 210 | 2. **Avoid Generic Variables**: Don't use common variables like `TERM` or `PATH` 211 | 3. **Be Specific**: Use tuple detection for generic variable names 212 | 4. **Test Thoroughly**: Verify detection works and doesn't create false positives 213 | 5. **Document Sources**: Note where you found the environment variable information 214 | 215 | ### Submission Checklist 216 | 217 | - [ ] Provider definition added to `src/providers.ts` 218 | - [ ] Unit tests added to `test/detector.test.ts` 219 | - [ ] Tested in real environment 220 | - [ ] Tested for false positives 221 | - [ ] Documentation updated if needed 222 | - [ ] Changeset created (`pnpm changeset`) 223 | 224 | ## Development Setup 225 | 226 | ```bash 227 | # Install dependencies 228 | pnpm install 229 | 230 | # Run tests 231 | pnpm run test 232 | 233 | # Test CLI 234 | pnpm run cli 235 | 236 | # Type check 237 | pnpm run check 238 | 239 | # Build 240 | pnpm run build 241 | ``` 242 | 243 | ## Creating a Changeset 244 | 245 | After making changes, create a changeset to document your contribution: 246 | 247 | ```bash 248 | pnpm changeset 249 | ``` 250 | 251 | Choose the appropriate change type: 252 | 253 | - **patch**: Bug fixes, small provider updates 254 | - **minor**: New providers, feature enhancements 255 | - **major**: Breaking changes (rare) 256 | 257 | ## Questions or Need Help? 258 | 259 | - Check existing providers in `src/providers.ts` for examples 260 | - Review test patterns in `test/detector.test.ts` 261 | - Open an issue for questions about detection methods 262 | - Test your changes thoroughly before submitting 263 | 264 | Thank you for helping improve am-i-vibing's detection capabilities! 265 | -------------------------------------------------------------------------------- /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 a TypeScript monorepo for the "am-i-vibing" library - a tool for detecting agentic coding environments and AI assistant tools. The library allows CLI tools and applications to detect when they're being executed by AI agents (like Claude Code) and adapt their behavior accordingly. 8 | 9 | If the user ever asks "Am I vibing?", run `pnpm run cli` 10 | 11 | ## Technology Stack 12 | 13 | - **Language**: TypeScript (ES2022 target) 14 | - **Package Manager**: pnpm (v10.13.1) - required for workspace support 15 | - **Build System**: tsup for TypeScript compilation 16 | - **Testing**: Vitest 17 | - **Monorepo**: pnpm workspaces 18 | - **Release Management**: Changesets 19 | - **Process Detection**: process-ancestry package for process tree analysis 20 | 21 | ## Common Development Commands 22 | 23 | ### Root-level commands (run from repository root): 24 | 25 | ```bash 26 | # Install all dependencies 27 | pnpm install 28 | 29 | # Build all packages 30 | pnpm run build 31 | 32 | # Run tests across all packages 33 | pnpm run test 34 | 35 | # Type check all packages 36 | pnpm run check 37 | 38 | # Test the CLI interface 39 | pnpm run cli 40 | 41 | # Run whoami script for debugging 42 | pnpm run whoami 43 | ``` 44 | 45 | ### Package-specific commands (run from package directory): 46 | 47 | ```bash 48 | # Build single package 49 | pnpm run build 50 | 51 | # Run tests for single package 52 | pnpm run test 53 | 54 | # Validate package exports and types 55 | pnpm run check 56 | 57 | # Run development build with watch mode 58 | pnpm run dev 59 | 60 | # Test package before publishing 61 | pnpm run prepublishOnly 62 | ``` 63 | 64 | ## Architecture Overview 65 | 66 | ### Monorepo Structure 67 | 68 | - `packages/am-i-vibing/` - Main library package for agentic environment detection 69 | - Root workspace coordinates builds, tests, and releases 70 | 71 | ### Library Architecture (am-i-vibing) 72 | 73 | - **Core Detection**: `src/detector.ts` - Main detection logic with simplified implementation 74 | - **Provider Definitions**: `src/providers.ts` - Configuration for each AI tool 75 | - **Type System**: `src/types.ts` - TypeScript interfaces and types 76 | - **CLI Interface**: `src/cli.ts` - Command-line interface for npx execution 77 | - **Public API**: `src/index.ts` - Exports for library consumers 78 | 79 | ### Detection Methods 80 | 81 | 1. **Environment Variables**: String presence or name/value tuple validation 82 | 2. **Process Tree Analysis**: Using process-ancestry to check running processes 83 | 3. **Custom Detectors**: Functions for complex filesystem or configuration checks 84 | 4. **Logical Operators**: ANY/ALL/NONE conditions for sophisticated detection rules 85 | 86 | ### Key Features 87 | 88 | - **Provider Detection**: Supports 10+ major AI coding tools 89 | - **Detection Categories**: Direct agents, embedded IDE features, hybrid tools 90 | - **CLI Tool**: Available via `npx am-i-vibing` with multiple output formats 91 | - **Tuple Detection**: Validates both environment variable names AND expected values 92 | - **Simple API**: Clean detection results with `id`, `name`, `type`, and `isAgentic` 93 | 94 | ## Supported AI Tools 95 | 96 | ### Direct Agents (Full CLI control) 97 | 98 | - **Claude Code**: `CLAUDECODE` 99 | - **Replit AI**: `REPL_ID` with various modes 100 | - **Aider**: `AIDER_API_KEY` with process detection 101 | - **Bolt.new**: `SHELL=/bin/jsh` with specific npm config 102 | - **Zed Agent**: `TERM_PROGRAM=zed` + `PAGER=cat` 103 | 104 | ### Embedded IDE Features 105 | 106 | - **Cursor**: `CURSOR_TRACE_ID` (interactive and agent variants) 107 | - **GitHub Copilot**: `TERM_PROGRAM=vscode` + `GIT_PAGER=cat` 108 | - **Zed**: `TERM_PROGRAM=zed` (interactive mode) 109 | - **Gemini Agent**: Process-based detection 110 | - **OpenAI Codex**: Process-based detection 111 | 112 | ### Environment Variable Types 113 | 114 | - **String**: Simple presence check (`'CLAUDECODE'`) 115 | - **Tuple**: Name/value validation (`['TERM_PROGRAM', 'cursor']`) 116 | - **Custom Detectors**: Complex filesystem/process checks 117 | 118 | ## Usage Examples 119 | 120 | ### CLI Usage 121 | 122 | ```bash 123 | # Basic detection 124 | npx am-i-vibing 125 | # ✓ Detected: [claude-code] Claude Code (agent) 126 | 127 | # JSON output 128 | npx am-i-vibing --format json 129 | # {"isAgentic": true, "id": "claude-code", "name": "Claude Code", "type": "agent"} 130 | 131 | # Check specific environment type 132 | npx am-i-vibing --check agent 133 | # ✓ Running in agent environment: Claude Code 134 | 135 | # Quiet mode (useful for scripts) 136 | npx am-i-vibing --quiet 137 | # Claude Code 138 | 139 | # Debug mode with full environment info 140 | npx am-i-vibing --debug 141 | # Outputs full JSON with detection result, environment vars, and process ancestry 142 | 143 | # All CLI options 144 | npx am-i-vibing --help 145 | ``` 146 | 147 | ### Library Usage 148 | 149 | ```typescript 150 | import { detectAgenticEnvironment, isAgent, isInteractive } from "am-i-vibing"; 151 | 152 | // Full detection 153 | const result = detectAgenticEnvironment(); 154 | if (result.isAgentic) { 155 | console.log(`Detected: ${result.name} (${result.type})`); 156 | console.log(`ID: ${result.id}`); 157 | } 158 | 159 | // Quick type checks 160 | if (isAgent()) { 161 | console.log("Running under direct AI agent control"); 162 | } 163 | 164 | if (isInteractive()) { 165 | console.log("Running in interactive AI environment"); 166 | } 167 | ``` 168 | 169 | ## Development Guidelines 170 | 171 | ### Adding New Providers 172 | 173 | 1. Research actual environment variables (don't guess) 174 | 2. Use real variables over speculative ones 175 | 3. Prefer environment variables over custom detectors 176 | 4. Use tuples for value-specific detection 177 | 5. Only use custom detectors for filesystem/process checks 178 | 179 | ### Testing Strategy 180 | 181 | - Test environment variable detection (strings and tuples) 182 | - Test logical operators (ANY/ALL/NONE) combinations 183 | - Test false positive scenarios 184 | - Test CLI functionality with different arguments 185 | - Mock filesystem operations in custom detectors 186 | 187 | ### Build and Packaging 188 | 189 | - Build targets both library (`src/index.ts`) and CLI (`src/cli.ts`) 190 | - CLI is executable via `npx am-i-vibing` after npm publication 191 | - ESM-only with proper shebang preservation for CLI 192 | 193 | ## Release Process 194 | 195 | This project uses Changesets for automated releases: 196 | 197 | 1. **Make Changes**: Create features/fixes in packages 198 | 2. **Document Changes**: Run `pnpm changeset` to create changeset files 199 | 3. **Commit**: Commit changeset files with your changes 200 | 4. **Automated Release**: CI creates release PR when changes are merged to main 201 | 5. **Publish**: Merge release PR to automatically publish to npm 202 | 203 | ### Changeset Types 204 | 205 | - `patch`: Bug fixes and small improvements 206 | - `minor`: New features and enhancements 207 | - `major`: Breaking changes 208 | 209 | ## CI/CD Pipeline 210 | 211 | Three GitHub Actions workflows: 212 | 213 | - **Test**: Runs on PRs and main branch (build + test + type check) 214 | - **Release**: Automated publishing via Changesets 215 | - **Semantic PRs**: Enforces conventional commit format for PR titles 216 | 217 | ### Current Package Version 218 | 219 | - **am-i-vibing**: v0.0.2 (published to npm) 220 | 221 | ## Key Conventions 222 | 223 | ### Package Naming 224 | 225 | - Main library: `am-i-vibing` 226 | 227 | ### TypeScript Configuration 228 | 229 | - ES2022 target with strict mode 230 | - Module preservation for library packages 231 | - Shared tsconfig.json at root with package-specific extensions 232 | 233 | ### Export Strategy 234 | 235 | - **ESM Only**: Modern module format, no CommonJS support 236 | - **Explicit Exports**: Clear export maps in package.json 237 | - **CLI Binary**: Executable via `npx am-i-vibing` with proper shebang 238 | - **Type Safety**: Full TypeScript definitions included 239 | 240 | ### File Structure 241 | 242 | ``` 243 | packages/am-i-vibing/ 244 | ├── src/ 245 | │ ├── types.ts # TypeScript interfaces 246 | │ ├── providers.ts # Provider configurations 247 | │ ├── detector.ts # Core detection logic 248 | │ ├── index.ts # Public API exports 249 | │ └── cli.ts # CLI interface 250 | ├── test/ # Test suite 251 | ├── dist/ # Built output (gitignored) 252 | └── package.json # Package configuration 253 | ``` 254 | 255 | ## Project Memories 256 | 257 | - The root readme is a symlink to the one in the package 258 | -------------------------------------------------------------------------------- /packages/am-i-vibing/test/detector.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect, beforeEach, afterEach } from "vitest"; 2 | import { 3 | detectAgenticEnvironment, 4 | isProvider, 5 | isAgent, 6 | isInteractive, 7 | isHybrid, 8 | } from "../src/detector.js"; 9 | 10 | describe("detectAgenticEnvironment", () => { 11 | it("should return false for non-agentic environment", () => { 12 | const env = {}; 13 | const result = detectAgenticEnvironment(env, []); 14 | expect(result.isAgentic).toBe(false); 15 | expect(result.name).toBe(null); 16 | }); 17 | 18 | it("should detect Jules environment", () => { 19 | const env = { 20 | HOME: "/home/jules", 21 | USER: "swebot", 22 | }; 23 | const result = detectAgenticEnvironment(env, []); 24 | expect(result.isAgentic).toBe(true); 25 | expect(result.name).toBe("Jules"); 26 | expect(result.id).toBe("jules"); 27 | }); 28 | 29 | it("should detect Claude Code environment", () => { 30 | const testEnv = { CLAUDECODE: "true" }; 31 | const result = detectAgenticEnvironment(testEnv, []); 32 | 33 | expect(result.isAgentic).toBe(true); 34 | expect(result.id).toBe("claude-code"); 35 | expect(result.name).toBe("Claude Code"); 36 | expect(result.type).toBe("agent"); 37 | }); 38 | 39 | it("should detect Cursor environment", () => { 40 | const testEnv = { CURSOR_TRACE_ID: "cursor-trace-123" }; 41 | const result = detectAgenticEnvironment(testEnv, []); 42 | 43 | expect(result.isAgentic).toBe(true); 44 | expect(result.id).toBe("cursor"); 45 | expect(result.name).toBe("Cursor"); 46 | expect(result.type).toBe("interactive"); 47 | }); 48 | 49 | it("should detect GitHub Copilot Agent environment", () => { 50 | const testEnv = { 51 | TERM_PROGRAM: "vscode", 52 | GIT_PAGER: "cat", 53 | }; 54 | const result = detectAgenticEnvironment(testEnv, []); 55 | 56 | expect(result.isAgentic).toBe(true); 57 | expect(result.id).toBe("vscode-copilot-agent"); 58 | expect(result.name).toBe("GitHub Copilot in VS Code"); 59 | expect(result.type).toBe("agent"); 60 | }); 61 | 62 | it("should detect GitHub Copilot (interactive) environment", () => { 63 | const testEnv = { 64 | CURSOR_TRACE_ID: "trace-123", 65 | }; 66 | const result = detectAgenticEnvironment(testEnv, []); 67 | 68 | expect(result.isAgentic).toBe(true); 69 | expect(result.id).toBe("cursor"); 70 | expect(result.name).toBe("Cursor"); 71 | expect(result.type).toBe("interactive"); 72 | }); 73 | 74 | it("should detect Cursor Agent environment", () => { 75 | const testEnv = { 76 | CURSOR_TRACE_ID: "cursor-trace-123", 77 | PAGER: "head -n 10000 | cat", 78 | }; 79 | const result = detectAgenticEnvironment(testEnv, []); 80 | 81 | expect(result.isAgentic).toBe(true); 82 | expect(result.id).toBe("cursor-agent"); 83 | expect(result.name).toBe("Cursor Agent"); 84 | expect(result.type).toBe("agent"); 85 | }); 86 | 87 | it("should detect Replit AI environment", () => { 88 | const testEnv = { REPL_ID: "repl-123" }; 89 | const result = detectAgenticEnvironment(testEnv, []); 90 | 91 | expect(result.isAgentic).toBe(true); 92 | expect(result.id).toBe("replit"); 93 | expect(result.name).toBe("Replit"); 94 | expect(result.type).toBe("agent"); 95 | }); 96 | 97 | it("should detect SST OpenCode environment", () => { 98 | const testEnv = { OPENCODE_BIN_PATH: "/usr/local/bin/opencode" }; 99 | const result = detectAgenticEnvironment(testEnv); 100 | 101 | expect(result.isAgentic).toBe(true); 102 | expect(result.id).toBe("sst-opencode"); 103 | expect(result.name).toBe("SST OpenCode"); 104 | expect(result.type).toBe("agent"); 105 | }); 106 | 107 | it("should detect Aider environment", () => { 108 | const testEnv = { AIDER_API_KEY: "aider-key" }; 109 | const result = detectAgenticEnvironment(testEnv, []); 110 | 111 | expect(result.isAgentic).toBe(true); 112 | expect(result.id).toBe("aider"); 113 | expect(result.name).toBe("Aider"); 114 | expect(result.type).toBe("agent"); 115 | }); 116 | 117 | it("should detect Bolt.new Agent environment", () => { 118 | const testEnv = { 119 | SHELL: "/bin/jsh", 120 | npm_config_yes: "true", 121 | }; 122 | const result = detectAgenticEnvironment(testEnv, []); 123 | 124 | expect(result.isAgentic).toBe(true); 125 | expect(result.id).toBe("bolt-agent"); 126 | expect(result.name).toBe("Bolt.new Agent"); 127 | expect(result.type).toBe("agent"); 128 | }); 129 | 130 | it("should detect Bolt.new interactive environment", () => { 131 | const testEnv = { SHELL: "/bin/jsh" }; 132 | const result = detectAgenticEnvironment(testEnv, []); 133 | 134 | expect(result.isAgentic).toBe(true); 135 | expect(result.id).toBe("bolt"); 136 | expect(result.name).toBe("Bolt.new"); 137 | expect(result.type).toBe("interactive"); 138 | }); 139 | 140 | it("should detect Zed Agent environment", () => { 141 | const testEnv = { 142 | TERM_PROGRAM: "zed", 143 | PAGER: "cat", 144 | }; 145 | const result = detectAgenticEnvironment(testEnv, []); 146 | 147 | expect(result.isAgentic).toBe(true); 148 | expect(result.id).toBe("zed-agent"); 149 | expect(result.name).toBe("Zed Agent"); 150 | expect(result.type).toBe("agent"); 151 | }); 152 | 153 | it("should detect Zed interactive environment", () => { 154 | const testEnv = { TERM_PROGRAM: "zed" }; 155 | const result = detectAgenticEnvironment(testEnv, []); 156 | 157 | expect(result.isAgentic).toBe(true); 158 | expect(result.id).toBe("zed"); 159 | expect(result.name).toBe("Zed"); 160 | expect(result.type).toBe("interactive"); 161 | }); 162 | 163 | it("should detect Warp hybrid environment", () => { 164 | const testEnv = { TERM_PROGRAM: "WarpTerminal" }; 165 | const result = detectAgenticEnvironment(testEnv, []); 166 | 167 | expect(result.isAgentic).toBe(true); 168 | expect(result.id).toBe("warp"); 169 | expect(result.name).toBe("Warp Terminal"); 170 | expect(result.type).toBe("hybrid"); 171 | }); 172 | 173 | it("should handle false positive scenarios", () => { 174 | const testEnv = { RANDOM_VARIABLE: "some-value" }; 175 | const result = detectAgenticEnvironment(testEnv, []); 176 | 177 | expect(result.isAgentic).toBe(false); 178 | }); 179 | 180 | it("should distinguish between agent and interactive variants", () => { 181 | // Test that Cursor Agent is detected before regular Cursor 182 | const agentEnv = { 183 | CURSOR_TRACE_ID: "cursor-trace-123", 184 | PAGER: "head -n 10000 | cat", 185 | }; 186 | const result = detectAgenticEnvironment(agentEnv, []); 187 | 188 | expect(result.id).toBe("cursor-agent"); 189 | expect(result.name).toBe("Cursor Agent"); 190 | expect(result.type).toBe("agent"); 191 | 192 | // Test regular Cursor 193 | const interactiveEnv = { CURSOR_TRACE_ID: "cursor-trace-123" }; 194 | const result2 = detectAgenticEnvironment(interactiveEnv, []); 195 | 196 | expect(result2.id).toBe("cursor"); 197 | expect(result2.name).toBe("Cursor"); 198 | expect(result2.type).toBe("interactive"); 199 | }); 200 | 201 | it("should distinguish between Zed agent and interactive variants", () => { 202 | // Test that Zed Agent is detected before regular Zed 203 | const agentEnv = { 204 | TERM_PROGRAM: "zed", 205 | PAGER: "cat", 206 | }; 207 | const result = detectAgenticEnvironment(agentEnv, []); 208 | 209 | expect(result.id).toBe("zed-agent"); 210 | expect(result.name).toBe("Zed Agent"); 211 | expect(result.type).toBe("agent"); 212 | 213 | // Test regular Zed 214 | const interactiveEnv = { TERM_PROGRAM: "zed" }; 215 | const result2 = detectAgenticEnvironment(interactiveEnv, []); 216 | 217 | expect(result2.id).toBe("zed"); 218 | expect(result2.name).toBe("Zed"); 219 | expect(result2.type).toBe("interactive"); 220 | }); 221 | 222 | it("should detect Crush environment", () => { 223 | const testEnv = {}; 224 | const mockProcessAncestry = [ 225 | { command: "node /Users/matt/.nvm/versions/node/v22.16.0/bin/crush" }, 226 | { command: "/Users/matt/.nvm/versions/node/v22.16.0/lib/node_modules/@charmland/crush/bin/crush" }, 227 | ]; 228 | const result = detectAgenticEnvironment(testEnv, mockProcessAncestry); 229 | 230 | expect(result.isAgentic).toBe(true); 231 | expect(result.id).toBe("crush"); 232 | expect(result.name).toBe("Crush"); 233 | expect(result.type).toBe("agent"); 234 | }); 235 | }); 236 | 237 | describe("convenience functions", () => { 238 | it("isAgent should identify agent environments", () => { 239 | const agentEnv = { CLAUDECODE: "true" }; 240 | expect(isAgent(agentEnv, [])).toBe(true); 241 | 242 | const interactiveEnv = { CURSOR_TRACE_ID: "trace-123" }; 243 | expect(isAgent(interactiveEnv, [])).toBe(false); // This should be interactive, not agent 244 | 245 | const cursorAgentEnv = { 246 | CURSOR_TRACE_ID: "trace-123", 247 | PAGER: "head -n 10000 | cat", 248 | }; 249 | expect(isAgent(cursorAgentEnv, [])).toBe(true); // Now it's Cursor Agent 250 | }); 251 | 252 | it("isInteractive should identify interactive environments", () => { 253 | const interactiveEnv = { CURSOR_TRACE_ID: "trace-123" }; 254 | expect(isInteractive(interactiveEnv, [])).toBe(true); 255 | 256 | const copilotEnv = { 257 | CURSOR_TRACE_ID: "trace-123", 258 | }; 259 | expect(isInteractive(copilotEnv, [])).toBe(true); 260 | }); 261 | 262 | it("isHybrid should identify hybrid environments", () => { 263 | const hybridEnv = { TERM_PROGRAM: "WarpTerminal" }; 264 | expect(isHybrid(hybridEnv, [])).toBe(true); 265 | 266 | const agentEnv = { CLAUDECODE: "true" }; 267 | expect(isHybrid(agentEnv, [])).toBe(false); 268 | 269 | const interactiveEnv = { CURSOR_TRACE_ID: "trace-123" }; 270 | expect(isHybrid(interactiveEnv, [])).toBe(false); 271 | }); 272 | }); 273 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | tsup: 12 | specifier: ^8.5.1 13 | version: 8.5.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3) 14 | devDependencies: 15 | '@changesets/changelog-github': 16 | specifier: ^0.5.2 17 | version: 0.5.2 18 | '@changesets/cli': 19 | specifier: ^2.29.8 20 | version: 2.29.8(@types/node@22.19.1) 21 | '@types/node': 22 | specifier: ^22.19.1 23 | version: 22.19.1 24 | prettier: 25 | specifier: ^3.7.4 26 | version: 3.7.4 27 | tsx: 28 | specifier: ^4.21.0 29 | version: 4.21.0 30 | typescript: 31 | specifier: ^5.9.3 32 | version: 5.9.3 33 | vitest: 34 | specifier: ^3.2.4 35 | version: 3.2.4(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0) 36 | 37 | packages/am-i-vibing: 38 | dependencies: 39 | process-ancestry: 40 | specifier: ^0.1.0 41 | version: 0.1.0 42 | devDependencies: 43 | '@arethetypeswrong/cli': 44 | specifier: ^0.18.2 45 | version: 0.18.2 46 | '@types/node': 47 | specifier: ^22.19.1 48 | version: 22.19.1 49 | publint: 50 | specifier: ^0.3.15 51 | version: 0.3.15 52 | tsdown: 53 | specifier: ^0.17.0 54 | version: 0.17.0(@arethetypeswrong/core@0.18.2)(publint@0.3.15)(typescript@5.9.3) 55 | typescript: 56 | specifier: ^5.9.3 57 | version: 5.9.3 58 | vitest: 59 | specifier: ^3.2.4 60 | version: 3.2.4(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0) 61 | 62 | packages: 63 | 64 | '@andrewbranch/untar.js@1.0.3': 65 | resolution: {integrity: sha512-Jh15/qVmrLGhkKJBdXlK1+9tY4lZruYjsgkDFj08ZmDiWVBLJcqkok7Z0/R0In+i1rScBpJlSvrTS2Lm41Pbnw==} 66 | 67 | '@arethetypeswrong/cli@0.18.2': 68 | resolution: {integrity: sha512-PcFM20JNlevEDKBg4Re29Rtv2xvjvQZzg7ENnrWFSS0PHgdP2njibVFw+dRUhNkPgNfac9iUqO0ohAXqQL4hbw==} 69 | engines: {node: '>=20'} 70 | hasBin: true 71 | 72 | '@arethetypeswrong/core@0.18.2': 73 | resolution: {integrity: sha512-GiwTmBFOU1/+UVNqqCGzFJYfBXEytUkiI+iRZ6Qx7KmUVtLm00sYySkfe203C9QtPG11yOz1ZaMek8dT/xnlgg==} 74 | engines: {node: '>=20'} 75 | 76 | '@babel/generator@7.28.5': 77 | resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 78 | engines: {node: '>=6.9.0'} 79 | 80 | '@babel/helper-string-parser@7.27.1': 81 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 82 | engines: {node: '>=6.9.0'} 83 | 84 | '@babel/helper-validator-identifier@7.28.5': 85 | resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 86 | engines: {node: '>=6.9.0'} 87 | 88 | '@babel/parser@7.28.5': 89 | resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 90 | engines: {node: '>=6.0.0'} 91 | hasBin: true 92 | 93 | '@babel/runtime@7.27.6': 94 | resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} 95 | engines: {node: '>=6.9.0'} 96 | 97 | '@babel/types@7.28.5': 98 | resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 99 | engines: {node: '>=6.9.0'} 100 | 101 | '@braidai/lang@1.1.1': 102 | resolution: {integrity: sha512-5uM+no3i3DafVgkoW7ayPhEGHNNBZCSj5TrGDQt0ayEKQda5f3lAXlmQg0MR5E0gKgmTzUUEtSWHsEC3h9jUcg==} 103 | 104 | '@changesets/apply-release-plan@7.0.14': 105 | resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} 106 | 107 | '@changesets/assemble-release-plan@6.0.9': 108 | resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} 109 | 110 | '@changesets/changelog-git@0.2.1': 111 | resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} 112 | 113 | '@changesets/changelog-github@0.5.2': 114 | resolution: {integrity: sha512-HeGeDl8HaIGj9fQHo/tv5XKQ2SNEi9+9yl1Bss1jttPqeiASRXhfi0A2wv8yFKCp07kR1gpOI5ge6+CWNm1jPw==} 115 | 116 | '@changesets/cli@2.29.8': 117 | resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} 118 | hasBin: true 119 | 120 | '@changesets/config@3.1.2': 121 | resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} 122 | 123 | '@changesets/errors@0.2.0': 124 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 125 | 126 | '@changesets/get-dependents-graph@2.1.3': 127 | resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} 128 | 129 | '@changesets/get-github-info@0.7.0': 130 | resolution: {integrity: sha512-+i67Bmhfj9V4KfDeS1+Tz3iF32btKZB2AAx+cYMqDSRFP7r3/ZdGbjCo+c6qkyViN9ygDuBjzageuPGJtKGe5A==} 131 | 132 | '@changesets/get-release-plan@4.0.14': 133 | resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} 134 | 135 | '@changesets/get-version-range-type@0.4.0': 136 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 137 | 138 | '@changesets/git@3.0.4': 139 | resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} 140 | 141 | '@changesets/logger@0.1.1': 142 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 143 | 144 | '@changesets/parse@0.4.2': 145 | resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} 146 | 147 | '@changesets/pre@2.0.2': 148 | resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} 149 | 150 | '@changesets/read@0.6.6': 151 | resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} 152 | 153 | '@changesets/should-skip-package@0.1.2': 154 | resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} 155 | 156 | '@changesets/types@4.1.0': 157 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 158 | 159 | '@changesets/types@6.1.0': 160 | resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} 161 | 162 | '@changesets/write@0.4.0': 163 | resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 164 | 165 | '@colors/colors@1.5.0': 166 | resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} 167 | engines: {node: '>=0.1.90'} 168 | 169 | '@emnapi/core@1.7.1': 170 | resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} 171 | 172 | '@emnapi/runtime@1.7.1': 173 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} 174 | 175 | '@emnapi/wasi-threads@1.1.0': 176 | resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 177 | 178 | '@esbuild/aix-ppc64@0.25.7': 179 | resolution: {integrity: sha512-uD0kKFHh6ETr8TqEtaAcV+dn/2qnYbH/+8wGEdY70Qf7l1l/jmBUbrmQqwiPKAQE6cOQ7dTj6Xr0HzQDGHyceQ==} 180 | engines: {node: '>=18'} 181 | cpu: [ppc64] 182 | os: [aix] 183 | 184 | '@esbuild/aix-ppc64@0.27.0': 185 | resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} 186 | engines: {node: '>=18'} 187 | cpu: [ppc64] 188 | os: [aix] 189 | 190 | '@esbuild/android-arm64@0.25.7': 191 | resolution: {integrity: sha512-p0ohDnwyIbAtztHTNUTzN5EGD/HJLs1bwysrOPgSdlIA6NDnReoVfoCyxG6W1d85jr2X80Uq5KHftyYgaK9LPQ==} 192 | engines: {node: '>=18'} 193 | cpu: [arm64] 194 | os: [android] 195 | 196 | '@esbuild/android-arm64@0.27.0': 197 | resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} 198 | engines: {node: '>=18'} 199 | cpu: [arm64] 200 | os: [android] 201 | 202 | '@esbuild/android-arm@0.25.7': 203 | resolution: {integrity: sha512-Jhuet0g1k9rAJHrXGIh7sFknFuT4sfytYZpZpuZl7YKDhnPByVAm5oy2LEBmMbuYf3ejWVYCc2seX81Mk+madA==} 204 | engines: {node: '>=18'} 205 | cpu: [arm] 206 | os: [android] 207 | 208 | '@esbuild/android-arm@0.27.0': 209 | resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} 210 | engines: {node: '>=18'} 211 | cpu: [arm] 212 | os: [android] 213 | 214 | '@esbuild/android-x64@0.25.7': 215 | resolution: {integrity: sha512-mMxIJFlSgVK23HSsII3ZX9T2xKrBCDGyk0qiZnIW10LLFFtZLkFD6imZHu7gUo2wkNZwS9Yj3mOtZD3ZPcjCcw==} 216 | engines: {node: '>=18'} 217 | cpu: [x64] 218 | os: [android] 219 | 220 | '@esbuild/android-x64@0.27.0': 221 | resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} 222 | engines: {node: '>=18'} 223 | cpu: [x64] 224 | os: [android] 225 | 226 | '@esbuild/darwin-arm64@0.25.7': 227 | resolution: {integrity: sha512-jyOFLGP2WwRwxM8F1VpP6gcdIJc8jq2CUrURbbTouJoRO7XCkU8GdnTDFIHdcifVBT45cJlOYsZ1kSlfbKjYUQ==} 228 | engines: {node: '>=18'} 229 | cpu: [arm64] 230 | os: [darwin] 231 | 232 | '@esbuild/darwin-arm64@0.27.0': 233 | resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} 234 | engines: {node: '>=18'} 235 | cpu: [arm64] 236 | os: [darwin] 237 | 238 | '@esbuild/darwin-x64@0.25.7': 239 | resolution: {integrity: sha512-m9bVWqZCwQ1BthruifvG64hG03zzz9gE2r/vYAhztBna1/+qXiHyP9WgnyZqHgGeXoimJPhAmxfbeU+nMng6ZA==} 240 | engines: {node: '>=18'} 241 | cpu: [x64] 242 | os: [darwin] 243 | 244 | '@esbuild/darwin-x64@0.27.0': 245 | resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} 246 | engines: {node: '>=18'} 247 | cpu: [x64] 248 | os: [darwin] 249 | 250 | '@esbuild/freebsd-arm64@0.25.7': 251 | resolution: {integrity: sha512-Bss7P4r6uhr3kDzRjPNEnTm/oIBdTPRNQuwaEFWT/uvt6A1YzK/yn5kcx5ZxZ9swOga7LqeYlu7bDIpDoS01bA==} 252 | engines: {node: '>=18'} 253 | cpu: [arm64] 254 | os: [freebsd] 255 | 256 | '@esbuild/freebsd-arm64@0.27.0': 257 | resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} 258 | engines: {node: '>=18'} 259 | cpu: [arm64] 260 | os: [freebsd] 261 | 262 | '@esbuild/freebsd-x64@0.25.7': 263 | resolution: {integrity: sha512-S3BFyjW81LXG7Vqmr37ddbThrm3A84yE7ey/ERBlK9dIiaWgrjRlre3pbG7txh1Uaxz8N7wGGQXmC9zV+LIpBQ==} 264 | engines: {node: '>=18'} 265 | cpu: [x64] 266 | os: [freebsd] 267 | 268 | '@esbuild/freebsd-x64@0.27.0': 269 | resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} 270 | engines: {node: '>=18'} 271 | cpu: [x64] 272 | os: [freebsd] 273 | 274 | '@esbuild/linux-arm64@0.25.7': 275 | resolution: {integrity: sha512-HfQZQqrNOfS1Okn7PcsGUqHymL1cWGBslf78dGvtrj8q7cN3FkapFgNA4l/a5lXDwr7BqP2BSO6mz9UremNPbg==} 276 | engines: {node: '>=18'} 277 | cpu: [arm64] 278 | os: [linux] 279 | 280 | '@esbuild/linux-arm64@0.27.0': 281 | resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} 282 | engines: {node: '>=18'} 283 | cpu: [arm64] 284 | os: [linux] 285 | 286 | '@esbuild/linux-arm@0.25.7': 287 | resolution: {integrity: sha512-JZMIci/1m5vfQuhKoFXogCKVYVfYQmoZJg8vSIMR4TUXbF+0aNlfXH3DGFEFMElT8hOTUF5hisdZhnrZO/bkDw==} 288 | engines: {node: '>=18'} 289 | cpu: [arm] 290 | os: [linux] 291 | 292 | '@esbuild/linux-arm@0.27.0': 293 | resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} 294 | engines: {node: '>=18'} 295 | cpu: [arm] 296 | os: [linux] 297 | 298 | '@esbuild/linux-ia32@0.25.7': 299 | resolution: {integrity: sha512-9Jex4uVpdeofiDxnwHRgen+j6398JlX4/6SCbbEFEXN7oMO2p0ueLN+e+9DdsdPLUdqns607HmzEFnxwr7+5wQ==} 300 | engines: {node: '>=18'} 301 | cpu: [ia32] 302 | os: [linux] 303 | 304 | '@esbuild/linux-ia32@0.27.0': 305 | resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} 306 | engines: {node: '>=18'} 307 | cpu: [ia32] 308 | os: [linux] 309 | 310 | '@esbuild/linux-loong64@0.25.7': 311 | resolution: {integrity: sha512-TG1KJqjBlN9IHQjKVUYDB0/mUGgokfhhatlay8aZ/MSORMubEvj/J1CL8YGY4EBcln4z7rKFbsH+HeAv0d471w==} 312 | engines: {node: '>=18'} 313 | cpu: [loong64] 314 | os: [linux] 315 | 316 | '@esbuild/linux-loong64@0.27.0': 317 | resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} 318 | engines: {node: '>=18'} 319 | cpu: [loong64] 320 | os: [linux] 321 | 322 | '@esbuild/linux-mips64el@0.25.7': 323 | resolution: {integrity: sha512-Ty9Hj/lx7ikTnhOfaP7ipEm/ICcBv94i/6/WDg0OZ3BPBHhChsUbQancoWYSO0WNkEiSW5Do4febTTy4x1qYQQ==} 324 | engines: {node: '>=18'} 325 | cpu: [mips64el] 326 | os: [linux] 327 | 328 | '@esbuild/linux-mips64el@0.27.0': 329 | resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} 330 | engines: {node: '>=18'} 331 | cpu: [mips64el] 332 | os: [linux] 333 | 334 | '@esbuild/linux-ppc64@0.25.7': 335 | resolution: {integrity: sha512-MrOjirGQWGReJl3BNQ58BLhUBPpWABnKrnq8Q/vZWWwAB1wuLXOIxS2JQ1LT3+5T+3jfPh0tyf5CpbyQHqnWIQ==} 336 | engines: {node: '>=18'} 337 | cpu: [ppc64] 338 | os: [linux] 339 | 340 | '@esbuild/linux-ppc64@0.27.0': 341 | resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} 342 | engines: {node: '>=18'} 343 | cpu: [ppc64] 344 | os: [linux] 345 | 346 | '@esbuild/linux-riscv64@0.25.7': 347 | resolution: {integrity: sha512-9pr23/pqzyqIZEZmQXnFyqp3vpa+KBk5TotfkzGMqpw089PGm0AIowkUppHB9derQzqniGn3wVXgck19+oqiOw==} 348 | engines: {node: '>=18'} 349 | cpu: [riscv64] 350 | os: [linux] 351 | 352 | '@esbuild/linux-riscv64@0.27.0': 353 | resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} 354 | engines: {node: '>=18'} 355 | cpu: [riscv64] 356 | os: [linux] 357 | 358 | '@esbuild/linux-s390x@0.25.7': 359 | resolution: {integrity: sha512-4dP11UVGh9O6Y47m8YvW8eoA3r8qL2toVZUbBKyGta8j6zdw1cn9F/Rt59/Mhv0OgY68pHIMjGXWOUaykCnx+w==} 360 | engines: {node: '>=18'} 361 | cpu: [s390x] 362 | os: [linux] 363 | 364 | '@esbuild/linux-s390x@0.27.0': 365 | resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} 366 | engines: {node: '>=18'} 367 | cpu: [s390x] 368 | os: [linux] 369 | 370 | '@esbuild/linux-x64@0.25.7': 371 | resolution: {integrity: sha512-ghJMAJTdw/0uhz7e7YnpdX1xVn7VqA0GrWrAO2qKMuqbvgHT2VZiBv1BQ//VcHsPir4wsL3P2oPggfKPzTKoCA==} 372 | engines: {node: '>=18'} 373 | cpu: [x64] 374 | os: [linux] 375 | 376 | '@esbuild/linux-x64@0.27.0': 377 | resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} 378 | engines: {node: '>=18'} 379 | cpu: [x64] 380 | os: [linux] 381 | 382 | '@esbuild/netbsd-arm64@0.25.7': 383 | resolution: {integrity: sha512-bwXGEU4ua45+u5Ci/a55B85KWaDSRS8NPOHtxy2e3etDjbz23wlry37Ffzapz69JAGGc4089TBo+dGzydQmydg==} 384 | engines: {node: '>=18'} 385 | cpu: [arm64] 386 | os: [netbsd] 387 | 388 | '@esbuild/netbsd-arm64@0.27.0': 389 | resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} 390 | engines: {node: '>=18'} 391 | cpu: [arm64] 392 | os: [netbsd] 393 | 394 | '@esbuild/netbsd-x64@0.25.7': 395 | resolution: {integrity: sha512-tUZRvLtgLE5OyN46sPSYlgmHoBS5bx2URSrgZdW1L1teWPYVmXh+QN/sKDqkzBo/IHGcKcHLKDhBeVVkO7teEA==} 396 | engines: {node: '>=18'} 397 | cpu: [x64] 398 | os: [netbsd] 399 | 400 | '@esbuild/netbsd-x64@0.27.0': 401 | resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} 402 | engines: {node: '>=18'} 403 | cpu: [x64] 404 | os: [netbsd] 405 | 406 | '@esbuild/openbsd-arm64@0.25.7': 407 | resolution: {integrity: sha512-bTJ50aoC+WDlDGBReWYiObpYvQfMjBNlKztqoNUL0iUkYtwLkBQQeEsTq/I1KyjsKA5tyov6VZaPb8UdD6ci6Q==} 408 | engines: {node: '>=18'} 409 | cpu: [arm64] 410 | os: [openbsd] 411 | 412 | '@esbuild/openbsd-arm64@0.27.0': 413 | resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} 414 | engines: {node: '>=18'} 415 | cpu: [arm64] 416 | os: [openbsd] 417 | 418 | '@esbuild/openbsd-x64@0.25.7': 419 | resolution: {integrity: sha512-TA9XfJrgzAipFUU895jd9j2SyDh9bbNkK2I0gHcvqb/o84UeQkBpi/XmYX3cO1q/9hZokdcDqQxIi6uLVrikxg==} 420 | engines: {node: '>=18'} 421 | cpu: [x64] 422 | os: [openbsd] 423 | 424 | '@esbuild/openbsd-x64@0.27.0': 425 | resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} 426 | engines: {node: '>=18'} 427 | cpu: [x64] 428 | os: [openbsd] 429 | 430 | '@esbuild/openharmony-arm64@0.25.7': 431 | resolution: {integrity: sha512-5VTtExUrWwHHEUZ/N+rPlHDwVFQ5aME7vRJES8+iQ0xC/bMYckfJ0l2n3yGIfRoXcK/wq4oXSItZAz5wslTKGw==} 432 | engines: {node: '>=18'} 433 | cpu: [arm64] 434 | os: [openharmony] 435 | 436 | '@esbuild/openharmony-arm64@0.27.0': 437 | resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} 438 | engines: {node: '>=18'} 439 | cpu: [arm64] 440 | os: [openharmony] 441 | 442 | '@esbuild/sunos-x64@0.25.7': 443 | resolution: {integrity: sha512-umkbn7KTxsexhv2vuuJmj9kggd4AEtL32KodkJgfhNOHMPtQ55RexsaSrMb+0+jp9XL4I4o2y91PZauVN4cH3A==} 444 | engines: {node: '>=18'} 445 | cpu: [x64] 446 | os: [sunos] 447 | 448 | '@esbuild/sunos-x64@0.27.0': 449 | resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} 450 | engines: {node: '>=18'} 451 | cpu: [x64] 452 | os: [sunos] 453 | 454 | '@esbuild/win32-arm64@0.25.7': 455 | resolution: {integrity: sha512-j20JQGP/gz8QDgzl5No5Gr4F6hurAZvtkFxAKhiv2X49yi/ih8ECK4Y35YnjlMogSKJk931iNMcd35BtZ4ghfw==} 456 | engines: {node: '>=18'} 457 | cpu: [arm64] 458 | os: [win32] 459 | 460 | '@esbuild/win32-arm64@0.27.0': 461 | resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} 462 | engines: {node: '>=18'} 463 | cpu: [arm64] 464 | os: [win32] 465 | 466 | '@esbuild/win32-ia32@0.25.7': 467 | resolution: {integrity: sha512-4qZ6NUfoiiKZfLAXRsvFkA0hoWVM+1y2bSHXHkpdLAs/+r0LgwqYohmfZCi985c6JWHhiXP30mgZawn/XrqAkQ==} 468 | engines: {node: '>=18'} 469 | cpu: [ia32] 470 | os: [win32] 471 | 472 | '@esbuild/win32-ia32@0.27.0': 473 | resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} 474 | engines: {node: '>=18'} 475 | cpu: [ia32] 476 | os: [win32] 477 | 478 | '@esbuild/win32-x64@0.25.7': 479 | resolution: {integrity: sha512-FaPsAHTwm+1Gfvn37Eg3E5HIpfR3i6x1AIcla/MkqAIupD4BW3MrSeUqfoTzwwJhk3WE2/KqUn4/eenEJC76VA==} 480 | engines: {node: '>=18'} 481 | cpu: [x64] 482 | os: [win32] 483 | 484 | '@esbuild/win32-x64@0.27.0': 485 | resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} 486 | engines: {node: '>=18'} 487 | cpu: [x64] 488 | os: [win32] 489 | 490 | '@inquirer/external-editor@1.0.3': 491 | resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} 492 | engines: {node: '>=18'} 493 | peerDependencies: 494 | '@types/node': '>=18' 495 | peerDependenciesMeta: 496 | '@types/node': 497 | optional: true 498 | 499 | '@isaacs/cliui@8.0.2': 500 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 501 | engines: {node: '>=12'} 502 | 503 | '@jridgewell/gen-mapping@0.3.12': 504 | resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} 505 | 506 | '@jridgewell/resolve-uri@3.1.2': 507 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 508 | engines: {node: '>=6.0.0'} 509 | 510 | '@jridgewell/sourcemap-codec@1.5.4': 511 | resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} 512 | 513 | '@jridgewell/sourcemap-codec@1.5.5': 514 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 515 | 516 | '@jridgewell/trace-mapping@0.3.29': 517 | resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} 518 | 519 | '@loaderkit/resolve@1.0.4': 520 | resolution: {integrity: sha512-rJzYKVcV4dxJv+vW6jlvagF8zvGxHJ2+HTr1e2qOejfmGhAApgJHl8Aog4mMszxceTRiKTTbnpgmTO1bEZHV/A==} 521 | 522 | '@manypkg/find-root@1.1.0': 523 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 524 | 525 | '@manypkg/get-packages@1.1.3': 526 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 527 | 528 | '@napi-rs/wasm-runtime@1.1.0': 529 | resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} 530 | 531 | '@nodelib/fs.scandir@2.1.5': 532 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 533 | engines: {node: '>= 8'} 534 | 535 | '@nodelib/fs.stat@2.0.5': 536 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 537 | engines: {node: '>= 8'} 538 | 539 | '@nodelib/fs.walk@1.2.8': 540 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 541 | engines: {node: '>= 8'} 542 | 543 | '@oxc-project/runtime@0.101.0': 544 | resolution: {integrity: sha512-t3qpfVZIqSiLQ5Kqt/MC4Ge/WCOGrrcagAdzTcDaggupjiGxUx4nJF2v6wUCXWSzWHn5Ns7XLv13fCJEwCOERQ==} 545 | engines: {node: ^20.19.0 || >=22.12.0} 546 | 547 | '@oxc-project/types@0.101.0': 548 | resolution: {integrity: sha512-nuFhqlUzJX+gVIPPfuE6xurd4lST3mdcWOhyK/rZO0B9XWMKm79SuszIQEnSMmmDhq1DC8WWVYGVd+6F93o1gQ==} 549 | 550 | '@pkgjs/parseargs@0.11.0': 551 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 552 | engines: {node: '>=14'} 553 | 554 | '@publint/pack@0.1.2': 555 | resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==} 556 | engines: {node: '>=18'} 557 | 558 | '@quansync/fs@0.1.5': 559 | resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} 560 | 561 | '@rolldown/binding-android-arm64@1.0.0-beta.53': 562 | resolution: {integrity: sha512-Ok9V8o7o6YfSdTTYA/uHH30r3YtOxLD6G3wih/U9DO0ucBBFq8WPt/DslU53OgfteLRHITZny9N/qCUxMf9kjQ==} 563 | engines: {node: ^20.19.0 || >=22.12.0} 564 | cpu: [arm64] 565 | os: [android] 566 | 567 | '@rolldown/binding-darwin-arm64@1.0.0-beta.53': 568 | resolution: {integrity: sha512-yIsKqMz0CtRnVa6x3Pa+mzTihr4Ty+Z6HfPbZ7RVbk1Uxnco4+CUn7Qbm/5SBol1JD/7nvY8rphAgyAi7Lj6Vg==} 569 | engines: {node: ^20.19.0 || >=22.12.0} 570 | cpu: [arm64] 571 | os: [darwin] 572 | 573 | '@rolldown/binding-darwin-x64@1.0.0-beta.53': 574 | resolution: {integrity: sha512-GTXe+mxsCGUnJOFMhfGWmefP7Q9TpYUseHvhAhr21nCTgdS8jPsvirb0tJwM3lN0/u/cg7bpFNa16fQrjKrCjQ==} 575 | engines: {node: ^20.19.0 || >=22.12.0} 576 | cpu: [x64] 577 | os: [darwin] 578 | 579 | '@rolldown/binding-freebsd-x64@1.0.0-beta.53': 580 | resolution: {integrity: sha512-9Tmp7bBvKqyDkMcL4e089pH3RsjD3SUungjmqWtyhNOxoQMh0fSmINTyYV8KXtE+JkxYMPWvnEt+/mfpVCkk8w==} 581 | engines: {node: ^20.19.0 || >=22.12.0} 582 | cpu: [x64] 583 | os: [freebsd] 584 | 585 | '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': 586 | resolution: {integrity: sha512-a1y5fiB0iovuzdbjUxa7+Zcvgv+mTmlGGC4XydVIsyl48eoxgaYkA3l9079hyTyhECsPq+mbr0gVQsFU11OJAQ==} 587 | engines: {node: ^20.19.0 || >=22.12.0} 588 | cpu: [arm] 589 | os: [linux] 590 | 591 | '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': 592 | resolution: {integrity: sha512-bpIGX+ov9PhJYV+wHNXl9rzq4F0QvILiURn0y0oepbQx+7stmQsKA0DhPGwmhfvF856wq+gbM8L92SAa/CBcLg==} 593 | engines: {node: ^20.19.0 || >=22.12.0} 594 | cpu: [arm64] 595 | os: [linux] 596 | 597 | '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': 598 | resolution: {integrity: sha512-bGe5EBB8FVjHBR1mOLOPEFg1Lp3//7geqWkU5NIhxe+yH0W8FVrQ6WRYOap4SUTKdklD/dC4qPLREkMMQ855FA==} 599 | engines: {node: ^20.19.0 || >=22.12.0} 600 | cpu: [arm64] 601 | os: [linux] 602 | 603 | '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': 604 | resolution: {integrity: sha512-qL+63WKVQs1CMvFedlPt0U9PiEKJOAL/bsHMKUDS6Vp2Q+YAv/QLPu8rcvkfIMvQ0FPU2WL0aX4eWwF6e/GAnA==} 605 | engines: {node: ^20.19.0 || >=22.12.0} 606 | cpu: [x64] 607 | os: [linux] 608 | 609 | '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': 610 | resolution: {integrity: sha512-VGl9JIGjoJh3H8Mb+7xnVqODajBmrdOOb9lxWXdcmxyI+zjB2sux69br0hZJDTyLJfvBoYm439zPACYbCjGRmw==} 611 | engines: {node: ^20.19.0 || >=22.12.0} 612 | cpu: [x64] 613 | os: [linux] 614 | 615 | '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': 616 | resolution: {integrity: sha512-B4iIserJXuSnNzA5xBLFUIjTfhNy7d9sq4FUMQY3GhQWGVhS2RWWzzDnkSU6MUt7/aHUrep0CdQfXUJI9D3W7A==} 617 | engines: {node: ^20.19.0 || >=22.12.0} 618 | cpu: [arm64] 619 | os: [openharmony] 620 | 621 | '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': 622 | resolution: {integrity: sha512-BUjAEgpABEJXilGq/BPh7jeU3WAJ5o15c1ZEgHaDWSz3LB881LQZnbNJHmUiM4d1JQWMYYyR1Y490IBHi2FPJg==} 623 | engines: {node: '>=14.0.0'} 624 | cpu: [wasm32] 625 | 626 | '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': 627 | resolution: {integrity: sha512-s27uU7tpCWSjHBnxyVXHt3rMrQdJq5MHNv3BzsewCIroIw3DJFjMH1dzCPPMUFxnh1r52Nf9IJ/eWp6LDoyGcw==} 628 | engines: {node: ^20.19.0 || >=22.12.0} 629 | cpu: [arm64] 630 | os: [win32] 631 | 632 | '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': 633 | resolution: {integrity: sha512-cjWL/USPJ1g0en2htb4ssMjIycc36RvdQAx1WlXnS6DpULswiUTVXPDesTifSKYSyvx24E0YqQkEm0K/M2Z/AA==} 634 | engines: {node: ^20.19.0 || >=22.12.0} 635 | cpu: [x64] 636 | os: [win32] 637 | 638 | '@rolldown/pluginutils@1.0.0-beta.53': 639 | resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} 640 | 641 | '@rollup/rollup-android-arm-eabi@4.45.1': 642 | resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} 643 | cpu: [arm] 644 | os: [android] 645 | 646 | '@rollup/rollup-android-arm64@4.45.1': 647 | resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} 648 | cpu: [arm64] 649 | os: [android] 650 | 651 | '@rollup/rollup-darwin-arm64@4.45.1': 652 | resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} 653 | cpu: [arm64] 654 | os: [darwin] 655 | 656 | '@rollup/rollup-darwin-x64@4.45.1': 657 | resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} 658 | cpu: [x64] 659 | os: [darwin] 660 | 661 | '@rollup/rollup-freebsd-arm64@4.45.1': 662 | resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} 663 | cpu: [arm64] 664 | os: [freebsd] 665 | 666 | '@rollup/rollup-freebsd-x64@4.45.1': 667 | resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} 668 | cpu: [x64] 669 | os: [freebsd] 670 | 671 | '@rollup/rollup-linux-arm-gnueabihf@4.45.1': 672 | resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} 673 | cpu: [arm] 674 | os: [linux] 675 | 676 | '@rollup/rollup-linux-arm-musleabihf@4.45.1': 677 | resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} 678 | cpu: [arm] 679 | os: [linux] 680 | 681 | '@rollup/rollup-linux-arm64-gnu@4.45.1': 682 | resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} 683 | cpu: [arm64] 684 | os: [linux] 685 | 686 | '@rollup/rollup-linux-arm64-musl@4.45.1': 687 | resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} 688 | cpu: [arm64] 689 | os: [linux] 690 | 691 | '@rollup/rollup-linux-loongarch64-gnu@4.45.1': 692 | resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} 693 | cpu: [loong64] 694 | os: [linux] 695 | 696 | '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': 697 | resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} 698 | cpu: [ppc64] 699 | os: [linux] 700 | 701 | '@rollup/rollup-linux-riscv64-gnu@4.45.1': 702 | resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} 703 | cpu: [riscv64] 704 | os: [linux] 705 | 706 | '@rollup/rollup-linux-riscv64-musl@4.45.1': 707 | resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} 708 | cpu: [riscv64] 709 | os: [linux] 710 | 711 | '@rollup/rollup-linux-s390x-gnu@4.45.1': 712 | resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} 713 | cpu: [s390x] 714 | os: [linux] 715 | 716 | '@rollup/rollup-linux-x64-gnu@4.45.1': 717 | resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} 718 | cpu: [x64] 719 | os: [linux] 720 | 721 | '@rollup/rollup-linux-x64-musl@4.45.1': 722 | resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} 723 | cpu: [x64] 724 | os: [linux] 725 | 726 | '@rollup/rollup-win32-arm64-msvc@4.45.1': 727 | resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} 728 | cpu: [arm64] 729 | os: [win32] 730 | 731 | '@rollup/rollup-win32-ia32-msvc@4.45.1': 732 | resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} 733 | cpu: [ia32] 734 | os: [win32] 735 | 736 | '@rollup/rollup-win32-x64-msvc@4.45.1': 737 | resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} 738 | cpu: [x64] 739 | os: [win32] 740 | 741 | '@sindresorhus/is@4.6.0': 742 | resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} 743 | engines: {node: '>=10'} 744 | 745 | '@tybys/wasm-util@0.10.1': 746 | resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} 747 | 748 | '@types/chai@5.2.2': 749 | resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} 750 | 751 | '@types/deep-eql@4.0.2': 752 | resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 753 | 754 | '@types/estree@1.0.8': 755 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 756 | 757 | '@types/node@12.20.55': 758 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 759 | 760 | '@types/node@22.19.1': 761 | resolution: {integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==} 762 | 763 | '@vitest/expect@3.2.4': 764 | resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} 765 | 766 | '@vitest/mocker@3.2.4': 767 | resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} 768 | peerDependencies: 769 | msw: ^2.4.9 770 | vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 771 | peerDependenciesMeta: 772 | msw: 773 | optional: true 774 | vite: 775 | optional: true 776 | 777 | '@vitest/pretty-format@3.2.4': 778 | resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} 779 | 780 | '@vitest/runner@3.2.4': 781 | resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} 782 | 783 | '@vitest/snapshot@3.2.4': 784 | resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} 785 | 786 | '@vitest/spy@3.2.4': 787 | resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} 788 | 789 | '@vitest/utils@3.2.4': 790 | resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} 791 | 792 | acorn@8.15.0: 793 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 794 | engines: {node: '>=0.4.0'} 795 | hasBin: true 796 | 797 | ansi-colors@4.1.3: 798 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 799 | engines: {node: '>=6'} 800 | 801 | ansi-escapes@7.0.0: 802 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} 803 | engines: {node: '>=18'} 804 | 805 | ansi-regex@5.0.1: 806 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 807 | engines: {node: '>=8'} 808 | 809 | ansi-regex@6.1.0: 810 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 811 | engines: {node: '>=12'} 812 | 813 | ansi-styles@4.3.0: 814 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 815 | engines: {node: '>=8'} 816 | 817 | ansi-styles@6.2.1: 818 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 819 | engines: {node: '>=12'} 820 | 821 | ansis@4.2.0: 822 | resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} 823 | engines: {node: '>=14'} 824 | 825 | any-promise@1.3.0: 826 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 827 | 828 | argparse@1.0.10: 829 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 830 | 831 | argparse@2.0.1: 832 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 833 | 834 | array-union@2.1.0: 835 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 836 | engines: {node: '>=8'} 837 | 838 | assertion-error@2.0.1: 839 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 840 | engines: {node: '>=12'} 841 | 842 | ast-kit@2.2.0: 843 | resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==} 844 | engines: {node: '>=20.19.0'} 845 | 846 | balanced-match@1.0.2: 847 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 848 | 849 | better-path-resolve@1.0.0: 850 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 851 | engines: {node: '>=4'} 852 | 853 | birpc@3.0.0: 854 | resolution: {integrity: sha512-by+04pHuxpCEQcucAXqzopqfhyI8TLK5Qg5MST0cB6MP+JhHna9ollrtK9moVh27aq6Q6MEJgebD0cVm//yBkg==} 855 | 856 | brace-expansion@2.0.2: 857 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 858 | 859 | braces@3.0.3: 860 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 861 | engines: {node: '>=8'} 862 | 863 | bundle-require@5.1.0: 864 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} 865 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 866 | peerDependencies: 867 | esbuild: '>=0.18' 868 | 869 | cac@6.7.14: 870 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 871 | engines: {node: '>=8'} 872 | 873 | chai@5.2.1: 874 | resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} 875 | engines: {node: '>=18'} 876 | 877 | chalk@4.1.2: 878 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 879 | engines: {node: '>=10'} 880 | 881 | chalk@5.4.1: 882 | resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} 883 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 884 | 885 | char-regex@1.0.2: 886 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 887 | engines: {node: '>=10'} 888 | 889 | chardet@2.1.1: 890 | resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} 891 | 892 | check-error@2.1.1: 893 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 894 | engines: {node: '>= 16'} 895 | 896 | chokidar@4.0.3: 897 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 898 | engines: {node: '>= 14.16.0'} 899 | 900 | ci-info@3.9.0: 901 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 902 | engines: {node: '>=8'} 903 | 904 | cjs-module-lexer@1.4.3: 905 | resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} 906 | 907 | cli-highlight@2.1.11: 908 | resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} 909 | engines: {node: '>=8.0.0', npm: '>=5.0.0'} 910 | hasBin: true 911 | 912 | cli-table3@0.6.5: 913 | resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} 914 | engines: {node: 10.* || >= 12.*} 915 | 916 | cliui@7.0.4: 917 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 918 | 919 | color-convert@2.0.1: 920 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 921 | engines: {node: '>=7.0.0'} 922 | 923 | color-name@1.1.4: 924 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 925 | 926 | commander@10.0.1: 927 | resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} 928 | engines: {node: '>=14'} 929 | 930 | commander@4.1.1: 931 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 932 | engines: {node: '>= 6'} 933 | 934 | confbox@0.1.8: 935 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 936 | 937 | consola@3.4.2: 938 | resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 939 | engines: {node: ^14.18.0 || >=16.10.0} 940 | 941 | cross-spawn@7.0.6: 942 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 943 | engines: {node: '>= 8'} 944 | 945 | dataloader@1.4.0: 946 | resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} 947 | 948 | debug@4.4.1: 949 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 950 | engines: {node: '>=6.0'} 951 | peerDependencies: 952 | supports-color: '*' 953 | peerDependenciesMeta: 954 | supports-color: 955 | optional: true 956 | 957 | debug@4.4.3: 958 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 959 | engines: {node: '>=6.0'} 960 | peerDependencies: 961 | supports-color: '*' 962 | peerDependenciesMeta: 963 | supports-color: 964 | optional: true 965 | 966 | deep-eql@5.0.2: 967 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 968 | engines: {node: '>=6'} 969 | 970 | detect-indent@6.1.0: 971 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 972 | engines: {node: '>=8'} 973 | 974 | dir-glob@3.0.1: 975 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 976 | engines: {node: '>=8'} 977 | 978 | dotenv@8.6.0: 979 | resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} 980 | engines: {node: '>=10'} 981 | 982 | dts-resolver@2.1.3: 983 | resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} 984 | engines: {node: '>=20.19.0'} 985 | peerDependencies: 986 | oxc-resolver: '>=11.0.0' 987 | peerDependenciesMeta: 988 | oxc-resolver: 989 | optional: true 990 | 991 | eastasianwidth@0.2.0: 992 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 993 | 994 | emoji-regex@8.0.0: 995 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 996 | 997 | emoji-regex@9.2.2: 998 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 999 | 1000 | emojilib@2.4.0: 1001 | resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} 1002 | 1003 | empathic@2.0.0: 1004 | resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} 1005 | engines: {node: '>=14'} 1006 | 1007 | enquirer@2.4.1: 1008 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 1009 | engines: {node: '>=8.6'} 1010 | 1011 | environment@1.1.0: 1012 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} 1013 | engines: {node: '>=18'} 1014 | 1015 | es-module-lexer@1.7.0: 1016 | resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1017 | 1018 | esbuild@0.25.7: 1019 | resolution: {integrity: sha512-daJB0q2dmTzo90L9NjRaohhRWrCzYxWNFTjEi72/h+p5DcY3yn4MacWfDakHmaBaDzDiuLJsCh0+6LK/iX+c+Q==} 1020 | engines: {node: '>=18'} 1021 | hasBin: true 1022 | 1023 | esbuild@0.27.0: 1024 | resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} 1025 | engines: {node: '>=18'} 1026 | hasBin: true 1027 | 1028 | escalade@3.2.0: 1029 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1030 | engines: {node: '>=6'} 1031 | 1032 | esprima@4.0.1: 1033 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1034 | engines: {node: '>=4'} 1035 | hasBin: true 1036 | 1037 | estree-walker@3.0.3: 1038 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1039 | 1040 | expect-type@1.2.2: 1041 | resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} 1042 | engines: {node: '>=12.0.0'} 1043 | 1044 | extendable-error@0.1.7: 1045 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 1046 | 1047 | fast-glob@3.3.3: 1048 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1049 | engines: {node: '>=8.6.0'} 1050 | 1051 | fastq@1.19.1: 1052 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1053 | 1054 | fdir@6.5.0: 1055 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1056 | engines: {node: '>=12.0.0'} 1057 | peerDependencies: 1058 | picomatch: ^3 || ^4 1059 | peerDependenciesMeta: 1060 | picomatch: 1061 | optional: true 1062 | 1063 | fflate@0.8.2: 1064 | resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} 1065 | 1066 | fill-range@7.1.1: 1067 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1068 | engines: {node: '>=8'} 1069 | 1070 | find-up@4.1.0: 1071 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1072 | engines: {node: '>=8'} 1073 | 1074 | fix-dts-default-cjs-exports@1.0.1: 1075 | resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} 1076 | 1077 | foreground-child@3.3.1: 1078 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 1079 | engines: {node: '>=14'} 1080 | 1081 | fs-extra@7.0.1: 1082 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1083 | engines: {node: '>=6 <7 || >=8'} 1084 | 1085 | fs-extra@8.1.0: 1086 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 1087 | engines: {node: '>=6 <7 || >=8'} 1088 | 1089 | fsevents@2.3.3: 1090 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1091 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1092 | os: [darwin] 1093 | 1094 | get-caller-file@2.0.5: 1095 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1096 | engines: {node: 6.* || 8.* || >= 10.*} 1097 | 1098 | get-tsconfig@4.13.0: 1099 | resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} 1100 | 1101 | glob-parent@5.1.2: 1102 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1103 | engines: {node: '>= 6'} 1104 | 1105 | glob@10.4.5: 1106 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1107 | hasBin: true 1108 | 1109 | globby@11.1.0: 1110 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1111 | engines: {node: '>=10'} 1112 | 1113 | graceful-fs@4.2.11: 1114 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1115 | 1116 | has-flag@4.0.0: 1117 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1118 | engines: {node: '>=8'} 1119 | 1120 | highlight.js@10.7.3: 1121 | resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} 1122 | 1123 | hookable@5.5.3: 1124 | resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} 1125 | 1126 | human-id@4.1.1: 1127 | resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} 1128 | hasBin: true 1129 | 1130 | iconv-lite@0.7.0: 1131 | resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} 1132 | engines: {node: '>=0.10.0'} 1133 | 1134 | ignore@5.3.2: 1135 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1136 | engines: {node: '>= 4'} 1137 | 1138 | import-without-cache@0.2.2: 1139 | resolution: {integrity: sha512-4TTuRrZ0jBULXzac3EoX9ZviOs8Wn9iAbNhJEyLhTpAGF9eNmYSruaMMN/Tec/yqaO7H6yS2kALfQDJ5FxfatA==} 1140 | engines: {node: '>=20.19.0'} 1141 | 1142 | is-extglob@2.1.1: 1143 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1144 | engines: {node: '>=0.10.0'} 1145 | 1146 | is-fullwidth-code-point@3.0.0: 1147 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1148 | engines: {node: '>=8'} 1149 | 1150 | is-glob@4.0.3: 1151 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1152 | engines: {node: '>=0.10.0'} 1153 | 1154 | is-number@7.0.0: 1155 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1156 | engines: {node: '>=0.12.0'} 1157 | 1158 | is-subdir@1.2.0: 1159 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 1160 | engines: {node: '>=4'} 1161 | 1162 | is-windows@1.0.2: 1163 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1164 | engines: {node: '>=0.10.0'} 1165 | 1166 | isexe@2.0.0: 1167 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1168 | 1169 | jackspeak@3.4.3: 1170 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1171 | 1172 | jiti@2.5.1: 1173 | resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 1174 | hasBin: true 1175 | 1176 | joycon@3.1.1: 1177 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1178 | engines: {node: '>=10'} 1179 | 1180 | js-tokens@9.0.1: 1181 | resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} 1182 | 1183 | js-yaml@3.14.1: 1184 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1185 | hasBin: true 1186 | 1187 | js-yaml@4.1.1: 1188 | resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} 1189 | hasBin: true 1190 | 1191 | jsesc@3.1.0: 1192 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1193 | engines: {node: '>=6'} 1194 | hasBin: true 1195 | 1196 | jsonfile@4.0.0: 1197 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1198 | 1199 | lilconfig@3.1.3: 1200 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1201 | engines: {node: '>=14'} 1202 | 1203 | lines-and-columns@1.2.4: 1204 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1205 | 1206 | load-tsconfig@0.2.5: 1207 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1208 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1209 | 1210 | locate-path@5.0.0: 1211 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1212 | engines: {node: '>=8'} 1213 | 1214 | lodash.startcase@4.4.0: 1215 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 1216 | 1217 | loupe@3.1.4: 1218 | resolution: {integrity: sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==} 1219 | 1220 | lru-cache@10.4.3: 1221 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1222 | 1223 | lru-cache@11.1.0: 1224 | resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} 1225 | engines: {node: 20 || >=22} 1226 | 1227 | magic-string@0.30.17: 1228 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1229 | 1230 | magic-string@0.30.21: 1231 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 1232 | 1233 | marked-terminal@7.3.0: 1234 | resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} 1235 | engines: {node: '>=16.0.0'} 1236 | peerDependencies: 1237 | marked: '>=1 <16' 1238 | 1239 | marked@9.1.6: 1240 | resolution: {integrity: sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==} 1241 | engines: {node: '>= 16'} 1242 | hasBin: true 1243 | 1244 | merge2@1.4.1: 1245 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1246 | engines: {node: '>= 8'} 1247 | 1248 | micromatch@4.0.8: 1249 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1250 | engines: {node: '>=8.6'} 1251 | 1252 | minimatch@9.0.5: 1253 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1254 | engines: {node: '>=16 || 14 >=14.17'} 1255 | 1256 | minipass@7.1.2: 1257 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1258 | engines: {node: '>=16 || 14 >=14.17'} 1259 | 1260 | mlly@1.7.4: 1261 | resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} 1262 | 1263 | mri@1.2.0: 1264 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1265 | engines: {node: '>=4'} 1266 | 1267 | ms@2.1.3: 1268 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1269 | 1270 | mz@2.7.0: 1271 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1272 | 1273 | nanoid@3.3.11: 1274 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1275 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1276 | hasBin: true 1277 | 1278 | node-emoji@2.2.0: 1279 | resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} 1280 | engines: {node: '>=18'} 1281 | 1282 | node-fetch@2.7.0: 1283 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1284 | engines: {node: 4.x || >=6.0.0} 1285 | peerDependencies: 1286 | encoding: ^0.1.0 1287 | peerDependenciesMeta: 1288 | encoding: 1289 | optional: true 1290 | 1291 | object-assign@4.1.1: 1292 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1293 | engines: {node: '>=0.10.0'} 1294 | 1295 | obug@2.1.1: 1296 | resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 1297 | 1298 | outdent@0.5.0: 1299 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1300 | 1301 | p-filter@2.1.0: 1302 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1303 | engines: {node: '>=8'} 1304 | 1305 | p-limit@2.3.0: 1306 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1307 | engines: {node: '>=6'} 1308 | 1309 | p-locate@4.1.0: 1310 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1311 | engines: {node: '>=8'} 1312 | 1313 | p-map@2.1.0: 1314 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1315 | engines: {node: '>=6'} 1316 | 1317 | p-try@2.2.0: 1318 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1319 | engines: {node: '>=6'} 1320 | 1321 | package-json-from-dist@1.0.1: 1322 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1323 | 1324 | package-manager-detector@0.2.11: 1325 | resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} 1326 | 1327 | package-manager-detector@1.3.0: 1328 | resolution: {integrity: sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==} 1329 | 1330 | parse5-htmlparser2-tree-adapter@6.0.1: 1331 | resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} 1332 | 1333 | parse5@5.1.1: 1334 | resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} 1335 | 1336 | parse5@6.0.1: 1337 | resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} 1338 | 1339 | path-exists@4.0.0: 1340 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1341 | engines: {node: '>=8'} 1342 | 1343 | path-key@3.1.1: 1344 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1345 | engines: {node: '>=8'} 1346 | 1347 | path-scurry@1.11.1: 1348 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1349 | engines: {node: '>=16 || 14 >=14.18'} 1350 | 1351 | path-type@4.0.0: 1352 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1353 | engines: {node: '>=8'} 1354 | 1355 | pathe@2.0.3: 1356 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1357 | 1358 | pathval@2.0.1: 1359 | resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} 1360 | engines: {node: '>= 14.16'} 1361 | 1362 | picocolors@1.1.1: 1363 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1364 | 1365 | picomatch@2.3.1: 1366 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1367 | engines: {node: '>=8.6'} 1368 | 1369 | picomatch@4.0.3: 1370 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1371 | engines: {node: '>=12'} 1372 | 1373 | pify@4.0.1: 1374 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1375 | engines: {node: '>=6'} 1376 | 1377 | pirates@4.0.7: 1378 | resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} 1379 | engines: {node: '>= 6'} 1380 | 1381 | pkg-types@1.3.1: 1382 | resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 1383 | 1384 | postcss-load-config@6.0.1: 1385 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1386 | engines: {node: '>= 18'} 1387 | peerDependencies: 1388 | jiti: '>=1.21.0' 1389 | postcss: '>=8.0.9' 1390 | tsx: ^4.8.1 1391 | yaml: ^2.4.2 1392 | peerDependenciesMeta: 1393 | jiti: 1394 | optional: true 1395 | postcss: 1396 | optional: true 1397 | tsx: 1398 | optional: true 1399 | yaml: 1400 | optional: true 1401 | 1402 | postcss@8.5.6: 1403 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1404 | engines: {node: ^10 || ^12 || >=14} 1405 | 1406 | prettier@2.8.8: 1407 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1408 | engines: {node: '>=10.13.0'} 1409 | hasBin: true 1410 | 1411 | prettier@3.7.4: 1412 | resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} 1413 | engines: {node: '>=14'} 1414 | hasBin: true 1415 | 1416 | process-ancestry@0.1.0: 1417 | resolution: {integrity: sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg==} 1418 | engines: {node: '>=18.0.0'} 1419 | 1420 | publint@0.3.15: 1421 | resolution: {integrity: sha512-xPbRAPW+vqdiaKy5sVVY0uFAu3LaviaPO3pZ9FaRx59l9+U/RKR1OEbLhkug87cwiVKxPXyB4txsv5cad67u+A==} 1422 | engines: {node: '>=18'} 1423 | hasBin: true 1424 | 1425 | quansync@0.2.11: 1426 | resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} 1427 | 1428 | queue-microtask@1.2.3: 1429 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1430 | 1431 | read-yaml-file@1.1.0: 1432 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1433 | engines: {node: '>=6'} 1434 | 1435 | readdirp@4.1.2: 1436 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1437 | engines: {node: '>= 14.18.0'} 1438 | 1439 | require-directory@2.1.1: 1440 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1441 | engines: {node: '>=0.10.0'} 1442 | 1443 | resolve-from@5.0.0: 1444 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1445 | engines: {node: '>=8'} 1446 | 1447 | resolve-pkg-maps@1.0.0: 1448 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1449 | 1450 | reusify@1.1.0: 1451 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1452 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1453 | 1454 | rolldown-plugin-dts@0.18.2: 1455 | resolution: {integrity: sha512-jRz3SHwr69F/IGEDMHtWjwVjgZwo3PZEadmMt4uA/e3rbIytoLJhvktSKlIAy/4QeWhVL9XeuCJBC66wvBQRwg==} 1456 | engines: {node: '>=20.19.0'} 1457 | peerDependencies: 1458 | '@ts-macro/tsc': ^0.3.6 1459 | '@typescript/native-preview': '>=7.0.0-dev.20250601.1' 1460 | rolldown: ^1.0.0-beta.51 1461 | typescript: ^5.0.0 1462 | vue-tsc: ~3.1.0 1463 | peerDependenciesMeta: 1464 | '@ts-macro/tsc': 1465 | optional: true 1466 | '@typescript/native-preview': 1467 | optional: true 1468 | typescript: 1469 | optional: true 1470 | vue-tsc: 1471 | optional: true 1472 | 1473 | rolldown@1.0.0-beta.53: 1474 | resolution: {integrity: sha512-Qd9c2p0XKZdgT5AYd+KgAMggJ8ZmCs3JnS9PTMWkyUfteKlfmKtxJbWTHkVakxwXs1Ub7jrRYVeFeF7N0sQxyw==} 1475 | engines: {node: ^20.19.0 || >=22.12.0} 1476 | hasBin: true 1477 | 1478 | rollup@4.45.1: 1479 | resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} 1480 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1481 | hasBin: true 1482 | 1483 | run-parallel@1.2.0: 1484 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1485 | 1486 | sade@1.8.1: 1487 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1488 | engines: {node: '>=6'} 1489 | 1490 | safer-buffer@2.1.2: 1491 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1492 | 1493 | semver@7.7.2: 1494 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1495 | engines: {node: '>=10'} 1496 | hasBin: true 1497 | 1498 | semver@7.7.3: 1499 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 1500 | engines: {node: '>=10'} 1501 | hasBin: true 1502 | 1503 | shebang-command@2.0.0: 1504 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1505 | engines: {node: '>=8'} 1506 | 1507 | shebang-regex@3.0.0: 1508 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1509 | engines: {node: '>=8'} 1510 | 1511 | siginfo@2.0.0: 1512 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1513 | 1514 | signal-exit@4.1.0: 1515 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1516 | engines: {node: '>=14'} 1517 | 1518 | skin-tone@2.0.0: 1519 | resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} 1520 | engines: {node: '>=8'} 1521 | 1522 | slash@3.0.0: 1523 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1524 | engines: {node: '>=8'} 1525 | 1526 | source-map-js@1.2.1: 1527 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1528 | engines: {node: '>=0.10.0'} 1529 | 1530 | source-map@0.7.6: 1531 | resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} 1532 | engines: {node: '>= 12'} 1533 | 1534 | spawndamnit@3.0.1: 1535 | resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 1536 | 1537 | sprintf-js@1.0.3: 1538 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1539 | 1540 | stackback@0.0.2: 1541 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1542 | 1543 | std-env@3.9.0: 1544 | resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} 1545 | 1546 | string-width@4.2.3: 1547 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1548 | engines: {node: '>=8'} 1549 | 1550 | string-width@5.1.2: 1551 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1552 | engines: {node: '>=12'} 1553 | 1554 | strip-ansi@6.0.1: 1555 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1556 | engines: {node: '>=8'} 1557 | 1558 | strip-ansi@7.1.0: 1559 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1560 | engines: {node: '>=12'} 1561 | 1562 | strip-bom@3.0.0: 1563 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1564 | engines: {node: '>=4'} 1565 | 1566 | strip-literal@3.0.0: 1567 | resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} 1568 | 1569 | sucrase@3.35.0: 1570 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1571 | engines: {node: '>=16 || 14 >=14.17'} 1572 | hasBin: true 1573 | 1574 | supports-color@7.2.0: 1575 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1576 | engines: {node: '>=8'} 1577 | 1578 | supports-hyperlinks@3.2.0: 1579 | resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} 1580 | engines: {node: '>=14.18'} 1581 | 1582 | term-size@2.2.1: 1583 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 1584 | engines: {node: '>=8'} 1585 | 1586 | thenify-all@1.6.0: 1587 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1588 | engines: {node: '>=0.8'} 1589 | 1590 | thenify@3.3.1: 1591 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1592 | 1593 | tinybench@2.9.0: 1594 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1595 | 1596 | tinyexec@0.3.2: 1597 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1598 | 1599 | tinyexec@1.0.2: 1600 | resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 1601 | engines: {node: '>=18'} 1602 | 1603 | tinyglobby@0.2.14: 1604 | resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} 1605 | engines: {node: '>=12.0.0'} 1606 | 1607 | tinyglobby@0.2.15: 1608 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1609 | engines: {node: '>=12.0.0'} 1610 | 1611 | tinypool@1.1.1: 1612 | resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} 1613 | engines: {node: ^18.0.0 || >=20.0.0} 1614 | 1615 | tinyrainbow@2.0.0: 1616 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1617 | engines: {node: '>=14.0.0'} 1618 | 1619 | tinyspy@4.0.3: 1620 | resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} 1621 | engines: {node: '>=14.0.0'} 1622 | 1623 | to-regex-range@5.0.1: 1624 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1625 | engines: {node: '>=8.0'} 1626 | 1627 | tr46@0.0.3: 1628 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1629 | 1630 | tree-kill@1.2.2: 1631 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1632 | hasBin: true 1633 | 1634 | ts-interface-checker@0.1.13: 1635 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1636 | 1637 | tsdown@0.17.0: 1638 | resolution: {integrity: sha512-NPZRrlC51X9Bb55ZTDwrWges8Dm1niCvNA5AYw7aix6pfnDnB4WR0neG5RPq75xIodg3hqlQUzzyrX7n4dmnJg==} 1639 | engines: {node: '>=20.19.0'} 1640 | hasBin: true 1641 | peerDependencies: 1642 | '@arethetypeswrong/core': ^0.18.1 1643 | '@vitejs/devtools': ^0.0.0-alpha.18 1644 | publint: ^0.3.0 1645 | typescript: ^5.0.0 1646 | unplugin-lightningcss: ^0.4.0 1647 | unplugin-unused: ^0.5.0 1648 | peerDependenciesMeta: 1649 | '@arethetypeswrong/core': 1650 | optional: true 1651 | '@vitejs/devtools': 1652 | optional: true 1653 | publint: 1654 | optional: true 1655 | typescript: 1656 | optional: true 1657 | unplugin-lightningcss: 1658 | optional: true 1659 | unplugin-unused: 1660 | optional: true 1661 | 1662 | tslib@2.8.1: 1663 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1664 | 1665 | tsup@8.5.1: 1666 | resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} 1667 | engines: {node: '>=18'} 1668 | hasBin: true 1669 | peerDependencies: 1670 | '@microsoft/api-extractor': ^7.36.0 1671 | '@swc/core': ^1 1672 | postcss: ^8.4.12 1673 | typescript: '>=4.5.0' 1674 | peerDependenciesMeta: 1675 | '@microsoft/api-extractor': 1676 | optional: true 1677 | '@swc/core': 1678 | optional: true 1679 | postcss: 1680 | optional: true 1681 | typescript: 1682 | optional: true 1683 | 1684 | tsx@4.21.0: 1685 | resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} 1686 | engines: {node: '>=18.0.0'} 1687 | hasBin: true 1688 | 1689 | typescript@5.6.1-rc: 1690 | resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} 1691 | engines: {node: '>=14.17'} 1692 | hasBin: true 1693 | 1694 | typescript@5.9.3: 1695 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 1696 | engines: {node: '>=14.17'} 1697 | hasBin: true 1698 | 1699 | ufo@1.6.1: 1700 | resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1701 | 1702 | unconfig-core@7.4.1: 1703 | resolution: {integrity: sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==} 1704 | 1705 | undici-types@6.21.0: 1706 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1707 | 1708 | unicode-emoji-modifier-base@1.0.0: 1709 | resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} 1710 | engines: {node: '>=4'} 1711 | 1712 | universalify@0.1.2: 1713 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 1714 | engines: {node: '>= 4.0.0'} 1715 | 1716 | unrun@0.2.16: 1717 | resolution: {integrity: sha512-DBkjUpQv9AQs1464XWnWQ97RuxPCu+CImvQMPmqFeHoL2Bi6C1BGPacMuXVw4VMIfQewNJZWUxPt5envG90oUA==} 1718 | engines: {node: '>=20.19.0'} 1719 | hasBin: true 1720 | peerDependencies: 1721 | synckit: ^0.11.11 1722 | peerDependenciesMeta: 1723 | synckit: 1724 | optional: true 1725 | 1726 | validate-npm-package-name@5.0.1: 1727 | resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} 1728 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1729 | 1730 | vite-node@3.2.4: 1731 | resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} 1732 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1733 | hasBin: true 1734 | 1735 | vite@7.0.5: 1736 | resolution: {integrity: sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==} 1737 | engines: {node: ^20.19.0 || >=22.12.0} 1738 | hasBin: true 1739 | peerDependencies: 1740 | '@types/node': ^20.19.0 || >=22.12.0 1741 | jiti: '>=1.21.0' 1742 | less: ^4.0.0 1743 | lightningcss: ^1.21.0 1744 | sass: ^1.70.0 1745 | sass-embedded: ^1.70.0 1746 | stylus: '>=0.54.8' 1747 | sugarss: ^5.0.0 1748 | terser: ^5.16.0 1749 | tsx: ^4.8.1 1750 | yaml: ^2.4.2 1751 | peerDependenciesMeta: 1752 | '@types/node': 1753 | optional: true 1754 | jiti: 1755 | optional: true 1756 | less: 1757 | optional: true 1758 | lightningcss: 1759 | optional: true 1760 | sass: 1761 | optional: true 1762 | sass-embedded: 1763 | optional: true 1764 | stylus: 1765 | optional: true 1766 | sugarss: 1767 | optional: true 1768 | terser: 1769 | optional: true 1770 | tsx: 1771 | optional: true 1772 | yaml: 1773 | optional: true 1774 | 1775 | vitest@3.2.4: 1776 | resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} 1777 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1778 | hasBin: true 1779 | peerDependencies: 1780 | '@edge-runtime/vm': '*' 1781 | '@types/debug': ^4.1.12 1782 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1783 | '@vitest/browser': 3.2.4 1784 | '@vitest/ui': 3.2.4 1785 | happy-dom: '*' 1786 | jsdom: '*' 1787 | peerDependenciesMeta: 1788 | '@edge-runtime/vm': 1789 | optional: true 1790 | '@types/debug': 1791 | optional: true 1792 | '@types/node': 1793 | optional: true 1794 | '@vitest/browser': 1795 | optional: true 1796 | '@vitest/ui': 1797 | optional: true 1798 | happy-dom: 1799 | optional: true 1800 | jsdom: 1801 | optional: true 1802 | 1803 | webidl-conversions@3.0.1: 1804 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1805 | 1806 | whatwg-url@5.0.0: 1807 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1808 | 1809 | which@2.0.2: 1810 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1811 | engines: {node: '>= 8'} 1812 | hasBin: true 1813 | 1814 | why-is-node-running@2.3.0: 1815 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1816 | engines: {node: '>=8'} 1817 | hasBin: true 1818 | 1819 | wrap-ansi@7.0.0: 1820 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1821 | engines: {node: '>=10'} 1822 | 1823 | wrap-ansi@8.1.0: 1824 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1825 | engines: {node: '>=12'} 1826 | 1827 | y18n@5.0.8: 1828 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1829 | engines: {node: '>=10'} 1830 | 1831 | yargs-parser@20.2.9: 1832 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 1833 | engines: {node: '>=10'} 1834 | 1835 | yargs@16.2.0: 1836 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 1837 | engines: {node: '>=10'} 1838 | 1839 | snapshots: 1840 | 1841 | '@andrewbranch/untar.js@1.0.3': {} 1842 | 1843 | '@arethetypeswrong/cli@0.18.2': 1844 | dependencies: 1845 | '@arethetypeswrong/core': 0.18.2 1846 | chalk: 4.1.2 1847 | cli-table3: 0.6.5 1848 | commander: 10.0.1 1849 | marked: 9.1.6 1850 | marked-terminal: 7.3.0(marked@9.1.6) 1851 | semver: 7.7.2 1852 | 1853 | '@arethetypeswrong/core@0.18.2': 1854 | dependencies: 1855 | '@andrewbranch/untar.js': 1.0.3 1856 | '@loaderkit/resolve': 1.0.4 1857 | cjs-module-lexer: 1.4.3 1858 | fflate: 0.8.2 1859 | lru-cache: 11.1.0 1860 | semver: 7.7.3 1861 | typescript: 5.6.1-rc 1862 | validate-npm-package-name: 5.0.1 1863 | 1864 | '@babel/generator@7.28.5': 1865 | dependencies: 1866 | '@babel/parser': 7.28.5 1867 | '@babel/types': 7.28.5 1868 | '@jridgewell/gen-mapping': 0.3.12 1869 | '@jridgewell/trace-mapping': 0.3.29 1870 | jsesc: 3.1.0 1871 | 1872 | '@babel/helper-string-parser@7.27.1': {} 1873 | 1874 | '@babel/helper-validator-identifier@7.28.5': {} 1875 | 1876 | '@babel/parser@7.28.5': 1877 | dependencies: 1878 | '@babel/types': 7.28.5 1879 | 1880 | '@babel/runtime@7.27.6': {} 1881 | 1882 | '@babel/types@7.28.5': 1883 | dependencies: 1884 | '@babel/helper-string-parser': 7.27.1 1885 | '@babel/helper-validator-identifier': 7.28.5 1886 | 1887 | '@braidai/lang@1.1.1': {} 1888 | 1889 | '@changesets/apply-release-plan@7.0.14': 1890 | dependencies: 1891 | '@changesets/config': 3.1.2 1892 | '@changesets/get-version-range-type': 0.4.0 1893 | '@changesets/git': 3.0.4 1894 | '@changesets/should-skip-package': 0.1.2 1895 | '@changesets/types': 6.1.0 1896 | '@manypkg/get-packages': 1.1.3 1897 | detect-indent: 6.1.0 1898 | fs-extra: 7.0.1 1899 | lodash.startcase: 4.4.0 1900 | outdent: 0.5.0 1901 | prettier: 2.8.8 1902 | resolve-from: 5.0.0 1903 | semver: 7.7.3 1904 | 1905 | '@changesets/assemble-release-plan@6.0.9': 1906 | dependencies: 1907 | '@changesets/errors': 0.2.0 1908 | '@changesets/get-dependents-graph': 2.1.3 1909 | '@changesets/should-skip-package': 0.1.2 1910 | '@changesets/types': 6.1.0 1911 | '@manypkg/get-packages': 1.1.3 1912 | semver: 7.7.3 1913 | 1914 | '@changesets/changelog-git@0.2.1': 1915 | dependencies: 1916 | '@changesets/types': 6.1.0 1917 | 1918 | '@changesets/changelog-github@0.5.2': 1919 | dependencies: 1920 | '@changesets/get-github-info': 0.7.0 1921 | '@changesets/types': 6.1.0 1922 | dotenv: 8.6.0 1923 | transitivePeerDependencies: 1924 | - encoding 1925 | 1926 | '@changesets/cli@2.29.8(@types/node@22.19.1)': 1927 | dependencies: 1928 | '@changesets/apply-release-plan': 7.0.14 1929 | '@changesets/assemble-release-plan': 6.0.9 1930 | '@changesets/changelog-git': 0.2.1 1931 | '@changesets/config': 3.1.2 1932 | '@changesets/errors': 0.2.0 1933 | '@changesets/get-dependents-graph': 2.1.3 1934 | '@changesets/get-release-plan': 4.0.14 1935 | '@changesets/git': 3.0.4 1936 | '@changesets/logger': 0.1.1 1937 | '@changesets/pre': 2.0.2 1938 | '@changesets/read': 0.6.6 1939 | '@changesets/should-skip-package': 0.1.2 1940 | '@changesets/types': 6.1.0 1941 | '@changesets/write': 0.4.0 1942 | '@inquirer/external-editor': 1.0.3(@types/node@22.19.1) 1943 | '@manypkg/get-packages': 1.1.3 1944 | ansi-colors: 4.1.3 1945 | ci-info: 3.9.0 1946 | enquirer: 2.4.1 1947 | fs-extra: 7.0.1 1948 | mri: 1.2.0 1949 | p-limit: 2.3.0 1950 | package-manager-detector: 0.2.11 1951 | picocolors: 1.1.1 1952 | resolve-from: 5.0.0 1953 | semver: 7.7.3 1954 | spawndamnit: 3.0.1 1955 | term-size: 2.2.1 1956 | transitivePeerDependencies: 1957 | - '@types/node' 1958 | 1959 | '@changesets/config@3.1.2': 1960 | dependencies: 1961 | '@changesets/errors': 0.2.0 1962 | '@changesets/get-dependents-graph': 2.1.3 1963 | '@changesets/logger': 0.1.1 1964 | '@changesets/types': 6.1.0 1965 | '@manypkg/get-packages': 1.1.3 1966 | fs-extra: 7.0.1 1967 | micromatch: 4.0.8 1968 | 1969 | '@changesets/errors@0.2.0': 1970 | dependencies: 1971 | extendable-error: 0.1.7 1972 | 1973 | '@changesets/get-dependents-graph@2.1.3': 1974 | dependencies: 1975 | '@changesets/types': 6.1.0 1976 | '@manypkg/get-packages': 1.1.3 1977 | picocolors: 1.1.1 1978 | semver: 7.7.3 1979 | 1980 | '@changesets/get-github-info@0.7.0': 1981 | dependencies: 1982 | dataloader: 1.4.0 1983 | node-fetch: 2.7.0 1984 | transitivePeerDependencies: 1985 | - encoding 1986 | 1987 | '@changesets/get-release-plan@4.0.14': 1988 | dependencies: 1989 | '@changesets/assemble-release-plan': 6.0.9 1990 | '@changesets/config': 3.1.2 1991 | '@changesets/pre': 2.0.2 1992 | '@changesets/read': 0.6.6 1993 | '@changesets/types': 6.1.0 1994 | '@manypkg/get-packages': 1.1.3 1995 | 1996 | '@changesets/get-version-range-type@0.4.0': {} 1997 | 1998 | '@changesets/git@3.0.4': 1999 | dependencies: 2000 | '@changesets/errors': 0.2.0 2001 | '@manypkg/get-packages': 1.1.3 2002 | is-subdir: 1.2.0 2003 | micromatch: 4.0.8 2004 | spawndamnit: 3.0.1 2005 | 2006 | '@changesets/logger@0.1.1': 2007 | dependencies: 2008 | picocolors: 1.1.1 2009 | 2010 | '@changesets/parse@0.4.2': 2011 | dependencies: 2012 | '@changesets/types': 6.1.0 2013 | js-yaml: 4.1.1 2014 | 2015 | '@changesets/pre@2.0.2': 2016 | dependencies: 2017 | '@changesets/errors': 0.2.0 2018 | '@changesets/types': 6.1.0 2019 | '@manypkg/get-packages': 1.1.3 2020 | fs-extra: 7.0.1 2021 | 2022 | '@changesets/read@0.6.6': 2023 | dependencies: 2024 | '@changesets/git': 3.0.4 2025 | '@changesets/logger': 0.1.1 2026 | '@changesets/parse': 0.4.2 2027 | '@changesets/types': 6.1.0 2028 | fs-extra: 7.0.1 2029 | p-filter: 2.1.0 2030 | picocolors: 1.1.1 2031 | 2032 | '@changesets/should-skip-package@0.1.2': 2033 | dependencies: 2034 | '@changesets/types': 6.1.0 2035 | '@manypkg/get-packages': 1.1.3 2036 | 2037 | '@changesets/types@4.1.0': {} 2038 | 2039 | '@changesets/types@6.1.0': {} 2040 | 2041 | '@changesets/write@0.4.0': 2042 | dependencies: 2043 | '@changesets/types': 6.1.0 2044 | fs-extra: 7.0.1 2045 | human-id: 4.1.1 2046 | prettier: 2.8.8 2047 | 2048 | '@colors/colors@1.5.0': 2049 | optional: true 2050 | 2051 | '@emnapi/core@1.7.1': 2052 | dependencies: 2053 | '@emnapi/wasi-threads': 1.1.0 2054 | tslib: 2.8.1 2055 | optional: true 2056 | 2057 | '@emnapi/runtime@1.7.1': 2058 | dependencies: 2059 | tslib: 2.8.1 2060 | optional: true 2061 | 2062 | '@emnapi/wasi-threads@1.1.0': 2063 | dependencies: 2064 | tslib: 2.8.1 2065 | optional: true 2066 | 2067 | '@esbuild/aix-ppc64@0.25.7': 2068 | optional: true 2069 | 2070 | '@esbuild/aix-ppc64@0.27.0': 2071 | optional: true 2072 | 2073 | '@esbuild/android-arm64@0.25.7': 2074 | optional: true 2075 | 2076 | '@esbuild/android-arm64@0.27.0': 2077 | optional: true 2078 | 2079 | '@esbuild/android-arm@0.25.7': 2080 | optional: true 2081 | 2082 | '@esbuild/android-arm@0.27.0': 2083 | optional: true 2084 | 2085 | '@esbuild/android-x64@0.25.7': 2086 | optional: true 2087 | 2088 | '@esbuild/android-x64@0.27.0': 2089 | optional: true 2090 | 2091 | '@esbuild/darwin-arm64@0.25.7': 2092 | optional: true 2093 | 2094 | '@esbuild/darwin-arm64@0.27.0': 2095 | optional: true 2096 | 2097 | '@esbuild/darwin-x64@0.25.7': 2098 | optional: true 2099 | 2100 | '@esbuild/darwin-x64@0.27.0': 2101 | optional: true 2102 | 2103 | '@esbuild/freebsd-arm64@0.25.7': 2104 | optional: true 2105 | 2106 | '@esbuild/freebsd-arm64@0.27.0': 2107 | optional: true 2108 | 2109 | '@esbuild/freebsd-x64@0.25.7': 2110 | optional: true 2111 | 2112 | '@esbuild/freebsd-x64@0.27.0': 2113 | optional: true 2114 | 2115 | '@esbuild/linux-arm64@0.25.7': 2116 | optional: true 2117 | 2118 | '@esbuild/linux-arm64@0.27.0': 2119 | optional: true 2120 | 2121 | '@esbuild/linux-arm@0.25.7': 2122 | optional: true 2123 | 2124 | '@esbuild/linux-arm@0.27.0': 2125 | optional: true 2126 | 2127 | '@esbuild/linux-ia32@0.25.7': 2128 | optional: true 2129 | 2130 | '@esbuild/linux-ia32@0.27.0': 2131 | optional: true 2132 | 2133 | '@esbuild/linux-loong64@0.25.7': 2134 | optional: true 2135 | 2136 | '@esbuild/linux-loong64@0.27.0': 2137 | optional: true 2138 | 2139 | '@esbuild/linux-mips64el@0.25.7': 2140 | optional: true 2141 | 2142 | '@esbuild/linux-mips64el@0.27.0': 2143 | optional: true 2144 | 2145 | '@esbuild/linux-ppc64@0.25.7': 2146 | optional: true 2147 | 2148 | '@esbuild/linux-ppc64@0.27.0': 2149 | optional: true 2150 | 2151 | '@esbuild/linux-riscv64@0.25.7': 2152 | optional: true 2153 | 2154 | '@esbuild/linux-riscv64@0.27.0': 2155 | optional: true 2156 | 2157 | '@esbuild/linux-s390x@0.25.7': 2158 | optional: true 2159 | 2160 | '@esbuild/linux-s390x@0.27.0': 2161 | optional: true 2162 | 2163 | '@esbuild/linux-x64@0.25.7': 2164 | optional: true 2165 | 2166 | '@esbuild/linux-x64@0.27.0': 2167 | optional: true 2168 | 2169 | '@esbuild/netbsd-arm64@0.25.7': 2170 | optional: true 2171 | 2172 | '@esbuild/netbsd-arm64@0.27.0': 2173 | optional: true 2174 | 2175 | '@esbuild/netbsd-x64@0.25.7': 2176 | optional: true 2177 | 2178 | '@esbuild/netbsd-x64@0.27.0': 2179 | optional: true 2180 | 2181 | '@esbuild/openbsd-arm64@0.25.7': 2182 | optional: true 2183 | 2184 | '@esbuild/openbsd-arm64@0.27.0': 2185 | optional: true 2186 | 2187 | '@esbuild/openbsd-x64@0.25.7': 2188 | optional: true 2189 | 2190 | '@esbuild/openbsd-x64@0.27.0': 2191 | optional: true 2192 | 2193 | '@esbuild/openharmony-arm64@0.25.7': 2194 | optional: true 2195 | 2196 | '@esbuild/openharmony-arm64@0.27.0': 2197 | optional: true 2198 | 2199 | '@esbuild/sunos-x64@0.25.7': 2200 | optional: true 2201 | 2202 | '@esbuild/sunos-x64@0.27.0': 2203 | optional: true 2204 | 2205 | '@esbuild/win32-arm64@0.25.7': 2206 | optional: true 2207 | 2208 | '@esbuild/win32-arm64@0.27.0': 2209 | optional: true 2210 | 2211 | '@esbuild/win32-ia32@0.25.7': 2212 | optional: true 2213 | 2214 | '@esbuild/win32-ia32@0.27.0': 2215 | optional: true 2216 | 2217 | '@esbuild/win32-x64@0.25.7': 2218 | optional: true 2219 | 2220 | '@esbuild/win32-x64@0.27.0': 2221 | optional: true 2222 | 2223 | '@inquirer/external-editor@1.0.3(@types/node@22.19.1)': 2224 | dependencies: 2225 | chardet: 2.1.1 2226 | iconv-lite: 0.7.0 2227 | optionalDependencies: 2228 | '@types/node': 22.19.1 2229 | 2230 | '@isaacs/cliui@8.0.2': 2231 | dependencies: 2232 | string-width: 5.1.2 2233 | string-width-cjs: string-width@4.2.3 2234 | strip-ansi: 7.1.0 2235 | strip-ansi-cjs: strip-ansi@6.0.1 2236 | wrap-ansi: 8.1.0 2237 | wrap-ansi-cjs: wrap-ansi@7.0.0 2238 | 2239 | '@jridgewell/gen-mapping@0.3.12': 2240 | dependencies: 2241 | '@jridgewell/sourcemap-codec': 1.5.5 2242 | '@jridgewell/trace-mapping': 0.3.29 2243 | 2244 | '@jridgewell/resolve-uri@3.1.2': {} 2245 | 2246 | '@jridgewell/sourcemap-codec@1.5.4': {} 2247 | 2248 | '@jridgewell/sourcemap-codec@1.5.5': {} 2249 | 2250 | '@jridgewell/trace-mapping@0.3.29': 2251 | dependencies: 2252 | '@jridgewell/resolve-uri': 3.1.2 2253 | '@jridgewell/sourcemap-codec': 1.5.5 2254 | 2255 | '@loaderkit/resolve@1.0.4': 2256 | dependencies: 2257 | '@braidai/lang': 1.1.1 2258 | 2259 | '@manypkg/find-root@1.1.0': 2260 | dependencies: 2261 | '@babel/runtime': 7.27.6 2262 | '@types/node': 12.20.55 2263 | find-up: 4.1.0 2264 | fs-extra: 8.1.0 2265 | 2266 | '@manypkg/get-packages@1.1.3': 2267 | dependencies: 2268 | '@babel/runtime': 7.27.6 2269 | '@changesets/types': 4.1.0 2270 | '@manypkg/find-root': 1.1.0 2271 | fs-extra: 8.1.0 2272 | globby: 11.1.0 2273 | read-yaml-file: 1.1.0 2274 | 2275 | '@napi-rs/wasm-runtime@1.1.0': 2276 | dependencies: 2277 | '@emnapi/core': 1.7.1 2278 | '@emnapi/runtime': 1.7.1 2279 | '@tybys/wasm-util': 0.10.1 2280 | optional: true 2281 | 2282 | '@nodelib/fs.scandir@2.1.5': 2283 | dependencies: 2284 | '@nodelib/fs.stat': 2.0.5 2285 | run-parallel: 1.2.0 2286 | 2287 | '@nodelib/fs.stat@2.0.5': {} 2288 | 2289 | '@nodelib/fs.walk@1.2.8': 2290 | dependencies: 2291 | '@nodelib/fs.scandir': 2.1.5 2292 | fastq: 1.19.1 2293 | 2294 | '@oxc-project/runtime@0.101.0': {} 2295 | 2296 | '@oxc-project/types@0.101.0': {} 2297 | 2298 | '@pkgjs/parseargs@0.11.0': 2299 | optional: true 2300 | 2301 | '@publint/pack@0.1.2': {} 2302 | 2303 | '@quansync/fs@0.1.5': 2304 | dependencies: 2305 | quansync: 0.2.11 2306 | 2307 | '@rolldown/binding-android-arm64@1.0.0-beta.53': 2308 | optional: true 2309 | 2310 | '@rolldown/binding-darwin-arm64@1.0.0-beta.53': 2311 | optional: true 2312 | 2313 | '@rolldown/binding-darwin-x64@1.0.0-beta.53': 2314 | optional: true 2315 | 2316 | '@rolldown/binding-freebsd-x64@1.0.0-beta.53': 2317 | optional: true 2318 | 2319 | '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.53': 2320 | optional: true 2321 | 2322 | '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.53': 2323 | optional: true 2324 | 2325 | '@rolldown/binding-linux-arm64-musl@1.0.0-beta.53': 2326 | optional: true 2327 | 2328 | '@rolldown/binding-linux-x64-gnu@1.0.0-beta.53': 2329 | optional: true 2330 | 2331 | '@rolldown/binding-linux-x64-musl@1.0.0-beta.53': 2332 | optional: true 2333 | 2334 | '@rolldown/binding-openharmony-arm64@1.0.0-beta.53': 2335 | optional: true 2336 | 2337 | '@rolldown/binding-wasm32-wasi@1.0.0-beta.53': 2338 | dependencies: 2339 | '@napi-rs/wasm-runtime': 1.1.0 2340 | optional: true 2341 | 2342 | '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.53': 2343 | optional: true 2344 | 2345 | '@rolldown/binding-win32-x64-msvc@1.0.0-beta.53': 2346 | optional: true 2347 | 2348 | '@rolldown/pluginutils@1.0.0-beta.53': {} 2349 | 2350 | '@rollup/rollup-android-arm-eabi@4.45.1': 2351 | optional: true 2352 | 2353 | '@rollup/rollup-android-arm64@4.45.1': 2354 | optional: true 2355 | 2356 | '@rollup/rollup-darwin-arm64@4.45.1': 2357 | optional: true 2358 | 2359 | '@rollup/rollup-darwin-x64@4.45.1': 2360 | optional: true 2361 | 2362 | '@rollup/rollup-freebsd-arm64@4.45.1': 2363 | optional: true 2364 | 2365 | '@rollup/rollup-freebsd-x64@4.45.1': 2366 | optional: true 2367 | 2368 | '@rollup/rollup-linux-arm-gnueabihf@4.45.1': 2369 | optional: true 2370 | 2371 | '@rollup/rollup-linux-arm-musleabihf@4.45.1': 2372 | optional: true 2373 | 2374 | '@rollup/rollup-linux-arm64-gnu@4.45.1': 2375 | optional: true 2376 | 2377 | '@rollup/rollup-linux-arm64-musl@4.45.1': 2378 | optional: true 2379 | 2380 | '@rollup/rollup-linux-loongarch64-gnu@4.45.1': 2381 | optional: true 2382 | 2383 | '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': 2384 | optional: true 2385 | 2386 | '@rollup/rollup-linux-riscv64-gnu@4.45.1': 2387 | optional: true 2388 | 2389 | '@rollup/rollup-linux-riscv64-musl@4.45.1': 2390 | optional: true 2391 | 2392 | '@rollup/rollup-linux-s390x-gnu@4.45.1': 2393 | optional: true 2394 | 2395 | '@rollup/rollup-linux-x64-gnu@4.45.1': 2396 | optional: true 2397 | 2398 | '@rollup/rollup-linux-x64-musl@4.45.1': 2399 | optional: true 2400 | 2401 | '@rollup/rollup-win32-arm64-msvc@4.45.1': 2402 | optional: true 2403 | 2404 | '@rollup/rollup-win32-ia32-msvc@4.45.1': 2405 | optional: true 2406 | 2407 | '@rollup/rollup-win32-x64-msvc@4.45.1': 2408 | optional: true 2409 | 2410 | '@sindresorhus/is@4.6.0': {} 2411 | 2412 | '@tybys/wasm-util@0.10.1': 2413 | dependencies: 2414 | tslib: 2.8.1 2415 | optional: true 2416 | 2417 | '@types/chai@5.2.2': 2418 | dependencies: 2419 | '@types/deep-eql': 4.0.2 2420 | 2421 | '@types/deep-eql@4.0.2': {} 2422 | 2423 | '@types/estree@1.0.8': {} 2424 | 2425 | '@types/node@12.20.55': {} 2426 | 2427 | '@types/node@22.19.1': 2428 | dependencies: 2429 | undici-types: 6.21.0 2430 | 2431 | '@vitest/expect@3.2.4': 2432 | dependencies: 2433 | '@types/chai': 5.2.2 2434 | '@vitest/spy': 3.2.4 2435 | '@vitest/utils': 3.2.4 2436 | chai: 5.2.1 2437 | tinyrainbow: 2.0.0 2438 | 2439 | '@vitest/mocker@3.2.4(vite@7.0.5(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0))': 2440 | dependencies: 2441 | '@vitest/spy': 3.2.4 2442 | estree-walker: 3.0.3 2443 | magic-string: 0.30.17 2444 | optionalDependencies: 2445 | vite: 7.0.5(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0) 2446 | 2447 | '@vitest/pretty-format@3.2.4': 2448 | dependencies: 2449 | tinyrainbow: 2.0.0 2450 | 2451 | '@vitest/runner@3.2.4': 2452 | dependencies: 2453 | '@vitest/utils': 3.2.4 2454 | pathe: 2.0.3 2455 | strip-literal: 3.0.0 2456 | 2457 | '@vitest/snapshot@3.2.4': 2458 | dependencies: 2459 | '@vitest/pretty-format': 3.2.4 2460 | magic-string: 0.30.17 2461 | pathe: 2.0.3 2462 | 2463 | '@vitest/spy@3.2.4': 2464 | dependencies: 2465 | tinyspy: 4.0.3 2466 | 2467 | '@vitest/utils@3.2.4': 2468 | dependencies: 2469 | '@vitest/pretty-format': 3.2.4 2470 | loupe: 3.1.4 2471 | tinyrainbow: 2.0.0 2472 | 2473 | acorn@8.15.0: {} 2474 | 2475 | ansi-colors@4.1.3: {} 2476 | 2477 | ansi-escapes@7.0.0: 2478 | dependencies: 2479 | environment: 1.1.0 2480 | 2481 | ansi-regex@5.0.1: {} 2482 | 2483 | ansi-regex@6.1.0: {} 2484 | 2485 | ansi-styles@4.3.0: 2486 | dependencies: 2487 | color-convert: 2.0.1 2488 | 2489 | ansi-styles@6.2.1: {} 2490 | 2491 | ansis@4.2.0: {} 2492 | 2493 | any-promise@1.3.0: {} 2494 | 2495 | argparse@1.0.10: 2496 | dependencies: 2497 | sprintf-js: 1.0.3 2498 | 2499 | argparse@2.0.1: {} 2500 | 2501 | array-union@2.1.0: {} 2502 | 2503 | assertion-error@2.0.1: {} 2504 | 2505 | ast-kit@2.2.0: 2506 | dependencies: 2507 | '@babel/parser': 7.28.5 2508 | pathe: 2.0.3 2509 | 2510 | balanced-match@1.0.2: {} 2511 | 2512 | better-path-resolve@1.0.0: 2513 | dependencies: 2514 | is-windows: 1.0.2 2515 | 2516 | birpc@3.0.0: {} 2517 | 2518 | brace-expansion@2.0.2: 2519 | dependencies: 2520 | balanced-match: 1.0.2 2521 | 2522 | braces@3.0.3: 2523 | dependencies: 2524 | fill-range: 7.1.1 2525 | 2526 | bundle-require@5.1.0(esbuild@0.27.0): 2527 | dependencies: 2528 | esbuild: 0.27.0 2529 | load-tsconfig: 0.2.5 2530 | 2531 | cac@6.7.14: {} 2532 | 2533 | chai@5.2.1: 2534 | dependencies: 2535 | assertion-error: 2.0.1 2536 | check-error: 2.1.1 2537 | deep-eql: 5.0.2 2538 | loupe: 3.1.4 2539 | pathval: 2.0.1 2540 | 2541 | chalk@4.1.2: 2542 | dependencies: 2543 | ansi-styles: 4.3.0 2544 | supports-color: 7.2.0 2545 | 2546 | chalk@5.4.1: {} 2547 | 2548 | char-regex@1.0.2: {} 2549 | 2550 | chardet@2.1.1: {} 2551 | 2552 | check-error@2.1.1: {} 2553 | 2554 | chokidar@4.0.3: 2555 | dependencies: 2556 | readdirp: 4.1.2 2557 | 2558 | ci-info@3.9.0: {} 2559 | 2560 | cjs-module-lexer@1.4.3: {} 2561 | 2562 | cli-highlight@2.1.11: 2563 | dependencies: 2564 | chalk: 4.1.2 2565 | highlight.js: 10.7.3 2566 | mz: 2.7.0 2567 | parse5: 5.1.1 2568 | parse5-htmlparser2-tree-adapter: 6.0.1 2569 | yargs: 16.2.0 2570 | 2571 | cli-table3@0.6.5: 2572 | dependencies: 2573 | string-width: 4.2.3 2574 | optionalDependencies: 2575 | '@colors/colors': 1.5.0 2576 | 2577 | cliui@7.0.4: 2578 | dependencies: 2579 | string-width: 4.2.3 2580 | strip-ansi: 6.0.1 2581 | wrap-ansi: 7.0.0 2582 | 2583 | color-convert@2.0.1: 2584 | dependencies: 2585 | color-name: 1.1.4 2586 | 2587 | color-name@1.1.4: {} 2588 | 2589 | commander@10.0.1: {} 2590 | 2591 | commander@4.1.1: {} 2592 | 2593 | confbox@0.1.8: {} 2594 | 2595 | consola@3.4.2: {} 2596 | 2597 | cross-spawn@7.0.6: 2598 | dependencies: 2599 | path-key: 3.1.1 2600 | shebang-command: 2.0.0 2601 | which: 2.0.2 2602 | 2603 | dataloader@1.4.0: {} 2604 | 2605 | debug@4.4.1: 2606 | dependencies: 2607 | ms: 2.1.3 2608 | 2609 | debug@4.4.3: 2610 | dependencies: 2611 | ms: 2.1.3 2612 | 2613 | deep-eql@5.0.2: {} 2614 | 2615 | detect-indent@6.1.0: {} 2616 | 2617 | dir-glob@3.0.1: 2618 | dependencies: 2619 | path-type: 4.0.0 2620 | 2621 | dotenv@8.6.0: {} 2622 | 2623 | dts-resolver@2.1.3: {} 2624 | 2625 | eastasianwidth@0.2.0: {} 2626 | 2627 | emoji-regex@8.0.0: {} 2628 | 2629 | emoji-regex@9.2.2: {} 2630 | 2631 | emojilib@2.4.0: {} 2632 | 2633 | empathic@2.0.0: {} 2634 | 2635 | enquirer@2.4.1: 2636 | dependencies: 2637 | ansi-colors: 4.1.3 2638 | strip-ansi: 6.0.1 2639 | 2640 | environment@1.1.0: {} 2641 | 2642 | es-module-lexer@1.7.0: {} 2643 | 2644 | esbuild@0.25.7: 2645 | optionalDependencies: 2646 | '@esbuild/aix-ppc64': 0.25.7 2647 | '@esbuild/android-arm': 0.25.7 2648 | '@esbuild/android-arm64': 0.25.7 2649 | '@esbuild/android-x64': 0.25.7 2650 | '@esbuild/darwin-arm64': 0.25.7 2651 | '@esbuild/darwin-x64': 0.25.7 2652 | '@esbuild/freebsd-arm64': 0.25.7 2653 | '@esbuild/freebsd-x64': 0.25.7 2654 | '@esbuild/linux-arm': 0.25.7 2655 | '@esbuild/linux-arm64': 0.25.7 2656 | '@esbuild/linux-ia32': 0.25.7 2657 | '@esbuild/linux-loong64': 0.25.7 2658 | '@esbuild/linux-mips64el': 0.25.7 2659 | '@esbuild/linux-ppc64': 0.25.7 2660 | '@esbuild/linux-riscv64': 0.25.7 2661 | '@esbuild/linux-s390x': 0.25.7 2662 | '@esbuild/linux-x64': 0.25.7 2663 | '@esbuild/netbsd-arm64': 0.25.7 2664 | '@esbuild/netbsd-x64': 0.25.7 2665 | '@esbuild/openbsd-arm64': 0.25.7 2666 | '@esbuild/openbsd-x64': 0.25.7 2667 | '@esbuild/openharmony-arm64': 0.25.7 2668 | '@esbuild/sunos-x64': 0.25.7 2669 | '@esbuild/win32-arm64': 0.25.7 2670 | '@esbuild/win32-ia32': 0.25.7 2671 | '@esbuild/win32-x64': 0.25.7 2672 | 2673 | esbuild@0.27.0: 2674 | optionalDependencies: 2675 | '@esbuild/aix-ppc64': 0.27.0 2676 | '@esbuild/android-arm': 0.27.0 2677 | '@esbuild/android-arm64': 0.27.0 2678 | '@esbuild/android-x64': 0.27.0 2679 | '@esbuild/darwin-arm64': 0.27.0 2680 | '@esbuild/darwin-x64': 0.27.0 2681 | '@esbuild/freebsd-arm64': 0.27.0 2682 | '@esbuild/freebsd-x64': 0.27.0 2683 | '@esbuild/linux-arm': 0.27.0 2684 | '@esbuild/linux-arm64': 0.27.0 2685 | '@esbuild/linux-ia32': 0.27.0 2686 | '@esbuild/linux-loong64': 0.27.0 2687 | '@esbuild/linux-mips64el': 0.27.0 2688 | '@esbuild/linux-ppc64': 0.27.0 2689 | '@esbuild/linux-riscv64': 0.27.0 2690 | '@esbuild/linux-s390x': 0.27.0 2691 | '@esbuild/linux-x64': 0.27.0 2692 | '@esbuild/netbsd-arm64': 0.27.0 2693 | '@esbuild/netbsd-x64': 0.27.0 2694 | '@esbuild/openbsd-arm64': 0.27.0 2695 | '@esbuild/openbsd-x64': 0.27.0 2696 | '@esbuild/openharmony-arm64': 0.27.0 2697 | '@esbuild/sunos-x64': 0.27.0 2698 | '@esbuild/win32-arm64': 0.27.0 2699 | '@esbuild/win32-ia32': 0.27.0 2700 | '@esbuild/win32-x64': 0.27.0 2701 | 2702 | escalade@3.2.0: {} 2703 | 2704 | esprima@4.0.1: {} 2705 | 2706 | estree-walker@3.0.3: 2707 | dependencies: 2708 | '@types/estree': 1.0.8 2709 | 2710 | expect-type@1.2.2: {} 2711 | 2712 | extendable-error@0.1.7: {} 2713 | 2714 | fast-glob@3.3.3: 2715 | dependencies: 2716 | '@nodelib/fs.stat': 2.0.5 2717 | '@nodelib/fs.walk': 1.2.8 2718 | glob-parent: 5.1.2 2719 | merge2: 1.4.1 2720 | micromatch: 4.0.8 2721 | 2722 | fastq@1.19.1: 2723 | dependencies: 2724 | reusify: 1.1.0 2725 | 2726 | fdir@6.5.0(picomatch@4.0.3): 2727 | optionalDependencies: 2728 | picomatch: 4.0.3 2729 | 2730 | fflate@0.8.2: {} 2731 | 2732 | fill-range@7.1.1: 2733 | dependencies: 2734 | to-regex-range: 5.0.1 2735 | 2736 | find-up@4.1.0: 2737 | dependencies: 2738 | locate-path: 5.0.0 2739 | path-exists: 4.0.0 2740 | 2741 | fix-dts-default-cjs-exports@1.0.1: 2742 | dependencies: 2743 | magic-string: 0.30.21 2744 | mlly: 1.7.4 2745 | rollup: 4.45.1 2746 | 2747 | foreground-child@3.3.1: 2748 | dependencies: 2749 | cross-spawn: 7.0.6 2750 | signal-exit: 4.1.0 2751 | 2752 | fs-extra@7.0.1: 2753 | dependencies: 2754 | graceful-fs: 4.2.11 2755 | jsonfile: 4.0.0 2756 | universalify: 0.1.2 2757 | 2758 | fs-extra@8.1.0: 2759 | dependencies: 2760 | graceful-fs: 4.2.11 2761 | jsonfile: 4.0.0 2762 | universalify: 0.1.2 2763 | 2764 | fsevents@2.3.3: 2765 | optional: true 2766 | 2767 | get-caller-file@2.0.5: {} 2768 | 2769 | get-tsconfig@4.13.0: 2770 | dependencies: 2771 | resolve-pkg-maps: 1.0.0 2772 | 2773 | glob-parent@5.1.2: 2774 | dependencies: 2775 | is-glob: 4.0.3 2776 | 2777 | glob@10.4.5: 2778 | dependencies: 2779 | foreground-child: 3.3.1 2780 | jackspeak: 3.4.3 2781 | minimatch: 9.0.5 2782 | minipass: 7.1.2 2783 | package-json-from-dist: 1.0.1 2784 | path-scurry: 1.11.1 2785 | 2786 | globby@11.1.0: 2787 | dependencies: 2788 | array-union: 2.1.0 2789 | dir-glob: 3.0.1 2790 | fast-glob: 3.3.3 2791 | ignore: 5.3.2 2792 | merge2: 1.4.1 2793 | slash: 3.0.0 2794 | 2795 | graceful-fs@4.2.11: {} 2796 | 2797 | has-flag@4.0.0: {} 2798 | 2799 | highlight.js@10.7.3: {} 2800 | 2801 | hookable@5.5.3: {} 2802 | 2803 | human-id@4.1.1: {} 2804 | 2805 | iconv-lite@0.7.0: 2806 | dependencies: 2807 | safer-buffer: 2.1.2 2808 | 2809 | ignore@5.3.2: {} 2810 | 2811 | import-without-cache@0.2.2: {} 2812 | 2813 | is-extglob@2.1.1: {} 2814 | 2815 | is-fullwidth-code-point@3.0.0: {} 2816 | 2817 | is-glob@4.0.3: 2818 | dependencies: 2819 | is-extglob: 2.1.1 2820 | 2821 | is-number@7.0.0: {} 2822 | 2823 | is-subdir@1.2.0: 2824 | dependencies: 2825 | better-path-resolve: 1.0.0 2826 | 2827 | is-windows@1.0.2: {} 2828 | 2829 | isexe@2.0.0: {} 2830 | 2831 | jackspeak@3.4.3: 2832 | dependencies: 2833 | '@isaacs/cliui': 8.0.2 2834 | optionalDependencies: 2835 | '@pkgjs/parseargs': 0.11.0 2836 | 2837 | jiti@2.5.1: 2838 | optional: true 2839 | 2840 | joycon@3.1.1: {} 2841 | 2842 | js-tokens@9.0.1: {} 2843 | 2844 | js-yaml@3.14.1: 2845 | dependencies: 2846 | argparse: 1.0.10 2847 | esprima: 4.0.1 2848 | 2849 | js-yaml@4.1.1: 2850 | dependencies: 2851 | argparse: 2.0.1 2852 | 2853 | jsesc@3.1.0: {} 2854 | 2855 | jsonfile@4.0.0: 2856 | optionalDependencies: 2857 | graceful-fs: 4.2.11 2858 | 2859 | lilconfig@3.1.3: {} 2860 | 2861 | lines-and-columns@1.2.4: {} 2862 | 2863 | load-tsconfig@0.2.5: {} 2864 | 2865 | locate-path@5.0.0: 2866 | dependencies: 2867 | p-locate: 4.1.0 2868 | 2869 | lodash.startcase@4.4.0: {} 2870 | 2871 | loupe@3.1.4: {} 2872 | 2873 | lru-cache@10.4.3: {} 2874 | 2875 | lru-cache@11.1.0: {} 2876 | 2877 | magic-string@0.30.17: 2878 | dependencies: 2879 | '@jridgewell/sourcemap-codec': 1.5.4 2880 | 2881 | magic-string@0.30.21: 2882 | dependencies: 2883 | '@jridgewell/sourcemap-codec': 1.5.5 2884 | 2885 | marked-terminal@7.3.0(marked@9.1.6): 2886 | dependencies: 2887 | ansi-escapes: 7.0.0 2888 | ansi-regex: 6.1.0 2889 | chalk: 5.4.1 2890 | cli-highlight: 2.1.11 2891 | cli-table3: 0.6.5 2892 | marked: 9.1.6 2893 | node-emoji: 2.2.0 2894 | supports-hyperlinks: 3.2.0 2895 | 2896 | marked@9.1.6: {} 2897 | 2898 | merge2@1.4.1: {} 2899 | 2900 | micromatch@4.0.8: 2901 | dependencies: 2902 | braces: 3.0.3 2903 | picomatch: 2.3.1 2904 | 2905 | minimatch@9.0.5: 2906 | dependencies: 2907 | brace-expansion: 2.0.2 2908 | 2909 | minipass@7.1.2: {} 2910 | 2911 | mlly@1.7.4: 2912 | dependencies: 2913 | acorn: 8.15.0 2914 | pathe: 2.0.3 2915 | pkg-types: 1.3.1 2916 | ufo: 1.6.1 2917 | 2918 | mri@1.2.0: {} 2919 | 2920 | ms@2.1.3: {} 2921 | 2922 | mz@2.7.0: 2923 | dependencies: 2924 | any-promise: 1.3.0 2925 | object-assign: 4.1.1 2926 | thenify-all: 1.6.0 2927 | 2928 | nanoid@3.3.11: {} 2929 | 2930 | node-emoji@2.2.0: 2931 | dependencies: 2932 | '@sindresorhus/is': 4.6.0 2933 | char-regex: 1.0.2 2934 | emojilib: 2.4.0 2935 | skin-tone: 2.0.0 2936 | 2937 | node-fetch@2.7.0: 2938 | dependencies: 2939 | whatwg-url: 5.0.0 2940 | 2941 | object-assign@4.1.1: {} 2942 | 2943 | obug@2.1.1: {} 2944 | 2945 | outdent@0.5.0: {} 2946 | 2947 | p-filter@2.1.0: 2948 | dependencies: 2949 | p-map: 2.1.0 2950 | 2951 | p-limit@2.3.0: 2952 | dependencies: 2953 | p-try: 2.2.0 2954 | 2955 | p-locate@4.1.0: 2956 | dependencies: 2957 | p-limit: 2.3.0 2958 | 2959 | p-map@2.1.0: {} 2960 | 2961 | p-try@2.2.0: {} 2962 | 2963 | package-json-from-dist@1.0.1: {} 2964 | 2965 | package-manager-detector@0.2.11: 2966 | dependencies: 2967 | quansync: 0.2.11 2968 | 2969 | package-manager-detector@1.3.0: {} 2970 | 2971 | parse5-htmlparser2-tree-adapter@6.0.1: 2972 | dependencies: 2973 | parse5: 6.0.1 2974 | 2975 | parse5@5.1.1: {} 2976 | 2977 | parse5@6.0.1: {} 2978 | 2979 | path-exists@4.0.0: {} 2980 | 2981 | path-key@3.1.1: {} 2982 | 2983 | path-scurry@1.11.1: 2984 | dependencies: 2985 | lru-cache: 10.4.3 2986 | minipass: 7.1.2 2987 | 2988 | path-type@4.0.0: {} 2989 | 2990 | pathe@2.0.3: {} 2991 | 2992 | pathval@2.0.1: {} 2993 | 2994 | picocolors@1.1.1: {} 2995 | 2996 | picomatch@2.3.1: {} 2997 | 2998 | picomatch@4.0.3: {} 2999 | 3000 | pify@4.0.1: {} 3001 | 3002 | pirates@4.0.7: {} 3003 | 3004 | pkg-types@1.3.1: 3005 | dependencies: 3006 | confbox: 0.1.8 3007 | mlly: 1.7.4 3008 | pathe: 2.0.3 3009 | 3010 | postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0): 3011 | dependencies: 3012 | lilconfig: 3.1.3 3013 | optionalDependencies: 3014 | jiti: 2.5.1 3015 | postcss: 8.5.6 3016 | tsx: 4.21.0 3017 | 3018 | postcss@8.5.6: 3019 | dependencies: 3020 | nanoid: 3.3.11 3021 | picocolors: 1.1.1 3022 | source-map-js: 1.2.1 3023 | 3024 | prettier@2.8.8: {} 3025 | 3026 | prettier@3.7.4: {} 3027 | 3028 | process-ancestry@0.1.0: {} 3029 | 3030 | publint@0.3.15: 3031 | dependencies: 3032 | '@publint/pack': 0.1.2 3033 | package-manager-detector: 1.3.0 3034 | picocolors: 1.1.1 3035 | sade: 1.8.1 3036 | 3037 | quansync@0.2.11: {} 3038 | 3039 | queue-microtask@1.2.3: {} 3040 | 3041 | read-yaml-file@1.1.0: 3042 | dependencies: 3043 | graceful-fs: 4.2.11 3044 | js-yaml: 3.14.1 3045 | pify: 4.0.1 3046 | strip-bom: 3.0.0 3047 | 3048 | readdirp@4.1.2: {} 3049 | 3050 | require-directory@2.1.1: {} 3051 | 3052 | resolve-from@5.0.0: {} 3053 | 3054 | resolve-pkg-maps@1.0.0: {} 3055 | 3056 | reusify@1.1.0: {} 3057 | 3058 | rolldown-plugin-dts@0.18.2(rolldown@1.0.0-beta.53)(typescript@5.9.3): 3059 | dependencies: 3060 | '@babel/generator': 7.28.5 3061 | '@babel/parser': 7.28.5 3062 | '@babel/types': 7.28.5 3063 | ast-kit: 2.2.0 3064 | birpc: 3.0.0 3065 | dts-resolver: 2.1.3 3066 | get-tsconfig: 4.13.0 3067 | magic-string: 0.30.21 3068 | obug: 2.1.1 3069 | rolldown: 1.0.0-beta.53 3070 | optionalDependencies: 3071 | typescript: 5.9.3 3072 | transitivePeerDependencies: 3073 | - oxc-resolver 3074 | 3075 | rolldown@1.0.0-beta.53: 3076 | dependencies: 3077 | '@oxc-project/types': 0.101.0 3078 | '@rolldown/pluginutils': 1.0.0-beta.53 3079 | optionalDependencies: 3080 | '@rolldown/binding-android-arm64': 1.0.0-beta.53 3081 | '@rolldown/binding-darwin-arm64': 1.0.0-beta.53 3082 | '@rolldown/binding-darwin-x64': 1.0.0-beta.53 3083 | '@rolldown/binding-freebsd-x64': 1.0.0-beta.53 3084 | '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.53 3085 | '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.53 3086 | '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.53 3087 | '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.53 3088 | '@rolldown/binding-linux-x64-musl': 1.0.0-beta.53 3089 | '@rolldown/binding-openharmony-arm64': 1.0.0-beta.53 3090 | '@rolldown/binding-wasm32-wasi': 1.0.0-beta.53 3091 | '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.53 3092 | '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.53 3093 | 3094 | rollup@4.45.1: 3095 | dependencies: 3096 | '@types/estree': 1.0.8 3097 | optionalDependencies: 3098 | '@rollup/rollup-android-arm-eabi': 4.45.1 3099 | '@rollup/rollup-android-arm64': 4.45.1 3100 | '@rollup/rollup-darwin-arm64': 4.45.1 3101 | '@rollup/rollup-darwin-x64': 4.45.1 3102 | '@rollup/rollup-freebsd-arm64': 4.45.1 3103 | '@rollup/rollup-freebsd-x64': 4.45.1 3104 | '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 3105 | '@rollup/rollup-linux-arm-musleabihf': 4.45.1 3106 | '@rollup/rollup-linux-arm64-gnu': 4.45.1 3107 | '@rollup/rollup-linux-arm64-musl': 4.45.1 3108 | '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 3109 | '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 3110 | '@rollup/rollup-linux-riscv64-gnu': 4.45.1 3111 | '@rollup/rollup-linux-riscv64-musl': 4.45.1 3112 | '@rollup/rollup-linux-s390x-gnu': 4.45.1 3113 | '@rollup/rollup-linux-x64-gnu': 4.45.1 3114 | '@rollup/rollup-linux-x64-musl': 4.45.1 3115 | '@rollup/rollup-win32-arm64-msvc': 4.45.1 3116 | '@rollup/rollup-win32-ia32-msvc': 4.45.1 3117 | '@rollup/rollup-win32-x64-msvc': 4.45.1 3118 | fsevents: 2.3.3 3119 | 3120 | run-parallel@1.2.0: 3121 | dependencies: 3122 | queue-microtask: 1.2.3 3123 | 3124 | sade@1.8.1: 3125 | dependencies: 3126 | mri: 1.2.0 3127 | 3128 | safer-buffer@2.1.2: {} 3129 | 3130 | semver@7.7.2: {} 3131 | 3132 | semver@7.7.3: {} 3133 | 3134 | shebang-command@2.0.0: 3135 | dependencies: 3136 | shebang-regex: 3.0.0 3137 | 3138 | shebang-regex@3.0.0: {} 3139 | 3140 | siginfo@2.0.0: {} 3141 | 3142 | signal-exit@4.1.0: {} 3143 | 3144 | skin-tone@2.0.0: 3145 | dependencies: 3146 | unicode-emoji-modifier-base: 1.0.0 3147 | 3148 | slash@3.0.0: {} 3149 | 3150 | source-map-js@1.2.1: {} 3151 | 3152 | source-map@0.7.6: {} 3153 | 3154 | spawndamnit@3.0.1: 3155 | dependencies: 3156 | cross-spawn: 7.0.6 3157 | signal-exit: 4.1.0 3158 | 3159 | sprintf-js@1.0.3: {} 3160 | 3161 | stackback@0.0.2: {} 3162 | 3163 | std-env@3.9.0: {} 3164 | 3165 | string-width@4.2.3: 3166 | dependencies: 3167 | emoji-regex: 8.0.0 3168 | is-fullwidth-code-point: 3.0.0 3169 | strip-ansi: 6.0.1 3170 | 3171 | string-width@5.1.2: 3172 | dependencies: 3173 | eastasianwidth: 0.2.0 3174 | emoji-regex: 9.2.2 3175 | strip-ansi: 7.1.0 3176 | 3177 | strip-ansi@6.0.1: 3178 | dependencies: 3179 | ansi-regex: 5.0.1 3180 | 3181 | strip-ansi@7.1.0: 3182 | dependencies: 3183 | ansi-regex: 6.1.0 3184 | 3185 | strip-bom@3.0.0: {} 3186 | 3187 | strip-literal@3.0.0: 3188 | dependencies: 3189 | js-tokens: 9.0.1 3190 | 3191 | sucrase@3.35.0: 3192 | dependencies: 3193 | '@jridgewell/gen-mapping': 0.3.12 3194 | commander: 4.1.1 3195 | glob: 10.4.5 3196 | lines-and-columns: 1.2.4 3197 | mz: 2.7.0 3198 | pirates: 4.0.7 3199 | ts-interface-checker: 0.1.13 3200 | 3201 | supports-color@7.2.0: 3202 | dependencies: 3203 | has-flag: 4.0.0 3204 | 3205 | supports-hyperlinks@3.2.0: 3206 | dependencies: 3207 | has-flag: 4.0.0 3208 | supports-color: 7.2.0 3209 | 3210 | term-size@2.2.1: {} 3211 | 3212 | thenify-all@1.6.0: 3213 | dependencies: 3214 | thenify: 3.3.1 3215 | 3216 | thenify@3.3.1: 3217 | dependencies: 3218 | any-promise: 1.3.0 3219 | 3220 | tinybench@2.9.0: {} 3221 | 3222 | tinyexec@0.3.2: {} 3223 | 3224 | tinyexec@1.0.2: {} 3225 | 3226 | tinyglobby@0.2.14: 3227 | dependencies: 3228 | fdir: 6.5.0(picomatch@4.0.3) 3229 | picomatch: 4.0.3 3230 | 3231 | tinyglobby@0.2.15: 3232 | dependencies: 3233 | fdir: 6.5.0(picomatch@4.0.3) 3234 | picomatch: 4.0.3 3235 | 3236 | tinypool@1.1.1: {} 3237 | 3238 | tinyrainbow@2.0.0: {} 3239 | 3240 | tinyspy@4.0.3: {} 3241 | 3242 | to-regex-range@5.0.1: 3243 | dependencies: 3244 | is-number: 7.0.0 3245 | 3246 | tr46@0.0.3: {} 3247 | 3248 | tree-kill@1.2.2: {} 3249 | 3250 | ts-interface-checker@0.1.13: {} 3251 | 3252 | tsdown@0.17.0(@arethetypeswrong/core@0.18.2)(publint@0.3.15)(typescript@5.9.3): 3253 | dependencies: 3254 | ansis: 4.2.0 3255 | cac: 6.7.14 3256 | empathic: 2.0.0 3257 | hookable: 5.5.3 3258 | import-without-cache: 0.2.2 3259 | obug: 2.1.1 3260 | rolldown: 1.0.0-beta.53 3261 | rolldown-plugin-dts: 0.18.2(rolldown@1.0.0-beta.53)(typescript@5.9.3) 3262 | semver: 7.7.3 3263 | tinyexec: 1.0.2 3264 | tinyglobby: 0.2.15 3265 | tree-kill: 1.2.2 3266 | unconfig-core: 7.4.1 3267 | unrun: 0.2.16 3268 | optionalDependencies: 3269 | '@arethetypeswrong/core': 0.18.2 3270 | publint: 0.3.15 3271 | typescript: 5.9.3 3272 | transitivePeerDependencies: 3273 | - '@ts-macro/tsc' 3274 | - '@typescript/native-preview' 3275 | - oxc-resolver 3276 | - synckit 3277 | - vue-tsc 3278 | 3279 | tslib@2.8.1: 3280 | optional: true 3281 | 3282 | tsup@8.5.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3): 3283 | dependencies: 3284 | bundle-require: 5.1.0(esbuild@0.27.0) 3285 | cac: 6.7.14 3286 | chokidar: 4.0.3 3287 | consola: 3.4.2 3288 | debug: 4.4.3 3289 | esbuild: 0.27.0 3290 | fix-dts-default-cjs-exports: 1.0.1 3291 | joycon: 3.1.1 3292 | picocolors: 1.1.1 3293 | postcss-load-config: 6.0.1(jiti@2.5.1)(postcss@8.5.6)(tsx@4.21.0) 3294 | resolve-from: 5.0.0 3295 | rollup: 4.45.1 3296 | source-map: 0.7.6 3297 | sucrase: 3.35.0 3298 | tinyexec: 0.3.2 3299 | tinyglobby: 0.2.15 3300 | tree-kill: 1.2.2 3301 | optionalDependencies: 3302 | postcss: 8.5.6 3303 | typescript: 5.9.3 3304 | transitivePeerDependencies: 3305 | - jiti 3306 | - supports-color 3307 | - tsx 3308 | - yaml 3309 | 3310 | tsx@4.21.0: 3311 | dependencies: 3312 | esbuild: 0.27.0 3313 | get-tsconfig: 4.13.0 3314 | optionalDependencies: 3315 | fsevents: 2.3.3 3316 | 3317 | typescript@5.6.1-rc: {} 3318 | 3319 | typescript@5.9.3: {} 3320 | 3321 | ufo@1.6.1: {} 3322 | 3323 | unconfig-core@7.4.1: 3324 | dependencies: 3325 | '@quansync/fs': 0.1.5 3326 | quansync: 0.2.11 3327 | 3328 | undici-types@6.21.0: {} 3329 | 3330 | unicode-emoji-modifier-base@1.0.0: {} 3331 | 3332 | universalify@0.1.2: {} 3333 | 3334 | unrun@0.2.16: 3335 | dependencies: 3336 | '@oxc-project/runtime': 0.101.0 3337 | rolldown: 1.0.0-beta.53 3338 | 3339 | validate-npm-package-name@5.0.1: {} 3340 | 3341 | vite-node@3.2.4(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0): 3342 | dependencies: 3343 | cac: 6.7.14 3344 | debug: 4.4.3 3345 | es-module-lexer: 1.7.0 3346 | pathe: 2.0.3 3347 | vite: 7.0.5(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0) 3348 | transitivePeerDependencies: 3349 | - '@types/node' 3350 | - jiti 3351 | - less 3352 | - lightningcss 3353 | - sass 3354 | - sass-embedded 3355 | - stylus 3356 | - sugarss 3357 | - supports-color 3358 | - terser 3359 | - tsx 3360 | - yaml 3361 | 3362 | vite@7.0.5(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0): 3363 | dependencies: 3364 | esbuild: 0.25.7 3365 | fdir: 6.5.0(picomatch@4.0.3) 3366 | picomatch: 4.0.3 3367 | postcss: 8.5.6 3368 | rollup: 4.45.1 3369 | tinyglobby: 0.2.15 3370 | optionalDependencies: 3371 | '@types/node': 22.19.1 3372 | fsevents: 2.3.3 3373 | jiti: 2.5.1 3374 | tsx: 4.21.0 3375 | 3376 | vitest@3.2.4(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0): 3377 | dependencies: 3378 | '@types/chai': 5.2.2 3379 | '@vitest/expect': 3.2.4 3380 | '@vitest/mocker': 3.2.4(vite@7.0.5(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0)) 3381 | '@vitest/pretty-format': 3.2.4 3382 | '@vitest/runner': 3.2.4 3383 | '@vitest/snapshot': 3.2.4 3384 | '@vitest/spy': 3.2.4 3385 | '@vitest/utils': 3.2.4 3386 | chai: 5.2.1 3387 | debug: 4.4.1 3388 | expect-type: 1.2.2 3389 | magic-string: 0.30.17 3390 | pathe: 2.0.3 3391 | picomatch: 4.0.3 3392 | std-env: 3.9.0 3393 | tinybench: 2.9.0 3394 | tinyexec: 0.3.2 3395 | tinyglobby: 0.2.14 3396 | tinypool: 1.1.1 3397 | tinyrainbow: 2.0.0 3398 | vite: 7.0.5(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0) 3399 | vite-node: 3.2.4(@types/node@22.19.1)(jiti@2.5.1)(tsx@4.21.0) 3400 | why-is-node-running: 2.3.0 3401 | optionalDependencies: 3402 | '@types/node': 22.19.1 3403 | transitivePeerDependencies: 3404 | - jiti 3405 | - less 3406 | - lightningcss 3407 | - msw 3408 | - sass 3409 | - sass-embedded 3410 | - stylus 3411 | - sugarss 3412 | - supports-color 3413 | - terser 3414 | - tsx 3415 | - yaml 3416 | 3417 | webidl-conversions@3.0.1: {} 3418 | 3419 | whatwg-url@5.0.0: 3420 | dependencies: 3421 | tr46: 0.0.3 3422 | webidl-conversions: 3.0.1 3423 | 3424 | which@2.0.2: 3425 | dependencies: 3426 | isexe: 2.0.0 3427 | 3428 | why-is-node-running@2.3.0: 3429 | dependencies: 3430 | siginfo: 2.0.0 3431 | stackback: 0.0.2 3432 | 3433 | wrap-ansi@7.0.0: 3434 | dependencies: 3435 | ansi-styles: 4.3.0 3436 | string-width: 4.2.3 3437 | strip-ansi: 6.0.1 3438 | 3439 | wrap-ansi@8.1.0: 3440 | dependencies: 3441 | ansi-styles: 6.2.1 3442 | string-width: 5.1.2 3443 | strip-ansi: 7.1.0 3444 | 3445 | y18n@5.0.8: {} 3446 | 3447 | yargs-parser@20.2.9: {} 3448 | 3449 | yargs@16.2.0: 3450 | dependencies: 3451 | cliui: 7.0.4 3452 | escalade: 3.2.0 3453 | get-caller-file: 2.0.5 3454 | require-directory: 2.1.1 3455 | string-width: 4.2.3 3456 | y18n: 5.0.8 3457 | yargs-parser: 20.2.9 3458 | --------------------------------------------------------------------------------