diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..dbbb94b4
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,29 @@
+name: CI
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+
+jobs:
+ test:
+ name: test (${{ matrix.os }})
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-latest, macos-latest, windows-latest]
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: pnpm
+ - run: pnpm install --frozen-lockfile
+ - run: pnpm run release:check-assets
+ - run: pnpm test
+ - run: pnpm run compile:cli
+ - run: pnpm run benchmark:smoke
+ - run: pnpm run eval:smoke
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..9df92d3f
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,28 @@
+name: Release
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+jobs:
+ package:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: pnpm
+ - run: pnpm install --frozen-lockfile
+ - run: pnpm run compile
+ - run: pnpm exec vsce package
+ - name: Generate release notes
+ run: node dist/cli.js changelog > release-notes.md
+ - uses: softprops/action-gh-release@v2
+ with:
+ body_path: release-notes.md
+ files: '*.vsix'
diff --git a/.gitignore b/.gitignore
index 4a2cad7b..4c331ae6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,4 +8,24 @@ dist/
.thunder V2/
.mitii
project-goals/
-mitii-debug-logs/
\ No newline at end of file
+mitii-debug-logs/
+
+# Benchmark / eval runtime (local generation and reports)
+tools/benchmark/tasks/eval/generated/
+tools/benchmark/tasks/eval/generated-smoke/
+tools/benchmark/results/
+
+# Fixture sandboxes — deps, builds, Mitii session state
+tools/benchmark/fixtures/**/.mitii/
+tools/benchmark/fixtures/**/.next/
+tools/benchmark/fixtures/**/dist/
+tools/benchmark/fixtures/**/node_modules/
+tools/benchmark/fixtures/**/package-lock.json
+tools/benchmark/fixtures/**/pnpm-lock.yaml
+
+# Agent-created during eval (not part of pinned fixture baseline)
+tools/benchmark/fixtures/**/docs/
+tools/benchmark/fixtures/**/index.html
+tools/benchmark/fixtures/**/src/index.css
+tools/benchmark/fixtures/**/src/main.ts
+tools/benchmark/fixtures/**/src/main.tsx
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 00000000..79587cd2
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,3 @@
+# vsce runs `npm list` to resolve production dependencies; pnpm's default
+# isolated linker hoists transitive packages that npm treats as extraneous.
+node-linker=hoisted
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index f1a1e065..72428fa5 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -11,7 +11,7 @@
{
"label": "thunder: rebuild native",
"type": "shell",
- "command": "npm run rebuild:native",
+ "command": "pnpm run rebuild:native",
"problemMatcher": [],
"presentation": { "reveal": "always", "panel": "shared" }
},
diff --git a/.vscodeignore b/.vscodeignore
index e6d12c89..377c65ae 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -18,6 +18,7 @@ scripts/**
.gitignore
.vscodeignore
package-lock.json
+pnpm-lock.yaml
tsconfig.json
vite.config.ts
vitest.config.ts
@@ -26,4 +27,5 @@ vitest.config.ts
!dist/**
!media/**
-!bundled-skills/**
+
+tools/benchmark/**
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..24b97afc
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,31 @@
+# Changelog
+
+## [Unreleased]
+
+## [2.7.17] - 2026-07-02
+
+### Added
+- Implemented the backlog end-to-end across the repo. What changed: Added diff-first micro-task routing for commit messages, changelog entries, and release notes. Unified SCM commit message generation through the new micro-task executor. Added changelog/release generation core, VS Code commands, CHANGELOG.md, and CI release workflow. Added one-click audit pack export with zip generation, redaction report, manifest, tool audit, and approvals. Improved reasoning stream UI: live reveal, no 1200-char hard cap, configurable visibility/preview size. Added enterprise settings/docs for local-only providers, audit redaction, procurement/security/compliance. Added Windows path hardening, Windows CI matrix, and Windows smoke checklist. Added CLI MVP for changelog, prepare-release, and export-audit. Updated README with the new enterprise, audit, release, CLI, and reasoning features. Added focused tests for all new core implementations. (8a00fd537ef2)
+- add AWS Bedrock, Azure OpenAI, and OpenRouter provider support (cac73bc1a9a7)
+- **modes:** add pilot and enterprise depth levels to Ask, Plan, and Act modes (ca3d2daf6375)
+- **orchestrator:** add planning clarification question flow with resume support (0d052937fb8e)
+- auto-discover verify commands, add retry with install, cap sequential-thinking calls (6786a1d904fe)
+- improve plan step UI, add skipped tool handling, and strip channel markers (d65a81752037)
+- add GitHub token setting and improve issue comment pagination (7c8e53d68036)
+- Implemented the core folder structure migration safely. (017ddd4d0766)
+- auto-fetch GitHub issue context when user pastes an issue URL (1f0b368dfb50)
+- add retrieval timing metrics, repeated tool failure guard, and Act mode MCP exclusions (dda2e8f38881)
+- add Act orchestration boundary for Agent mode execution (0620f2e55902)
+- **docs:** update README with enhanced project description, features, and usage instructions (920bf12f6f38)
+- **plan:** add skill-aware planning pipeline with phased PlanPanel UI (e23f19d9e929)
+- bundle skill playbooks inside extension and auto-install on workspace init (07a83238eb87)
+- add planDepth setting and skill frontmatter parsing (d77ed8f6062f)
+- **plan-mode:** add Plan mode orchestration with intent routing and read-only grounding (14372af57d12)
+- **core:** add file read caching and parallelize read files tool (95dee1dbc8ac)
+- **scm:** add AI-generated commit messages and ask-mode depth controls (8ea94111e43f)
+- **ask:** add structured ask mode with intent routing, scope resolution, and impact analysis (aa2660f9ef3d)
+
+### Changed
+- add project-goals entry to .gitignore configuration (81ecf0da086c)
+- Merge branch 'main' of https://github.com/codewithshinde/thunder-ai-agent (957469705bc4)
+- **tools:** remove unused resolveToolDirPath and related imports (44a3dd3d0a8c)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6a8683cc..17fd4fff 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -20,7 +20,7 @@ For bugs and feature ideas, open an [issue](https://github.com/codewithshinde/th
|------|---------|
| VS Code | 1.85+ (or Cursor, with native rebuild noted below) |
| Node.js | 20+ |
-| npm | 9+ (ships with Node 20) |
+| pnpm | 10.13+ |
| git | any recent version |
Optional but useful for full feature coverage:
@@ -36,12 +36,12 @@ Optional but useful for full feature coverage:
```bash
git clone https://github.com/codewithshinde/thunder-ai-agent.git
cd thunder-ai-agent
-npm install
-npm run rebuild:native # required for better-sqlite3 in VS Code
-npm run compile
+pnpm install
+pnpm run rebuild:native # required for better-sqlite3 in VS Code
+pnpm run compile
```
-Git hooks are installed automatically via `npm install` → `prepare` → `scripts/install-git-hooks.mjs`. The pre-commit hook stages version bumps from `scripts/bump-version.mjs`.
+Git hooks are installed automatically via `pnpm install` -> `prepare` -> `scripts/install-git-hooks.mjs`. The pre-commit hook stages version bumps from `scripts/bump-version.mjs`.
### Launch the extension
@@ -53,7 +53,7 @@ Git hooks are installed automatically via `npm install` → `prepare` → `scrip
### Watch mode (day-to-day dev)
```bash
-npm run watch
+pnpm run watch
```
Rebuilds the extension bundle and webview on save. Reload the Extension Development Host window after extension-side changes (`Ctrl/Cmd+R` in the host window, or restart the debug session).
@@ -63,7 +63,7 @@ Rebuilds the extension bundle and webview on save. Reload the Extension Developm
## Project layout
```
-thunder-ai-agent/
+mitii-ai-agent/
├── src/
│ ├── extension.ts # VS Code entry point
│ ├── core/ # Agent logic (editor-agnostic)
@@ -89,7 +89,9 @@ thunder-ai-agent/
│ └── src/
├── test/ # Vitest tests
├── scripts/ # Build, audit, hook helpers
+├── tools/benchmark/ # @mitii/benchmark — fixtures, enterprise + eval harness
├── dist/ # Compiled output (gitignored)
+├── pnpm-workspace.yaml # Workspace: tools/*
└── package.json # Extension manifest + settings schema
```
@@ -100,7 +102,20 @@ thunder-ai-agent/
Scaffolds may exist at `mitii-docs/` and `mitii-website/` in this tree while you split them out. Brand constants: `src/shared/brand.ts` (sync with each repo's `brand.ts`).
-**Rule of thumb:** keep VS Code APIs out of `src/core/`. Core should be testable without launching an editor. Put platform glue in `src/vscode/`.
+**Rule of thumb:** keep VS Code APIs out of `src/core/`. Core should be testable without launching an editor. Put platform glue in `src/vscode/`. Keep benchmark and eval in `tools/benchmark/` — they are not extension runtime code.
+
+### Benchmark and eval
+
+```bash
+pnpm run compile:cli
+pnpm run benchmark:smoke
+pnpm run eval:preflight # before real-runtime eval
+pnpm run eval:generate
+pnpm run eval:standard -- --provider openai-compatible \
+ --base-url http://localhost:11434/v1 --model qwen3-coder:30b --limit 50
+```
+
+See [tools/benchmark/README.md](tools/benchmark/README.md) for sharded runs, Ollama matrix, and Inspect AI.
---
@@ -109,23 +124,23 @@ Scaffolds may exist at `mitii-docs/` and `mitii-website/` in this tree while you
### Run tests
```bash
-npm run rebuild:node # if better-sqlite3 fails under vitest
-npm test # full suite
-npm run test:watch # watch mode
-npm run smoke # smoke tests only
+pnpm run rebuild:node # if better-sqlite3 fails under vitest
+pnpm test # full suite
+pnpm run test:watch # watch mode
+pnpm run smoke # smoke tests only
```
### Typecheck
```bash
-npm run lint # tsc --noEmit
+pnpm run lint # tsc --noEmit
```
### Build a VSIX
```bash
-npm run compile
-npm run package # outputs thunder-ai-agent-.vsix
+pnpm run compile
+pnpm run package # outputs thunder-ai-agent-.vsix
```
Install locally: **Extensions → ... → Install from VSIX**.
@@ -134,20 +149,20 @@ Install locally: **Extensions → ... → Install from VSIX**.
| Scenario | Command |
|----------|---------|
-| F5 / VS Code extension host | `npm run rebuild:native` |
-| Cursor extension host | `THUNDER_EDITOR=cursor npm run rebuild:native` |
-| Local vitest | `npm run rebuild:node` |
-| Both | `npm run rebuild:all` |
+| F5 / VS Code extension host | `pnpm run rebuild:native` |
+| Cursor extension host | `THUNDER_EDITOR=cursor pnpm run rebuild:native` |
+| Local vitest | `pnpm run rebuild:node` |
+| Both | `pnpm run rebuild:all` |
If SQLite throws on startup, this is almost always the fix.
### Audit scripts
```bash
-npm run audit:dependencies
-npm run audit:dead-code
-npm run check:circular-deps
-npm run audit:engines
+pnpm run audit:dependencies
+pnpm run audit:dead-code
+pnpm run check:circular-deps
+pnpm run audit:engines
```
These are useful before large refactors. Not required on every PR, but run them if you touch imports or dependencies.
@@ -174,7 +189,7 @@ The pre-commit hook may stage a version bump in `package.json`. Include that in
### Code style
-- TypeScript strict mode — `npm run lint` must pass
+- TypeScript strict mode - `pnpm run lint` must pass
- Match surrounding patterns: no drive-by refactors in unrelated files
- Logging via `createLogger('ComponentName')` from `src/core/telemetry/Logger.ts`, not raw `console.log`
- New VS Code settings go in `package.json` contributes **and** `src/core/config/schema.ts` **and** `src/core/config/vscodeSettings.ts`
@@ -200,7 +215,7 @@ The pre-commit hook may stage a version bump in `package.json`. Include that in
1. Fork and branch from `main`
2. Make your change; keep the diff focused
-3. Run `npm run lint` and `npm test`
+3. Run `pnpm run lint` and `pnpm test`
4. Manually smoke-test in the Extension Development Host if you touched agent behavior or UI
5. Open a PR against `main` with:
- What changed and why (2–4 sentences is fine)
diff --git a/README.md b/README.md
index 93032c56..b5e186d0 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
-
+
@@ -31,7 +31,7 @@
Mitii is built for developers who want an AI agent that understands the repo before changing it. It runs inside VS Code, indexes your workspace locally, plans work before execution, asks for approval when risk is involved, and keeps a useful trail of memory, checkpoints, logs, and task plans.
-Use it with Ollama, LM Studio, OpenAI-compatible endpoints, OpenAI, Anthropic, Gemini, DeepSeek, Cursor-compatible APIs, Codex-compatible APIs, or the Echo provider for UI testing.
+Use it with Ollama, LM Studio, OpenAI-compatible endpoints, native OpenRouter, Azure OpenAI, AWS Bedrock, OpenAI, Anthropic, Gemini, DeepSeek, Cursor-compatible APIs, Codex-compatible APIs, or the Echo provider for UI testing.
**Docs:** [docs.mitii.dev](https://docs.mitii.dev)
**Website:** [mitii.dev](https://mitii.dev)
@@ -54,6 +54,7 @@ Most coding agents are powerful, but they often make one of these tradeoffs:
| Tool limits | External tools are hard to connect or audit | Supports MCP servers while still routing tools through Mitii safety policy |
| Repeated workflows | Teams paste the same instructions into every chat | Supports project rules and workspace skills through `SKILL.md` files |
| Issue-to-fix handoff | Bug reports live in GitHub while the code lives in the editor | Detects GitHub issue URLs, fetches structured issue context, and routes Agent mode through the verified bugfix path |
+| Procurement evidence | Security reviewers need logs, approvals, and data-flow answers | Exports an audit pack zip and ships enterprise security/compliance docs |
Mitii is not just a chat panel. It is a workspace-aware agent runtime for real engineering work.
@@ -73,6 +74,7 @@ The strongest thing Mitii provides is a practical balance: **deep local context
| GitHub issue ingestion | Paste a GitHub issue URL and Mitii turns title, body, labels, and comments into structured task context |
| Built for long tasks | Auto-continue, persisted task state, context compaction, and session history reduce restart pain |
| Model freedom | Use local models for privacy, cloud models for capability, or different models for Plan, Act, and research |
+| Diff-first micro-tasks | Commit messages, changelog entries, and release notes use minimal Git context instead of full agent routing |
---
@@ -148,9 +150,9 @@ Paste a GitHub issue URL in Agent mode, for example:
Fix https://github.com/owner/repo/issues/123
```
-Mitii detects `github.com/{owner}/{repo}/issues/{number}`, fetches the issue through the GitHub REST API when network access is allowed, and injects a structured context block containing the title, body, state, labels, assignees, milestone, and recent comments. The Act router treats the issue signal as a verified bugfix workflow, so the agent investigates the open workspace, makes scoped edits, and runs relevant verification.
+Mitii detects `github.com/{owner}/{repo}/issues/{number}`, fetches the issue through the GitHub REST API when network access is allowed, and injects a structured context block containing the title, body, state, labels, assignees, milestone, and newest comments. When the fetch succeeds, the Act router treats the issue signal as a verified bugfix workflow, so the agent investigates the open workspace, makes scoped edits, and runs relevant verification.
-If the active safety preset disables network access, Mitii still injects a lightweight reference block with the repository and issue number instead of scraping GitHub HTML. Private repository support uses a GitHub token stored in VS Code SecretStorage under `thunder.github.token` by default; the setting stores only the secret key name, not the token value.
+If the active safety preset disables network access or GitHub cannot be reached, Mitii still injects a lightweight reference block with the repository and issue number instead of scraping GitHub HTML. Private repository support uses a GitHub token stored in VS Code SecretStorage under `thunder.github.token` by default; enter or replace the token from **Settings → Integrations → GitHub issues**. The VS Code setting stores only the secret key name, not the token value.
### 4. Safer Tool Execution
@@ -202,6 +204,21 @@ Mitii stores useful state locally so every serious task does not start from zero
Post-task memory extraction can capture useful observations after completed work, so future sessions can reuse decisions without asking you to repeat context.
+Audit review is available through `Mitii: Export Audit Pack`. The zip contains sanitized `session.jsonl`, `summary.md`, `manifest.json`, `tool-audit.json`, `approvals.json`, `redaction-report.json`, and `signature.json` with SHA-256 hashes for tamper detection. Set `MITII_AUDIT_SIGNING_KEY` to add HMAC signing, then verify archives with `mitii verify-audit `.
+
+### Release Automation
+
+Mitii includes release hygiene commands:
+
+| Command | Output |
+|---|---|
+| `Mitii: Generate Changelog Entry` | Preview a Keep a Changelog-style entry from Conventional Commits |
+| `Mitii: Prepare Release` | Update `CHANGELOG.md` and write `.mitii/release-notes.md` |
+| `mitii changelog` | Headless changelog entry for CI/scripts |
+| `mitii prepare-release` | Headless changelog + release-notes generation |
+| `mitii export-audit` | Headless audit pack export from JSONL logs |
+| `mitii verify-audit` | Verify audit pack signatures and file hashes |
+
### 7. Skills And Project Playbooks
Mitii can load reusable workflow instructions from `SKILL.md` files. Bundled skills are copied into each workspace under `.mitii/skills/` on first init, and teams can add their own skills for code review, planning, debugging, testing, performance work, release flow, and cleanup.
@@ -244,6 +261,26 @@ The sidebar is a React webview with:
| Indexing status | Know when the workspace brain is ready |
| Context warnings | See when context may be thin or over budget |
+Reasoning deltas from supported providers stream live in the chat UI. Use `thunder.ui.showReasoning` and `thunder.ui.reasoningPreviewMaxChars` to control visibility and inline preview size.
+
+Mitii also detects common model capabilities from the provider/model name, including vision and reasoning support. Enterprise teams can override detection with `thunder.provider.supportsVision` and `thunder.provider.supportsReasoning` when routing through private or custom OpenAI-compatible gateways.
+
+## Enterprise Readiness
+
+Enterprise review materials live in [docs/enterprise](docs/enterprise/README.md). The pack covers data flow, provider boundaries, procurement FAQs, compliance mapping, Windows support, and auditability.
+
+| Control | Setting or command |
+|---|---|
+| Route narrow Git/release tasks through minimal context | `thunder.context.microTaskRoutingEnabled` |
+| Require local model providers | `thunder.enterprise.localProvidersOnly` |
+| Strip file contents from exported audit packs | `thunder.enterprise.stripFileContentsFromAuditPacks` |
+| Auto-export audit packs after agent turns | `thunder.enterprise.autoExportAuditPackOnSessionEnd` |
+| Verify audit pack integrity | `mitii verify-audit ` |
+| Disable session logging | `thunder.telemetry.sessionLogging` |
+| Stream sanitized SIEM events | `thunder.telemetry.webhookUrl` and optional `thunder.telemetry.webhookSecret` |
+| Export audit evidence | `Mitii: Export Audit Pack` |
+| Windows smoke checklist | [docs/qa/WINDOWS_SMOKE.md](docs/qa/WINDOWS_SMOKE.md) |
+
---
## Analysis: Why This Design Works
@@ -323,6 +360,7 @@ This section is written carefully. Models and products change fast. Mitii does n
| Long-running tasks | Auto-continue, task-state persistence, session history, and wake-up checkpoints |
| Teams that need guardrails | Approval modes, autonomy presets, untrusted workspace blocking, dangerous-command blocking |
| Local model setups | Ollama and OpenAI-compatible providers are first-class |
+| Cloud routing | Native OpenRouter headers/reasoning, Azure OpenAI deployment URLs, and AWS Bedrock Converse support are built in |
| Custom internal tools | MCP support without skipping Mitii's policy layer |
| VS Code users | No need to move to a separate AI editor |
@@ -364,21 +402,20 @@ This is why Mitii focuses on visible plans, local logs, checkpoints, and verific
|---|---|
| VS Code | 1.85+ |
| Node.js | 20+ |
-| npm | 9+ |
+| pnpm | 10.13+ |
```bash
-git clone https://github.com/codewithshinde/thunder-ai-agent.git
-cd thunder-ai-agent
-npm install
-npm run compile
+git clone https://github.com/codewithshinde/mitii-ai-agent.git
+cd mitii-ai-agent
+pnpm run setup
```
-Press **F5** in VS Code to launch the Extension Development Host. Open a folder, wait for the indexing status in the Mitii sidebar, then start chatting.
+`pnpm run setup` installs dependencies, compiles the extension and webview, rebuilds native modules for VS Code on macOS, and rebuilds local Node native modules for tests. Press **F5** in VS Code to launch the Extension Development Host. Open a folder, wait for the indexing status in the Mitii sidebar, then start chatting.
### Connect A Model
1. Open **Settings** in the Mitii sidebar, or VS Code settings under `Mitii AI Agent`.
-2. Set `thunder.provider.type` to `openai-compatible`.
+2. Set `thunder.provider.type` to `openai-compatible`, `openrouter`, `azure-openai`, or another supported provider.
3. Point `thunder.provider.baseUrl` at your endpoint. The default is `http://localhost:11434/v1` for Ollama.
4. Set `thunder.provider.model`. The default is `qwen3-coder:30b`.
@@ -389,7 +426,10 @@ Use the Echo provider for UI testing without an LLM. API keys are stored through
| Provider | Default model | Notes |
|---|---|---|
| OpenAI-compatible | `qwen3-coder:30b` | Ollama, LM Studio, vLLM, local gateways |
+| OpenRouter | `anthropic/claude-sonnet-4` | Native headers and reasoning deltas |
| OpenAI | `gpt-4.1` | API key required |
+| Azure OpenAI | `your-deployment-name` | API key required; model field is the deployment name; uses `thunder.provider.apiVersion` |
+| AWS Bedrock | `anthropic.claude-3-5-sonnet-20240620-v1:0` | Uses AWS default credential chain and `thunder.provider.region`; tool calls disabled by default |
| Anthropic | `claude-sonnet-4-20250514` | API key required |
| Gemini | `gemini-2.0-flash` | API key required |
| DeepSeek | `deepseek-chat` | API key required |
@@ -422,6 +462,8 @@ Use the Echo provider for UI testing without an LLM. API keys are stored through
"thunder.provider.type": "openai-compatible",
"thunder.provider.baseUrl": "http://localhost:11434/v1",
"thunder.provider.model": "qwen3-coder:30b",
+ "thunder.provider.apiVersion": "2024-10-21",
+ "thunder.provider.region": "us-east-1",
"thunder.provider.contextWindow": 8192,
"thunder.safety.autonomyPreset": "guided",
"thunder.safety.approvalMode": "review_all",
@@ -435,7 +477,9 @@ Use the Echo provider for UI testing without an LLM. API keys are stored through
"thunder.github.issueCommentLimit": 8,
"thunder.github.tokenRef": "thunder.github.token",
"thunder.agent.verifyCommands": ["npm run lint", "npm test"],
- "thunder.telemetry.sessionLogging": true
+ "thunder.telemetry.sessionLogging": true,
+ "thunder.telemetry.webhookUrl": "",
+ "thunder.enterprise.autoExportAuditPackOnSessionEnd": false
}
```
@@ -509,13 +553,45 @@ Mitii does not send your data to a Mitii server. If you use a cloud model provid
See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, project layout, testing, and pull request guidelines.
+### Repository layout
+
+```text
+mitii-ai-agent/ # VS Code extension (ships as .vsix)
+├── src/ # Extension + core agent runtime
+├── scripts/ # Build, release, and audit helpers
+├── test/ # Vitest suite
+├── tools/benchmark/ # @mitii/benchmark — benchmark + eval (not in VSIX)
+│ ├── fixtures/ # Pinned sample repos
+│ ├── tasks/enterprise/ # ~26 fixed benchmark tasks
+│ └── tasks/eval/ # Generated 500–1000 task shards
+├── pnpm-workspace.yaml # tools/* workspace packages
+└── package.json
+```
+
+Benchmark and eval live in `tools/benchmark/` as a private pnpm workspace package. They call the compiled CLI (`dist/cli.js`) and are excluded from the published extension. See [tools/benchmark/README.md](tools/benchmark/README.md) for full run instructions.
+
+```bash
+pnpm run watch # extension + webview hot rebuild
+pnpm run setup # one-click local dev setup
+pnpm run setup:cursor # setup using Cursor Electron runtime on macOS
+pnpm run test # unit tests
+pnpm run lint # typecheck
+pnpm run smoke # smoke tests only
+pnpm run package # build .vsix
+pnpm run package:preflight # lint, rebuild, test, package
+```
+
+### Benchmark and eval
+
```bash
-npm run watch # extension + webview hot rebuild
-npm run test # unit tests
-npm run lint # typecheck
-npm run smoke # smoke tests
-npm run package # build .vsix
-npm run package:preflight # lint, rebuild, test, package
+pnpm run compile:cli
+pnpm run benchmark:smoke # enterprise benchmark (3 tasks, echo/stub)
+pnpm run benchmark:all # all enterprise tasks, real runtime
+pnpm run eval:preflight # verifies better-sqlite3 for Node (run rebuild:node first)
+pnpm run eval:generate # generate 500 standard eval tasks
+pnpm run eval:smoke # eval wiring check (CI)
+pnpm run eval:standard -- --provider openai-compatible \
+ --base-url http://localhost:11434/v1 --model qwen3-coder:30b --limit 50
```
### Native Rebuilds
@@ -524,29 +600,41 @@ VS Code and Cursor ship their own Electron runtime, so native modules may need a
| Scenario | Command |
|---|---|
-| VS Code Extension Development Host | `npm run rebuild:native` |
-| Cursor Extension Development Host | `THUNDER_EDITOR=cursor npm run rebuild:native` |
-| Local Vitest runs | `npm run rebuild:node` |
-| Everything | `npm run rebuild:all` |
+| VS Code Extension Development Host | `pnpm run rebuild:native` |
+| Cursor Extension Development Host | `THUNDER_EDITOR=cursor pnpm run rebuild:native` |
+| Local Vitest runs | `pnpm run rebuild:node` |
+| Everything | `pnpm run rebuild:all` |
+
+On Linux and Windows, Electron version auto-detection is not available. Set the version explicitly:
+
+```bash
+THUNDER_ELECTRON_VERSION= pnpm run rebuild:native
+```
+
+For example, use the Electron version shipped by your VS Code or Cursor build.
### Useful Audit Scripts
```bash
-npm run audit:dependencies
-npm run audit:dead-code
-npm run check:circular-deps
-npm run audit:engines
-npm run find:console
-npm run find:inline-styles
+pnpm run audit:dependencies
+pnpm run audit:dead-code
+pnpm run check:circular-deps
+pnpm run audit:engines
+pnpm run find:console
+pnpm run find:inline-styles
+pnpm run check:missing-types
+pnpm run env:sync
```
+Bundled skills orchestrate these scripts instead of replacing them. `audit-cleanup` runs dependency/dead-code/cycle/engine audits, `code-smells-and-tech-debt` covers console logs, inline styles, missing types, and targeted lint checks, and `environment-and-secrets` compares env templates without exposing secret values.
+
---
## Troubleshooting
| Problem | Fix |
|---|---|
-| `better-sqlite3` fails to load | Run `npm run rebuild:native` for VS Code or `THUNDER_EDITOR=cursor npm run rebuild:native` for Cursor |
+| `better-sqlite3` fails to load | Run `pnpm run rebuild:native` for VS Code or `THUNDER_EDITOR=cursor pnpm run rebuild:native` for Cursor |
| Provider errors | Check base URL, model name, and API key. Try Echo provider to isolate UI issues |
| Indexing feels empty | Check `.gitignore`, `.mitiiignore`, workspace write access, then run `Mitii: Index Workspace` |
| Context feels thin | Wait for indexing, enable vectors, check context warnings, and mention important files directly |
@@ -612,8 +700,8 @@ Contributions are welcome. Good first areas include docs, tests, provider polish
Before a pull request:
```bash
-npm run lint
-npm test
+pnpm run lint
+pnpm test
```
For bigger agent or UI changes, also smoke-test in the Extension Development Host with **F5**.
diff --git a/bin/mitii.js b/bin/mitii.js
new file mode 100755
index 00000000..dd612181
--- /dev/null
+++ b/bin/mitii.js
@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+require('../dist/cli.js');
+
diff --git a/docs/enterprise/COMPLIANCE.md b/docs/enterprise/COMPLIANCE.md
new file mode 100644
index 00000000..e39c6a72
--- /dev/null
+++ b/docs/enterprise/COMPLIANCE.md
@@ -0,0 +1,19 @@
+# Compliance Mapping
+
+## SOC 2 Readiness
+
+| Area | Current Capability | Roadmap |
+|---|---|---|
+| Access control | VS Code workspace trust, approval gates, local SecretStorage | Central policy distribution |
+| Change audit | JSONL session logs, tool audit log, audit pack export | Signed audit archives |
+| Data minimization | Micro-task routing for commit/changelog/release prompts | Per-team prompt retention policy |
+| Incident review | Session summaries, timing events, errors, tool calls | SIEM forwarding |
+
+## GDPR Considerations
+
+Mitii does not require a Mitii-hosted cloud service. Personal data exposure depends on the selected LLM provider and the code or prompts a user chooses to send.
+
+## Audit Trail
+
+Audit packs are designed for compliance review. They include event timelines, model metadata, tool calls, approval state, and redaction counts without requiring reviewers to inspect source code.
+
diff --git a/docs/enterprise/MITII_ENTERPRISE_OVERVIEW.md b/docs/enterprise/MITII_ENTERPRISE_OVERVIEW.md
new file mode 100644
index 00000000..21fcec4d
--- /dev/null
+++ b/docs/enterprise/MITII_ENTERPRISE_OVERVIEW.md
@@ -0,0 +1,16 @@
+# Mitii Enterprise Overview
+
+Mitii is a local-first AI coding agent for VS Code. It indexes the workspace locally, retrieves focused context, plans higher-risk work, and gates writes or shell commands through approval policy.
+
+## Why Enterprises Evaluate Mitii
+
+- Local workspace index, memory, logs, plans, and checkpoints.
+- Provider freedom across local and cloud models.
+- Enterprise toggles for local-only providers and audit pack redaction.
+- One-click audit pack export for compliance review.
+- Windows, macOS, and Linux test matrix.
+
+## Buyer Summary
+
+Mitii is suitable for teams that want AI coding assistance without moving the agent runtime into a vendor-hosted workspace. Security posture depends on the selected model provider, approval policy, and logging settings, all of which can be reviewed and configured through VS Code settings.
+
diff --git a/docs/enterprise/PROCUREMENT_FAQ.md b/docs/enterprise/PROCUREMENT_FAQ.md
new file mode 100644
index 00000000..1822b3aa
--- /dev/null
+++ b/docs/enterprise/PROCUREMENT_FAQ.md
@@ -0,0 +1,30 @@
+# Procurement FAQ
+
+## Deployment Model
+
+Mitii is a VS Code extension with local workspace storage. There is no required Mitii server.
+
+## Supported Platforms
+
+Mitii targets macOS, Linux, and Windows. CI runs `npm test` on `ubuntu-latest`, `macos-latest`, and `windows-latest`.
+
+## Offline And Local Models
+
+Mitii supports OpenAI-compatible localhost providers such as Ollama and LM Studio. Set `thunder.enterprise.localProvidersOnly` to enforce local-only usage.
+
+## Controls Procurement Teams Ask For
+
+| Control | Setting or command |
+|---|---|
+| Disable session logging | `thunder.telemetry.sessionLogging` |
+| Disable verbose diagnostics | `thunder.telemetry.debugMetrics` |
+| Require approval for writes | `thunder.safety.requireApprovalForWrites` |
+| Require approval for shell | `thunder.safety.requireApprovalForShell` |
+| Local providers only | `thunder.enterprise.localProvidersOnly` |
+| Strip file contents from audit packs | `thunder.enterprise.stripFileContentsFromAuditPacks` |
+| Export review evidence | `Mitii: Export Audit Pack` |
+
+## License
+
+Mitii is licensed under AGPL-3.0-or-later. Commercial licensing questions should use the project contact in the README.
+
diff --git a/docs/enterprise/README.md b/docs/enterprise/README.md
new file mode 100644
index 00000000..d45ea43f
--- /dev/null
+++ b/docs/enterprise/README.md
@@ -0,0 +1,11 @@
+# Mitii Enterprise Pack
+
+This folder is the reviewer-facing security, compliance, and procurement packet for Mitii.
+
+- [Security and data flow](SECURITY.md)
+- [Compliance mapping](COMPLIANCE.md)
+- [Procurement FAQ](PROCUREMENT_FAQ.md)
+- [Enterprise overview](MITII_ENTERPRISE_OVERVIEW.md)
+
+Key controls are implemented as VS Code settings under `thunder.telemetry.*`, `thunder.safety.*`, `thunder.enterprise.*`, and the `Mitii: Export Audit Pack` command.
+
diff --git a/docs/enterprise/SECURITY.md b/docs/enterprise/SECURITY.md
new file mode 100644
index 00000000..810fe3f5
--- /dev/null
+++ b/docs/enterprise/SECURITY.md
@@ -0,0 +1,20 @@
+# Security And Data Flow
+
+Mitii is local-first. Workspace indexes, memory, plans, checkpoints, and JSONL session logs are stored under the workspace `.mitii/` directory.
+
+## What Leaves The Machine
+
+Only prompt data sent to the configured LLM provider leaves the machine. The provider boundary is controlled by `thunder.provider.*`. Enterprises can enable `thunder.enterprise.localProvidersOnly` to require Echo or a localhost OpenAI-compatible endpoint.
+
+## Secrets
+
+API keys are stored in VS Code SecretStorage. Logs and audit packs redact keys named like API keys, tokens, passwords, and secrets. Audit packs can additionally strip tool output and file content with `thunder.enterprise.stripFileContentsFromAuditPacks`.
+
+## MCP Risk Model
+
+MCP tools are routed through Mitii tool policy. File writes and mutating shell commands require approval according to `thunder.safety.approvalMode` and `thunder.safety.requireApprovalForWrites`.
+
+## Auditability
+
+Use `Mitii: Export Audit Pack` to produce a zip containing `session.jsonl`, `summary.md`, `manifest.json`, `tool-audit.json`, `approvals.json`, and `redaction-report.json`.
+
diff --git a/docs/qa/WINDOWS_SMOKE.md b/docs/qa/WINDOWS_SMOKE.md
new file mode 100644
index 00000000..3a4830e5
--- /dev/null
+++ b/docs/qa/WINDOWS_SMOKE.md
@@ -0,0 +1,12 @@
+# Windows Smoke Checklist
+
+Run on Windows with a normal user account.
+
+1. Open `C:\dev\project` in VS Code.
+2. Confirm Mitii indexes the workspace without path errors.
+3. Ask Mitii to read a file using both `src\foo.ts` and `src/foo.ts`.
+4. Stage a change and run `Mitii: Generate Commit Message`.
+5. Run `Mitii: Export Audit Pack` and confirm the zip uses forward-slash entries.
+6. Add a built-in MCP server and confirm the `cmd /c npx` wrapper starts.
+7. Run `npm test` from PowerShell.
+
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index faff148e..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,12046 +0,0 @@
-{
- "name": "mitii-ai-agent",
- "version": "2.7.15",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "mitii-ai-agent",
- "version": "2.7.15",
- "hasInstallScript": true,
- "license": "AGPL-3.0-or-later",
- "dependencies": {
- "@lancedb/lancedb": "^0.30.0",
- "@modelcontextprotocol/sdk": "^1.29.0",
- "@vscode/ripgrep": "^1.15.9",
- "@xenova/transformers": "^2.17.2",
- "@xstate/react": "^6.1.0",
- "better-sqlite3": "^12.11.1",
- "diff": "^5.2.0",
- "framer-motion": "^12.42.0",
- "ignore": "^5.3.1",
- "nanoid": "^5.0.7",
- "react": "^18.3.1",
- "react-dom": "^18.3.1",
- "shiki": "^4.3.0",
- "simple-git": "^3.25.0",
- "tiktoken": "^1.0.22",
- "ts-morph": "^28.0.0",
- "xstate": "^5.32.2",
- "zod": "^3.23.8",
- "zod-to-json-schema": "^3.25.2"
- },
- "devDependencies": {
- "@electron/rebuild": "^3.7.2",
- "@types/better-sqlite3": "^7.6.12",
- "@types/diff": "^7.0.2",
- "@types/node": "^20.14.0",
- "@types/react": "^18.3.3",
- "@types/react-dom": "^18.3.0",
- "@types/vscode": "^1.85.0",
- "@vitejs/plugin-react": "^4.3.1",
- "@vscode/vsce": "^2.32.0",
- "concurrently": "^8.2.2",
- "esbuild": "^0.21.5",
- "knip": "^6.21.0",
- "madge": "^8.0.0",
- "typescript": "^5.5.2",
- "vite": "^5.3.1",
- "vitest": "^1.6.0"
- },
- "engines": {
- "vscode": "^1.85.0"
- },
- "optionalDependencies": {
- "tree-sitter-wasms": "^0.1.13",
- "web-tree-sitter": "^0.24.7"
- }
- },
- "node_modules/@azure/abort-controller": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
- "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/@azure/core-auth": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz",
- "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/abort-controller": "^2.1.2",
- "@azure/core-util": "^1.13.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/core-client": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz",
- "integrity": "sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/abort-controller": "^2.1.2",
- "@azure/core-auth": "^1.10.0",
- "@azure/core-rest-pipeline": "^1.22.0",
- "@azure/core-tracing": "^1.3.0",
- "@azure/core-util": "^1.13.0",
- "@azure/logger": "^1.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/core-rest-pipeline": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz",
- "integrity": "sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/abort-controller": "^2.1.2",
- "@azure/core-auth": "^1.10.0",
- "@azure/core-tracing": "^1.3.0",
- "@azure/core-util": "^1.13.0",
- "@azure/logger": "^1.3.0",
- "@typespec/ts-http-runtime": "^0.3.4",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/core-tracing": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz",
- "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/core-util": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz",
- "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/abort-controller": "^2.1.2",
- "@typespec/ts-http-runtime": "^0.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/identity": {
- "version": "4.13.1",
- "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz",
- "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/abort-controller": "^2.0.0",
- "@azure/core-auth": "^1.9.0",
- "@azure/core-client": "^1.9.2",
- "@azure/core-rest-pipeline": "^1.17.0",
- "@azure/core-tracing": "^1.0.0",
- "@azure/core-util": "^1.11.0",
- "@azure/logger": "^1.0.0",
- "@azure/msal-browser": "^5.5.0",
- "@azure/msal-node": "^5.1.0",
- "open": "^10.1.0",
- "tslib": "^2.2.0"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/logger": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz",
- "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typespec/ts-http-runtime": "^0.3.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@azure/msal-browser": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.15.0.tgz",
- "integrity": "sha512-2NYT6v+eeQn8kmNddr9LnbXSvXbVELpmFMmfFvtRxD7I/5+5GlkMlncApeuRFj+mY6C9syOwQip1a0Y+TIbyiA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/msal-common": "16.10.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@azure/msal-common": {
- "version": "16.10.0",
- "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.10.0.tgz",
- "integrity": "sha512-iYtjpanlv6963Jprs0MvzIap07V+QhultjQctfbEDQCflsDAEeO3R7XnVA5gk30fhoBFLdgJT7VqO0TGsEsN9w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@azure/msal-node": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.3.0.tgz",
- "integrity": "sha512-fXtJX811pX8y8QlrQqBSH6+plvWyKZDI0IxkheAcyAw9OtcpXyFivmTC7eGUqutLWaDlKXuQ3yOESD4zAmkjHg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/msal-common": "16.10.0",
- "jsonwebtoken": "^9.0.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
- "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.29.7",
- "js-tokens": "^4.0.0",
- "picocolors": "^1.1.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
- "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
- "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.7",
- "@babel/generator": "^7.29.7",
- "@babel/helper-compilation-targets": "^7.29.7",
- "@babel/helper-module-transforms": "^7.29.7",
- "@babel/helpers": "^7.29.7",
- "@babel/parser": "^7.29.7",
- "@babel/template": "^7.29.7",
- "@babel/traverse": "^7.29.7",
- "@babel/types": "^7.29.7",
- "@jridgewell/remapping": "^2.3.5",
- "convert-source-map": "^2.0.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
- "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.29.7",
- "@babel/types": "^7.29.7",
- "@jridgewell/gen-mapping": "^0.3.12",
- "@jridgewell/trace-mapping": "^0.3.28",
- "jsesc": "^3.0.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
- "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.29.7",
- "@babel/helper-validator-option": "^7.29.7",
- "browserslist": "^4.24.0",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-globals": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
- "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
- "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.29.7",
- "@babel/types": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
- "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.29.7",
- "@babel/helper-validator-identifier": "^7.29.7",
- "@babel/traverse": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
- "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
- "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
- "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
- "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
- "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.29.7",
- "@babel/types": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
- "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.29.7"
- },
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
- "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
- "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz",
- "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
- "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.7",
- "@babel/parser": "^7.29.7",
- "@babel/types": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
- "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.29.7",
- "@babel/generator": "^7.29.7",
- "@babel/helper-globals": "^7.29.7",
- "@babel/parser": "^7.29.7",
- "@babel/template": "^7.29.7",
- "@babel/types": "^7.29.7",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
- "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-string-parser": "^7.29.7",
- "@babel/helper-validator-identifier": "^7.29.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@dependents/detective-less": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/@dependents/detective-less/-/detective-less-5.0.3.tgz",
- "integrity": "sha512-v6oD9Ukp+N7V4n6p5I/+mM5fIohSfkrDSGlFm5w/pYmchvbk+sMIHsLxrFJ5Lnujewj1BzWL0K84d88lwZAMQA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "gonzales-pe": "^4.3.0",
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@discoveryjs/json-ext": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.1.0.tgz",
- "integrity": "sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.17.0"
- }
- },
- "node_modules/@electron/node-gyp": {
- "version": "10.2.0-electron.1",
- "resolved": "git+ssh://git@github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2",
- "integrity": "sha512-CrYo6TntjpoMO1SHjl5Pa/JoUsECNqNdB7Kx49WLQpWzPw53eEITJ2Hs9fh/ryUYDn4pxZz11StaBYBrLFJdqg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.0",
- "exponential-backoff": "^3.1.1",
- "glob": "^8.1.0",
- "graceful-fs": "^4.2.6",
- "make-fetch-happen": "^10.2.1",
- "nopt": "^6.0.0",
- "proc-log": "^2.0.1",
- "semver": "^7.3.5",
- "tar": "^6.2.1",
- "which": "^2.0.2"
- },
- "bin": {
- "node-gyp": "bin/node-gyp.js"
- },
- "engines": {
- "node": ">=12.13.0"
- }
- },
- "node_modules/@electron/node-gyp/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/@electron/node-gyp/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@electron/node-gyp/node_modules/minimatch": {
- "version": "5.1.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
- "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@electron/node-gyp/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@electron/rebuild": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.2.tgz",
- "integrity": "sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@electron/node-gyp": "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2",
- "@malept/cross-spawn-promise": "^2.0.0",
- "chalk": "^4.0.0",
- "debug": "^4.1.1",
- "detect-libc": "^2.0.1",
- "fs-extra": "^10.0.0",
- "got": "^11.7.0",
- "node-abi": "^3.45.0",
- "node-api-version": "^0.2.0",
- "ora": "^5.1.0",
- "read-binary-file-arch": "^1.0.6",
- "semver": "^7.3.5",
- "tar": "^6.0.5",
- "yargs": "^17.0.1"
- },
- "bin": {
- "electron-rebuild": "lib/cli.js"
- },
- "engines": {
- "node": ">=12.13.0"
- }
- },
- "node_modules/@electron/rebuild/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@electron/rebuild/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@electron/rebuild/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@electron/rebuild/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@electron/rebuild/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@electron/rebuild/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@electron/rebuild/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@emnapi/core": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
- "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/wasi-threads": "1.2.2",
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@emnapi/runtime": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
- "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@emnapi/wasi-threads": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
- "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@gar/promisify": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
- "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@hono/node-server": {
- "version": "1.19.14",
- "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz",
- "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==",
- "license": "MIT",
- "engines": {
- "node": ">=18.14.1"
- },
- "peerDependencies": {
- "hono": "^4"
- }
- },
- "node_modules/@huggingface/jinja": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/@huggingface/jinja/-/jinja-0.2.2.tgz",
- "integrity": "sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
- "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.0",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/remapping": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
- "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.24"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
- "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.31",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
- "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@kwsites/file-exists": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
- "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.1.1"
- }
- },
- "node_modules/@kwsites/promise-deferred": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
- "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==",
- "license": "MIT"
- },
- "node_modules/@lancedb/lancedb": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb/-/lancedb-0.30.0.tgz",
- "integrity": "sha512-d0FoEL6cthqgsulqAc7fck6kRXrSRGMTqlKYbhSGSazHU6vB2GEpD737Mu0HZd7fMyBUdhR9sD1W2C9uQZ5p0Q==",
- "cpu": [
- "x64",
- "arm64"
- ],
- "license": "Apache-2.0",
- "os": [
- "darwin",
- "linux",
- "win32"
- ],
- "dependencies": {
- "reflect-metadata": "^0.2.2"
- },
- "engines": {
- "node": ">= 18"
- },
- "optionalDependencies": {
- "@lancedb/lancedb-darwin-arm64": "0.30.0",
- "@lancedb/lancedb-linux-arm64-gnu": "0.30.0",
- "@lancedb/lancedb-linux-arm64-musl": "0.30.0",
- "@lancedb/lancedb-linux-x64-gnu": "0.30.0",
- "@lancedb/lancedb-linux-x64-musl": "0.30.0",
- "@lancedb/lancedb-win32-arm64-msvc": "0.30.0",
- "@lancedb/lancedb-win32-x64-msvc": "0.30.0"
- },
- "peerDependencies": {
- "apache-arrow": ">=15.0.0 <=18.1.0"
- }
- },
- "node_modules/@lancedb/lancedb-darwin-arm64": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.30.0.tgz",
- "integrity": "sha512-x6dmsjRIv0xumELYnFAEfyFDxqcO/n4rHYCJvC27RbRez0UmbByi6OMTgbSoSTatrQSPRCL7JJSa5pwNeawnIg==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@lancedb/lancedb-linux-arm64-gnu": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-gnu/-/lancedb-linux-arm64-gnu-0.30.0.tgz",
- "integrity": "sha512-CWUex7hRNiLkXFeTQlUGPyy5VktbXoUmQdZuiVCETZ6ggljEC7c7Qvzu2ge+jEZML+UE7tXL2lVC3klRFGczng==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@lancedb/lancedb-linux-arm64-musl": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-musl/-/lancedb-linux-arm64-musl-0.30.0.tgz",
- "integrity": "sha512-2MHmAS4tKePNVbwfgDrjCFj6BVuAgXlL2c9iWk7TfcwL+jcSxo52LFx03O0+ArpVCF2sI6aoDqZaQNre5zMniQ==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@lancedb/lancedb-linux-x64-gnu": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.30.0.tgz",
- "integrity": "sha512-0OpDNxsDE4OXD+PIFd7KdE42xhYIE+fZL+jCm1v3dTug4UEhumWBuSgbUIBP7t0yJZHwh62/QivVh/V1cPB2Bg==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@lancedb/lancedb-linux-x64-musl": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-musl/-/lancedb-linux-x64-musl-0.30.0.tgz",
- "integrity": "sha512-4Bq7VngQt+lyxIcu79EN8nYJs8gvUnrIT6I/t2MSlpG/BXWHZG2A+PRii1Zq4GCUlRTTG+RlieCv8CBGSPm8bw==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@lancedb/lancedb-win32-arm64-msvc": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-arm64-msvc/-/lancedb-win32-arm64-msvc-0.30.0.tgz",
- "integrity": "sha512-N2DQg2XBWZirn5jS6kRJUxF679t3sKcIxBwP9zY4Idq5OVLAj0yfLueWIKhYxv8en7pBFYWdgw5j9dTS7XajyQ==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@lancedb/lancedb-win32-x64-msvc": {
- "version": "0.30.0",
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-x64-msvc/-/lancedb-win32-x64-msvc-0.30.0.tgz",
- "integrity": "sha512-CDgN/ZmYqSlVX2nBJAF2PYEwqBBxotCVORjagmvrd0k5D7RBLlAQUEAR4gDMum2BpYsUkzdTYQpquLjRCVbwbQ==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@malept/cross-spawn-promise": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz",
- "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/malept"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund"
- }
- ],
- "license": "Apache-2.0",
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "engines": {
- "node": ">= 12.13.0"
- }
- },
- "node_modules/@modelcontextprotocol/sdk": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz",
- "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==",
- "license": "MIT",
- "dependencies": {
- "@hono/node-server": "^1.19.9",
- "ajv": "^8.17.1",
- "ajv-formats": "^3.0.1",
- "content-type": "^1.0.5",
- "cors": "^2.8.5",
- "cross-spawn": "^7.0.5",
- "eventsource": "^3.0.2",
- "eventsource-parser": "^3.0.0",
- "express": "^5.2.1",
- "express-rate-limit": "^8.2.1",
- "hono": "^4.11.4",
- "jose": "^6.1.3",
- "json-schema-typed": "^8.0.2",
- "pkce-challenge": "^5.0.0",
- "raw-body": "^3.0.0",
- "zod": "^3.25 || ^4.0",
- "zod-to-json-schema": "^3.25.1"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@cfworker/json-schema": "^4.1.1",
- "zod": "^3.25 || ^4.0"
- },
- "peerDependenciesMeta": {
- "@cfworker/json-schema": {
- "optional": true
- },
- "zod": {
- "optional": false
- }
- }
- },
- "node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
- "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@tybys/wasm-util": "^0.10.3"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
- },
- "peerDependencies": {
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1"
- }
- },
- "node_modules/@npmcli/fs": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz",
- "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@gar/promisify": "^1.1.3",
- "semver": "^7.3.5"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@npmcli/fs/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@npmcli/move-file": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz",
- "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==",
- "deprecated": "This functionality has been moved to @npmcli/fs",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mkdirp": "^1.0.4",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/@oxc-parser/binding-android-arm-eabi": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.137.0.tgz",
- "integrity": "sha512-KDs+0VPdEmasOkpuJHW9V5WCF+cvYdMQv2Jd+aJXt+cxIx12NToRQRbXaRwUEDsZw+/jMk81Ve8ZFbjUkJTOwA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-android-arm64": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.137.0.tgz",
- "integrity": "sha512-WhALNzfy3x/RfC6bsqX+csavuUY0yHHE7XfgPE5M542uhoBZUUoGTPG+nkMbGoG4+gcfss5s7urMyn5QBHu0sw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-darwin-arm64": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.137.0.tgz",
- "integrity": "sha512-bFPr5hgmNMOMoyPTGtdsK4Ug21RovIPojRMgDDhSp1LtCnc/DkLwGONKjgRjszg677RlGnkYSviQ8hHaUPOVYA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-darwin-x64": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.137.0.tgz",
- "integrity": "sha512-CL5dMm1asqXIDZHg14FLxj3Mc36w8PI7xCWh1uA4is6z8g2XrIILoTcQYOxDbwzuk34RDPX5IAGUxZr6LA9KAg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-freebsd-x64": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.137.0.tgz",
- "integrity": "sha512-79h8rYGnSlKPGWo7mHr2ixO6ea7aW8B0CT965SZ8SLbNnCOH5aOYBTeVXUY6eMvEaiLyWr8Skuiugr5pDYgLGw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.137.0.tgz",
- "integrity": "sha512-ASgmlSimhGyr0lksgVIo6hibz1obnDq4qJbiMX/AzltfgPnanRrzG1Q+23g8ljOHOjv6dsznkUuCYL3gg0sY1Q==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-arm-musleabihf": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.137.0.tgz",
- "integrity": "sha512-AU2J9aa22Sx32wRGnDjybOU9TQXXQUud5sdUi+ZB0XxwM8aToWLweV+yA0wlQm0yIUVqljquqoHCYEq9II8gJQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-arm64-gnu": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.137.0.tgz",
- "integrity": "sha512-GdEtiG89yMr7XkUGxifgodXEEm2f+xW2f9CpDjlgAnBOwhTmrpQMvhOGobLVKUyzf/qHBXW16smk5zbF3nZU6w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-arm64-musl": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.137.0.tgz",
- "integrity": "sha512-EGJ+Bs8iXx8KBH8DQ5BLoEm5lnHaYjlh4/8j8vFhrr/6z4tqONy5BZDzLpKmmNWlN6Hlc5r8YOuBVHqZ9vRFEQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-ppc64-gnu": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.137.0.tgz",
- "integrity": "sha512-vzFUQENy/fnbSe5DZWovq6tIBc1uhuMztanSW6rz1e9WdQE4gHwYuD7ZII6JnrJifd1R3RSoqiZbgRFlVL2tYQ==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-riscv64-gnu": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.137.0.tgz",
- "integrity": "sha512-SfVI14HBQs9gtLcUD5hTt5hsNbdrqSUNg9S8muN+LhVQ5nf1WwH3hAoK6B9NKgdYgWAQSXFXGiiBedQ4r/BKuw==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-riscv64-musl": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.137.0.tgz",
- "integrity": "sha512-e7Ppy4FCIFNQxT/ikSeIWFoQ0l+N9vgtRBtLcyZXeolTzApyVoPqEXsYPrcdM/9i0Bwk8knvYd37vaEMxHyi6g==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-s390x-gnu": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.137.0.tgz",
- "integrity": "sha512-Bho5qFwdhqsIFR7gipYEUlqvi3SRrY8sugxXig380MIaakBB1PyU9+7dBiBVScfImTNWhijUxdBwqrprGdq5WA==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-x64-gnu": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.137.0.tgz",
- "integrity": "sha512-36mGWtg7PyFzjJwGDkH6/F4o2nIDEoKXLPr/X/lwqklkomQwJJt1I5GJVmGhovUEmgPK5WAeAZMqlFCehwiy9Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-linux-x64-musl": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.137.0.tgz",
- "integrity": "sha512-/Jqx6+N7A44n2BdvUr7pXhVr2vFjs6WGH3unZRczwrfiH0H1zY0QwKQMG/dtRiTlKGDKGukznPT8lx84/oEsZg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-openharmony-arm64": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.137.0.tgz",
- "integrity": "sha512-9Uj0qHNNl+OgT1UTGwF7ixIXU6T1u2SbMidmgPy/h1h/fl2gRS6YpAxxY1gwHofcWjoTwkoMFd8xs5Vuj6GOFA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-wasm32-wasi": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.137.0.tgz",
- "integrity": "sha512-gW2vfkytNGgMVADiuzdvOfw0mWG9za20F/1fCJsif5aBMAvWJTSbpIXbIe0XkOe0VENk+PadpQ7cZgUy2sUJcA==",
- "cpu": [
- "wasm32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/core": "1.11.1",
- "@emnapi/runtime": "1.11.1",
- "@napi-rs/wasm-runtime": "^1.1.5"
- },
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-win32-arm64-msvc": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.137.0.tgz",
- "integrity": "sha512-x+pFANF0yL5uK/6T7lu6SlR5qid6sp//eZXKLq5iNsIE+EQg6EaS8/wsW7E91nXXjpnPhSoMOHXShSVhGRdn8w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-win32-ia32-msvc": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.137.0.tgz",
- "integrity": "sha512-sQUqym80PFi6McRsIqfJrSu2JrSClEZIXXD+/FjAFoULEKzOPsldIdFBG96xdX8aVMzCNQ9792FPx3MfkEIrFA==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-parser/binding-win32-x64-msvc": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.137.0.tgz",
- "integrity": "sha512-2AsevxlvNN4WKxpEn3RtqD5zbqMaXF+T7JXblsP4gVuY+vC9dXS4ED/PwfRCliFqoeisYS3Iro4DHzxr0TEvVA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@oxc-project/types": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz",
- "integrity": "sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/Boshen"
- }
- },
- "node_modules/@oxc-resolver/binding-android-arm-eabi": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm-eabi/-/binding-android-arm-eabi-11.21.3.tgz",
- "integrity": "sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@oxc-resolver/binding-android-arm64": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-android-arm64/-/binding-android-arm64-11.21.3.tgz",
- "integrity": "sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@oxc-resolver/binding-darwin-arm64": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-arm64/-/binding-darwin-arm64-11.21.3.tgz",
- "integrity": "sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@oxc-resolver/binding-darwin-x64": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-darwin-x64/-/binding-darwin-x64-11.21.3.tgz",
- "integrity": "sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@oxc-resolver/binding-freebsd-x64": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-freebsd-x64/-/binding-freebsd-x64-11.21.3.tgz",
- "integrity": "sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-arm-gnueabihf": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-11.21.3.tgz",
- "integrity": "sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-arm-musleabihf": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-11.21.3.tgz",
- "integrity": "sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-arm64-gnu": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-11.21.3.tgz",
- "integrity": "sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-arm64-musl": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-arm64-musl/-/binding-linux-arm64-musl-11.21.3.tgz",
- "integrity": "sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-ppc64-gnu": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-11.21.3.tgz",
- "integrity": "sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-riscv64-gnu": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-11.21.3.tgz",
- "integrity": "sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-riscv64-musl": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-11.21.3.tgz",
- "integrity": "sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-s390x-gnu": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-11.21.3.tgz",
- "integrity": "sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-x64-gnu": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.21.3.tgz",
- "integrity": "sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-x64-musl": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.21.3.tgz",
- "integrity": "sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-openharmony-arm64": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.21.3.tgz",
- "integrity": "sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ]
- },
- "node_modules/@oxc-resolver/binding-wasm32-wasi": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.21.3.tgz",
- "integrity": "sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==",
- "cpu": [
- "wasm32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/core": "1.11.0",
- "@emnapi/runtime": "1.11.0",
- "@napi-rs/wasm-runtime": "^1.1.5"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/core": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.0.tgz",
- "integrity": "sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/wasi-threads": "1.2.2",
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.0.tgz",
- "integrity": "sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@oxc-resolver/binding-win32-arm64-msvc": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.21.3.tgz",
- "integrity": "sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@oxc-resolver/binding-win32-x64-msvc": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.21.3.tgz",
- "integrity": "sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/codegen": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz",
- "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/eventemitter": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz",
- "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/fetch": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz",
- "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.1"
- }
- },
- "node_modules/@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/inquire": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz",
- "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@protobufjs/utf8": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz",
- "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==",
- "license": "BSD-3-Clause"
- },
- "node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-beta.27",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
- "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz",
- "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz",
- "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz",
- "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz",
- "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz",
- "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz",
- "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz",
- "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz",
- "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz",
- "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz",
- "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz",
- "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz",
- "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz",
- "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz",
- "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz",
- "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz",
- "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz",
- "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz",
- "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz",
- "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz",
- "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ]
- },
- "node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz",
- "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ]
- },
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz",
- "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz",
- "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz",
- "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz",
- "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@shikijs/core": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.3.0.tgz",
- "integrity": "sha512-EooU3i9F6IAE8kEu+AnGf9DFZWkQBZ+hJn3tLVbsH+61mtQiva5biai66fAA6nvFPXkLgvrh7BrR7YcJU83xQQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/primitive": "4.3.0",
- "@shikijs/types": "4.3.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4",
- "hast-util-to-html": "^9.0.5"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/engine-javascript": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.3.0.tgz",
- "integrity": "sha512-hTv/KiFf2tpiqlACPiztGGurEARWIutB8YUhcrA1pUC7VzzwKO+g5crUocrLztrZ5ro5Z4hbXg7bYclETn3gSQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.3.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "oniguruma-to-es": "^4.3.6"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/engine-oniguruma": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.3.0.tgz",
- "integrity": "sha512-1vMdN3gHfnKfLYwecUI2ITJI4RhHt96xEaJumVn7Heb0IlJ8WQMIH0Voak+2j22BpSNKdnOfB/pCTPnPm2gq7A==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.3.0",
- "@shikijs/vscode-textmate": "^10.0.2"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/langs": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.3.0.tgz",
- "integrity": "sha512-rnlqFbBRSys9bT4gl/5rw9RnS0W/I84ZldXPkO7cvlEMoV85TyF/aU01N7/NbSR776RNLjrJKjfFUXJR6wN1Cg==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.3.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/primitive": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.3.0.tgz",
- "integrity": "sha512-CPkz64PTa5diRW1ggzMZH9VM/du4RNChYgVtgqrFcgruvIybmCvySv8GkiHSczUHXYuuR8TdKEwFx+UnZMpgdg==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.3.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/themes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.3.0.tgz",
- "integrity": "sha512-Avgt05YiT+Y3prjIc9lmQxhJzHBcCfR6cjiFW4OyaMBbt2A6trX5rfjUzx+Vj/mE9qpArYjatnqo9XPjQNW/AQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/types": "4.3.0"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/types": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.3.0.tgz",
- "integrity": "sha512-oc8b9U2SYvofKZk8e/737nIX0qwf6eV2vHFATeObAu7r+mUVpLs8Re0BmVkIjAWAYgkmG/CzLNo7rzuBzRu/wQ==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/@shikijs/vscode-textmate": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
- "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
- "license": "MIT"
- },
- "node_modules/@simple-git/args-pathspec": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz",
- "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==",
- "license": "MIT"
- },
- "node_modules/@simple-git/argv-parser": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz",
- "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==",
- "license": "MIT",
- "dependencies": {
- "@simple-git/args-pathspec": "^1.0.3"
- }
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.27.10",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz",
- "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@sindresorhus/is": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
- "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/is?sponsor=1"
- }
- },
- "node_modules/@swc/helpers": {
- "version": "0.5.23",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz",
- "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==",
- "license": "Apache-2.0",
- "peer": true,
- "dependencies": {
- "tslib": "^2.8.0"
- }
- },
- "node_modules/@szmarczak/http-timer": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
- "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "defer-to-connect": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@tootallnate/once": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.1.tgz",
- "integrity": "sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@ts-graphviz/adapter": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@ts-graphviz/adapter/-/adapter-2.0.6.tgz",
- "integrity": "sha512-kJ10lIMSWMJkLkkCG5gt927SnGZcBuG0s0HHswGzcHTgvtUe7yk5/3zTEr0bafzsodsOq5Gi6FhQeV775nC35Q==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ts-graphviz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ts-graphviz"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ts-graphviz/common": "^2.1.5"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@ts-graphviz/ast": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@ts-graphviz/ast/-/ast-2.0.7.tgz",
- "integrity": "sha512-e6+2qtNV99UT6DJSoLbHfkzfyqY84aIuoV8Xlb9+hZAjgpum8iVHprGeAMQ4rF6sKUAxrmY8rfF/vgAwoPc3gw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ts-graphviz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ts-graphviz"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ts-graphviz/common": "^2.1.5"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@ts-graphviz/common": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@ts-graphviz/common/-/common-2.1.5.tgz",
- "integrity": "sha512-S6/9+T6x8j6cr/gNhp+U2olwo1n0jKj/682QVqsh7yXWV6ednHYqxFw0ZsY3LyzT0N8jaZ6jQY9YD99le3cmvg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ts-graphviz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ts-graphviz"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@ts-graphviz/core": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/@ts-graphviz/core/-/core-2.0.7.tgz",
- "integrity": "sha512-w071DSzP94YfN6XiWhOxnLpYT3uqtxJBDYdh6Jdjzt+Ce6DNspJsPQgpC7rbts/B8tEkq0LHoYuIF/O5Jh5rPg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ts-graphviz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ts-graphviz"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ts-graphviz/ast": "^2.0.7",
- "@ts-graphviz/common": "^2.1.5"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@ts-morph/common": {
- "version": "0.29.0",
- "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.29.0.tgz",
- "integrity": "sha512-35oUmphHbJvQ/+UTwFNme/t2p3FoKiGJ5auTjjpNTop2dyREspirjMy82PLSC1pnDJ8ah1GU98hwpVt64YXQsg==",
- "license": "MIT",
- "dependencies": {
- "minimatch": "^10.0.1",
- "path-browserify": "^1.0.1",
- "tinyglobby": "^0.2.14"
- }
- },
- "node_modules/@ts-morph/common/node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
- "license": "MIT",
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
- "node_modules/@ts-morph/common/node_modules/brace-expansion": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
- "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^4.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
- "node_modules/@ts-morph/common/node_modules/minimatch": {
- "version": "10.2.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
- "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "brace-expansion": "^5.0.5"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@tybys/wasm-util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
- "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.5",
- "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
- "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.27.0",
- "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
- "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.4",
- "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
- "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
- "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.28.2"
- }
- },
- "node_modules/@types/better-sqlite3": {
- "version": "7.6.13",
- "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz",
- "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/cacheable-request": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
- "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/http-cache-semantics": "*",
- "@types/keyv": "^3.1.4",
- "@types/node": "*",
- "@types/responselike": "^1.0.0"
- }
- },
- "node_modules/@types/command-line-args": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz",
- "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==",
- "license": "MIT",
- "peer": true
- },
- "node_modules/@types/command-line-usage": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz",
- "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==",
- "license": "MIT",
- "peer": true
- },
- "node_modules/@types/diff": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz",
- "integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/estree": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
- "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/hast": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
- "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/http-cache-semantics": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
- "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/keyv": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
- "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/long": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
- "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==",
- "license": "MIT"
- },
- "node_modules/@types/mdast": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
- "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "*"
- }
- },
- "node_modules/@types/node": {
- "version": "20.19.43",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz",
- "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==",
- "license": "MIT",
- "dependencies": {
- "undici-types": "~6.21.0"
- }
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.15",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
- "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/react": {
- "version": "18.3.31",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz",
- "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "csstype": "^3.2.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.3.7",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
- "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "^18.0.0"
- }
- },
- "node_modules/@types/responselike": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
- "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/unist": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
- "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
- "license": "MIT"
- },
- "node_modules/@types/vscode": {
- "version": "1.125.0",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.125.0.tgz",
- "integrity": "sha512-0icm/ZQAaism87P0ekHqi4/Ju9du+Tm0RUW+y7vqRsxY2cY0FNRX1nAnaW7nT6npPt2tfHiheZ55Zm9UhqonFA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@typescript-eslint/project-service": {
- "version": "8.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.62.0.tgz",
- "integrity": "sha512-wexnCqiTg7BOGtbLDftYpRWlmLq4xfoMd7BKFR6Y75sZS3QmRKLdN3yWLhmIYgqMmP/OXWpj3H8odkb5nGURCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.62.0",
- "@typescript-eslint/types": "^8.62.0",
- "debug": "^4.4.3"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.1.0"
- }
- },
- "node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.62.0.tgz",
- "integrity": "sha512-y2GAdB6ykaXUvuspbYnizQc4oDDz0Tz/Yc7iWrXf9mx8vm/L/0vLHCe0tS2boG96Zy+DivnVDQ9ZUEWoHqqx1g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.1.0"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "8.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.62.0.tgz",
- "integrity": "sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.62.0.tgz",
- "integrity": "sha512-+hVbNxtW64pIcZWDPGbyaKF7vp2IBTVY5ma1blwwksrjdsbdqqEKvJWMGbBofei4F6Dovx1M0RJgoFeNu2279A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/project-service": "8.62.0",
- "@typescript-eslint/tsconfig-utils": "8.62.0",
- "@typescript-eslint/types": "8.62.0",
- "@typescript-eslint/visitor-keys": "8.62.0",
- "debug": "^4.4.3",
- "minimatch": "^10.2.2",
- "semver": "^7.7.3",
- "tinyglobby": "^0.2.15",
- "ts-api-utils": "^2.5.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.1.0"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
- "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^4.0.2"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "10.2.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
- "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "brace-expansion": "^5.0.5"
- },
- "engines": {
- "node": "18 || 20 || >=22"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.62.0.tgz",
- "integrity": "sha512-CY3uyFSRbcQv3nnSv8S0+lDftMVz6P963PoRlxrV7ew/Md564g9ut60PYzdLM5qW4jFn93GBF+Soi90ISAN+GQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "8.62.0",
- "eslint-visitor-keys": "^5.0.0"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typespec/ts-http-runtime": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz",
- "integrity": "sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.0",
- "tslib": "^2.6.2"
- },
- "engines": {
- "node": ">=20.0.0"
- }
- },
- "node_modules/@ungap/structured-clone": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz",
- "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==",
- "license": "ISC"
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
- "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.28.0",
- "@babel/plugin-transform-react-jsx-self": "^7.27.1",
- "@babel/plugin-transform-react-jsx-source": "^7.27.1",
- "@rolldown/pluginutils": "1.0.0-beta.27",
- "@types/babel__core": "^7.20.5",
- "react-refresh": "^0.17.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
- }
- },
- "node_modules/@vitest/expect": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz",
- "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/spy": "1.6.1",
- "@vitest/utils": "1.6.1",
- "chai": "^4.3.10"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/@vitest/runner": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz",
- "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/utils": "1.6.1",
- "p-limit": "^5.0.0",
- "pathe": "^1.1.1"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/@vitest/snapshot": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz",
- "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "pretty-format": "^29.7.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/@vitest/spy": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz",
- "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tinyspy": "^2.2.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/@vitest/utils": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz",
- "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "diff-sequences": "^29.6.3",
- "estree-walker": "^3.0.3",
- "loupe": "^2.3.7",
- "pretty-format": "^29.7.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/@vscode/ripgrep": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.18.0.tgz",
- "integrity": "sha512-ns5lWe44tSfbTMbVUsyB+I1819PVSw4AdpgK0RNkzfWfwy6+3IUNSxwSrfTno1/oWaS/hERNz+XLWVyga2aJBQ==",
- "license": "MIT",
- "optionalDependencies": {
- "@vscode/ripgrep-darwin-arm64": "1.18.0",
- "@vscode/ripgrep-darwin-x64": "1.18.0",
- "@vscode/ripgrep-linux-arm": "1.18.0",
- "@vscode/ripgrep-linux-arm64": "1.18.0",
- "@vscode/ripgrep-linux-ia32": "1.18.0",
- "@vscode/ripgrep-linux-ppc64": "1.18.0",
- "@vscode/ripgrep-linux-riscv64": "1.18.0",
- "@vscode/ripgrep-linux-s390x": "1.18.0",
- "@vscode/ripgrep-linux-x64": "1.18.0",
- "@vscode/ripgrep-win32-arm64": "1.18.0",
- "@vscode/ripgrep-win32-ia32": "1.18.0",
- "@vscode/ripgrep-win32-x64": "1.18.0"
- }
- },
- "node_modules/@vscode/ripgrep-darwin-arm64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-darwin-arm64/-/ripgrep-darwin-arm64-1.18.0.tgz",
- "integrity": "sha512-r3ktHSvbFycQNF6sl7sNDPocpsI7J+mEzh1IaZFkY0spm3k2Z9t8hPAeOK7+p0l6p6/swkQC14XWX01low+94Q==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@vscode/ripgrep-darwin-x64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-darwin-x64/-/ripgrep-darwin-x64-1.18.0.tgz",
- "integrity": "sha512-25b4gWbL138dGuQU244ebCKKc0q05ULBMoFSz9oAEUHNeqK/lOJViDS7DRvbDazzAzSEdan391Znks/R5mkaTQ==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-arm": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-arm/-/ripgrep-linux-arm-1.18.0.tgz",
- "integrity": "sha512-GDAvufNDHu8zqLEmXstalQF0Wh6wQvdsBi/Vg3Yi3CK4a8XoFXqqXVEHEZ9xQz3t0NfoSEc9JbvK9DDS6FxyxQ==",
- "cpu": [
- "arm"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-arm64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-arm64/-/ripgrep-linux-arm64-1.18.0.tgz",
- "integrity": "sha512-lQ/5zTG++U0E3IhVgS4EPTTn/U4okncaRMM5GOFfOYZywS4nuD31GhkHbNYlDk5CuDC68+hYJ0/eQeyCKJDA+g==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-ia32": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-ia32/-/ripgrep-linux-ia32-1.18.0.tgz",
- "integrity": "sha512-YWLkSUtFd4Jh5EepIhA9RJSfv3uMAVMo+2rBIGHPBnvgLrZciIs2cDKei1/p6Wc/aCzUoHyMAg2R6tw4ZCBKGg==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-ppc64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-ppc64/-/ripgrep-linux-ppc64-1.18.0.tgz",
- "integrity": "sha512-quXVY8fwQ8O/lvU1yrSqSl3jlUzysRSb+AfUfCL/tRtphxsKlFvPAejryZ6vg4Bgvn8XL74xb4qMCDmWgYrT5w==",
- "cpu": [
- "ppc64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-riscv64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-riscv64/-/ripgrep-linux-riscv64-1.18.0.tgz",
- "integrity": "sha512-f5kBQBrWfQt8Q7OhSORuNDei5dkYagBj3y4jImSUXGMy8B/Ke7SltSRcUtjPv166FAFfHCAmWuZp3+cWnX2/Vw==",
- "cpu": [
- "riscv64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-s390x": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-s390x/-/ripgrep-linux-s390x-1.18.0.tgz",
- "integrity": "sha512-rTOcJFGGcl2c07RUOWUo4U1ndnemKhY6A9hnMB18uk7jSgJc0d/QLBGWMWpumdtoJtpizn/wIv5mXIisJukusQ==",
- "cpu": [
- "s390x"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-linux-x64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-linux-x64/-/ripgrep-linux-x64-1.18.0.tgz",
- "integrity": "sha512-mQ3bVrUpnD2vs7QT0vX90Lt0cnUq467uFtEktIdsJJmW296RoSULRGqWgzG1AKxyBpNDD6l4ZO4qKf6SgyC23Q==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/ripgrep-win32-arm64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-win32-arm64/-/ripgrep-win32-arm64-1.18.0.tgz",
- "integrity": "sha512-vfTIjq1OHnzUjxZcHVQAMbnggp8dpGf+0QKFOZHwWPqFwXxQC8eCWM+5NUdoJ6yrElCeMzoUTXoK/LdZaniB+Q==",
- "cpu": [
- "arm64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@vscode/ripgrep-win32-ia32": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-win32-ia32/-/ripgrep-win32-ia32-1.18.0.tgz",
- "integrity": "sha512-//rfAE+BOw5AC2EMmepmiE36jUuevtQYNQqqlw1s3m9FlRxjxEut97RkRPHAu9BG4mSojatZx+kXZXNdyI9caQ==",
- "cpu": [
- "ia32"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@vscode/ripgrep-win32-x64": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@vscode/ripgrep-win32-x64/-/ripgrep-win32-x64-1.18.0.tgz",
- "integrity": "sha512-KNPvtElldqILHdnAetujPaowkNbpqJy3ssIGGN6F6Kve9Qi+nNLI2DN01O83JjCEVQbCzl8Ov3QZ9Eov3BR8Dg==",
- "cpu": [
- "x64"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@vscode/vsce": {
- "version": "2.32.0",
- "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.32.0.tgz",
- "integrity": "sha512-3EFJfsgrSftIqt3EtdRcAygy/OJ3hstyI1cDmIgkU9CFZW5C+3djr6mfosndCUqcVYuyjmxOK1xmFp/Bq7+NIg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@azure/identity": "^4.1.0",
- "@vscode/vsce-sign": "^2.0.0",
- "azure-devops-node-api": "^12.5.0",
- "chalk": "^2.4.2",
- "cheerio": "^1.0.0-rc.9",
- "cockatiel": "^3.1.2",
- "commander": "^6.2.1",
- "form-data": "^4.0.0",
- "glob": "^7.0.6",
- "hosted-git-info": "^4.0.2",
- "jsonc-parser": "^3.2.0",
- "leven": "^3.1.0",
- "markdown-it": "^12.3.2",
- "mime": "^1.3.4",
- "minimatch": "^3.0.3",
- "parse-semver": "^1.1.1",
- "read": "^1.0.7",
- "semver": "^7.5.2",
- "tmp": "^0.2.1",
- "typed-rest-client": "^1.8.4",
- "url-join": "^4.0.1",
- "xml2js": "^0.5.0",
- "yauzl": "^2.3.1",
- "yazl": "^2.2.2"
- },
- "bin": {
- "vsce": "vsce"
- },
- "engines": {
- "node": ">= 16"
- },
- "optionalDependencies": {
- "keytar": "^7.7.0"
- }
- },
- "node_modules/@vscode/vsce-sign": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz",
- "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==",
- "dev": true,
- "hasInstallScript": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optionalDependencies": {
- "@vscode/vsce-sign-alpine-arm64": "2.0.6",
- "@vscode/vsce-sign-alpine-x64": "2.0.6",
- "@vscode/vsce-sign-darwin-arm64": "2.0.6",
- "@vscode/vsce-sign-darwin-x64": "2.0.6",
- "@vscode/vsce-sign-linux-arm": "2.0.6",
- "@vscode/vsce-sign-linux-arm64": "2.0.6",
- "@vscode/vsce-sign-linux-x64": "2.0.6",
- "@vscode/vsce-sign-win32-arm64": "2.0.6",
- "@vscode/vsce-sign-win32-x64": "2.0.6"
- }
- },
- "node_modules/@vscode/vsce-sign-alpine-arm64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz",
- "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "alpine"
- ]
- },
- "node_modules/@vscode/vsce-sign-alpine-x64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz",
- "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "alpine"
- ]
- },
- "node_modules/@vscode/vsce-sign-darwin-arm64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz",
- "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@vscode/vsce-sign-darwin-x64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz",
- "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "darwin"
- ]
- },
- "node_modules/@vscode/vsce-sign-linux-arm": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz",
- "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/vsce-sign-linux-arm64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz",
- "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/vsce-sign-linux-x64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz",
- "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@vscode/vsce-sign-win32-arm64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz",
- "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@vscode/vsce-sign-win32-x64": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz",
- "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "SEE LICENSE IN LICENSE.txt",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@vscode/vsce/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@vue/compiler-core": {
- "version": "3.5.39",
- "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.39.tgz",
- "integrity": "sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.29.7",
- "@vue/shared": "3.5.39",
- "entities": "^7.0.1",
- "estree-walker": "^2.0.2",
- "source-map-js": "^1.2.1"
- }
- },
- "node_modules/@vue/compiler-core/node_modules/entities": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
- "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/@vue/compiler-core/node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@vue/compiler-dom": {
- "version": "3.5.39",
- "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.39.tgz",
- "integrity": "sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vue/compiler-core": "3.5.39",
- "@vue/shared": "3.5.39"
- }
- },
- "node_modules/@vue/compiler-sfc": {
- "version": "3.5.39",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.39.tgz",
- "integrity": "sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.29.7",
- "@vue/compiler-core": "3.5.39",
- "@vue/compiler-dom": "3.5.39",
- "@vue/compiler-ssr": "3.5.39",
- "@vue/shared": "3.5.39",
- "estree-walker": "^2.0.2",
- "magic-string": "^0.30.21",
- "postcss": "^8.5.15",
- "source-map-js": "^1.2.1"
- }
- },
- "node_modules/@vue/compiler-sfc/node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@vue/compiler-ssr": {
- "version": "3.5.39",
- "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.39.tgz",
- "integrity": "sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vue/compiler-dom": "3.5.39",
- "@vue/shared": "3.5.39"
- }
- },
- "node_modules/@vue/shared": {
- "version": "3.5.39",
- "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.39.tgz",
- "integrity": "sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@xenova/transformers": {
- "version": "2.17.2",
- "resolved": "https://registry.npmjs.org/@xenova/transformers/-/transformers-2.17.2.tgz",
- "integrity": "sha512-lZmHqzrVIkSvZdKZEx7IYY51TK0WDrC8eR0c5IMnBsO8di8are1zzw8BlLhyO2TklZKLN5UffNGs1IJwT6oOqQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "@huggingface/jinja": "^0.2.2",
- "onnxruntime-web": "1.14.0",
- "sharp": "^0.32.0"
- },
- "optionalDependencies": {
- "onnxruntime-node": "1.14.0"
- }
- },
- "node_modules/@xstate/react": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@xstate/react/-/react-6.1.0.tgz",
- "integrity": "sha512-ep9F0jGTI63B/jE8GHdMpUqtuz7yRebNaKv8EMUaiSi29NOglywc2X2YSOV/ygbIK+LtmgZ0q9anoEA2iBSEOw==",
- "license": "MIT",
- "dependencies": {
- "use-isomorphic-layout-effect": "^1.1.2",
- "use-sync-external-store": "^1.2.0"
- },
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "xstate": "^5.28.0"
- },
- "peerDependenciesMeta": {
- "xstate": {
- "optional": true
- }
- }
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/accepts": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
- "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
- "license": "MIT",
- "dependencies": {
- "mime-types": "^3.0.0",
- "negotiator": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/accepts/node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/accepts/node_modules/mime-types": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "^1.54.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/accepts/node_modules/negotiator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
- "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "8.17.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
- "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "8.3.5",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
- "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "acorn": "^8.11.0"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
- "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/agentkeepalive": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
- "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "humanize-ms": "^1.2.1"
- },
- "engines": {
- "node": ">= 8.0.0"
- }
- },
- "node_modules/aggregate-error": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
- "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clean-stack": "^2.0.0",
- "indent-string": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ajv": {
- "version": "8.20.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
- "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-formats": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
- "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
- "license": "MIT",
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/apache-arrow": {
- "version": "18.1.0",
- "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.1.0.tgz",
- "integrity": "sha512-v/ShMp57iBnBp4lDgV8Jx3d3Q5/Hac25FWmQ98eMahUiHPXcvwIMKJD0hBIgclm/FCG+LwPkAKtkRO1O/W0YGg==",
- "license": "Apache-2.0",
- "peer": true,
- "dependencies": {
- "@swc/helpers": "^0.5.11",
- "@types/command-line-args": "^5.2.3",
- "@types/command-line-usage": "^5.0.4",
- "@types/node": "^20.13.0",
- "command-line-args": "^5.2.1",
- "command-line-usage": "^7.0.1",
- "flatbuffers": "^24.3.25",
- "json-bignum": "^0.0.3",
- "tslib": "^2.6.2"
- },
- "bin": {
- "arrow2csv": "bin/arrow2csv.js"
- }
- },
- "node_modules/app-module-path": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz",
- "integrity": "sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/array-back": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
- "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ast-module-types": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-6.0.2.tgz",
- "integrity": "sha512-6KuK/7nZ/2Qh7sGuVEiwxjCxzTY2Pdb5mTo5z1e6/J8BA0tvjR7G8vQJKrQMTqwmnA3UPEyKIFX4YUS1DO1Hvw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/azure-devops-node-api": {
- "version": "12.5.0",
- "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
- "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tunnel": "0.0.6",
- "typed-rest-client": "^1.8.4"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/bare-events": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz",
- "integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==",
- "license": "Apache-2.0",
- "peerDependencies": {
- "bare-abort-controller": "*"
- },
- "peerDependenciesMeta": {
- "bare-abort-controller": {
- "optional": true
- }
- }
- },
- "node_modules/bare-fs": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.2.tgz",
- "integrity": "sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==",
- "license": "Apache-2.0",
- "dependencies": {
- "bare-events": "^2.5.4",
- "bare-path": "^3.0.0",
- "bare-stream": "^2.6.4",
- "bare-url": "^2.2.2",
- "fast-fifo": "^1.3.2"
- },
- "engines": {
- "bare": ">=1.16.0"
- },
- "peerDependencies": {
- "bare-buffer": "*"
- },
- "peerDependenciesMeta": {
- "bare-buffer": {
- "optional": true
- }
- }
- },
- "node_modules/bare-os": {
- "version": "3.9.3",
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.3.tgz",
- "integrity": "sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==",
- "license": "Apache-2.0",
- "engines": {
- "bare": ">=1.14.0"
- }
- },
- "node_modules/bare-path": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.1.tgz",
- "integrity": "sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "bare-os": "^3.0.1"
- }
- },
- "node_modules/bare-stream": {
- "version": "2.13.3",
- "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.3.tgz",
- "integrity": "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "b4a": "^1.8.1",
- "streamx": "^2.25.0",
- "teex": "^1.0.1"
- },
- "peerDependencies": {
- "bare-abort-controller": "*",
- "bare-buffer": "*",
- "bare-events": "*"
- },
- "peerDependenciesMeta": {
- "bare-abort-controller": {
- "optional": true
- },
- "bare-buffer": {
- "optional": true
- },
- "bare-events": {
- "optional": true
- }
- }
- },
- "node_modules/bare-stream/node_modules/b4a": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz",
- "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==",
- "license": "Apache-2.0",
- "peerDependencies": {
- "react-native-b4a": "*"
- },
- "peerDependenciesMeta": {
- "react-native-b4a": {
- "optional": true
- }
- }
- },
- "node_modules/bare-url": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.5.tgz",
- "integrity": "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "bare-path": "^3.0.0"
- }
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/baseline-browser-mapping": {
- "version": "2.10.40",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz",
- "integrity": "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "baseline-browser-mapping": "dist/cli.cjs"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/better-sqlite3": {
- "version": "12.11.1",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz",
- "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==",
- "hasInstallScript": true,
- "license": "MIT",
- "dependencies": {
- "bindings": "^1.5.0",
- "prebuild-install": "^7.1.1"
- },
- "engines": {
- "node": "20.x || 22.x || 23.x || 24.x || 25.x || 26.x"
- }
- },
- "node_modules/bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "license": "MIT",
- "dependencies": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "license": "MIT",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/body-parser": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz",
- "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==",
- "license": "MIT",
- "dependencies": {
- "bytes": "^3.1.2",
- "content-type": "^2.0.0",
- "debug": "^4.4.3",
- "http-errors": "^2.0.1",
- "iconv-lite": "^0.7.2",
- "on-finished": "^2.4.1",
- "qs": "^6.15.2",
- "raw-body": "^3.0.2",
- "type-is": "^2.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/body-parser/node_modules/content-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
- "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/body-parser/node_modules/iconv-lite": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
- "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/brace-expansion": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
- "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/browserslist": {
- "version": "4.28.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz",
- "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "baseline-browser-mapping": "^2.10.38",
- "caniuse-lite": "^1.0.30001799",
- "electron-to-chromium": "^1.5.376",
- "node-releases": "^2.0.48",
- "update-browserslist-db": "^1.2.3"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/bundle-name": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
- "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "run-applescript": "^7.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacache": {
- "version": "16.1.3",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz",
- "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@npmcli/fs": "^2.1.0",
- "@npmcli/move-file": "^2.0.0",
- "chownr": "^2.0.0",
- "fs-minipass": "^2.1.0",
- "glob": "^8.0.1",
- "infer-owner": "^1.0.4",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "mkdirp": "^1.0.4",
- "p-map": "^4.0.0",
- "promise-inflight": "^1.0.1",
- "rimraf": "^3.0.2",
- "ssri": "^9.0.0",
- "tar": "^6.1.11",
- "unique-filename": "^2.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/cacache/node_modules/brace-expansion": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
- "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/cacache/node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacache/node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/cacache/node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cacache/node_modules/minimatch": {
- "version": "5.1.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
- "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/cacheable-lookup": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
- "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.6.0"
- }
- },
- "node_modules/cacheable-request": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
- "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^4.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^6.0.1",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cacheable-request/node_modules/get-stream": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/call-bind-apply-helpers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/call-bound": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
- "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "get-intrinsic": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001799",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz",
- "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/ccount": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
- "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/chai": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
- "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.3",
- "deep-eql": "^4.1.3",
- "get-func-name": "^2.0.2",
- "loupe": "^2.3.6",
- "pathval": "^1.1.1",
- "type-detect": "^4.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chalk-template": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
- "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "chalk": "^4.1.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk-template?sponsor=1"
- }
- },
- "node_modules/chalk-template/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/chalk-template/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/chalk-template/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/chalk-template/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "license": "MIT",
- "peer": true
- },
- "node_modules/chalk-template/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/chalk-template/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/character-entities-html4": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
- "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/character-entities-legacy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
- "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/check-error": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
- "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-func-name": "^2.0.2"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/cheerio": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
- "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.2.2",
- "encoding-sniffer": "^0.2.1",
- "htmlparser2": "^10.1.0",
- "parse5": "^7.3.0",
- "parse5-htmlparser2-tree-adapter": "^7.1.0",
- "parse5-parser-stream": "^7.1.2",
- "undici": "^7.19.0",
- "whatwg-mimetype": "^4.0.0"
- },
- "engines": {
- "node": ">=20.18.1"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
- }
- },
- "node_modules/cheerio-select": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
- "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "license": "ISC"
- },
- "node_modules/clean-stack": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
- "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-spinners": {
- "version": "2.9.2",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
- "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-response": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
- "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/clone-response/node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cockatiel": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz",
- "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/code-block-writer": {
- "version": "13.0.3",
- "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz",
- "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
- "license": "MIT"
- },
- "node_modules/color": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
- "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1",
- "color-string": "^1.9.0"
- },
- "engines": {
- "node": ">=12.5.0"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "license": "MIT"
- },
- "node_modules/color-string": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
- "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
- "license": "MIT",
- "dependencies": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
- "node_modules/color/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "license": "MIT"
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/comma-separated-tokens": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
- "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/command-line-args": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
- "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "array-back": "^3.1.0",
- "find-replace": "^3.0.0",
- "lodash.camelcase": "^4.3.0",
- "typical": "^4.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/command-line-usage": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.4.tgz",
- "integrity": "sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "array-back": "^6.2.2",
- "chalk-template": "^0.4.0",
- "table-layout": "^4.1.1",
- "typical": "^7.3.0"
- },
- "engines": {
- "node": ">=12.20.0"
- }
- },
- "node_modules/command-line-usage/node_modules/array-back": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
- "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=12.17"
- }
- },
- "node_modules/command-line-usage/node_modules/typical": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
- "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=12.17"
- }
- },
- "node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/concurrently": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz",
- "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.2",
- "date-fns": "^2.30.0",
- "lodash": "^4.17.21",
- "rxjs": "^7.8.1",
- "shell-quote": "^1.8.1",
- "spawn-command": "0.0.2",
- "supports-color": "^8.1.1",
- "tree-kill": "^1.2.2",
- "yargs": "^17.7.2"
- },
- "bin": {
- "conc": "dist/bin/concurrently.js",
- "concurrently": "dist/bin/concurrently.js"
- },
- "engines": {
- "node": "^14.13.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
- }
- },
- "node_modules/concurrently/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/concurrently/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/concurrently/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/concurrently/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/concurrently/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/concurrently/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/confbox": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
- "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/content-disposition": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
- "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/convert-source-map": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
- "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cookie": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
- "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
- "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
- "license": "MIT",
- "engines": {
- "node": ">=6.6.0"
- }
- },
- "node_modules/cors": {
- "version": "2.8.6",
- "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
- "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
- "license": "MIT",
- "dependencies": {
- "object-assign": "^4",
- "vary": "^1"
- },
- "engines": {
- "node": ">= 0.10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
- "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/css-select": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
- "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-what": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
- "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/csstype": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
- "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/date-fns": {
- "version": "2.30.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
- "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.21.0"
- },
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/debug": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
- "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
- "license": "MIT",
- "dependencies": {
- "ms": "^2.1.3"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "license": "MIT",
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/deep-eql": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
- "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-detect": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "license": "MIT",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/default-browser": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
- "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bundle-name": "^4.1.0",
- "default-browser-id": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/default-browser-id": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
- "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/defaults": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "clone": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/defer-to-connect": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
- "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/define-lazy-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
- "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/dependency-tree": {
- "version": "11.5.0",
- "resolved": "https://registry.npmjs.org/dependency-tree/-/dependency-tree-11.5.0.tgz",
- "integrity": "sha512-K9zBwKDZrot3RkxizugpVSdImxULAg4Ycp3+ydy2r561k96oiiw6nfsOR15fwNDQ5BF2UXe+2JFM/H5Xz4MGQg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@discoveryjs/json-ext": "^1.1.0",
- "commander": "^12.1.0",
- "filing-cabinet": "^5.5.1",
- "precinct": "^12.3.2",
- "typescript": "^5.9.3"
- },
- "bin": {
- "dependency-tree": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/dependency-tree/node_modules/commander": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
- "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
- "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
- "license": "Apache-2.0",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/detective-amd": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-6.1.0.tgz",
- "integrity": "sha512-fmI6LGMvotqd49QaA3ZYw+q0aGp2yXmMjzIuY6fH9j9YFIXY/73yDhMwhX9cPbhWd+AH06NH1Di/LKOuCH0Ubg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ast-module-types": "^6.0.1",
- "escodegen": "^2.1.0",
- "get-amd-module-type": "^6.0.2",
- "node-source-walk": "^7.0.1"
- },
- "bin": {
- "detective-amd": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/detective-cjs": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-6.1.1.tgz",
- "integrity": "sha512-pSh7mkCKEtLlmANqLu3KDFS3NV8Hx41jy/JF1/gAWOgU+Uo5QTkeI1tWNP4dWGo4L0E9j18Ez9EPsTleautKqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ast-module-types": "^6.0.1",
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/detective-es6": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-5.0.2.tgz",
- "integrity": "sha512-+qHHGYhjupiVs4rnIpI9nZ5B130A4AmE35ZX1w33hb46vcZ7T3jfDbvmPw0FhWtMHn5BS5HHu7ZtnZ53bMcXZA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/detective-postcss": {
- "version": "8.0.4",
- "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-8.0.4.tgz",
- "integrity": "sha512-DZ7M/hWPZyr17ZUdoQ+TVXaPj70mYr4XXrAE+GeJbca44haCvZgb191L/jLJmFYewhxRJuBd4lUtNSu986TXag==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-url-superb": "^4.0.0",
- "postcss-values-parser": "^6.0.2"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4.47"
- }
- },
- "node_modules/detective-sass": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-6.0.2.tgz",
- "integrity": "sha512-i3xpXHDKS0qI2aFW4asQ7fqlPK00ndOVZELvQapFJCaF0VxYmsNWtd0AmvXbTLMk7bfO5VdIeorhY9KfmHVoVA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "gonzales-pe": "^4.3.0",
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/detective-scss": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-5.0.2.tgz",
- "integrity": "sha512-9JOEMZ8pDh3ShXmftq7hoQqqJsClaGgxo1hghfCeFlmKf5TC/Twtwb0PAaK8dXwpg9Z0uCmEYSrCxO+kel2eEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "gonzales-pe": "^4.3.0",
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/detective-stylus": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-5.0.1.tgz",
- "integrity": "sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/detective-typescript": {
- "version": "14.1.2",
- "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-14.1.2.tgz",
- "integrity": "sha512-bIeEn0eVi/JRsE1YizBR2ilnMlWRAIBJJ6kXCKNFxEEWhUcEY3R6I3KYIAy48ieURbD1hcb3Ebvl8AqeoPMSzg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "^8.58.2",
- "ast-module-types": "^6.0.1",
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "typescript": "^5.4.4 || ^6.0.2"
- }
- },
- "node_modules/detective-vue2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/detective-vue2/-/detective-vue2-2.3.0.tgz",
- "integrity": "sha512-3gwbZPqVTm9sL9XdZsgEJ7x4x99O853VVZHapQAiEkGuMJMpFPjHDrecSgfqnS5JW3FJfYXesLZGvUOibjn49g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@dependents/detective-less": "^5.0.1",
- "@vue/compiler-sfc": "^3.5.32",
- "detective-es6": "^5.0.1",
- "detective-sass": "^6.0.1",
- "detective-scss": "^5.0.1",
- "detective-stylus": "^5.0.1",
- "detective-typescript": "^14.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "typescript": "^5.4.4 || ^6.0.2"
- }
- },
- "node_modules/devlop": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
- "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
- "license": "MIT",
- "dependencies": {
- "dequal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/diff": {
- "version": "5.2.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz",
- "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/diff-sequences": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
- "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
- "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "node_modules/domhandler": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
- "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
- "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dunder-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.1",
- "es-errors": "^1.3.0",
- "gopd": "^1.2.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "license": "MIT"
- },
- "node_modules/electron-to-chromium": {
- "version": "1.5.378",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.378.tgz",
- "integrity": "sha512-VinvOAuuPmdD1guEgGv5f2Qp7/vlfqOrUOMYNnOD4wj3pit8kRsQHzfIf6teyUGWo15Tg5+bOJaRunvyltpVWQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/encodeurl": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
- "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/encoding": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
- "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "iconv-lite": "^0.6.2"
- }
- },
- "node_modules/encoding-sniffer": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
- "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "^0.6.3",
- "whatwg-encoding": "^3.1.1"
- },
- "funding": {
- "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
- "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
- "license": "MIT",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/enhanced-resolve": {
- "version": "5.24.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.1.tgz",
- "integrity": "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.4",
- "tapable": "^2.3.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/err-code": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
- "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/es-define-property": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-object-atoms": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
- "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
- }
- },
- "node_modules/escalade": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
- "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "license": "MIT"
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/escodegen": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
- "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "license": "BSD-2-Clause",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estree-walker": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "^1.0.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/events-universal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
- "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
- "license": "Apache-2.0",
- "dependencies": {
- "bare-events": "^2.7.0"
- }
- },
- "node_modules/eventsource": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
- "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
- "license": "MIT",
- "dependencies": {
- "eventsource-parser": "^3.0.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/eventsource-parser": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.0.tgz",
- "integrity": "sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==",
- "license": "MIT",
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "license": "(MIT OR WTFPL)",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/exponential-backoff": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
- "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
- "dev": true,
- "license": "Apache-2.0"
- },
- "node_modules/express": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
- "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
- "license": "MIT",
- "dependencies": {
- "accepts": "^2.0.0",
- "body-parser": "^2.2.1",
- "content-disposition": "^1.0.0",
- "content-type": "^1.0.5",
- "cookie": "^0.7.1",
- "cookie-signature": "^1.2.1",
- "debug": "^4.4.0",
- "depd": "^2.0.0",
- "encodeurl": "^2.0.0",
- "escape-html": "^1.0.3",
- "etag": "^1.8.1",
- "finalhandler": "^2.1.0",
- "fresh": "^2.0.0",
- "http-errors": "^2.0.0",
- "merge-descriptors": "^2.0.0",
- "mime-types": "^3.0.0",
- "on-finished": "^2.4.1",
- "once": "^1.4.0",
- "parseurl": "^1.3.3",
- "proxy-addr": "^2.0.7",
- "qs": "^6.14.0",
- "range-parser": "^1.2.1",
- "router": "^2.2.0",
- "send": "^1.1.0",
- "serve-static": "^2.2.0",
- "statuses": "^2.0.1",
- "type-is": "^2.0.1",
- "vary": "^1.1.2"
- },
- "engines": {
- "node": ">= 18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/express-rate-limit": {
- "version": "8.5.2",
- "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz",
- "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==",
- "license": "MIT",
- "dependencies": {
- "ip-address": "^10.2.0"
- },
- "engines": {
- "node": ">= 16"
- },
- "funding": {
- "url": "https://github.com/sponsors/express-rate-limit"
- },
- "peerDependencies": {
- "express": ">= 4.11"
- }
- },
- "node_modules/express/node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express/node_modules/mime-types": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "^1.54.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "license": "MIT"
- },
- "node_modules/fast-fifo": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
- "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
- "license": "MIT"
- },
- "node_modules/fast-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
- "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fastify"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/fastify"
- }
- ],
- "license": "BSD-3-Clause"
- },
- "node_modules/fd-package-json": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fd-package-json/-/fd-package-json-2.0.0.tgz",
- "integrity": "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "walk-up-path": "^4.0.0"
- }
- },
- "node_modules/fd-slicer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pend": "~1.2.0"
- }
- },
- "node_modules/fdir": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
- "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "picomatch": "^3 || ^4"
- },
- "peerDependenciesMeta": {
- "picomatch": {
- "optional": true
- }
- }
- },
- "node_modules/file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
- "license": "MIT"
- },
- "node_modules/filing-cabinet": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/filing-cabinet/-/filing-cabinet-5.5.1.tgz",
- "integrity": "sha512-PzLBTChlVPn6LnNxF0KWs+XqPziVh3Sfmz/3TXOymHxu6a9yhrDcQn7YwgpcRM6mqhR2WHVGPR8RU4fmcF1IVA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "app-module-path": "^2.2.0",
- "commander": "^12.1.0",
- "enhanced-resolve": "^5.21.0",
- "module-definition": "^6.0.2",
- "module-lookup-amd": "^9.1.3",
- "resolve": "^1.22.12",
- "resolve-dependency-path": "^4.0.1",
- "sass-lookup": "^6.1.2",
- "stylus-lookup": "^6.1.2",
- "tsconfig-paths": "^4.2.0",
- "typescript": "^5.9.3"
- },
- "bin": {
- "filing-cabinet": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/filing-cabinet/node_modules/commander": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
- "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/finalhandler": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
- "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.4.0",
- "encodeurl": "^2.0.0",
- "escape-html": "^1.0.3",
- "on-finished": "^2.4.1",
- "parseurl": "^1.3.3",
- "statuses": "^2.0.1"
- },
- "engines": {
- "node": ">= 18.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/find-replace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
- "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "array-back": "^3.0.1"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/flatbuffers": {
- "version": "24.12.23",
- "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.12.23.tgz",
- "integrity": "sha512-dLVCAISd5mhls514keQzmEG6QHmUUsNuWsb4tFafIUwvvgDjXhtfAYSKOzt5SWOy+qByV5pbsDZ+Vb7HUOBEdA==",
- "license": "Apache-2.0",
- "peer": true
- },
- "node_modules/form-data": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
- "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "es-set-tostringtag": "^2.1.0",
- "hasown": "^2.0.4",
- "mime-types": "^2.1.35"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/formatly": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/formatly/-/formatly-0.3.0.tgz",
- "integrity": "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fd-package-json": "^2.0.0"
- },
- "bin": {
- "formatly": "bin/index.mjs"
- },
- "engines": {
- "node": ">=18.3.0"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/framer-motion": {
- "version": "12.42.0",
- "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.42.0.tgz",
- "integrity": "sha512-wp7EJnfWaaEScVygKv3e20udoRz+LbtxScsuTkakAxfXmt+ReC6WyPW2nINRAGvd+hG9odwcjBLyOTPjH5pBRA==",
- "license": "MIT",
- "dependencies": {
- "motion-dom": "^12.42.0",
- "motion-utils": "^12.39.0",
- "tslib": "^2.4.0"
- },
- "peerDependencies": {
- "@emotion/is-prop-valid": "*",
- "react": "^18.0.0 || ^19.0.0",
- "react-dom": "^18.0.0 || ^19.0.0"
- },
- "peerDependenciesMeta": {
- "@emotion/is-prop-valid": {
- "optional": true
- },
- "react": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
- "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "license": "MIT"
- },
- "node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/fs-minipass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
- "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-amd-module-type": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-6.0.2.tgz",
- "integrity": "sha512-7zShVYAYtMnj9S65CfN+hvpBCByfuB1OY8xID01nZEzXTZbx4YyysAfi+nMl95JSR6odt4q8TCj2W63KAoyVLQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ast-module-types": "^6.0.1",
- "node-source-walk": "^7.0.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-func-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
- "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "license": "MIT",
- "dependencies": {
- "call-bind-apply-helpers": "^1.0.2",
- "es-define-property": "^1.0.1",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.1.1",
- "function-bind": "^1.1.2",
- "get-proto": "^1.0.1",
- "gopd": "^1.2.0",
- "has-symbols": "^1.1.0",
- "hasown": "^2.0.2",
- "math-intrinsics": "^1.1.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-own-enumerable-property-symbols": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
- "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/get-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "license": "MIT",
- "dependencies": {
- "dunder-proto": "^1.0.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-tsconfig": {
- "version": "4.14.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
- "integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "resolve-pkg-maps": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
- }
- },
- "node_modules/github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
- "license": "MIT"
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/gonzales-pe": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz",
- "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "gonzales": "bin/gonzales.js"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/gopd": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/got": {
- "version": "11.8.6",
- "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
- "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sindresorhus/is": "^4.0.0",
- "@szmarczak/http-timer": "^4.0.5",
- "@types/cacheable-request": "^6.0.1",
- "@types/responselike": "^1.0.0",
- "cacheable-lookup": "^5.0.3",
- "cacheable-request": "^7.0.2",
- "decompress-response": "^6.0.0",
- "http2-wrapper": "^1.0.0-beta.5.2",
- "lowercase-keys": "^2.0.0",
- "p-cancelable": "^2.0.0",
- "responselike": "^2.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/got?sponsor=1"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/guid-typescript": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
- "integrity": "sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==",
- "license": "ISC"
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
- "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/hast-util-to-html": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
- "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/unist": "^3.0.0",
- "ccount": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "hast-util-whitespace": "^3.0.0",
- "html-void-elements": "^3.0.0",
- "mdast-util-to-hast": "^13.0.0",
- "property-information": "^7.0.0",
- "space-separated-tokens": "^2.0.0",
- "stringify-entities": "^4.0.0",
- "zwitch": "^2.0.4"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hast-util-whitespace": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
- "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/hono": {
- "version": "4.12.27",
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.27.tgz",
- "integrity": "sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==",
- "license": "MIT",
- "engines": {
- "node": ">=16.9.0"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/html-void-elements": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
- "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/htmlparser2": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
- "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
- "dev": true,
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.2.2",
- "entities": "^7.0.1"
- }
- },
- "node_modules/htmlparser2/node_modules/entities": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
- "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/http-cache-semantics": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
- "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/http-errors": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
- "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
- "license": "MIT",
- "dependencies": {
- "depd": "~2.0.0",
- "inherits": "~2.0.4",
- "setprototypeof": "~1.2.0",
- "statuses": "~2.0.2",
- "toidentifier": "~1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/http2-wrapper": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
- "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "quick-lru": "^5.1.1",
- "resolve-alpn": "^1.0.0"
- },
- "engines": {
- "node": ">=10.19.0"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "7.0.6",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
- "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "^7.1.2",
- "debug": "4"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=16.17.0"
- }
- },
- "node_modules/humanize-ms": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "^2.0.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "BSD-3-Clause"
- },
- "node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/infer-owner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "license": "ISC"
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "license": "ISC"
- },
- "node_modules/ip-address": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
- "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
- "license": "MIT",
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz",
- "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==",
- "license": "MIT"
- },
- "node_modules/is-core-module": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz",
- "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hasown": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-docker": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
- "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-inside-container": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
- "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-docker": "^3.0.0"
- },
- "bin": {
- "is-inside-container": "cli.js"
- },
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-interactive": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-lambda": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz",
- "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-promise": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
- "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
- "license": "MIT"
- },
- "node_modules/is-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
- "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-url-superb": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz",
- "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-wsl": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
- "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-inside-container": "^1.0.0"
- },
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "license": "ISC"
- },
- "node_modules/jiti": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
- "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jiti": "lib/jiti-cli.mjs"
- }
- },
- "node_modules/jose": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz",
- "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/panva"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "license": "MIT"
- },
- "node_modules/jsesc": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
- "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/json-bignum": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz",
- "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==",
- "peer": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "license": "MIT"
- },
- "node_modules/json-schema-typed": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
- "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
- "license": "BSD-2-Clause"
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonc-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
- "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jsonfile": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
- "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonwebtoken": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
- "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jws": "^4.0.1",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">=12",
- "npm": ">=6"
- }
- },
- "node_modules/jsonwebtoken/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jwa": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
- "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-equal-constant-time": "^1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/jws": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
- "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jwa": "^2.0.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "node_modules/keytar": {
- "version": "7.9.0",
- "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
- "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
- "dev": true,
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "node-addon-api": "^4.3.0",
- "prebuild-install": "^7.0.1"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/knip": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/knip/-/knip-6.21.0.tgz",
- "integrity": "sha512-q7K9VGSFfdVaCjhj9u+5aI2t5CZt3edZeLi+1wjnGAvYB2WfW6+T9UWAREsTR88aB8YeDqkKVZiVMV7va3oTmg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/webpro"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/knip"
- }
- ],
- "license": "ISC",
- "dependencies": {
- "fdir": "^6.5.0",
- "formatly": "^0.3.0",
- "get-tsconfig": "4.14.0",
- "jiti": "^2.7.0",
- "oxc-parser": "^0.137.0",
- "oxc-resolver": "11.21.3",
- "picomatch": "^4.0.4",
- "smol-toml": "^1.6.1",
- "strip-json-comments": "5.0.3",
- "tinyglobby": "^0.2.17",
- "unbash": "^4.0.1",
- "yaml": "^2.9.0",
- "zod": "^4.1.11"
- },
- "bin": {
- "knip": "bin/knip.js",
- "knip-bun": "bin/knip-bun.js"
- },
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/knip/node_modules/strip-json-comments": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz",
- "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/knip/node_modules/zod": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
- "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
- },
- "node_modules/leven": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
- "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/linkify-it": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
- "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "uc.micro": "^1.0.1"
- }
- },
- "node_modules/local-pkg": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz",
- "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mlly": "^1.7.3",
- "pkg-types": "^1.2.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/lodash": {
- "version": "4.18.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
- "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
- "license": "MIT",
- "peer": true
- },
- "node_modules/lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isstring": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
- "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-symbols/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/log-symbols/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-symbols/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-symbols/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==",
- "license": "Apache-2.0"
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/loupe": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
- "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-func-name": "^2.0.1"
- }
- },
- "node_modules/lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/madge": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/madge/-/madge-8.0.0.tgz",
- "integrity": "sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.2",
- "commander": "^7.2.0",
- "commondir": "^1.0.1",
- "debug": "^4.3.4",
- "dependency-tree": "^11.0.0",
- "ora": "^5.4.1",
- "pluralize": "^8.0.0",
- "pretty-ms": "^7.0.1",
- "rc": "^1.2.8",
- "stream-to-array": "^2.3.0",
- "ts-graphviz": "^2.1.2",
- "walkdir": "^0.4.1"
- },
- "bin": {
- "madge": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "individual",
- "url": "https://www.paypal.me/pahen"
- },
- "peerDependencies": {
- "typescript": "^5.4.4"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/madge/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/madge/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/madge/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/madge/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/madge/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/madge/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/madge/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/magic-string": {
- "version": "0.30.21",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
- "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.5"
- }
- },
- "node_modules/make-fetch-happen": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz",
- "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "agentkeepalive": "^4.2.1",
- "cacache": "^16.1.0",
- "http-cache-semantics": "^4.1.0",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "is-lambda": "^1.0.1",
- "lru-cache": "^7.7.1",
- "minipass": "^3.1.6",
- "minipass-collect": "^1.0.2",
- "minipass-fetch": "^2.0.3",
- "minipass-flush": "^1.0.5",
- "minipass-pipeline": "^1.2.4",
- "negotiator": "^0.6.3",
- "promise-retry": "^2.0.1",
- "socks-proxy-agent": "^7.0.0",
- "ssri": "^9.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/make-fetch-happen/node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/make-fetch-happen/node_modules/http-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "2",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/make-fetch-happen/node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/markdown-it": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
- "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.js"
- }
- },
- "node_modules/markdown-it/node_modules/entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/math-intrinsics": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/mdast-util-to-hast": {
- "version": "13.2.1",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
- "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
- "license": "MIT",
- "dependencies": {
- "@types/hast": "^3.0.0",
- "@types/mdast": "^4.0.0",
- "@ungap/structured-clone": "^1.0.0",
- "devlop": "^1.0.0",
- "micromark-util-sanitize-uri": "^2.0.0",
- "trim-lines": "^3.0.0",
- "unist-util-position": "^5.0.0",
- "unist-util-visit": "^5.0.0",
- "vfile": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/media-typer": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
- "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
- "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/micromark-util-character": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
- "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-symbol": "^2.0.0",
- "micromark-util-types": "^2.0.0"
- }
- },
- "node_modules/micromark-util-encode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
- "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-sanitize-uri": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
- "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "micromark-util-character": "^2.0.0",
- "micromark-util-encode": "^2.0.0",
- "micromark-util-symbol": "^2.0.0"
- }
- },
- "node_modules/micromark-util-symbol": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
- "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/micromark-util-types": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
- "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "license": "MIT"
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minipass": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
- "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-collect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
- "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minipass-fetch": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz",
- "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minipass": "^3.1.6",
- "minipass-sized": "^1.0.3",
- "minizlib": "^2.1.2"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "encoding": "^0.1.13"
- }
- },
- "node_modules/minipass-flush": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz",
- "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minipass-pipeline": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
- "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass-sized": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz",
- "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/minipass/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/minizlib": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
- "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minipass": "^3.0.0",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/minizlib/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/mkdirp": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
- "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "mkdirp": "bin/cmd.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "license": "MIT"
- },
- "node_modules/mlly": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz",
- "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "acorn": "^8.16.0",
- "pathe": "^2.0.3",
- "pkg-types": "^1.3.1",
- "ufo": "^1.6.3"
- }
- },
- "node_modules/mlly/node_modules/pathe": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/module-definition": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-6.0.2.tgz",
- "integrity": "sha512-SvAU3lB0+Yjbq55yHY3wkRZBOh+fhU1SnIF3IFbTewv6mtAh7yUT8ACHAJ2mGIJ7tCes2QuCL/cl6m0JSZ/ArA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ast-module-types": "^6.0.1",
- "node-source-walk": "^7.0.1"
- },
- "bin": {
- "module-definition": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/module-lookup-amd": {
- "version": "9.1.3",
- "resolved": "https://registry.npmjs.org/module-lookup-amd/-/module-lookup-amd-9.1.3.tgz",
- "integrity": "sha512-Jc3XmOaR9FdfMJSK8+vyLgsCkzm8z2L0NS6vrlRWi12DjS7MY7TMNE7E1yj8yXx837xtMDbKSSgcdXnFlJ2YLg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "commander": "^12.1.0",
- "requirejs": "^2.3.8",
- "requirejs-config-file": "^4.0.0"
- },
- "bin": {
- "lookup-amd": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/module-lookup-amd/node_modules/commander": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
- "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/motion-dom": {
- "version": "12.42.0",
- "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.42.0.tgz",
- "integrity": "sha512-M63h4n8R+quJdNhBwuLlgxM+OLYa9+I/T2pzDRboB9fLXRdbou+Gw7Zury+SkpaCyACP1JHSjHgZ1EgTkBr30w==",
- "license": "MIT",
- "dependencies": {
- "motion-utils": "^12.39.0"
- }
- },
- "node_modules/motion-utils": {
- "version": "12.39.0",
- "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.39.0.tgz",
- "integrity": "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==",
- "license": "MIT"
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "license": "MIT"
- },
- "node_modules/mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/nanoid": {
- "version": "5.1.16",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.16.tgz",
- "integrity": "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.js"
- },
- "engines": {
- "node": "^18 || >=20"
- }
- },
- "node_modules/napi-build-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
- "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
- "license": "MIT"
- },
- "node_modules/negotiator": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
- "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/node-abi": {
- "version": "3.92.0",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz",
- "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==",
- "license": "MIT",
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-abi/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-addon-api": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
- "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/node-api-version": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.1.tgz",
- "integrity": "sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.3.5"
- }
- },
- "node_modules/node-api-version/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.50",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz",
- "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/node-source-walk": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-7.0.2.tgz",
- "integrity": "sha512-71kFFjYaSshDTA8/a2HiTYPLdASWjLJxUyJxGE+ffxU+KhxSBtM9kiLUX+R2yooFdSFKMFpi4n3PFtDy6qXv8A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.29.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/nopt": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
- "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "abbrev": "^1.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/normalize-url": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
- "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.4",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
- "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/oniguruma-parser": {
- "version": "0.12.2",
- "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz",
- "integrity": "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==",
- "license": "MIT"
- },
- "node_modules/oniguruma-to-es": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz",
- "integrity": "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==",
- "license": "MIT",
- "dependencies": {
- "oniguruma-parser": "^0.12.2",
- "regex": "^6.1.0",
- "regex-recursion": "^6.0.2"
- }
- },
- "node_modules/onnx-proto": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/onnx-proto/-/onnx-proto-4.0.4.tgz",
- "integrity": "sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==",
- "license": "MIT",
- "dependencies": {
- "protobufjs": "^6.8.8"
- }
- },
- "node_modules/onnxruntime-common": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/onnxruntime-common/-/onnxruntime-common-1.14.0.tgz",
- "integrity": "sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==",
- "license": "MIT"
- },
- "node_modules/onnxruntime-node": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/onnxruntime-node/-/onnxruntime-node-1.14.0.tgz",
- "integrity": "sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==",
- "license": "MIT",
- "optional": true,
- "os": [
- "win32",
- "darwin",
- "linux"
- ],
- "dependencies": {
- "onnxruntime-common": "~1.14.0"
- }
- },
- "node_modules/onnxruntime-web": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/onnxruntime-web/-/onnxruntime-web-1.14.0.tgz",
- "integrity": "sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==",
- "license": "MIT",
- "dependencies": {
- "flatbuffers": "^1.12.0",
- "guid-typescript": "^1.0.9",
- "long": "^4.0.0",
- "onnx-proto": "^4.0.4",
- "onnxruntime-common": "~1.14.0",
- "platform": "^1.3.6"
- }
- },
- "node_modules/onnxruntime-web/node_modules/flatbuffers": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-1.12.0.tgz",
- "integrity": "sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==",
- "license": "SEE LICENSE IN LICENSE.txt"
- },
- "node_modules/open": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
- "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "default-browser": "^5.2.1",
- "define-lazy-prop": "^3.0.0",
- "is-inside-container": "^1.0.0",
- "wsl-utils": "^0.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/ora/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ora/node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/oxc-parser": {
- "version": "0.137.0",
- "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.137.0.tgz",
- "integrity": "sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@oxc-project/types": "^0.137.0"
- },
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/Boshen"
- },
- "optionalDependencies": {
- "@oxc-parser/binding-android-arm-eabi": "0.137.0",
- "@oxc-parser/binding-android-arm64": "0.137.0",
- "@oxc-parser/binding-darwin-arm64": "0.137.0",
- "@oxc-parser/binding-darwin-x64": "0.137.0",
- "@oxc-parser/binding-freebsd-x64": "0.137.0",
- "@oxc-parser/binding-linux-arm-gnueabihf": "0.137.0",
- "@oxc-parser/binding-linux-arm-musleabihf": "0.137.0",
- "@oxc-parser/binding-linux-arm64-gnu": "0.137.0",
- "@oxc-parser/binding-linux-arm64-musl": "0.137.0",
- "@oxc-parser/binding-linux-ppc64-gnu": "0.137.0",
- "@oxc-parser/binding-linux-riscv64-gnu": "0.137.0",
- "@oxc-parser/binding-linux-riscv64-musl": "0.137.0",
- "@oxc-parser/binding-linux-s390x-gnu": "0.137.0",
- "@oxc-parser/binding-linux-x64-gnu": "0.137.0",
- "@oxc-parser/binding-linux-x64-musl": "0.137.0",
- "@oxc-parser/binding-openharmony-arm64": "0.137.0",
- "@oxc-parser/binding-wasm32-wasi": "0.137.0",
- "@oxc-parser/binding-win32-arm64-msvc": "0.137.0",
- "@oxc-parser/binding-win32-ia32-msvc": "0.137.0",
- "@oxc-parser/binding-win32-x64-msvc": "0.137.0"
- }
- },
- "node_modules/oxc-resolver": {
- "version": "11.21.3",
- "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-11.21.3.tgz",
- "integrity": "sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/Boshen"
- },
- "optionalDependencies": {
- "@oxc-resolver/binding-android-arm-eabi": "11.21.3",
- "@oxc-resolver/binding-android-arm64": "11.21.3",
- "@oxc-resolver/binding-darwin-arm64": "11.21.3",
- "@oxc-resolver/binding-darwin-x64": "11.21.3",
- "@oxc-resolver/binding-freebsd-x64": "11.21.3",
- "@oxc-resolver/binding-linux-arm-gnueabihf": "11.21.3",
- "@oxc-resolver/binding-linux-arm-musleabihf": "11.21.3",
- "@oxc-resolver/binding-linux-arm64-gnu": "11.21.3",
- "@oxc-resolver/binding-linux-arm64-musl": "11.21.3",
- "@oxc-resolver/binding-linux-ppc64-gnu": "11.21.3",
- "@oxc-resolver/binding-linux-riscv64-gnu": "11.21.3",
- "@oxc-resolver/binding-linux-riscv64-musl": "11.21.3",
- "@oxc-resolver/binding-linux-s390x-gnu": "11.21.3",
- "@oxc-resolver/binding-linux-x64-gnu": "11.21.3",
- "@oxc-resolver/binding-linux-x64-musl": "11.21.3",
- "@oxc-resolver/binding-openharmony-arm64": "11.21.3",
- "@oxc-resolver/binding-wasm32-wasi": "11.21.3",
- "@oxc-resolver/binding-win32-arm64-msvc": "11.21.3",
- "@oxc-resolver/binding-win32-x64-msvc": "11.21.3"
- }
- },
- "node_modules/p-cancelable": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
- "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-limit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz",
- "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^1.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-map": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
- "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "aggregate-error": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse-ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
- "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-semver": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
- "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^5.1.0"
- }
- },
- "node_modules/parse-semver/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/parse5": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
- "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "entities": "^6.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
- "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "domhandler": "^5.0.3",
- "parse5": "^7.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5-parser-stream": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
- "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parse5": "^7.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5/node_modules/entities": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
- "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-browserify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
- "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
- "license": "MIT"
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/path-to-regexp": {
- "version": "8.4.2",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
- "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/pathe": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
- "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pkce-challenge": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
- "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
- "license": "MIT",
- "engines": {
- "node": ">=16.20.0"
- }
- },
- "node_modules/pkg-types": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
- "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "confbox": "^0.1.8",
- "mlly": "^1.7.4",
- "pathe": "^2.0.1"
- }
- },
- "node_modules/pkg-types/node_modules/pathe": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
- "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/platform": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
- "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
- "license": "MIT"
- },
- "node_modules/pluralize": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
- "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/postcss": {
- "version": "8.5.15",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz",
- "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "nanoid": "^3.3.12",
- "picocolors": "^1.1.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/postcss-values-parser": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz",
- "integrity": "sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==",
- "dev": true,
- "license": "MPL-2.0",
- "dependencies": {
- "color-name": "^1.1.4",
- "is-url-superb": "^4.0.0",
- "quote-unquote": "^1.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "postcss": "^8.2.9"
- }
- },
- "node_modules/postcss-values-parser/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/postcss/node_modules/nanoid": {
- "version": "3.3.15",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz",
- "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/prebuild-install": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
- "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
- "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.",
- "license": "MIT",
- "dependencies": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^2.0.0",
- "node-abi": "^3.3.0",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^4.0.0",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "bin": {
- "prebuild-install": "bin.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/precinct": {
- "version": "12.3.2",
- "resolved": "https://registry.npmjs.org/precinct/-/precinct-12.3.2.tgz",
- "integrity": "sha512-JbJevI1K80z8e/WIyDt/4vUN/4qcfBSKKqOjJA4mosPPPb7zODKRJQV7YN7apVWN3k58nZYm/vEsLgEGYmnxwg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@dependents/detective-less": "^5.0.3",
- "commander": "^12.1.0",
- "detective-amd": "^6.1.0",
- "detective-cjs": "^6.1.1",
- "detective-es6": "^5.0.2",
- "detective-postcss": "^8.0.3",
- "detective-sass": "^6.0.2",
- "detective-scss": "^5.0.2",
- "detective-stylus": "^5.0.1",
- "detective-typescript": "^14.1.2",
- "detective-vue2": "^2.3.0",
- "module-definition": "^6.0.2",
- "node-source-walk": "^7.0.2",
- "postcss": "^8.5.14",
- "typescript": "^5.9.3"
- },
- "bin": {
- "precinct": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/precinct/node_modules/commander": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
- "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/pretty-ms": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
- "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parse-ms": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/proc-log": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz",
- "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/promise-retry": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
- "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "err-code": "^2.0.2",
- "retry": "^0.12.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/property-information": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
- "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/protobufjs": {
- "version": "6.11.6",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.6.tgz",
- "integrity": "sha512-k8BHqgPBOtrlougZZqF2uUk5Z7bN8f0wj+3e8M3hvtSv0NBAz4VBy5f6R5Nxq/l+i7mRFTgNZb2trxqTpHNY/A==",
- "hasInstallScript": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.1",
- "@types/node": ">=13.7.0",
- "long": "^4.0.0"
- },
- "bin": {
- "pbjs": "bin/pbjs",
- "pbts": "bin/pbts"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "license": "MIT",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/pump": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
- "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/qs": {
- "version": "6.15.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
- "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
- "license": "BSD-3-Clause",
- "dependencies": {
- "es-define-property": "^1.0.1",
- "side-channel": "^1.1.1"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/quick-lru": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/quote-unquote": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz",
- "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/range-parser": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz",
- "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/raw-body": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
- "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
- "license": "MIT",
- "dependencies": {
- "bytes": "~3.1.2",
- "http-errors": "~2.0.1",
- "iconv-lite": "~0.7.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/raw-body/node_modules/iconv-lite": {
- "version": "0.7.2",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
- "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/react": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
- "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
- "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.2"
- },
- "peerDependencies": {
- "react": "^18.3.1"
- }
- },
- "node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/react-refresh": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
- "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/read": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
- "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "mute-stream": "~0.0.4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/read-binary-file-arch": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz",
- "integrity": "sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "^4.3.4"
- },
- "bin": {
- "read-binary-file-arch": "cli.js"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/reflect-metadata": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
- "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
- "license": "Apache-2.0"
- },
- "node_modules/regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz",
- "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==",
- "license": "MIT",
- "dependencies": {
- "regex-utilities": "^2.3.0"
- }
- },
- "node_modules/regex-recursion": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz",
- "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==",
- "license": "MIT",
- "dependencies": {
- "regex-utilities": "^2.3.0"
- }
- },
- "node_modules/regex-utilities": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
- "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
- "license": "MIT"
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/requirejs": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.8.tgz",
- "integrity": "sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "r_js": "bin/r.js",
- "r.js": "bin/r.js"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/requirejs-config-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz",
- "integrity": "sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esprima": "^4.0.0",
- "stringify-object": "^3.2.1"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.12",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
- "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "is-core-module": "^2.16.1",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-alpn": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/resolve-dependency-path": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dependency-path/-/resolve-dependency-path-4.0.1.tgz",
- "integrity": "sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/resolve-pkg-maps": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
- "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
- }
- },
- "node_modules/responselike": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
- "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lowercase-keys": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/restore-cursor/node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/restore-cursor/node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/restore-cursor/node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/retry": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
- "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "deprecated": "Rimraf versions prior to v4 are no longer supported",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rollup": {
- "version": "4.62.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz",
- "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "1.0.9"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.62.2",
- "@rollup/rollup-android-arm64": "4.62.2",
- "@rollup/rollup-darwin-arm64": "4.62.2",
- "@rollup/rollup-darwin-x64": "4.62.2",
- "@rollup/rollup-freebsd-arm64": "4.62.2",
- "@rollup/rollup-freebsd-x64": "4.62.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.62.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.62.2",
- "@rollup/rollup-linux-arm64-gnu": "4.62.2",
- "@rollup/rollup-linux-arm64-musl": "4.62.2",
- "@rollup/rollup-linux-loong64-gnu": "4.62.2",
- "@rollup/rollup-linux-loong64-musl": "4.62.2",
- "@rollup/rollup-linux-ppc64-gnu": "4.62.2",
- "@rollup/rollup-linux-ppc64-musl": "4.62.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.62.2",
- "@rollup/rollup-linux-riscv64-musl": "4.62.2",
- "@rollup/rollup-linux-s390x-gnu": "4.62.2",
- "@rollup/rollup-linux-x64-gnu": "4.62.2",
- "@rollup/rollup-linux-x64-musl": "4.62.2",
- "@rollup/rollup-openbsd-x64": "4.62.2",
- "@rollup/rollup-openharmony-arm64": "4.62.2",
- "@rollup/rollup-win32-arm64-msvc": "4.62.2",
- "@rollup/rollup-win32-ia32-msvc": "4.62.2",
- "@rollup/rollup-win32-x64-gnu": "4.62.2",
- "@rollup/rollup-win32-x64-msvc": "4.62.2",
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/router": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
- "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.4.0",
- "depd": "^2.0.0",
- "is-promise": "^4.0.0",
- "parseurl": "^1.3.3",
- "path-to-regexp": "^8.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/run-applescript": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
- "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/rxjs": {
- "version": "7.8.2",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
- "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "license": "MIT"
- },
- "node_modules/sass-lookup": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/sass-lookup/-/sass-lookup-6.1.2.tgz",
- "integrity": "sha512-GjmndmKQBtlPil79RK72L7yc5kDXZPCQeH97bP8R8DcxtXQJO6vECExb3WP/m6+cxaV9h4ZxrSRvCkPG2v/VSw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "commander": "^12.1.0",
- "enhanced-resolve": "^5.20.0"
- },
- "bin": {
- "sass-lookup": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/sass-lookup/node_modules/commander": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
- "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/sax": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
- "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "engines": {
- "node": ">=11.0.0"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
- "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/send": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
- "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
- "license": "MIT",
- "dependencies": {
- "debug": "^4.4.3",
- "encodeurl": "^2.0.0",
- "escape-html": "^1.0.3",
- "etag": "^1.8.1",
- "fresh": "^2.0.0",
- "http-errors": "^2.0.1",
- "mime-types": "^3.0.2",
- "ms": "^2.1.3",
- "on-finished": "^2.4.1",
- "range-parser": "^1.2.1",
- "statuses": "^2.0.2"
- },
- "engines": {
- "node": ">= 18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/send/node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/send/node_modules/mime-types": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "^1.54.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/serve-static": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
- "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
- "license": "MIT",
- "dependencies": {
- "encodeurl": "^2.0.0",
- "escape-html": "^1.0.3",
- "parseurl": "^1.3.3",
- "send": "^1.2.0"
- },
- "engines": {
- "node": ">= 18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "license": "ISC"
- },
- "node_modules/sharp": {
- "version": "0.32.6",
- "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
- "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
- "hasInstallScript": true,
- "license": "Apache-2.0",
- "dependencies": {
- "color": "^4.2.3",
- "detect-libc": "^2.0.2",
- "node-addon-api": "^6.1.0",
- "prebuild-install": "^7.1.1",
- "semver": "^7.5.4",
- "simple-get": "^4.0.1",
- "tar-fs": "^3.0.4",
- "tunnel-agent": "^0.6.0"
- },
- "engines": {
- "node": ">=14.15.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/sharp/node_modules/b4a": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz",
- "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==",
- "license": "Apache-2.0",
- "peerDependencies": {
- "react-native-b4a": "*"
- },
- "peerDependenciesMeta": {
- "react-native-b4a": {
- "optional": true
- }
- }
- },
- "node_modules/sharp/node_modules/node-addon-api": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
- "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
- "license": "MIT"
- },
- "node_modules/sharp/node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/sharp/node_modules/tar-fs": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.3.tgz",
- "integrity": "sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==",
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0",
- "tar-stream": "^3.1.5"
- },
- "optionalDependencies": {
- "bare-fs": "^4.0.1",
- "bare-path": "^3.0.0"
- }
- },
- "node_modules/sharp/node_modules/tar-stream": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz",
- "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==",
- "license": "MIT",
- "dependencies": {
- "b4a": "^1.6.4",
- "bare-fs": "^4.5.5",
- "fast-fifo": "^1.2.0",
- "streamx": "^2.15.0"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shell-quote": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz",
- "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/shiki": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.3.0.tgz",
- "integrity": "sha512-NKKjWzR6LIGL3sXBrWDw9sDS9cxx42/DkysaNqJEeOWE8Kix5gpak0bc00OfDVEO4oyXSyz8+aRaqKoBD1yo7A==",
- "license": "MIT",
- "dependencies": {
- "@shikijs/core": "4.3.0",
- "@shikijs/engine-javascript": "4.3.0",
- "@shikijs/engine-oniguruma": "4.3.0",
- "@shikijs/langs": "4.3.0",
- "@shikijs/themes": "4.3.0",
- "@shikijs/types": "4.3.0",
- "@shikijs/vscode-textmate": "^10.0.2",
- "@types/hast": "^3.0.4"
- },
- "engines": {
- "node": ">=20"
- }
- },
- "node_modules/side-channel": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
- "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.4",
- "side-channel-list": "^1.0.1",
- "side-channel-map": "^1.0.1",
- "side-channel-weakmap": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-list": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
- "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
- "license": "MIT",
- "dependencies": {
- "es-errors": "^1.3.0",
- "object-inspect": "^1.13.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
- "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/side-channel-weakmap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
- "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.5",
- "object-inspect": "^1.13.3",
- "side-channel-map": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/siginfo": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "node_modules/simple-git": {
- "version": "3.36.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz",
- "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==",
- "license": "MIT",
- "dependencies": {
- "@kwsites/file-exists": "^1.1.1",
- "@kwsites/promise-deferred": "^1.1.1",
- "@simple-git/args-pathspec": "^1.0.3",
- "@simple-git/argv-parser": "^1.1.0",
- "debug": "^4.4.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/steveukx/git-js?sponsor=1"
- }
- },
- "node_modules/simple-swizzle": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz",
- "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==",
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.3.1"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/smol-toml": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.0.tgz",
- "integrity": "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 18"
- },
- "funding": {
- "url": "https://github.com/sponsors/cyyynthia"
- }
- },
- "node_modules/socks": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz",
- "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ip-address": "^10.1.1",
- "smart-buffer": "^4.2.0"
- },
- "engines": {
- "node": ">= 10.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socks-proxy-agent": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz",
- "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "^6.0.2",
- "debug": "^4.3.3",
- "socks": "^2.6.2"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/socks-proxy-agent/node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "optional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
- "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/space-separated-tokens": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
- "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/spawn-command": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz",
- "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==",
- "dev": true
- },
- "node_modules/ssri": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz",
- "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "minipass": "^3.1.1"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/stackback": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/statuses": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
- "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/std-env": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
- "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/stream-to-array": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz",
- "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "any-promise": "^1.1.0"
- }
- },
- "node_modules/streamx": {
- "version": "2.28.0",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz",
- "integrity": "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==",
- "license": "MIT",
- "dependencies": {
- "events-universal": "^1.0.0",
- "fast-fifo": "^1.3.2",
- "text-decoder": "^1.1.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/stringify-entities": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
- "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
- "license": "MIT",
- "dependencies": {
- "character-entities-html4": "^2.0.0",
- "character-entities-legacy": "^3.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/stringify-object": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
- "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "get-own-enumerable-property-symbols": "^3.0.0",
- "is-obj": "^1.0.1",
- "is-regexp": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-literal": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz",
- "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^9.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/strip-literal/node_modules/js-tokens": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
- "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/stylus-lookup": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-6.1.2.tgz",
- "integrity": "sha512-O+Q/SJ8s1X2aMLh4213fQ9X/bND9M3dhSsyTRe+O1OXPcewGLiYmAtKCrnP7FDvDBaXB2ZHPkCt3zi4cJXBlCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "commander": "^12.1.0"
- },
- "bin": {
- "stylus-lookup": "bin/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/stylus-lookup/node_modules/commander": {
- "version": "12.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
- "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/table-layout": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz",
- "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "array-back": "^6.2.2",
- "wordwrapjs": "^5.1.0"
- },
- "engines": {
- "node": ">=12.17"
- }
- },
- "node_modules/table-layout/node_modules/array-back": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
- "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=12.17"
- }
- },
- "node_modules/tapable": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
- "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- }
- },
- "node_modules/tar": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
- "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
- "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "chownr": "^2.0.0",
- "fs-minipass": "^2.0.0",
- "minipass": "^5.0.0",
- "minizlib": "^2.1.1",
- "mkdirp": "^1.0.3",
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/tar-fs": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
- "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
- "license": "MIT",
- "dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "node_modules/tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "license": "MIT",
- "dependencies": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tar/node_modules/chownr": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
- "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/tar/node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/teex": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz",
- "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==",
- "license": "MIT",
- "dependencies": {
- "streamx": "^2.12.5"
- }
- },
- "node_modules/text-decoder": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz",
- "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==",
- "license": "Apache-2.0",
- "dependencies": {
- "b4a": "^1.6.4"
- }
- },
- "node_modules/text-decoder/node_modules/b4a": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz",
- "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==",
- "license": "Apache-2.0",
- "peerDependencies": {
- "react-native-b4a": "*"
- },
- "peerDependenciesMeta": {
- "react-native-b4a": {
- "optional": true
- }
- }
- },
- "node_modules/tiktoken": {
- "version": "1.0.22",
- "resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.22.tgz",
- "integrity": "sha512-PKvy1rVF1RibfF3JlXBSP0Jrcw2uq3yXdgcEXtKTYn3QJ/cBRBHDnrJ5jHky+MENZ6DIPwNUGWpkVx+7joCpNA==",
- "license": "MIT"
- },
- "node_modules/tinybench": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
- "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/tinyglobby": {
- "version": "0.2.17",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
- "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
- "license": "MIT",
- "dependencies": {
- "fdir": "^6.5.0",
- "picomatch": "^4.0.4"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/SuperchupuDev"
- }
- },
- "node_modules/tinypool": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz",
- "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tinyspy": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz",
- "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tmp": {
- "version": "0.2.7",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
- "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tree-kill": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
- "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
- "dev": true,
- "license": "MIT",
- "bin": {
- "tree-kill": "cli.js"
- }
- },
- "node_modules/tree-sitter-wasms": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/tree-sitter-wasms/-/tree-sitter-wasms-0.1.13.tgz",
- "integrity": "sha512-wT+cR6DwaIz80/vho3AvSF0N4txuNx/5bcRKoXouOfClpxh/qqrF4URNLQXbbt8MaAxeksZcZd1j8gcGjc+QxQ==",
- "license": "Unlicense",
- "optional": true,
- "dependencies": {
- "tree-sitter-wasms": "^0.1.11"
- }
- },
- "node_modules/trim-lines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
- "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/ts-api-utils": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
- "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18.12"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4"
- }
- },
- "node_modules/ts-graphviz": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-2.1.6.tgz",
- "integrity": "sha512-XyLVuhBVvdJTJr2FJJV2L1pc4MwSjMhcunRVgDE9k4wbb2ee7ORYnPewxMWUav12vxyfUM686MSGsqnVRIInuw==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ts-graphviz"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/ts-graphviz"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@ts-graphviz/adapter": "^2.0.6",
- "@ts-graphviz/ast": "^2.0.7",
- "@ts-graphviz/common": "^2.1.5",
- "@ts-graphviz/core": "^2.0.7"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/ts-morph": {
- "version": "28.0.0",
- "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-28.0.0.tgz",
- "integrity": "sha512-Wp3tnZ2bzwxyTZMtgWVzXDfm7lB1Drz+y9DmmYH/L702PQhPyVrp3pkou3yIz4qjS14GY9kcpmLiOOMvl8oG1g==",
- "license": "MIT",
- "dependencies": {
- "@ts-morph/common": "~0.29.0",
- "code-block-writer": "^13.0.3"
- }
- },
- "node_modules/tsconfig-paths": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
- "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json5": "^2.2.2",
- "minimist": "^1.2.6",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tslib": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
- "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
- },
- "node_modules/tunnel": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
- "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "license": "Apache-2.0",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/type-detect": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
- "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-is": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz",
- "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==",
- "license": "MIT",
- "dependencies": {
- "content-type": "^2.0.0",
- "media-typer": "^1.1.0",
- "mime-types": "^3.0.0"
- },
- "engines": {
- "node": ">= 18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/type-is/node_modules/content-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
- "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/type-is/node_modules/mime-db": {
- "version": "1.54.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
- "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/type-is/node_modules/mime-types": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
- "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
- "license": "MIT",
- "dependencies": {
- "mime-db": "^1.54.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
- }
- },
- "node_modules/typed-rest-client": {
- "version": "1.8.11",
- "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
- "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "qs": "^6.9.1",
- "tunnel": "0.0.6",
- "underscore": "^1.12.1"
- }
- },
- "node_modules/typescript": {
- "version": "5.9.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/typical": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
- "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ufo": {
- "version": "1.6.4",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.4.tgz",
- "integrity": "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/unbash": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/unbash/-/unbash-4.0.1.tgz",
- "integrity": "sha512-1ajSo3813sDoVIHx4inJdUS4l5L2ic5cFiddemPiyjb/PZEoBAhFwHtbaEdRDFxbAKy7FCG7s5ww3/uCFawuIA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/underscore": {
- "version": "1.13.8",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz",
- "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/undici": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
- "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=20.18.1"
- }
- },
- "node_modules/undici-types": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
- "license": "MIT"
- },
- "node_modules/unique-filename": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz",
- "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "unique-slug": "^3.0.0"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/unique-slug": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz",
- "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "imurmurhash": "^0.1.4"
- },
- "engines": {
- "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
- }
- },
- "node_modules/unist-util-is": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
- "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-position": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
- "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-stringify-position": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
- "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
- "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0",
- "unist-util-visit-parents": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-visit-parents": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
- "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-is": "^6.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
- "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.2.0",
- "picocolors": "^1.1.1"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/url-join": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
- "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/use-isomorphic-layout-effect": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz",
- "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
- }
- },
- "node_modules/use-sync-external-store": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
- "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "license": "MIT"
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/vfile": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
- "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "vfile-message": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vfile-message": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
- "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
- "license": "MIT",
- "dependencies": {
- "@types/unist": "^3.0.0",
- "unist-util-stringify-position": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/vite": {
- "version": "5.4.21",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz",
- "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://github.com/vitejs/vite?sponsor=1"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
- },
- "peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
- "less": "*",
- "lightningcss": "^1.21.0",
- "sass": "*",
- "sass-embedded": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "sass-embedded": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/vite-node": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz",
- "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cac": "^6.7.14",
- "debug": "^4.3.4",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "vite": "^5.0.0"
- },
- "bin": {
- "vite-node": "vite-node.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
- "node_modules/vitest": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz",
- "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@vitest/expect": "1.6.1",
- "@vitest/runner": "1.6.1",
- "@vitest/snapshot": "1.6.1",
- "@vitest/spy": "1.6.1",
- "@vitest/utils": "1.6.1",
- "acorn-walk": "^8.3.2",
- "chai": "^4.3.10",
- "debug": "^4.3.4",
- "execa": "^8.0.1",
- "local-pkg": "^0.5.0",
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "std-env": "^3.5.0",
- "strip-literal": "^2.0.0",
- "tinybench": "^2.5.1",
- "tinypool": "^0.8.3",
- "vite": "^5.0.0",
- "vite-node": "1.6.1",
- "why-is-node-running": "^2.2.2"
- },
- "bin": {
- "vitest": "vitest.mjs"
- },
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- },
- "peerDependencies": {
- "@edge-runtime/vm": "*",
- "@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "1.6.1",
- "@vitest/ui": "1.6.1",
- "happy-dom": "*",
- "jsdom": "*"
- },
- "peerDependenciesMeta": {
- "@edge-runtime/vm": {
- "optional": true
- },
- "@types/node": {
- "optional": true
- },
- "@vitest/browser": {
- "optional": true
- },
- "@vitest/ui": {
- "optional": true
- },
- "happy-dom": {
- "optional": true
- },
- "jsdom": {
- "optional": true
- }
- }
- },
- "node_modules/walk-up-path": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz",
- "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/walkdir": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz",
- "integrity": "sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/web-tree-sitter": {
- "version": "0.24.7",
- "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.24.7.tgz",
- "integrity": "sha512-CdC/TqVFbXqR+C51v38hv6wOPatKEUGxa39scAeFSm98wIhZxAYonhRQPSMmfZ2w7JDI0zQDdzdmgtNk06/krQ==",
- "license": "MIT",
- "optional": true
- },
- "node_modules/whatwg-encoding": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
- "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
- "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "0.6.3"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/whatwg-mimetype": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
- "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/why-is-node-running": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
- "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "siginfo": "^2.0.0",
- "stackback": "0.0.2"
- },
- "bin": {
- "why-is-node-running": "cli.js"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wordwrapjs": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz",
- "integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=12.17"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "license": "ISC"
- },
- "node_modules/wsl-utils": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
- "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-wsl": "^3.1.0"
- },
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/xml2js": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
- "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xstate": {
- "version": "5.32.2",
- "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.32.2.tgz",
- "integrity": "sha512-uDrojEQYYb4cEeB/SpKDBQlnL2969N5ltmVak4jUMUC6VVRuhi7PCnTBxe4YlQ8YLzdaOEOuVR48CRQPE2o0Uw==",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/xstate"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/yaml": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
- "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
- "dev": true,
- "license": "ISC",
- "bin": {
- "yaml": "bin.mjs"
- },
- "engines": {
- "node": ">= 14.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/eemeli"
- }
- },
- "node_modules/yargs": {
- "version": "17.7.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
- "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yauzl": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-crc32": "~0.2.3",
- "fd-slicer": "~1.1.0"
- }
- },
- "node_modules/yazl": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
- "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "buffer-crc32": "~0.2.3"
- }
- },
- "node_modules/yocto-queue": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz",
- "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/zod": {
- "version": "3.25.76",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
- "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
- },
- "node_modules/zod-to-json-schema": {
- "version": "3.25.2",
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz",
- "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==",
- "license": "ISC",
- "peerDependencies": {
- "zod": "^3.25.28 || ^4"
- }
- },
- "node_modules/zwitch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
- "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 1290f70a..7131002c 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "mitii-ai-agent",
"displayName": "Mitii AI Agent",
"description": "Local-first VS Code AI coding agent with precise repo context and safe Plan/Act workflow",
- "version": "2.7.15",
+ "version": "2.7.30",
"publisher": "mitii",
"icon": "media/mitii-short-logo.png",
"license": "AGPL-3.0-or-later",
@@ -45,9 +45,15 @@
"onCommand:thunder.openChat",
"onCommand:thunder.indexWorkspace",
"onCommand:thunder.showSettings",
- "onCommand:thunder.generateCommitMessage"
+ "onCommand:thunder.generateCommitMessage",
+ "onCommand:thunder.generateChangelog",
+ "onCommand:thunder.prepareRelease",
+ "onCommand:thunder.exportAuditPack"
],
"main": "./dist/extension.js",
+ "bin": {
+ "mitii": "./bin/mitii.js"
+ },
"contributes": {
"commands": [
{
@@ -70,6 +76,11 @@
"title": "Mitii: Export Session Log",
"category": "Mitii"
},
+ {
+ "command": "thunder.exportAuditPack",
+ "title": "Mitii: Export Audit Pack",
+ "category": "Mitii"
+ },
{
"command": "thunder.openSessionLog",
"title": "Mitii: Open Session Log File",
@@ -95,6 +106,16 @@
"title": "Mitii: Generate Commit Message",
"category": "Mitii",
"icon": "media/mitii-activitybar.svg"
+ },
+ {
+ "command": "thunder.generateChangelog",
+ "title": "Mitii: Generate Changelog Entry",
+ "category": "Mitii"
+ },
+ {
+ "command": "thunder.prepareRelease",
+ "title": "Mitii: Prepare Release",
+ "category": "Mitii"
}
],
"menus": {
@@ -142,11 +163,58 @@
"default": false,
"description": "Capture extra session diagnostics (tool inputs, context sources, LLM step metadata). Process timing is always logged when session logging is on."
},
+ "thunder.telemetry.webhookUrl": {
+ "type": "string",
+ "default": "",
+ "description": "Optional SIEM/webhook endpoint. When set, sanitized session events are POSTed as JSON."
+ },
+ "thunder.telemetry.webhookSecret": {
+ "type": "string",
+ "default": "",
+ "description": "Optional HMAC signing secret for webhook events. Prefer workspace or managed settings for enterprise deployments."
+ },
+ "thunder.telemetry.webhookTimeoutMs": {
+ "type": "number",
+ "default": 5000,
+ "minimum": 1000,
+ "maximum": 60000,
+ "description": "Timeout in milliseconds for telemetry webhook delivery attempts."
+ },
+ "thunder.ui.showReasoning": {
+ "type": "boolean",
+ "default": true,
+ "description": "Show streamed model reasoning when the provider returns reasoning deltas."
+ },
+ "thunder.ui.reasoningPreviewMaxChars": {
+ "type": "number",
+ "default": 8000,
+ "minimum": 0,
+ "maximum": 100000,
+ "description": "Maximum reasoning characters shown inline. Set 0 to show all reasoning."
+ },
+ "thunder.enterprise.localProvidersOnly": {
+ "type": "boolean",
+ "default": false,
+ "description": "Enterprise policy flag documenting that only local providers should be used for this workspace."
+ },
+ "thunder.enterprise.stripFileContentsFromAuditPacks": {
+ "type": "boolean",
+ "default": false,
+ "description": "Strip file contents and large tool outputs from exported audit packs while preserving metadata."
+ },
+ "thunder.enterprise.autoExportAuditPackOnSessionEnd": {
+ "type": "boolean",
+ "default": false,
+ "description": "Export a sanitized audit pack automatically to .mitii/audit/ when an agent turn completes."
+ },
"thunder.provider.type": {
"type": "string",
"enum": [
"openai-compatible",
+ "openrouter",
"openai",
+ "azure-openai",
+ "bedrock",
"anthropic",
"gemini",
"deepseek",
@@ -167,11 +235,29 @@
"default": "qwen3-coder:30b",
"description": "Model name"
},
+ "thunder.provider.apiVersion": {
+ "type": "string",
+ "default": "2024-10-21",
+ "description": "Provider API version. Used by Azure OpenAI when building deployment chat completion URLs."
+ },
+ "thunder.provider.region": {
+ "type": "string",
+ "default": "us-east-1",
+ "description": "Cloud provider region. Used by AWS Bedrock."
+ },
"thunder.provider.contextWindow": {
"type": "number",
"default": 8192,
"description": "Model context window size. Thunder trims prompts automatically to stay within this limit."
},
+ "thunder.provider.supportsVision": {
+ "type": "boolean",
+ "description": "Optional override for model vision support. Leave unset to use automatic provider/model detection."
+ },
+ "thunder.provider.supportsReasoning": {
+ "type": "boolean",
+ "description": "Optional override for streamed reasoning support. Leave unset to use automatic provider/model detection."
+ },
"thunder.indexing.enabled": {
"type": "boolean",
"default": true,
@@ -246,6 +332,11 @@
"maximum": 30,
"description": "Number of items to keep after reranking"
},
+ "thunder.context.microTaskRoutingEnabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Route narrow chat requests such as commit messages, changelog entries, and release notes through minimal Git context instead of the full agent loop."
+ },
"thunder.safety.requireApprovalForWrites": {
"type": "boolean",
"default": true,
@@ -516,17 +607,36 @@
}
},
"scripts": {
- "vscode:prepublish": "npm run compile",
- "compile": "npm run compile:extension && npm run compile:webview",
+ "vscode:prepublish": "pnpm run compile",
+ "compile": "pnpm run compile:extension && pnpm run compile:webview && pnpm run compile:cli",
+ "setup": "bash scripts/dev-setup.sh",
+ "setup:cursor": "THUNDER_EDITOR=cursor bash scripts/dev-setup.sh",
"rebuild:native": "node scripts/rebuild-native.mjs",
- "rebuild:node": "npm rebuild better-sqlite3",
- "rebuild:all": "npm run rebuild:native && npm run rebuild:node",
- "postinstall": "node -e \"console.log('Run npm run rebuild:native before F5 if better-sqlite3 fails to load')\"",
+ "rebuild:node": "node scripts/rebuild-node.mjs",
+ "rebuild:all": "pnpm run rebuild:native && pnpm run rebuild:node",
+ "postinstall": "node -e \"console.log('Run pnpm run rebuild:native before F5 if better-sqlite3 fails to load')\"",
"prepare": "node scripts/install-git-hooks.mjs",
"version:bump": "node scripts/bump-version.mjs",
+ "readme:sync-version": "node scripts/sync-readme-version.mjs",
+ "release:check-assets": "node scripts/check-release-assets.mjs",
+ "release:prepare": "pnpm run compile:cli && node dist/cli.js prepare-release",
+ "benchmark": "pnpm --filter @mitii/benchmark benchmark",
+ "benchmark:smoke": "pnpm --filter @mitii/benchmark benchmark:smoke",
+ "benchmark:all": "pnpm --filter @mitii/benchmark benchmark:all",
+ "benchmark:integration": "pnpm --filter @mitii/benchmark benchmark:integration",
+ "eval:generate": "pnpm --filter @mitii/benchmark eval:generate",
+ "eval:generate:full": "pnpm --filter @mitii/benchmark eval:generate:full",
+ "eval:preflight": "node tools/benchmark/scripts/preflight.mjs",
+ "eval:smoke": "pnpm --filter @mitii/benchmark eval:smoke",
+ "eval:standard": "node tools/benchmark/scripts/run-eval.mjs --tier eval --runtime real --ensure-ready",
+ "eval:aggregate": "node tools/benchmark/scripts/aggregate-results.mjs",
+ "eval:matrix": "pnpm --filter @mitii/benchmark eval:matrix",
+ "eval:reset-fixtures": "node tools/benchmark/scripts/reset-fixtures.mjs",
"compile:extension": "esbuild src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --packages=external --platform=node --format=cjs --sourcemap",
"compile:webview": "vite build",
- "watch": "concurrently \"npm run watch:extension\" \"npm run watch:webview\"",
+ "compile:skills": "node scripts/copy-bundled-skills.mjs",
+ "compile:cli": "pnpm run compile:skills && esbuild src/node/cli.ts --bundle --outfile=dist/cli.js --platform=node --format=cjs --packages=external --alias:vscode=./src/node/vscode-shim.ts",
+ "watch": "concurrently \"pnpm run watch:extension\" \"pnpm run watch:webview\"",
"watch:extension": "esbuild src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --packages=external --platform=node --format=cjs --sourcemap --watch",
"watch:webview": "vite build --watch",
"test": "vitest run",
@@ -547,17 +657,17 @@
"checkpoint:read": "bash scripts/read-checkpoint.sh",
"lint:safe-target": "bash scripts/safe-lint-target.sh",
"env:sync": "node scripts/sync-env-files.mjs",
- "preflight": "npm run lint && npm run rebuild:node && npm test && npm run rebuild:native",
+ "preflight": "pnpm run release:check-assets && pnpm run lint && pnpm run rebuild:node && pnpm test && pnpm run rebuild:native",
"clean:vsce-deps": "node -e \"const fs=require('fs'); for (const p of ['node_modules/@emnapi','node_modules/@napi-rs','node_modules/@tybys']) fs.rmSync(p,{recursive:true,force:true});\"",
- "package": "npm run clean:vsce-deps && vsce package",
- "package:preflight": "npm run preflight && npm run package",
- "publish:vsce": "npm run preflight && npm run clean:vsce-deps && vsce publish",
- "version:patch": "npm version patch --no-git-tag-version --force",
- "version:minor": "npm version minor --no-git-tag-version --force",
- "version:major": "npm version major --no-git-tag-version --force",
- "publish:patch": "npm run version:patch && npm run publish:vsce",
- "publish:minor": "npm run version:minor && npm run publish:vsce",
- "publish:major": "npm run version:major && npm run publish:vsce",
+ "package": "pnpm run clean:vsce-deps && pnpm exec vsce package",
+ "package:preflight": "pnpm run preflight && pnpm run package",
+ "publish:vsce": "pnpm run preflight && pnpm run clean:vsce-deps && pnpm exec vsce publish",
+ "version:patch": "pnpm version patch --no-git-tag-version --force && pnpm run readme:sync-version",
+ "version:minor": "pnpm version minor --no-git-tag-version --force && pnpm run readme:sync-version",
+ "version:major": "pnpm version major --no-git-tag-version --force && pnpm run readme:sync-version",
+ "publish:patch": "pnpm run version:patch && pnpm run publish:vsce",
+ "publish:minor": "pnpm run version:minor && pnpm run publish:vsce",
+ "publish:major": "pnpm run version:major && pnpm run publish:vsce",
"smoke": "vitest run test/smoke"
},
"devDependencies": {
@@ -579,6 +689,7 @@
"vitest": "^1.6.0"
},
"dependencies": {
+ "@aws-sdk/client-bedrock-runtime": "^3.1078.0",
"@lancedb/lancedb": "^0.30.0",
"@modelcontextprotocol/sdk": "^1.29.0",
"@vscode/ripgrep": "^1.15.9",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 00000000..ac05277d
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,7505 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@aws-sdk/client-bedrock-runtime':
+ specifier: ^3.1078.0
+ version: 3.1079.0
+ '@lancedb/lancedb':
+ specifier: ^0.30.0
+ version: 0.30.0(apache-arrow@18.1.0)
+ '@modelcontextprotocol/sdk':
+ specifier: ^1.29.0
+ version: 1.29.0(zod@3.25.76)
+ '@vscode/ripgrep':
+ specifier: ^1.15.9
+ version: 1.18.0
+ '@xenova/transformers':
+ specifier: ^2.17.2
+ version: 2.17.2
+ '@xstate/react':
+ specifier: ^6.1.0
+ version: 6.1.0(@types/react@18.3.31)(react@18.3.1)(xstate@5.32.4)
+ better-sqlite3:
+ specifier: ^12.11.1
+ version: 12.11.1
+ diff:
+ specifier: ^5.2.0
+ version: 5.2.2
+ framer-motion:
+ specifier: ^12.42.0
+ version: 12.42.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ ignore:
+ specifier: ^5.3.1
+ version: 5.3.2
+ nanoid:
+ specifier: ^5.0.7
+ version: 5.1.16
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ shiki:
+ specifier: ^4.3.0
+ version: 4.3.0
+ simple-git:
+ specifier: ^3.25.0
+ version: 3.36.0
+ tiktoken:
+ specifier: ^1.0.22
+ version: 1.0.22
+ ts-morph:
+ specifier: ^28.0.0
+ version: 28.0.0
+ xstate:
+ specifier: ^5.32.2
+ version: 5.32.4
+ zod:
+ specifier: ^3.23.8
+ version: 3.25.76
+ zod-to-json-schema:
+ specifier: ^3.25.2
+ version: 3.25.2(zod@3.25.76)
+ devDependencies:
+ '@electron/rebuild':
+ specifier: ^3.7.2
+ version: 3.7.2
+ '@types/better-sqlite3':
+ specifier: ^7.6.12
+ version: 7.6.13
+ '@types/diff':
+ specifier: ^7.0.2
+ version: 7.0.2
+ '@types/node':
+ specifier: ^20.14.0
+ version: 20.19.43
+ '@types/react':
+ specifier: ^18.3.3
+ version: 18.3.31
+ '@types/react-dom':
+ specifier: ^18.3.0
+ version: 18.3.7(@types/react@18.3.31)
+ '@types/vscode':
+ specifier: ^1.85.0
+ version: 1.125.0
+ '@vitejs/plugin-react':
+ specifier: ^4.3.1
+ version: 4.7.0(vite@5.4.21(@types/node@20.19.43))
+ '@vscode/vsce':
+ specifier: ^2.32.0
+ version: 2.32.0
+ concurrently:
+ specifier: ^8.2.2
+ version: 8.2.2
+ esbuild:
+ specifier: ^0.21.5
+ version: 0.21.5
+ knip:
+ specifier: ^6.21.0
+ version: 6.24.0
+ madge:
+ specifier: ^8.0.0
+ version: 8.0.0(typescript@5.9.3)
+ typescript:
+ specifier: ^5.5.2
+ version: 5.9.3
+ vite:
+ specifier: ^5.3.1
+ version: 5.4.21(@types/node@20.19.43)
+ vitest:
+ specifier: ^1.6.0
+ version: 1.6.1(@types/node@20.19.43)
+ optionalDependencies:
+ tree-sitter-wasms:
+ specifier: ^0.1.13
+ version: 0.1.13
+ web-tree-sitter:
+ specifier: ^0.24.7
+ version: 0.24.7
+
+ tools/benchmark: {}
+
+packages:
+
+ '@aws-sdk/client-bedrock-runtime@3.1079.0':
+ resolution: {integrity: sha512-+LxXUhnDsQ4Yr+zSQbROKClMfIRA8mLPtZgQukb6omczIqmi0yvDmbLovdLJGnm9GRj83kKSxWV24Ms5aUgJfg==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/core@3.974.27':
+ resolution: {integrity: sha512-WRWEgIq6vx+NU6ot3VrRu4Jovj9MIObitSi6of/GV5THDDPccBhivCRNkWJutMM+m3GvdeI3l/UbGNcoOobxOA==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-env@3.972.53':
+ resolution: {integrity: sha512-+KDA3uc/HZ1vIneGu5QMQb0gAXDYrm2vOE60+BJ7lS0YinMQ5i2oV4PR1A16XkF6K1IbSwjEHd1hQIIgMsK48w==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-http@3.972.55':
+ resolution: {integrity: sha512-1gBfkWY3RWeBlCoB9lIJjXMx45/54wxcgfzv6BY9otTmMrZPcNPi1v+MwZxxaCUg441NV3jsr1efnFNCXiW70g==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-ini@3.972.60':
+ resolution: {integrity: sha512-CV2md+PXvABwRjApWGhQ0wACy9WSFIhnUGrovLcjnjBCd/46TbuivLADtkF8IWNjtCQmQ+2IagSaxqBYqXBNAQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-login@3.972.59':
+ resolution: {integrity: sha512-JG4S9yyA1GFzJdJXqLKrUzZbyK+VDp2QIsJD7YOicJHAhqymfHpDJIok2dLnhOdVB0I37RjdC53uOwCMVS00gw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-node@3.972.62':
+ resolution: {integrity: sha512-S6Slq3Tx7bvFk5yc34XNADyZYTX2HUXvaFAnowGRQnhjBO8J/mP62Fn7lxvJwjaDyYm/7gh9h6HEHaltRyMFXw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-process@3.972.53':
+ resolution: {integrity: sha512-EhfH+MQlqOMCkXIVa8MMObPzAQqwTTtxA7KhEJiyPeuNVA8PLOOUpgK7nBrgaDaGiIDLN/9LpGdaHuDjomeRTw==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-sso@3.972.59':
+ resolution: {integrity: sha512-h8793pOjcImx0SB+VcLONcaQQ57VAvKVuqyewQMRKqqH+CSXsG2dwOeLMUJPMxLdNvL7dXOM0ueTukyNUnu5mA==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/credential-provider-web-identity@3.972.59':
+ resolution: {integrity: sha512-VoyO9+vl3XVmpZwn4obskrWIkrA/Jf3lSe1E3ZERlaN9u0D4YZ6+HywC3+L98QOXqZesEfedk67gRER8tK8+8w==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/eventstream-handler-node@3.972.25':
+ resolution: {integrity: sha512-df7HN1ozwMrB9+59re9PM7tSLxLAcheMWc5u/KyfCPCAWtN/vP7y7RTUZOy48uT1K9MESisVeOPPzF3O1AW01A==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-eventstream@3.972.21':
+ resolution: {integrity: sha512-HvLgDnxBLaHi9E5K++6Vuk+1+qqn7Pmn8zrlzd+NXH3jBzwujnuzZtAR9WHPkbUGPO92FkoQWj/M1IsdxTlBmQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/middleware-websocket@3.972.35':
+ resolution: {integrity: sha512-7/ZAlq5o5A9FnRsQEftZvcct9LVZf1YaYmWR3eOzyJAdKU66YpOKy5ahUVvyBvCTLyO4Ej4yWIk8dllWNXPBsw==}
+ engines: {node: '>= 14.0.0'}
+
+ '@aws-sdk/nested-clients@3.997.27':
+ resolution: {integrity: sha512-A8PIePF9NIIOJ/4Lg1rl9xm/+QaKkHGetq+Z9wb5B+3Da31YYXRo8n7IDMh5C+HQI5eyEmjrwkGWVdYtnLtbXQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/signature-v4-multi-region@3.996.38':
+ resolution: {integrity: sha512-C379Sk+MiFZCfWZphKlMyLHKxV22OjoGM5KJjj5IJNJcOCWL4IGIpnEGzv1FQiRwhYXfq55SJMfxlqPE08JJ9g==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/token-providers@3.1079.0':
+ resolution: {integrity: sha512-cbietrLlHPhhmbnMPTuDS4Zj/KNGhY+3vVhn6dwjO6Dqzrwothzg2srtcY34T9mlICsTXn34avDoWLHSntP54A==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/types@3.973.15':
+ resolution: {integrity: sha512-IULn8uBV/SMtmOIANsm4WHXIOtVPBWfOWs3WGL0j/sI+KhaYehvOw0ET+9urnn8MBpiijuU/0JOpuwKOE451PQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws-sdk/xml-builder@3.972.33':
+ resolution: {integrity: sha512-ezbwz9WpuLctm6o7P2t2naDhVVPI5jFGrVefVybhcKGjU57VIyT46pQVO0RI2RYkUdhdj2Z9uSIlAzGZE9NW9A==}
+ engines: {node: '>=20.0.0'}
+
+ '@aws/lambda-invoke-store@0.3.0':
+ resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/abort-controller@2.1.2':
+ resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==}
+ engines: {node: '>=18.0.0'}
+
+ '@azure/core-auth@1.10.1':
+ resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-client@1.10.2':
+ resolution: {integrity: sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-rest-pipeline@1.24.0':
+ resolution: {integrity: sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-tracing@1.3.1':
+ resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/core-util@1.13.1':
+ resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/identity@4.13.1':
+ resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/logger@1.3.0':
+ resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==}
+ engines: {node: '>=20.0.0'}
+
+ '@azure/msal-browser@5.16.0':
+ resolution: {integrity: sha512-Wc75FGnQgYpsm5jsOqn1H8AXsh8vXruA6vwip1nhjrJxwby7juxKAIVLr7csepmHiwdZGr6EwI5BlSc3PizEtQ==}
+ engines: {node: '>=0.8.0'}
+
+ '@azure/msal-common@16.11.0':
+ resolution: {integrity: sha512-UikJOtMwkFpZNzTH6Dqk8UTUPbow15zH3e0UjGYZy69lYENW/S05gMLhbxI2eonz66uALhIljvhsSMEb6+O30g==}
+ engines: {node: '>=0.8.0'}
+
+ '@azure/msal-node@5.3.1':
+ resolution: {integrity: sha512-sqqv3L1UOI4KDXonNtbxPYUgbSWVXqxvmmb6BUw9n4P/UXgG+cVur3dLWQN4Cz7qQ+UJROCCxMXlksm7gIq0Sw==}
+ engines: {node: '>=20'}
+
+ '@babel/code-frame@7.29.7':
+ resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.29.7':
+ resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.29.7':
+ resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.29.7':
+ resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.29.7':
+ resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-globals@7.29.7':
+ resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.29.7':
+ resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.29.7':
+ resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-plugin-utils@7.29.7':
+ resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.29.7':
+ resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.29.7':
+ resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.29.7':
+ resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.29.7':
+ resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.29.7':
+ resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-transform-react-jsx-self@7.29.7':
+ resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-source@7.29.7':
+ resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/runtime@7.29.7':
+ resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/template@7.29.7':
+ resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.29.7':
+ resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.29.7':
+ resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
+ engines: {node: '>=6.9.0'}
+
+ '@dependents/detective-less@5.0.3':
+ resolution: {integrity: sha512-v6oD9Ukp+N7V4n6p5I/+mM5fIohSfkrDSGlFm5w/pYmchvbk+sMIHsLxrFJ5Lnujewj1BzWL0K84d88lwZAMQA==}
+ engines: {node: '>=18'}
+
+ '@discoveryjs/json-ext@1.1.0':
+ resolution: {integrity: sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==}
+ engines: {node: '>=14.17.0'}
+
+ '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
+ resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2}
+ version: 10.2.0-electron.1
+ engines: {node: '>=12.13.0'}
+ hasBin: true
+
+ '@electron/rebuild@3.7.2':
+ resolution: {integrity: sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==}
+ engines: {node: '>=12.13.0'}
+ hasBin: true
+
+ '@emnapi/core@1.11.0':
+ resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==}
+
+ '@emnapi/core@1.11.1':
+ resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==}
+
+ '@emnapi/runtime@1.11.0':
+ resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==}
+
+ '@emnapi/runtime@1.11.1':
+ resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==}
+
+ '@emnapi/wasi-threads@1.2.2':
+ resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@gar/promisify@1.1.3':
+ resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
+
+ '@hono/node-server@1.19.14':
+ resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==}
+ engines: {node: '>=18.14.1'}
+ peerDependencies:
+ hono: ^4
+
+ '@huggingface/jinja@0.2.2':
+ resolution: {integrity: sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==}
+ engines: {node: '>=18'}
+
+ '@jest/schemas@29.6.3':
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@kwsites/file-exists@1.1.1':
+ resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==}
+
+ '@kwsites/promise-deferred@1.1.1':
+ resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
+
+ '@lancedb/lancedb-darwin-arm64@0.30.0':
+ resolution: {integrity: sha512-x6dmsjRIv0xumELYnFAEfyFDxqcO/n4rHYCJvC27RbRez0UmbByi6OMTgbSoSTatrQSPRCL7JJSa5pwNeawnIg==}
+ engines: {node: '>= 18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@lancedb/lancedb-linux-arm64-gnu@0.30.0':
+ resolution: {integrity: sha512-CWUex7hRNiLkXFeTQlUGPyy5VktbXoUmQdZuiVCETZ6ggljEC7c7Qvzu2ge+jEZML+UE7tXL2lVC3klRFGczng==}
+ engines: {node: '>= 18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@lancedb/lancedb-linux-arm64-musl@0.30.0':
+ resolution: {integrity: sha512-2MHmAS4tKePNVbwfgDrjCFj6BVuAgXlL2c9iWk7TfcwL+jcSxo52LFx03O0+ArpVCF2sI6aoDqZaQNre5zMniQ==}
+ engines: {node: '>= 18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@lancedb/lancedb-linux-x64-gnu@0.30.0':
+ resolution: {integrity: sha512-0OpDNxsDE4OXD+PIFd7KdE42xhYIE+fZL+jCm1v3dTug4UEhumWBuSgbUIBP7t0yJZHwh62/QivVh/V1cPB2Bg==}
+ engines: {node: '>= 18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@lancedb/lancedb-linux-x64-musl@0.30.0':
+ resolution: {integrity: sha512-4Bq7VngQt+lyxIcu79EN8nYJs8gvUnrIT6I/t2MSlpG/BXWHZG2A+PRii1Zq4GCUlRTTG+RlieCv8CBGSPm8bw==}
+ engines: {node: '>= 18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@lancedb/lancedb-win32-arm64-msvc@0.30.0':
+ resolution: {integrity: sha512-N2DQg2XBWZirn5jS6kRJUxF679t3sKcIxBwP9zY4Idq5OVLAj0yfLueWIKhYxv8en7pBFYWdgw5j9dTS7XajyQ==}
+ engines: {node: '>= 18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@lancedb/lancedb-win32-x64-msvc@0.30.0':
+ resolution: {integrity: sha512-CDgN/ZmYqSlVX2nBJAF2PYEwqBBxotCVORjagmvrd0k5D7RBLlAQUEAR4gDMum2BpYsUkzdTYQpquLjRCVbwbQ==}
+ engines: {node: '>= 18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@lancedb/lancedb@0.30.0':
+ resolution: {integrity: sha512-d0FoEL6cthqgsulqAc7fck6kRXrSRGMTqlKYbhSGSazHU6vB2GEpD737Mu0HZd7fMyBUdhR9sD1W2C9uQZ5p0Q==}
+ engines: {node: '>= 18'}
+ cpu: [x64, arm64]
+ os: [darwin, linux, win32]
+ peerDependencies:
+ apache-arrow: '>=15.0.0 <=18.1.0'
+
+ '@malept/cross-spawn-promise@2.0.0':
+ resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==}
+ engines: {node: '>= 12.13.0'}
+
+ '@modelcontextprotocol/sdk@1.29.0':
+ resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@cfworker/json-schema': ^4.1.1
+ zod: ^3.25 || ^4.0
+ peerDependenciesMeta:
+ '@cfworker/json-schema':
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.1.6':
+ resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==}
+ peerDependencies:
+ '@emnapi/core': ^1.7.1
+ '@emnapi/runtime': ^1.7.1
+
+ '@npmcli/fs@2.1.2':
+ resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ '@npmcli/move-file@2.0.1':
+ resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ deprecated: This functionality has been moved to @npmcli/fs
+
+ '@oxc-parser/binding-android-arm-eabi@0.137.0':
+ resolution: {integrity: sha512-KDs+0VPdEmasOkpuJHW9V5WCF+cvYdMQv2Jd+aJXt+cxIx12NToRQRbXaRwUEDsZw+/jMk81Ve8ZFbjUkJTOwA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-parser/binding-android-arm64@0.137.0':
+ resolution: {integrity: sha512-WhALNzfy3x/RfC6bsqX+csavuUY0yHHE7XfgPE5M542uhoBZUUoGTPG+nkMbGoG4+gcfss5s7urMyn5QBHu0sw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-parser/binding-darwin-arm64@0.137.0':
+ resolution: {integrity: sha512-bFPr5hgmNMOMoyPTGtdsK4Ug21RovIPojRMgDDhSp1LtCnc/DkLwGONKjgRjszg677RlGnkYSviQ8hHaUPOVYA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-parser/binding-darwin-x64@0.137.0':
+ resolution: {integrity: sha512-CL5dMm1asqXIDZHg14FLxj3Mc36w8PI7xCWh1uA4is6z8g2XrIILoTcQYOxDbwzuk34RDPX5IAGUxZr6LA9KAg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-parser/binding-freebsd-x64@0.137.0':
+ resolution: {integrity: sha512-79h8rYGnSlKPGWo7mHr2ixO6ea7aW8B0CT965SZ8SLbNnCOH5aOYBTeVXUY6eMvEaiLyWr8Skuiugr5pDYgLGw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0':
+ resolution: {integrity: sha512-ASgmlSimhGyr0lksgVIo6hibz1obnDq4qJbiMX/AzltfgPnanRrzG1Q+23g8ljOHOjv6dsznkUuCYL3gg0sY1Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm-musleabihf@0.137.0':
+ resolution: {integrity: sha512-AU2J9aa22Sx32wRGnDjybOU9TQXXQUud5sdUi+ZB0XxwM8aToWLweV+yA0wlQm0yIUVqljquqoHCYEq9II8gJQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.137.0':
+ resolution: {integrity: sha512-GdEtiG89yMr7XkUGxifgodXEEm2f+xW2f9CpDjlgAnBOwhTmrpQMvhOGobLVKUyzf/qHBXW16smk5zbF3nZU6w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm64-musl@0.137.0':
+ resolution: {integrity: sha512-EGJ+Bs8iXx8KBH8DQ5BLoEm5lnHaYjlh4/8j8vFhrr/6z4tqONy5BZDzLpKmmNWlN6Hlc5r8YOuBVHqZ9vRFEQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-ppc64-gnu@0.137.0':
+ resolution: {integrity: sha512-vzFUQENy/fnbSe5DZWovq6tIBc1uhuMztanSW6rz1e9WdQE4gHwYuD7ZII6JnrJifd1R3RSoqiZbgRFlVL2tYQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-riscv64-gnu@0.137.0':
+ resolution: {integrity: sha512-SfVI14HBQs9gtLcUD5hTt5hsNbdrqSUNg9S8muN+LhVQ5nf1WwH3hAoK6B9NKgdYgWAQSXFXGiiBedQ4r/BKuw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-riscv64-musl@0.137.0':
+ resolution: {integrity: sha512-e7Ppy4FCIFNQxT/ikSeIWFoQ0l+N9vgtRBtLcyZXeolTzApyVoPqEXsYPrcdM/9i0Bwk8knvYd37vaEMxHyi6g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-s390x-gnu@0.137.0':
+ resolution: {integrity: sha512-Bho5qFwdhqsIFR7gipYEUlqvi3SRrY8sugxXig380MIaakBB1PyU9+7dBiBVScfImTNWhijUxdBwqrprGdq5WA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-x64-gnu@0.137.0':
+ resolution: {integrity: sha512-36mGWtg7PyFzjJwGDkH6/F4o2nIDEoKXLPr/X/lwqklkomQwJJt1I5GJVmGhovUEmgPK5WAeAZMqlFCehwiy9Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-x64-musl@0.137.0':
+ resolution: {integrity: sha512-/Jqx6+N7A44n2BdvUr7pXhVr2vFjs6WGH3unZRczwrfiH0H1zY0QwKQMG/dtRiTlKGDKGukznPT8lx84/oEsZg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-parser/binding-openharmony-arm64@0.137.0':
+ resolution: {integrity: sha512-9Uj0qHNNl+OgT1UTGwF7ixIXU6T1u2SbMidmgPy/h1h/fl2gRS6YpAxxY1gwHofcWjoTwkoMFd8xs5Vuj6GOFA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-parser/binding-wasm32-wasi@0.137.0':
+ resolution: {integrity: sha512-gW2vfkytNGgMVADiuzdvOfw0mWG9za20F/1fCJsif5aBMAvWJTSbpIXbIe0XkOe0VENk+PadpQ7cZgUy2sUJcA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.137.0':
+ resolution: {integrity: sha512-x+pFANF0yL5uK/6T7lu6SlR5qid6sp//eZXKLq5iNsIE+EQg6EaS8/wsW7E91nXXjpnPhSoMOHXShSVhGRdn8w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-ia32-msvc@0.137.0':
+ resolution: {integrity: sha512-sQUqym80PFi6McRsIqfJrSu2JrSClEZIXXD+/FjAFoULEKzOPsldIdFBG96xdX8aVMzCNQ9792FPx3MfkEIrFA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-x64-msvc@0.137.0':
+ resolution: {integrity: sha512-2AsevxlvNN4WKxpEn3RtqD5zbqMaXF+T7JXblsP4gVuY+vC9dXS4ED/PwfRCliFqoeisYS3Iro4DHzxr0TEvVA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@oxc-project/types@0.137.0':
+ resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==}
+
+ '@oxc-resolver/binding-android-arm-eabi@11.21.3':
+ resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-resolver/binding-android-arm64@11.21.3':
+ resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-resolver/binding-darwin-arm64@11.21.3':
+ resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-darwin-x64@11.21.3':
+ resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-freebsd-x64@11.21.3':
+ resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3':
+ resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3':
+ resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.21.3':
+ resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.21.3':
+ resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3':
+ resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3':
+ resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.21.3':
+ resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.21.3':
+ resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.21.3':
+ resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-x64-musl@11.21.3':
+ resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-resolver/binding-openharmony-arm64@11.21.3':
+ resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-resolver/binding-wasm32-wasi@11.21.3':
+ resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.21.3':
+ resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.21.3':
+ resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==}
+ cpu: [x64]
+ os: [win32]
+
+ '@protobufjs/aspromise@1.1.2':
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
+
+ '@protobufjs/base64@1.1.2':
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
+
+ '@protobufjs/codegen@2.0.5':
+ resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==}
+
+ '@protobufjs/eventemitter@1.1.1':
+ resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==}
+
+ '@protobufjs/fetch@1.1.1':
+ resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==}
+
+ '@protobufjs/float@1.0.2':
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
+
+ '@protobufjs/inquire@1.1.2':
+ resolution: {integrity: sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==}
+
+ '@protobufjs/path@1.1.2':
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
+
+ '@protobufjs/pool@1.1.0':
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
+
+ '@protobufjs/utf8@1.1.1':
+ resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==}
+
+ '@rolldown/pluginutils@1.0.0-beta.27':
+ resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
+
+ '@rollup/rollup-android-arm-eabi@4.62.2':
+ resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.62.2':
+ resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.62.2':
+ resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.62.2':
+ resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.62.2':
+ resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.62.2':
+ resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.62.2':
+ resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-gnu@4.62.2':
+ resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm64-musl@4.62.2':
+ resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-gnu@4.62.2':
+ resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-musl@4.62.2':
+ resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.62.2':
+ resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-musl@4.62.2':
+ resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.62.2':
+ resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-musl@4.62.2':
+ resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@rollup/rollup-linux-s390x-gnu@4.62.2':
+ resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.62.2':
+ resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-musl@4.62.2':
+ resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rollup/rollup-openbsd-x64@4.62.2':
+ resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@rollup/rollup-openharmony-arm64@4.62.2':
+ resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.62.2':
+ resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.62.2':
+ resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.62.2':
+ resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.62.2':
+ resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==}
+ cpu: [x64]
+ os: [win32]
+
+ '@shikijs/core@4.3.0':
+ resolution: {integrity: sha512-EooU3i9F6IAE8kEu+AnGf9DFZWkQBZ+hJn3tLVbsH+61mtQiva5biai66fAA6nvFPXkLgvrh7BrR7YcJU83xQQ==}
+ engines: {node: '>=20'}
+
+ '@shikijs/engine-javascript@4.3.0':
+ resolution: {integrity: sha512-hTv/KiFf2tpiqlACPiztGGurEARWIutB8YUhcrA1pUC7VzzwKO+g5crUocrLztrZ5ro5Z4hbXg7bYclETn3gSQ==}
+ engines: {node: '>=20'}
+
+ '@shikijs/engine-oniguruma@4.3.0':
+ resolution: {integrity: sha512-1vMdN3gHfnKfLYwecUI2ITJI4RhHt96xEaJumVn7Heb0IlJ8WQMIH0Voak+2j22BpSNKdnOfB/pCTPnPm2gq7A==}
+ engines: {node: '>=20'}
+
+ '@shikijs/langs@4.3.0':
+ resolution: {integrity: sha512-rnlqFbBRSys9bT4gl/5rw9RnS0W/I84ZldXPkO7cvlEMoV85TyF/aU01N7/NbSR776RNLjrJKjfFUXJR6wN1Cg==}
+ engines: {node: '>=20'}
+
+ '@shikijs/primitive@4.3.0':
+ resolution: {integrity: sha512-CPkz64PTa5diRW1ggzMZH9VM/du4RNChYgVtgqrFcgruvIybmCvySv8GkiHSczUHXYuuR8TdKEwFx+UnZMpgdg==}
+ engines: {node: '>=20'}
+
+ '@shikijs/themes@4.3.0':
+ resolution: {integrity: sha512-Avgt05YiT+Y3prjIc9lmQxhJzHBcCfR6cjiFW4OyaMBbt2A6trX5rfjUzx+Vj/mE9qpArYjatnqo9XPjQNW/AQ==}
+ engines: {node: '>=20'}
+
+ '@shikijs/types@4.3.0':
+ resolution: {integrity: sha512-oc8b9U2SYvofKZk8e/737nIX0qwf6eV2vHFATeObAu7r+mUVpLs8Re0BmVkIjAWAYgkmG/CzLNo7rzuBzRu/wQ==}
+ engines: {node: '>=20'}
+
+ '@shikijs/vscode-textmate@10.0.2':
+ resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+
+ '@simple-git/args-pathspec@1.0.3':
+ resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==}
+
+ '@simple-git/argv-parser@1.1.1':
+ resolution: {integrity: sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==}
+
+ '@sinclair/typebox@0.27.10':
+ resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==}
+
+ '@sindresorhus/is@4.6.0':
+ resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
+ engines: {node: '>=10'}
+
+ '@smithy/core@3.29.1':
+ resolution: {integrity: sha512-qoiY4nrk5OCu1+eIR1VB8l5DmON/oKiqrd5zZFAhXJXjJlLWQusKEW/SkBDAtGDcPaz86m9kfcE1lngU0GlM6A==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/credential-provider-imds@4.4.6':
+ resolution: {integrity: sha512-B2WQ/PV/H6Jeg3lrIq6bKUfa6Hy01mtK7CGs6lhjzHA6k4aagldH6T6eEjnzKl4HI0cJnAsxfJ19pgb5PV+CVQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/fetch-http-handler@5.6.3':
+ resolution: {integrity: sha512-CwCc/7SMTj45y97MUnDTbTaxvtAsiNNRm81z3abROIuMbMsC2Iy5EKfkkVdsKrz8WExQAAMx1EJapq+9j4fFTQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/node-http-handler@4.9.3':
+ resolution: {integrity: sha512-qZTa4gQFUo8RM02rk6q5UVTDLNrQ1oS20LsepBzqq1QBVc/EHJ03OOUADcqMZiXHArW+Y7+OGY0BpdTwZRq/Yg==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/signature-v4@5.6.2':
+ resolution: {integrity: sha512-QgHflghMoPxCJ9axiCVh8KZfbC9fuP6vkXXyK//E3cq7nLaSSyyLj0GAoqVWezYeDQmXIZhmlRvLE16jsqDK6g==}
+ engines: {node: '>=18.0.0'}
+
+ '@smithy/types@4.15.1':
+ resolution: {integrity: sha512-x3L0XSACF6UYzKpa9biqiRMgvH5+wnFFew9Tm/grFYqgaupPwx/+ojDPpPJM8dZON3S9tjz5U+PQYsCBd1Mw5Q==}
+ engines: {node: '>=18.0.0'}
+
+ '@swc/helpers@0.5.23':
+ resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==}
+
+ '@szmarczak/http-timer@4.0.6':
+ resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
+ engines: {node: '>=10'}
+
+ '@tootallnate/once@2.0.1':
+ resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==}
+ engines: {node: '>= 10'}
+
+ '@ts-graphviz/adapter@2.0.6':
+ resolution: {integrity: sha512-kJ10lIMSWMJkLkkCG5gt927SnGZcBuG0s0HHswGzcHTgvtUe7yk5/3zTEr0bafzsodsOq5Gi6FhQeV775nC35Q==}
+ engines: {node: '>=18'}
+
+ '@ts-graphviz/ast@2.0.7':
+ resolution: {integrity: sha512-e6+2qtNV99UT6DJSoLbHfkzfyqY84aIuoV8Xlb9+hZAjgpum8iVHprGeAMQ4rF6sKUAxrmY8rfF/vgAwoPc3gw==}
+ engines: {node: '>=18'}
+
+ '@ts-graphviz/common@2.1.5':
+ resolution: {integrity: sha512-S6/9+T6x8j6cr/gNhp+U2olwo1n0jKj/682QVqsh7yXWV6ednHYqxFw0ZsY3LyzT0N8jaZ6jQY9YD99le3cmvg==}
+ engines: {node: '>=18'}
+
+ '@ts-graphviz/core@2.0.7':
+ resolution: {integrity: sha512-w071DSzP94YfN6XiWhOxnLpYT3uqtxJBDYdh6Jdjzt+Ce6DNspJsPQgpC7rbts/B8tEkq0LHoYuIF/O5Jh5rPg==}
+ engines: {node: '>=18'}
+
+ '@ts-morph/common@0.29.0':
+ resolution: {integrity: sha512-35oUmphHbJvQ/+UTwFNme/t2p3FoKiGJ5auTjjpNTop2dyREspirjMy82PLSC1pnDJ8ah1GU98hwpVt64YXQsg==}
+
+ '@tybys/wasm-util@0.10.3':
+ resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==}
+
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.27.0':
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.28.0':
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+
+ '@types/better-sqlite3@7.6.13':
+ resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
+
+ '@types/cacheable-request@6.0.3':
+ resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
+
+ '@types/command-line-args@5.2.3':
+ resolution: {integrity: sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==}
+
+ '@types/command-line-usage@5.0.4':
+ resolution: {integrity: sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==}
+
+ '@types/diff@7.0.2':
+ resolution: {integrity: sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==}
+
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/hast@3.0.4':
+ resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+
+ '@types/http-cache-semantics@4.2.0':
+ resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==}
+
+ '@types/keyv@3.1.4':
+ resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
+
+ '@types/long@4.0.2':
+ resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
+
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
+ '@types/node@20.19.43':
+ resolution: {integrity: sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==}
+
+ '@types/prop-types@15.7.15':
+ resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
+
+ '@types/react-dom@18.3.7':
+ resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==}
+ peerDependencies:
+ '@types/react': ^18.0.0
+
+ '@types/react@18.3.31':
+ resolution: {integrity: sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==}
+
+ '@types/responselike@1.0.3':
+ resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==}
+
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
+ '@types/vscode@1.125.0':
+ resolution: {integrity: sha512-0icm/ZQAaism87P0ekHqi4/Ju9du+Tm0RUW+y7vqRsxY2cY0FNRX1nAnaW7nT6npPt2tfHiheZ55Zm9UhqonFA==}
+
+ '@typescript-eslint/project-service@8.62.1':
+ resolution: {integrity: sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/tsconfig-utils@8.62.1':
+ resolution: {integrity: sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/types@8.62.1':
+ resolution: {integrity: sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/typescript-estree@8.62.1':
+ resolution: {integrity: sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.1.0'
+
+ '@typescript-eslint/visitor-keys@8.62.1':
+ resolution: {integrity: sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typespec/ts-http-runtime@0.3.6':
+ resolution: {integrity: sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==}
+ engines: {node: '>=20.0.0'}
+
+ '@ungap/structured-clone@1.3.2':
+ resolution: {integrity: sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==}
+
+ '@vitejs/plugin-react@4.7.0':
+ resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+
+ '@vitest/expect@1.6.1':
+ resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==}
+
+ '@vitest/runner@1.6.1':
+ resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==}
+
+ '@vitest/snapshot@1.6.1':
+ resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==}
+
+ '@vitest/spy@1.6.1':
+ resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==}
+
+ '@vitest/utils@1.6.1':
+ resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==}
+
+ '@vscode/ripgrep-darwin-arm64@1.18.0':
+ resolution: {integrity: sha512-r3ktHSvbFycQNF6sl7sNDPocpsI7J+mEzh1IaZFkY0spm3k2Z9t8hPAeOK7+p0l6p6/swkQC14XWX01low+94Q==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@vscode/ripgrep-darwin-x64@1.18.0':
+ resolution: {integrity: sha512-25b4gWbL138dGuQU244ebCKKc0q05ULBMoFSz9oAEUHNeqK/lOJViDS7DRvbDazzAzSEdan391Znks/R5mkaTQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@vscode/ripgrep-linux-arm64@1.18.0':
+ resolution: {integrity: sha512-lQ/5zTG++U0E3IhVgS4EPTTn/U4okncaRMM5GOFfOYZywS4nuD31GhkHbNYlDk5CuDC68+hYJ0/eQeyCKJDA+g==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@vscode/ripgrep-linux-arm@1.18.0':
+ resolution: {integrity: sha512-GDAvufNDHu8zqLEmXstalQF0Wh6wQvdsBi/Vg3Yi3CK4a8XoFXqqXVEHEZ9xQz3t0NfoSEc9JbvK9DDS6FxyxQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@vscode/ripgrep-linux-ia32@1.18.0':
+ resolution: {integrity: sha512-YWLkSUtFd4Jh5EepIhA9RJSfv3uMAVMo+2rBIGHPBnvgLrZciIs2cDKei1/p6Wc/aCzUoHyMAg2R6tw4ZCBKGg==}
+ cpu: [ia32]
+ os: [linux]
+
+ '@vscode/ripgrep-linux-ppc64@1.18.0':
+ resolution: {integrity: sha512-quXVY8fwQ8O/lvU1yrSqSl3jlUzysRSb+AfUfCL/tRtphxsKlFvPAejryZ6vg4Bgvn8XL74xb4qMCDmWgYrT5w==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@vscode/ripgrep-linux-riscv64@1.18.0':
+ resolution: {integrity: sha512-f5kBQBrWfQt8Q7OhSORuNDei5dkYagBj3y4jImSUXGMy8B/Ke7SltSRcUtjPv166FAFfHCAmWuZp3+cWnX2/Vw==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@vscode/ripgrep-linux-s390x@1.18.0':
+ resolution: {integrity: sha512-rTOcJFGGcl2c07RUOWUo4U1ndnemKhY6A9hnMB18uk7jSgJc0d/QLBGWMWpumdtoJtpizn/wIv5mXIisJukusQ==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@vscode/ripgrep-linux-x64@1.18.0':
+ resolution: {integrity: sha512-mQ3bVrUpnD2vs7QT0vX90Lt0cnUq467uFtEktIdsJJmW296RoSULRGqWgzG1AKxyBpNDD6l4ZO4qKf6SgyC23Q==}
+ cpu: [x64]
+ os: [linux]
+
+ '@vscode/ripgrep-win32-arm64@1.18.0':
+ resolution: {integrity: sha512-vfTIjq1OHnzUjxZcHVQAMbnggp8dpGf+0QKFOZHwWPqFwXxQC8eCWM+5NUdoJ6yrElCeMzoUTXoK/LdZaniB+Q==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@vscode/ripgrep-win32-ia32@1.18.0':
+ resolution: {integrity: sha512-//rfAE+BOw5AC2EMmepmiE36jUuevtQYNQqqlw1s3m9FlRxjxEut97RkRPHAu9BG4mSojatZx+kXZXNdyI9caQ==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@vscode/ripgrep-win32-x64@1.18.0':
+ resolution: {integrity: sha512-KNPvtElldqILHdnAetujPaowkNbpqJy3ssIGGN6F6Kve9Qi+nNLI2DN01O83JjCEVQbCzl8Ov3QZ9Eov3BR8Dg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@vscode/ripgrep@1.18.0':
+ resolution: {integrity: sha512-ns5lWe44tSfbTMbVUsyB+I1819PVSw4AdpgK0RNkzfWfwy6+3IUNSxwSrfTno1/oWaS/hERNz+XLWVyga2aJBQ==}
+
+ '@vscode/vsce-sign-alpine-arm64@2.0.6':
+ resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==}
+ cpu: [arm64]
+ os: [alpine]
+
+ '@vscode/vsce-sign-alpine-x64@2.0.6':
+ resolution: {integrity: sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==}
+ cpu: [x64]
+ os: [alpine]
+
+ '@vscode/vsce-sign-darwin-arm64@2.0.6':
+ resolution: {integrity: sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@vscode/vsce-sign-darwin-x64@2.0.6':
+ resolution: {integrity: sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@vscode/vsce-sign-linux-arm64@2.0.6':
+ resolution: {integrity: sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@vscode/vsce-sign-linux-arm@2.0.6':
+ resolution: {integrity: sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@vscode/vsce-sign-linux-x64@2.0.6':
+ resolution: {integrity: sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@vscode/vsce-sign-win32-arm64@2.0.6':
+ resolution: {integrity: sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@vscode/vsce-sign-win32-x64@2.0.6':
+ resolution: {integrity: sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==}
+ cpu: [x64]
+ os: [win32]
+
+ '@vscode/vsce-sign@2.0.9':
+ resolution: {integrity: sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==}
+
+ '@vscode/vsce@2.32.0':
+ resolution: {integrity: sha512-3EFJfsgrSftIqt3EtdRcAygy/OJ3hstyI1cDmIgkU9CFZW5C+3djr6mfosndCUqcVYuyjmxOK1xmFp/Bq7+NIg==}
+ engines: {node: '>= 16'}
+ hasBin: true
+
+ '@vue/compiler-core@3.5.39':
+ resolution: {integrity: sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==}
+
+ '@vue/compiler-dom@3.5.39':
+ resolution: {integrity: sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==}
+
+ '@vue/compiler-sfc@3.5.39':
+ resolution: {integrity: sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==}
+
+ '@vue/compiler-ssr@3.5.39':
+ resolution: {integrity: sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==}
+
+ '@vue/shared@3.5.39':
+ resolution: {integrity: sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==}
+
+ '@xenova/transformers@2.17.2':
+ resolution: {integrity: sha512-lZmHqzrVIkSvZdKZEx7IYY51TK0WDrC8eR0c5IMnBsO8di8are1zzw8BlLhyO2TklZKLN5UffNGs1IJwT6oOqQ==}
+
+ '@xstate/react@6.1.0':
+ resolution: {integrity: sha512-ep9F0jGTI63B/jE8GHdMpUqtuz7yRebNaKv8EMUaiSi29NOglywc2X2YSOV/ygbIK+LtmgZ0q9anoEA2iBSEOw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ xstate: ^5.28.0
+ peerDependenciesMeta:
+ xstate:
+ optional: true
+
+ abbrev@1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+
+ accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+
+ acorn-walk@8.3.5:
+ resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@8.17.0:
+ resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ agent-base@7.1.4:
+ resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
+ engines: {node: '>= 14'}
+
+ agentkeepalive@4.6.0:
+ resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
+ engines: {node: '>= 8.0.0'}
+
+ aggregate-error@3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+
+ ajv-formats@3.0.1:
+ resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
+ peerDependencies:
+ ajv: ^8.0.0
+ peerDependenciesMeta:
+ ajv:
+ optional: true
+
+ ajv@8.20.0:
+ resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+
+ any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+
+ apache-arrow@18.1.0:
+ resolution: {integrity: sha512-v/ShMp57iBnBp4lDgV8Jx3d3Q5/Hac25FWmQ98eMahUiHPXcvwIMKJD0hBIgclm/FCG+LwPkAKtkRO1O/W0YGg==}
+ hasBin: true
+
+ app-module-path@2.2.0:
+ resolution: {integrity: sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-back@3.1.0:
+ resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==}
+ engines: {node: '>=6'}
+
+ array-back@6.2.3:
+ resolution: {integrity: sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==}
+ engines: {node: '>=12.17'}
+
+ assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+
+ ast-module-types@6.0.2:
+ resolution: {integrity: sha512-6KuK/7nZ/2Qh7sGuVEiwxjCxzTY2Pdb5mTo5z1e6/J8BA0tvjR7G8vQJKrQMTqwmnA3UPEyKIFX4YUS1DO1Hvw==}
+ engines: {node: '>=18'}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ azure-devops-node-api@12.5.0:
+ resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==}
+
+ b4a@1.8.1:
+ resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==}
+ peerDependencies:
+ react-native-b4a: '*'
+ peerDependenciesMeta:
+ react-native-b4a:
+ optional: true
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
+ bare-events@2.9.1:
+ resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+
+ bare-fs@4.7.3:
+ resolution: {integrity: sha512-xRgplks8SvcKkdlv2M6Z2LZmRsmqd+x0nXXGXeMEjwdibj1HSDrlnqBRLeYdMvsgCox7Bq0e+DHwfczOfsn6IA==}
+ engines: {bare: '>=1.16.0'}
+ peerDependencies:
+ bare-buffer: '*'
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+
+ bare-os@3.9.3:
+ resolution: {integrity: sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==}
+ engines: {bare: '>=1.14.0'}
+
+ bare-path@3.0.1:
+ resolution: {integrity: sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==}
+
+ bare-stream@2.13.3:
+ resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ bare-buffer: '*'
+ bare-events: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+ bare-buffer:
+ optional: true
+ bare-events:
+ optional: true
+
+ bare-url@2.4.5:
+ resolution: {integrity: sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ baseline-browser-mapping@2.10.41:
+ resolution: {integrity: sha512-WwS7MHhqGHHlaVsqRZnhvCEMS0owDX+SxRlve7JkuH7My1Ara3ZriTmCQupPfYjxMZ8I/tgxtJYr2t7taHaH4A==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ better-sqlite3@12.11.1:
+ resolution: {integrity: sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==}
+ engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x || 26.x}
+
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
+ bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
+ body-parser@2.3.0:
+ resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==}
+ engines: {node: '>=18'}
+
+ boolbase@1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+
+ bowser@2.14.1:
+ resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==}
+
+ brace-expansion@1.1.15:
+ resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==}
+
+ brace-expansion@2.1.1:
+ resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==}
+
+ brace-expansion@5.0.7:
+ resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==}
+ engines: {node: 18 || 20 || >=22}
+
+ browserslist@4.28.4:
+ resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-crc32@0.2.13:
+ resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
+
+ buffer-equal-constant-time@1.0.1:
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
+
+ buffer@5.7.1:
+ resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
+
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
+
+ bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+
+ cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+
+ cacache@16.1.3:
+ resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ cacheable-lookup@5.0.4:
+ resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
+ engines: {node: '>=10.6.0'}
+
+ cacheable-request@7.0.4:
+ resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
+ engines: {node: '>=8'}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
+ caniuse-lite@1.0.30001800:
+ resolution: {integrity: sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==}
+
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
+ chai@4.5.0:
+ resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
+ engines: {node: '>=4'}
+
+ chalk-template@0.4.0:
+ resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==}
+ engines: {node: '>=12'}
+
+ chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+ check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+
+ cheerio-select@2.1.0:
+ resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
+
+ cheerio@1.2.0:
+ resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==}
+ engines: {node: '>=20.18.1'}
+
+ chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+
+ chownr@2.0.0:
+ resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
+ engines: {node: '>=10'}
+
+ clean-stack@2.2.0:
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
+
+ cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ clone-response@1.0.3:
+ resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
+
+ clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+
+ cockatiel@3.2.1:
+ resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==}
+ engines: {node: '>=16'}
+
+ code-block-writer@13.0.3:
+ resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==}
+
+ color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ color-string@1.9.1:
+ resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
+
+ color@4.2.3:
+ resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
+ engines: {node: '>=12.5.0'}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
+ command-line-args@5.2.1:
+ resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==}
+ engines: {node: '>=4.0.0'}
+
+ command-line-usage@7.0.4:
+ resolution: {integrity: sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==}
+ engines: {node: '>=12.20.0'}
+
+ commander@12.1.0:
+ resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
+ engines: {node: '>=18'}
+
+ commander@6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+
+ commander@7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+
+ commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ concurrently@8.2.2:
+ resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
+ engines: {node: ^14.13.0 || >=16.0.0}
+ hasBin: true
+
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
+ content-disposition@1.1.0:
+ resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==}
+ engines: {node: '>=18'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
+ content-type@2.0.0:
+ resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==}
+ engines: {node: '>=18'}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cookie-signature@1.2.2:
+ resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==}
+ engines: {node: '>=6.6.0'}
+
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
+ engines: {node: '>= 0.6'}
+
+ cors@2.8.6:
+ resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==}
+ engines: {node: '>= 0.10'}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ css-select@5.2.2:
+ resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==}
+
+ css-what@6.2.2:
+ resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
+ engines: {node: '>= 6'}
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decompress-response@6.0.0:
+ resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
+ engines: {node: '>=10'}
+
+ deep-eql@4.1.4:
+ resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
+ engines: {node: '>=6'}
+
+ deep-extend@0.6.0:
+ resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
+ engines: {node: '>=4.0.0'}
+
+ default-browser-id@5.0.1:
+ resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
+ engines: {node: '>=18'}
+
+ default-browser@5.5.0:
+ resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
+ engines: {node: '>=18'}
+
+ defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+
+ defer-to-connect@2.0.1:
+ resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
+ engines: {node: '>=10'}
+
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
+ dependency-tree@11.5.0:
+ resolution: {integrity: sha512-K9zBwKDZrot3RkxizugpVSdImxULAg4Ycp3+ydy2r561k96oiiw6nfsOR15fwNDQ5BF2UXe+2JFM/H5Xz4MGQg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ detective-amd@6.1.0:
+ resolution: {integrity: sha512-fmI6LGMvotqd49QaA3ZYw+q0aGp2yXmMjzIuY6fH9j9YFIXY/73yDhMwhX9cPbhWd+AH06NH1Di/LKOuCH0Ubg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ detective-cjs@6.1.1:
+ resolution: {integrity: sha512-pSh7mkCKEtLlmANqLu3KDFS3NV8Hx41jy/JF1/gAWOgU+Uo5QTkeI1tWNP4dWGo4L0E9j18Ez9EPsTleautKqA==}
+ engines: {node: '>=18'}
+
+ detective-es6@5.0.2:
+ resolution: {integrity: sha512-+qHHGYhjupiVs4rnIpI9nZ5B130A4AmE35ZX1w33hb46vcZ7T3jfDbvmPw0FhWtMHn5BS5HHu7ZtnZ53bMcXZA==}
+ engines: {node: '>=18'}
+
+ detective-postcss@8.0.4:
+ resolution: {integrity: sha512-DZ7M/hWPZyr17ZUdoQ+TVXaPj70mYr4XXrAE+GeJbca44haCvZgb191L/jLJmFYewhxRJuBd4lUtNSu986TXag==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ postcss: ^8.4.47
+
+ detective-sass@6.0.2:
+ resolution: {integrity: sha512-i3xpXHDKS0qI2aFW4asQ7fqlPK00ndOVZELvQapFJCaF0VxYmsNWtd0AmvXbTLMk7bfO5VdIeorhY9KfmHVoVA==}
+ engines: {node: '>=18'}
+
+ detective-scss@5.0.2:
+ resolution: {integrity: sha512-9JOEMZ8pDh3ShXmftq7hoQqqJsClaGgxo1hghfCeFlmKf5TC/Twtwb0PAaK8dXwpg9Z0uCmEYSrCxO+kel2eEg==}
+ engines: {node: '>=18'}
+
+ detective-stylus@5.0.1:
+ resolution: {integrity: sha512-Dgn0bUqdGbE3oZJ+WCKf8Dmu7VWLcmRJGc6RCzBgG31DLIyai9WAoEhYRgIHpt/BCRMrnXLbGWGPQuBUrnF0TA==}
+ engines: {node: '>=18'}
+
+ detective-typescript@14.1.2:
+ resolution: {integrity: sha512-bIeEn0eVi/JRsE1YizBR2ilnMlWRAIBJJ6kXCKNFxEEWhUcEY3R6I3KYIAy48ieURbD1hcb3Ebvl8AqeoPMSzg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ typescript: ^5.4.4 || ^6.0.2
+
+ detective-vue2@2.3.0:
+ resolution: {integrity: sha512-3gwbZPqVTm9sL9XdZsgEJ7x4x99O853VVZHapQAiEkGuMJMpFPjHDrecSgfqnS5JW3FJfYXesLZGvUOibjn49g==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ typescript: ^5.4.4 || ^6.0.2
+
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
+ diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ diff@5.2.2:
+ resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==}
+ engines: {node: '>=0.3.1'}
+
+ dom-serializer@2.0.0:
+ resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
+
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+
+ domhandler@5.0.3:
+ resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+ engines: {node: '>= 4'}
+
+ domutils@3.2.2:
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
+ electron-to-chromium@1.5.385:
+ resolution: {integrity: sha512-78sa/M08MNAYHQfjoWMvOlKQqZ0ElhSm/L5HNUc96VZ3b+KvDVnngFm8sYQy0XrhTRgAhggHr5abA7yTvRdo4Q==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
+ encoding-sniffer@0.2.1:
+ resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==}
+
+ encoding@0.1.13:
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+
+ end-of-stream@1.4.5:
+ resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
+
+ enhanced-resolve@5.24.1:
+ resolution: {integrity: sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==}
+ engines: {node: '>=10.13.0'}
+
+ entities@2.1.0:
+ resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ entities@6.0.1:
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+ engines: {node: '>=0.12'}
+
+ entities@7.0.1:
+ resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
+ engines: {node: '>=0.12'}
+
+ env-paths@2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+
+ err-code@2.0.3:
+ resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.2:
+ resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
+ escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ escodegen@2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+
+ eslint-visitor-keys@5.0.1:
+ resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
+ esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
+ events-universal@1.0.1:
+ resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
+
+ eventsource-parser@3.1.0:
+ resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==}
+ engines: {node: '>=18.0.0'}
+
+ eventsource@3.0.7:
+ resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
+ engines: {node: '>=18.0.0'}
+
+ execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+
+ expand-template@2.0.3:
+ resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
+ engines: {node: '>=6'}
+
+ exponential-backoff@3.1.3:
+ resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
+
+ express-rate-limit@8.5.2:
+ resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==}
+ engines: {node: '>= 16'}
+ peerDependencies:
+ express: '>= 4.11'
+
+ express@5.2.1:
+ resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==}
+ engines: {node: '>= 18'}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
+ fast-uri@3.1.3:
+ resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==}
+
+ fd-package-json@2.0.0:
+ resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==}
+
+ fd-slicer@1.1.0:
+ resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
+ filing-cabinet@5.5.1:
+ resolution: {integrity: sha512-PzLBTChlVPn6LnNxF0KWs+XqPziVh3Sfmz/3TXOymHxu6a9yhrDcQn7YwgpcRM6mqhR2WHVGPR8RU4fmcF1IVA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ finalhandler@2.1.1:
+ resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==}
+ engines: {node: '>= 18.0.0'}
+
+ find-replace@3.0.0:
+ resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==}
+ engines: {node: '>=4.0.0'}
+
+ flatbuffers@1.12.0:
+ resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==}
+
+ flatbuffers@24.12.23:
+ resolution: {integrity: sha512-dLVCAISd5mhls514keQzmEG6QHmUUsNuWsb4tFafIUwvvgDjXhtfAYSKOzt5SWOy+qByV5pbsDZ+Vb7HUOBEdA==}
+
+ form-data@4.0.6:
+ resolution: {integrity: sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==}
+ engines: {node: '>= 6'}
+
+ formatly@0.3.0:
+ resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==}
+ engines: {node: '>=18.3.0'}
+ hasBin: true
+
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ framer-motion@12.42.2:
+ resolution: {integrity: sha512-5XY9luDiu0oHfHBjpDthFMh0ES+122w6p/papSJBweMkO8Sn+PW2QaEgRblQBpWFnuvZS5qvarpt/hO2pjGmnw==}
+ peerDependencies:
+ '@emotion/is-prop-valid': '*'
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@emotion/is-prop-valid':
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+
+ fs-constants@1.0.0:
+ resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
+
+ fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+
+ fs-minipass@2.1.0:
+ resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
+ engines: {node: '>= 8'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-amd-module-type@6.0.2:
+ resolution: {integrity: sha512-7zShVYAYtMnj9S65CfN+hvpBCByfuB1OY8xID01nZEzXTZbx4YyysAfi+nMl95JSR6odt4q8TCj2W63KAoyVLQ==}
+ engines: {node: '>=18'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-own-enumerable-property-symbols@3.0.2:
+ resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ get-stream@5.2.0:
+ resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
+ engines: {node: '>=8'}
+
+ get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ get-tsconfig@4.14.0:
+ resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
+
+ github-from-package@0.0.0:
+ resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+
+ glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+
+ gonzales-pe@4.3.0:
+ resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==}
+ engines: {node: '>=0.6.0'}
+ hasBin: true
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ got@11.8.6:
+ resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
+ engines: {node: '>=10.19.0'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ guid-typescript@1.0.9:
+ resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==}
+
+ has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.4:
+ resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==}
+ engines: {node: '>= 0.4'}
+
+ hast-util-to-html@9.0.5:
+ resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+ hono@4.12.27:
+ resolution: {integrity: sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==}
+ engines: {node: '>=16.9.0'}
+
+ hosted-git-info@4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+
+ html-void-elements@3.0.0:
+ resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+
+ htmlparser2@10.1.0:
+ resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==}
+
+ http-cache-semantics@4.2.0:
+ resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==}
+
+ http-errors@2.0.1:
+ resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+ engines: {node: '>= 0.8'}
+
+ http-proxy-agent@5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+
+ http2-wrapper@1.0.3:
+ resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
+ engines: {node: '>=10.19.0'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ https-proxy-agent@7.0.6:
+ resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
+ engines: {node: '>= 14'}
+
+ human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+
+ humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+
+ iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+
+ iconv-lite@0.7.2:
+ resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}
+ engines: {node: '>=0.10.0'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+
+ infer-owner@1.0.4:
+ resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
+
+ inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+
+ ip-address@10.2.0:
+ resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==}
+ engines: {node: '>= 12'}
+
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
+ is-arrayish@0.3.4:
+ resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}
+
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
+ engines: {node: '>= 0.4'}
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
+ is-interactive@1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+
+ is-lambda@1.0.1:
+ resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
+
+ is-obj@1.0.1:
+ resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+ engines: {node: '>=0.10.0'}
+
+ is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+
+ is-regexp@1.0.0:
+ resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==}
+ engines: {node: '>=0.10.0'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
+ is-url-superb@4.0.0:
+ resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==}
+ engines: {node: '>=10'}
+
+ is-wsl@3.1.1:
+ resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
+ engines: {node: '>=16'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jiti@2.7.0:
+ resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
+ hasBin: true
+
+ jose@6.2.3:
+ resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-tokens@9.0.1:
+ resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json-bignum@0.0.3:
+ resolution: {integrity: sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==}
+ engines: {node: '>=0.8'}
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ json-schema-typed@8.0.2:
+ resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==}
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
+ jsonfile@6.2.1:
+ resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
+
+ jsonwebtoken@9.0.3:
+ resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==}
+ engines: {node: '>=12', npm: '>=6'}
+
+ jwa@2.0.1:
+ resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==}
+
+ jws@4.0.1:
+ resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==}
+
+ keytar@7.9.0:
+ resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ knip@6.24.0:
+ resolution: {integrity: sha512-PokLlgeEjLh1rAsB7ts+52wZ37HBr1nDhE6NNONwEaXdeZGCJOkP7ZlIAI2Gtu8xohquzTWy75bc/1diI9shQw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
+ leven@3.1.0:
+ resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
+ engines: {node: '>=6'}
+
+ linkify-it@3.0.3:
+ resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
+
+ local-pkg@0.5.1:
+ resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
+ engines: {node: '>=14'}
+
+ lodash.camelcase@4.3.0:
+ resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+
+ lodash.includes@4.3.0:
+ resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==}
+
+ lodash.isboolean@3.0.3:
+ resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==}
+
+ lodash.isinteger@4.0.4:
+ resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==}
+
+ lodash.isnumber@3.0.3:
+ resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==}
+
+ lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+
+ lodash.isstring@4.0.1:
+ resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
+
+ lodash.once@4.1.1:
+ resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==}
+
+ lodash@4.18.1:
+ resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ long@4.0.0:
+ resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+
+ lowercase-keys@2.0.0:
+ resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
+ engines: {node: '>=8'}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ lru-cache@7.18.3:
+ resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ engines: {node: '>=12'}
+
+ madge@8.0.0:
+ resolution: {integrity: sha512-9sSsi3TBPhmkTCIpVQF0SPiChj1L7Rq9kU2KDG1o6v2XH9cCw086MopjVCD+vuoL5v8S77DTbVopTO8OUiQpIw==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.4.4
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ make-fetch-happen@10.2.1:
+ resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ markdown-it@12.3.2:
+ resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
+ hasBin: true
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ mdast-util-to-hast@13.2.1:
+ resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
+
+ mdurl@1.0.1:
+ resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+
+ media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
+
+ merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ micromark-util-character@2.1.1:
+ resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+ micromark-util-encode@2.0.1:
+ resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+ micromark-util-sanitize-uri@2.0.1:
+ resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+ micromark-util-symbol@2.0.1:
+ resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+ micromark-util-types@2.0.2:
+ resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@3.0.2:
+ resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+ engines: {node: '>=18'}
+
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ mimic-response@1.0.1:
+ resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
+ engines: {node: '>=4'}
+
+ mimic-response@3.1.0:
+ resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
+ engines: {node: '>=10'}
+
+ minimatch@10.2.5:
+ resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
+ engines: {node: 18 || 20 || >=22}
+
+ minimatch@3.1.5:
+ resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
+
+ minimatch@5.1.9:
+ resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==}
+ engines: {node: '>=10'}
+
+ minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+
+ minipass-collect@1.0.2:
+ resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
+ engines: {node: '>= 8'}
+
+ minipass-fetch@2.1.2:
+ resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ minipass-flush@1.0.7:
+ resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==}
+ engines: {node: '>= 8'}
+
+ minipass-pipeline@1.2.4:
+ resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
+ engines: {node: '>=8'}
+
+ minipass-sized@1.0.3:
+ resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
+ engines: {node: '>=8'}
+
+ minipass@3.3.6:
+ resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
+ engines: {node: '>=8'}
+
+ minipass@5.0.0:
+ resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
+ engines: {node: '>=8'}
+
+ minizlib@2.1.2:
+ resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
+ engines: {node: '>= 8'}
+
+ mkdirp-classic@0.5.3:
+ resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+
+ mkdirp@1.0.4:
+ resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ mlly@1.8.2:
+ resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==}
+
+ module-definition@6.0.2:
+ resolution: {integrity: sha512-SvAU3lB0+Yjbq55yHY3wkRZBOh+fhU1SnIF3IFbTewv6mtAh7yUT8ACHAJ2mGIJ7tCes2QuCL/cl6m0JSZ/ArA==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ module-lookup-amd@9.1.3:
+ resolution: {integrity: sha512-Jc3XmOaR9FdfMJSK8+vyLgsCkzm8z2L0NS6vrlRWi12DjS7MY7TMNE7E1yj8yXx837xtMDbKSSgcdXnFlJ2YLg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ motion-dom@12.42.2:
+ resolution: {integrity: sha512-5gIMWLp/PycBtJRJWRgjxke5n8dlvkSn2DrYW+tr3XcqAZY1xZh6BJyooJXCM8wdfM7wfMjkBJNLge1CKPUIRA==}
+
+ motion-utils@12.39.0:
+ resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ mute-stream@0.0.8:
+ resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+
+ nanoid@3.3.15:
+ resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ nanoid@5.1.16:
+ resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+
+ napi-build-utils@2.0.0:
+ resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
+
+ negotiator@0.6.4:
+ resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
+ engines: {node: '>= 0.6'}
+
+ negotiator@1.0.0:
+ resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
+ engines: {node: '>= 0.6'}
+
+ node-abi@3.94.0:
+ resolution: {integrity: sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g==}
+ engines: {node: '>=10'}
+
+ node-addon-api@4.3.0:
+ resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
+
+ node-addon-api@6.1.0:
+ resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
+
+ node-api-version@0.2.1:
+ resolution: {integrity: sha512-2xP/IGGMmmSQpI1+O/k72jF/ykvZ89JeuKX3TLJAYPDVLUalrshrLHkeVcCCZqG/eEa635cr8IBYzgnDvM2O8Q==}
+
+ node-releases@2.0.50:
+ resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==}
+ engines: {node: '>=18'}
+
+ node-source-walk@7.0.2:
+ resolution: {integrity: sha512-71kFFjYaSshDTA8/a2HiTYPLdASWjLJxUyJxGE+ffxU+KhxSBtM9kiLUX+R2yooFdSFKMFpi4n3PFtDy6qXv8A==}
+ engines: {node: '>=18'}
+
+ nopt@6.0.0:
+ resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ hasBin: true
+
+ normalize-url@6.1.0:
+ resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
+ engines: {node: '>=10'}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ nth-check@2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ oniguruma-parser@0.12.2:
+ resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==}
+
+ oniguruma-to-es@4.3.6:
+ resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
+
+ onnx-proto@4.0.4:
+ resolution: {integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==}
+
+ onnxruntime-common@1.14.0:
+ resolution: {integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==}
+
+ onnxruntime-node@1.14.0:
+ resolution: {integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==}
+ os: [win32, darwin, linux]
+
+ onnxruntime-web@1.14.0:
+ resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==}
+
+ open@10.2.0:
+ resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
+ engines: {node: '>=18'}
+
+ ora@5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+
+ oxc-parser@0.137.0:
+ resolution: {integrity: sha512-yFImD+WLElJpLKy8llG1qe4DCmMsL18peRp8XP1JKfig/gISbJkglnpDtX2aTmAn10kZF7164HbN2H8QPsXxGg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+
+ oxc-resolver@11.21.3:
+ resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==}
+
+ p-cancelable@2.1.1:
+ resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
+ engines: {node: '>=8'}
+
+ p-limit@5.0.0:
+ resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
+ engines: {node: '>=18'}
+
+ p-map@4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+
+ parse-ms@2.1.0:
+ resolution: {integrity: sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==}
+ engines: {node: '>=6'}
+
+ parse-semver@1.1.1:
+ resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==}
+
+ parse5-htmlparser2-tree-adapter@7.1.0:
+ resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==}
+
+ parse5-parser-stream@7.1.2:
+ resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==}
+
+ parse5@7.3.0:
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
+
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
+ path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-to-regexp@8.4.2:
+ resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+ pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+
+ pend@1.2.0:
+ resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@4.0.5:
+ resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==}
+ engines: {node: '>=12'}
+
+ pkce-challenge@5.0.1:
+ resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==}
+ engines: {node: '>=16.20.0'}
+
+ pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+
+ platform@1.3.6:
+ resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
+
+ pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+
+ postcss-values-parser@6.0.2:
+ resolution: {integrity: sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ postcss: ^8.2.9
+
+ postcss@8.5.16:
+ resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ prebuild-install@7.1.3:
+ resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
+ engines: {node: '>=10'}
+ deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
+ hasBin: true
+
+ precinct@12.3.2:
+ resolution: {integrity: sha512-JbJevI1K80z8e/WIyDt/4vUN/4qcfBSKKqOjJA4mosPPPb7zODKRJQV7YN7apVWN3k58nZYm/vEsLgEGYmnxwg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+
+ pretty-ms@7.0.1:
+ resolution: {integrity: sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==}
+ engines: {node: '>=10'}
+
+ proc-log@2.0.1:
+ resolution: {integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ promise-inflight@1.0.1:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+
+ promise-retry@2.0.1:
+ resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
+ engines: {node: '>=10'}
+
+ property-information@7.2.0:
+ resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==}
+
+ protobufjs@6.11.6:
+ resolution: {integrity: sha512-k8BHqgPBOtrlougZZqF2uUk5Z7bN8f0wj+3e8M3hvtSv0NBAz4VBy5f6R5Nxq/l+i7mRFTgNZb2trxqTpHNY/A==}
+ hasBin: true
+
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
+ pump@3.0.4:
+ resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==}
+
+ qs@6.15.3:
+ resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==}
+ engines: {node: '>=0.6'}
+
+ quick-lru@5.1.1:
+ resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
+ engines: {node: '>=10'}
+
+ quote-unquote@1.0.0:
+ resolution: {integrity: sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==}
+
+ range-parser@1.3.0:
+ resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==}
+ engines: {node: '>= 0.6'}
+
+ raw-body@3.0.2:
+ resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
+ engines: {node: '>= 0.10'}
+
+ rc@1.2.8:
+ resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
+ hasBin: true
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
+ react-is@18.3.1:
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+
+ react-refresh@0.17.0:
+ resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==}
+ engines: {node: '>=0.10.0'}
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
+ read-binary-file-arch@1.0.6:
+ resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==}
+ hasBin: true
+
+ read@1.0.7:
+ resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==}
+ engines: {node: '>=0.8'}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ reflect-metadata@0.2.2:
+ resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
+
+ regex-recursion@6.0.2:
+ resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
+
+ regex-utilities@2.3.0:
+ resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
+
+ regex@6.1.0:
+ resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ requirejs-config-file@4.0.0:
+ resolution: {integrity: sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw==}
+ engines: {node: '>=10.13.0'}
+
+ requirejs@2.3.8:
+ resolution: {integrity: sha512-7/cTSLOdYkNBNJcDMWf+luFvMriVm7eYxp4BcFCsAX0wF421Vyce5SXP17c+Jd5otXKGNehIonFlyQXSowL6Mw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ resolve-alpn@1.2.1:
+ resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
+
+ resolve-dependency-path@4.0.1:
+ resolution: {integrity: sha512-YQftIIC4vzO9UMhO/sCgXukNyiwVRCVaxiWskCBy7Zpqkplm8kTAISZ8O1MoKW1ca6xzgLUBjZTcDgypXvXxiQ==}
+ engines: {node: '>=18'}
+
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
+ resolve@1.22.12:
+ resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ responselike@2.0.1:
+ resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
+
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ rollup@4.62.2:
+ resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ router@2.2.0:
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
+
+ run-applescript@7.1.0:
+ resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
+ engines: {node: '>=18'}
+
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ sass-lookup@6.1.2:
+ resolution: {integrity: sha512-GjmndmKQBtlPil79RK72L7yc5kDXZPCQeH97bP8R8DcxtXQJO6vECExb3WP/m6+cxaV9h4ZxrSRvCkPG2v/VSw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ sax@1.6.0:
+ resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
+ engines: {node: '>=11.0.0'}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
+ semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ semver@7.8.5:
+ resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@1.2.1:
+ resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==}
+ engines: {node: '>= 18'}
+
+ serve-static@2.2.1:
+ resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==}
+ engines: {node: '>= 18'}
+
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ sharp@0.32.6:
+ resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
+ engines: {node: '>=14.15.0'}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ shell-quote@1.9.0:
+ resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==}
+ engines: {node: '>= 0.4'}
+
+ shiki@4.3.0:
+ resolution: {integrity: sha512-NKKjWzR6LIGL3sXBrWDw9sDS9cxx42/DkysaNqJEeOWE8Kix5gpak0bc00OfDVEO4oyXSyz8+aRaqKoBD1yo7A==}
+ engines: {node: '>=20'}
+
+ side-channel-list@1.0.1:
+ resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
+ side-channel@1.1.1:
+ resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==}
+ engines: {node: '>= 0.4'}
+
+ siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ simple-concat@1.0.1:
+ resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
+
+ simple-get@4.0.1:
+ resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
+
+ simple-git@3.36.0:
+ resolution: {integrity: sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==}
+
+ simple-swizzle@0.2.4:
+ resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}
+
+ smart-buffer@4.2.0:
+ resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+
+ smol-toml@1.7.0:
+ resolution: {integrity: sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==}
+ engines: {node: '>= 18'}
+
+ socks-proxy-agent@7.0.0:
+ resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==}
+ engines: {node: '>= 10'}
+
+ socks@2.8.9:
+ resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==}
+ engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
+ spawn-command@0.0.2:
+ resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
+
+ ssri@9.0.1:
+ resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+ statuses@2.0.2:
+ resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
+ engines: {node: '>= 0.8'}
+
+ std-env@3.10.0:
+ resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
+
+ stream-to-array@2.3.0:
+ resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==}
+
+ streamx@2.28.0:
+ resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
+ stringify-object@3.3.0:
+ resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
+ engines: {node: '>=4'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ strip-json-comments@2.0.1:
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
+
+ strip-json-comments@5.0.3:
+ resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
+ engines: {node: '>=14.16'}
+
+ strip-literal@2.1.1:
+ resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
+
+ stylus-lookup@6.1.2:
+ resolution: {integrity: sha512-O+Q/SJ8s1X2aMLh4213fQ9X/bND9M3dhSsyTRe+O1OXPcewGLiYmAtKCrnP7FDvDBaXB2ZHPkCt3zi4cJXBlCQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ table-layout@4.1.1:
+ resolution: {integrity: sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==}
+ engines: {node: '>=12.17'}
+
+ tapable@2.3.3:
+ resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
+ engines: {node: '>=6'}
+
+ tar-fs@2.1.5:
+ resolution: {integrity: sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==}
+
+ tar-fs@3.1.3:
+ resolution: {integrity: sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==}
+
+ tar-stream@2.2.0:
+ resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
+ engines: {node: '>=6'}
+
+ tar-stream@3.2.0:
+ resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
+
+ tar@6.2.1:
+ resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
+ engines: {node: '>=10'}
+ deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
+
+ teex@1.0.1:
+ resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
+
+ text-decoder@1.2.7:
+ resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==}
+
+ tiktoken@1.0.22:
+ resolution: {integrity: sha512-PKvy1rVF1RibfF3JlXBSP0Jrcw2uq3yXdgcEXtKTYn3QJ/cBRBHDnrJ5jHky+MENZ6DIPwNUGWpkVx+7joCpNA==}
+
+ tinybench@2.9.0:
+ resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
+ tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
+
+ tinypool@0.8.4:
+ resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
+ engines: {node: '>=14.0.0'}
+
+ tinyspy@2.2.1:
+ resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
+ engines: {node: '>=14.0.0'}
+
+ tmp@0.2.7:
+ resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==}
+ engines: {node: '>=14.14'}
+
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
+ tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+
+ tree-sitter-wasms@0.1.13:
+ resolution: {integrity: sha512-wT+cR6DwaIz80/vho3AvSF0N4txuNx/5bcRKoXouOfClpxh/qqrF4URNLQXbbt8MaAxeksZcZd1j8gcGjc+QxQ==}
+
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ ts-api-utils@2.5.0:
+ resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+
+ ts-graphviz@2.1.6:
+ resolution: {integrity: sha512-XyLVuhBVvdJTJr2FJJV2L1pc4MwSjMhcunRVgDE9k4wbb2ee7ORYnPewxMWUav12vxyfUM686MSGsqnVRIInuw==}
+ engines: {node: '>=18'}
+
+ ts-morph@28.0.0:
+ resolution: {integrity: sha512-Wp3tnZ2bzwxyTZMtgWVzXDfm7lB1Drz+y9DmmYH/L702PQhPyVrp3pkou3yIz4qjS14GY9kcpmLiOOMvl8oG1g==}
+
+ tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+
+ tunnel@0.0.6:
+ resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==}
+ engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'}
+
+ type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+
+ type-is@2.1.0:
+ resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==}
+ engines: {node: '>= 18'}
+
+ typed-rest-client@1.8.11:
+ resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==}
+
+ typescript@5.9.3:
+ resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ typical@4.0.0:
+ resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==}
+ engines: {node: '>=8'}
+
+ typical@7.3.0:
+ resolution: {integrity: sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==}
+ engines: {node: '>=12.17'}
+
+ uc.micro@1.0.6:
+ resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+
+ ufo@1.6.4:
+ resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==}
+
+ unbash@4.0.2:
+ resolution: {integrity: sha512-8gwNZ29+0/3zmXw7ToIHZtg6wK37xnniRUdBt7B27xZxaxfgR5tGMaGHT0t0dLtBV9fXE7zurh0s6Z1DHVjfWg==}
+ engines: {node: '>=14'}
+
+ underscore@1.13.8:
+ resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==}
+
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
+ undici@7.28.0:
+ resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==}
+ engines: {node: '>=20.18.1'}
+
+ unique-filename@2.0.1:
+ resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ unique-slug@3.0.0:
+ resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+
+ unist-util-is@6.0.1:
+ resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
+
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+ unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+ unist-util-visit-parents@6.0.2:
+ resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
+
+ unist-util-visit@5.1.0:
+ resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
+
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ url-join@4.0.1:
+ resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==}
+
+ use-isomorphic-layout-effect@1.2.1:
+ resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+
+ vfile-message@4.0.3:
+ resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
+ vite-node@1.6.1:
+ resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+
+ vite@5.4.21:
+ resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vitest@1.6.1:
+ resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@types/node': ^18.0.0 || >=20.0.0
+ '@vitest/browser': 1.6.1
+ '@vitest/ui': 1.6.1
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
+ walk-up-path@4.0.0:
+ resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==}
+ engines: {node: 20 || >=22}
+
+ walkdir@0.4.1:
+ resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==}
+ engines: {node: '>=6.0.0'}
+
+ wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+
+ web-tree-sitter@0.24.7:
+ resolution: {integrity: sha512-CdC/TqVFbXqR+C51v38hv6wOPatKEUGxa39scAeFSm98wIhZxAYonhRQPSMmfZ2w7JDI0zQDdzdmgtNk06/krQ==}
+
+ whatwg-encoding@3.1.1:
+ resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
+ engines: {node: '>=18'}
+ deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
+
+ whatwg-mimetype@4.0.0:
+ resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
+ engines: {node: '>=18'}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ why-is-node-running@2.3.0:
+ resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ wordwrapjs@5.1.1:
+ resolution: {integrity: sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==}
+ engines: {node: '>=12.17'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ wsl-utils@0.1.0:
+ resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
+ engines: {node: '>=18'}
+
+ xml2js@0.5.0:
+ resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==}
+ engines: {node: '>=4.0.0'}
+
+ xmlbuilder@11.0.1:
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
+
+ xstate@5.32.4:
+ resolution: {integrity: sha512-E5WtDB8DBs2ZWliz2Ry9XfbSZTbBRcK/cwefBot04qQ/L5SLP16xpnTDU4/ZFXuXFhNxi7JP2RhuoGwBnM+S4A==}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+ yaml@2.9.0:
+ resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
+ engines: {node: '>= 14.6'}
+ hasBin: true
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.3:
+ resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==}
+ engines: {node: '>=12'}
+
+ yauzl@2.10.0:
+ resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
+
+ yazl@2.5.1:
+ resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==}
+
+ yocto-queue@1.2.2:
+ resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
+ engines: {node: '>=12.20'}
+
+ zod-to-json-schema@3.25.2:
+ resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==}
+ peerDependencies:
+ zod: ^3.25.28 || ^4
+
+ zod@3.25.76:
+ resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
+
+ zod@4.4.3:
+ resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
+
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
+snapshots:
+
+ '@aws-sdk/client-bedrock-runtime@3.1079.0':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/credential-provider-node': 3.972.62
+ '@aws-sdk/eventstream-handler-node': 3.972.25
+ '@aws-sdk/middleware-eventstream': 3.972.21
+ '@aws-sdk/middleware-websocket': 3.972.35
+ '@aws-sdk/token-providers': 3.1079.0
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/fetch-http-handler': 5.6.3
+ '@smithy/node-http-handler': 4.9.3
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/core@3.974.27':
+ dependencies:
+ '@aws-sdk/types': 3.973.15
+ '@aws-sdk/xml-builder': 3.972.33
+ '@aws/lambda-invoke-store': 0.3.0
+ '@smithy/core': 3.29.1
+ '@smithy/signature-v4': 5.6.2
+ '@smithy/types': 4.15.1
+ bowser: 2.14.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-env@3.972.53':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-http@3.972.55':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/fetch-http-handler': 5.6.3
+ '@smithy/node-http-handler': 4.9.3
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-ini@3.972.60':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/credential-provider-env': 3.972.53
+ '@aws-sdk/credential-provider-http': 3.972.55
+ '@aws-sdk/credential-provider-login': 3.972.59
+ '@aws-sdk/credential-provider-process': 3.972.53
+ '@aws-sdk/credential-provider-sso': 3.972.59
+ '@aws-sdk/credential-provider-web-identity': 3.972.59
+ '@aws-sdk/nested-clients': 3.997.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/credential-provider-imds': 4.4.6
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-login@3.972.59':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/nested-clients': 3.997.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-node@3.972.62':
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.972.53
+ '@aws-sdk/credential-provider-http': 3.972.55
+ '@aws-sdk/credential-provider-ini': 3.972.60
+ '@aws-sdk/credential-provider-process': 3.972.53
+ '@aws-sdk/credential-provider-sso': 3.972.59
+ '@aws-sdk/credential-provider-web-identity': 3.972.59
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/credential-provider-imds': 4.4.6
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-process@3.972.53':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-sso@3.972.59':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/nested-clients': 3.997.27
+ '@aws-sdk/token-providers': 3.1079.0
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/credential-provider-web-identity@3.972.59':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/nested-clients': 3.997.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/eventstream-handler-node@3.972.25':
+ dependencies:
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-eventstream@3.972.21':
+ dependencies:
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/middleware-websocket@3.972.35':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/fetch-http-handler': 5.6.3
+ '@smithy/signature-v4': 5.6.2
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/nested-clients@3.997.27':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/signature-v4-multi-region': 3.996.38
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/fetch-http-handler': 5.6.3
+ '@smithy/node-http-handler': 4.9.3
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/signature-v4-multi-region@3.996.38':
+ dependencies:
+ '@aws-sdk/types': 3.973.15
+ '@smithy/signature-v4': 5.6.2
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/token-providers@3.1079.0':
+ dependencies:
+ '@aws-sdk/core': 3.974.27
+ '@aws-sdk/nested-clients': 3.997.27
+ '@aws-sdk/types': 3.973.15
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/types@3.973.15':
+ dependencies:
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws-sdk/xml-builder@3.972.33':
+ dependencies:
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@aws/lambda-invoke-store@0.3.0': {}
+
+ '@azure/abort-controller@2.1.2':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-auth@1.10.1':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-util': 1.13.1
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-client@1.10.2':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-rest-pipeline': 1.24.0
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-rest-pipeline@1.24.0':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ '@typespec/ts-http-runtime': 0.3.6
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/core-tracing@1.3.1':
+ dependencies:
+ tslib: 2.8.1
+
+ '@azure/core-util@1.13.1':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@typespec/ts-http-runtime': 0.3.6
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/identity@4.13.1':
+ dependencies:
+ '@azure/abort-controller': 2.1.2
+ '@azure/core-auth': 1.10.1
+ '@azure/core-client': 1.10.2
+ '@azure/core-rest-pipeline': 1.24.0
+ '@azure/core-tracing': 1.3.1
+ '@azure/core-util': 1.13.1
+ '@azure/logger': 1.3.0
+ '@azure/msal-browser': 5.16.0
+ '@azure/msal-node': 5.3.1
+ open: 10.2.0
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/logger@1.3.0':
+ dependencies:
+ '@typespec/ts-http-runtime': 0.3.6
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@azure/msal-browser@5.16.0':
+ dependencies:
+ '@azure/msal-common': 16.11.0
+
+ '@azure/msal-common@16.11.0': {}
+
+ '@azure/msal-node@5.3.1':
+ dependencies:
+ '@azure/msal-common': 16.11.0
+ jsonwebtoken: 9.0.3
+
+ '@babel/code-frame@7.29.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.29.7': {}
+
+ '@babel/core@7.29.7':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-compilation-targets': 7.29.7
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+ '@babel/helpers': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/traverse': 7.29.7
+ '@babel/types': 7.29.7
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.29.7':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-compilation-targets@7.29.7':
+ dependencies:
+ '@babel/compat-data': 7.29.7
+ '@babel/helper-validator-option': 7.29.7
+ browserslist: 4.28.4
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-globals@7.29.7': {}
+
+ '@babel/helper-module-imports@7.29.7':
+ dependencies:
+ '@babel/traverse': 7.29.7
+ '@babel/types': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/helper-module-imports': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+ '@babel/traverse': 7.29.7
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-plugin-utils@7.29.7': {}
+
+ '@babel/helper-string-parser@7.29.7': {}
+
+ '@babel/helper-validator-identifier@7.29.7': {}
+
+ '@babel/helper-validator-option@7.29.7': {}
+
+ '@babel/helpers@7.29.7':
+ dependencies:
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+
+ '@babel/parser@7.29.7':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7)':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/helper-plugin-utils': 7.29.7
+
+ '@babel/runtime@7.29.7': {}
+
+ '@babel/template@7.29.7':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+
+ '@babel/traverse@7.29.7':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/generator': 7.29.7
+ '@babel/helper-globals': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.29.7
+ '@babel/types': 7.29.7
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.29.7':
+ dependencies:
+ '@babel/helper-string-parser': 7.29.7
+ '@babel/helper-validator-identifier': 7.29.7
+
+ '@dependents/detective-less@5.0.3':
+ dependencies:
+ gonzales-pe: 4.3.0
+ node-source-walk: 7.0.2
+
+ '@discoveryjs/json-ext@1.1.0': {}
+
+ '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2':
+ dependencies:
+ env-paths: 2.2.1
+ exponential-backoff: 3.1.3
+ glob: 8.1.0
+ graceful-fs: 4.2.11
+ make-fetch-happen: 10.2.1
+ nopt: 6.0.0
+ proc-log: 2.0.1
+ semver: 7.8.5
+ tar: 6.2.1
+ which: 2.0.2
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+
+ '@electron/rebuild@3.7.2':
+ dependencies:
+ '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2
+ '@malept/cross-spawn-promise': 2.0.0
+ chalk: 4.1.2
+ debug: 4.4.3
+ detect-libc: 2.1.2
+ fs-extra: 10.1.0
+ got: 11.8.6
+ node-abi: 3.94.0
+ node-api-version: 0.2.1
+ ora: 5.4.1
+ read-binary-file-arch: 1.0.6
+ semver: 7.8.5
+ tar: 6.2.1
+ yargs: 17.7.3
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+
+ '@emnapi/core@1.11.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/core@1.11.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.11.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.11.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@gar/promisify@1.1.3': {}
+
+ '@hono/node-server@1.19.14(hono@4.12.27)':
+ dependencies:
+ hono: 4.12.27
+
+ '@huggingface/jinja@0.2.2': {}
+
+ '@jest/schemas@29.6.3':
+ dependencies:
+ '@sinclair/typebox': 0.27.10
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@kwsites/file-exists@1.1.1':
+ dependencies:
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@kwsites/promise-deferred@1.1.1': {}
+
+ '@lancedb/lancedb-darwin-arm64@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb-linux-arm64-gnu@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb-linux-arm64-musl@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb-linux-x64-gnu@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb-linux-x64-musl@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb-win32-arm64-msvc@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb-win32-x64-msvc@0.30.0':
+ optional: true
+
+ '@lancedb/lancedb@0.30.0(apache-arrow@18.1.0)':
+ dependencies:
+ apache-arrow: 18.1.0
+ reflect-metadata: 0.2.2
+ optionalDependencies:
+ '@lancedb/lancedb-darwin-arm64': 0.30.0
+ '@lancedb/lancedb-linux-arm64-gnu': 0.30.0
+ '@lancedb/lancedb-linux-arm64-musl': 0.30.0
+ '@lancedb/lancedb-linux-x64-gnu': 0.30.0
+ '@lancedb/lancedb-linux-x64-musl': 0.30.0
+ '@lancedb/lancedb-win32-arm64-msvc': 0.30.0
+ '@lancedb/lancedb-win32-x64-msvc': 0.30.0
+
+ '@malept/cross-spawn-promise@2.0.0':
+ dependencies:
+ cross-spawn: 7.0.6
+
+ '@modelcontextprotocol/sdk@1.29.0(zod@3.25.76)':
+ dependencies:
+ '@hono/node-server': 1.19.14(hono@4.12.27)
+ ajv: 8.20.0
+ ajv-formats: 3.0.1(ajv@8.20.0)
+ content-type: 1.0.5
+ cors: 2.8.6
+ cross-spawn: 7.0.6
+ eventsource: 3.0.7
+ eventsource-parser: 3.1.0
+ express: 5.2.1
+ express-rate-limit: 8.5.2(express@5.2.1)
+ hono: 4.12.27
+ jose: 6.2.3
+ json-schema-typed: 8.0.2
+ pkce-challenge: 5.0.1
+ raw-body: 3.0.2
+ zod: 3.25.76
+ zod-to-json-schema: 3.25.2(zod@3.25.76)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)':
+ dependencies:
+ '@emnapi/core': 1.11.0
+ '@emnapi/runtime': 1.11.0
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)':
+ dependencies:
+ '@emnapi/core': 1.11.1
+ '@emnapi/runtime': 1.11.1
+ '@tybys/wasm-util': 0.10.3
+ optional: true
+
+ '@npmcli/fs@2.1.2':
+ dependencies:
+ '@gar/promisify': 1.1.3
+ semver: 7.8.5
+
+ '@npmcli/move-file@2.0.1':
+ dependencies:
+ mkdirp: 1.0.4
+ rimraf: 3.0.2
+
+ '@oxc-parser/binding-android-arm-eabi@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-android-arm64@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-arm64@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-x64@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-freebsd-x64@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm-musleabihf@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-musl@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-ppc64-gnu@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-riscv64-gnu@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-riscv64-musl@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-s390x-gnu@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-gnu@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-musl@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-openharmony-arm64@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-wasm32-wasi@0.137.0':
+ dependencies:
+ '@emnapi/core': 1.11.1
+ '@emnapi/runtime': 1.11.1
+ '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)
+ optional: true
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-ia32-msvc@0.137.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-x64-msvc@0.137.0':
+ optional: true
+
+ '@oxc-project/types@0.137.0': {}
+
+ '@oxc-resolver/binding-android-arm-eabi@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-android-arm64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-arm64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-x64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-freebsd-x64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-musl@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-openharmony-arm64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-wasm32-wasi@11.21.3':
+ dependencies:
+ '@emnapi/core': 1.11.0
+ '@emnapi/runtime': 1.11.0
+ '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)
+ optional: true
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.21.3':
+ optional: true
+
+ '@protobufjs/aspromise@1.1.2': {}
+
+ '@protobufjs/base64@1.1.2': {}
+
+ '@protobufjs/codegen@2.0.5': {}
+
+ '@protobufjs/eventemitter@1.1.1': {}
+
+ '@protobufjs/fetch@1.1.1':
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+
+ '@protobufjs/float@1.0.2': {}
+
+ '@protobufjs/inquire@1.1.2': {}
+
+ '@protobufjs/path@1.1.2': {}
+
+ '@protobufjs/pool@1.1.0': {}
+
+ '@protobufjs/utf8@1.1.1': {}
+
+ '@rolldown/pluginutils@1.0.0-beta.27': {}
+
+ '@rollup/rollup-android-arm-eabi@4.62.2':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.62.2':
+ optional: true
+
+ '@rollup/rollup-openbsd-x64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.62.2':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.62.2':
+ optional: true
+
+ '@shikijs/core@4.3.0':
+ dependencies:
+ '@shikijs/primitive': 4.3.0
+ '@shikijs/types': 4.3.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
+ '@shikijs/engine-javascript@4.3.0':
+ dependencies:
+ '@shikijs/types': 4.3.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.6
+
+ '@shikijs/engine-oniguruma@4.3.0':
+ dependencies:
+ '@shikijs/types': 4.3.0
+ '@shikijs/vscode-textmate': 10.0.2
+
+ '@shikijs/langs@4.3.0':
+ dependencies:
+ '@shikijs/types': 4.3.0
+
+ '@shikijs/primitive@4.3.0':
+ dependencies:
+ '@shikijs/types': 4.3.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/themes@4.3.0':
+ dependencies:
+ '@shikijs/types': 4.3.0
+
+ '@shikijs/types@4.3.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/vscode-textmate@10.0.2': {}
+
+ '@simple-git/args-pathspec@1.0.3': {}
+
+ '@simple-git/argv-parser@1.1.1':
+ dependencies:
+ '@simple-git/args-pathspec': 1.0.3
+
+ '@sinclair/typebox@0.27.10': {}
+
+ '@sindresorhus/is@4.6.0': {}
+
+ '@smithy/core@3.29.1':
+ dependencies:
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@smithy/credential-provider-imds@4.4.6':
+ dependencies:
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@smithy/fetch-http-handler@5.6.3':
+ dependencies:
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@smithy/node-http-handler@4.9.3':
+ dependencies:
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@smithy/signature-v4@5.6.2':
+ dependencies:
+ '@smithy/core': 3.29.1
+ '@smithy/types': 4.15.1
+ tslib: 2.8.1
+
+ '@smithy/types@4.15.1':
+ dependencies:
+ tslib: 2.8.1
+
+ '@swc/helpers@0.5.23':
+ dependencies:
+ tslib: 2.8.1
+
+ '@szmarczak/http-timer@4.0.6':
+ dependencies:
+ defer-to-connect: 2.0.1
+
+ '@tootallnate/once@2.0.1': {}
+
+ '@ts-graphviz/adapter@2.0.6':
+ dependencies:
+ '@ts-graphviz/common': 2.1.5
+
+ '@ts-graphviz/ast@2.0.7':
+ dependencies:
+ '@ts-graphviz/common': 2.1.5
+
+ '@ts-graphviz/common@2.1.5': {}
+
+ '@ts-graphviz/core@2.0.7':
+ dependencies:
+ '@ts-graphviz/ast': 2.0.7
+ '@ts-graphviz/common': 2.1.5
+
+ '@ts-morph/common@0.29.0':
+ dependencies:
+ minimatch: 10.2.5
+ path-browserify: 1.0.1
+ tinyglobby: 0.2.17
+
+ '@tybys/wasm-util@0.10.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@types/babel__core@7.20.5':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ '@types/babel__generator': 7.27.0
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.28.0
+
+ '@types/babel__generator@7.27.0':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+
+ '@types/babel__traverse@7.28.0':
+ dependencies:
+ '@babel/types': 7.29.7
+
+ '@types/better-sqlite3@7.6.13':
+ dependencies:
+ '@types/node': 20.19.43
+
+ '@types/cacheable-request@6.0.3':
+ dependencies:
+ '@types/http-cache-semantics': 4.2.0
+ '@types/keyv': 3.1.4
+ '@types/node': 20.19.43
+ '@types/responselike': 1.0.3
+
+ '@types/command-line-args@5.2.3': {}
+
+ '@types/command-line-usage@5.0.4': {}
+
+ '@types/diff@7.0.2': {}
+
+ '@types/estree@1.0.9': {}
+
+ '@types/hast@3.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
+ '@types/http-cache-semantics@4.2.0': {}
+
+ '@types/keyv@3.1.4':
+ dependencies:
+ '@types/node': 20.19.43
+
+ '@types/long@4.0.2': {}
+
+ '@types/mdast@4.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
+ '@types/node@20.19.43':
+ dependencies:
+ undici-types: 6.21.0
+
+ '@types/prop-types@15.7.15': {}
+
+ '@types/react-dom@18.3.7(@types/react@18.3.31)':
+ dependencies:
+ '@types/react': 18.3.31
+
+ '@types/react@18.3.31':
+ dependencies:
+ '@types/prop-types': 15.7.15
+ csstype: 3.2.3
+
+ '@types/responselike@1.0.3':
+ dependencies:
+ '@types/node': 20.19.43
+
+ '@types/unist@3.0.3': {}
+
+ '@types/vscode@1.125.0': {}
+
+ '@typescript-eslint/project-service@8.62.1(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.62.1
+ debug: 4.4.3
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/tsconfig-utils@8.62.1(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
+
+ '@typescript-eslint/types@8.62.1': {}
+
+ '@typescript-eslint/typescript-estree@8.62.1(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.62.1(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.62.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.62.1
+ '@typescript-eslint/visitor-keys': 8.62.1
+ debug: 4.4.3
+ minimatch: 10.2.5
+ semver: 7.8.5
+ tinyglobby: 0.2.17
+ ts-api-utils: 2.5.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/visitor-keys@8.62.1':
+ dependencies:
+ '@typescript-eslint/types': 8.62.1
+ eslint-visitor-keys: 5.0.1
+
+ '@typespec/ts-http-runtime@0.3.6':
+ dependencies:
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ tslib: 2.8.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@ungap/structured-clone@1.3.2': {}
+
+ '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@20.19.43))':
+ dependencies:
+ '@babel/core': 7.29.7
+ '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7)
+ '@rolldown/pluginutils': 1.0.0-beta.27
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.17.0
+ vite: 5.4.21(@types/node@20.19.43)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitest/expect@1.6.1':
+ dependencies:
+ '@vitest/spy': 1.6.1
+ '@vitest/utils': 1.6.1
+ chai: 4.5.0
+
+ '@vitest/runner@1.6.1':
+ dependencies:
+ '@vitest/utils': 1.6.1
+ p-limit: 5.0.0
+ pathe: 1.1.2
+
+ '@vitest/snapshot@1.6.1':
+ dependencies:
+ magic-string: 0.30.21
+ pathe: 1.1.2
+ pretty-format: 29.7.0
+
+ '@vitest/spy@1.6.1':
+ dependencies:
+ tinyspy: 2.2.1
+
+ '@vitest/utils@1.6.1':
+ dependencies:
+ diff-sequences: 29.6.3
+ estree-walker: 3.0.3
+ loupe: 2.3.7
+ pretty-format: 29.7.0
+
+ '@vscode/ripgrep-darwin-arm64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-darwin-x64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-arm64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-arm@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-ia32@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-ppc64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-riscv64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-s390x@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-linux-x64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-win32-arm64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-win32-ia32@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep-win32-x64@1.18.0':
+ optional: true
+
+ '@vscode/ripgrep@1.18.0':
+ optionalDependencies:
+ '@vscode/ripgrep-darwin-arm64': 1.18.0
+ '@vscode/ripgrep-darwin-x64': 1.18.0
+ '@vscode/ripgrep-linux-arm': 1.18.0
+ '@vscode/ripgrep-linux-arm64': 1.18.0
+ '@vscode/ripgrep-linux-ia32': 1.18.0
+ '@vscode/ripgrep-linux-ppc64': 1.18.0
+ '@vscode/ripgrep-linux-riscv64': 1.18.0
+ '@vscode/ripgrep-linux-s390x': 1.18.0
+ '@vscode/ripgrep-linux-x64': 1.18.0
+ '@vscode/ripgrep-win32-arm64': 1.18.0
+ '@vscode/ripgrep-win32-ia32': 1.18.0
+ '@vscode/ripgrep-win32-x64': 1.18.0
+
+ '@vscode/vsce-sign-alpine-arm64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-alpine-x64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-darwin-arm64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-darwin-x64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-linux-arm64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-linux-arm@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-linux-x64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-win32-arm64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign-win32-x64@2.0.6':
+ optional: true
+
+ '@vscode/vsce-sign@2.0.9':
+ optionalDependencies:
+ '@vscode/vsce-sign-alpine-arm64': 2.0.6
+ '@vscode/vsce-sign-alpine-x64': 2.0.6
+ '@vscode/vsce-sign-darwin-arm64': 2.0.6
+ '@vscode/vsce-sign-darwin-x64': 2.0.6
+ '@vscode/vsce-sign-linux-arm': 2.0.6
+ '@vscode/vsce-sign-linux-arm64': 2.0.6
+ '@vscode/vsce-sign-linux-x64': 2.0.6
+ '@vscode/vsce-sign-win32-arm64': 2.0.6
+ '@vscode/vsce-sign-win32-x64': 2.0.6
+
+ '@vscode/vsce@2.32.0':
+ dependencies:
+ '@azure/identity': 4.13.1
+ '@vscode/vsce-sign': 2.0.9
+ azure-devops-node-api: 12.5.0
+ chalk: 2.4.2
+ cheerio: 1.2.0
+ cockatiel: 3.2.1
+ commander: 6.2.1
+ form-data: 4.0.6
+ glob: 7.2.3
+ hosted-git-info: 4.1.0
+ jsonc-parser: 3.3.1
+ leven: 3.1.0
+ markdown-it: 12.3.2
+ mime: 1.6.0
+ minimatch: 3.1.5
+ parse-semver: 1.1.1
+ read: 1.0.7
+ semver: 7.8.5
+ tmp: 0.2.7
+ typed-rest-client: 1.8.11
+ url-join: 4.0.1
+ xml2js: 0.5.0
+ yauzl: 2.10.0
+ yazl: 2.5.1
+ optionalDependencies:
+ keytar: 7.9.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/compiler-core@3.5.39':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@vue/shared': 3.5.39
+ entities: 7.0.1
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.39':
+ dependencies:
+ '@vue/compiler-core': 3.5.39
+ '@vue/shared': 3.5.39
+
+ '@vue/compiler-sfc@3.5.39':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@vue/compiler-core': 3.5.39
+ '@vue/compiler-dom': 3.5.39
+ '@vue/compiler-ssr': 3.5.39
+ '@vue/shared': 3.5.39
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.16
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.39':
+ dependencies:
+ '@vue/compiler-dom': 3.5.39
+ '@vue/shared': 3.5.39
+
+ '@vue/shared@3.5.39': {}
+
+ '@xenova/transformers@2.17.2':
+ dependencies:
+ '@huggingface/jinja': 0.2.2
+ onnxruntime-web: 1.14.0
+ sharp: 0.32.6
+ optionalDependencies:
+ onnxruntime-node: 1.14.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
+ '@xstate/react@6.1.0(@types/react@18.3.31)(react@18.3.1)(xstate@5.32.4)':
+ dependencies:
+ react: 18.3.1
+ use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.31)(react@18.3.1)
+ use-sync-external-store: 1.6.0(react@18.3.1)
+ optionalDependencies:
+ xstate: 5.32.4
+ transitivePeerDependencies:
+ - '@types/react'
+
+ abbrev@1.1.1: {}
+
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.2
+ negotiator: 1.0.0
+
+ acorn-walk@8.3.5:
+ dependencies:
+ acorn: 8.17.0
+
+ acorn@8.17.0: {}
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ agent-base@7.1.4: {}
+
+ agentkeepalive@4.6.0:
+ dependencies:
+ humanize-ms: 1.2.1
+
+ aggregate-error@3.1.0:
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+
+ ajv-formats@3.0.1(ajv@8.20.0):
+ optionalDependencies:
+ ajv: 8.20.0
+
+ ajv@8.20.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+
+ ansi-regex@5.0.1: {}
+
+ ansi-styles@3.2.1:
+ dependencies:
+ color-convert: 1.9.3
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@5.2.0: {}
+
+ any-promise@1.3.0: {}
+
+ apache-arrow@18.1.0:
+ dependencies:
+ '@swc/helpers': 0.5.23
+ '@types/command-line-args': 5.2.3
+ '@types/command-line-usage': 5.0.4
+ '@types/node': 20.19.43
+ command-line-args: 5.2.1
+ command-line-usage: 7.0.4
+ flatbuffers: 24.12.23
+ json-bignum: 0.0.3
+ tslib: 2.8.1
+
+ app-module-path@2.2.0: {}
+
+ argparse@2.0.1: {}
+
+ array-back@3.1.0: {}
+
+ array-back@6.2.3: {}
+
+ assertion-error@1.1.0: {}
+
+ ast-module-types@6.0.2: {}
+
+ asynckit@0.4.0: {}
+
+ azure-devops-node-api@12.5.0:
+ dependencies:
+ tunnel: 0.0.6
+ typed-rest-client: 1.8.11
+
+ b4a@1.8.1: {}
+
+ balanced-match@1.0.2: {}
+
+ balanced-match@4.0.4: {}
+
+ bare-events@2.9.1: {}
+
+ bare-fs@4.7.3:
+ dependencies:
+ bare-events: 2.9.1
+ bare-path: 3.0.1
+ bare-stream: 2.13.3(bare-events@2.9.1)
+ bare-url: 2.4.5
+ fast-fifo: 1.3.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ bare-os@3.9.3: {}
+
+ bare-path@3.0.1:
+ dependencies:
+ bare-os: 3.9.3
+
+ bare-stream@2.13.3(bare-events@2.9.1):
+ dependencies:
+ b4a: 1.8.1
+ streamx: 2.28.0
+ teex: 1.0.1
+ optionalDependencies:
+ bare-events: 2.9.1
+ transitivePeerDependencies:
+ - react-native-b4a
+
+ bare-url@2.4.5:
+ dependencies:
+ bare-path: 3.0.1
+
+ base64-js@1.5.1: {}
+
+ baseline-browser-mapping@2.10.41: {}
+
+ better-sqlite3@12.11.1:
+ dependencies:
+ bindings: 1.5.0
+ prebuild-install: 7.1.3
+
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ body-parser@2.3.0:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 2.0.0
+ debug: 4.4.3
+ http-errors: 2.0.1
+ iconv-lite: 0.7.2
+ on-finished: 2.4.1
+ qs: 6.15.3
+ raw-body: 3.0.2
+ type-is: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ boolbase@1.0.0: {}
+
+ bowser@2.14.1: {}
+
+ brace-expansion@1.1.15:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.1.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ brace-expansion@5.0.7:
+ dependencies:
+ balanced-match: 4.0.4
+
+ browserslist@4.28.4:
+ dependencies:
+ baseline-browser-mapping: 2.10.41
+ caniuse-lite: 1.0.30001800
+ electron-to-chromium: 1.5.385
+ node-releases: 2.0.50
+ update-browserslist-db: 1.2.3(browserslist@4.28.4)
+
+ buffer-crc32@0.2.13: {}
+
+ buffer-equal-constant-time@1.0.1: {}
+
+ buffer@5.7.1:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.1.0
+
+ bytes@3.1.2: {}
+
+ cac@6.7.14: {}
+
+ cacache@16.1.3:
+ dependencies:
+ '@npmcli/fs': 2.1.2
+ '@npmcli/move-file': 2.0.1
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ glob: 8.1.0
+ infer-owner: 1.0.4
+ lru-cache: 7.18.3
+ minipass: 3.3.6
+ minipass-collect: 1.0.2
+ minipass-flush: 1.0.7
+ minipass-pipeline: 1.2.4
+ mkdirp: 1.0.4
+ p-map: 4.0.0
+ promise-inflight: 1.0.1
+ rimraf: 3.0.2
+ ssri: 9.0.1
+ tar: 6.2.1
+ unique-filename: 2.0.1
+ transitivePeerDependencies:
+ - bluebird
+
+ cacheable-lookup@5.0.4: {}
+
+ cacheable-request@7.0.4:
+ dependencies:
+ clone-response: 1.0.3
+ get-stream: 5.2.0
+ http-cache-semantics: 4.2.0
+ keyv: 4.5.4
+ lowercase-keys: 2.0.0
+ normalize-url: 6.1.0
+ responselike: 2.0.1
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
+ caniuse-lite@1.0.30001800: {}
+
+ ccount@2.0.1: {}
+
+ chai@4.5.0:
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+
+ chalk-template@0.4.0:
+ dependencies:
+ chalk: 4.1.2
+
+ chalk@2.4.2:
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ check-error@1.0.3:
+ dependencies:
+ get-func-name: 2.0.2
+
+ cheerio-select@2.1.0:
+ dependencies:
+ boolbase: 1.0.0
+ css-select: 5.2.2
+ css-what: 6.2.2
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+
+ cheerio@1.2.0:
+ dependencies:
+ cheerio-select: 2.1.0
+ dom-serializer: 2.0.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ encoding-sniffer: 0.2.1
+ htmlparser2: 10.1.0
+ parse5: 7.3.0
+ parse5-htmlparser2-tree-adapter: 7.1.0
+ parse5-parser-stream: 7.1.2
+ undici: 7.28.0
+ whatwg-mimetype: 4.0.0
+
+ chownr@1.1.4: {}
+
+ chownr@2.0.0: {}
+
+ clean-stack@2.2.0: {}
+
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
+ cli-spinners@2.9.2: {}
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ clone-response@1.0.3:
+ dependencies:
+ mimic-response: 1.0.1
+
+ clone@1.0.4: {}
+
+ cockatiel@3.2.1: {}
+
+ code-block-writer@13.0.3: {}
+
+ color-convert@1.9.3:
+ dependencies:
+ color-name: 1.1.3
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.3: {}
+
+ color-name@1.1.4: {}
+
+ color-string@1.9.1:
+ dependencies:
+ color-name: 1.1.4
+ simple-swizzle: 0.2.4
+
+ color@4.2.3:
+ dependencies:
+ color-convert: 2.0.1
+ color-string: 1.9.1
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ comma-separated-tokens@2.0.3: {}
+
+ command-line-args@5.2.1:
+ dependencies:
+ array-back: 3.1.0
+ find-replace: 3.0.0
+ lodash.camelcase: 4.3.0
+ typical: 4.0.0
+
+ command-line-usage@7.0.4:
+ dependencies:
+ array-back: 6.2.3
+ chalk-template: 0.4.0
+ table-layout: 4.1.1
+ typical: 7.3.0
+
+ commander@12.1.0: {}
+
+ commander@6.2.1: {}
+
+ commander@7.2.0: {}
+
+ commondir@1.0.1: {}
+
+ concat-map@0.0.1: {}
+
+ concurrently@8.2.2:
+ dependencies:
+ chalk: 4.1.2
+ date-fns: 2.30.0
+ lodash: 4.18.1
+ rxjs: 7.8.2
+ shell-quote: 1.9.0
+ spawn-command: 0.0.2
+ supports-color: 8.1.1
+ tree-kill: 1.2.2
+ yargs: 17.7.3
+
+ confbox@0.1.8: {}
+
+ content-disposition@1.1.0: {}
+
+ content-type@1.0.5: {}
+
+ content-type@2.0.0: {}
+
+ convert-source-map@2.0.0: {}
+
+ cookie-signature@1.2.2: {}
+
+ cookie@0.7.2: {}
+
+ cors@2.8.6:
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ css-select@5.2.2:
+ dependencies:
+ boolbase: 1.0.0
+ css-what: 6.2.2
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ nth-check: 2.1.1
+
+ css-what@6.2.2: {}
+
+ csstype@3.2.3: {}
+
+ date-fns@2.30.0:
+ dependencies:
+ '@babel/runtime': 7.29.7
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ decompress-response@6.0.0:
+ dependencies:
+ mimic-response: 3.1.0
+
+ deep-eql@4.1.4:
+ dependencies:
+ type-detect: 4.1.0
+
+ deep-extend@0.6.0: {}
+
+ default-browser-id@5.0.1: {}
+
+ default-browser@5.5.0:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.1
+
+ defaults@1.0.4:
+ dependencies:
+ clone: 1.0.4
+
+ defer-to-connect@2.0.1: {}
+
+ define-lazy-prop@3.0.0: {}
+
+ delayed-stream@1.0.0: {}
+
+ depd@2.0.0: {}
+
+ dependency-tree@11.5.0:
+ dependencies:
+ '@discoveryjs/json-ext': 1.1.0
+ commander: 12.1.0
+ filing-cabinet: 5.5.1
+ precinct: 12.3.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ dequal@2.0.3: {}
+
+ detect-libc@2.1.2: {}
+
+ detective-amd@6.1.0:
+ dependencies:
+ ast-module-types: 6.0.2
+ escodegen: 2.1.0
+ get-amd-module-type: 6.0.2
+ node-source-walk: 7.0.2
+
+ detective-cjs@6.1.1:
+ dependencies:
+ ast-module-types: 6.0.2
+ node-source-walk: 7.0.2
+
+ detective-es6@5.0.2:
+ dependencies:
+ node-source-walk: 7.0.2
+
+ detective-postcss@8.0.4(postcss@8.5.16):
+ dependencies:
+ is-url-superb: 4.0.0
+ postcss: 8.5.16
+ postcss-values-parser: 6.0.2(postcss@8.5.16)
+
+ detective-sass@6.0.2:
+ dependencies:
+ gonzales-pe: 4.3.0
+ node-source-walk: 7.0.2
+
+ detective-scss@5.0.2:
+ dependencies:
+ gonzales-pe: 4.3.0
+ node-source-walk: 7.0.2
+
+ detective-stylus@5.0.1: {}
+
+ detective-typescript@14.1.2(typescript@5.9.3):
+ dependencies:
+ '@typescript-eslint/typescript-estree': 8.62.1(typescript@5.9.3)
+ ast-module-types: 6.0.2
+ node-source-walk: 7.0.2
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ detective-vue2@2.3.0(typescript@5.9.3):
+ dependencies:
+ '@dependents/detective-less': 5.0.3
+ '@vue/compiler-sfc': 3.5.39
+ detective-es6: 5.0.2
+ detective-sass: 6.0.2
+ detective-scss: 5.0.2
+ detective-stylus: 5.0.1
+ detective-typescript: 14.1.2(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ devlop@1.1.0:
+ dependencies:
+ dequal: 2.0.3
+
+ diff-sequences@29.6.3: {}
+
+ diff@5.2.2: {}
+
+ dom-serializer@2.0.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ entities: 4.5.0
+
+ domelementtype@2.3.0: {}
+
+ domhandler@5.0.3:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@3.2.2:
+ dependencies:
+ dom-serializer: 2.0.0
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ ee-first@1.1.1: {}
+
+ electron-to-chromium@1.5.385: {}
+
+ emoji-regex@8.0.0: {}
+
+ encodeurl@2.0.0: {}
+
+ encoding-sniffer@0.2.1:
+ dependencies:
+ iconv-lite: 0.6.3
+ whatwg-encoding: 3.1.1
+
+ encoding@0.1.13:
+ dependencies:
+ iconv-lite: 0.6.3
+ optional: true
+
+ end-of-stream@1.4.5:
+ dependencies:
+ once: 1.4.0
+
+ enhanced-resolve@5.24.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.3
+
+ entities@2.1.0: {}
+
+ entities@4.5.0: {}
+
+ entities@6.0.1: {}
+
+ entities@7.0.1: {}
+
+ env-paths@2.2.1: {}
+
+ err-code@2.0.3: {}
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.2:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.4
+
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ escalade@3.2.0: {}
+
+ escape-html@1.0.3: {}
+
+ escape-string-regexp@1.0.5: {}
+
+ escodegen@2.1.0:
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+
+ eslint-visitor-keys@5.0.1: {}
+
+ esprima@4.0.1: {}
+
+ estraverse@5.3.0: {}
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.9
+
+ esutils@2.0.3: {}
+
+ etag@1.8.1: {}
+
+ events-universal@1.0.1:
+ dependencies:
+ bare-events: 2.9.1
+ transitivePeerDependencies:
+ - bare-abort-controller
+
+ eventsource-parser@3.1.0: {}
+
+ eventsource@3.0.7:
+ dependencies:
+ eventsource-parser: 3.1.0
+
+ execa@8.0.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 8.0.1
+ human-signals: 5.0.0
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 4.1.0
+ strip-final-newline: 3.0.0
+
+ expand-template@2.0.3: {}
+
+ exponential-backoff@3.1.3: {}
+
+ express-rate-limit@8.5.2(express@5.2.1):
+ dependencies:
+ express: 5.2.1
+ ip-address: 10.2.0
+
+ express@5.2.1:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.3.0
+ content-disposition: 1.1.0
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.2.2
+ debug: 4.4.3
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.1
+ fresh: 2.0.0
+ http-errors: 2.0.1
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.2
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.15.3
+ range-parser: 1.3.0
+ router: 2.2.0
+ send: 1.2.1
+ serve-static: 2.2.1
+ statuses: 2.0.2
+ type-is: 2.1.0
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-fifo@1.3.2: {}
+
+ fast-uri@3.1.3: {}
+
+ fd-package-json@2.0.0:
+ dependencies:
+ walk-up-path: 4.0.0
+
+ fd-slicer@1.1.0:
+ dependencies:
+ pend: 1.2.0
+
+ fdir@6.5.0(picomatch@4.0.5):
+ optionalDependencies:
+ picomatch: 4.0.5
+
+ file-uri-to-path@1.0.0: {}
+
+ filing-cabinet@5.5.1:
+ dependencies:
+ app-module-path: 2.2.0
+ commander: 12.1.0
+ enhanced-resolve: 5.24.1
+ module-definition: 6.0.2
+ module-lookup-amd: 9.1.3
+ resolve: 1.22.12
+ resolve-dependency-path: 4.0.1
+ sass-lookup: 6.1.2
+ stylus-lookup: 6.1.2
+ tsconfig-paths: 4.2.0
+ typescript: 5.9.3
+
+ finalhandler@2.1.1:
+ dependencies:
+ debug: 4.4.3
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ find-replace@3.0.0:
+ dependencies:
+ array-back: 3.1.0
+
+ flatbuffers@1.12.0: {}
+
+ flatbuffers@24.12.23: {}
+
+ form-data@4.0.6:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.4
+ mime-types: 2.1.35
+
+ formatly@0.3.0:
+ dependencies:
+ fd-package-json: 2.0.0
+
+ forwarded@0.2.0: {}
+
+ framer-motion@12.42.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ dependencies:
+ motion-dom: 12.42.2
+ motion-utils: 12.39.0
+ tslib: 2.8.1
+ optionalDependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ fresh@2.0.0: {}
+
+ fs-constants@1.0.0: {}
+
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.2.1
+ universalify: 2.0.1
+
+ fs-minipass@2.1.0:
+ dependencies:
+ minipass: 3.3.6
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-amd-module-type@6.0.2:
+ dependencies:
+ ast-module-types: 6.0.2
+ node-source-walk: 7.0.2
+
+ get-caller-file@2.0.5: {}
+
+ get-func-name@2.0.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.2
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.4
+ math-intrinsics: 1.1.0
+
+ get-own-enumerable-property-symbols@3.0.2: {}
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.2
+
+ get-stream@5.2.0:
+ dependencies:
+ pump: 3.0.4
+
+ get-stream@8.0.1: {}
+
+ get-tsconfig@4.14.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
+ github-from-package@0.0.0: {}
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.5
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@8.1.0:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.1.9
+ once: 1.4.0
+
+ gonzales-pe@4.3.0:
+ dependencies:
+ minimist: 1.2.8
+
+ gopd@1.2.0: {}
+
+ got@11.8.6:
+ dependencies:
+ '@sindresorhus/is': 4.6.0
+ '@szmarczak/http-timer': 4.0.6
+ '@types/cacheable-request': 6.0.3
+ '@types/responselike': 1.0.3
+ cacheable-lookup: 5.0.4
+ cacheable-request: 7.0.4
+ decompress-response: 6.0.0
+ http2-wrapper: 1.0.3
+ lowercase-keys: 2.0.0
+ p-cancelable: 2.1.1
+ responselike: 2.0.1
+
+ graceful-fs@4.2.11: {}
+
+ guid-typescript@1.0.9: {}
+
+ has-flag@3.0.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.4:
+ dependencies:
+ function-bind: 1.1.2
+
+ hast-util-to-html@9.0.5:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ comma-separated-tokens: 2.0.3
+ hast-util-whitespace: 3.0.0
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.1
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
+ stringify-entities: 4.0.4
+ zwitch: 2.0.4
+
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hono@4.12.27: {}
+
+ hosted-git-info@4.1.0:
+ dependencies:
+ lru-cache: 6.0.0
+
+ html-void-elements@3.0.0: {}
+
+ htmlparser2@10.1.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ entities: 7.0.1
+
+ http-cache-semantics@4.2.0: {}
+
+ http-errors@2.0.1:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ toidentifier: 1.0.1
+
+ http-proxy-agent@5.0.0:
+ dependencies:
+ '@tootallnate/once': 2.0.1
+ agent-base: 6.0.2
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ http2-wrapper@1.0.3:
+ dependencies:
+ quick-lru: 5.1.1
+ resolve-alpn: 1.2.1
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@7.0.6:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ human-signals@5.0.0: {}
+
+ humanize-ms@1.2.1:
+ dependencies:
+ ms: 2.1.3
+
+ iconv-lite@0.6.3:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ iconv-lite@0.7.2:
+ dependencies:
+ safer-buffer: 2.1.2
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ imurmurhash@0.1.4: {}
+
+ indent-string@4.0.0: {}
+
+ infer-owner@1.0.4: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ ini@1.3.8: {}
+
+ ip-address@10.2.0: {}
+
+ ipaddr.js@1.9.1: {}
+
+ is-arrayish@0.3.4: {}
+
+ is-core-module@2.16.2:
+ dependencies:
+ hasown: 2.0.4
+
+ is-docker@3.0.0: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
+ is-interactive@1.0.0: {}
+
+ is-lambda@1.0.1: {}
+
+ is-obj@1.0.1: {}
+
+ is-promise@4.0.0: {}
+
+ is-regexp@1.0.0: {}
+
+ is-stream@3.0.0: {}
+
+ is-unicode-supported@0.1.0: {}
+
+ is-url-superb@4.0.0: {}
+
+ is-wsl@3.1.1:
+ dependencies:
+ is-inside-container: 1.0.0
+
+ isexe@2.0.0: {}
+
+ jiti@2.7.0: {}
+
+ jose@6.2.3: {}
+
+ js-tokens@4.0.0: {}
+
+ js-tokens@9.0.1: {}
+
+ jsesc@3.1.0: {}
+
+ json-bignum@0.0.3: {}
+
+ json-buffer@3.0.1: {}
+
+ json-schema-traverse@1.0.0: {}
+
+ json-schema-typed@8.0.2: {}
+
+ json5@2.2.3: {}
+
+ jsonc-parser@3.3.1: {}
+
+ jsonfile@6.2.1:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jsonwebtoken@9.0.3:
+ dependencies:
+ jws: 4.0.1
+ lodash.includes: 4.3.0
+ lodash.isboolean: 3.0.3
+ lodash.isinteger: 4.0.4
+ lodash.isnumber: 3.0.3
+ lodash.isplainobject: 4.0.6
+ lodash.isstring: 4.0.1
+ lodash.once: 4.1.1
+ ms: 2.1.3
+ semver: 7.8.5
+
+ jwa@2.0.1:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jws@4.0.1:
+ dependencies:
+ jwa: 2.0.1
+ safe-buffer: 5.2.1
+
+ keytar@7.9.0:
+ dependencies:
+ node-addon-api: 4.3.0
+ prebuild-install: 7.1.3
+ optional: true
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ knip@6.24.0:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.5)
+ formatly: 0.3.0
+ get-tsconfig: 4.14.0
+ jiti: 2.7.0
+ oxc-parser: 0.137.0
+ oxc-resolver: 11.21.3
+ picomatch: 4.0.5
+ smol-toml: 1.7.0
+ strip-json-comments: 5.0.3
+ tinyglobby: 0.2.17
+ unbash: 4.0.2
+ yaml: 2.9.0
+ zod: 4.4.3
+
+ leven@3.1.0: {}
+
+ linkify-it@3.0.3:
+ dependencies:
+ uc.micro: 1.0.6
+
+ local-pkg@0.5.1:
+ dependencies:
+ mlly: 1.8.2
+ pkg-types: 1.3.1
+
+ lodash.camelcase@4.3.0: {}
+
+ lodash.includes@4.3.0: {}
+
+ lodash.isboolean@3.0.3: {}
+
+ lodash.isinteger@4.0.4: {}
+
+ lodash.isnumber@3.0.3: {}
+
+ lodash.isplainobject@4.0.6: {}
+
+ lodash.isstring@4.0.1: {}
+
+ lodash.once@4.1.1: {}
+
+ lodash@4.18.1: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ long@4.0.0: {}
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ loupe@2.3.7:
+ dependencies:
+ get-func-name: 2.0.2
+
+ lowercase-keys@2.0.0: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ lru-cache@7.18.3: {}
+
+ madge@8.0.0(typescript@5.9.3):
+ dependencies:
+ chalk: 4.1.2
+ commander: 7.2.0
+ commondir: 1.0.1
+ debug: 4.4.3
+ dependency-tree: 11.5.0
+ ora: 5.4.1
+ pluralize: 8.0.0
+ pretty-ms: 7.0.1
+ rc: 1.2.8
+ stream-to-array: 2.3.0
+ ts-graphviz: 2.1.6
+ walkdir: 0.4.1
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ make-fetch-happen@10.2.1:
+ dependencies:
+ agentkeepalive: 4.6.0
+ cacache: 16.1.3
+ http-cache-semantics: 4.2.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-lambda: 1.0.1
+ lru-cache: 7.18.3
+ minipass: 3.3.6
+ minipass-collect: 1.0.2
+ minipass-fetch: 2.1.2
+ minipass-flush: 1.0.7
+ minipass-pipeline: 1.2.4
+ negotiator: 0.6.4
+ promise-retry: 2.0.1
+ socks-proxy-agent: 7.0.0
+ ssri: 9.0.1
+ transitivePeerDependencies:
+ - bluebird
+ - supports-color
+
+ markdown-it@12.3.2:
+ dependencies:
+ argparse: 2.0.1
+ entities: 2.1.0
+ linkify-it: 3.0.3
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
+
+ math-intrinsics@1.1.0: {}
+
+ mdast-util-to-hast@13.2.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.3.2
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+
+ mdurl@1.0.1: {}
+
+ media-typer@1.1.0: {}
+
+ merge-descriptors@2.0.0: {}
+
+ merge-stream@2.0.0: {}
+
+ micromark-util-character@2.1.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-encode@2.0.1: {}
+
+ micromark-util-sanitize-uri@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-encode: 2.0.1
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-symbol@2.0.1: {}
+
+ micromark-util-types@2.0.2: {}
+
+ mime-db@1.52.0: {}
+
+ mime-db@1.54.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mime-types@3.0.2:
+ dependencies:
+ mime-db: 1.54.0
+
+ mime@1.6.0: {}
+
+ mimic-fn@2.1.0: {}
+
+ mimic-fn@4.0.0: {}
+
+ mimic-response@1.0.1: {}
+
+ mimic-response@3.1.0: {}
+
+ minimatch@10.2.5:
+ dependencies:
+ brace-expansion: 5.0.7
+
+ minimatch@3.1.5:
+ dependencies:
+ brace-expansion: 1.1.15
+
+ minimatch@5.1.9:
+ dependencies:
+ brace-expansion: 2.1.1
+
+ minimist@1.2.8: {}
+
+ minipass-collect@1.0.2:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-fetch@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ minipass-sized: 1.0.3
+ minizlib: 2.1.2
+ optionalDependencies:
+ encoding: 0.1.13
+
+ minipass-flush@1.0.7:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-pipeline@1.2.4:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass-sized@1.0.3:
+ dependencies:
+ minipass: 3.3.6
+
+ minipass@3.3.6:
+ dependencies:
+ yallist: 4.0.0
+
+ minipass@5.0.0: {}
+
+ minizlib@2.1.2:
+ dependencies:
+ minipass: 3.3.6
+ yallist: 4.0.0
+
+ mkdirp-classic@0.5.3: {}
+
+ mkdirp@1.0.4: {}
+
+ mlly@1.8.2:
+ dependencies:
+ acorn: 8.17.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.4
+
+ module-definition@6.0.2:
+ dependencies:
+ ast-module-types: 6.0.2
+ node-source-walk: 7.0.2
+
+ module-lookup-amd@9.1.3:
+ dependencies:
+ commander: 12.1.0
+ requirejs: 2.3.8
+ requirejs-config-file: 4.0.0
+
+ motion-dom@12.42.2:
+ dependencies:
+ motion-utils: 12.39.0
+
+ motion-utils@12.39.0: {}
+
+ ms@2.1.3: {}
+
+ mute-stream@0.0.8: {}
+
+ nanoid@3.3.15: {}
+
+ nanoid@5.1.16: {}
+
+ napi-build-utils@2.0.0: {}
+
+ negotiator@0.6.4: {}
+
+ negotiator@1.0.0: {}
+
+ node-abi@3.94.0:
+ dependencies:
+ semver: 7.8.5
+
+ node-addon-api@4.3.0:
+ optional: true
+
+ node-addon-api@6.1.0: {}
+
+ node-api-version@0.2.1:
+ dependencies:
+ semver: 7.8.5
+
+ node-releases@2.0.50: {}
+
+ node-source-walk@7.0.2:
+ dependencies:
+ '@babel/parser': 7.29.7
+
+ nopt@6.0.0:
+ dependencies:
+ abbrev: 1.1.1
+
+ normalize-url@6.1.0: {}
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ nth-check@2.1.1:
+ dependencies:
+ boolbase: 1.0.0
+
+ object-assign@4.1.1: {}
+
+ object-inspect@1.13.4: {}
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ oniguruma-parser@0.12.2: {}
+
+ oniguruma-to-es@4.3.6:
+ dependencies:
+ oniguruma-parser: 0.12.2
+ regex: 6.1.0
+ regex-recursion: 6.0.2
+
+ onnx-proto@4.0.4:
+ dependencies:
+ protobufjs: 6.11.6
+
+ onnxruntime-common@1.14.0: {}
+
+ onnxruntime-node@1.14.0:
+ dependencies:
+ onnxruntime-common: 1.14.0
+ optional: true
+
+ onnxruntime-web@1.14.0:
+ dependencies:
+ flatbuffers: 1.12.0
+ guid-typescript: 1.0.9
+ long: 4.0.0
+ onnx-proto: 4.0.4
+ onnxruntime-common: 1.14.0
+ platform: 1.3.6
+
+ open@10.2.0:
+ dependencies:
+ default-browser: 5.5.0
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ wsl-utils: 0.1.0
+
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
+ oxc-parser@0.137.0:
+ dependencies:
+ '@oxc-project/types': 0.137.0
+ optionalDependencies:
+ '@oxc-parser/binding-android-arm-eabi': 0.137.0
+ '@oxc-parser/binding-android-arm64': 0.137.0
+ '@oxc-parser/binding-darwin-arm64': 0.137.0
+ '@oxc-parser/binding-darwin-x64': 0.137.0
+ '@oxc-parser/binding-freebsd-x64': 0.137.0
+ '@oxc-parser/binding-linux-arm-gnueabihf': 0.137.0
+ '@oxc-parser/binding-linux-arm-musleabihf': 0.137.0
+ '@oxc-parser/binding-linux-arm64-gnu': 0.137.0
+ '@oxc-parser/binding-linux-arm64-musl': 0.137.0
+ '@oxc-parser/binding-linux-ppc64-gnu': 0.137.0
+ '@oxc-parser/binding-linux-riscv64-gnu': 0.137.0
+ '@oxc-parser/binding-linux-riscv64-musl': 0.137.0
+ '@oxc-parser/binding-linux-s390x-gnu': 0.137.0
+ '@oxc-parser/binding-linux-x64-gnu': 0.137.0
+ '@oxc-parser/binding-linux-x64-musl': 0.137.0
+ '@oxc-parser/binding-openharmony-arm64': 0.137.0
+ '@oxc-parser/binding-wasm32-wasi': 0.137.0
+ '@oxc-parser/binding-win32-arm64-msvc': 0.137.0
+ '@oxc-parser/binding-win32-ia32-msvc': 0.137.0
+ '@oxc-parser/binding-win32-x64-msvc': 0.137.0
+
+ oxc-resolver@11.21.3:
+ optionalDependencies:
+ '@oxc-resolver/binding-android-arm-eabi': 11.21.3
+ '@oxc-resolver/binding-android-arm64': 11.21.3
+ '@oxc-resolver/binding-darwin-arm64': 11.21.3
+ '@oxc-resolver/binding-darwin-x64': 11.21.3
+ '@oxc-resolver/binding-freebsd-x64': 11.21.3
+ '@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.3
+ '@oxc-resolver/binding-linux-arm-musleabihf': 11.21.3
+ '@oxc-resolver/binding-linux-arm64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-arm64-musl': 11.21.3
+ '@oxc-resolver/binding-linux-ppc64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-riscv64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-riscv64-musl': 11.21.3
+ '@oxc-resolver/binding-linux-s390x-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-x64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-x64-musl': 11.21.3
+ '@oxc-resolver/binding-openharmony-arm64': 11.21.3
+ '@oxc-resolver/binding-wasm32-wasi': 11.21.3
+ '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3
+ '@oxc-resolver/binding-win32-x64-msvc': 11.21.3
+
+ p-cancelable@2.1.1: {}
+
+ p-limit@5.0.0:
+ dependencies:
+ yocto-queue: 1.2.2
+
+ p-map@4.0.0:
+ dependencies:
+ aggregate-error: 3.1.0
+
+ parse-ms@2.1.0: {}
+
+ parse-semver@1.1.1:
+ dependencies:
+ semver: 5.7.2
+
+ parse5-htmlparser2-tree-adapter@7.1.0:
+ dependencies:
+ domhandler: 5.0.3
+ parse5: 7.3.0
+
+ parse5-parser-stream@7.1.2:
+ dependencies:
+ parse5: 7.3.0
+
+ parse5@7.3.0:
+ dependencies:
+ entities: 6.0.1
+
+ parseurl@1.3.3: {}
+
+ path-browserify@1.0.1: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ path-parse@1.0.7: {}
+
+ path-to-regexp@8.4.2: {}
+
+ pathe@1.1.2: {}
+
+ pathe@2.0.3: {}
+
+ pathval@1.1.1: {}
+
+ pend@1.2.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@4.0.5: {}
+
+ pkce-challenge@5.0.1: {}
+
+ pkg-types@1.3.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.8.2
+ pathe: 2.0.3
+
+ platform@1.3.6: {}
+
+ pluralize@8.0.0: {}
+
+ postcss-values-parser@6.0.2(postcss@8.5.16):
+ dependencies:
+ color-name: 1.1.4
+ is-url-superb: 4.0.0
+ postcss: 8.5.16
+ quote-unquote: 1.0.0
+
+ postcss@8.5.16:
+ dependencies:
+ nanoid: 3.3.15
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ prebuild-install@7.1.3:
+ dependencies:
+ detect-libc: 2.1.2
+ expand-template: 2.0.3
+ github-from-package: 0.0.0
+ minimist: 1.2.8
+ mkdirp-classic: 0.5.3
+ napi-build-utils: 2.0.0
+ node-abi: 3.94.0
+ pump: 3.0.4
+ rc: 1.2.8
+ simple-get: 4.0.1
+ tar-fs: 2.1.5
+ tunnel-agent: 0.6.0
+
+ precinct@12.3.2:
+ dependencies:
+ '@dependents/detective-less': 5.0.3
+ commander: 12.1.0
+ detective-amd: 6.1.0
+ detective-cjs: 6.1.1
+ detective-es6: 5.0.2
+ detective-postcss: 8.0.4(postcss@8.5.16)
+ detective-sass: 6.0.2
+ detective-scss: 5.0.2
+ detective-stylus: 5.0.1
+ detective-typescript: 14.1.2(typescript@5.9.3)
+ detective-vue2: 2.3.0(typescript@5.9.3)
+ module-definition: 6.0.2
+ node-source-walk: 7.0.2
+ postcss: 8.5.16
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ pretty-format@29.7.0:
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.3.1
+
+ pretty-ms@7.0.1:
+ dependencies:
+ parse-ms: 2.1.0
+
+ proc-log@2.0.1: {}
+
+ promise-inflight@1.0.1: {}
+
+ promise-retry@2.0.1:
+ dependencies:
+ err-code: 2.0.3
+ retry: 0.12.0
+
+ property-information@7.2.0: {}
+
+ protobufjs@6.11.6:
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.5
+ '@protobufjs/eventemitter': 1.1.1
+ '@protobufjs/fetch': 1.1.1
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.2
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.1
+ '@types/long': 4.0.2
+ '@types/node': 20.19.43
+ long: 4.0.0
+
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
+ pump@3.0.4:
+ dependencies:
+ end-of-stream: 1.4.5
+ once: 1.4.0
+
+ qs@6.15.3:
+ dependencies:
+ es-define-property: 1.0.1
+ side-channel: 1.1.1
+
+ quick-lru@5.1.1: {}
+
+ quote-unquote@1.0.0: {}
+
+ range-parser@1.3.0: {}
+
+ raw-body@3.0.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.1
+ iconv-lite: 0.7.2
+ unpipe: 1.0.0
+
+ rc@1.2.8:
+ dependencies:
+ deep-extend: 0.6.0
+ ini: 1.3.8
+ minimist: 1.2.8
+ strip-json-comments: 2.0.1
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
+ react-is@18.3.1: {}
+
+ react-refresh@0.17.0: {}
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
+ read-binary-file-arch@1.0.6:
+ dependencies:
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ read@1.0.7:
+ dependencies:
+ mute-stream: 0.0.8
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ reflect-metadata@0.2.2: {}
+
+ regex-recursion@6.0.2:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ regex-utilities@2.3.0: {}
+
+ regex@6.1.0:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ require-directory@2.1.1: {}
+
+ require-from-string@2.0.2: {}
+
+ requirejs-config-file@4.0.0:
+ dependencies:
+ esprima: 4.0.1
+ stringify-object: 3.3.0
+
+ requirejs@2.3.8: {}
+
+ resolve-alpn@1.2.1: {}
+
+ resolve-dependency-path@4.0.1: {}
+
+ resolve-pkg-maps@1.0.0: {}
+
+ resolve@1.22.12:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.2
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ responselike@2.0.1:
+ dependencies:
+ lowercase-keys: 2.0.0
+
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ retry@0.12.0: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ rollup@4.62.2:
+ dependencies:
+ '@types/estree': 1.0.9
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.62.2
+ '@rollup/rollup-android-arm64': 4.62.2
+ '@rollup/rollup-darwin-arm64': 4.62.2
+ '@rollup/rollup-darwin-x64': 4.62.2
+ '@rollup/rollup-freebsd-arm64': 4.62.2
+ '@rollup/rollup-freebsd-x64': 4.62.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.62.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.62.2
+ '@rollup/rollup-linux-arm64-gnu': 4.62.2
+ '@rollup/rollup-linux-arm64-musl': 4.62.2
+ '@rollup/rollup-linux-loong64-gnu': 4.62.2
+ '@rollup/rollup-linux-loong64-musl': 4.62.2
+ '@rollup/rollup-linux-ppc64-gnu': 4.62.2
+ '@rollup/rollup-linux-ppc64-musl': 4.62.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.62.2
+ '@rollup/rollup-linux-riscv64-musl': 4.62.2
+ '@rollup/rollup-linux-s390x-gnu': 4.62.2
+ '@rollup/rollup-linux-x64-gnu': 4.62.2
+ '@rollup/rollup-linux-x64-musl': 4.62.2
+ '@rollup/rollup-openbsd-x64': 4.62.2
+ '@rollup/rollup-openharmony-arm64': 4.62.2
+ '@rollup/rollup-win32-arm64-msvc': 4.62.2
+ '@rollup/rollup-win32-ia32-msvc': 4.62.2
+ '@rollup/rollup-win32-x64-gnu': 4.62.2
+ '@rollup/rollup-win32-x64-msvc': 4.62.2
+ fsevents: 2.3.3
+
+ router@2.2.0:
+ dependencies:
+ debug: 4.4.3
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.4.2
+ transitivePeerDependencies:
+ - supports-color
+
+ run-applescript@7.1.0: {}
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
+
+ safe-buffer@5.2.1: {}
+
+ safer-buffer@2.1.2: {}
+
+ sass-lookup@6.1.2:
+ dependencies:
+ commander: 12.1.0
+ enhanced-resolve: 5.24.1
+
+ sax@1.6.0: {}
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
+ semver@5.7.2: {}
+
+ semver@6.3.1: {}
+
+ semver@7.8.5: {}
+
+ send@1.2.1:
+ dependencies:
+ debug: 4.4.3
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.1
+ mime-types: 3.0.2
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.3.0
+ statuses: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ serve-static@2.2.1:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
+
+ setprototypeof@1.2.0: {}
+
+ sharp@0.32.6:
+ dependencies:
+ color: 4.2.3
+ detect-libc: 2.1.2
+ node-addon-api: 6.1.0
+ prebuild-install: 7.1.3
+ semver: 7.8.5
+ simple-get: 4.0.1
+ tar-fs: 3.1.3
+ tunnel-agent: 0.6.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ shell-quote@1.9.0: {}
+
+ shiki@4.3.0:
+ dependencies:
+ '@shikijs/core': 4.3.0
+ '@shikijs/engine-javascript': 4.3.0
+ '@shikijs/engine-oniguruma': 4.3.0
+ '@shikijs/langs': 4.3.0
+ '@shikijs/themes': 4.3.0
+ '@shikijs/types': 4.3.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ side-channel-list@1.0.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
+ side-channel@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.1
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
+ siginfo@2.0.0: {}
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.1.0: {}
+
+ simple-concat@1.0.1: {}
+
+ simple-get@4.0.1:
+ dependencies:
+ decompress-response: 6.0.0
+ once: 1.4.0
+ simple-concat: 1.0.1
+
+ simple-git@3.36.0:
+ dependencies:
+ '@kwsites/file-exists': 1.1.1
+ '@kwsites/promise-deferred': 1.1.1
+ '@simple-git/args-pathspec': 1.0.3
+ '@simple-git/argv-parser': 1.1.1
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ simple-swizzle@0.2.4:
+ dependencies:
+ is-arrayish: 0.3.4
+
+ smart-buffer@4.2.0: {}
+
+ smol-toml@1.7.0: {}
+
+ socks-proxy-agent@7.0.0:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.4.3
+ socks: 2.8.9
+ transitivePeerDependencies:
+ - supports-color
+
+ socks@2.8.9:
+ dependencies:
+ ip-address: 10.2.0
+ smart-buffer: 4.2.0
+
+ source-map-js@1.2.1: {}
+
+ source-map@0.6.1:
+ optional: true
+
+ space-separated-tokens@2.0.2: {}
+
+ spawn-command@0.0.2: {}
+
+ ssri@9.0.1:
+ dependencies:
+ minipass: 3.3.6
+
+ stackback@0.0.2: {}
+
+ statuses@2.0.2: {}
+
+ std-env@3.10.0: {}
+
+ stream-to-array@2.3.0:
+ dependencies:
+ any-promise: 1.3.0
+
+ streamx@2.28.0:
+ dependencies:
+ events-universal: 1.0.1
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.7
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
+ stringify-object@3.3.0:
+ dependencies:
+ get-own-enumerable-property-symbols: 3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-bom@3.0.0: {}
+
+ strip-final-newline@3.0.0: {}
+
+ strip-json-comments@2.0.1: {}
+
+ strip-json-comments@5.0.3: {}
+
+ strip-literal@2.1.1:
+ dependencies:
+ js-tokens: 9.0.1
+
+ stylus-lookup@6.1.2:
+ dependencies:
+ commander: 12.1.0
+
+ supports-color@5.5.0:
+ dependencies:
+ has-flag: 3.0.0
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ table-layout@4.1.1:
+ dependencies:
+ array-back: 6.2.3
+ wordwrapjs: 5.1.1
+
+ tapable@2.3.3: {}
+
+ tar-fs@2.1.5:
+ dependencies:
+ chownr: 1.1.4
+ mkdirp-classic: 0.5.3
+ pump: 3.0.4
+ tar-stream: 2.2.0
+
+ tar-fs@3.1.3:
+ dependencies:
+ pump: 3.0.4
+ tar-stream: 3.2.0
+ optionalDependencies:
+ bare-fs: 4.7.3
+ bare-path: 3.0.1
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
+ tar-stream@2.2.0:
+ dependencies:
+ bl: 4.1.0
+ end-of-stream: 1.4.5
+ fs-constants: 1.0.0
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ tar-stream@3.2.0:
+ dependencies:
+ b4a: 1.8.1
+ bare-fs: 4.7.3
+ fast-fifo: 1.3.2
+ streamx: 2.28.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
+ tar@6.2.1:
+ dependencies:
+ chownr: 2.0.0
+ fs-minipass: 2.1.0
+ minipass: 5.0.0
+ minizlib: 2.1.2
+ mkdirp: 1.0.4
+ yallist: 4.0.0
+
+ teex@1.0.1:
+ dependencies:
+ streamx: 2.28.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
+ text-decoder@1.2.7:
+ dependencies:
+ b4a: 1.8.1
+ transitivePeerDependencies:
+ - react-native-b4a
+
+ tiktoken@1.0.22: {}
+
+ tinybench@2.9.0: {}
+
+ tinyglobby@0.2.17:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.5)
+ picomatch: 4.0.5
+
+ tinypool@0.8.4: {}
+
+ tinyspy@2.2.1: {}
+
+ tmp@0.2.7: {}
+
+ toidentifier@1.0.1: {}
+
+ tree-kill@1.2.2: {}
+
+ tree-sitter-wasms@0.1.13:
+ optional: true
+
+ trim-lines@3.0.1: {}
+
+ ts-api-utils@2.5.0(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
+ ts-graphviz@2.1.6:
+ dependencies:
+ '@ts-graphviz/adapter': 2.0.6
+ '@ts-graphviz/ast': 2.0.7
+ '@ts-graphviz/common': 2.1.5
+ '@ts-graphviz/core': 2.0.7
+
+ ts-morph@28.0.0:
+ dependencies:
+ '@ts-morph/common': 0.29.0
+ code-block-writer: 13.0.3
+
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
+ tslib@2.8.1: {}
+
+ tunnel-agent@0.6.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ tunnel@0.0.6: {}
+
+ type-detect@4.1.0: {}
+
+ type-is@2.1.0:
+ dependencies:
+ content-type: 2.0.0
+ media-typer: 1.1.0
+ mime-types: 3.0.2
+
+ typed-rest-client@1.8.11:
+ dependencies:
+ qs: 6.15.3
+ tunnel: 0.0.6
+ underscore: 1.13.8
+
+ typescript@5.9.3: {}
+
+ typical@4.0.0: {}
+
+ typical@7.3.0: {}
+
+ uc.micro@1.0.6: {}
+
+ ufo@1.6.4: {}
+
+ unbash@4.0.2: {}
+
+ underscore@1.13.8: {}
+
+ undici-types@6.21.0: {}
+
+ undici@7.28.0: {}
+
+ unique-filename@2.0.1:
+ dependencies:
+ unique-slug: 3.0.0
+
+ unique-slug@3.0.0:
+ dependencies:
+ imurmurhash: 0.1.4
+
+ unist-util-is@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-stringify-position@4.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-visit-parents@6.0.2:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+
+ unist-util-visit@5.1.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
+
+ universalify@2.0.1: {}
+
+ unpipe@1.0.0: {}
+
+ update-browserslist-db@1.2.3(browserslist@4.28.4):
+ dependencies:
+ browserslist: 4.28.4
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ url-join@4.0.1: {}
+
+ use-isomorphic-layout-effect@1.2.1(@types/react@18.3.31)(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+ optionalDependencies:
+ '@types/react': 18.3.31
+
+ use-sync-external-store@1.6.0(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+
+ util-deprecate@1.0.2: {}
+
+ vary@1.1.2: {}
+
+ vfile-message@4.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-stringify-position: 4.0.0
+
+ vfile@6.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.3
+
+ vite-node@1.6.1(@types/node@20.19.43):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3
+ pathe: 1.1.2
+ picocolors: 1.1.1
+ vite: 5.4.21(@types/node@20.19.43)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ vite@5.4.21(@types/node@20.19.43):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.5.16
+ rollup: 4.62.2
+ optionalDependencies:
+ '@types/node': 20.19.43
+ fsevents: 2.3.3
+
+ vitest@1.6.1(@types/node@20.19.43):
+ dependencies:
+ '@vitest/expect': 1.6.1
+ '@vitest/runner': 1.6.1
+ '@vitest/snapshot': 1.6.1
+ '@vitest/spy': 1.6.1
+ '@vitest/utils': 1.6.1
+ acorn-walk: 8.3.5
+ chai: 4.5.0
+ debug: 4.4.3
+ execa: 8.0.1
+ local-pkg: 0.5.1
+ magic-string: 0.30.21
+ pathe: 1.1.2
+ picocolors: 1.1.1
+ std-env: 3.10.0
+ strip-literal: 2.1.1
+ tinybench: 2.9.0
+ tinypool: 0.8.4
+ vite: 5.4.21(@types/node@20.19.43)
+ vite-node: 1.6.1(@types/node@20.19.43)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/node': 20.19.43
+ transitivePeerDependencies:
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+
+ walk-up-path@4.0.0: {}
+
+ walkdir@0.4.1: {}
+
+ wcwidth@1.0.1:
+ dependencies:
+ defaults: 1.0.4
+
+ web-tree-sitter@0.24.7:
+ optional: true
+
+ whatwg-encoding@3.1.1:
+ dependencies:
+ iconv-lite: 0.6.3
+
+ whatwg-mimetype@4.0.0: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ why-is-node-running@2.3.0:
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+
+ wordwrapjs@5.1.1: {}
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrappy@1.0.2: {}
+
+ wsl-utils@0.1.0:
+ dependencies:
+ is-wsl: 3.1.1
+
+ xml2js@0.5.0:
+ dependencies:
+ sax: 1.6.0
+ xmlbuilder: 11.0.1
+
+ xmlbuilder@11.0.1: {}
+
+ xstate@5.32.4: {}
+
+ y18n@5.0.8: {}
+
+ yallist@3.1.1: {}
+
+ yallist@4.0.0: {}
+
+ yaml@2.9.0: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.3:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yauzl@2.10.0:
+ dependencies:
+ buffer-crc32: 0.2.13
+ fd-slicer: 1.1.0
+
+ yazl@2.5.1:
+ dependencies:
+ buffer-crc32: 0.2.13
+
+ yocto-queue@1.2.2: {}
+
+ zod-to-json-schema@3.25.2(zod@3.25.76):
+ dependencies:
+ zod: 3.25.76
+
+ zod@3.25.76: {}
+
+ zod@4.4.3: {}
+
+ zwitch@2.0.4: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 00000000..2cda91e2
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,2 @@
+packages:
+ - 'tools/*'
diff --git a/scripts/audit-dead-code.sh b/scripts/audit-dead-code.sh
index 6a4f1f55..abe096f7 100755
--- a/scripts/audit-dead-code.sh
+++ b/scripts/audit-dead-code.sh
@@ -13,4 +13,4 @@ if [[ -x node_modules/.bin/knip ]]; then
exec node_modules/.bin/knip --reporter json --no-progress
fi
-exec npx --yes knip --reporter json --no-progress
+exec pnpm exec knip --reporter json --no-progress
diff --git a/scripts/audit-dependencies.mjs b/scripts/audit-dependencies.mjs
index fd89caca..3c6411ea 100644
--- a/scripts/audit-dependencies.mjs
+++ b/scripts/audit-dependencies.mjs
@@ -21,10 +21,10 @@ const localBin = process.platform === 'win32'
? 'node_modules\\.bin\\depcheck.cmd'
: 'node_modules/.bin/depcheck';
-const command = existsSync(localBin) ? localBin : 'npx';
+const command = existsSync(localBin) ? localBin : 'pnpm';
const args = existsSync(localBin)
? ['--json', `--ignores=${ignores.join(',')}`]
- : ['--yes', 'depcheck', '--json', `--ignores=${ignores.join(',')}`];
+ : ['dlx', 'depcheck', '--json', `--ignores=${ignores.join(',')}`];
const result = spawnSync(command, args, {
cwd: process.cwd(),
diff --git a/scripts/bump-version.mjs b/scripts/bump-version.mjs
index cf2b3342..6027aefc 100644
--- a/scripts/bump-version.mjs
+++ b/scripts/bump-version.mjs
@@ -4,7 +4,7 @@ import { spawnSync } from 'child_process';
const ROOT_MAJOR = 2;
const shouldStage = process.argv.includes('--stage');
const packagePath = 'package.json';
-const lockPath = 'package-lock.json';
+const lockPath = 'pnpm-lock.yaml';
function readJson(path) {
return JSON.parse(readFileSync(path, 'utf8'));
@@ -33,17 +33,9 @@ const version = nextVersion(pkg.version);
pkg.version = version;
writeJson(packagePath, pkg);
-if (existsSync(lockPath)) {
- const lock = readJson(lockPath);
- lock.version = version;
- if (lock.packages?.['']) {
- lock.packages[''].version = version;
- }
- writeJson(lockPath, lock);
-}
-
if (shouldStage) {
- const result = spawnSync('git', ['add', packagePath, lockPath], { stdio: 'inherit' });
+ const paths = [packagePath, ...(existsSync(lockPath) ? [lockPath] : [])];
+ const result = spawnSync('git', ['add', ...paths], { stdio: 'inherit' });
if (result.status) process.exit(result.status);
}
diff --git a/scripts/check-circular-deps.mjs b/scripts/check-circular-deps.mjs
index 2aec55b9..637c4761 100755
--- a/scripts/check-circular-deps.mjs
+++ b/scripts/check-circular-deps.mjs
@@ -5,10 +5,10 @@ import { spawnSync } from 'child_process';
const root = process.argv[2] ? resolve(process.argv[2]) : process.cwd();
const localMadge = resolve(root, 'node_modules/.bin/madge');
-const command = existsSync(localMadge) ? localMadge : 'npx';
+const command = existsSync(localMadge) ? localMadge : 'pnpm';
const args = existsSync(localMadge)
? ['.', '--circular', '--json', '--extensions', 'ts,tsx,js,jsx,mjs,cjs', '--exclude', 'node_modules|dist|out|coverage|\\.git']
- : ['--yes', 'madge', '.', '--circular', '--json', '--extensions', 'ts,tsx,js,jsx,mjs,cjs', '--exclude', 'node_modules|dist|out|coverage|\\.git'];
+ : ['dlx', 'madge', '.', '--circular', '--json', '--extensions', 'ts,tsx,js,jsx,mjs,cjs', '--exclude', 'node_modules|dist|out|coverage|\\.git'];
const result = spawnSync(command, args, {
cwd: root,
diff --git a/scripts/check-release-assets.mjs b/scripts/check-release-assets.mjs
new file mode 100644
index 00000000..54871540
--- /dev/null
+++ b/scripts/check-release-assets.mjs
@@ -0,0 +1,25 @@
+import { existsSync, readFileSync } from 'fs';
+import { basename } from 'path';
+
+const pkg = JSON.parse(readFileSync('package.json', 'utf8'));
+const readme = readFileSync('README.md', 'utf8');
+
+const requiredAssets = [
+ pkg.icon,
+ 'media/Mitii.png',
+].filter(Boolean);
+
+const missingAssets = requiredAssets.filter((asset) => !existsSync(asset));
+if (missingAssets.length > 0) {
+ console.error(`Missing release media assets: ${missingAssets.join(', ')}`);
+ process.exit(1);
+}
+
+const version = String(pkg.version);
+if (!readme.includes(`alt="Version ${version}"`) || !readme.includes(`badge/version-${version}-111111`)) {
+ console.error(`README version badge is out of sync with package.json (${pkg.version}).`);
+ console.error('Run: pnpm run readme:sync-version');
+ process.exit(1);
+}
+
+console.log(`Release assets OK: ${requiredAssets.map((asset) => basename(asset)).join(', ')}; README version ${version}`);
diff --git a/scripts/copy-bundled-skills.mjs b/scripts/copy-bundled-skills.mjs
new file mode 100644
index 00000000..e55fcc72
--- /dev/null
+++ b/scripts/copy-bundled-skills.mjs
@@ -0,0 +1,16 @@
+import { cpSync, existsSync, mkdirSync } from 'fs';
+import { dirname, join } from 'path';
+import { fileURLToPath } from 'url';
+
+const root = join(dirname(fileURLToPath(import.meta.url)), '..');
+const source = join(root, 'src/core/skills/bundled');
+const dest = join(root, 'dist/core/skills/bundled');
+
+if (!existsSync(source)) {
+ console.error('Missing bundled skills source:', source);
+ process.exit(1);
+}
+
+mkdirSync(dirname(dest), { recursive: true });
+cpSync(source, dest, { recursive: true, force: true });
+console.log('Copied bundled skills to', dest);
diff --git a/scripts/dev-setup.sh b/scripts/dev-setup.sh
new file mode 100755
index 00000000..3b494303
--- /dev/null
+++ b/scripts/dev-setup.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+cd "$(dirname "$0")/.."
+
+editor="${THUNDER_EDITOR:-vscode}"
+
+echo "Installing dependencies..."
+pnpm install
+
+echo "Compiling extension and webview..."
+pnpm run compile
+
+if [[ "$(uname -s)" == "Darwin" ]]; then
+ echo "Rebuilding native modules for ${editor}..."
+ THUNDER_EDITOR="${editor}" pnpm run rebuild:native
+else
+ cat <<'NOTE'
+Skipping Electron native rebuild auto-detection on this OS.
+Set THUNDER_ELECTRON_VERSION for your editor, then run:
+ THUNDER_ELECTRON_VERSION= pnpm run rebuild:native
+NOTE
+fi
+
+echo "Rebuilding native modules for local Node tests..."
+pnpm run rebuild:node
+
+echo "Setup complete. Press F5 in VS Code to launch the Extension Development Host."
diff --git a/scripts/install-recommended-skills.sh b/scripts/install-recommended-skills.sh
index f18a89f3..b115df3e 100755
--- a/scripts/install-recommended-skills.sh
+++ b/scripts/install-recommended-skills.sh
@@ -10,7 +10,7 @@ Mitii now ships bundled skills inside the VS Code extension and copies them
into .mitii/skills/ on workspace init. To refresh the committed bundle for
maintainers, run:
- npm run skills:sync-bundled
+ pnpm run skills:sync-bundled
Or:
diff --git a/scripts/rebuild-native.mjs b/scripts/rebuild-native.mjs
index bb2c5cdf..bc2098b8 100644
--- a/scripts/rebuild-native.mjs
+++ b/scripts/rebuild-native.mjs
@@ -1,10 +1,10 @@
#!/usr/bin/env node
/**
* Rebuild native modules (better-sqlite3) for VS Code / Cursor Electron.
- * System `npm install` compiles for Node.js — the extension host uses Electron's ABI.
+ * A normal install compiles for Node.js; the extension host uses Electron's ABI.
*
- * Override: THUNDER_ELECTRON_VERSION=42.2.0 npm run rebuild:native
- * Override editor: THUNDER_EDITOR=cursor npm run rebuild:native
+ * Override: THUNDER_ELECTRON_VERSION=42.2.0 pnpm run rebuild:native
+ * Override editor: THUNDER_EDITOR=cursor pnpm run rebuild:native
*/
import { execSync, spawnSync } from 'child_process';
import { existsSync } from 'fs';
@@ -60,9 +60,10 @@ function main() {
console.log(`Rebuilding native modules for Electron ${electronVersion}…`);
const result = spawnSync(
- 'npx',
+ 'pnpm',
[
- '@electron/rebuild',
+ 'exec',
+ 'electron-rebuild',
'-f',
'-v',
electronVersion,
@@ -76,13 +77,13 @@ function main() {
if (result.status !== 0) {
console.error('\nRebuild failed. Try:');
- console.error(' THUNDER_ELECTRON_VERSION=42.2.0 npm run rebuild:native # VS Code 1.124+');
- console.error(' THUNDER_ELECTRON_VERSION=39.8.1 npm run rebuild:native # Cursor');
+ console.error(' THUNDER_ELECTRON_VERSION=42.2.0 pnpm run rebuild:native # VS Code 1.124+');
+ console.error(' THUNDER_ELECTRON_VERSION=39.8.1 pnpm run rebuild:native # Cursor');
process.exit(result.status ?? 1);
}
console.log('\nNative rebuild complete. Reload the Extension Development Host (F5).');
- console.log('Note: run "npm run rebuild:node" before "npm test" if tests fail on sqlite.');
+ console.log('Note: run "pnpm run rebuild:node" before CLI eval or "pnpm test" if sqlite fails under Node.');
}
main();
diff --git a/scripts/rebuild-node.mjs b/scripts/rebuild-node.mjs
new file mode 100644
index 00000000..edfe97d1
--- /dev/null
+++ b/scripts/rebuild-node.mjs
@@ -0,0 +1,42 @@
+#!/usr/bin/env node
+/**
+ * Rebuild native modules (better-sqlite3) for system Node.js.
+ * Required for headless CLI eval and Vitest — distinct from Electron (rebuild:native).
+ */
+import { spawnSync } from 'child_process';
+import { createRequire } from 'module';
+import { dirname, resolve } from 'path';
+import { fileURLToPath } from 'url';
+
+const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
+const require = createRequire(import.meta.url);
+
+const MODULES = ['better-sqlite3'];
+
+function moduleDir(name) {
+ return require.resolve(`${name}/package.json`).replace(/package\.json$/, '');
+}
+
+function rebuildModule(name) {
+ const dir = moduleDir(name);
+ console.log(`Rebuilding ${name} for Node ${process.version}…`);
+ const result = spawnSync(
+ 'pnpm',
+ ['exec', 'node-gyp', 'rebuild', `--directory=${dir}`],
+ { cwd: packageRoot, stdio: 'inherit', shell: process.platform === 'win32' }
+ );
+ return result.status === 0;
+}
+
+function main() {
+ for (const name of MODULES) {
+ if (!rebuildModule(name)) {
+ console.error(`\nRebuild failed for ${name}.`);
+ process.exit(1);
+ }
+ }
+ console.log('\nNative rebuild complete for system Node.');
+ console.log('Run pnpm run rebuild:native before F5 if the VS Code extension fails to load sqlite.');
+}
+
+main();
diff --git a/scripts/safe-lint-target.sh b/scripts/safe-lint-target.sh
index 786f56a5..53829b55 100644
--- a/scripts/safe-lint-target.sh
+++ b/scripts/safe-lint-target.sh
@@ -19,7 +19,7 @@ fi
if [[ -x node_modules/.bin/eslint ]]; then
ESLINT=(node_modules/.bin/eslint)
else
- ESLINT=(npx --yes eslint)
+ ESLINT=(pnpm exec eslint)
fi
"${ESLINT[@]}" --no-eslintrc --no-error-on-unmatched-pattern "$TARGET"
diff --git a/scripts/sync-bundled-skills.sh b/scripts/sync-bundled-skills.sh
index 62d03406..94d5fd45 100755
--- a/scripts/sync-bundled-skills.sh
+++ b/scripts/sync-bundled-skills.sh
@@ -1,9 +1,9 @@
#!/usr/bin/env bash
-# Maintainer utility: refresh bundled-skills/ from a local checkout (no runtime git pull in the extension).
+# Maintainer utility: refresh src/core/skills/bundled/ from a local checkout (no runtime git pull in the extension).
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
-DEST_DIR="${MITII_BUNDLED_SKILLS_DIR:-$ROOT_DIR/bundled-skills}"
+DEST_DIR="${MITII_BUNDLED_SKILLS_DIR:-$ROOT_DIR/src/core/skills/bundled}"
SOURCE_DIR="${AGENT_SKILLS_SOURCE_DIR:-}"
usage() {
@@ -14,8 +14,8 @@ Usage:
AGENT_SKILLS_SOURCE_DIR=/path/to/agent-skills/skills bash scripts/sync-bundled-skills.sh
bash scripts/sync-bundled-skills.sh /path/to/agent-skills/skills
-Copies the seven Tier-1 SKILL.md folders from addyosmani/agent-skills into bundled-skills/.
-Mitii-owned skills (e.g. audit-cleanup) live in bundled-skills/ and are not overwritten.
+Copies the seven Tier-1 SKILL.md folders from addyosmani/agent-skills into src/core/skills/bundled/.
+Mitii-owned skills (e.g. audit-cleanup) live in src/core/skills/bundled/ and are not overwritten.
Does not run at extension runtime — commit the result and ship it in the VSIX.
EOF
}
@@ -58,4 +58,4 @@ for skill in "${SKILLS[@]}"; do
echo "Synced $skill"
done
-echo "Done. bundled-skills now contains $(find "$DEST_DIR" -name SKILL.md | wc -l | tr -d ' ') skill(s)."
+echo "Done. src/core/skills/bundled now contains $(find "$DEST_DIR" -name SKILL.md | wc -l | tr -d ' ') skill(s)."
diff --git a/scripts/sync-readme-version.mjs b/scripts/sync-readme-version.mjs
new file mode 100644
index 00000000..b145793b
--- /dev/null
+++ b/scripts/sync-readme-version.mjs
@@ -0,0 +1,18 @@
+import { readFileSync, writeFileSync } from 'fs';
+
+const pkg = JSON.parse(readFileSync('package.json', 'utf8'));
+const readmePath = 'README.md';
+const readme = readFileSync(readmePath, 'utf8');
+const version = String(pkg.version);
+
+const next = readme.replace(
+ /
/,
+ `
`
+);
+
+if (next === readme) {
+ throw new Error('Could not find README version badge to update.');
+}
+
+writeFileSync(readmePath, next, 'utf8');
+console.log(`README version badge synced to ${version}`);
diff --git a/src/core/app/ThunderController.ts b/src/core/app/ThunderController.ts
index f68ac35a..116f19e8 100644
--- a/src/core/app/ThunderController.ts
+++ b/src/core/app/ThunderController.ts
@@ -1,8 +1,8 @@
import * as vscode from 'vscode';
import { AGENT_NAME, brandMessage } from '../../shared/brand';
-import { existsSync, statSync } from 'fs';
-import { join } from 'path';
-import { ThunderSession } from '../session/ThunderSession';
+import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'fs';
+import { dirname, join } from 'path';
+import { ThunderSession, type ThunderMode } from '../session/ThunderSession';
import { ConfigService } from '../config/ConfigService';
import { LlmProviderRegistry } from '../llm/LlmProviderRegistry';
import { IndexService } from '../indexing/IndexService';
@@ -39,7 +39,7 @@ import {
} from '../tools/builtinTools';
import { ProjectCatalogContextSource, discoverProjectCatalog, saveProjectCatalog } from '../modes/ask';
import { createMarkStepCompleteTool, createProposePlanMutationTool } from '../tools/planTools';
-import type { LlmProvider } from '../llm/types';
+import type { AssistantStreamChunk, LlmProvider } from '../llm/types';
import { UsageTrackingProvider, type ModelCallUsage } from '../llm/UsageTrackingProvider';
import { scaffoldMitiiWorkspace } from '../mcp/scaffoldMitiiWorkspace';
import { AgentTaskState } from '../runtime/AgentTaskState';
@@ -67,6 +67,10 @@ import { isLanceDbAvailable, isMinilmAvailable } from '../indexing/vectorAvailab
import type { EmbeddingProvider } from '../indexing/EmbeddingProvider';
import { McpManager } from '../mcp/McpManager';
import { ProjectRulesContextSource, ProjectRulesService } from '../rules/ProjectRulesService';
+import {
+ ProviderProfilesService,
+ providerSecretRef,
+} from '../providers/ProviderProfilesService';
import { SkillCatalogContextSource, SkillCatalogService } from '../skills/SkillCatalogService';
import { InlineDiffManager } from '../../vscode/inlineDiffManager';
import { testProviderConnection } from '../llm/testConnection';
@@ -95,11 +99,16 @@ import { listCustomMcpServers } from '../mcp/mcpWorkspaceConfig';
import { resolveDbPath } from '../indexing/paths';
import { searchWorkspacePaths, resolvePickedPaths } from '../context/contextPathSearch';
import { createWorkspacePattern, isWorkspaceInVscodeFolders, normalizeWorkspaceRoot, toWorkspaceRelPath } from '../util/paths';
-import { collectCommitMessageInput, generateCommitMessage, type CommitMessageResult } from '../scm';
+import type { CommitMessageResult } from '../scm';
+import { MicroTaskExecutor } from '../microtasks';
+import { AuditPackBuilder } from '../audit';
+import { GitHistoryCollector, generateChangelogEntry, generateReleaseNotes, insertChangelogEntry } from '../release';
+import { collectReviewDiff } from '../scm/ReviewDiffCollector';
import {
normalizeAgentSettings,
normalizeProviderSettings,
normalizeThunderSettings,
+ validateProviderSettings,
resolveAutoContextWindow,
} from '../config/ui/mappers';
import type {
@@ -111,6 +120,7 @@ import type {
} from '../config/ui/payloads';
const log = createLogger('ThunderController');
+const ONBOARDING_STATE_KEY = 'thunder.onboarding.completed.v1';
export type UiUpdateCallback = (partial: Partial) => void;
@@ -142,10 +152,12 @@ export class ThunderController {
private embeddingProvider: EmbeddingProvider | undefined;
private mcpManager = new McpManager();
private projectRulesService: ProjectRulesService | undefined;
+ private providerProfilesService: ProviderProfilesService | undefined;
private skillCatalogService: SkillCatalogService | undefined;
private inlineDiffManager: InlineDiffManager | undefined;
private researchAgentProvider: LlmProvider | undefined;
private sessionLog = new SessionLogService();
+ private lastAutoAuditExportSignature = '';
private lastSubagentSnapshot = new Map();
private indexingStatus: IndexingStatus = { indexed: 0, queued: 0, running: false, failed: 0, total: 0, activeWorkers: 0, processed: 0, runTotal: 0 };
private contextToggles: ContextToggles = defaultContextToggles();
@@ -154,6 +166,7 @@ export class ThunderController {
private watchDebounceTimer: ReturnType | undefined;
private debouncedRebuildRetriever: (() => void) | undefined;
private currentPlan: PlanView | null = null;
+ private currentReviewDiff: WebviewState['reviewDiff'] = null;
private agentActivity: import('../../vscode/webview/messages').AgentActivityEntry[] = [];
private agentLiveStatus: import('../../vscode/webview/messages').AgentLiveStatusView | null = null;
private tokenUsage: Omit = {
@@ -176,6 +189,7 @@ export class ThunderController {
breakdown: [] as import('../../vscode/webview/messages').TokenUsageBreakdownItem[],
};
private uiUpdate: UiUpdateCallback | undefined;
+ private preservedUiGetter: (() => Partial) | undefined;
private autoFixCallback: ((message: string) => Promise) | undefined;
private autoFixDepth = 0;
private disposed = false;
@@ -189,6 +203,8 @@ export class ThunderController {
private pendingIndexStatus: IndexingStatus | undefined;
private tokenUsageNotifyTimer: ReturnType | undefined;
private pendingTokenUsage: TokenUsageView | undefined;
+ private settingsSaving = false;
+ private testingConnection = false;
constructor(private readonly context: vscode.ExtensionContext) {
this.configService = new ConfigService(context);
@@ -216,6 +232,22 @@ export class ThunderController {
this.uiUpdate = cb;
}
+ setPreservedUiGetter(getter: () => Partial): void {
+ this.preservedUiGetter = getter;
+ }
+
+ private getPreservedUiBase(): Partial {
+ const preserved = this.preservedUiGetter?.() ?? {};
+ return {
+ tab: preserved.tab,
+ mode: preserved.mode,
+ messages: preserved.messages,
+ currentSessionId: preserved.currentSessionId,
+ chatHistory: preserved.chatHistory,
+ loading: preserved.loading,
+ };
+ }
+
setAutoFixCallback(cb: (message: string) => Promise): void {
this.autoFixCallback = cb;
}
@@ -281,6 +313,11 @@ export class ThunderController {
private configureSessionLogging(session: ThunderSession, workspace: string): void {
const telemetry = this.configService.getConfig().telemetry;
this.sessionLog.configure(workspace, session.id, telemetry.sessionLogging, telemetry.debugMetrics);
+ this.sessionLog.configureWebhook({
+ url: telemetry.webhookUrl,
+ secret: telemetry.webhookSecret || process.env.MITII_TELEMETRY_WEBHOOK_SECRET,
+ timeoutMs: telemetry.webhookTimeoutMs,
+ });
this.sessionLog.writeSessionHeader({
mode: session.mode,
model: this.configService.getConfig().provider.model,
@@ -399,6 +436,7 @@ export class ThunderController {
this.diagnosticsService.setWorkspaceRoot(workspace);
scaffoldMitiiWorkspace(workspace, { extensionRoot: this.context.extensionPath });
this.projectRulesService = new ProjectRulesService(workspace);
+ this.providerProfilesService = new ProviderProfilesService(workspace);
this.skillCatalogService = new SkillCatalogService(workspace);
this.skillCatalogService.refresh();
const retriever = new HybridRetriever(
@@ -471,6 +509,7 @@ export class ThunderController {
this.diagnosticsService.setWorkspaceRoot(workspace);
this.projectRulesService = new ProjectRulesService(workspace);
+ this.providerProfilesService = new ProviderProfilesService(workspace);
this.skillCatalogService = new SkillCatalogService(workspace);
this.skillCatalogService.refresh();
this.memoryService = new MemoryService(db, workspace, {
@@ -662,6 +701,18 @@ export class ThunderController {
),
githubIssueFetchEnabled: config.github.issueFetchEnabled,
githubIssueCommentLimit: config.github.issueCommentLimit,
+ microTaskRoutingEnabled: config.context.microTaskRoutingEnabled,
+ microTaskExecutorFactory: (provider) => {
+ if (!ws || !this.gitService) {
+ throw new Error('Micro-task routing requires an initialized workspace and Git repository.');
+ }
+ return new MicroTaskExecutor({
+ workspace: ws,
+ git: this.gitService,
+ provider,
+ sessionLog: this.sessionLog,
+ });
+ },
});
orchestrator.setToolExecutor(this.toolExecutor);
orchestrator.setContextPackCallback((pack, views, budget) => {
@@ -867,15 +918,10 @@ export class ThunderController {
const vscodeFolders = this.getVscodeWorkspaceFolders();
const indexDbPath = workspacePath ? resolveDbPath(workspacePath) : '';
const appVersion = String(this.context.extension.packageJSON.version ?? '');
+ const onboardingCompleted = this.context.globalState.get(ONBOARDING_STATE_KEY, false);
+ const providerConfigured = config.provider.type !== 'echo' || Boolean(apiKey);
- const approvals: ApprovalRequestView[] = (this.approvalQueue?.getPending() ?? []).map((r) => ({
- id: r.id,
- toolName: r.toolName,
- inputPreview: r.inputPreview,
- files: r.files,
- risk: r.risk,
- reason: r.reason,
- }));
+ const approvals: ApprovalRequestView[] = (this.approvalQueue?.getPending() ?? []).map(toApprovalView);
return {
...initialWebviewState(),
@@ -912,10 +958,17 @@ export class ThunderController {
...this.tokenUsage,
contextWindow: config.provider.contextWindow,
},
- mode: this.session?.mode ?? 'plan',
+ mode: base.mode ?? this.session?.mode ?? 'plan',
indexing: this.indexingStatus,
approvals,
plan: this.currentPlan,
+ reviewDiff: base.reviewDiff ?? this.currentReviewDiff,
+ onboarding: {
+ completed: onboardingCompleted,
+ providerConfigured,
+ workspaceIndexed: this.indexingStatus.indexed > 0,
+ shouldShow: !onboardingCompleted && (!providerConfigured || this.indexingStatus.indexed === 0),
+ },
memories: (this.memoryService?.recent(20) ?? []).map((m) => ({
id: m.id,
type: m.type,
@@ -934,6 +987,8 @@ export class ThunderController {
providerType: config.provider.type,
baseUrl: config.provider.baseUrl,
model: config.provider.model,
+ apiVersion: config.provider.apiVersion,
+ region: config.provider.region,
contextWindow: config.provider.contextWindow,
indexingEnabled: config.indexing.enabled,
approvalMode: config.safety.approvalMode,
@@ -992,6 +1047,10 @@ export class ThunderController {
actModel: config.agent.actModel,
actBaseUrl: config.agent.actBaseUrl,
checkpointStrategy: config.agent.checkpointStrategy,
+ showReasoning: config.ui.showReasoning,
+ reasoningPreviewMaxChars: config.ui.reasoningPreviewMaxChars,
+ providerProfiles: this.providerProfilesService?.list() ?? [],
+ activeProviderProfileId: this.providerProfilesService?.getActiveId() ?? null,
},
contextToggles: this.contextToggles,
mcpToggles: this.mcpToggles,
@@ -1004,9 +1063,26 @@ export class ThunderController {
indexDbPath,
workspaceNotice: this.workspaceNotice,
workspaceTrusted: this.isWorkspaceTrusted(),
+ settingsSaving: this.settingsSaving,
+ testingConnection: this.testingConnection,
};
}
+ async refreshReviewDiff(): Promise {
+ if (!this.gitService?.isGitRepo) {
+ this.currentReviewDiff = null;
+ this.notifyUi({ reviewDiff: null });
+ return;
+ }
+ this.currentReviewDiff = await collectReviewDiff(this.gitService);
+ this.notifyUi({ reviewDiff: this.currentReviewDiff });
+ }
+
+ async completeOnboarding(): Promise {
+ await this.context.globalState.update(ONBOARDING_STATE_KEY, true);
+ this.notifyUi({ onboarding: (await this.buildUiState()).onboarding });
+ }
+
private pushActivity(
kind: import('../../vscode/webview/messages').AgentActivityEntry['kind'],
message: string,
@@ -1160,6 +1236,43 @@ export class ThunderController {
}
getSession(): ThunderSession | undefined { return this.session; }
+ restoreChatSession(sessionId: string, options: { mode?: ThunderMode } = {}): PlanView | null {
+ const restoredId = sessionId.trim();
+ if (!restoredId) return this.currentPlan;
+
+ const workspace = this.resolveWorkspacePath();
+ const mode = options.mode ?? this.session?.mode ?? 'plan';
+ const shouldReplace =
+ !this.session ||
+ this.session.id !== restoredId ||
+ this.session.workspace !== workspace;
+
+ const activeSession = shouldReplace
+ ? new ThunderSession(workspace, mode, { id: restoredId })
+ : this.session;
+ if (!activeSession) return this.currentPlan;
+ this.session = activeSession;
+ activeSession.setMode(mode);
+
+ this.sessionService?.ensureSession(activeSession);
+ if (workspace) {
+ this.configureSessionLogging(activeSession, workspace);
+ }
+
+ this.currentPlan = toPlanView(this.planPersistence?.getActive(restoredId)?.plan);
+ this.agentLiveStatus = null;
+ this.agentActivity = [];
+ this.lastSubagentSnapshot.clear();
+ this.notifyUi({
+ currentSessionId: restoredId,
+ mode: activeSession.mode,
+ plan: this.currentPlan,
+ agentActivity: [],
+ agentLiveStatus: null,
+ subagents: [],
+ });
+ return this.currentPlan;
+ }
getConfigService(): ConfigService { return this.configService; }
getProviderRegistry(): LlmProviderRegistry { return this.providerRegistry; }
getIndexingStatus(): IndexingStatus { return this.indexingStatus; }
@@ -1177,11 +1290,19 @@ export class ThunderController {
throw normalizeError(new Error('No Git repository found for this workspace.'));
}
const provider = this.trackProvider(await this.resolveProviderForMode('ask'));
- const input = await collectCommitMessageInput(this.gitService);
- if (!input.stagedDiff.trim() && input.unstagedDiff?.trim()) {
- throw normalizeError(new Error('Only unstaged changes found. Stage files before generating a commit message.'));
- }
- return generateCommitMessage(input, provider);
+ const result = await new MicroTaskExecutor({
+ workspace: this.resolveWorkspacePath() ?? '',
+ git: this.gitService,
+ provider,
+ sessionLog: this.sessionLog,
+ }).execute('commit_message', 'generate commit message');
+ const [subject, ...rest] = result.content.split(/\r?\n/);
+ const body = rest.join('\n').trim() || undefined;
+ return {
+ subject: subject || 'chore: update workspace',
+ body,
+ fullMessage: body ? `${subject}\n\n${body}` : subject || 'chore: update workspace',
+ };
}
private async resolveProviderForMode(mode: string): Promise {
@@ -1191,6 +1312,11 @@ export class ThunderController {
if (mode === 'plan') {
const planModel = config.agent.planModel?.trim();
if (planModel) {
+ enforceEnterpriseProviderPolicy(
+ config.enterprise.localProvidersOnly,
+ config.agent.planProviderType ?? config.provider.type,
+ config.agent.planBaseUrl?.trim() || config.provider.baseUrl
+ );
return this.providerRegistry.resolveFromOptions({
type: config.agent.planProviderType ?? config.provider.type,
baseUrl: config.agent.planBaseUrl?.trim() || config.provider.baseUrl,
@@ -1206,6 +1332,11 @@ export class ThunderController {
if (mode === 'agent') {
const actModel = config.agent.actModel?.trim();
if (actModel) {
+ enforceEnterpriseProviderPolicy(
+ config.enterprise.localProvidersOnly,
+ config.agent.actProviderType ?? config.provider.type,
+ config.agent.actBaseUrl?.trim() || config.provider.baseUrl
+ );
return this.providerRegistry.resolveFromOptions({
type: config.agent.actProviderType ?? config.provider.type,
baseUrl: config.agent.actBaseUrl?.trim() || config.provider.baseUrl,
@@ -1222,6 +1353,7 @@ export class ThunderController {
if (!active) {
throw normalizeError(new Error('No LLM provider configured'));
}
+ enforceEnterpriseProviderPolicy(config.enterprise.localProvidersOnly, config.provider.type, config.provider.baseUrl);
return active;
}
@@ -1471,9 +1603,13 @@ export class ThunderController {
async sendMessage(
content: string,
- recentMessages: Array<{ role: 'user' | 'assistant'; content: string }> = [],
- options?: { preserveActivity?: boolean; pinnedContext?: PinnedContextView[] }
- ): Promise> {
+ recentMessages: Array<{ role: 'user' | 'assistant'; content: string; attachments?: import('../../vscode/webview/messages').ChatImageAttachment[] }> = [],
+ options?: {
+ preserveActivity?: boolean;
+ pinnedContext?: PinnedContextView[];
+ attachments?: import('../../vscode/webview/messages').ChatImageAttachment[];
+ }
+ ): Promise> {
if (!this.session) throw normalizeError(new Error('Session not initialized'));
const provider = await this.resolveProviderForMode(this.session.mode);
if (!provider) throw normalizeError(new Error('No LLM provider configured'));
@@ -1515,6 +1651,7 @@ export class ThunderController {
});
return this.chatOrchestrator.send(this.session, meteredProvider, content, recentMessages, {
pinnedContext: options?.pinnedContext ?? this.pinnedContext,
+ attachments: options?.attachments,
});
}
@@ -1594,6 +1731,7 @@ export class ThunderController {
}
async reloadWorkspace(options: { autoIndex?: boolean } = { autoIndex: true }): Promise {
+ const preservedBase = this.getPreservedUiBase();
const vscodeFolder = this.getPrimaryVscodeFolder();
const override = this.configService.getWorkspaceOverride();
if (vscodeFolder && override) {
@@ -1615,7 +1753,22 @@ export class ThunderController {
: 'none';
this.logWorkspaceResolution(workspace, source);
- this.session = new ThunderSession(workspace);
+ const previousWorkspace = this.session?.workspace;
+ const preservedSessionId = typeof preservedBase.currentSessionId === 'string'
+ ? preservedBase.currentSessionId.trim()
+ : '';
+ const canRestoreSessionId = Boolean(
+ preservedSessionId &&
+ (!previousWorkspace || previousWorkspace === workspace)
+ );
+ this.session = new ThunderSession(
+ workspace,
+ preservedBase.mode ?? this.session?.mode ?? 'plan',
+ canRestoreSessionId ? { id: preservedSessionId } : undefined
+ );
+ const restoredUiBase = canRestoreSessionId
+ ? preservedBase
+ : { ...preservedBase, currentSessionId: this.session.id, messages: [] };
if (workspace) {
this.configureSessionLogging(this.session, workspace);
}
@@ -1625,6 +1778,7 @@ export class ThunderController {
this.scanner = undefined;
this.indexQueue = undefined;
this.projectRulesService = undefined;
+ this.providerProfilesService = undefined;
this.indexingStatus = { indexed: 0, queued: 0, running: false, failed: 0, total: 0, activeWorkers: 0, processed: 0, runTotal: 0 };
await this.mcpManager.closeAll();
this.toolRuntime.unregisterByPrefix('mcp__');
@@ -1642,8 +1796,10 @@ export class ThunderController {
this.initMinimalChat(workspace);
}
}
+ this.sessionService?.ensureSession(this.session);
+ this.currentPlan = toPlanView(this.planPersistence?.getActive(this.session.id)?.plan);
- this.notifyUi(await this.buildUiState());
+ this.notifyUi(await this.buildUiState(restoredUiBase));
log.info('Workspace reloaded', { workspace });
if (workspace && options.autoIndex !== false) {
void this.maybeAutoIndex();
@@ -1678,9 +1834,52 @@ export class ThunderController {
hadError,
tools: audit.map((a) => a.toolName),
});
+ this.sessionLog.append('session_end', hadError ? 'Session completed with issues' : 'Session completed', {
+ sessionId: this.session?.id,
+ hadError,
+ toolCalls: audit.length,
+ });
+ void this.maybeAutoExportAuditPack(hadError);
this.notifyUi({ agentActivity: this.agentActivity, agentLiveStatus: null });
}
+ private async maybeAutoExportAuditPack(hadError: boolean): Promise {
+ const config = this.configService.getConfig();
+ if (!config.enterprise.autoExportAuditPackOnSessionEnd) return;
+
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace) return;
+ const sessionId = this.session?.id ?? 'no-session';
+ const logPath = this.sessionLog.getLogPath();
+ const signature = `${sessionId}:${logPath}:${this.sessionLog.exportForAnalysis().length}:${this.toolRuntime.getAuditLog().length}`;
+ if (signature === this.lastAutoAuditExportSignature) return;
+ this.lastAutoAuditExportSignature = signature;
+
+ try {
+ const target = join(
+ workspace,
+ '.mitii',
+ 'audit',
+ `mitii-audit-${sessionId}-${formatTimestampForFile(Date.now())}.zip`
+ );
+ mkdirSync(dirname(target), { recursive: true });
+ const pack = this.buildAuditPack(workspace, sessionId, config.enterprise.stripFileContentsFromAuditPacks);
+ writeFileSync(target, pack.buffer);
+ this.sessionLog.append('audit_export', 'Audit pack auto-exported', {
+ path: target,
+ entries: pack.entries,
+ redactionReport: pack.redactionReport,
+ hadError,
+ automatic: true,
+ });
+ this.pushActivity('info', 'Audit pack saved', target);
+ } catch (error) {
+ const message = error instanceof Error ? error.message : String(error);
+ this.sessionLog.append('error', 'Automatic audit pack export failed', { error: message });
+ this.pushActivity('error', 'Automatic audit pack export failed', message);
+ }
+ }
+
private buildTurnSummary(audit: import('../tools/types').ToolCallAudit[]): string {
const lines: string[] = [];
const writes = new Set();
@@ -1758,6 +1957,106 @@ export class ThunderController {
}
}
+ async exportAuditPack(): Promise {
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace) {
+ void vscode.window.showWarningMessage(brandMessage('Open a workspace before exporting an audit pack.'));
+ return;
+ }
+
+ const sessionId = this.session?.id ?? 'no-session';
+ const defaultUri = vscode.Uri.file(join(
+ workspace,
+ `.mitii/audit/mitii-audit-${sessionId}-${formatTimestampForFile(Date.now())}.zip`
+ ));
+ const target = await vscode.window.showSaveDialog({
+ defaultUri,
+ filters: { 'Zip archive': ['zip'] },
+ title: 'Export Mitii audit pack',
+ });
+ if (!target) return;
+
+ const config = this.configService.getConfig();
+ const pack = this.buildAuditPack(workspace, sessionId, config.enterprise.stripFileContentsFromAuditPacks);
+
+ mkdirSync(dirname(target.fsPath), { recursive: true });
+ await vscode.workspace.fs.writeFile(target, pack.buffer);
+ this.sessionLog.append('audit_export', 'Audit pack exported', {
+ path: target.fsPath,
+ entries: pack.entries,
+ redactionReport: pack.redactionReport,
+ });
+
+ const revealLabel = platformRevealLabel();
+ const choice = await vscode.window.showInformationMessage(
+ brandMessage(`Audit pack exported: ${target.fsPath}`),
+ revealLabel
+ );
+ if (choice === revealLabel) {
+ await vscode.commands.executeCommand('revealFileInOS', target);
+ }
+ }
+
+ private buildAuditPack(workspace: string, sessionId: string, stripFileContents: boolean): ReturnType {
+ const config = this.configService.getConfig();
+ return new AuditPackBuilder().build({
+ sessionId,
+ workspace,
+ extensionVersion: this.context.extension.packageJSON.version ?? '',
+ model: `${config.provider.type}/${config.provider.model}`,
+ logPath: this.sessionLog.getLogPath(),
+ summaryMarkdown: this.sessionLog.exportSummary(),
+ toolAudit: this.toolRuntime.getAuditLog(),
+ approvals: this.approvalQueue?.getPending() ?? [],
+ stripFileContents,
+ signingKey: process.env.MITII_AUDIT_SIGNING_KEY,
+ });
+ }
+
+ async generateChangelog(): Promise {
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace) {
+ void vscode.window.showWarningMessage(brandMessage('Open a workspace before generating a changelog.'));
+ return;
+ }
+ const collector = new GitHistoryCollector(workspace);
+ const latestTag = await collector.getLatestTag();
+ const commits = await collector.getCommitsSinceTag(latestTag ?? undefined);
+ const entry = generateChangelogEntry({
+ commits,
+ version: readPackageVersion(workspace),
+ date: new Date(),
+ });
+ const doc = await vscode.workspace.openTextDocument({ content: entry, language: 'markdown' });
+ await vscode.window.showTextDocument(doc, { preview: false });
+ }
+
+ async prepareRelease(): Promise {
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace) {
+ void vscode.window.showWarningMessage(brandMessage('Open a workspace before preparing a release.'));
+ return;
+ }
+ const collector = new GitHistoryCollector(workspace);
+ const latestTag = await collector.getLatestTag();
+ const commits = await collector.getCommitsSinceTag(latestTag ?? undefined);
+ const version = readPackageVersion(workspace);
+ const date = new Date();
+ const entry = generateChangelogEntry({ commits, version, date });
+ const notes = generateReleaseNotes({ commits, version, date });
+ const changelogPath = join(workspace, 'CHANGELOG.md');
+ const existing = existsSync(changelogPath) ? readFileSync(changelogPath, 'utf8') : '# Changelog\n\n## [Unreleased]\n';
+ writeFileSync(changelogPath, insertChangelogEntry(existing, entry), 'utf8');
+ const notesPath = join(workspace, '.mitii', 'release-notes.md');
+ mkdirSync(dirname(notesPath), { recursive: true });
+ writeFileSync(notesPath, notes, 'utf8');
+ void vscode.window.showInformationMessage(
+ brandMessage(`Prepared release ${version}. Updated CHANGELOG.md and .mitii/release-notes.md.`)
+ );
+ const doc = await vscode.workspace.openTextDocument(vscode.Uri.file(notesPath));
+ await vscode.window.showTextDocument(doc, { preview: false });
+ }
+
async openSessionLog(): Promise {
const logPath = this.sessionLog.getLogPath();
if (!logPath) {
@@ -1801,7 +2100,7 @@ export class ThunderController {
return this.chatOrchestrator?.hasSuspendState() ?? false;
}
- resumeAfterApproval(): AsyncIterable {
+ resumeAfterApproval(): AsyncIterable {
this.ensureChatOrchestrator();
if (!this.chatOrchestrator) {
return (async function* empty() {})();
@@ -1960,11 +2259,16 @@ export class ThunderController {
}
async testProviderConnection(settings?: ProviderSettingsPayload): Promise {
+ this.testingConnection = true;
+ this.notifyUi({ testingConnection: true });
+ try {
const config = this.configService.getConfig();
const apiKey = await this.configService.getApiKey();
const providerType = settings?.providerType ?? config.provider.type;
const baseUrl = settings?.baseUrl.trim() || config.provider.baseUrl;
const model = settings?.model.trim() || config.provider.model;
+ const apiVersion = settings?.apiVersion?.trim() || config.provider.apiVersion;
+ const region = settings?.region?.trim() || config.provider.region;
const requestedContextWindow = settings?.contextWindow
? Math.max(1024, Math.min(settings.contextWindow, 1_000_000))
: config.provider.contextWindow;
@@ -1974,6 +2278,31 @@ export class ThunderController {
requestedContextWindow,
config.provider.contextWindow
);
+ const validation = validateProviderSettings({
+ providerType,
+ baseUrl,
+ model,
+ apiVersion,
+ region,
+ contextWindow,
+ } as ProviderSettingsPayload);
+ if (!validation.ok) {
+ this.notifyUi({
+ settings: {
+ ...(await this.buildUiState()).settings,
+ providerType,
+ baseUrl,
+ model,
+ apiVersion,
+ region,
+ contextWindow,
+ connectionOk: false,
+ connectionStatus: validation.errors.join(' '),
+ },
+ testingConnection: false,
+ });
+ return;
+ }
if (providerType === 'echo') {
this.notifyUi({
@@ -1982,10 +2311,13 @@ export class ThunderController {
providerType,
baseUrl,
model,
+ apiVersion,
+ region,
contextWindow,
connectionOk: true,
connectionStatus: 'Echo mode — no LLM needed. Responses are mirrored for UI testing.',
},
+ testingConnection: false,
});
return;
}
@@ -1994,7 +2326,9 @@ export class ThunderController {
providerType as import('../config/schema').ProviderType,
baseUrl,
model,
- apiKey
+ apiKey,
+ apiVersion,
+ region
);
this.notifyUi({
@@ -2003,15 +2337,22 @@ export class ThunderController {
providerType,
baseUrl,
model,
+ apiVersion,
+ region,
contextWindow,
connectionOk: result.ok,
connectionStatus: result.message,
},
+ testingConnection: false,
});
if (!result.ok) {
void vscode.window.showErrorMessage(`${AGENT_NAME}: ${result.message}`);
}
+ } finally {
+ this.testingConnection = false;
+ this.notifyUi({ testingConnection: false });
+ }
}
async saveApiKey(key: string): Promise {
@@ -2030,6 +2371,18 @@ export class ThunderController {
}
async saveProviderSettings(settings: ProviderSettingsPayload): Promise {
+ const validation = validateProviderSettings(settings);
+ if (!validation.ok) {
+ void vscode.window.showErrorMessage(`${AGENT_NAME}: ${validation.errors.join(' ')}`);
+ this.notifyUi({
+ settings: {
+ ...(await this.buildUiState()).settings,
+ connectionOk: false,
+ connectionStatus: validation.errors.join(' '),
+ },
+ });
+ return;
+ }
await this.configService.updateProviderSettings(
normalizeProviderSettings(settings, this.configService.getConfig().provider.contextWindow)
);
@@ -2075,6 +2428,9 @@ export class ThunderController {
}
async saveAllSettings(settings: ThunderSettingsPayload): Promise {
+ this.settingsSaving = true;
+ this.notifyUi({ settingsSaving: true });
+ try {
const beforeConfig = this.configService.getConfig();
const normalized = normalizeThunderSettings(settings, beforeConfig.provider.contextWindow, this.mcpToggles);
@@ -2132,6 +2488,88 @@ export class ThunderController {
});
void vscode.window.showInformationMessage(brandMessage('Settings saved.'));
}
+ } finally {
+ this.settingsSaving = false;
+ this.notifyUi({
+ ...(await this.buildUiState(this.getPreservedUiBase())),
+ settingsSaving: false,
+ });
+ }
+ }
+
+ async saveProviderProfile(options: {
+ id?: string;
+ name?: string;
+ settings: ProviderSettingsPayload;
+ apiKey?: string;
+ }): Promise {
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace) {
+ throw new Error('Open a workspace to save provider profiles under .mitii/providers.');
+ }
+ const validation = validateProviderSettings(options.settings);
+ if (!validation.ok) {
+ throw new Error(validation.errors.join(' '));
+ }
+
+ if (!this.providerProfilesService) {
+ this.providerProfilesService = new ProviderProfilesService(workspace);
+ }
+
+ const profile = this.providerProfilesService.upsert(options.settings, {
+ id: options.id,
+ name: options.name,
+ apiKey: options.apiKey,
+ });
+
+ if (options.apiKey?.trim()) {
+ await this.configService.setApiKey(options.apiKey.trim(), providerSecretRef(profile.id));
+ }
+
+ await this.applyProviderProfile(profile.id);
+ }
+
+ async selectProviderProfile(id: string): Promise {
+ await this.applyProviderProfile(id);
+ }
+
+ async deleteProviderProfile(id: string): Promise {
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace || !this.providerProfilesService) return;
+ this.providerProfilesService.delete(id);
+ await this.configService.deleteApiKey(providerSecretRef(id));
+ this.notifyUi({ settings: (await this.buildUiState(this.getPreservedUiBase())).settings });
+ }
+
+ private async applyProviderProfile(id: string): Promise {
+ const workspace = this.resolveWorkspacePath();
+ if (!workspace) return;
+
+ if (!this.providerProfilesService) {
+ this.providerProfilesService = new ProviderProfilesService(workspace);
+ }
+
+ const profile = this.providerProfilesService.setActive(id);
+ if (!profile) return;
+
+ await this.configService.updateProviderSettings({
+ providerType: profile.providerType,
+ baseUrl: profile.baseUrl,
+ model: profile.model,
+ apiVersion: profile.apiVersion,
+ region: profile.region,
+ contextWindow: profile.contextWindow,
+ });
+
+ const config = this.configService.getConfig();
+ const apiKey = profile.hasApiKey
+ ? await this.configService.getApiKey(providerSecretRef(profile.id))
+ : await this.configService.getApiKey();
+ await this.providerRegistry.resolveFromConfig(config.provider, apiKey);
+ await this.refreshResearchAgentProvider();
+ this.chatOrchestrator?.configure({ researchAgentProvider: this.researchAgentProvider });
+ this.debouncedRebuildRetriever?.();
+ this.notifyUi({ settings: (await this.buildUiState(this.getPreservedUiBase())).settings });
}
private async reloadMcpServers(): Promise {
@@ -2147,6 +2585,7 @@ export class ThunderController {
filesystem: builtin.filesystem,
memory: builtin.memory,
sequentialThinking: builtin.sequentialThinking,
+ puppeteer: builtin.puppeteer ?? false,
};
}
@@ -2333,7 +2772,7 @@ export class ThunderController {
}
}
-function toApprovalView(r: import('../safety/ApprovalQueue').ApprovalRequest): ApprovalRequestView {
+export function toApprovalView(r: import('../safety/ApprovalQueue').ApprovalRequest): ApprovalRequestView {
return {
id: r.id,
toolName: r.toolName,
@@ -2348,6 +2787,24 @@ function toApprovalView(r: import('../safety/ApprovalQueue').ApprovalRequest): A
};
}
+function toPlanView(plan: import('../plans/PlanActEngine').ThunderPlan | null | undefined): PlanView | null {
+ if (!plan) return null;
+ const stepStatus = new Map(plan.steps.map((step) => [step.id, step.status]));
+ return {
+ ...plan,
+ steps: plan.steps.map((step) => ({ ...step })),
+ phases: plan.phases?.map((phase) => ({
+ id: phase.id,
+ title: phase.title,
+ phase: phase.phase,
+ steps: phase.steps.map((step) => ({
+ ...step,
+ status: stepStatus.get(step.id) ?? 'pending',
+ })),
+ })),
+ };
+}
+
function normalizePromptBreakdown(
breakdown: TokenUsageBreakdownItem[],
promptTokens: number
@@ -2369,3 +2826,36 @@ function normalizePromptBreakdown(
},
];
}
+
+function readPackageVersion(workspace: string): string {
+ try {
+ const pkg = JSON.parse(readFileSync(join(workspace, 'package.json'), 'utf8')) as { version?: string };
+ return pkg.version ?? '0.0.0';
+ } catch {
+ return '0.0.0';
+ }
+}
+
+function formatTimestampForFile(ts: number): string {
+ const d = new Date(ts);
+ const pad = (n: number) => String(n).padStart(2, '0');
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`;
+}
+
+function platformRevealLabel(): string {
+ if (process.platform === 'darwin') return 'Reveal in Finder';
+ if (process.platform === 'win32') return 'Reveal in Explorer';
+ return 'Reveal in File Manager';
+}
+
+function enforceEnterpriseProviderPolicy(localOnly: boolean, providerType: string, baseUrl: string): void {
+ if (!localOnly) return;
+ const url = baseUrl.trim().toLowerCase();
+ const localUrl = /^(http:\/\/)?(localhost|127\.0\.0\.1|0\.0\.0\.0)(?::|\/|$)/.test(url) ||
+ url.startsWith('http://[::1]');
+ if (providerType === 'echo') return;
+ if (providerType === 'openai-compatible' && localUrl) return;
+ throw normalizeError(new Error(
+ 'Enterprise local-providers-only policy is enabled. Choose Echo or a localhost OpenAI-compatible provider.'
+ ));
+}
diff --git a/src/core/audit/AuditPackBuilder.ts b/src/core/audit/AuditPackBuilder.ts
new file mode 100644
index 00000000..e98610f6
--- /dev/null
+++ b/src/core/audit/AuditPackBuilder.ts
@@ -0,0 +1,302 @@
+import { existsSync, readFileSync } from 'fs';
+import { createHmac, createHash } from 'crypto';
+import { basename } from 'path';
+import type { ToolCallAudit } from '../tools/types';
+
+export interface AuditPackManifest {
+ sessionId: string;
+ workspace: string;
+ extensionVersion: string;
+ model?: string;
+ createdAt: string;
+ logPath?: string;
+ eventCount: number;
+}
+
+export interface AuditPackInput {
+ sessionId: string;
+ workspace: string;
+ extensionVersion: string;
+ model?: string;
+ logPath?: string;
+ summaryMarkdown: string;
+ toolAudit?: ToolCallAudit[];
+ approvals?: unknown[];
+ stripFileContents?: boolean;
+ signingKey?: string;
+}
+
+export interface AuditPackBuildResult {
+ buffer: Buffer;
+ manifest: AuditPackManifest;
+ redactionReport: RedactionReport;
+ entries: string[];
+}
+
+export interface RedactionReport {
+ secretKeyRedactions: number;
+ longValueTruncations: number;
+ fileContentStrips: number;
+}
+
+export class AuditPackBuilder {
+ build(input: AuditPackInput): AuditPackBuildResult {
+ const report: RedactionReport = {
+ secretKeyRedactions: 0,
+ longValueTruncations: 0,
+ fileContentStrips: 0,
+ };
+ const sessionJsonl = input.logPath && existsSync(input.logPath)
+ ? sanitizeJsonl(readFileSync(input.logPath, 'utf8'), report, input.stripFileContents)
+ : '';
+ const eventCount = sessionJsonl.trim() ? sessionJsonl.trim().split(/\r?\n/).length : 0;
+ const manifest: AuditPackManifest = {
+ sessionId: input.sessionId,
+ workspace: input.workspace,
+ extensionVersion: input.extensionVersion,
+ model: input.model,
+ createdAt: new Date().toISOString(),
+ logPath: input.logPath ? basename(input.logPath) : undefined,
+ eventCount,
+ };
+ const files: Record = {
+ 'session.jsonl': sessionJsonl,
+ 'summary.md': input.summaryMarkdown,
+ 'manifest.json': JSON.stringify(manifest, null, 2),
+ 'tool-audit.json': JSON.stringify(sanitizeValue(input.toolAudit ?? [], report, input.stripFileContents), null, 2),
+ 'approvals.json': JSON.stringify(sanitizeValue(input.approvals ?? [], report, input.stripFileContents), null, 2),
+ 'redaction-report.json': JSON.stringify(report, null, 2),
+ };
+ files['signature.json'] = JSON.stringify(createSignature(hashFiles(files), input.signingKey), null, 2);
+ return {
+ buffer: createZip(files),
+ manifest,
+ redactionReport: report,
+ entries: Object.keys(files),
+ };
+ }
+}
+
+export interface AuditSignature {
+ algorithm: 'sha256' | 'hmac-sha256';
+ createdAt: string;
+ signedFiles: Record;
+ signature: string;
+}
+
+export interface AuditVerificationResult {
+ ok: boolean;
+ errors: string[];
+ entries: string[];
+}
+
+export function verifyAuditPack(buffer: Buffer, signingKey?: string): AuditVerificationResult {
+ const entries = readZipEntries(buffer);
+ const signatureText = entries['signature.json'];
+ if (!signatureText) {
+ return { ok: false, errors: ['signature.json is missing'], entries: Object.keys(entries) };
+ }
+ const errors: string[] = [];
+ let signature: AuditSignature;
+ try {
+ signature = JSON.parse(signatureText) as AuditSignature;
+ } catch {
+ return { ok: false, errors: ['signature.json is malformed'], entries: Object.keys(entries) };
+ }
+
+ for (const [name, expectedHash] of Object.entries(signature.signedFiles ?? {})) {
+ const content = entries[name];
+ if (content === undefined) {
+ errors.push(`${name} is missing`);
+ continue;
+ }
+ const actualHash = sha256(content);
+ if (actualHash !== expectedHash) {
+ errors.push(`${name} hash mismatch`);
+ }
+ }
+
+ const expectedSignature = createSignature(signature.signedFiles, signingKey).signature;
+ if (signature.signature !== expectedSignature) {
+ errors.push('signature mismatch');
+ }
+
+ return { ok: errors.length === 0, errors, entries: Object.keys(entries) };
+}
+
+function createSignature(fileHashes: Record, signingKey?: string): AuditSignature {
+ const canonical = JSON.stringify(Object.keys(fileHashes).sort().map((name) => [name, fileHashes[name]]));
+ const key = signingKey || '';
+ return {
+ algorithm: key ? 'hmac-sha256' : 'sha256',
+ createdAt: new Date().toISOString(),
+ signedFiles: fileHashes,
+ signature: key
+ ? createHmac('sha256', key).update(canonical).digest('hex')
+ : sha256(canonical),
+ };
+}
+
+function hashFiles(files: Record): Record {
+ return Object.fromEntries(
+ Object.entries(files).map(([name, content]) => [name, sha256(content)])
+ );
+}
+
+function sha256(content: string | Buffer): string {
+ return createHash('sha256').update(content).digest('hex');
+}
+
+function sanitizeJsonl(jsonl: string, report: RedactionReport, stripFileContents = false): string {
+ return jsonl
+ .split(/\r?\n/)
+ .filter(Boolean)
+ .map((line) => {
+ try {
+ return JSON.stringify(sanitizeValue(JSON.parse(line), report, stripFileContents));
+ } catch {
+ return '[malformed log line omitted]';
+ }
+ })
+ .join('\n') + (jsonl.trim() ? '\n' : '');
+}
+
+function sanitizeValue(value: unknown, report: RedactionReport, stripFileContents = false): unknown {
+ if (Array.isArray(value)) return value.map((item) => sanitizeValue(item, report, stripFileContents));
+ if (typeof value === 'string') {
+ if (looksLikeSecret(value)) {
+ report.secretKeyRedactions += 1;
+ return '[REDACTED]';
+ }
+ if (value.length > 8000) {
+ report.longValueTruncations += 1;
+ return `${value.slice(0, 8000)}... [truncated ${value.length - 8000} chars]`;
+ }
+ return value;
+ }
+ if (!value || typeof value !== 'object') return value;
+ const out: Record = {};
+ for (const [key, nested] of Object.entries(value as Record)) {
+ if (shouldRedactKey(key)) {
+ report.secretKeyRedactions += 1;
+ out[key] = '[REDACTED]';
+ } else if (stripFileContents && /^(content|fileContent|output|outputPreview)$/i.test(key) && typeof nested === 'string') {
+ report.fileContentStrips += 1;
+ out[key] = `[stripped ${nested.length} chars]`;
+ } else {
+ out[key] = sanitizeValue(nested, report, stripFileContents);
+ }
+ }
+ return out;
+}
+
+function shouldRedactKey(key: string): boolean {
+ const lower = key.toLowerCase();
+ return lower.includes('apikey') ||
+ lower.includes('api_key') ||
+ lower === 'authorization' ||
+ lower.includes('secret') ||
+ lower.includes('password') ||
+ lower === 'token' ||
+ lower === 'accesstoken' ||
+ lower === 'refreshtoken';
+}
+
+function looksLikeSecret(value: string): boolean {
+ return /\b(sk-[A-Za-z0-9_-]{12,}|ghp_[A-Za-z0-9_]{20,}|Bearer\s+[A-Za-z0-9._-]{16,})\b/.test(value);
+}
+
+function createZip(files: Record): Buffer {
+ const localParts: Buffer[] = [];
+ const centralParts: Buffer[] = [];
+ let offset = 0;
+
+ for (const [name, content] of Object.entries(files)) {
+ const nameBuf = Buffer.from(name.replace(/\\/g, '/'));
+ const data = Buffer.from(content, 'utf8');
+ const crc = crc32(data);
+ const local = Buffer.alloc(30);
+ local.writeUInt32LE(0x04034b50, 0);
+ local.writeUInt16LE(20, 4);
+ local.writeUInt16LE(0, 6);
+ local.writeUInt16LE(0, 8);
+ local.writeUInt16LE(0, 10);
+ local.writeUInt16LE(0, 12);
+ local.writeUInt32LE(crc, 14);
+ local.writeUInt32LE(data.length, 18);
+ local.writeUInt32LE(data.length, 22);
+ local.writeUInt16LE(nameBuf.length, 26);
+ local.writeUInt16LE(0, 28);
+ localParts.push(local, nameBuf, data);
+
+ const central = Buffer.alloc(46);
+ central.writeUInt32LE(0x02014b50, 0);
+ central.writeUInt16LE(20, 4);
+ central.writeUInt16LE(20, 6);
+ central.writeUInt16LE(0, 8);
+ central.writeUInt16LE(0, 10);
+ central.writeUInt16LE(0, 12);
+ central.writeUInt16LE(0, 14);
+ central.writeUInt32LE(crc, 16);
+ central.writeUInt32LE(data.length, 20);
+ central.writeUInt32LE(data.length, 24);
+ central.writeUInt16LE(nameBuf.length, 28);
+ central.writeUInt16LE(0, 30);
+ central.writeUInt16LE(0, 32);
+ central.writeUInt16LE(0, 34);
+ central.writeUInt16LE(0, 36);
+ central.writeUInt32LE(0, 38);
+ central.writeUInt32LE(offset, 42);
+ centralParts.push(central, nameBuf);
+ offset += local.length + nameBuf.length + data.length;
+ }
+
+ const centralDir = Buffer.concat(centralParts);
+ const end = Buffer.alloc(22);
+ end.writeUInt32LE(0x06054b50, 0);
+ end.writeUInt16LE(0, 4);
+ end.writeUInt16LE(0, 6);
+ end.writeUInt16LE(Object.keys(files).length, 8);
+ end.writeUInt16LE(Object.keys(files).length, 10);
+ end.writeUInt32LE(centralDir.length, 12);
+ end.writeUInt32LE(offset, 16);
+ end.writeUInt16LE(0, 20);
+ return Buffer.concat([...localParts, centralDir, end]);
+}
+
+function readZipEntries(buffer: Buffer): Record {
+ const entries: Record = {};
+ let offset = 0;
+ while (offset + 30 <= buffer.length && buffer.readUInt32LE(offset) === 0x04034b50) {
+ const compressionMethod = buffer.readUInt16LE(offset + 8);
+ const compressedSize = buffer.readUInt32LE(offset + 18);
+ const fileNameLength = buffer.readUInt16LE(offset + 26);
+ const extraLength = buffer.readUInt16LE(offset + 28);
+ const nameStart = offset + 30;
+ const dataStart = nameStart + fileNameLength + extraLength;
+ const dataEnd = dataStart + compressedSize;
+ if (dataEnd > buffer.length) break;
+ const name = buffer.slice(nameStart, nameStart + fileNameLength).toString('utf8');
+ if (compressionMethod === 0) {
+ entries[name] = buffer.slice(dataStart, dataEnd).toString('utf8');
+ }
+ offset = dataEnd;
+ }
+ return entries;
+}
+
+function crc32(buffer: Buffer): number {
+ let crc = 0xffffffff;
+ for (const byte of buffer) {
+ crc = (crc >>> 8) ^ CRC_TABLE[(crc ^ byte) & 0xff];
+ }
+ return (crc ^ 0xffffffff) >>> 0;
+}
+
+const CRC_TABLE = Array.from({ length: 256 }, (_, n) => {
+ let c = n;
+ for (let k = 0; k < 8; k++) {
+ c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
+ }
+ return c >>> 0;
+});
diff --git a/src/core/audit/index.ts b/src/core/audit/index.ts
new file mode 100644
index 00000000..a47e15e9
--- /dev/null
+++ b/src/core/audit/index.ts
@@ -0,0 +1,2 @@
+export * from './AuditPackBuilder';
+
diff --git a/src/core/config/schema.ts b/src/core/config/schema.ts
index cdb12cf3..194d35ac 100644
--- a/src/core/config/schema.ts
+++ b/src/core/config/schema.ts
@@ -2,7 +2,10 @@ import { z } from 'zod';
export const ProviderTypeSchema = z.enum([
'openai-compatible',
+ 'openrouter',
'openai',
+ 'azure-openai',
+ 'bedrock',
'anthropic',
'gemini',
'deepseek',
@@ -15,11 +18,15 @@ export const ProviderConfigSchema = z.object({
type: ProviderTypeSchema.default('echo'),
baseUrl: z.string().url().default('http://localhost:11434/v1'),
model: z.string().default('qwen3-coder:30b'),
+ apiVersion: z.string().default('2024-10-21'),
+ region: z.string().default('us-east-1'),
apiKeyRef: z.string().default('thunder.apiKey'),
contextWindow: z.number().int().positive().default(8192),
supportsStreaming: z.boolean().default(true),
supportsTools: z.boolean().default(true),
supportsEmbeddings: z.boolean().default(false),
+ supportsVision: z.boolean().optional(),
+ supportsReasoning: z.boolean().optional(),
});
export const EmbeddingProviderSchema = z.enum(['hash', 'minilm']).default('minilm');
@@ -43,6 +50,18 @@ export const ContextConfigSchema = z.object({
rerankerEnabled: z.boolean().default(true),
rerankerCandidatePool: z.number().int().min(5).max(50).default(20),
rerankerTopK: z.number().int().min(3).max(30).default(8),
+ microTaskRoutingEnabled: z.boolean().default(true),
+});
+
+export const UiConfigSchema = z.object({
+ showReasoning: z.boolean().default(true),
+ reasoningPreviewMaxChars: z.number().int().min(0).max(100_000).default(8000),
+});
+
+export const EnterpriseConfigSchema = z.object({
+ localProvidersOnly: z.boolean().default(false),
+ stripFileContentsFromAuditPacks: z.boolean().default(false),
+ autoExportAuditPackOnSessionEnd: z.boolean().default(false),
});
export const AgentDepthSchema = z.enum(['auto', 'quick', 'standard', 'deep', 'pilot', 'enterprise']);
@@ -121,6 +140,7 @@ export const BuiltinMcpTogglesSchema = z.object({
filesystem: z.boolean().default(true),
memory: z.boolean().default(true),
sequentialThinking: z.boolean().default(true),
+ puppeteer: z.boolean().default(false),
});
export const McpConfigSchema = z.object({
@@ -149,6 +169,9 @@ export const TelemetryConfigSchema = z.object({
sessionLogging: z.boolean().default(true),
/** Extra diagnostics: tool inputs, context sources, LLM step metadata. Off by default for speed. */
debugMetrics: z.boolean().default(false),
+ webhookUrl: z.string().default(''),
+ webhookSecret: z.string().default(''),
+ webhookTimeoutMs: z.number().int().min(1000).max(60_000).default(5000),
});
export const ThunderConfigSchema = z.object({
@@ -164,6 +187,8 @@ export const ThunderConfigSchema = z.object({
scm: ScmConfigSchema.default({}),
github: GitHubConfigSchema.default({}),
telemetry: TelemetryConfigSchema.default({}),
+ ui: UiConfigSchema.default({}),
+ enterprise: EnterpriseConfigSchema.default({}),
});
export type ProviderType = z.infer;
@@ -172,6 +197,8 @@ export type EmbeddingProviderKind = z.infer;
export type VectorBackendKind = z.infer;
export type IndexingConfig = z.infer;
export type ContextConfig = z.infer;
+export type UiConfig = z.infer;
+export type EnterpriseConfig = z.infer;
export type SafetyConfig = z.infer;
export type MemoryConfig = z.infer;
export type AgentDepth = z.infer;
diff --git a/src/core/config/ui/mappers.ts b/src/core/config/ui/mappers.ts
index 4545c4e1..3e226961 100644
--- a/src/core/config/ui/mappers.ts
+++ b/src/core/config/ui/mappers.ts
@@ -23,7 +23,7 @@ export function normalizeProviderSettings(
previousContextWindow: number
): ProviderSettingsPayload {
const model = settings.model.trim();
- return {
+ const normalized: ProviderSettingsPayload = {
providerType: settings.providerType,
baseUrl: settings.baseUrl.trim(),
model,
@@ -34,6 +34,53 @@ export function normalizeProviderSettings(
previousContextWindow
),
};
+ if (settings.apiVersion !== undefined) {
+ normalized.apiVersion = settings.apiVersion.trim();
+ }
+ if (settings.region !== undefined) {
+ normalized.region = settings.region.trim();
+ }
+ return normalized;
+}
+
+export interface ProviderValidationResult {
+ ok: boolean;
+ errors: string[];
+}
+
+export function validateProviderSettings(settings: ProviderSettingsPayload): ProviderValidationResult {
+ const errors: string[] = [];
+ const providerType = settings.providerType;
+ const baseUrl = settings.baseUrl.trim();
+ const model = settings.model.trim();
+
+ if (providerType !== 'echo' && !baseUrl) {
+ errors.push('API base URL is required.');
+ }
+ if (providerType !== 'echo' && baseUrl) {
+ try {
+ const url = new URL(baseUrl);
+ if (!['http:', 'https:'].includes(url.protocol)) {
+ errors.push('API base URL must use http or https.');
+ }
+ } catch {
+ errors.push('API base URL must be a valid URL.');
+ }
+ }
+ if (!model) {
+ errors.push(providerType === 'azure-openai' ? 'Azure deployment name is required.' : 'Model is required.');
+ }
+ if (providerType === 'azure-openai' && !settings.apiVersion?.trim()) {
+ errors.push('Azure API version is required.');
+ }
+ if (providerType === 'bedrock' && !settings.region?.trim()) {
+ errors.push('AWS region is required.');
+ }
+ if (!Number.isFinite(settings.contextWindow) || settings.contextWindow < 1024) {
+ errors.push('Context window must be at least 1024 tokens.');
+ }
+
+ return { ok: errors.length === 0, errors };
}
export function normalizeAgentSettings(settings: AgentSettingsPayload): AgentSettingsPayload {
diff --git a/src/core/config/ui/payloads.ts b/src/core/config/ui/payloads.ts
index 3f9c1a00..b524f2a8 100644
--- a/src/core/config/ui/payloads.ts
+++ b/src/core/config/ui/payloads.ts
@@ -4,7 +4,10 @@ export type AgentDepthView = 'auto' | 'quick' | 'standard' | 'deep' | 'pilot' |
export type ProviderTypeView =
| 'echo'
| 'openai-compatible'
+ | 'openrouter'
| 'openai'
+ | 'azure-openai'
+ | 'bedrock'
| 'anthropic'
| 'gemini'
| 'deepseek'
@@ -15,6 +18,8 @@ export interface ProviderSettingsPayload {
providerType: ProviderTypeView;
baseUrl: string;
model: string;
+ apiVersion?: string;
+ region?: string;
contextWindow: number;
}
@@ -49,6 +54,7 @@ export interface McpToggles {
filesystem: boolean;
memory: boolean;
sequentialThinking: boolean;
+ puppeteer: boolean;
}
export interface McpCustomServerView {
@@ -73,6 +79,9 @@ export interface McpSettingsPayload {
export interface TelemetrySettingsPayload {
sessionLogging: boolean;
debugMetrics: boolean;
+ webhookUrl?: string;
+ webhookSecret?: string;
+ webhookTimeoutMs?: number;
}
export interface IndexingSettingsPayload {
diff --git a/src/core/config/vscode/read.ts b/src/core/config/vscode/read.ts
index f14bb0db..caa06cd3 100644
--- a/src/core/config/vscode/read.ts
+++ b/src/core/config/vscode/read.ts
@@ -14,11 +14,15 @@ export function readThunderConfigFromSettings(): ThunderConfig {
type: config.get('provider.type'),
baseUrl: config.get('provider.baseUrl'),
model: config.get('provider.model'),
+ apiVersion: config.get('provider.apiVersion'),
+ region: config.get('provider.region'),
apiKeyRef: config.get('provider.apiKeyRef'),
contextWindow: config.get('provider.contextWindow'),
supportsStreaming: config.get('provider.supportsStreaming'),
supportsTools: config.get('provider.supportsTools'),
supportsEmbeddings: config.get('provider.supportsEmbeddings'),
+ supportsVision: config.get('provider.supportsVision'),
+ supportsReasoning: config.get('provider.supportsReasoning'),
},
indexing: {
enabled: config.get('indexing.enabled'),
@@ -37,6 +41,7 @@ export function readThunderConfigFromSettings(): ThunderConfig {
rerankerEnabled: config.get('context.rerankerEnabled'),
rerankerCandidatePool: config.get('context.rerankerCandidatePool'),
rerankerTopK: config.get('context.rerankerTopK'),
+ microTaskRoutingEnabled: config.get('context.microTaskRoutingEnabled'),
},
safety: {
requireApprovalForWrites: config.get('safety.requireApprovalForWrites'),
@@ -103,6 +108,18 @@ export function readThunderConfigFromSettings(): ThunderConfig {
telemetry: {
sessionLogging: config.get('telemetry.sessionLogging'),
debugMetrics: config.get('telemetry.debugMetrics'),
+ webhookUrl: config.get('telemetry.webhookUrl'),
+ webhookSecret: config.get('telemetry.webhookSecret'),
+ webhookTimeoutMs: config.get('telemetry.webhookTimeoutMs'),
+ },
+ ui: {
+ showReasoning: config.get('ui.showReasoning'),
+ reasoningPreviewMaxChars: config.get('ui.reasoningPreviewMaxChars'),
+ },
+ enterprise: {
+ localProvidersOnly: config.get('enterprise.localProvidersOnly'),
+ stripFileContentsFromAuditPacks: config.get('enterprise.stripFileContentsFromAuditPacks'),
+ autoExportAuditPackOnSessionEnd: config.get('enterprise.autoExportAuditPackOnSessionEnd'),
},
};
diff --git a/src/core/config/vscode/write.ts b/src/core/config/vscode/write.ts
index 2232b1cf..663d25f4 100644
--- a/src/core/config/vscode/write.ts
+++ b/src/core/config/vscode/write.ts
@@ -17,6 +17,12 @@ export async function updateProviderSettings(settings: ProviderSettingsPayload):
await config.update('provider.type', settings.providerType, target);
await config.update('provider.baseUrl', settings.baseUrl.trim(), target);
await config.update('provider.model', settings.model.trim(), target);
+ if (settings.apiVersion !== undefined) {
+ await config.update('provider.apiVersion', settings.apiVersion.trim(), target);
+ }
+ if (settings.region !== undefined) {
+ await config.update('provider.region', settings.region.trim(), target);
+ }
await config.update('provider.contextWindow', settings.contextWindow, target);
}
@@ -80,6 +86,15 @@ export async function updateTelemetrySettings(settings: TelemetrySettingsPayload
const target = vscode.ConfigurationTarget.Global;
await config.update('telemetry.sessionLogging', settings.sessionLogging, target);
await config.update('telemetry.debugMetrics', settings.debugMetrics, target);
+ if (settings.webhookUrl !== undefined) {
+ await config.update('telemetry.webhookUrl', settings.webhookUrl.trim(), target);
+ }
+ if (settings.webhookSecret !== undefined) {
+ await config.update('telemetry.webhookSecret', settings.webhookSecret, target);
+ }
+ if (settings.webhookTimeoutMs !== undefined) {
+ await config.update('telemetry.webhookTimeoutMs', settings.webhookTimeoutMs, target);
+ }
}
export async function updateAllSettings(settings: ThunderSettingsPayload): Promise {
diff --git a/src/core/headless/AgentRunner.ts b/src/core/headless/AgentRunner.ts
new file mode 100644
index 00000000..55b49ede
--- /dev/null
+++ b/src/core/headless/AgentRunner.ts
@@ -0,0 +1,108 @@
+import { createProvider } from '../llm/createProvider';
+import type { ProviderType } from '../config/schema';
+import type { ChatDelta, LlmProvider } from '../llm/types';
+import { getProviderPreset } from '../llm/providerPresets';
+
+export interface HeadlessRunnerOptions {
+ cwd: string;
+ providerType?: ProviderType;
+ baseUrl?: string;
+ model?: string;
+ apiKey?: string;
+ approval?: 'auto' | 'manual';
+ json?: boolean;
+}
+
+export interface HeadlessPlan {
+ goal: string;
+ cwd: string;
+ provider: string;
+ model: string;
+ approval: 'auto' | 'manual';
+ steps: Array<{ id: string; title: string; risk: 'low' | 'medium' | 'high'; readOnly: boolean }>;
+}
+
+export class HeadlessAgentRunner {
+ private readonly provider: LlmProvider;
+ private readonly providerType: ProviderType;
+ private readonly model: string;
+ private readonly approval: 'auto' | 'manual';
+
+ constructor(private readonly options: HeadlessRunnerOptions) {
+ this.providerType = options.providerType ?? 'echo';
+ const preset = getProviderPreset(this.providerType);
+ this.model = options.model ?? preset?.model ?? 'echo';
+ this.approval = options.approval ?? 'manual';
+ this.provider = createProvider({
+ type: this.providerType,
+ baseUrl: options.baseUrl ?? preset?.baseUrl,
+ model: this.model,
+ contextWindow: preset?.contextWindow,
+ supportsStreaming: true,
+ supportsTools: false,
+ supportsEmbeddings: false,
+ }, options.apiKey ?? resolveApiKey(this.providerType));
+ }
+
+ async ask(prompt: string): Promise {
+ return this.complete([
+ {
+ role: 'system',
+ content: [
+ 'You are Mitii headless ask mode.',
+ 'Answer in concise Markdown.',
+ 'Do not claim to have edited files or used VS Code APIs.',
+ ].join('\n'),
+ },
+ { role: 'user', content: prompt },
+ ]);
+ }
+
+ plan(prompt: string): HeadlessPlan {
+ return {
+ goal: prompt,
+ cwd: this.options.cwd,
+ provider: this.providerType,
+ model: this.model,
+ approval: this.approval,
+ steps: [
+ { id: 'discover', title: 'Inspect the repository context relevant to the request', risk: 'low', readOnly: true },
+ { id: 'design', title: 'Identify files, interfaces, and tests that need changes', risk: 'low', readOnly: true },
+ { id: 'execute', title: 'Apply scoped changes in the VS Code extension runtime or a future tool-enabled headless loop', risk: 'medium', readOnly: false },
+ { id: 'verify', title: 'Run focused tests and summarize residual risk', risk: 'low', readOnly: true },
+ ],
+ };
+ }
+
+ async *agent(prompt: string): AsyncIterable<{ type: string; message?: string; plan?: HeadlessPlan; content?: string }> {
+ yield { type: 'start', message: 'headless agent started' };
+ const plan = this.plan(prompt);
+ yield { type: 'plan', plan };
+ const content = await this.ask([
+ prompt,
+ '',
+ 'Headless agent mode has no filesystem write tools in this runtime. Provide the best implementation guidance and verification checklist.',
+ ].join('\n'));
+ yield { type: 'assistant_delta', content };
+ yield { type: 'end', message: 'headless agent completed' };
+ }
+
+ private async complete(messages: Array<{ role: 'system' | 'user'; content: string }>): Promise {
+ let content = '';
+ for await (const delta of this.provider.complete({ messages, stream: true })) {
+ content += deltaContent(delta);
+ }
+ return content;
+ }
+}
+
+function deltaContent(delta: ChatDelta): string {
+ return delta.content ?? '';
+}
+
+function resolveApiKey(providerType: ProviderType): string | undefined {
+ if (providerType === 'anthropic') return process.env.ANTHROPIC_API_KEY ?? process.env.MITII_API_KEY;
+ if (providerType === 'gemini') return process.env.GEMINI_API_KEY ?? process.env.MITII_API_KEY;
+ if (providerType === 'openrouter') return process.env.OPENROUTER_API_KEY ?? process.env.MITII_API_KEY;
+ return process.env.MITII_API_KEY ?? process.env.OPENAI_API_KEY;
+}
diff --git a/src/core/headless/HeadlessAgentHost.ts b/src/core/headless/HeadlessAgentHost.ts
new file mode 100644
index 00000000..7c83845b
--- /dev/null
+++ b/src/core/headless/HeadlessAgentHost.ts
@@ -0,0 +1,549 @@
+import { join } from 'path';
+import { ThunderSession, type ThunderMode } from '../session/ThunderSession';
+import { IndexService } from '../indexing/IndexService';
+import { IgnoreService } from '../indexing/IgnoreService';
+import { WorkspaceScanner } from '../indexing/WorkspaceScanner';
+import { IndexQueue } from '../indexing/IndexQueue';
+import { FtsIndex } from '../indexing/FtsIndex';
+import { HybridRetriever } from '../context/HybridRetriever';
+import { createContextReranker } from '../context/ContextReranker';
+import { ContextBudgeter } from '../context/ContextBudgeter';
+import { CurrentEditorContextSource, OpenFilesContextSource } from '../context/sources/editorSources';
+import { FtsContextSource, RepoMapContextSource, MemoryContextSource, WorkspaceOverviewContextSource } from '../context/sources/indexSources';
+import { IndexedFileSearchContextSource } from '../context/sources/indexedFileSource';
+import { MentionedFileContextSource } from '../context/sources/mentionedFileSource';
+import { GitService } from '../context/GitService';
+import { GitDiffContextSource } from '../context/DiagnosticsService';
+import { RepoMapService } from '../context/RepoMapService';
+import { setVerifyCommandPatterns } from '../plans/PlanActEngine';
+import { ChatOrchestrator } from '../orchestration/ChatOrchestrator';
+import { ToolRuntime } from '../tools/ToolRuntime';
+import {
+ createReadFileTool, createReadFilesTool, createListFilesTool, createSearchTool,
+ createSearchBatchTool, createSearchScriptCatalogTool, createSpawnResearchAgentTool,
+ createExecuteWorkspaceScriptTool, createUseSkillTool,
+ createRepoMapTool, createRetrieveContextTool, createGitDiffTool,
+ createDiagnosticsTool, createWriteFileTool, createApplyPatchTool, createRunCommandTool,
+ createMemorySearchTool, createMemoryWriteTool, createSaveTaskStateTool,
+ createFetchWebTool, createAskQuestionTool, createProjectCatalogTool, createAnalyzeChangeImpactTool,
+ setSubagentTracker,
+} from '../tools/builtinTools';
+import { ProjectCatalogContextSource, discoverProjectCatalog, saveProjectCatalog } from '../modes/ask';
+import { createMarkStepCompleteTool, createProposePlanMutationTool } from '../tools/planTools';
+import type { AssistantStreamChunk, LlmProvider } from '../llm/types';
+import { createProvider } from '../llm/createProvider';
+import { scaffoldMitiiWorkspace } from '../mcp/scaffoldMitiiWorkspace';
+import { AgentTaskState } from '../runtime/AgentTaskState';
+import {
+ resolveProjectVerifyCommands,
+ formatVerifyPlanForAgent,
+} from '../runtime/verifyCommandDiscovery';
+import { ToolPolicyEngine } from '../safety/ToolPolicyEngine';
+import { resolveEffectiveSafety } from '../safety/autonomyPresets';
+import { ApprovalQueue } from '../safety/ApprovalQueue';
+import { ToolExecutor } from '../safety/ToolExecutor';
+import { MemoryService } from '../memory/MemoryService';
+import { SessionService } from '../session/SessionService';
+import { PlanPersistence } from '../plans/PlanPersistence';
+import { PlanFileStore } from '../plans/PlanFileStore';
+import { MemoryExtractor } from '../runtime/MemoryExtractor';
+import { SubagentTracker } from '../runtime/SubagentTracker';
+import { PassiveMemoryInjector } from '../memory/PassiveMemoryInjector';
+import { MemoryHookService } from '../memory/MemoryHookService';
+import { PostEditValidator } from '../apply/PostEditValidator';
+import { McpManager } from '../mcp/McpManager';
+import { ProjectRulesContextSource, ProjectRulesService } from '../rules/ProjectRulesService';
+import { SkillCatalogContextSource, SkillCatalogService } from '../skills/SkillCatalogService';
+import { createLogger } from '../telemetry/Logger';
+import { SessionLogService } from '../telemetry/SessionLogService';
+import { MicroTaskExecutor } from '../microtasks';
+import { HeadlessAgentRunner, type HeadlessPlan } from './AgentRunner';
+import {
+ buildHeadlessConfig,
+ resolveApiKey,
+ resolveMitiiPackageRoot,
+ type HeadlessAgentOptions,
+} from './HeadlessConfig';
+import { HeadlessDiagnosticsService, HeadlessDiagnosticsContextSource } from './HeadlessDiagnosticsService';
+import { headlessDiscoverFiles } from './headlessDiscoverFiles';
+import { defaultMcpToggles } from '../mcp/mcpToggles';
+import type { ThunderConfig } from '../config/schema';
+import { chunkContent } from '../llm/streamChunks';
+
+const log = createLogger('HeadlessAgentHost');
+
+const AUTO_GRANT_TOOLS = [
+ 'write_file', 'apply_patch', 'run_command', 'ask_question', 'memory_write',
+] as const;
+
+export interface HeadlessRunMetrics {
+ durationMs: number;
+ toolCalls: number;
+ errors: string[];
+ sessionLogPath?: string;
+ auditTools: string[];
+}
+
+export class HeadlessAgentHost {
+ private readonly options: HeadlessAgentOptions;
+ private readonly config: ThunderConfig;
+ private readonly packageRoot: string;
+ private readonly stubRunner: HeadlessAgentRunner;
+ private initialized = false;
+
+ private indexService?: IndexService;
+ private ignoreService = new IgnoreService();
+ private scanner?: WorkspaceScanner;
+ private indexQueue?: IndexQueue;
+ private gitService?: GitService;
+ private skillCatalogService?: SkillCatalogService;
+ private memoryService?: MemoryService;
+ private diagnosticsService = new HeadlessDiagnosticsService();
+ private postEditValidator?: PostEditValidator;
+ private sessionService?: SessionService;
+ private planPersistence?: PlanPersistence;
+ private approvalQueue?: ApprovalQueue;
+ private policyEngine?: ToolPolicyEngine;
+ private toolRuntime = new ToolRuntime();
+ private toolExecutor?: ToolExecutor;
+ private chatOrchestrator?: ChatOrchestrator;
+ private memoryExtractor?: MemoryExtractor;
+ private mcpManager = new McpManager();
+ private sessionLog = new SessionLogService();
+ private subagentTracker = new SubagentTracker();
+ private agentTaskState = new AgentTaskState();
+ private session?: ThunderSession;
+ private provider?: LlmProvider;
+
+ constructor(options: HeadlessAgentOptions) {
+ this.options = options;
+ this.packageRoot = options.packageRoot ?? resolveMitiiPackageRoot(join(__dirname, '..'));
+ this.config = buildHeadlessConfig(options);
+ this.stubRunner = new HeadlessAgentRunner({
+ cwd: options.cwd,
+ providerType: options.providerType ?? this.config.provider.type,
+ baseUrl: options.baseUrl ?? this.config.provider.baseUrl,
+ model: options.model ?? this.config.provider.model,
+ apiKey: options.apiKey ?? resolveApiKey(options.providerType ?? this.config.provider.type),
+ approval: options.approval ?? 'manual',
+ });
+ }
+
+ get isRealRuntime(): boolean {
+ return this.options.runtime !== 'stub';
+ }
+
+ getSessionLog(): SessionLogService {
+ return this.sessionLog;
+ }
+
+ getToolAudit(): ReturnType {
+ return this.toolRuntime.getAuditLog();
+ }
+
+ async initialize(): Promise {
+ if (this.initialized) return;
+ if (!this.isRealRuntime) {
+ this.initialized = true;
+ return;
+ }
+
+ const workspace = this.options.cwd;
+ this.indexService = new IndexService(workspace);
+ await this.indexService.initialize();
+
+ scaffoldMitiiWorkspace(workspace, { extensionRoot: this.packageRoot, forceBundledSkills: false });
+ try {
+ saveProjectCatalog(discoverProjectCatalog(workspace));
+ } catch (error) {
+ log.warn('Project catalog discovery failed', {
+ error: error instanceof Error ? error.message : String(error),
+ });
+ }
+
+ const db = this.indexService.getDb();
+ if (!db) throw new Error('Failed to open index database');
+
+ this.ignoreService.load(workspace, {
+ respectGitignore: this.config.indexing.respectGitignore,
+ respectThunderignore: this.config.indexing.respectThunderignore,
+ });
+
+ this.scanner = new WorkspaceScanner(db, workspace);
+ this.indexQueue = new IndexQueue(db, {
+ maxConcurrency: this.config.indexing.maxConcurrency,
+ maxFileSizeBytes: this.config.indexing.maxFileSizeBytes,
+ });
+
+ this.gitService = new GitService(workspace);
+ await this.gitService.initialize();
+
+ this.diagnosticsService.setWorkspaceRoot(workspace);
+ this.postEditValidator = new PostEditValidator(this.diagnosticsService as never);
+
+ this.skillCatalogService = new SkillCatalogService(workspace);
+ this.skillCatalogService.refresh();
+
+ this.memoryService = new MemoryService(db, workspace, {
+ maxItems: this.config.memory.maxItems,
+ hybridSearchEnabled: this.config.memory.hybridSearchEnabled,
+ });
+
+ this.sessionService = new SessionService(db);
+ this.planPersistence = new PlanPersistence(db);
+ this.approvalQueue = new ApprovalQueue(db);
+
+ const effectiveSafety = resolveEffectiveSafety(this.config.safety);
+ setVerifyCommandPatterns(this.config.agent.verifyCommands);
+
+ this.policyEngine = new ToolPolicyEngine(
+ effectiveSafety,
+ (path) => this.ignoreService.isIgnored(path),
+ () => true
+ );
+
+ this.toolRuntime.setSessionLog(this.sessionLog);
+ setSubagentTracker(this.subagentTracker);
+
+ this.toolExecutor = new ToolExecutor(
+ this.toolRuntime,
+ this.policyEngine,
+ this.approvalQueue,
+ () => this.session?.id ?? '',
+ () => this.session?.mode ?? 'plan',
+ () => this.autoResolvePendingApprovals(),
+ () => this.agentTaskState,
+ this.sessionLog,
+ () => this.toolExecutor?.setPlanPhaseLock('execute')
+ );
+
+ const retriever = this.buildRetriever(db, workspace);
+ const budgeter = new ContextBudgeter();
+ this.chatOrchestrator = new ChatOrchestrator(retriever, budgeter, db);
+ this.configureOrchestrator(workspace);
+
+ const repoMap = new RepoMapService(db, workspace);
+ const fts = new FtsIndex(db);
+ this.registerTools(workspace, repoMap, fts, retriever, budgeter);
+
+ const mcpToggles = {
+ ...defaultMcpToggles(),
+ puppeteer: this.config.mcp.builtinServers.puppeteer ?? false,
+ };
+ await this.mcpManager.reload(this.config.mcp, workspace, this.toolRuntime, mcpToggles);
+
+ this.memoryExtractor = new MemoryExtractor(
+ this.memoryService,
+ this.config.memory.summarizeAfterTask
+ );
+
+ if (this.config.indexing.autoIndexOnOpen) {
+ await this.indexWorkspace(workspace);
+ }
+
+ this.provider = createProvider(this.config.provider, this.options.apiKey ?? resolveApiKey(this.config.provider.type));
+ this.initialized = true;
+ }
+
+ async ask(prompt: string): Promise {
+ await this.initialize();
+ if (!this.isRealRuntime) return this.stubRunner.ask(prompt);
+ return this.runMode('ask', prompt);
+ }
+
+ async plan(prompt: string): Promise> {
+ await this.initialize();
+ if (!this.isRealRuntime) return this.stubRunner.plan(prompt);
+ const content = await this.runMode('plan', prompt);
+ try {
+ return JSON.parse(content) as Record;
+ } catch {
+ return { goal: prompt, content, steps: [] };
+ }
+ }
+
+ async *agent(prompt: string): AsyncIterable<{ type: string; message?: string; plan?: HeadlessPlan; content?: string }> {
+ await this.initialize();
+ if (!this.isRealRuntime) {
+ yield* this.stubRunner.agent(prompt);
+ return;
+ }
+
+ yield { type: 'start', message: 'headless agent started' };
+ let content = '';
+ for await (const chunk of this.streamMode('agent', prompt)) {
+ const text = chunkContent(chunk);
+ if (text) {
+ content += text;
+ yield { type: 'assistant_delta', content: text };
+ }
+ }
+ yield { type: 'end', message: 'headless agent completed', content };
+ }
+
+ async runWithMetrics(mode: ThunderMode, prompt: string): Promise<{ output: string; metrics: HeadlessRunMetrics }> {
+ const started = Date.now();
+ const errors: string[] = [];
+ let output = '';
+
+ try {
+ if (mode === 'ask') {
+ output = await this.ask(prompt);
+ } else if (mode === 'plan') {
+ output = JSON.stringify(await this.plan(prompt));
+ } else {
+ const parts: string[] = [];
+ for await (const event of this.agent(prompt)) {
+ if (event.content) parts.push(event.content);
+ }
+ output = parts.join('');
+ }
+ } catch (error) {
+ errors.push(error instanceof Error ? error.message : String(error));
+ }
+
+ const audit = this.getToolAudit();
+ return {
+ output,
+ metrics: {
+ durationMs: Date.now() - started,
+ toolCalls: audit.length,
+ errors,
+ sessionLogPath: this.sessionLog.getLogPath() || undefined,
+ auditTools: audit.map((entry) => entry.toolName),
+ },
+ };
+ }
+
+ dispose(): void {
+ this.indexService?.dispose();
+ this.initialized = false;
+ }
+
+ private configureOrchestrator(workspace: string): void {
+ if (!this.chatOrchestrator || !this.toolExecutor) return;
+
+ const passiveMemoryInjector = new PassiveMemoryInjector(this.memoryService!);
+ const memoryHookService = new MemoryHookService(workspace);
+
+ this.chatOrchestrator.configure({
+ toolRuntime: this.toolRuntime,
+ toolExecutor: this.toolExecutor,
+ sessionService: this.sessionService,
+ planPersistence: this.planPersistence,
+ memoryExtractor: this.memoryExtractor,
+ memoryConfig: this.config.memory,
+ agentConfig: this.config.agent,
+ passiveMemoryInjector,
+ memoryHookService,
+ postEditValidator: this.postEditValidator,
+ sessionLog: this.sessionLog,
+ workspace,
+ memoryService: this.memoryService,
+ taskState: this.agentTaskState,
+ skillCatalog: this.skillCatalogService,
+ allowNetwork: () => resolveEffectiveSafety(this.config.safety).allowNetwork,
+ runVerifyHooks: async (commands, userMessage) => this.runVerifyHooks(workspace, commands, userMessage ?? ''),
+ microTaskRoutingEnabled: this.config.context.microTaskRoutingEnabled,
+ microTaskExecutorFactory: (provider) => new MicroTaskExecutor({
+ workspace,
+ git: this.gitService!,
+ provider,
+ sessionLog: this.sessionLog,
+ }),
+ onPostWrite: async () => undefined,
+ onDiffPreview: async () => undefined,
+ });
+ this.chatOrchestrator.setToolExecutor(this.toolExecutor);
+ }
+
+ private registerTools(
+ workspace: string,
+ repoMap: RepoMapService,
+ fts: FtsIndex,
+ retriever: HybridRetriever,
+ budgeter: ContextBudgeter
+ ): void {
+ this.toolRuntime.register(createReadFileTool(workspace, this.ignoreService));
+ this.toolRuntime.register(createReadFilesTool(workspace, this.ignoreService));
+ this.toolRuntime.register(createListFilesTool(workspace, this.ignoreService));
+ this.toolRuntime.register(createSearchTool(fts, workspace));
+ this.toolRuntime.register(createSearchBatchTool(fts, workspace));
+ this.toolRuntime.register(createSearchScriptCatalogTool(workspace, this.packageRoot));
+ this.toolRuntime.register(createExecuteWorkspaceScriptTool(workspace, this.packageRoot, this.ignoreService));
+ this.toolRuntime.register(createUseSkillTool(this.skillCatalogService!));
+ this.toolRuntime.register(createSpawnResearchAgentTool());
+ this.toolRuntime.register(createRepoMapTool(repoMap));
+ this.toolRuntime.register(createRetrieveContextTool(retriever, budgeter));
+ this.toolRuntime.register(createGitDiffTool(this.gitService!));
+ this.toolRuntime.register(createDiagnosticsTool(this.diagnosticsService as never));
+ this.toolRuntime.register(createProjectCatalogTool(workspace));
+ this.toolRuntime.register(createAnalyzeChangeImpactTool(workspace));
+ this.toolRuntime.register(createWriteFileTool(workspace, this.ignoreService));
+ this.toolRuntime.register(createApplyPatchTool(workspace, this.ignoreService));
+ this.toolRuntime.register(createRunCommandTool(workspace, () => this.session?.mode ?? 'plan'));
+ this.toolRuntime.register(createMemorySearchTool(this.memoryService!));
+ this.toolRuntime.register(createMemoryWriteTool(this.memoryService!, () => this.session?.id ?? ''));
+ this.toolRuntime.register(createSaveTaskStateTool(this.memoryService!, () => this.session?.id ?? '', () => this.agentTaskState));
+ this.toolRuntime.register(createFetchWebTool(() => this.config.safety.allowNetwork));
+ this.toolRuntime.register(createAskQuestionTool());
+
+ const sessionIdForPlans = () => this.session?.id ?? '';
+ const planToolsCtx = {
+ getPlan: () => this.planPersistence?.getActive(sessionIdForPlans())?.plan ?? null,
+ setPlan: (plan: import('../plans/PlanActEngine').ThunderPlan) => {
+ const sid = sessionIdForPlans();
+ if (sid) this.planPersistence?.updatePlan(sid, plan);
+ },
+ planPersistence: this.planPersistence,
+ getSessionId: sessionIdForPlans,
+ setPlanPhaseLock: (phase: import('../plans/PlanActEngine').PlanPhase | undefined) => {
+ this.toolExecutor?.setPlanPhaseLock(phase);
+ },
+ get planFileStore() {
+ const sid = sessionIdForPlans();
+ return sid ? new PlanFileStore(workspace, sid) : undefined;
+ },
+ };
+ this.toolRuntime.register(createMarkStepCompleteTool(planToolsCtx));
+ this.toolRuntime.register(createProposePlanMutationTool(planToolsCtx));
+ }
+
+ private buildRetriever(db: import('../indexing/ThunderDb').ThunderDb, workspace: string): HybridRetriever {
+ const sources = [];
+ const projectRulesService = new ProjectRulesService(workspace);
+ sources.push(new ProjectRulesContextSource(projectRulesService));
+ if (this.skillCatalogService) {
+ sources.push(new SkillCatalogContextSource(this.skillCatalogService));
+ }
+ sources.push(new ProjectCatalogContextSource(workspace));
+ sources.push(
+ new MentionedFileContextSource(workspace),
+ new WorkspaceOverviewContextSource(workspace),
+ new CurrentEditorContextSource(workspace, db),
+ new OpenFilesContextSource(workspace, db),
+ new FtsContextSource(db),
+ new IndexedFileSearchContextSource(db, workspace),
+ new RepoMapContextSource(db, workspace)
+ );
+ if (this.gitService) sources.push(new GitDiffContextSource(this.gitService));
+ sources.push(new HeadlessDiagnosticsContextSource(this.diagnosticsService));
+ if (this.memoryService) sources.push(new MemoryContextSource(this.memoryService));
+
+ const reranker = createContextReranker(undefined, false);
+ return new HybridRetriever(sources, reranker, {
+ enabled: this.config.context.rerankerEnabled,
+ candidatePool: this.config.context.rerankerCandidatePool,
+ topK: this.config.context.rerankerTopK,
+ });
+ }
+
+ private async indexWorkspace(workspace: string): Promise {
+ if (!this.scanner || !this.indexQueue) return;
+ const files = headlessDiscoverFiles(workspace, this.ignoreService, this.config.indexing);
+ const diff = this.scanner.computeDiff(files);
+ this.scanner.persistScan(diff);
+ const jobs = [...diff.added, ...diff.changed].map((f) => ({
+ fileId: this.scanner!.getFileId(f.relPath)!,
+ relPath: f.relPath,
+ absPath: f.absPath,
+ language: f.language,
+ })).filter((j) => j.fileId !== undefined);
+
+ if (jobs.length === 0) return;
+ this.indexQueue.enqueue(jobs);
+
+ const deadline = Date.now() + 120_000;
+ while (this.indexQueue.getStatus().running || this.indexQueue.getStatus().queued > 0) {
+ if (Date.now() > deadline) break;
+ await sleep(250);
+ }
+ this.sessionLog.append('index_complete', 'Headless indexing finished', {
+ workspace,
+ jobCount: jobs.length,
+ });
+ }
+
+ private async runMode(mode: ThunderMode, prompt: string): Promise {
+ const parts: string[] = [];
+ for await (const chunk of this.streamMode(mode, prompt)) {
+ const text = chunkContent(chunk);
+ if (text) parts.push(text);
+ }
+ return parts.join('');
+ }
+
+ private async *streamMode(mode: ThunderMode, prompt: string): AsyncIterable {
+ if (!this.chatOrchestrator || !this.provider) {
+ throw new Error('Headless agent host is not initialized');
+ }
+
+ this.session = new ThunderSession(this.options.cwd, mode);
+ this.sessionLog.configure(this.options.cwd, this.session.id, true, this.config.telemetry.debugMetrics);
+ this.toolRuntime.clearAuditLog();
+ this.agentTaskState.reset();
+ this.agentTaskState.setLimits({
+ maxSequentialThinkingCalls: this.config.agent.maxSequentialThinkingCallsPerTurn,
+ });
+
+ if (this.options.approval === 'auto') {
+ for (const tool of AUTO_GRANT_TOOLS) {
+ this.approvalQueue?.grantForTask(this.session.id, tool);
+ }
+ }
+
+ this.sessionService?.ensureSession(this.session, prompt.slice(0, 64));
+ yield* this.chatOrchestrator.send(this.session, this.provider, prompt, []);
+ }
+
+ private autoResolvePendingApprovals(): void {
+ if (this.options.approval !== 'auto' || !this.approvalQueue || !this.session) return;
+ for (const request of this.approvalQueue.getPending()) {
+ this.approvalQueue.grantForTask(this.session.id, request.toolName);
+ this.approvalQueue.resolve(request.id, 'approved');
+ this.sessionLog.append('approval_decision', `auto-approved: ${request.toolName}`, {
+ id: request.id,
+ toolName: request.toolName,
+ scope: 'task',
+ });
+ }
+ }
+
+ private async runVerifyHooks(workspace: string, commands: string[], userMessage: string): Promise {
+ const lines: string[] = [];
+ const touchedFiles = this.getTouchedFilesFromAudit();
+ const plan = resolveProjectVerifyCommands(workspace, commands, { touchedFiles, userMessage });
+ lines.push(formatVerifyPlanForAgent(plan));
+
+ for (const command of plan.commands) {
+ const trimmed = command.trim();
+ if (!trimmed) continue;
+ try {
+ const result = await this.toolRuntime.execute('run_command', { command: trimmed });
+ const body = result.success
+ ? (result.output || '(no output)')
+ : (result.error ?? result.output ?? 'command failed');
+ lines.push(`$ ${trimmed}\n${body.slice(0, 4000)}`);
+ } catch (error) {
+ const msg = error instanceof Error ? error.message : String(error);
+ lines.push(`$ ${trimmed}\n${msg}`);
+ }
+ }
+
+ return lines.join('\n\n');
+ }
+
+ private getTouchedFilesFromAudit(): string[] {
+ const files = new Set();
+ for (const { toolName, input, result } of this.toolRuntime.getAuditLog()) {
+ if (!result.success || !['write_file', 'apply_patch'].includes(toolName)) continue;
+ const path = (input as Record).path;
+ if (typeof path === 'string') files.add(path);
+ }
+ return [...files];
+ }
+}
+
+function sleep(ms: number): Promise {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
diff --git a/src/core/headless/HeadlessConfig.ts b/src/core/headless/HeadlessConfig.ts
new file mode 100644
index 00000000..8e96e2a2
--- /dev/null
+++ b/src/core/headless/HeadlessConfig.ts
@@ -0,0 +1,94 @@
+import { existsSync } from 'fs';
+import { join } from 'path';
+import type { ProviderType, ThunderConfig } from '../config/schema';
+import { defaultThunderConfig } from '../config/defaults';
+import { resolveEffectiveSafety } from '../safety/autonomyPresets';
+
+export type HeadlessRuntime = 'real' | 'stub';
+
+export interface HeadlessAgentOptions {
+ cwd: string;
+ packageRoot?: string;
+ runtime?: HeadlessRuntime;
+ providerType?: ProviderType;
+ baseUrl?: string;
+ model?: string;
+ apiKey?: string;
+ approval?: 'auto' | 'manual';
+ allowNetwork?: boolean;
+ enablePuppeteer?: boolean;
+ indexWorkspace?: boolean;
+ configOverrides?: Partial;
+}
+
+export function resolveMitiiPackageRoot(fromDir: string): string {
+ let current = fromDir;
+ for (let depth = 0; depth < 4; depth += 1) {
+ if (existsSync(join(current, 'package.json'))) return current;
+ const parent = join(current, '..');
+ if (parent === current) break;
+ current = parent;
+ }
+ return fromDir;
+}
+
+export function buildHeadlessConfig(options: HeadlessAgentOptions): ThunderConfig {
+ const base = defaultThunderConfig();
+ const approvalMode = options.approval === 'auto' ? 'auto' as const : 'review_all' as const;
+ const safety = resolveEffectiveSafety({
+ ...base.safety,
+ approvalMode,
+ allowUntrustedWorkspace: true,
+ allowNetwork: options.allowNetwork ?? false,
+ });
+
+ const mcp = {
+ ...base.mcp,
+ enabled: true,
+ preloadBuiltin: true,
+ builtinServers: {
+ ...base.mcp.builtinServers,
+ puppeteer: options.enablePuppeteer ?? false,
+ },
+ };
+
+ const config: ThunderConfig = {
+ ...base,
+ ...options.configOverrides,
+ provider: {
+ ...base.provider,
+ type: options.providerType ?? base.provider.type,
+ baseUrl: options.baseUrl ?? base.provider.baseUrl,
+ model: options.model ?? base.provider.model,
+ supportsTools: options.runtime === 'stub' ? false : true,
+ },
+ safety,
+ mcp,
+ indexing: {
+ ...base.indexing,
+ vectorsEnabled: false,
+ autoIndexOnOpen: options.indexWorkspace !== false,
+ ...(options.configOverrides?.indexing ?? {}),
+ },
+ agent: {
+ ...base.agent,
+ verifyOnActComplete: true,
+ ...(options.configOverrides?.agent ?? {}),
+ },
+ telemetry: {
+ ...base.telemetry,
+ sessionLogging: true,
+ debugMetrics: true,
+ ...(options.configOverrides?.telemetry ?? {}),
+ },
+ };
+
+ return config;
+}
+
+export function resolveApiKey(providerType: ProviderType): string | undefined {
+ if (providerType === 'anthropic') return process.env.ANTHROPIC_API_KEY ?? process.env.MITII_API_KEY;
+ if (providerType === 'gemini') return process.env.GEMINI_API_KEY ?? process.env.MITII_API_KEY;
+ if (providerType === 'openrouter') return process.env.OPENROUTER_API_KEY ?? process.env.MITII_API_KEY;
+ return process.env.MITII_API_KEY ?? process.env.OPENAI_API_KEY;
+}
diff --git a/src/core/headless/HeadlessDiagnosticsService.ts b/src/core/headless/HeadlessDiagnosticsService.ts
new file mode 100644
index 00000000..0e715bb4
--- /dev/null
+++ b/src/core/headless/HeadlessDiagnosticsService.ts
@@ -0,0 +1,47 @@
+import type { ContextItem, ContextQuery, ContextSource } from '../context/types';
+
+/** Headless diagnostics stub — no VS Code language service in CLI/benchmark runs. */
+export class HeadlessDiagnosticsService {
+ setWorkspaceRoot(_root: string): void {
+ // Headless runtime has no editor diagnostics integration.
+ }
+
+ getDiagnostics(): Array<{ file: string; severity: string; message: string; line: number }> {
+ return [];
+ }
+
+ formatCompact(_maxItems = 20): string {
+ return '';
+ }
+
+ getHeavyFiles(): string[] {
+ return [];
+ }
+
+ getFileErrors(_relPath: string): Array<{ line: number; message: string }> {
+ return [];
+ }
+
+ async waitForFileErrors(_relPath: string, _maxWaitMs = 2500): Promise> {
+ return [];
+ }
+}
+
+export class HeadlessDiagnosticsContextSource implements ContextSource {
+ readonly id = 'diagnostics';
+
+ constructor(private readonly diagnosticsService: HeadlessDiagnosticsService) {}
+
+ async retrieve(_query: ContextQuery): Promise {
+ const formatted = this.diagnosticsService.formatCompact();
+ if (!formatted) return [];
+ return [{
+ id: 'diagnostics',
+ source: this.id,
+ content: formatted,
+ score: 5,
+ reason: 'Headless diagnostics (empty in CLI runtime)',
+ tokenEstimate: Math.ceil(formatted.length / 4),
+ }];
+ }
+}
diff --git a/src/core/headless/headlessDiscoverFiles.ts b/src/core/headless/headlessDiscoverFiles.ts
new file mode 100644
index 00000000..d53a056a
--- /dev/null
+++ b/src/core/headless/headlessDiscoverFiles.ts
@@ -0,0 +1,58 @@
+import { readdirSync, statSync } from 'fs';
+import { join, relative } from 'path';
+import type { IgnoreService } from '../indexing/IgnoreService';
+import type { DiscoveredFile } from '../indexing/FileDiscoveryService';
+import { isBinaryByExtension, detectLanguage } from '../indexing/fileUtils';
+import type { IndexingConfig } from '../config/schema';
+
+/** File discovery without VS Code configuration APIs — used by headless host and benchmarks. */
+export function headlessDiscoverFiles(
+ workspacePath: string,
+ ignoreService: IgnoreService,
+ config: Pick
+): DiscoveredFile[] {
+ const results: DiscoveredFile[] = [];
+
+ const walk = (dir: string): void => {
+ let entries: string[];
+ try {
+ entries = readdirSync(dir);
+ } catch {
+ return;
+ }
+
+ for (const entry of entries) {
+ const absPath = join(dir, entry);
+ const relPath = relative(workspacePath, absPath).replace(/\\/g, '/');
+
+ if (ignoreService.isIgnored(relPath)) continue;
+
+ let stat;
+ try {
+ stat = statSync(absPath);
+ } catch {
+ continue;
+ }
+
+ if (stat.isDirectory()) {
+ walk(absPath);
+ continue;
+ }
+
+ if (!stat.isFile()) continue;
+ if (stat.size > config.hardSkipSizeBytes) continue;
+ if (isBinaryByExtension(relPath)) continue;
+
+ results.push({
+ absPath,
+ relPath,
+ size: stat.size,
+ mtime: stat.mtimeMs,
+ language: detectLanguage(relPath),
+ });
+ }
+ };
+
+ walk(workspacePath);
+ return results;
+}
diff --git a/src/core/headless/index.ts b/src/core/headless/index.ts
new file mode 100644
index 00000000..d28dc0ef
--- /dev/null
+++ b/src/core/headless/index.ts
@@ -0,0 +1,4 @@
+export * from './release';
+export * from './AgentRunner';
+export * from './HeadlessAgentHost';
+export * from './HeadlessConfig';
diff --git a/src/core/headless/release.ts b/src/core/headless/release.ts
new file mode 100644
index 00000000..52289727
--- /dev/null
+++ b/src/core/headless/release.ts
@@ -0,0 +1,43 @@
+import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
+import { dirname, join } from 'path';
+import { GitHistoryCollector, generateChangelogEntry, generateReleaseNotes, insertChangelogEntry } from '../release';
+
+export interface PrepareReleaseResult {
+ changelogEntry: string;
+ releaseNotes: string;
+ changelogPath: string;
+ releaseNotesPath: string;
+}
+
+export async function generateHeadlessChangelog(cwd: string, since?: string): Promise {
+ const collector = new GitHistoryCollector(cwd);
+ const tag = since ?? await collector.getLatestTag() ?? undefined;
+ const commits = await collector.getCommitsSinceTag(tag);
+ return generateChangelogEntry({ commits, version: readPackageVersion(cwd), date: new Date() });
+}
+
+export async function prepareHeadlessRelease(cwd: string, since?: string): Promise {
+ const collector = new GitHistoryCollector(cwd);
+ const tag = since ?? await collector.getLatestTag() ?? undefined;
+ const commits = await collector.getCommitsSinceTag(tag);
+ const version = readPackageVersion(cwd);
+ const changelogEntry = generateChangelogEntry({ commits, version, date: new Date() });
+ const releaseNotes = generateReleaseNotes({ commits, version, date: new Date() });
+ const changelogPath = join(cwd, 'CHANGELOG.md');
+ const existing = existsSync(changelogPath) ? readFileSync(changelogPath, 'utf8') : '# Changelog\n\n## [Unreleased]\n';
+ writeFileSync(changelogPath, insertChangelogEntry(existing, changelogEntry), 'utf8');
+ const releaseNotesPath = join(cwd, '.mitii', 'release-notes.md');
+ mkdirSync(dirname(releaseNotesPath), { recursive: true });
+ writeFileSync(releaseNotesPath, releaseNotes, 'utf8');
+ return { changelogEntry, releaseNotes, changelogPath, releaseNotesPath };
+}
+
+function readPackageVersion(cwd: string): string {
+ try {
+ const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8')) as { version?: string };
+ return pkg.version ?? '0.0.0';
+ } catch {
+ return '0.0.0';
+ }
+}
+
diff --git a/src/core/llm/AnthropicProvider.ts b/src/core/llm/AnthropicProvider.ts
index 2bf403cc..06a5bedd 100644
--- a/src/core/llm/AnthropicProvider.ts
+++ b/src/core/llm/AnthropicProvider.ts
@@ -21,6 +21,8 @@ export class AnthropicProvider implements LlmProvider {
supportsStreaming: config.capabilities?.supportsStreaming ?? true,
supportsTools: config.capabilities?.supportsTools ?? true,
supportsEmbeddings: false,
+ supportsVision: config.capabilities?.supportsVision ?? true,
+ supportsReasoning: config.capabilities?.supportsReasoning ?? false,
};
}
@@ -150,6 +152,26 @@ function splitAnthropicMessages(messages: ChatMessage[]): {
out.push({ role: 'assistant', content });
continue;
}
+ if (msg.attachments?.length && (msg.role === 'user' || msg.role === 'assistant')) {
+ const content: Array> = [];
+ if (msg.content) content.push({ type: 'text', text: msg.content });
+ for (const attachment of msg.attachments) {
+ if (attachment.kind !== 'image') continue;
+ content.push({
+ type: 'image',
+ source: {
+ type: 'base64',
+ media_type: attachment.mimeType,
+ data: attachment.data,
+ },
+ });
+ }
+ out.push({
+ role: msg.role === 'assistant' ? 'assistant' : 'user',
+ content,
+ });
+ continue;
+ }
out.push({
role: msg.role === 'assistant' ? 'assistant' : 'user',
content: msg.content,
diff --git a/src/core/llm/BedrockProvider.ts b/src/core/llm/BedrockProvider.ts
new file mode 100644
index 00000000..6a32b365
--- /dev/null
+++ b/src/core/llm/BedrockProvider.ts
@@ -0,0 +1,115 @@
+import {
+ BedrockRuntimeClient,
+ ConverseCommand,
+ ConverseStreamCommand,
+ type Message,
+ type SystemContentBlock,
+} from '@aws-sdk/client-bedrock-runtime';
+import type { ChatDelta, ChatMessage, ChatRequest, LlmProvider, ModelCapabilities } from './types';
+import { normalizeProviderError } from './errors';
+import { estimateTokensAsync } from './tokenEstimate';
+
+export interface BedrockProviderConfig {
+ region: string;
+ model: string;
+ capabilities?: Partial;
+}
+
+export class BedrockProvider implements LlmProvider {
+ readonly id = 'bedrock';
+ readonly capabilities: ModelCapabilities;
+ private readonly client: BedrockRuntimeClient;
+
+ constructor(private readonly config: BedrockProviderConfig) {
+ this.capabilities = {
+ contextWindow: config.capabilities?.contextWindow ?? 200_000,
+ supportsStreaming: config.capabilities?.supportsStreaming ?? true,
+ supportsTools: false,
+ supportsEmbeddings: false,
+ supportsVision: config.capabilities?.supportsVision ?? true,
+ supportsReasoning: config.capabilities?.supportsReasoning ?? false,
+ };
+ this.client = new BedrockRuntimeClient({ region: config.region || 'us-east-1' });
+ }
+
+ async *complete(request: ChatRequest): AsyncIterable {
+ const input = {
+ modelId: request.model ?? this.config.model,
+ ...formatBedrockMessages(request.messages),
+ inferenceConfig: {
+ temperature: request.temperature ?? 0.2,
+ maxTokens: request.maxTokens,
+ },
+ };
+
+ try {
+ if (request.stream === false) {
+ const response = await this.client.send(new ConverseCommand(input));
+ const content = response.output?.message?.content
+ ?.map((block) => block.text ?? '')
+ .join('') ?? '';
+ if (content) yield { content };
+ yield { done: true, finish_reason: response.stopReason };
+ return;
+ }
+
+ const response = await this.client.send(new ConverseStreamCommand(input));
+ for await (const event of response.stream ?? []) {
+ const text = event.contentBlockDelta?.delta?.text;
+ if (text) yield { content: text };
+ if (event.messageStop?.stopReason) {
+ yield { done: true, finish_reason: event.messageStop.stopReason };
+ return;
+ }
+ }
+ yield { done: true };
+ } catch (error) {
+ throw normalizeProviderError(error);
+ }
+ }
+
+ async countTokens(text: string): Promise {
+ return estimateTokensAsync(text);
+ }
+}
+
+function formatBedrockMessages(messages: ChatMessage[]): {
+ messages: Message[];
+ system?: SystemContentBlock[];
+} {
+ const system: SystemContentBlock[] = [];
+ const out: Message[] = [];
+
+ for (const message of messages) {
+ if (message.role === 'system') {
+ if (message.content.trim()) system.push({ text: message.content });
+ continue;
+ }
+
+ const role = message.role === 'assistant' ? 'assistant' : 'user';
+ const prefix = message.role === 'tool'
+ ? `Tool result${message.name ? ` from ${message.name}` : ''}:\n`
+ : '';
+ const text = `${prefix}${message.content}`.trim();
+ if (!text) continue;
+
+ const previous = out[out.length - 1];
+ if (previous?.role === role) {
+ previous.content?.push({ text });
+ } else {
+ out.push({
+ role,
+ content: [{ text }],
+ });
+ }
+ }
+
+ if (out.length === 0) {
+ out.push({ role: 'user', content: [{ text: '' }] });
+ }
+
+ return {
+ messages: out,
+ ...(system.length > 0 ? { system } : {}),
+ };
+}
diff --git a/src/core/llm/EchoProvider.ts b/src/core/llm/EchoProvider.ts
index da540b2d..32189784 100644
--- a/src/core/llm/EchoProvider.ts
+++ b/src/core/llm/EchoProvider.ts
@@ -8,6 +8,8 @@ export class EchoProvider implements LlmProvider {
supportsStreaming: true,
supportsTools: false,
supportsEmbeddings: false,
+ supportsVision: false,
+ supportsReasoning: false,
};
async *complete(request: ChatRequest): AsyncIterable {
diff --git a/src/core/llm/GeminiProvider.ts b/src/core/llm/GeminiProvider.ts
index b8ca7f23..3ef1d864 100644
--- a/src/core/llm/GeminiProvider.ts
+++ b/src/core/llm/GeminiProvider.ts
@@ -20,6 +20,8 @@ export class GeminiProvider implements LlmProvider {
supportsStreaming: config.capabilities?.supportsStreaming ?? true,
supportsTools: config.capabilities?.supportsTools ?? true,
supportsEmbeddings: false,
+ supportsVision: config.capabilities?.supportsVision ?? true,
+ supportsReasoning: config.capabilities?.supportsReasoning ?? false,
};
}
@@ -175,6 +177,24 @@ function toGeminiContents(messages: ChatMessage[]): Array> = [];
+ if (msg.content) parts.push({ text: msg.content });
+ for (const attachment of msg.attachments) {
+ if (attachment.kind !== 'image') continue;
+ parts.push({
+ inlineData: {
+ mimeType: attachment.mimeType,
+ data: attachment.data,
+ },
+ });
+ }
+ out.push({
+ role: msg.role === 'assistant' ? 'model' : 'user',
+ parts,
+ });
+ continue;
+ }
out.push({
role: msg.role === 'assistant' ? 'model' : 'user',
parts: [{ text: msg.content }],
diff --git a/src/core/llm/LlmProviderRegistry.ts b/src/core/llm/LlmProviderRegistry.ts
index 7472a2e0..96bff0d8 100644
--- a/src/core/llm/LlmProviderRegistry.ts
+++ b/src/core/llm/LlmProviderRegistry.ts
@@ -40,6 +40,8 @@ export class LlmProviderRegistry {
type: options.type,
baseUrl: options.baseUrl ?? '',
model: options.model ?? '',
+ apiVersion: options.apiVersion ?? '2024-10-21',
+ region: options.region ?? 'us-east-1',
apiKeyRef: 'thunder.apiKey',
contextWindow: options.contextWindow ?? 8192,
supportsStreaming: options.supportsStreaming ?? true,
diff --git a/src/core/llm/OpenAiCompatibleProvider.ts b/src/core/llm/OpenAiCompatibleProvider.ts
index 456ab333..00764e7f 100644
--- a/src/core/llm/OpenAiCompatibleProvider.ts
+++ b/src/core/llm/OpenAiCompatibleProvider.ts
@@ -8,30 +8,50 @@ export interface OpenAiCompatibleConfig {
model: string;
apiKey?: string;
capabilities?: Partial;
+ providerId?: string;
+ defaultHeaders?: Record;
+ authHeader?: 'authorization' | 'api-key' | 'x-api-key';
+ chatCompletionsPath?: string;
+ queryParams?: Record;
+ includeReasoning?: boolean;
+ reasoningEffort?: 'low' | 'medium' | 'high';
}
export class OpenAiCompatibleProvider implements LlmProvider {
- readonly id = 'openai-compatible';
+ readonly id: string;
readonly capabilities: ModelCapabilities;
constructor(private readonly config: OpenAiCompatibleConfig) {
+ this.id = config.providerId ?? 'openai-compatible';
this.capabilities = {
contextWindow: config.capabilities?.contextWindow ?? 8192,
supportsStreaming: config.capabilities?.supportsStreaming ?? true,
supportsTools: config.capabilities?.supportsTools ?? true,
supportsEmbeddings: config.capabilities?.supportsEmbeddings ?? false,
+ supportsVision: config.capabilities?.supportsVision ?? false,
+ supportsReasoning: config.capabilities?.supportsReasoning ?? false,
};
}
async *complete(request: ChatRequest): AsyncIterable {
- const url = `${this.config.baseUrl.replace(/\/$/, '')}/chat/completions`;
+ const url = buildChatCompletionsUrl(this.config);
const headers: Record = {
'Content-Type': 'application/json',
+ ...(this.config.defaultHeaders ?? {}),
};
if (this.config.apiKey) {
- headers['Authorization'] = `Bearer ${this.config.apiKey}`;
+ const authHeader = this.config.authHeader ?? 'authorization';
+ if (authHeader === 'api-key') {
+ headers['api-key'] = this.config.apiKey;
+ } else if (authHeader === 'x-api-key') {
+ headers['x-api-key'] = this.config.apiKey;
+ } else {
+ headers['Authorization'] = `Bearer ${this.config.apiKey}`;
+ }
}
+ const includeReasoning = request.includeReasoning ?? this.config.includeReasoning;
+ const reasoningEffort = request.reasoningEffort ?? this.config.reasoningEffort;
const body: Record = {
model: request.model ?? this.config.model,
messages: sanitizeOpenAiCompatibleMessages(request.messages).map(formatMessage),
@@ -39,6 +59,12 @@ export class OpenAiCompatibleProvider implements LlmProvider {
max_tokens: request.maxTokens,
stream: request.stream !== false,
};
+ if (includeReasoning) {
+ body.include_reasoning = true;
+ }
+ if (reasoningEffort) {
+ body.reasoning_effort = reasoningEffort;
+ }
if (this.capabilities.supportsTools && request.tools && request.tools.length > 0) {
body.tools = request.tools;
@@ -73,6 +99,9 @@ export class OpenAiCompatibleProvider implements LlmProvider {
choices?: Array<{
message?: {
content?: string;
+ reasoning?: string;
+ reasoning_content?: string;
+ redacted_reasoning?: string;
tool_calls?: Array<{
id: string;
type: 'function';
@@ -86,6 +115,10 @@ export class OpenAiCompatibleProvider implements LlmProvider {
if (message?.content) {
yield { content: message.content };
}
+ const reasoning = message?.reasoning ?? message?.reasoning_content ?? message?.redacted_reasoning;
+ if (reasoning) {
+ yield { reasoning };
+ }
if (message?.tool_calls) {
for (const [index, tc] of message.tool_calls.entries()) {
yield {
@@ -165,6 +198,16 @@ export function sanitizeOpenAiCompatibleMessages(messages: ChatRequest['messages
return sanitized;
}
+function buildChatCompletionsUrl(config: OpenAiCompatibleConfig): string {
+ const root = config.baseUrl.replace(/\/$/, '');
+ const path = (config.chatCompletionsPath ?? 'chat/completions').replace(/^\//, '');
+ const url = new URL(`${root}/${path}`);
+ for (const [key, value] of Object.entries(config.queryParams ?? {})) {
+ if (value) url.searchParams.set(key, value);
+ }
+ return url.toString();
+}
+
function toolResultAsUserMessage(message: ChatRequest['messages'][number]): ChatRequest['messages'][number] {
const label = message.name ? ` from ${message.name}` : '';
return {
@@ -174,9 +217,21 @@ function toolResultAsUserMessage(message: ChatRequest['messages'][number]): Chat
}
function formatMessage(msg: ChatRequest['messages'][number]): Record {
+ const attachments = msg.attachments?.filter((attachment) => attachment.kind === 'image') ?? [];
+ const content = attachments.length > 0 && (msg.role === 'user' || msg.role === 'assistant')
+ ? [
+ ...(msg.content ? [{ type: 'text', text: msg.content }] : []),
+ ...attachments.map((attachment) => ({
+ type: 'image_url',
+ image_url: {
+ url: `data:${attachment.mimeType};base64,${attachment.data}`,
+ },
+ })),
+ ]
+ : msg.content;
const out: Record = {
role: msg.role,
- content: msg.content,
+ content,
};
if (msg.name) out.name = msg.name;
if (msg.tool_call_id) out.tool_call_id = msg.tool_call_id;
diff --git a/src/core/llm/UsageTrackingProvider.ts b/src/core/llm/UsageTrackingProvider.ts
index ea02f617..fe150532 100644
--- a/src/core/llm/UsageTrackingProvider.ts
+++ b/src/core/llm/UsageTrackingProvider.ts
@@ -47,6 +47,9 @@ export class UsageTrackingProvider implements LlmProvider {
if (delta.content) {
outputText += delta.content;
}
+ if (delta.reasoning) {
+ outputText += delta.reasoning;
+ }
if (delta.tool_calls) {
outputText += JSON.stringify(delta.tool_calls);
}
diff --git a/src/core/llm/createProvider.ts b/src/core/llm/createProvider.ts
index 4d6dd70d..7d833f21 100644
--- a/src/core/llm/createProvider.ts
+++ b/src/core/llm/createProvider.ts
@@ -4,8 +4,10 @@ import { EchoProvider } from './EchoProvider';
import { OpenAiCompatibleProvider } from './OpenAiCompatibleProvider';
import { AnthropicProvider } from './AnthropicProvider';
import { GeminiProvider } from './GeminiProvider';
+import { BedrockProvider } from './BedrockProvider';
import { getProviderPreset } from './providerPresets';
import { normalizeProviderModel } from './modelNormalize';
+import { detectModelCapabilities } from './modelCapabilities';
import { createLogger } from '../telemetry/Logger';
const log = createLogger('createProvider');
@@ -14,11 +16,15 @@ export interface ProviderResolveOptions {
type?: ProviderType;
baseUrl?: string;
model?: string;
+ apiVersion?: string;
+ region?: string;
apiKey?: string;
contextWindow?: number;
supportsStreaming?: boolean;
supportsTools?: boolean;
supportsEmbeddings?: boolean;
+ supportsVision?: boolean;
+ supportsReasoning?: boolean;
}
export function createProvider(
@@ -34,18 +40,60 @@ export function createProvider(
}
const model = resolved.model;
const key = apiKey;
- const capabilities = {
- contextWindow: config.contextWindow ?? preset?.contextWindow ?? 8192,
- supportsStreaming: config.supportsStreaming ?? true,
- supportsTools: config.supportsTools ?? true,
- supportsEmbeddings: config.supportsEmbeddings ?? false,
- };
+ const apiVersion = 'apiVersion' in config && config.apiVersion
+ ? config.apiVersion
+ : '2024-10-21';
+ const region = 'region' in config && config.region
+ ? config.region
+ : 'us-east-1';
+ const capabilities = detectModelCapabilities(type, model, preset?.contextWindow ?? 8192, {
+ contextWindow: config.contextWindow,
+ supportsStreaming: config.supportsStreaming,
+ supportsTools: config.supportsTools,
+ supportsEmbeddings: config.supportsEmbeddings,
+ supportsVision: config.supportsVision,
+ supportsReasoning: config.supportsReasoning,
+ });
switch (type) {
case 'anthropic':
return new AnthropicProvider({ baseUrl, model, apiKey: key, capabilities });
case 'gemini':
return new GeminiProvider({ baseUrl, model, apiKey: key, capabilities });
+ case 'openrouter':
+ return new OpenAiCompatibleProvider({
+ baseUrl,
+ model,
+ apiKey: key,
+ capabilities,
+ providerId: 'openrouter',
+ defaultHeaders: {
+ 'HTTP-Referer': 'https://mitii.dev',
+ 'X-Title': 'Mitii Agent',
+ },
+ includeReasoning: true,
+ });
+ case 'azure-openai':
+ return new OpenAiCompatibleProvider({
+ baseUrl,
+ model,
+ apiKey: key,
+ capabilities,
+ providerId: 'azure-openai',
+ authHeader: 'api-key',
+ chatCompletionsPath: `openai/deployments/${encodeURIComponent(model)}/chat/completions`,
+ queryParams: { 'api-version': apiVersion },
+ });
+ case 'bedrock':
+ return new BedrockProvider({
+ region,
+ model,
+ capabilities: {
+ ...capabilities,
+ supportsTools: false,
+ supportsEmbeddings: false,
+ },
+ });
case 'openai':
case 'deepseek':
case 'cursor':
diff --git a/src/core/llm/index.ts b/src/core/llm/index.ts
index d75da1da..492fc0ac 100644
--- a/src/core/llm/index.ts
+++ b/src/core/llm/index.ts
@@ -1,7 +1,9 @@
export * from './types';
export * from './EchoProvider';
export * from './OpenAiCompatibleProvider';
+export * from './BedrockProvider';
export * from './LlmProviderRegistry';
export * from './tokenEstimate';
export * from './errors';
export * from './sseParser';
+export * from './streamChunks';
diff --git a/src/core/llm/modelCapabilities.ts b/src/core/llm/modelCapabilities.ts
new file mode 100644
index 00000000..b3b399cf
--- /dev/null
+++ b/src/core/llm/modelCapabilities.ts
@@ -0,0 +1,68 @@
+import type { ProviderType } from '../config/schema';
+import type { ModelCapabilities } from './types';
+
+export interface CapabilityOverride {
+ contextWindow?: number;
+ supportsStreaming?: boolean;
+ supportsTools?: boolean;
+ supportsEmbeddings?: boolean;
+ supportsVision?: boolean;
+ supportsReasoning?: boolean;
+}
+
+export function detectModelCapabilities(
+ providerType: ProviderType,
+ model: string,
+ presetContextWindow = 8192,
+ override: CapabilityOverride = {}
+): ModelCapabilities {
+ const normalized = model.toLowerCase();
+ const base: ModelCapabilities = {
+ contextWindow: presetContextWindow,
+ supportsStreaming: providerType !== 'echo',
+ supportsTools: providerType !== 'echo' && providerType !== 'bedrock',
+ supportsEmbeddings: false,
+ supportsVision: false,
+ supportsReasoning: false,
+ };
+
+ if (providerType === 'echo') {
+ base.supportsStreaming = true;
+ base.supportsTools = false;
+ }
+
+ if (providerType === 'gemini') {
+ base.supportsVision = true;
+ base.supportsReasoning = /thinking|2\.5|pro/.test(normalized);
+ }
+
+ if (providerType === 'anthropic' || providerType === 'bedrock') {
+ base.supportsVision = /claude|sonnet|opus|haiku/.test(normalized);
+ }
+
+ if (providerType === 'openai' || providerType === 'openrouter' || providerType === 'codex') {
+ base.supportsVision = /gpt-4o|gpt-4\.1|o[134]|vision|claude|gemini|sonnet|opus/i.test(model);
+ base.supportsReasoning = /(^|[\/-])o[134]($|[-.])|reason|thinking|sonnet-4|claude-3\.7|claude-sonnet-4/i.test(model);
+ }
+
+ if (providerType === 'deepseek') {
+ base.supportsReasoning = /reasoner|r1/.test(normalized);
+ }
+
+ if (providerType === 'openai-compatible' || providerType === 'cursor') {
+ base.supportsVision = /vision|vl|gpt-4o|gpt-4\.1|llava|qwen.*vl|gemini|claude/.test(normalized);
+ base.supportsReasoning = /reason|thinking|r1|qwen3|o[134]/.test(normalized);
+ }
+
+ return {
+ ...base,
+ ...definedOnly(override),
+ contextWindow: override.contextWindow ?? base.contextWindow,
+ };
+}
+
+function definedOnly(value: T): Partial {
+ return Object.fromEntries(
+ Object.entries(value).filter(([, nested]) => nested !== undefined)
+ ) as Partial;
+}
diff --git a/src/core/llm/providerPresets.ts b/src/core/llm/providerPresets.ts
index e1af32a3..dd49693c 100644
--- a/src/core/llm/providerPresets.ts
+++ b/src/core/llm/providerPresets.ts
@@ -7,7 +7,7 @@ export interface ProviderPreset {
model: string;
contextWindow: number;
requiresApiKey: boolean;
- apiKeyHeader?: 'authorization' | 'x-api-key' | 'query';
+ apiKeyHeader?: 'authorization' | 'api-key' | 'x-api-key' | 'query';
}
export const PROVIDER_PRESETS: ProviderPreset[] = [
@@ -19,6 +19,14 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
contextWindow: 8192,
requiresApiKey: false,
},
+ {
+ type: 'openrouter',
+ label: 'OpenRouter',
+ baseUrl: 'https://openrouter.ai/api/v1',
+ model: 'anthropic/claude-sonnet-4',
+ contextWindow: 200_000,
+ requiresApiKey: true,
+ },
{
type: 'openai',
label: 'OpenAI',
@@ -27,6 +35,23 @@ export const PROVIDER_PRESETS: ProviderPreset[] = [
contextWindow: 128_000,
requiresApiKey: true,
},
+ {
+ type: 'azure-openai',
+ label: 'Azure OpenAI',
+ baseUrl: 'https://your-resource.openai.azure.com',
+ model: 'your-deployment-name',
+ contextWindow: 128_000,
+ requiresApiKey: true,
+ apiKeyHeader: 'api-key',
+ },
+ {
+ type: 'bedrock',
+ label: 'AWS Bedrock',
+ baseUrl: 'https://bedrock-runtime.us-east-1.amazonaws.com',
+ model: 'anthropic.claude-3-5-sonnet-20240620-v1:0',
+ contextWindow: 200_000,
+ requiresApiKey: false,
+ },
{
type: 'anthropic',
label: 'Anthropic (Claude)',
diff --git a/src/core/llm/sseParser.ts b/src/core/llm/sseParser.ts
index d3efca7b..1f9b912c 100644
--- a/src/core/llm/sseParser.ts
+++ b/src/core/llm/sseParser.ts
@@ -33,6 +33,9 @@ export async function* parseSseStream(
choices?: Array<{
delta?: {
content?: string;
+ reasoning?: string;
+ reasoning_content?: string;
+ redacted_reasoning?: string;
tool_calls?: Array<{
index: number;
id?: string;
@@ -55,6 +58,9 @@ export async function* parseSseStream(
if (delta?.content) {
out.content = delta.content;
}
+ if (delta?.reasoning || delta?.reasoning_content || delta?.redacted_reasoning) {
+ out.reasoning = delta.reasoning ?? delta.reasoning_content ?? delta.redacted_reasoning;
+ }
if (delta?.tool_calls) {
out.tool_calls = delta.tool_calls;
}
@@ -63,7 +69,7 @@ export async function* parseSseStream(
out.done = true;
}
- if (out.content || out.tool_calls || out.done) {
+ if (out.content || out.reasoning || out.tool_calls || out.done) {
yield out;
}
} catch (e) {
diff --git a/src/core/llm/streamChunks.ts b/src/core/llm/streamChunks.ts
new file mode 100644
index 00000000..8ac578d0
--- /dev/null
+++ b/src/core/llm/streamChunks.ts
@@ -0,0 +1,15 @@
+import type { AssistantStreamChunk } from './types';
+
+export function chunkContent(chunk: AssistantStreamChunk): string {
+ return typeof chunk === 'string' ? chunk : (chunk.content ?? '');
+}
+
+export function chunkReasoning(chunk: AssistantStreamChunk): string {
+ return typeof chunk === 'string' ? '' : (chunk.reasoning ?? '');
+}
+
+export function toAssistantStreamChunk(content?: string, reasoning?: string): AssistantStreamChunk | undefined {
+ if (reasoning) return { content, reasoning };
+ if (content) return content;
+ return undefined;
+}
diff --git a/src/core/llm/testConnection.ts b/src/core/llm/testConnection.ts
index 29ec737f..6e6ee370 100644
--- a/src/core/llm/testConnection.ts
+++ b/src/core/llm/testConnection.ts
@@ -10,35 +10,54 @@ export interface ProviderConnectionResult {
export async function testOpenAiCompatibleConnection(
baseUrl: string,
model: string,
- apiKey?: string
+ apiKey?: string,
+ options: {
+ headers?: Record;
+ chatCompletionsPath?: string;
+ queryParams?: Record;
+ authHeader?: 'authorization' | 'api-key' | 'x-api-key';
+ } = {}
): Promise {
const root = baseUrl.replace(/\/$/, '');
- const headers: Record = {};
+ const headers: Record = { ...(options.headers ?? {}) };
if (apiKey) {
- headers['Authorization'] = `Bearer ${apiKey}`;
+ if (options.authHeader === 'api-key') {
+ headers['api-key'] = apiKey;
+ } else if (options.authHeader === 'x-api-key') {
+ headers['x-api-key'] = apiKey;
+ } else {
+ headers['Authorization'] = `Bearer ${apiKey}`;
+ }
}
try {
- const modelsRes = await fetch(`${root}/models`, { headers });
- if (modelsRes.ok) {
- const data = (await modelsRes.json()) as { data?: Array<{ id: string }> };
- const models = data.data?.map((m) => m.id) ?? [];
- const hasModel = models.length === 0 || models.some((m) => m === model || m.startsWith(model));
- if (!hasModel && models.length > 0) {
+ if (!options.chatCompletionsPath) {
+ const modelsRes = await fetch(`${root}/models`, { headers });
+ if (modelsRes.ok) {
+ const data = (await modelsRes.json()) as { data?: Array<{ id: string }> };
+ const models = data.data?.map((m) => m.id) ?? [];
+ const hasModel = models.length === 0 || models.some((m) => m === model || m.startsWith(model));
+ if (!hasModel && models.length > 0) {
+ return {
+ ok: false,
+ message: `Connected, but model "${model}" not found. Available: ${models.slice(0, 8).join(', ')}`,
+ models,
+ };
+ }
return {
- ok: false,
- message: `Connected, but model "${model}" not found. Available: ${models.slice(0, 8).join(', ')}`,
+ ok: true,
+ message: `Connected to ${root}. Model "${model}"${models.length ? ' found' : ' (could not list models)'}.`,
models,
};
}
- return {
- ok: true,
- message: `Connected to ${root}. Model "${model}"${models.length ? ' found' : ' (could not list models)'}.`,
- models,
- };
}
- const probe = await fetch(`${root}/chat/completions`, {
+ const probeUrl = new URL(`${root}/${(options.chatCompletionsPath ?? 'chat/completions').replace(/^\//, '')}`);
+ for (const [key, value] of Object.entries(options.queryParams ?? {})) {
+ if (value) probeUrl.searchParams.set(key, value);
+ }
+
+ const probe = await fetch(probeUrl.toString(), {
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body: JSON.stringify({
@@ -134,7 +153,9 @@ export async function testProviderConnection(
providerType: ProviderType,
baseUrl: string,
model: string,
- apiKey?: string
+ apiKey?: string,
+ apiVersion = '2024-10-21',
+ region = 'us-east-1'
): Promise {
if (providerType === 'echo') {
return { ok: true, message: 'Echo mode — no network connection required.' };
@@ -145,8 +166,29 @@ export async function testProviderConnection(
if (providerType === 'gemini') {
return testGeminiConnection(baseUrl, model, apiKey);
}
+ if (providerType === 'bedrock') {
+ return {
+ ok: true,
+ message: `AWS Bedrock configured for ${region}. Mitii will use the AWS default credential chain and model "${model}".`,
+ };
+ }
if (isCloudProvider(providerType) && !apiKey?.trim()) {
return { ok: false, message: `${providerType} requires an API key.` };
}
+ if (providerType === 'openrouter') {
+ return testOpenAiCompatibleConnection(baseUrl, model, apiKey, {
+ headers: {
+ 'HTTP-Referer': 'https://mitii.dev',
+ 'X-Title': 'Mitii Agent',
+ },
+ });
+ }
+ if (providerType === 'azure-openai') {
+ return testOpenAiCompatibleConnection(baseUrl, model, apiKey, {
+ authHeader: 'api-key',
+ chatCompletionsPath: `openai/deployments/${encodeURIComponent(model)}/chat/completions`,
+ queryParams: { 'api-version': apiVersion },
+ });
+ }
return testOpenAiCompatibleConnection(baseUrl, model, apiKey);
}
diff --git a/src/core/llm/types.ts b/src/core/llm/types.ts
index 51e76f10..35fe08dc 100644
--- a/src/core/llm/types.ts
+++ b/src/core/llm/types.ts
@@ -3,6 +3,7 @@ import type { ToolDefinition } from './toolTypes';
export interface ChatMessage {
role: 'system' | 'user' | 'assistant' | 'tool';
content: string;
+ attachments?: ChatImageAttachment[];
name?: string;
tool_call_id?: string;
tool_calls?: Array<{
@@ -12,6 +13,13 @@ export interface ChatMessage {
}>;
}
+export interface ChatImageAttachment {
+ kind: 'image';
+ mimeType: string;
+ data: string;
+ name?: string;
+}
+
export interface ChatRequest {
messages: ChatMessage[];
model?: string;
@@ -20,6 +28,8 @@ export interface ChatRequest {
stream?: boolean;
tools?: ToolDefinition[];
toolChoice?: 'auto' | 'none' | 'required';
+ reasoningEffort?: 'low' | 'medium' | 'high';
+ includeReasoning?: boolean;
}
export interface ToolCallDelta {
@@ -33,17 +43,27 @@ export interface ToolCallDelta {
export interface ChatDelta {
content?: string;
+ reasoning?: string;
done?: boolean;
error?: string;
tool_calls?: ToolCallDelta[];
finish_reason?: string;
}
+export interface AssistantStreamDelta {
+ content?: string;
+ reasoning?: string;
+}
+
+export type AssistantStreamChunk = string | AssistantStreamDelta;
+
export interface ModelCapabilities {
contextWindow: number;
supportsStreaming: boolean;
supportsTools: boolean;
supportsEmbeddings: boolean;
+ supportsVision?: boolean;
+ supportsReasoning?: boolean;
}
export interface LlmProvider {
diff --git a/src/core/mcp/builtinServers.ts b/src/core/mcp/builtinServers.ts
index 37542cff..b5e1b67b 100644
--- a/src/core/mcp/builtinServers.ts
+++ b/src/core/mcp/builtinServers.ts
@@ -7,6 +7,7 @@ export const BUILTIN_MCP_SERVER_NAMES = [
'filesystem',
'memory',
'sequential-thinking',
+ 'puppeteer',
] as const;
export type BuiltinMcpServerName = (typeof BUILTIN_MCP_SERVER_NAMES)[number];
@@ -39,6 +40,15 @@ export function buildBuiltinMcpServers(workspace: string): Record ({
filesystem: true,
memory: true,
sequentialThinking: true,
+ puppeteer: false,
});
export function mcpToggleKeyToServerName(key: keyof McpToggles): string {
- return key === 'sequentialThinking' ? 'sequential-thinking' : key;
+ if (key === 'sequentialThinking') return 'sequential-thinking';
+ return key;
}
export function mcpServerNameToToggleKey(name: string): keyof McpToggles | undefined {
if (name === 'filesystem') return 'filesystem';
if (name === 'memory') return 'memory';
if (name === 'sequential-thinking') return 'sequentialThinking';
+ if (name === 'puppeteer') return 'puppeteer';
return undefined;
}
diff --git a/src/core/microtasks/MicroTaskExecutor.ts b/src/core/microtasks/MicroTaskExecutor.ts
new file mode 100644
index 00000000..2b5de3bc
--- /dev/null
+++ b/src/core/microtasks/MicroTaskExecutor.ts
@@ -0,0 +1,115 @@
+import { readFileSync } from 'fs';
+import { join } from 'path';
+import type { LlmProvider } from '../llm/types';
+import type { SessionLogService } from '../telemetry/SessionLogService';
+import { collectCommitMessageInput, generateCommitMessage, buildCommitMessagePrompt } from '../scm';
+import { estimateChatRequestTokens } from '../llm/UsageTrackingProvider';
+import type { GitService } from '../context/GitService';
+import { GitHistoryCollector } from '../release/GitHistoryCollector';
+import { generateChangelogEntry } from '../release/ChangelogGenerator';
+import { generateReleaseNotes } from '../release/ReleaseNotesGenerator';
+import type { MicroTaskId, MicroTaskResult } from './types';
+
+export interface MicroTaskExecutorDeps {
+ workspace: string;
+ git: GitService;
+ provider?: LlmProvider;
+ sessionLog?: SessionLogService;
+}
+
+export class MicroTaskExecutor {
+ constructor(private readonly deps: MicroTaskExecutorDeps) {}
+
+ async execute(id: MicroTaskId, userMessage: string): Promise {
+ if (id === 'commit_message') return this.generateCommitMessage(userMessage);
+ if (id === 'release_notes_draft') return this.generateReleaseNotes(userMessage);
+ return this.generateChangelogEntry(userMessage);
+ }
+
+ private async generateCommitMessage(_userMessage: string): Promise {
+ if (!this.deps.provider) {
+ throw new Error('No LLM provider configured for commit message generation.');
+ }
+ if (!this.deps.git.isGitRepo) {
+ throw new Error('No Git repository found for this workspace.');
+ }
+ const input = await collectCommitMessageInput(this.deps.git, {
+ stagedDiffMaxChars: 12_000,
+ unstagedDiffMaxChars: 4_000,
+ perFileMaxChars: 2_000,
+ });
+ if (!input.stagedDiff.trim() && input.unstagedDiff?.trim()) {
+ throw new Error('Only unstaged changes found. Stage files before generating a commit message.');
+ }
+ const prompt = buildCommitMessagePrompt(input);
+ this.logContext('commit_message', prompt, {
+ changedFiles: input.changedFiles.length,
+ hasUnstagedDiff: Boolean(input.unstagedDiff?.trim()),
+ });
+ const result = await generateCommitMessage(input, this.deps.provider);
+ return {
+ id: 'commit_message',
+ content: result.fullMessage,
+ metadata: {
+ subject: result.subject,
+ promptTokens: estimateChatRequestTokens({
+ messages: [
+ { role: 'system', content: 'commit' },
+ { role: 'user', content: prompt },
+ ],
+ }),
+ },
+ };
+ }
+
+ private async generateChangelogEntry(userMessage: string): Promise {
+ const collector = new GitHistoryCollector(this.deps.workspace);
+ const latestTag = await collector.getLatestTag();
+ const commits = await collector.getCommitsSinceTag(extractSinceRef(userMessage) ?? latestTag ?? undefined);
+ const version = readPackageVersion(this.deps.workspace);
+ const content = generateChangelogEntry({ commits, version, date: new Date() });
+ this.logContext('changelog_entry', JSON.stringify(commits), {
+ latestTag,
+ commitCount: commits.length,
+ version,
+ });
+ return { id: 'changelog_entry', content, metadata: { latestTag, commitCount: commits.length, version } };
+ }
+
+ private async generateReleaseNotes(userMessage: string): Promise {
+ const collector = new GitHistoryCollector(this.deps.workspace);
+ const latestTag = await collector.getLatestTag();
+ const commits = await collector.getCommitsSinceTag(extractSinceRef(userMessage) ?? latestTag ?? undefined);
+ const version = readPackageVersion(this.deps.workspace);
+ const content = generateReleaseNotes({ commits, version, date: new Date() });
+ this.logContext('release_notes_draft', JSON.stringify(commits), {
+ latestTag,
+ commitCount: commits.length,
+ version,
+ });
+ return { id: 'release_notes_draft', content, metadata: { latestTag, commitCount: commits.length, version } };
+ }
+
+ private logContext(id: MicroTaskId, context: string, data: Record): void {
+ this.deps.sessionLog?.append('microtask_context', `Micro-task context: ${id}`, {
+ id,
+ contextChars: context.length,
+ estimatedTokens: Math.ceil(context.length / 4),
+ ...data,
+ });
+ }
+}
+
+function extractSinceRef(message: string): string | undefined {
+ const match = message.match(/\b(?:since|from)\s+([A-Za-z0-9._/-]+)/i);
+ return match?.[1];
+}
+
+function readPackageVersion(workspace: string): string {
+ try {
+ const pkg = JSON.parse(readFileSync(join(workspace, 'package.json'), 'utf8')) as { version?: string };
+ return pkg.version ?? '0.0.0';
+ } catch {
+ return '0.0.0';
+ }
+}
diff --git a/src/core/microtasks/index.ts b/src/core/microtasks/index.ts
new file mode 100644
index 00000000..bcaff848
--- /dev/null
+++ b/src/core/microtasks/index.ts
@@ -0,0 +1,3 @@
+export * from './types';
+export * from './MicroTaskExecutor';
+
diff --git a/src/core/microtasks/types.ts b/src/core/microtasks/types.ts
new file mode 100644
index 00000000..fd72f981
--- /dev/null
+++ b/src/core/microtasks/types.ts
@@ -0,0 +1,26 @@
+export type MicroTaskId = 'commit_message' | 'changelog_entry' | 'release_notes_draft';
+
+export interface MicroTaskInput {
+ userMessage: string;
+ workspace: string;
+}
+
+export interface MicroTaskResult {
+ id: MicroTaskId;
+ content: string;
+ metadata?: Record;
+}
+
+const MICRO_TASK_PATTERNS: Array<[MicroTaskId, RegExp]> = [
+ ['commit_message', /\b(commit message|commit msg|write commit|git commit)\b/i],
+ ['commit_message', /\b(?:commit|message|subject|summary)\b[\s\S]{0,80}\b(?:staged|stage|cached|git diff)\b/i],
+ ['commit_message', /\b(?:staged|stage|cached|git diff)\b[\s\S]{0,80}\b(?:commit|message|subject|summary)\b/i],
+ ['release_notes_draft', /\b(release notes?|what'?s new)\b/i],
+ ['changelog_entry', /\b(changelog|what changed since)\b/i],
+];
+
+export function detectMicroTask(userMessage: string): MicroTaskId | null {
+ const text = userMessage.trim();
+ if (!text) return null;
+ return MICRO_TASK_PATTERNS.find(([, pattern]) => pattern.test(text))?.[0] ?? null;
+}
diff --git a/src/core/modes/agent/actSkillRouting.ts b/src/core/modes/agent/actSkillRouting.ts
index ea3e7927..b526c088 100644
--- a/src/core/modes/agent/actSkillRouting.ts
+++ b/src/core/modes/agent/actSkillRouting.ts
@@ -11,6 +11,14 @@ export function resolveActSkillNames(intent: ActIntent, taskAnalysis?: TaskAnaly
names.push('audit-cleanup');
}
+ if (/\b(console\.log|inline style|missing types?|type annotations?|eslint|lint|tech debt|code smells?)\b/i.test(taskAnalysis?.summary ?? '')) {
+ names.push('code-smells-and-tech-debt');
+ }
+
+ if (/\b(\.env|environment variable|missing keys?|secrets?|api keys?|tokens?)\b/i.test(taskAnalysis?.summary ?? '')) {
+ names.push('environment-and-secrets');
+ }
+
if (
intent === 'resume_plan' ||
intent === 'bugfix' ||
@@ -77,4 +85,6 @@ ACT SKILLS:
- Call use_skill to load a workspace playbook when the task needs a workflow that is not already injected.
- For bug fixes and failed verification, use debugging-and-error-recovery.
- For implementation and refactors, use test-driven-development when tests or verification strategy are unclear.
-- For cleanup tasks, use audit-cleanup and prefer repository audit scripts over manual grep.`;
+- For cleanup tasks, use audit-cleanup and prefer repository audit scripts over manual grep.
+- For console logs, inline styles, missing types, lint hygiene, or tech debt, use code-smells-and-tech-debt.
+- For .env files, environment variables, keys, tokens, or secrets, use environment-and-secrets and never print secret values.`;
diff --git a/src/core/modes/ask/AskIntentRouter.ts b/src/core/modes/ask/AskIntentRouter.ts
index 9e8bed02..99129cfb 100644
--- a/src/core/modes/ask/AskIntentRouter.ts
+++ b/src/core/modes/ask/AskIntentRouter.ts
@@ -7,7 +7,9 @@ const IMPLEMENT_RE = /\b(how (?:do|would|should) i (?:add|implement|build|create
const DEBUG_RE = /\b(why .+(?:fail|failing|broken|error)|build failing|test failing|root cause|diagnos|debug)\b/i;
const CROSS_PROJECT_RE = /\b(across projects?|between projects?|cross[- ]project|relate to|flow from|agent\s*(?:->|to)\s*docs|docs\s*(?:->|to)\s*agent|extension\s*(?:->|to)\s*website|monorepo)\b/i;
const GENERAL_KNOWLEDGE_RE = /^(what is|what are|define|explain the concept|difference between)\b/i;
-const CODEBASE_RE = /\b(codebase|repo|repository|workspace|project|this app|this extension|this code|our code|src\/|\.tsx?|\.jsx?|\.py|\.go|\.rs|\.mdx?|package\.json)\b/i;
+const CODEBASE_RE = /\b(codebase|repo|repository|workspace|project|this app|this extension|this code|our code|src\/|\.tsx?|\.jsx?|\.py|\.go|\.rs|\.mdx?|package\.json)\b|@[\w./-]+/i;
+const SCM_CONTEXT_RE =
+ /\b(commit message|commit msg|git commit|git diff|working tree|staged changes?|changes? in (?:stage|staging))\b|\b(?:commit|message|subject|summary)\b[\s\S]{0,80}\b(?:staged|stage|cached)\b|\b(?:staged|stage|cached)\b[\s\S]{0,80}\b(?:commit|message|subject|summary)\b/i;
export function routeAskIntent(userMessage: string): AskRoute {
const text = userMessage.trim();
@@ -36,6 +38,7 @@ function classifyAskIntent(text: string): AskIntent {
if (COMPARE_RE.test(text)) return 'compare';
if (ARCHITECTURE_RE.test(text)) return 'architecture';
if (LOCATE_RE.test(text)) return 'locate';
+ if (SCM_CONTEXT_RE.test(text)) return 'explain_code';
if (GENERAL_KNOWLEDGE_RE.test(text) && !CODEBASE_RE.test(text)) return 'general_knowledge';
if (CODEBASE_RE.test(text)) return 'explain_code';
return text.includes('?') ? 'explain_code' : 'general_knowledge';
diff --git a/src/core/modes/plan/planSkillRouting.ts b/src/core/modes/plan/planSkillRouting.ts
index f285d95c..a6d72b66 100644
--- a/src/core/modes/plan/planSkillRouting.ts
+++ b/src/core/modes/plan/planSkillRouting.ts
@@ -14,6 +14,12 @@ export function resolvePlanningSkillNames(
if (intent === 'audit' || taskAnalysis?.kind === 'audit') {
names.push('audit-cleanup');
}
+ if (/\b(console\.log|inline style|missing types?|type annotations?|eslint|lint|tech debt|code smells?)\b/i.test(taskAnalysis?.summary ?? '')) {
+ names.push('code-smells-and-tech-debt');
+ }
+ if (/\b(\.env|environment variable|missing keys?|secrets?|api keys?|tokens?)\b/i.test(taskAnalysis?.summary ?? '')) {
+ names.push('environment-and-secrets');
+ }
if (intent === 'bugfix' || taskAnalysis?.kind === 'question') {
names.push('debugging-and-error-recovery');
}
@@ -67,4 +73,5 @@ PLANNING SKILLS:
- Call use_skill to load a workspace playbook when you need one not already injected below.
- For task breakdown and phased plans, use_skill("planning-and-task-breakdown") if not pre-loaded.
- For skill discovery/routing, use_skill("using-agent-skills") if not pre-loaded.
+- For tech-debt and env/secrets tasks, prefer the bundled script-backed skills before manual inspection.
- Follow loaded skill workflows: dependency graph, vertical slices, acceptance criteria, and verification commands per step.`;
diff --git a/src/core/orchestration/ChatOrchestrator.ts b/src/core/orchestration/ChatOrchestrator.ts
index e8e1dafa..fdbe060f 100644
--- a/src/core/orchestration/ChatOrchestrator.ts
+++ b/src/core/orchestration/ChatOrchestrator.ts
@@ -1,7 +1,8 @@
import * as vscode from 'vscode';
import { randomUUID } from 'crypto';
import type { ThunderDb } from '../indexing/ThunderDb';
-import type { LlmProvider, ChatMessage } from '../llm/types';
+import type { AssistantStreamChunk, LlmProvider, ChatMessage } from '../llm/types';
+import { chunkContent, toAssistantStreamChunk } from '../llm/streamChunks';
import type { ThunderSession } from '../session/ThunderSession';
import type { ContextItem, ContextPack } from '../context/types';
import type {
@@ -69,9 +70,18 @@ import { estimateChatRequestTokens } from '../llm/UsageTrackingProvider';
import { resolveMaxContextItems } from '../context/resolveMaxContextItems';
import { enrichTask } from '../task';
import type { GitHubIssueFetcher } from '../integrations/github';
+import { detectMicroTask, type MicroTaskExecutor } from '../microtasks';
const log = createLogger('ChatOrchestrator');
+export const EMPTY_ASSISTANT_RESPONSE_MESSAGE =
+ 'I did not receive any response from the model for this turn. Please try again, or switch models if it keeps happening.';
+
+export function normalizeAssistantResponse(fullResponse: string): { content: string; wasEmpty: boolean } {
+ if (fullResponse.trim()) return { content: fullResponse, wasEmpty: false };
+ return { content: EMPTY_ASSISTANT_RESPONSE_MESSAGE, wasEmpty: true };
+}
+
export type ContextPackCallback = (pack: ContextPack, views: ContextItemView[], budget: ContextBudgetView) => void;
export type PlanCallback = (plan: PlanView | null) => void;
export type ActivityCallback = (entry: AgentActivityEntry) => void;
@@ -109,6 +119,8 @@ export interface ChatOrchestratorDeps {
githubTokenProvider?: () => Promise;
githubIssueFetchEnabled?: boolean;
githubIssueCommentLimit?: number;
+ microTaskExecutorFactory?: (provider: LlmProvider) => MicroTaskExecutor;
+ microTaskRoutingEnabled?: boolean;
}
export class ChatOrchestrator {
@@ -197,6 +209,14 @@ export class ChatOrchestrator {
});
}
+ private emitEmptyResponse(providerId: string): void {
+ this.emitActivity('error', 'Model returned an empty response', providerId);
+ this.deps.sessionLog?.append('error', 'Model returned an empty response', {
+ provider: providerId,
+ fallbackMessage: EMPTY_ASSISTANT_RESPONSE_MESSAGE,
+ });
+ }
+
private setLiveStatus(
label: string | null,
detail?: string,
@@ -215,8 +235,8 @@ export class ChatOrchestrator {
provider: LlmProvider,
userMessage: string,
recentMessages: ChatMessage[] = [],
- options?: { pinnedContext?: PinnedContextEntry[] }
- ): AsyncIterable {
+ options?: { pinnedContext?: PinnedContextEntry[]; attachments?: ChatMessage['attachments'] }
+ ): AsyncIterable {
this.abortController = new AbortController();
const signal = this.abortController.signal;
const sessionLog = this.deps.sessionLog;
@@ -233,6 +253,40 @@ export class ChatOrchestrator {
auditMode: isAuditCleanupTask(userMessage),
});
+ const microTaskId = this.deps.microTaskRoutingEnabled === false || isApprovalContinuationMessage(userMessage)
+ ? null
+ : detectMicroTask(userMessage);
+ if (microTaskId && this.deps.microTaskExecutorFactory) {
+ this.setLiveStatus('Running micro-task', microTaskId.replace(/_/g, ' '));
+ this.emitActivity('info', `Micro-task route: ${microTaskId}`, 'Using minimal Git/release context and no tools.');
+ sessionTiming.start('microtask');
+ const result = await this.deps.microTaskExecutorFactory(provider).execute(microTaskId, userMessage);
+ sessionTiming.end('microtask', sessionLog, result.metadata);
+ const normalizedResult = normalizeAssistantResponse(result.content);
+ const content = normalizedResult.content;
+ if (normalizedResult.wasEmpty) {
+ this.emitEmptyResponse(provider.id);
+ }
+ this.saveTurn(session.id, 'user', userMessage);
+ const emptyPack = emptyContextPack();
+ await this.finishTurn(
+ session,
+ provider,
+ userMessage,
+ content,
+ emptyPack,
+ [],
+ Math.ceil(content.length / 4),
+ [
+ { role: 'system', content: `Mitii micro-task: ${microTaskId}` },
+ { role: 'user', content: userMessage },
+ ]
+ );
+ yield content;
+ this.setLiveStatus(null);
+ return;
+ }
+
const ws = this.deps.workspace ?? '';
const editor = vscode.window.activeTextEditor;
const rawCurrentFile = editor && ws
@@ -615,7 +669,7 @@ export class ChatOrchestrator {
sharedPlanOptions
)) {
if (signal.aborted) break;
- fullResponse += chunk;
+ fullResponse += chunkContent(chunk);
yield chunk;
}
sessionTiming.end('plan_execution', sessionLog, { resumed: true, stepCount: plan.steps.length });
@@ -773,7 +827,7 @@ export class ChatOrchestrator {
)) {
if (signal.aborted) break;
if (session.mode !== 'plan') {
- fullResponse += chunk;
+ fullResponse += chunkContent(chunk);
yield chunk;
}
}
@@ -853,7 +907,7 @@ export class ChatOrchestrator {
sharedPlanOptions
)) {
if (signal.aborted) break;
- fullResponse += chunk;
+ fullResponse += chunkContent(chunk);
yield chunk;
}
sessionTiming.end('plan_execution', sessionLog, {
@@ -905,7 +959,7 @@ export class ChatOrchestrator {
const isResume = isApprovalContinuationMessage(userMessage);
const taskStateBlock = this.deps.taskState?.buildPromptBlock();
- const messages = buildPrompt(
+ const messages = attachImagesToLastUser(buildPrompt(
session.mode,
pack,
userMessage,
@@ -923,7 +977,7 @@ export class ChatOrchestrator {
actPlan?.promptContext,
...taskEnrichment.contextBlocks
)
- );
+ ), options?.attachments);
const promptTokens = estimateChatRequestTokens({
messages,
tools: tools.length > 0 ? tools : undefined,
@@ -974,7 +1028,7 @@ export class ChatOrchestrator {
}
)) {
if (signal.aborted) break;
- fullResponse += chunk;
+ fullResponse += chunkContent(chunk);
emitLiveTokenUsage();
yield chunk;
}
@@ -1051,7 +1105,7 @@ export class ChatOrchestrator {
}
)) {
if (signal.aborted) break;
- fullResponse += chunk;
+ fullResponse += chunkContent(chunk);
emitLiveTokenUsage();
yield chunk;
}
@@ -1065,12 +1119,20 @@ export class ChatOrchestrator {
if (delta.content) {
fullResponse += delta.content;
emitLiveTokenUsage();
- yield delta.content;
}
+ const chunk = toAssistantStreamChunk(delta.content, delta.reasoning);
+ if (chunk) yield chunk;
if (delta.error) throw new Error(delta.error);
}
}
+ const normalizedResponse = normalizeAssistantResponse(fullResponse);
+ if (normalizedResponse.wasEmpty) {
+ fullResponse = normalizedResponse.content;
+ this.emitEmptyResponse(provider.id);
+ yield fullResponse;
+ }
+
await this.finishTurn(
session,
provider,
@@ -1109,7 +1171,11 @@ export class ChatOrchestrator {
const tokens = promptTokens || estimateChatRequestTokens({ messages: usageMessages });
this.emitTurnTokenUsage(tokens, pack, fullResponse, usageMessages, compacted);
- if (!fullResponse) return;
+ const normalizedResponse = normalizeAssistantResponse(fullResponse);
+ fullResponse = normalizedResponse.content;
+ if (normalizedResponse.wasEmpty) {
+ this.emitEmptyResponse(provider.id);
+ }
this.saveTurn(session.id, 'assistant', fullResponse);
this.deps.sessionLog?.append('assistant_message', fullResponse.slice(0, 200), {
@@ -1324,7 +1390,7 @@ export class ChatOrchestrator {
return Boolean(this.agentLoop?.getSuspendState() && this.suspendContext);
}
- async *resumeAfterApproval(approved: ApprovedToolResult[]): AsyncIterable {
+ async *resumeAfterApproval(approved: ApprovedToolResult[]): AsyncIterable {
if (!this.agentLoop || !this.suspendContext || approved.length === 0) return;
const baseState = this.agentLoop.getSuspendState();
@@ -1377,7 +1443,7 @@ export class ChatOrchestrator {
sharedLoopCallbacks
)) {
if (signal.aborted) break;
- fullResponse += chunk;
+ fullResponse += chunkContent(chunk);
yield chunk;
}
@@ -1716,6 +1782,36 @@ function mergePromptContexts(...blocks: Array): string | und
return [...new Set(merged)].join('\n\n---\n\n');
}
+function attachImagesToLastUser(
+ messages: ChatMessage[],
+ attachments: ChatMessage['attachments'] | undefined
+): ChatMessage[] {
+ const images = attachments?.filter((attachment) => attachment.kind === 'image') ?? [];
+ if (images.length === 0) return messages;
+ const next = [...messages];
+ for (let index = next.length - 1; index >= 0; index -= 1) {
+ if (next[index].role !== 'user') continue;
+ next[index] = {
+ ...next[index],
+ attachments: [...(next[index].attachments ?? []), ...images],
+ };
+ return next;
+ }
+ return [...next, { role: 'user', content: 'Attached image context.', attachments: images }];
+}
+
+function emptyContextPack(): ContextPack {
+ return {
+ items: [],
+ totalTokens: 0,
+ formatted: '',
+ retrievedCount: 0,
+ budgetLimit: 0,
+ dropped: [],
+ truncatedCount: 0,
+ };
+}
+
export function contextPackToBudgetView(pack: ContextPack): ContextBudgetView {
const sourceMap = new Map();
for (const item of pack.items) {
diff --git a/src/core/plans/promptBuilder.ts b/src/core/plans/promptBuilder.ts
index feef8fcd..31ba2be1 100644
--- a/src/core/plans/promptBuilder.ts
+++ b/src/core/plans/promptBuilder.ts
@@ -187,7 +187,7 @@ RULES:
- The user's message may include a block with files/folders they pinned. Treat that as highest priority — focus there first before wider codebase context.
- The user's message includes a ## Codebase Context section with real project files. READ IT and answer from it.
- If ## Codebase Context includes a repo_map/workspace overview, use that provided map first. Do NOT repeatedly call list_files for the same structure unless the map is absent or demonstrably stale.
-- Project rule files in context (AGENTS.md, CLAUDE.md, .mitii/rules, .clinerules, .continue/rules, etc.) are operating instructions for this workspace. Follow them unless they conflict with explicit user instructions or safety policy.
+- \`MITII.md\` in context is the operating instructions file for this workspace. Follow it unless it conflicts with explicit user instructions or safety policy.
- Focus on files and topics the user asked about. Do NOT pivot to unrelated open tabs or linter diagnostics unless the user asked to fix errors.
- NEVER ask the user to paste README, package.json, or source files — they are already in context.
- NEVER say context is "truncated" or "not fully visible" if file content appears in context — use what is provided.
diff --git a/src/core/providers/ProviderProfilesService.ts b/src/core/providers/ProviderProfilesService.ts
new file mode 100644
index 00000000..701939f6
--- /dev/null
+++ b/src/core/providers/ProviderProfilesService.ts
@@ -0,0 +1,182 @@
+import { createHash, randomUUID } from 'crypto';
+import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
+import { join } from 'path';
+import type { ProviderSettingsPayload } from '../config/ui/payloads';
+import { ensureThunderDir } from '../indexing/paths';
+import { createLogger } from '../telemetry/Logger';
+
+const log = createLogger('ProviderProfilesService');
+
+export interface ProviderProfileView {
+ id: string;
+ name: string;
+ providerType: ProviderSettingsPayload['providerType'];
+ baseUrl: string;
+ model: string;
+ apiVersion: string;
+ region: string;
+ contextWindow: number;
+ hasApiKey: boolean;
+}
+
+interface ProviderProfileRecord {
+ id: string;
+ name: string;
+ providerType: ProviderSettingsPayload['providerType'];
+ baseUrl: string;
+ model: string;
+ apiVersion: string;
+ region: string;
+ contextWindow: number;
+ apiKeyHash?: string;
+}
+
+interface ProviderProfilesFile {
+ activeId: string | null;
+ profiles: ProviderProfileRecord[];
+}
+
+export function hashProviderApiKey(key: string): string {
+ return createHash('sha256').update(key.trim()).digest('hex');
+}
+
+export function providerSecretRef(profileId: string): string {
+ return `mitii.provider.${profileId}`;
+}
+
+function providersDir(workspace: string): string {
+ const dir = join(ensureThunderDir(workspace), 'providers');
+ if (!existsSync(dir)) {
+ mkdirSync(dir, { recursive: true });
+ }
+ return dir;
+}
+
+function indexPath(workspace: string): string {
+ return join(providersDir(workspace), 'index.json');
+}
+
+function readProfilesFile(workspace: string): ProviderProfilesFile {
+ const file = indexPath(workspace);
+ if (!existsSync(file)) {
+ return { activeId: null, profiles: [] };
+ }
+ try {
+ const parsed = JSON.parse(readFileSync(file, 'utf-8')) as ProviderProfilesFile;
+ return {
+ activeId: parsed.activeId ?? null,
+ profiles: Array.isArray(parsed.profiles) ? parsed.profiles : [],
+ };
+ } catch (error) {
+ log.warn('Could not read provider profiles', {
+ error: error instanceof Error ? error.message : String(error),
+ });
+ return { activeId: null, profiles: [] };
+ }
+}
+
+function writeProfilesFile(workspace: string, data: ProviderProfilesFile): void {
+ const file = indexPath(workspace);
+ writeFileSync(file, `${JSON.stringify(data, null, 2)}\n`, 'utf-8');
+}
+
+function toView(profile: ProviderProfileRecord): ProviderProfileView {
+ return {
+ id: profile.id,
+ name: profile.name,
+ providerType: profile.providerType,
+ baseUrl: profile.baseUrl,
+ model: profile.model,
+ apiVersion: profile.apiVersion,
+ region: profile.region,
+ contextWindow: profile.contextWindow,
+ hasApiKey: Boolean(profile.apiKeyHash),
+ };
+}
+
+export class ProviderProfilesService {
+ constructor(private readonly workspace: string) {}
+
+ list(): ProviderProfileView[] {
+ if (!this.workspace) return [];
+ return readProfilesFile(this.workspace).profiles.map(toView);
+ }
+
+ getActiveId(): string | null {
+ if (!this.workspace) return null;
+ return readProfilesFile(this.workspace).activeId;
+ }
+
+ getActive(): ProviderProfileView | null {
+ if (!this.workspace) return null;
+ const file = readProfilesFile(this.workspace);
+ const active = file.profiles.find((profile) => profile.id === file.activeId);
+ return active ? toView(active) : null;
+ }
+
+ getById(id: string): ProviderProfileView | null {
+ if (!this.workspace) return null;
+ const profile = readProfilesFile(this.workspace).profiles.find((item) => item.id === id);
+ return profile ? toView(profile) : null;
+ }
+
+ upsert(
+ settings: ProviderSettingsPayload,
+ options: { id?: string; name?: string; apiKey?: string }
+ ): ProviderProfileView {
+ if (!this.workspace.trim()) {
+ throw new Error('Open a workspace to save provider profiles under .mitii/providers.');
+ }
+
+ const file = readProfilesFile(this.workspace);
+ const id = options.id ?? randomUUID();
+ const existing = file.profiles.find((profile) => profile.id === id);
+ const name =
+ options.name?.trim() ||
+ existing?.name ||
+ `${settings.providerType} / ${settings.model}`.slice(0, 64);
+
+ const next: ProviderProfileRecord = {
+ id,
+ name,
+ providerType: settings.providerType,
+ baseUrl: settings.baseUrl.trim(),
+ model: settings.model.trim(),
+ apiVersion: settings.apiVersion?.trim() ?? '',
+ region: settings.region?.trim() ?? '',
+ contextWindow: settings.contextWindow,
+ apiKeyHash:
+ options.apiKey?.trim()
+ ? hashProviderApiKey(options.apiKey)
+ : existing?.apiKeyHash,
+ };
+
+ const profiles = existing
+ ? file.profiles.map((profile) => (profile.id === id ? next : profile))
+ : [...file.profiles, next];
+
+ writeProfilesFile(this.workspace, {
+ activeId: file.activeId ?? id,
+ profiles,
+ });
+
+ return toView(next);
+ }
+
+ setActive(id: string): ProviderProfileView | null {
+ if (!this.workspace.trim()) return null;
+ const file = readProfilesFile(this.workspace);
+ const profile = file.profiles.find((item) => item.id === id);
+ if (!profile) return null;
+ writeProfilesFile(this.workspace, { ...file, activeId: id });
+ return toView(profile);
+ }
+
+ delete(id: string): void {
+ if (!this.workspace.trim()) return;
+ const file = readProfilesFile(this.workspace);
+ const profiles = file.profiles.filter((profile) => profile.id !== id);
+ const activeId = file.activeId === id ? profiles[0]?.id ?? null : file.activeId;
+ writeProfilesFile(this.workspace, { activeId, profiles });
+ }
+}
diff --git a/src/core/release/ChangelogGenerator.ts b/src/core/release/ChangelogGenerator.ts
new file mode 100644
index 00000000..cac6750e
--- /dev/null
+++ b/src/core/release/ChangelogGenerator.ts
@@ -0,0 +1,55 @@
+import type { ConventionalCommit } from './GitHistoryCollector';
+
+export interface ReleaseMarkdownInput {
+ commits: ConventionalCommit[];
+ version: string;
+ date: Date;
+}
+
+export function generateChangelogEntry(input: ReleaseMarkdownInput): string {
+ const date = formatDate(input.date);
+ const groups = groupCommits(input.commits);
+ const lines = [`## [${input.version}] - ${date}`, ''];
+
+ appendSection(lines, 'Breaking', groups.breaking);
+ appendSection(lines, 'Added', groups.added);
+ appendSection(lines, 'Fixed', groups.fixed);
+ appendSection(lines, 'Changed', groups.changed);
+
+ if (input.commits.length === 0) {
+ lines.push('No commits found since the selected tag.', '');
+ }
+ return lines.join('\n').trimEnd() + '\n';
+}
+
+export function insertChangelogEntry(existing: string, entry: string): string {
+ const normalized = existing.trim() || '# Changelog\n\n## [Unreleased]\n';
+ if (/## \[Unreleased\]/.test(normalized)) {
+ return normalized.replace(/(## \[Unreleased\][^\n]*)/, `$1\n\n${entry.trimEnd()}`).trimEnd() + '\n';
+ }
+ return `${normalized}\n\n## [Unreleased]\n\n${entry}`.trimEnd() + '\n';
+}
+
+function groupCommits(commits: ConventionalCommit[]) {
+ return {
+ breaking: commits.filter((c) => c.breaking),
+ added: commits.filter((c) => c.type === 'feat' && !c.breaking),
+ fixed: commits.filter((c) => c.type === 'fix' && !c.breaking),
+ changed: commits.filter((c) => !c.breaking && c.type !== 'feat' && c.type !== 'fix'),
+ };
+}
+
+function appendSection(lines: string[], title: string, commits: ConventionalCommit[]): void {
+ if (commits.length === 0) return;
+ lines.push(`### ${title}`);
+ for (const commit of commits) {
+ const scope = commit.scope ? `**${commit.scope}:** ` : '';
+ const hash = commit.hash ? ` (${commit.hash})` : '';
+ lines.push(`- ${scope}${commit.description}${hash}`);
+ }
+ lines.push('');
+}
+
+function formatDate(date: Date): string {
+ return date.toISOString().slice(0, 10);
+}
diff --git a/src/core/release/GitHistoryCollector.ts b/src/core/release/GitHistoryCollector.ts
new file mode 100644
index 00000000..57560d16
--- /dev/null
+++ b/src/core/release/GitHistoryCollector.ts
@@ -0,0 +1,80 @@
+import simpleGit, { type SimpleGit } from 'simple-git';
+
+export interface ConventionalCommit {
+ hash: string;
+ subject: string;
+ type: string;
+ scope?: string;
+ description: string;
+ breaking: boolean;
+ body?: string;
+}
+
+export class GitHistoryCollector {
+ private readonly git: SimpleGit;
+
+ constructor(workspace: string) {
+ this.git = simpleGit(workspace);
+ }
+
+ async getTags(): Promise {
+ try {
+ const tags = await this.git.tags();
+ return tags.all;
+ } catch {
+ return [];
+ }
+ }
+
+ async getLatestTag(): Promise {
+ try {
+ const tag = await this.git.raw(['describe', '--tags', '--abbrev=0']);
+ return tag.trim() || null;
+ } catch {
+ return null;
+ }
+ }
+
+ async getCommitsSinceTag(tag?: string): Promise {
+ try {
+ const range = tag ? `${tag}..HEAD` : 'HEAD';
+ const raw = await this.git.raw([
+ 'log',
+ range,
+ '--pretty=format:%H%x1f%s%x1f%b%x1e',
+ ]);
+ return raw
+ .split('\x1e')
+ .map((entry) => entry.trim())
+ .filter(Boolean)
+ .map(parseCommitRecord);
+ } catch {
+ return [];
+ }
+ }
+}
+
+export function parseCommitRecord(record: string): ConventionalCommit {
+ const [hash = '', subject = '', body = ''] = record.split('\x1f');
+ const parsed = parseConventionalSubject(subject, body);
+ return {
+ hash: hash.slice(0, 12),
+ subject,
+ body: body.trim() || undefined,
+ ...parsed,
+ };
+}
+
+export function parseConventionalSubject(subject: string, body = ''): Omit {
+ const match = subject.match(/^([a-z]+)(?:\(([^)]+)\))?(!)?:\s+(.+)$/i);
+ const breaking = Boolean(match?.[3]) || /\bBREAKING CHANGE:/i.test(body);
+ if (!match) {
+ return { type: 'other', description: subject.trim(), breaking };
+ }
+ return {
+ type: match[1].toLowerCase(),
+ scope: match[2],
+ description: match[4].trim(),
+ breaking,
+ };
+}
diff --git a/src/core/release/ReleaseNotesGenerator.ts b/src/core/release/ReleaseNotesGenerator.ts
new file mode 100644
index 00000000..9a8d130a
--- /dev/null
+++ b/src/core/release/ReleaseNotesGenerator.ts
@@ -0,0 +1,39 @@
+import type { ReleaseMarkdownInput } from './ChangelogGenerator';
+
+export function generateReleaseNotes(input: ReleaseMarkdownInput): string {
+ const highlights = input.commits.filter((c) => c.type === 'feat' || c.breaking).slice(0, 5);
+ const fixes = input.commits.filter((c) => c.type === 'fix').slice(0, 6);
+ const lines = [`# Mitii ${input.version} Release Notes`, ''];
+
+ if (highlights.length > 0) {
+ lines.push('## Highlights');
+ for (const commit of highlights) {
+ lines.push(`- ${commit.description}`);
+ }
+ lines.push('');
+ }
+
+ if (fixes.length > 0) {
+ lines.push('## Fixes');
+ for (const commit of fixes) {
+ lines.push(`- ${commit.description}`);
+ }
+ lines.push('');
+ }
+
+ const breaking = input.commits.filter((c) => c.breaking);
+ if (breaking.length > 0) {
+ lines.push('## Migration Notes');
+ for (const commit of breaking) {
+ lines.push(`- ${commit.description}`);
+ }
+ lines.push('');
+ }
+
+ if (input.commits.length === 0) {
+ lines.push('No user-facing changes were found for this range.', '');
+ }
+
+ return lines.join('\n').trimEnd() + '\n';
+}
+
diff --git a/src/core/release/index.ts b/src/core/release/index.ts
new file mode 100644
index 00000000..c45503b4
--- /dev/null
+++ b/src/core/release/index.ts
@@ -0,0 +1,4 @@
+export * from './GitHistoryCollector';
+export * from './ChangelogGenerator';
+export * from './ReleaseNotesGenerator';
+
diff --git a/src/core/rules/ProjectRulesService.ts b/src/core/rules/ProjectRulesService.ts
index f4374342..74648d03 100644
--- a/src/core/rules/ProjectRulesService.ts
+++ b/src/core/rules/ProjectRulesService.ts
@@ -1,30 +1,11 @@
-import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
+import { existsSync, readFileSync, statSync } from 'fs';
import { join } from 'path';
import type { ContextItem, ContextQuery, ContextSource } from '../context/types';
import { createLogger } from '../telemetry/Logger';
const log = createLogger('ProjectRulesService');
-const RULE_FILES = [
- 'AGENTS.md',
- 'CLAUDE.md',
- 'WARP.md',
- '.cursorrules',
- '.clinerules',
-];
-
-const RULE_DIRS = [
- '.mitii/rules',
- '.mitii/agents',
- '.mitii/checks',
- '.mitii/prompts',
- '.clinerules',
- '.continue/rules',
- '.continue/agents',
- '.continue/checks',
- '.continue/prompts',
- '.cursor/rules',
-];
+const RULE_FILE = 'MITII.md';
export interface ProjectRuleFile {
relPath: string;
@@ -34,36 +15,15 @@ export interface ProjectRuleFile {
export class ProjectRulesService {
constructor(private readonly workspace: string) {}
- load(maxFiles = 24, maxCharsPerFile = 5000): ProjectRuleFile[] {
+ load(maxCharsPerFile = 5000): ProjectRuleFile[] {
if (!this.workspace) return [];
const files: ProjectRuleFile[] = [];
-
- for (const relPath of RULE_FILES) {
- this.tryAddFile(files, relPath, maxCharsPerFile);
- }
-
- for (const relDir of RULE_DIRS) {
- const absDir = join(this.workspace, relDir);
- if (!existsSync(absDir)) continue;
- if (!statSync(absDir).isDirectory()) continue;
- try {
- for (const entry of walkRuleDir(this.workspace, relDir, 2)) {
- this.tryAddFile(files, entry, maxCharsPerFile);
- if (files.length >= maxFiles) return files;
- }
- } catch (error) {
- log.warn('Could not read rules directory', {
- relDir,
- error: error instanceof Error ? error.message : String(error),
- });
- }
- }
-
- return files.slice(0, maxFiles);
+ this.tryAddFile(files, RULE_FILE, maxCharsPerFile);
+ return files;
}
count(): number {
- return this.load(200, 1).length;
+ return this.load(1).length;
}
private tryAddFile(files: ProjectRuleFile[], relPath: string, maxChars: number): void {
@@ -75,8 +35,11 @@ export class ProjectRulesService {
if (!st.isFile() || st.size > 256_000) return;
const content = readFileSync(abs, 'utf-8').slice(0, maxChars).trim();
if (content) files.push({ relPath, content });
- } catch {
- // Ignore unreadable rule files.
+ } catch (error) {
+ log.warn('Could not read project rules file', {
+ relPath,
+ error: error instanceof Error ? error.message : String(error),
+ });
}
}
}
@@ -98,22 +61,3 @@ export class ProjectRulesContextSource implements ContextSource {
}));
}
}
-
-function walkRuleDir(workspace: string, relDir: string, maxDepth: number): string[] {
- const out: string[] = [];
- const walk = (currentRel: string, depth: number) => {
- if (depth > maxDepth) return;
- const abs = join(workspace, currentRel);
- const entries = readdirSync(abs, { withFileTypes: true });
- for (const entry of entries) {
- const childRel = `${currentRel}/${entry.name}`;
- if (entry.isDirectory()) {
- walk(childRel, depth + 1);
- } else if (/\.(md|mdc)$/i.test(entry.name) || entry.name === '.cursorrules') {
- out.push(childRel);
- }
- }
- };
- walk(relDir, 0);
- return out.sort();
-}
diff --git a/src/core/runtime/AgentLoop.ts b/src/core/runtime/AgentLoop.ts
index 57c4e757..c42fa7ab 100644
--- a/src/core/runtime/AgentLoop.ts
+++ b/src/core/runtime/AgentLoop.ts
@@ -1,5 +1,6 @@
-import type { LlmProvider, ChatMessage } from '../llm/types';
+import type { AssistantStreamChunk, LlmProvider, ChatMessage } from '../llm/types';
import type { ToolDefinition, ToolCall } from '../llm/toolTypes';
+import { toAssistantStreamChunk } from '../llm/streamChunks';
import type { ToolExecutor } from '../safety/ToolExecutor';
import { formatToolResult } from '../tools/builtinTools';
import { NO_TOOLS_AUDIT_NUDGE } from './taskKind';
@@ -109,7 +110,7 @@ export class AgentLoop {
signal?: AbortSignal,
callbacks?: AgentLoopCallbacks,
options?: AgentLoopOptions
- ): AsyncIterable {
+ ): AsyncIterable {
const messages: ChatMessage[] = [...initialMessages];
let pendingApproval = false;
this.lastPendingApproval = false;
@@ -158,8 +159,9 @@ export class AgentLoop {
if (delta.error) throw new Error(delta.error);
if (delta.content) {
stepContent += delta.content;
- yield delta.content;
}
+ const chunk = toAssistantStreamChunk(delta.content, delta.reasoning);
+ if (chunk) yield chunk;
if (delta.tool_calls) {
for (const partial of delta.tool_calls) {
const existing = toolCallsMap.get(partial.index);
@@ -432,7 +434,8 @@ export class AgentLoop {
})) {
if (signal?.aborted) break;
if (delta.error) throw new Error(delta.error);
- if (delta.content) yield delta.content;
+ const chunk = toAssistantStreamChunk(delta.content, delta.reasoning);
+ if (chunk) yield chunk;
if (delta.done) break;
}
}
@@ -447,7 +450,7 @@ export class AgentLoop {
approved: ApprovedToolResult[],
signal?: AbortSignal,
callbacks?: AgentLoopCallbacks
- ): AsyncIterable {
+ ): AsyncIterable {
const messages: ChatMessage[] = state.messages.map((m) => ({ ...m }));
const tools = state.tools;
const options = state.options;
@@ -537,8 +540,9 @@ export class AgentLoop {
if (delta.error) throw new Error(delta.error);
if (delta.content) {
stepContent += delta.content;
- yield delta.content;
}
+ const chunk = toAssistantStreamChunk(delta.content, delta.reasoning);
+ if (chunk) yield chunk;
if (delta.tool_calls) {
for (const partial of delta.tool_calls) {
const existing = toolCallsMap.get(partial.index);
diff --git a/src/core/runtime/PlanExecutor.ts b/src/core/runtime/PlanExecutor.ts
index 1dcc7770..d4bae3aa 100644
--- a/src/core/runtime/PlanExecutor.ts
+++ b/src/core/runtime/PlanExecutor.ts
@@ -1,5 +1,6 @@
-import type { LlmProvider } from '../llm/types';
+import type { AssistantStreamChunk, LlmProvider } from '../llm/types';
import type { ToolDefinition } from '../llm/toolTypes';
+import { chunkContent } from '../llm/streamChunks';
import type { ThunderSession } from '../session/ThunderSession';
import type { PlanPhase, ThunderPlan } from '../plans/PlanActEngine';
import {
@@ -231,7 +232,7 @@ export class PlanExecutor {
maxAutoContinues: options?.planMaxAutoContinues ?? 1,
}
)) {
- output += chunk;
+ output += chunkContent(chunk);
if (output.length > 12_000) {
output = output.slice(-12_000);
}
@@ -251,7 +252,7 @@ export class PlanExecutor {
signal?: AbortSignal,
loopCallbacks?: AgentLoopCallbacks,
options?: PlanExecutorOptions
- ): AsyncIterable {
+ ): AsyncIterable {
this.stepSummaries = [];
this.touchedFiles.clear();
const maxRetries = options?.stepMaxRetries ?? 2;
@@ -392,7 +393,7 @@ export class PlanExecutor {
}
)) {
yield chunk;
- stepOutput += chunk;
+ stepOutput += chunkContent(chunk);
}
pendingApproval = this.agentLoop.hadPendingApproval();
}
@@ -539,7 +540,7 @@ export class PlanExecutor {
signal?: AbortSignal,
loopCallbacks?: AgentLoopCallbacks,
options?: PlanExecutorOptions
- ): AsyncIterable {
+ ): AsyncIterable {
const touchedFiles = options?.touchedFiles ?? Array.from(this.touchedFiles);
const workspaceErrors = await this.collectWorkspaceErrors(touchedFiles);
const verifyContextBlock = options?.workspace
diff --git a/src/core/safety/ToolExecutor.ts b/src/core/safety/ToolExecutor.ts
index 1cc4c1d0..870e6f0c 100644
--- a/src/core/safety/ToolExecutor.ts
+++ b/src/core/safety/ToolExecutor.ts
@@ -137,9 +137,22 @@ export class ToolExecutor {
if (policy.decision === 'require_approval') {
if (!this.approvalQueue.hasApprovalGrant(sessionId, resolvedName)) {
- this.approvalQueue.createRequest(sessionId, resolvedName, input, policy, {
+ const request = this.approvalQueue.createRequest(sessionId, resolvedName, input, policy, {
toolCallId: context?.toolCallId,
});
+ this.sessionLog?.append('approval_request', `${request.kind ?? 'approval'}: ${resolvedName}`, {
+ id: request.id,
+ toolName: request.toolName,
+ kind: request.kind,
+ risk: request.risk,
+ reason: request.reason,
+ files: request.files,
+ contentLength: request.contentLength,
+ question: request.question,
+ options: request.options,
+ optionCount: request.options?.length ?? 0,
+ toolCallId: request.toolCallId,
+ });
this.onPendingApproval?.();
this.logRejectedToolCall(resolvedName, input, false, 'Awaiting approval', 'Awaiting approval');
return { success: false, output: '', pendingApproval: true, error: 'Awaiting approval' };
diff --git a/src/core/scm/GitDiffCollector.ts b/src/core/scm/GitDiffCollector.ts
index 70773409..fa99ae0b 100644
--- a/src/core/scm/GitDiffCollector.ts
+++ b/src/core/scm/GitDiffCollector.ts
@@ -3,7 +3,12 @@ import type { CommitMessageInput } from './commitMessageTypes';
export async function collectCommitMessageInput(
git: GitService,
- options: { scope?: string; stagedDiffMaxChars?: number; unstagedDiffMaxChars?: number } = {}
+ options: {
+ scope?: string;
+ stagedDiffMaxChars?: number;
+ unstagedDiffMaxChars?: number;
+ perFileMaxChars?: number;
+ } = {}
): Promise {
const [stagedDiff, unstagedDiff, changedFiles, recentCommits, branch] = await Promise.all([
git.getStagedDiff(options.stagedDiffMaxChars ?? 16_000),
@@ -14,11 +19,40 @@ export async function collectCommitMessageInput(
]);
return {
- stagedDiff,
- unstagedDiff,
+ stagedDiff: budgetDiff(stagedDiff, {
+ totalMaxChars: options.stagedDiffMaxChars ?? 16_000,
+ perFileMaxChars: options.perFileMaxChars,
+ }),
+ unstagedDiff: budgetDiff(unstagedDiff, {
+ totalMaxChars: options.unstagedDiffMaxChars ?? 8_000,
+ perFileMaxChars: options.perFileMaxChars,
+ }),
changedFiles,
recentCommits,
branch,
scope: options.scope,
};
}
+
+export function budgetDiff(
+ diff: string,
+ options: { totalMaxChars: number; perFileMaxChars?: number }
+): string {
+ if (!diff || diff.length <= options.totalMaxChars && !options.perFileMaxChars) {
+ return diff;
+ }
+
+ const perFileMax = options.perFileMaxChars ?? options.totalMaxChars;
+ const files = diff.split(/(?=^diff --git )/m).filter(Boolean);
+ const budgeted = files.map((fileDiff) => {
+ if (fileDiff.length <= perFileMax) return fileDiff;
+ const header = fileDiff
+ .split(/\r?\n/)
+ .filter((line) => /^(diff --git|index |--- |\+\+\+ |@@ )/.test(line))
+ .join('\n');
+ return `${header}\n[diff truncated: ${fileDiff.length - header.length} chars omitted]\n`;
+ }).join('');
+
+ if (budgeted.length <= options.totalMaxChars) return budgeted;
+ return `${budgeted.slice(0, options.totalMaxChars)}\n[diff truncated: ${budgeted.length - options.totalMaxChars} chars omitted]\n`;
+}
diff --git a/src/core/scm/ReviewDiffCollector.ts b/src/core/scm/ReviewDiffCollector.ts
new file mode 100644
index 00000000..22bf8e4a
--- /dev/null
+++ b/src/core/scm/ReviewDiffCollector.ts
@@ -0,0 +1,95 @@
+import type { GitService } from '../context/GitService';
+import { budgetDiff } from './GitDiffCollector';
+
+export interface ReviewDiffFile {
+ path: string;
+ status: string;
+ additions: number;
+ deletions: number;
+ diff: string;
+}
+
+export interface ReviewDiff {
+ branch: string | null;
+ files: ReviewDiffFile[];
+ summary: {
+ fileCount: number;
+ additions: number;
+ deletions: number;
+ };
+ truncated: boolean;
+ updatedAt: number;
+}
+
+export async function collectReviewDiff(
+ git: GitService,
+ options: { totalMaxChars?: number; perFileMaxChars?: number } = {}
+): Promise {
+ const totalMaxChars = options.totalMaxChars ?? 32_000;
+ const perFileMaxChars = options.perFileMaxChars ?? 8_000;
+ const [branch, changedFiles, stagedDiff, unstagedDiff] = await Promise.all([
+ git.getCurrentBranch(),
+ git.getChangedFilesDetailed(),
+ git.getStagedDiff(totalMaxChars),
+ git.getUnstagedDiff(totalMaxChars),
+ ]);
+
+ const combined = [stagedDiff, unstagedDiff].filter(Boolean).join('\n');
+ const budgeted = budgetDiff(combined, { totalMaxChars, perFileMaxChars });
+ const files = parseReviewDiffFiles(budgeted, changedFiles);
+ return {
+ branch,
+ files,
+ summary: {
+ fileCount: files.length,
+ additions: files.reduce((sum, file) => sum + file.additions, 0),
+ deletions: files.reduce((sum, file) => sum + file.deletions, 0),
+ },
+ truncated: combined.length > budgeted.length || /\[diff truncated:/.test(budgeted),
+ updatedAt: Date.now(),
+ };
+}
+
+export function parseReviewDiffFiles(diff: string, changedFiles: string[] = []): ReviewDiffFile[] {
+ const statusByPath = new Map();
+ for (const line of changedFiles) {
+ const [status, ...pathParts] = line.split(/\s+/);
+ const path = pathParts[pathParts.length - 1];
+ if (status && path) statusByPath.set(path, status);
+ }
+
+ const chunks = diff.split(/(?=^diff --git )/m).filter(Boolean);
+ const parsed = chunks.map((chunk) => {
+ const path = parseDiffPath(chunk);
+ const additions = chunk.split(/\r?\n/).filter((line) => line.startsWith('+') && !line.startsWith('+++')).length;
+ const deletions = chunk.split(/\r?\n/).filter((line) => line.startsWith('-') && !line.startsWith('---')).length;
+ return {
+ path,
+ status: statusByPath.get(path) ?? inferStatus(chunk),
+ additions,
+ deletions,
+ diff: chunk.trimEnd(),
+ };
+ });
+
+ if (parsed.length > 0) return parsed;
+ return [...statusByPath.entries()].map(([path, status]) => ({
+ path,
+ status,
+ additions: 0,
+ deletions: 0,
+ diff: '',
+ }));
+}
+
+function parseDiffPath(chunk: string): string {
+ const header = chunk.match(/^diff --git a\/(.+?) b\/(.+)$/m);
+ return header?.[2] ?? header?.[1] ?? 'unknown';
+}
+
+function inferStatus(chunk: string): string {
+ if (/^new file mode /m.test(chunk)) return 'A';
+ if (/^deleted file mode /m.test(chunk)) return 'D';
+ if (/^rename from /m.test(chunk)) return 'R';
+ return 'M';
+}
diff --git a/src/core/scm/index.ts b/src/core/scm/index.ts
index cd5f66c1..bff3fe06 100644
--- a/src/core/scm/index.ts
+++ b/src/core/scm/index.ts
@@ -2,3 +2,4 @@ export * from './commitMessageTypes';
export * from './commitMessagePrompt';
export * from './CommitMessageGenerator';
export * from './GitDiffCollector';
+export * from './ReviewDiffCollector';
diff --git a/src/core/session/ThunderSession.ts b/src/core/session/ThunderSession.ts
index babe2fbe..93b54d34 100644
--- a/src/core/session/ThunderSession.ts
+++ b/src/core/session/ThunderSession.ts
@@ -31,13 +31,17 @@ export class ThunderSession {
readonly createdAt: number;
updatedAt: number;
- constructor(workspace: string, mode: ThunderMode = 'plan') {
- this.id = randomUUID();
+ constructor(
+ workspace: string,
+ mode: ThunderMode = 'plan',
+ restored?: { id?: string; title?: string | null; createdAt?: number; updatedAt?: number }
+ ) {
+ this.id = restored?.id?.trim() || randomUUID();
this.workspace = workspace;
this.mode = normalizeThunderMode(mode);
- this.title = null;
- this.createdAt = Date.now();
- this.updatedAt = this.createdAt;
+ this.title = restored?.title ?? null;
+ this.createdAt = restored?.createdAt ?? Date.now();
+ this.updatedAt = restored?.updatedAt ?? this.createdAt;
}
touch(): void {
diff --git a/bundled-skills/README.md b/src/core/skills/bundled/README.md
similarity index 100%
rename from bundled-skills/README.md
rename to src/core/skills/bundled/README.md
diff --git a/bundled-skills/audit-cleanup/SKILL.md b/src/core/skills/bundled/audit-cleanup/SKILL.md
similarity index 62%
rename from bundled-skills/audit-cleanup/SKILL.md
rename to src/core/skills/bundled/audit-cleanup/SKILL.md
index e4cf41ba..0f2ef03d 100644
--- a/bundled-skills/audit-cleanup/SKILL.md
+++ b/src/core/skills/bundled/audit-cleanup/SKILL.md
@@ -14,12 +14,15 @@ Scripts use AST parsing and finish in **~3s**.
1. `execute_workspace_script({ script: "audit-dependencies.mjs" })` — depcheck, all deps at once
2. `execute_workspace_script({ script: "audit-dead-code.sh" })` — knip: unused files, deps, exports
-3. read_file `package.json` only if scripts are unavailable
-4. Classify: **high** (safe), **medium** (likely), **low** (review)
-5. Plan mode: report only. Act mode: remove after user confirms
+3. `execute_workspace_script({ script: "check-circular-deps.mjs" })` — dependency cycles and import graph risks
+4. `execute_workspace_script({ script: "audit-package-engines.mjs" })` — Node/npm/VS Code engine drift
+5. read_file `package.json` only if scripts are unavailable
+6. Classify: **high** (safe), **medium** (likely), **low** (review)
+7. Plan mode: report only. Act mode: remove after user confirms
## Do NOT
- spawn_research_agent to grep each dependency
- search package-by-package through 18 prod + 46 dev deps
- re-run depcheck after script output is in chat history
+- replace deterministic scripts with LLM-only investigation
diff --git a/src/core/skills/bundled/browser-testing-with-devtools/SKILL.md b/src/core/skills/bundled/browser-testing-with-devtools/SKILL.md
new file mode 100644
index 00000000..86b40358
--- /dev/null
+++ b/src/core/skills/bundled/browser-testing-with-devtools/SKILL.md
@@ -0,0 +1,39 @@
+---
+name: browser-testing-with-devtools
+description: Browser automation and UI verification with Puppeteer MCP for React, Next.js, and web apps.
+---
+
+# Browser testing with Puppeteer
+
+Use this skill when validating UI behavior, screenshots, or client-side flows in JavaScript web apps.
+
+## When to use
+
+- React / Next.js / Vite UI verification
+- Screenshot or DOM assertions after Agent edits
+- Smoke-testing pages in benchmark or CI fixtures
+
+## MCP setup
+
+Mitii preloads `@modelcontextprotocol/server-puppeteer` when `thunder.mcp.builtinServers.puppeteer` is enabled.
+
+Headless CLI:
+
+```bash
+mitii agent "Open the home page and verify the title" --runtime real --enable-puppeteer --approval auto
+```
+
+## Tools
+
+- `mcp__puppeteer__puppeteer_navigate`
+- `mcp__puppeteer__puppeteer_screenshot`
+- `mcp__puppeteer__puppeteer_click`
+- `mcp__puppeteer__puppeteer_fill`
+- `mcp__puppeteer__puppeteer_evaluate`
+
+## Workflow
+
+1. Start or assume a local dev server (`npm run dev`) when testing a fixture repo.
+2. Navigate to the page under test.
+3. Capture screenshot or evaluate DOM selectors.
+4. Report pass/fail with evidence in the session log.
diff --git a/bundled-skills/code-review-and-quality/SKILL.md b/src/core/skills/bundled/code-review-and-quality/SKILL.md
similarity index 100%
rename from bundled-skills/code-review-and-quality/SKILL.md
rename to src/core/skills/bundled/code-review-and-quality/SKILL.md
diff --git a/src/core/skills/bundled/code-smells-and-tech-debt/SKILL.md b/src/core/skills/bundled/code-smells-and-tech-debt/SKILL.md
new file mode 100644
index 00000000..e92e4138
--- /dev/null
+++ b/src/core/skills/bundled/code-smells-and-tech-debt/SKILL.md
@@ -0,0 +1,31 @@
+---
+name: code-smells-and-tech-debt
+description: Find and classify console logs, inline styles, missing type annotations, and targeted lint issues. Use for tech-debt cleanup, lint hygiene, console.log removal, style cleanup, and missing TypeScript types.
+---
+
+# Code Smells and Tech Debt
+
+Use deterministic scripts first, then inspect only the files that matter. Do not run broad manual grep before the scripts have summarized the workspace.
+
+## Steps
+
+1. `execute_workspace_script({ script: "find-console-logs.sh" })` — report committed debugging logs and risky console usage
+2. `execute_workspace_script({ script: "find-inline-styles.sh" })` — report inline style usage that may violate UI conventions
+3. `execute_workspace_script({ script: "check-missing-types.sh" })` — report missing annotations and weak typing hotspots
+4. `execute_workspace_script({ script: "safe-lint-target.sh", args: [""] })` — run targeted lint/type checks only after choosing touched files
+5. Classify findings:
+ - **fix now**: unsafe logs, obvious type holes, lint errors in touched files
+ - **defer**: broad refactors, generated files, low-risk style cleanup outside scope
+ - **ignore**: intentional diagnostics, examples, tests where console output is asserted
+
+## Mode Rules
+
+- Plan mode: report findings, risk, and proposed fix order only.
+- Act mode: make scoped fixes after the task explicitly asks for cleanup or after the user approves the finding list.
+- Keep behavioral changes separate from mechanical cleanup unless the cleanup is required to fix the bug.
+
+## Do NOT
+
+- edit generated files or vendored code
+- convert every inline style during an unrelated task
+- rerun the same script when its fresh output is already present in chat history
diff --git a/bundled-skills/debugging-and-error-recovery/SKILL.md b/src/core/skills/bundled/debugging-and-error-recovery/SKILL.md
similarity index 100%
rename from bundled-skills/debugging-and-error-recovery/SKILL.md
rename to src/core/skills/bundled/debugging-and-error-recovery/SKILL.md
diff --git a/src/core/skills/bundled/environment-and-secrets/SKILL.md b/src/core/skills/bundled/environment-and-secrets/SKILL.md
new file mode 100644
index 00000000..fdcaeaf8
--- /dev/null
+++ b/src/core/skills/bundled/environment-and-secrets/SKILL.md
@@ -0,0 +1,28 @@
+---
+name: environment-and-secrets
+description: Safely inspect environment variable templates, missing keys, and secret setup without exposing secret values. Use for .env, env.example, missing environment variable, API key, token, and secret configuration tasks.
+---
+
+# Environment and Secrets
+
+Secrets are operational data, not chat content. Report key names and file paths, never values.
+
+## Steps
+
+1. `execute_workspace_script({ script: "sync-env-files.mjs" })` — compare `.env*` files with templates and report missing keys
+2. Read `.env.example`, `.env.template`, or documented config files when script output points to them.
+3. Report missing keys by name only, grouped by file.
+4. Guide the user to fill local `.env` files from committed examples.
+5. If code changes are needed, update validation, docs, or examples without committing real credentials.
+
+## Safety Rules
+
+- Never print, summarize, or transform secret values.
+- Never copy values from `.env` into docs, tests, logs, prompts, or generated files.
+- Prefer placeholder values such as `YOUR_API_KEY_HERE`.
+- If a secret is already exposed in tracked files, stop and report it as a security concern.
+
+## Mode Rules
+
+- Plan mode: produce a remediation checklist only.
+- Act mode: update examples, validation, and docs; do not create real secrets.
diff --git a/bundled-skills/git-workflow-and-versioning/SKILL.md b/src/core/skills/bundled/git-workflow-and-versioning/SKILL.md
similarity index 95%
rename from bundled-skills/git-workflow-and-versioning/SKILL.md
rename to src/core/skills/bundled/git-workflow-and-versioning/SKILL.md
index d17d7995..fd23c0a3 100644
--- a/bundled-skills/git-workflow-and-versioning/SKILL.md
+++ b/src/core/skills/bundled/git-workflow-and-versioning/SKILL.md
@@ -210,6 +210,18 @@ This pattern catches wrong assumptions early and gives reviewers a clear map of
## Pre-Commit Hygiene
+When Mitii workspace scripts are available, run the safety helpers before commit-sensitive work:
+
+```bash
+npm run git:untracked
+npm run checkpoint:write
+npm run checkpoint:read
+```
+
+- `list-untracked-files.sh` before committing so new files are intentionally included or ignored.
+- `write-checkpoint.sh` before an approval pause or risky edit batch.
+- `read-checkpoint.sh` on resume so the next step starts from the saved state rather than stale memory.
+
Before every commit:
```bash
diff --git a/bundled-skills/performance-optimization/SKILL.md b/src/core/skills/bundled/performance-optimization/SKILL.md
similarity index 100%
rename from bundled-skills/performance-optimization/SKILL.md
rename to src/core/skills/bundled/performance-optimization/SKILL.md
diff --git a/bundled-skills/planning-and-task-breakdown/SKILL.md b/src/core/skills/bundled/planning-and-task-breakdown/SKILL.md
similarity index 100%
rename from bundled-skills/planning-and-task-breakdown/SKILL.md
rename to src/core/skills/bundled/planning-and-task-breakdown/SKILL.md
diff --git a/bundled-skills/test-driven-development/SKILL.md b/src/core/skills/bundled/test-driven-development/SKILL.md
similarity index 100%
rename from bundled-skills/test-driven-development/SKILL.md
rename to src/core/skills/bundled/test-driven-development/SKILL.md
diff --git a/bundled-skills/using-agent-skills/SKILL.md b/src/core/skills/bundled/using-agent-skills/SKILL.md
similarity index 95%
rename from bundled-skills/using-agent-skills/SKILL.md
rename to src/core/skills/bundled/using-agent-skills/SKILL.md
index 975fb5c2..c93834be 100644
--- a/bundled-skills/using-agent-skills/SKILL.md
+++ b/src/core/skills/bundled/using-agent-skills/SKILL.md
@@ -160,7 +160,7 @@ For a complete feature, the typical skill sequence is:
16. shipping-and-launch → Deploy safely
```
-Not every task needs every skill. A bug fix might only need: `debugging-and-error-recovery` → `test-driven-development` → `code-review-and-quality`.
+Not every task needs every skill. A bug fix might only need: `debugging-and-error-recovery` → `test-driven-development` → `code-review-and-quality`. A cleanup task might need: `audit-cleanup` → `code-smells-and-tech-debt` → `git-workflow-and-versioning`.
## Quick Reference
@@ -179,9 +179,12 @@ Not every task needs every skill. A bug fix might only need: `debugging-and-erro
| Verify | test-driven-development | Failing test first, then make it pass |
| Verify | browser-testing-with-devtools | Chrome DevTools MCP for runtime verification |
| Verify | debugging-and-error-recovery | Reproduce → localize → fix → guard |
+| Verify | audit-cleanup | Script-first dependency, dead-code, cycle, and engines audit |
+| Verify | code-smells-and-tech-debt | Console logs, inline styles, missing types, and targeted lint cleanup |
| Review | code-review-and-quality | Five-axis review with quality gates |
| Review | code-simplification | Preserve behavior while reducing unnecessary complexity |
| Review | security-and-hardening | OWASP prevention, input validation, least privilege |
+| Review | environment-and-secrets | Env/template drift and secret handling without exposing values |
| Review | performance-optimization | Measure first, optimize only what matters |
| Ship | git-workflow-and-versioning | Atomic commits, clean history |
| Ship | ci-cd-and-automation | Automated quality gates on every change |
diff --git a/src/core/skills/installBundledSkills.ts b/src/core/skills/installBundledSkills.ts
index 27029f49..46c4b45b 100644
--- a/src/core/skills/installBundledSkills.ts
+++ b/src/core/skills/installBundledSkills.ts
@@ -1,6 +1,7 @@
import { cpSync, existsSync, mkdirSync, readdirSync, readFileSync, statSync } from 'fs';
import { basename, join } from 'path';
import { createLogger } from '../telemetry/Logger';
+import { resolveBundledSkillsRoot } from './resolveBundledSkillsRoot';
const log = createLogger('BundledSkills');
@@ -17,14 +18,14 @@ export function installBundledSkills(
extensionRoot: string,
options: { force?: boolean } = {}
): InstallBundledSkillsResult {
- const bundledRoot = join(extensionRoot, 'bundled-skills');
+ const bundledRoot = resolveBundledSkillsRoot(extensionRoot);
const destinationRoot = join(workspace, '.mitii', 'skills');
const installed: string[] = [];
const skipped: string[] = [];
- if (!existsSync(bundledRoot)) {
- log.warn('Bundled skills directory missing', { bundledRoot });
- return { installed, skipped, bundledRoot, destinationRoot };
+ if (!bundledRoot || !existsSync(bundledRoot)) {
+ log.warn('Bundled skills directory missing', { extensionRoot });
+ return { installed, skipped, bundledRoot: bundledRoot ?? '', destinationRoot };
}
mkdirSync(destinationRoot, { recursive: true });
@@ -71,14 +72,14 @@ export function installBundledSkills(
}
export function listBundledSkillNames(extensionRoot: string): string[] {
- const bundledRoot = join(extensionRoot, 'bundled-skills');
- if (!existsSync(bundledRoot)) return [];
+ const bundledRoot = resolveBundledSkillsRoot(extensionRoot);
+ if (!bundledRoot || !existsSync(bundledRoot)) return [];
return listBundledSkillDirs(bundledRoot).map((dir) => basename(dir)).sort();
}
export function readBundledSkillManifest(extensionRoot: string): Array<{ name: string; description: string }> {
- const bundledRoot = join(extensionRoot, 'bundled-skills');
- if (!existsSync(bundledRoot)) return [];
+ const bundledRoot = resolveBundledSkillsRoot(extensionRoot);
+ if (!bundledRoot || !existsSync(bundledRoot)) return [];
return listBundledSkillDirs(bundledRoot).map((dir) => {
const content = readFileSync(join(dir, 'SKILL.md'), 'utf8');
diff --git a/src/core/skills/resolveBundledSkillsRoot.ts b/src/core/skills/resolveBundledSkillsRoot.ts
new file mode 100644
index 00000000..fdcb08e1
--- /dev/null
+++ b/src/core/skills/resolveBundledSkillsRoot.ts
@@ -0,0 +1,32 @@
+import { existsSync, readdirSync, statSync } from 'fs';
+import { join } from 'path';
+
+const CANDIDATE_SUFFIXES = [
+ 'src/core/skills/bundled',
+ 'dist/core/skills/bundled',
+] as const;
+
+/** Resolve bundled skills root from the source tree or compiled extension output. */
+export function resolveBundledSkillsRoot(packageRoot: string): string | undefined {
+ for (const suffix of CANDIDATE_SUFFIXES) {
+ const candidate = join(packageRoot, suffix);
+ if (hasSkillDirs(candidate)) return candidate;
+ }
+ return undefined;
+}
+
+function hasSkillDirs(root: string): boolean {
+ if (!existsSync(root)) return false;
+ try {
+ return readdirSync(root).some((entry) => {
+ const abs = join(root, entry);
+ try {
+ return statSync(abs).isDirectory() && existsSync(join(abs, 'SKILL.md'));
+ } catch {
+ return false;
+ }
+ });
+ } catch {
+ return false;
+ }
+}
diff --git a/src/core/telemetry/SessionLogService.ts b/src/core/telemetry/SessionLogService.ts
index 19a504a0..2b17b68c 100644
--- a/src/core/telemetry/SessionLogService.ts
+++ b/src/core/telemetry/SessionLogService.ts
@@ -2,6 +2,7 @@ import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } fr
import { join } from 'path';
import { AGENT_NAME } from '../../shared/brand';
import { createLogger } from './Logger';
+import { WebhookEmitter, type WebhookEmitterConfig } from './WebhookEmitter';
const log = createLogger('SessionLogService');
@@ -29,7 +30,9 @@ export type SessionLogEventType =
| 'index_start'
| 'index_complete'
| 'turn_complete'
- | 'ui_trace';
+ | 'ui_trace'
+ | 'microtask_context'
+ | 'audit_export';
export interface SessionLogEvent {
ts: number;
@@ -52,6 +55,7 @@ export class SessionLogService {
private sessionId = '';
private logPath = '';
private logStartedAt = 0;
+ private webhookEmitter = new WebhookEmitter();
configure(workspace: string, sessionId: string, enabled = true, debugMetrics = false): void {
const sessionChanged = this.sessionId !== sessionId;
@@ -82,6 +86,10 @@ export class SessionLogService {
return this.debugMetrics;
}
+ configureWebhook(config: WebhookEmitterConfig): void {
+ this.webhookEmitter.configure(config);
+ }
+
getLogPath(): string {
return this.logPath;
}
@@ -126,6 +134,7 @@ export class SessionLogService {
try {
appendFileSync(this.logPath, `${JSON.stringify(event)}\n`, 'utf-8');
+ this.webhookEmitter.emit(event);
} catch (error) {
log.warn('Failed to append session log', {
error: error instanceof Error ? error.message : String(error),
@@ -160,6 +169,14 @@ export class SessionLogService {
message: 'Session started',
data: header,
})}\n`, 'utf-8');
+ this.webhookEmitter.emit({
+ ts,
+ time: formatTimestampForLog(ts),
+ sessionId: this.sessionId,
+ type: 'session_start',
+ message: 'Session started',
+ data: sanitizeLogData(header),
+ });
} catch (error) {
log.warn('Failed to write session log header', {
error: error instanceof Error ? error.message : String(error),
diff --git a/src/core/telemetry/WebhookEmitter.ts b/src/core/telemetry/WebhookEmitter.ts
new file mode 100644
index 00000000..29c8ee2e
--- /dev/null
+++ b/src/core/telemetry/WebhookEmitter.ts
@@ -0,0 +1,92 @@
+import { createHmac } from 'crypto';
+import type { SessionLogEvent } from './SessionLogService';
+import { createLogger } from './Logger';
+
+const log = createLogger('WebhookEmitter');
+
+export interface WebhookEmitterConfig {
+ url?: string;
+ secret?: string;
+ timeoutMs?: number;
+ maxRetries?: number;
+}
+
+export class WebhookEmitter {
+ private url = '';
+ private secret = '';
+ private timeoutMs = 5000;
+ private maxRetries = 2;
+ private queue: Promise = Promise.resolve();
+
+ configure(config: WebhookEmitterConfig): void {
+ this.url = config.url?.trim() ?? '';
+ this.secret = config.secret ?? '';
+ this.timeoutMs = config.timeoutMs ?? 5000;
+ this.maxRetries = config.maxRetries ?? 2;
+ }
+
+ isEnabled(): boolean {
+ return Boolean(this.url);
+ }
+
+ emit(event: SessionLogEvent): void {
+ if (!this.isEnabled()) return;
+ const payload = JSON.stringify(event);
+ this.queue = this.queue
+ .then(() => this.postWithRetry(payload))
+ .catch((error) => {
+ log.warn('Webhook delivery failed', {
+ error: error instanceof Error ? error.message : String(error),
+ });
+ });
+ }
+
+ async flush(): Promise {
+ await this.queue;
+ }
+
+ private async postWithRetry(payload: string): Promise {
+ let lastError: unknown;
+ for (let attempt = 0; attempt <= this.maxRetries; attempt += 1) {
+ try {
+ await this.post(payload);
+ return;
+ } catch (error) {
+ lastError = error;
+ if (attempt < this.maxRetries) {
+ await sleep(250 * (attempt + 1));
+ }
+ }
+ }
+ throw lastError instanceof Error ? lastError : new Error(String(lastError));
+ }
+
+ private async post(payload: string): Promise {
+ const controller = new AbortController();
+ const timer = setTimeout(() => controller.abort(), this.timeoutMs);
+ try {
+ const headers: Record = {
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'Mitii-AI-Agent',
+ };
+ if (this.secret) {
+ headers['X-Mitii-Signature'] = `sha256=${createHmac('sha256', this.secret).update(payload).digest('hex')}`;
+ }
+ const response = await fetch(this.url, {
+ method: 'POST',
+ headers,
+ body: payload,
+ signal: controller.signal,
+ });
+ if (!response.ok) {
+ throw new Error(`Webhook returned ${response.status}`);
+ }
+ } finally {
+ clearTimeout(timer);
+ }
+ }
+}
+
+function sleep(ms: number): Promise {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
diff --git a/src/core/telemetry/index.ts b/src/core/telemetry/index.ts
index f450b9ed..04ed8647 100644
--- a/src/core/telemetry/index.ts
+++ b/src/core/telemetry/index.ts
@@ -1,3 +1,4 @@
export * from './Logger';
export * from './errors';
export * from './SessionLogService';
+export * from './WebhookEmitter';
diff --git a/src/core/util/paths.ts b/src/core/util/paths.ts
index 71849bf3..e4ddce6b 100644
--- a/src/core/util/paths.ts
+++ b/src/core/util/paths.ts
@@ -1,6 +1,6 @@
import { AGENT_NAME } from '../../shared/brand';
import * as vscode from 'vscode';
-import { basename, dirname, join, relative, resolve, isAbsolute } from 'path';
+import { basename, dirname, join, relative, resolve, isAbsolute, win32 } from 'path';
import { existsSync, readdirSync, statSync } from 'fs';
/**
@@ -9,6 +9,9 @@ import { existsSync, readdirSync, statSync } from 'fs';
export function normalizeWorkspaceRoot(workspaceRoot: string | undefined | null): string | null {
if (!workspaceRoot?.trim()) return null;
const trimmed = workspaceRoot.trim();
+ if (isWindowsAbsolutePath(trimmed)) {
+ return win32.normalize(trimmed);
+ }
const abs = resolve(isAbsolute(trimmed) ? trimmed : resolve(trimmed));
if (!abs) return null;
return abs;
@@ -87,6 +90,12 @@ export function resolveWorkspaceRelPath(
if (!trimmed || trimmed === '.' || trimmed === './') return '';
const normalized = trimmed.replace(/\\/g, '/');
+ if (isWindowsAbsolutePath(trimmed)) {
+ const relPath = win32.relative(win32.normalize(workspace), win32.normalize(trimmed));
+ if (!relPath || relPath === '.') return '';
+ if (relPath.startsWith('..') || isWindowsAbsolutePath(relPath)) return null;
+ return normalizeRelPath(relPath);
+ }
if (isAbsolute(normalized)) {
const relPath = relative(normalizedWorkspace, resolve(normalized)).replace(/\\/g, '/');
@@ -126,6 +135,10 @@ export function resolveWorkspaceRelPath(
return relPath;
}
+function isWindowsAbsolutePath(value: string): boolean {
+ return /^[A-Za-z]:[\\/]/.test(value) || /^\\\\[^\\]+\\[^\\]+/.test(value);
+}
+
/** Common extension / naming variants when a path is missing. */
export function pathExistenceVariants(relPath: string): string[] {
const variants = new Set([relPath]);
diff --git a/src/extension.ts b/src/extension.ts
index f44cb809..85fd66c8 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -4,6 +4,7 @@ import { registerCommands } from './vscode/commands';
import { ThunderWebviewProvider } from './vscode/webview/ThunderWebviewProvider';
import { createLogger } from './core/telemetry/Logger';
import { AGENT_FULL_NAME } from './shared/brand';
+import { notifyNativeModuleHealth } from './vscode/nativeModuleHealth';
const log = createLogger('extension');
@@ -12,6 +13,7 @@ let webviewProvider: ThunderWebviewProvider | undefined;
export async function activate(context: vscode.ExtensionContext): Promise {
log.info(`${AGENT_FULL_NAME} activating`);
+ void notifyNativeModuleHealth();
controller = new ThunderController(context);
await controller.initialize();
diff --git a/src/node/cli.ts b/src/node/cli.ts
new file mode 100644
index 00000000..57bcb0f0
--- /dev/null
+++ b/src/node/cli.ts
@@ -0,0 +1,200 @@
+#!/usr/bin/env node
+import { existsSync, readFileSync, writeFileSync } from 'fs';
+import { join, resolve } from 'path';
+import { AuditPackBuilder, verifyAuditPack } from '../core/audit';
+import { HeadlessAgentHost, generateHeadlessChangelog, prepareHeadlessRelease } from '../core/headless';
+import type { HeadlessRuntime } from '../core/headless/HeadlessConfig';
+import type { ProviderType } from '../core/config/schema';
+
+async function main(argv: string[]): Promise {
+ const [command, ...args] = argv;
+ const cwd = resolve(valueOf(args, '--cwd') ?? process.cwd());
+ const since = valueOf(args, '--since');
+ const json = args.includes('--json');
+ const prompt = positional(args).join(' ').trim();
+
+ if (!command || command === '--help' || command === 'help') {
+ printHelp();
+ return 0;
+ }
+
+ if (command === 'changelog') {
+ const changelog = await generateHeadlessChangelog(cwd, since);
+ process.stdout.write(json ? JSON.stringify({ changelog }, null, 2) + '\n' : changelog);
+ return 0;
+ }
+
+ if (command === 'prepare-release') {
+ const result = await prepareHeadlessRelease(cwd, since);
+ process.stdout.write(json ? JSON.stringify(result, null, 2) + '\n' : result.releaseNotes);
+ return 0;
+ }
+
+ if (command === 'export-audit') {
+ const session = valueOf(args, '--session');
+ const output = valueOf(args, '--output') ?? join(cwd, `.mitii/audit/mitii-audit-${Date.now()}.zip`);
+ const logPath = session && existsSync(session) ? session : latestSessionLog(cwd);
+ const pack = new AuditPackBuilder().build({
+ sessionId: session ?? 'headless',
+ workspace: cwd,
+ extensionVersion: readPackageVersion(cwd),
+ logPath,
+ summaryMarkdown: logPath ? `# Mitii audit export\n\nLog: ${logPath}\n` : '# Mitii audit export\n\nNo session log found.\n',
+ });
+ writeFileSync(output, pack.buffer);
+ process.stdout.write(json ? JSON.stringify({ output, entries: pack.entries }, null, 2) + '\n' : `${output}\n`);
+ return 0;
+ }
+
+ if (command === 'verify-audit') {
+ const target = positional(args)[0];
+ if (!target) {
+ process.stderr.write('verify-audit requires a zip path.\n');
+ return 2;
+ }
+ const result = verifyAuditPack(readFileSync(resolve(cwd, target)), process.env.MITII_AUDIT_SIGNING_KEY);
+ process.stdout.write(json ? JSON.stringify(result, null, 2) + '\n' : formatAuditVerification(result));
+ return result.ok ? 0 : 1;
+ }
+
+ if (command === 'ask') {
+ const host = createHost(cwd, args);
+ try {
+ const answer = await host.ask(prompt || readStdin());
+ process.stdout.write(json ? JSON.stringify({ answer }, null, 2) + '\n' : `${answer}\n`);
+ return 0;
+ } finally {
+ host.dispose();
+ }
+ }
+
+ if (command === 'plan') {
+ const host = createHost(cwd, args);
+ try {
+ const plan = await host.plan(prompt || readStdin());
+ process.stdout.write(JSON.stringify(plan, null, 2) + '\n');
+ return 0;
+ } finally {
+ host.dispose();
+ }
+ }
+
+ if (command === 'agent') {
+ const host = createHost(cwd, args);
+ try {
+ for await (const event of host.agent(prompt || readStdin())) {
+ if (json) {
+ process.stdout.write(JSON.stringify(event) + '\n');
+ } else if (event.content) {
+ process.stdout.write(`${event.content}\n`);
+ } else if (event.message) {
+ process.stderr.write(`${event.message}\n`);
+ }
+ }
+ return 0;
+ } finally {
+ host.dispose();
+ }
+ }
+
+ if (command === 'commit-msg') {
+ process.stderr.write(`${command} requires git diff context from the VS Code extension runtime. Use changelog, prepare-release, export-audit, verify-audit, ask, plan, or agent headlessly.\n`);
+ return 2;
+ }
+
+ process.stderr.write(`Unknown command: ${command}\n`);
+ printHelp();
+ return 1;
+}
+
+function createHost(cwd: string, args: string[]): HeadlessAgentHost {
+ const provider = (valueOf(args, '--provider') as ProviderType | undefined) ?? 'echo';
+ const runtime = (valueOf(args, '--runtime') as HeadlessRuntime | undefined)
+ ?? (provider === 'echo' ? 'stub' : 'real');
+ return new HeadlessAgentHost({
+ cwd,
+ runtime,
+ providerType: provider,
+ baseUrl: valueOf(args, '--base-url'),
+ model: valueOf(args, '--model'),
+ approval: (valueOf(args, '--approval') as 'auto' | 'manual' | undefined) ?? 'auto',
+ enablePuppeteer: args.includes('--enable-puppeteer'),
+ allowNetwork: args.includes('--allow-network'),
+ });
+}
+
+function valueOf(args: string[], name: string): string | undefined {
+ const idx = args.indexOf(name);
+ return idx >= 0 ? args[idx + 1] : undefined;
+}
+
+function positional(args: string[]): string[] {
+ const out: string[] = [];
+ for (let index = 0; index < args.length; index += 1) {
+ const arg = args[index];
+ if (arg.startsWith('--')) {
+ if (!['--json'].includes(arg)) index += 1;
+ continue;
+ }
+ out.push(arg);
+ }
+ return out;
+}
+
+function readStdin(): string {
+ try {
+ return readFileSync(0, 'utf8').trim();
+ } catch {
+ return '';
+ }
+}
+
+function latestSessionLog(cwd: string): string | undefined {
+ const dir = join(cwd, '.mitii', 'logs');
+ if (!existsSync(dir)) return undefined;
+ const fs = require('fs') as typeof import('fs');
+ const files = fs.readdirSync(dir)
+ .filter((file) => file.endsWith('.jsonl'))
+ .sort();
+ const last = files[files.length - 1];
+ return last ? join(dir, last) : undefined;
+}
+
+function readPackageVersion(cwd: string): string {
+ try {
+ const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8')) as { version?: string };
+ return pkg.version ?? '0.0.0';
+ } catch {
+ return '0.0.0';
+ }
+}
+
+function printHelp(): void {
+ process.stdout.write([
+ 'Mitii CLI',
+ '',
+ 'Commands:',
+ ' mitii changelog [--since ] [--cwd ] [--json]',
+ ' mitii prepare-release [--since ] [--cwd ] [--json]',
+ ' mitii export-audit [--session ] [--output ] [--cwd ] [--json]',
+ ' mitii verify-audit [--cwd ] [--json]',
+ ' mitii ask "question" [--runtime real|stub] [--provider echo|openai|...] [--model ] [--base-url ] [--cwd ] [--json]',
+ ' mitii plan "goal" [--runtime real|stub] [--provider echo|openai|...] [--model ] [--approval auto|manual] [--cwd ]',
+ ' mitii agent "goal" [--runtime real|stub] [--provider echo|openai|...] [--model ] [--approval auto|manual] [--enable-puppeteer] [--allow-network] [--json]',
+ '',
+ ].join('\n'));
+}
+
+function formatAuditVerification(result: ReturnType): string {
+ if (result.ok) {
+ return `Audit pack verified (${result.entries.length} entries).\n`;
+ }
+ return `Audit pack verification failed:\n${result.errors.map((error) => `- ${error}`).join('\n')}\n`;
+}
+
+void main(process.argv.slice(2)).then((code) => {
+ process.exitCode = code;
+}).catch((error) => {
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
+ process.exitCode = 1;
+});
diff --git a/src/node/vscode-shim.ts b/src/node/vscode-shim.ts
new file mode 100644
index 00000000..7fe5cba7
--- /dev/null
+++ b/src/node/vscode-shim.ts
@@ -0,0 +1,54 @@
+/**
+ * Minimal VS Code API shim for headless CLI / benchmark runs.
+ * Production extension code still uses the real `vscode` module.
+ */
+
+export const Uri = {
+ file: (path: string) => ({ scheme: 'file', fsPath: path, path }),
+};
+
+export const workspace = {
+ getConfiguration: (_section?: string) => ({
+ get: (_key: string, defaultValue?: T) => defaultValue as T,
+ }),
+ workspaceFolders: undefined as undefined | Array<{ uri: { fsPath: string } }>,
+ asRelativePath: (uri: { fsPath?: string; path?: string }, _includeWorkspaceFolder?: boolean) => {
+ const path = uri.fsPath ?? uri.path ?? '';
+ return path.split('/').pop() ?? path;
+ },
+ createFileSystemWatcher: () => ({
+ onDidChange: () => ({ dispose: () => undefined }),
+ onDidCreate: () => ({ dispose: () => undefined }),
+ onDidDelete: () => ({ dispose: () => undefined }),
+ dispose: () => undefined,
+ }),
+};
+
+export const window = {
+ activeTextEditor: undefined,
+ tabGroups: { all: [] as Array<{ tabs: unknown[] }> },
+ showInformationMessage: async (..._args: unknown[]) => undefined,
+ showWarningMessage: async (..._args: unknown[]) => undefined,
+ showErrorMessage: async (..._args: unknown[]) => undefined,
+ showOpenDialog: async () => undefined,
+};
+
+export const languages = {
+ getDiagnostics: () => [] as Array<[unknown, unknown[]]>,
+ DiagnosticSeverity: { Error: 0, Warning: 1, Information: 2, Hint: 3 },
+};
+
+export const DiagnosticSeverity = languages.DiagnosticSeverity;
+
+export class RelativePattern {
+ constructor(
+ readonly base: { fsPath: string },
+ readonly pattern: string
+ ) {}
+}
+
+export const commands = {
+ executeCommand: async (..._args: unknown[]) => undefined,
+};
+
+export type Uri = ReturnType;
diff --git a/src/vscode/commands.ts b/src/vscode/commands.ts
index 8111f101..ebf29c62 100644
--- a/src/vscode/commands.ts
+++ b/src/vscode/commands.ts
@@ -27,10 +27,22 @@ export function registerCommands(
await controller.exportSessionLog();
}),
+ vscode.commands.registerCommand('thunder.exportAuditPack', async () => {
+ await controller.exportAuditPack();
+ }),
+
vscode.commands.registerCommand('thunder.openSessionLog', async () => {
await controller.openSessionLog();
}),
+ vscode.commands.registerCommand('thunder.generateChangelog', async () => {
+ await controller.generateChangelog();
+ }),
+
+ vscode.commands.registerCommand('thunder.prepareRelease', async () => {
+ await controller.prepareRelease();
+ }),
+
vscode.commands.registerCommand('thunder.showInlineDiff', async (approvalId?: string) => {
if (typeof approvalId === 'string') {
await controller.showInlineDiffForApproval(approvalId);
diff --git a/src/vscode/nativeModuleHealth.ts b/src/vscode/nativeModuleHealth.ts
new file mode 100644
index 00000000..15828634
--- /dev/null
+++ b/src/vscode/nativeModuleHealth.ts
@@ -0,0 +1,51 @@
+import * as vscode from 'vscode';
+import { AGENT_NAME } from '../shared/brand';
+
+export interface NativeModuleHealthResult {
+ ok: boolean;
+ moduleName: string;
+ message: string;
+ rebuildCommand: string;
+}
+
+export function checkBetterSqliteHealth(): NativeModuleHealthResult {
+ const rebuildCommand = detectEditorRebuildCommand();
+ try {
+ require('better-sqlite3');
+ return {
+ ok: true,
+ moduleName: 'better-sqlite3',
+ message: 'better-sqlite3 loaded successfully.',
+ rebuildCommand,
+ };
+ } catch (error) {
+ return {
+ ok: false,
+ moduleName: 'better-sqlite3',
+ message: error instanceof Error ? error.message : String(error),
+ rebuildCommand,
+ };
+ }
+}
+
+export async function notifyNativeModuleHealth(result = checkBetterSqliteHealth()): Promise {
+ if (result.ok) return;
+
+ const action = 'Copy rebuild command';
+ const choice = await vscode.window.showWarningMessage(
+ `${AGENT_NAME}: ${result.moduleName} failed to load. Rebuild native modules for this editor runtime.`,
+ action
+ );
+ if (choice === action) {
+ await vscode.env.clipboard.writeText(result.rebuildCommand);
+ void vscode.window.showInformationMessage(`${AGENT_NAME}: copied ${result.rebuildCommand}`);
+ }
+}
+
+export function detectEditorRebuildCommand(env: NodeJS.ProcessEnv = process.env): string {
+ const editor = (env.THUNDER_EDITOR || env.VSCODE_PID || '').toString().toLowerCase();
+ if (editor.includes('cursor') || env.CURSOR_TRACE_ID || env.CURSOR_APP_NAME) {
+ return 'THUNDER_EDITOR=cursor npm run rebuild:native';
+ }
+ return 'npm run rebuild:native';
+}
diff --git a/src/vscode/webview/ThunderWebviewProvider.ts b/src/vscode/webview/ThunderWebviewProvider.ts
index d8653eb4..d75fa933 100644
--- a/src/vscode/webview/ThunderWebviewProvider.ts
+++ b/src/vscode/webview/ThunderWebviewProvider.ts
@@ -2,6 +2,7 @@ import * as vscode from 'vscode';
import { ThunderController } from '../../core/app/ThunderController';
import { createLogger } from '../../core/telemetry/Logger';
import { normalizeError, formatUserError } from '../../core/telemetry/errors';
+import { chunkContent, chunkReasoning } from '../../core/llm/streamChunks';
import { AGENT_FULL_NAME, AGENT_NAME, brandMessage } from '../../shared/brand';
import {
type ExtensionToWebviewMessage,
@@ -73,6 +74,14 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
this.postMessage({ type: 'state', payload: this.state });
});
+ this.controller.setPreservedUiGetter(() => ({
+ tab: this.state.tab,
+ mode: this.state.mode,
+ messages: this.state.messages,
+ currentSessionId: this.state.currentSessionId,
+ chatHistory: this.state.chatHistory,
+ loading: this.state.loading,
+ }));
this.controller.setAutoFixCallback(async (message) => {
await this.runChatCompletion(message, true);
});
@@ -100,6 +109,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
});
webviewView.onDidDispose(() => {
+ this.archiveCurrentThread();
this.view = undefined;
});
}
@@ -158,7 +168,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
case 'sendMessage': {
const content = message.payload.content.trim();
const pinnedContext = message.payload.pinnedContext ?? this.state.pinnedContext;
- await this.runChatCompletion(content, true, pinnedContext);
+ await this.runChatCompletion(content, true, pinnedContext, message.payload.attachments ?? []);
break;
}
@@ -204,6 +214,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
this.postMessage({ type: 'state', payload: this.state });
break;
}
+ const restoredPlan = this.controller.restoreChatSession(message.payload.id, { mode: this.state.mode });
this.state = {
...this.state,
tab: 'chat',
@@ -212,6 +223,9 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
currentSessionId: message.payload.id,
messages: thread.messages,
chatHistory: this.historySummaries(),
+ plan: restoredPlan,
+ agentActivity: [],
+ agentLiveStatus: null,
};
this.postMessage({ type: 'state', payload: this.state });
break;
@@ -220,6 +234,9 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
case 'setMode': {
this.state = { ...this.state, mode: message.payload };
this.controller.getSession()?.setMode(message.payload);
+ if (message.payload === 'review') {
+ await this.controller.refreshReviewDiff();
+ }
this.postMessage({ type: 'setMode', payload: message.payload });
break;
}
@@ -318,6 +335,21 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
await this.controller.testProviderConnection(message.payload);
break;
+ case 'saveProviderProfile':
+ await this.controller.saveProviderProfile(message.payload);
+ await this.syncState();
+ break;
+
+ case 'selectProviderProfile':
+ await this.controller.selectProviderProfile(message.payload.id);
+ await this.syncState();
+ break;
+
+ case 'deleteProviderProfile':
+ await this.controller.deleteProviderProfile(message.payload.id);
+ await this.syncState();
+ break;
+
case 'pickWorkspaceFolder':
await this.controller.pickWorkspaceFolder();
await this.syncState();
@@ -436,13 +468,23 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
this.postMessage({ type: 'state', payload: this.state });
break;
}
+
+ case 'refreshReviewDiff':
+ await this.controller.refreshReviewDiff();
+ break;
+
+ case 'completeOnboarding':
+ await this.controller.completeOnboarding();
+ await this.syncState();
+ break;
}
}
private async runChatCompletion(
content: string,
appendUser: boolean,
- pinnedContext = this.state.pinnedContext
+ pinnedContext = this.state.pinnedContext,
+ attachments: ChatMessage['attachments'] = []
): Promise {
if (!content || this.state.loading) return;
@@ -450,6 +492,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
id: `msg-${Date.now()}`,
role: 'user',
content,
+ attachments,
timestamp: Date.now(),
};
@@ -469,11 +512,12 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
const recentMessages = messages
.filter((m) => m.role === 'user' || m.role === 'assistant')
.slice(0, -1)
- .map((m) => ({ role: m.role as 'user' | 'assistant', content: m.content }));
+ .map((m) => ({ role: m.role as 'user' | 'assistant', content: m.content, attachments: m.attachments }));
- const stream = await this.controller.sendMessage(content, recentMessages, { pinnedContext });
+ const stream = await this.controller.sendMessage(content, recentMessages, { pinnedContext, attachments });
let rawContent = '';
let fullContent = '';
+ let reasoningContent = '';
this.state = {
...this.state,
@@ -485,17 +529,18 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
this.postMessage({ type: 'state', payload: this.state });
for await (const chunk of stream) {
- rawContent += chunk;
+ rawContent += chunkContent(chunk);
+ reasoningContent += chunkReasoning(chunk);
fullContent = stripLeakedChannelMarkers(rawContent);
this.state = {
...this.state,
messages: this.state.messages.map((m) =>
- m.id === assistantId ? { ...m, content: fullContent, streaming: true } : m
+ m.id === assistantId ? { ...m, content: fullContent, reasoningContent, streaming: true } : m
),
};
this.postMessage({
type: 'updateLastAssistant',
- payload: { content: fullContent, streaming: true },
+ payload: { content: fullContent, reasoningContent, streaming: true },
});
}
@@ -505,7 +550,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
...this.state,
loading: false,
messages: this.state.messages.map((m) =>
- m.id === assistantId ? { ...m, content: fullContent, streaming: false } : m
+ m.id === assistantId ? { ...m, content: fullContent, reasoningContent, streaming: false } : m
),
approvals: pendingApprovals.map((r) => ({
id: r.id,
@@ -514,6 +559,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
files: r.files,
risk: r.risk,
reason: r.reason,
+ contentLength: r.contentLength,
kind: r.kind,
question: r.question,
options: r.options,
@@ -599,21 +645,23 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
const assistantId = lastAssistant.id;
let rawContent = lastAssistant.content;
let fullContent = stripLeakedChannelMarkers(rawContent);
+ let reasoningContent = lastAssistant.reasoningContent ?? '';
try {
const stream = this.controller.resumeAfterApproval();
for await (const chunk of stream) {
- rawContent += chunk;
+ rawContent += chunkContent(chunk);
+ reasoningContent += chunkReasoning(chunk);
fullContent = stripLeakedChannelMarkers(rawContent);
this.state = {
...this.state,
messages: this.state.messages.map((m) =>
- m.id === assistantId ? { ...m, content: fullContent, streaming: true } : m
+ m.id === assistantId ? { ...m, content: fullContent, reasoningContent, streaming: true } : m
),
};
this.postMessage({
type: 'updateLastAssistant',
- payload: { content: fullContent, streaming: true },
+ payload: { content: fullContent, reasoningContent, streaming: true },
});
}
@@ -623,7 +671,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
...this.state,
loading: false,
messages: this.state.messages.map((m) =>
- m.id === assistantId ? { ...m, content: fullContent, streaming: false } : m
+ m.id === assistantId ? { ...m, content: fullContent, reasoningContent, streaming: false } : m
),
approvals: pendingApprovals.map((r) => ({
id: r.id,
@@ -632,6 +680,7 @@ export class ThunderWebviewProvider implements vscode.WebviewViewProvider {
files: r.files,
risk: r.risk,
reason: r.reason,
+ contentLength: r.contentLength,
kind: r.kind,
question: r.question,
options: r.options,
diff --git a/src/vscode/webview/messages.ts b/src/vscode/webview/messages.ts
index d46e80dd..ac12c1a1 100644
--- a/src/vscode/webview/messages.ts
+++ b/src/vscode/webview/messages.ts
@@ -27,10 +27,20 @@ export type {
export type WebviewTab = 'chat' | 'history' | 'settings';
+export interface ChatImageAttachment {
+ kind: 'image';
+ mimeType: string;
+ data: string;
+ name?: string;
+ size?: number;
+}
+
export interface ChatMessage {
id: string;
role: 'user' | 'assistant' | 'system';
content: string;
+ attachments?: ChatImageAttachment[];
+ reasoningContent?: string;
timestamp: number;
streaming?: boolean;
}
@@ -221,11 +231,40 @@ export interface CheckpointView {
strategy?: string;
}
+export interface ReviewDiffFileView {
+ path: string;
+ status: string;
+ additions: number;
+ deletions: number;
+ diff: string;
+}
+
+export interface ReviewDiffView {
+ branch: string | null;
+ files: ReviewDiffFileView[];
+ summary: {
+ fileCount: number;
+ additions: number;
+ deletions: number;
+ };
+ truncated: boolean;
+ updatedAt: number;
+}
+
+export interface OnboardingView {
+ shouldShow: boolean;
+ completed: boolean;
+ providerConfigured: boolean;
+ workspaceIndexed: boolean;
+}
+
export interface SettingsView {
appVersion: string;
providerType: string;
baseUrl: string;
model: string;
+ apiVersion: string;
+ region: string;
contextWindow: number;
indexingEnabled: boolean;
approvalMode: ApprovalMode;
@@ -269,6 +308,22 @@ export interface SettingsView {
actModel: string;
actBaseUrl: string;
checkpointStrategy: 'file-copy' | 'git-stash' | 'shadow-git';
+ showReasoning: boolean;
+ reasoningPreviewMaxChars: number;
+ providerProfiles: ProviderProfileView[];
+ activeProviderProfileId: string | null;
+}
+
+export interface ProviderProfileView {
+ id: string;
+ name: string;
+ providerType: string;
+ baseUrl: string;
+ model: string;
+ apiVersion: string;
+ region: string;
+ contextWindow: number;
+ hasApiKey: boolean;
}
export interface McpServerStatusView {
@@ -309,6 +364,8 @@ export interface WebviewState {
indexing: IndexingStatusView;
memories: MemoryItemView[];
checkpoints: CheckpointView[];
+ reviewDiff: ReviewDiffView | null;
+ onboarding: OnboardingView;
settings: SettingsView;
contextToggles: ContextToggles;
mcpToggles: McpToggles;
@@ -324,6 +381,8 @@ export interface WebviewState {
workspaceNotice: WorkspaceNoticeView | null;
tokenUsage: TokenUsageView;
workspaceTrusted: boolean;
+ settingsSaving: boolean;
+ testingConnection: boolean;
}
export type WorkspaceNoticeView = {
@@ -335,7 +394,7 @@ export type WorkspaceNoticeView = {
export type ExtensionToWebviewMessage =
| { type: 'state'; payload: WebviewState }
| { type: 'appendMessage'; payload: ChatMessage }
- | { type: 'updateLastAssistant'; payload: { content: string; streaming: boolean } }
+ | { type: 'updateLastAssistant'; payload: { content: string; reasoningContent?: string; streaming: boolean } }
| { type: 'setError'; payload: string | null }
| { type: 'setLoading'; payload: boolean }
| { type: 'setMode'; payload: ThunderMode }
@@ -348,12 +407,13 @@ export type ExtensionToWebviewMessage =
| { type: 'setAgentLiveStatus'; payload: AgentLiveStatusView | null }
| { type: 'setSubagents'; payload: SubagentStatusView[] }
| { type: 'setTokenUsage'; payload: TokenUsageView }
+ | { type: 'setReviewDiff'; payload: ReviewDiffView | null }
| { type: 'setContextPaths'; payload: { requestId: string; paths: ContextPathSuggestion[] } };
// Webview -> Extension messages
export type WebviewToExtensionMessage =
| { type: 'ready' }
- | { type: 'sendMessage'; payload: { content: string; pinnedContext?: PinnedContextView[] } }
+ | { type: 'sendMessage'; payload: { content: string; pinnedContext?: PinnedContextView[]; attachments?: ChatImageAttachment[] } }
| { type: 'retryLastMessage' }
| { type: 'newChat' }
| { type: 'openChatThread'; payload: { id: string } }
@@ -371,6 +431,9 @@ export type WebviewToExtensionMessage =
| { type: 'saveMcpSettings'; payload: McpSettingsPayload }
| { type: 'saveAllSettings'; payload: ThunderSettingsPayload }
| { type: 'testProviderConnection'; payload?: ProviderSettingsPayload }
+ | { type: 'saveProviderProfile'; payload: { id?: string; name?: string; settings: ProviderSettingsPayload; apiKey?: string } }
+ | { type: 'selectProviderProfile'; payload: { id: string } }
+ | { type: 'deleteProviderProfile'; payload: { id: string } }
| { type: 'pickWorkspaceFolder' }
| { type: 'setWorkspaceOverride'; payload: { path: string } }
| { type: 'clearWorkspaceOverride' }
@@ -390,12 +453,15 @@ export type WebviewToExtensionMessage =
| { type: 'clearPinnedContext' }
| { type: 'searchContextPaths'; payload: { query: string; requestId: string } }
| { type: 'pickContextPath' }
+ | { type: 'refreshReviewDiff' }
+ | { type: 'completeOnboarding' }
| { type: 'refreshPanels' };
export const defaultMcpToggles = (): McpToggles => ({
filesystem: true,
memory: true,
sequentialThinking: true,
+ puppeteer: false,
});
export const defaultContextToggles = (): ContextToggles => ({
@@ -412,6 +478,8 @@ export const defaultSettingsView = (): SettingsView => ({
providerType: 'echo',
baseUrl: 'http://localhost:11434/v1',
model: 'qwen3-coder:30b',
+ apiVersion: '2024-10-21',
+ region: 'us-east-1',
contextWindow: 8192,
indexingEnabled: true,
approvalMode: 'review_all',
@@ -453,6 +521,10 @@ export const defaultSettingsView = (): SettingsView => ({
actModel: '',
actBaseUrl: '',
checkpointStrategy: 'git-stash',
+ showReasoning: true,
+ reasoningPreviewMaxChars: 8000,
+ providerProfiles: [],
+ activeProviderProfileId: null,
});
export const initialWebviewState = (): WebviewState => ({
@@ -476,6 +548,13 @@ export const initialWebviewState = (): WebviewState => ({
indexing: { indexed: 0, queued: 0, running: false, failed: 0, total: 0, activeWorkers: 0, processed: 0, runTotal: 0 },
memories: [],
checkpoints: [],
+ reviewDiff: null,
+ onboarding: {
+ shouldShow: false,
+ completed: false,
+ providerConfigured: false,
+ workspaceIndexed: false,
+ },
settings: defaultSettingsView(),
contextToggles: defaultContextToggles(),
mcpToggles: defaultMcpToggles(),
@@ -510,4 +589,6 @@ export const initialWebviewState = (): WebviewState => ({
breakdown: [],
},
workspaceTrusted: true,
+ settingsSaving: false,
+ testingConnection: false,
});
diff --git a/src/webview-ui/src/App.tsx b/src/webview-ui/src/App.tsx
index c9a21537..d9759ba0 100644
--- a/src/webview-ui/src/App.tsx
+++ b/src/webview-ui/src/App.tsx
@@ -7,6 +7,8 @@ import { ContextPanel } from './components/ContextPanel';
import { ContextWarningBanner } from './components/ContextWarningBanner';
import { ErrorBanner } from './components/ErrorBanner';
import { SettingsPanel } from './components/SettingsPanel';
+import { OnboardingPanel } from './components/OnboardingPanel';
+import { ReviewPanel } from './components/ReviewPanel';
import { ApprovalCards } from './components/ApprovalCards';
import { IndexingStatusBar } from './components/IndexingStatusBar';
import { WorkspaceBanner } from './components/WorkspaceBanner';
@@ -16,7 +18,7 @@ import { DevPanels } from './components/DevPanels';
import { IconButton } from './components/IconButton';
import { IconChat, IconHistory, IconPlus, IconSettings } from './components/Icons';
import { deriveSafetySettings } from './utils/approvalMode';
-import type { AgentDepthView, AgentSettingsPayload, SettingsView } from '../../vscode/webview/messages';
+import type { AgentDepthView, AgentSettingsPayload, ApprovalMode, SettingsView } from '../../vscode/webview/messages';
import type { ThunderMode } from '../../core/session/ThunderSession';
function activeDepthForMode(settings: SettingsView, mode: ThunderMode): AgentDepthView {
@@ -152,7 +154,29 @@ export function App() {
}
/>
- {state.tab === 'chat' ? (
+ {state.onboarding.shouldShow ? (
+
+ postMessage({ type: 'saveProviderSettings', payload })}
+ onSaveApiKey={(key) => postMessage({ type: 'saveApiKey', payload: { key } })}
+ onTestConnection={(payload) => postMessage({ type: 'testProviderConnection', payload })}
+ onIndexWorkspace={() => postMessage({ type: 'indexWorkspace' })}
+ onComplete={() => postMessage({ type: 'completeOnboarding' })}
+ />
+
+ ) : state.tab === 'chat' && state.mode === 'review' ? (
+ postMessage({ type: 'refreshReviewDiff' })}
+ onFeedback={(content) => {
+ postMessage({ type: 'setMode', payload: 'ask' });
+ postMessage({ type: 'sendMessage', payload: { content } });
+ }}
+ onExit={() => postMessage({ type: 'setMode', payload: 'plan' })}
+ />
+ ) : state.tab === 'chat' ? (