Initial scaffold: ACP client extension for siGit Code
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014EUvyohLND97Xxew23jN2d
paydii committed
Jun 25, 2026 at 16:51 UTC
803500e391a15227291cd5e2011f711792fca77d
21 files changed
+6092
.eslintrc.json
new
+25
@@ -0,0 +1,25 @@
1
+{
2
+ "root": true,
3
+ "parser": "@typescript-eslint/parser",
4
+ "parserOptions": {
5
+ "ecmaVersion": 2022,
6
+ "sourceType": "module"
7
+ },
8
+ "plugins": ["@typescript-eslint"],
9
+ "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
10
+ "env": {
11
+ "node": true,
12
+ "es2022": true
13
+ },
14
+ "rules": {
15
+ "@typescript-eslint/no-explicit-any": "off",
16
+ "@typescript-eslint/no-unused-vars": [
17
+ "warn",
18
+ { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }
19
+ ],
20
+ "semi": ["warn", "always"],
21
+ "curly": "warn",
22
+ "eqeqeq": ["warn", "always"]
23
+ },
24
+ "ignorePatterns": ["dist", "node_modules", "esbuild.js", "media"]
25
+}
.github/workflows/ci.yml
new
+31
@@ -0,0 +1,31 @@
1
+name: CI
2
+
3
+on:
4
+ push:
5
+ branches: ["**"]
6
+ pull_request:
7
+ branches: ["**"]
8
+
9
+jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - name: Setup Node.js
16
+ uses: actions/setup-node@v4
17
+ with:
18
+ node-version: "20"
19
+ cache: npm
20
+
21
+ - name: Install dependencies
22
+ run: npm ci
23
+
24
+ - name: Lint
25
+ run: npm run lint
26
+
27
+ - name: Type check
28
+ run: npm run compile
29
+
30
+ - name: Build
31
+ run: npm run build
.gitignore
new
+5
@@ -0,0 +1,5 @@
1
+node_modules/
2
+dist/
3
+*.vsix
4
+*.log
5
+.DS_Store
.vscode/launch.json
new
+13
@@ -0,0 +1,13 @@
1
+{
2
+ "version": "0.2.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Run Extension",
6
+ "type": "extensionHost",
7
+ "request": "launch",
8
+ "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
9
+ "outFiles": ["${workspaceFolder}/dist/**/*.js"],
10
+ "preLaunchTask": "${defaultBuildTask}"
11
+ }
12
+ ]
13
+}
.vscode/tasks.json
new
+35
@@ -0,0 +1,35 @@
1
+{
2
+ "version": "2.0.0",
3
+ "tasks": [
4
+ {
5
+ "label": "npm: watch",
6
+ "type": "npm",
7
+ "script": "watch",
8
+ "isBackground": true,
9
+ "group": {
10
+ "kind": "build",
11
+ "isDefault": true
12
+ },
13
+ "presentation": {
14
+ "reveal": "never",
15
+ "group": "watch"
16
+ },
17
+ "problemMatcher": {
18
+ "owner": "esbuild",
19
+ "pattern": {
20
+ "regexp": "^\\s*(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
21
+ "file": 1,
22
+ "line": 2,
23
+ "column": 3,
24
+ "severity": 4,
25
+ "message": 5
26
+ },
27
+ "background": {
28
+ "activeOnStart": true,
29
+ "beginsPattern": "\\[esbuild\\] watching for changes",
30
+ "endsPattern": "\\[esbuild\\] (build complete|watching for changes)"
31
+ }
32
+ }
33
+ }
34
+ ]
35
+}
.vscodeignore
new
+13
@@ -0,0 +1,13 @@
1
+.vscode/**
2
+.github/**
3
+src/**
4
+node_modules/**
5
+**/*.ts
6
+**/*.map
7
+esbuild.js
8
+tsconfig.json
9
+.eslintrc.json
10
+.gitignore
11
+.vscodeignore
12
+**/.DS_Store
13
+*.vsix
CHANGELOG.md
new
+21
@@ -0,0 +1,21 @@
1
+# Changelog
2
+
3
+All notable changes to the **siGit Code** extension are documented here.
4
+
5
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+## [Unreleased]
9
+
10
+### Added
11
+
12
+- Initial scaffold: ACP (Agent Client Protocol) client extension for siGit Code.
13
+- On-device `sigit` agent as the local-first default.
14
+- JSON-RPC 2.0 peer over newline-delimited JSON for ACP transport.
15
+- ACP handshake (`initialize` → `session/new` → `session/prompt`) with streaming
16
+ `session/update` notifications (message, thought, and tool-call chunks).
17
+- Inbound agent requests: `session/request_permission`, `fs/read_text_file`,
18
+ `fs/write_text_file`.
19
+- Webview chat view in the Activity Bar with streaming output.
20
+- Agent registry (`sigit.agents`) and permission modes (`prompt`/`allow`/`deny`).
21
+- Commands: open chat, new session, select agent, restart agent.
LICENSE
new
+21
@@ -0,0 +1,21 @@
1
+MIT License
2
+
3
+Copyright (c) 2026 siGit
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+SOFTWARE.
README.md
new
+112
@@ -0,0 +1,112 @@
1
+# siGit Code — On-device AI Coding Agent
2
+
3
+**Your code never has to leave your machine.** siGit Code is a local-first AI
4
+coding agent for VS Code. It runs the on-device [`sigit`](https://code.sigit.si)
5
+agent, a quantized (GGUF) model that executes entirely on your hardware and
6
+works offline, and brings it into the editor as a chat-driven pair programmer.
7
+
8
+There are no cloud round-trips and no API keys for the default agent. The model
9
+lives on your device, and so does your code.
10
+
11
+siGit Code also speaks the open [Agent Client
12
+Protocol](https://agentclientprotocol.com) (ACP), so it can drive other
13
+ACP-compatible agents over stdio. The on-device agent is still the point.
14
+
15
+## Why local-first
16
+
17
+- Your prompts and file contents stay on your machine.
18
+- It works offline, including on a plane or behind an air gap.
19
+- There is no per-token billing, so you can run it as much as your hardware allows.
20
+- You choose the model and the weights, and they do not change underneath you.
21
+
22
+ACP and multi-agent support are there for when you need a hosted agent. They are
23
+not the headline.
24
+
25
+## Requirements
26
+
27
+- VS Code `^1.90.0`
28
+- The `sigit` binary on your `PATH`.
29
+ Install it from [code.sigit.si](https://code.sigit.si).
30
+
31
+> siGit Code only *spawns* the `sigit` binary over ACP, so it has no build-time
32
+> dependency on the agent. Install the agent separately.
33
+
34
+## Getting started
35
+
36
+1. Install the `sigit` agent (see [code.sigit.si](https://code.sigit.si)) and
37
+ confirm `sigit` runs from your terminal.
38
+2. Install this extension.
39
+3. Click the **siGit Code** icon in the Activity Bar to open the chat view.
40
+4. Type a prompt and press **Enter**. The extension spawns the agent, opens a
41
+ session in your workspace folder, and streams the response.
42
+
43
+Commands (Command Palette):
44
+
45
+| Command | Description |
46
+| --- | --- |
47
+| `siGit: Open Chat` | Reveal the chat view. |
48
+| `siGit: New Session` | Start a fresh session with the active agent. |
49
+| `siGit: Select Agent` | Pick an agent from the registry. |
50
+| `siGit: Restart Agent` | Restart the active agent process. |
51
+
52
+## Configuration
53
+
54
+| Setting | Type | Default | Description |
55
+| --- | --- | --- | --- |
56
+| `sigit.agent.default` | string | `"sigit"` | Key of the agent used by default, looked up in `sigit.agents`. |
57
+| `sigit.agents` | object | on-device `sigit` | Registry of ACP agents (`{ name, command, args, env }`). |
58
+| `sigit.permission.mode` | enum | `"prompt"` | `prompt`, `allow`, or `deny` for agent-requested actions. |
59
+
60
+### Add another ACP agent
61
+
62
+The default registry contains only the on-device agent. To add another
63
+ACP-compatible agent, extend `sigit.agents` in your `settings.json`:
64
+
65
+```jsonc
66
+{
67
+ "sigit.agents": {
68
+ "sigit": {
69
+ "name": "siGit (on-device)",
70
+ "command": "sigit",
71
+ "args": [],
72
+ "env": {}
73
+ },
74
+ "claude-code": {
75
+ "name": "Claude Code (ACP)",
76
+ "command": "claude-code-acp",
77
+ "args": [],
78
+ "env": {}
79
+ },
80
+ "gemini": {
81
+ "name": "Gemini CLI (ACP)",
82
+ "command": "gemini",
83
+ "args": ["--experimental-acp"],
84
+ "env": {}
85
+ }
86
+ },
87
+ "sigit.agent.default": "sigit"
88
+}
89
+```
90
+
91
+Then run **`siGit: Select Agent`** to switch between them.
92
+
93
+## Development
94
+
95
+```bash
96
+npm install
97
+npm run watch # esbuild in watch mode
98
+# Press F5 to launch the Extension Development Host
99
+```
100
+
101
+Other scripts:
102
+
103
+```bash
104
+npm run compile # tsc --noEmit type check
105
+npm run lint # eslint
106
+npm run build # production bundle (esbuild)
107
+npm run package # vsce package (.vsix)
108
+```
109
+
110
+## License
111
+
112
+[MIT](./LICENSE) © 2026 siGit
esbuild.js
new
+34
@@ -0,0 +1,34 @@
1
+const esbuild = require("esbuild");
2
+
3
+const production = process.argv.includes("--production");
4
+const watch = process.argv.includes("--watch");
5
+
6
+/** @type {import('esbuild').BuildOptions} */
7
+const options = {
8
+ entryPoints: ["src/extension.ts"],
9
+ bundle: true,
10
+ outfile: "dist/extension.js",
11
+ format: "cjs",
12
+ platform: "node",
13
+ target: "node18",
14
+ external: ["vscode"],
15
+ sourcemap: !production,
16
+ minify: production,
17
+ logLevel: "info"
18
+};
19
+
20
+async function main() {
21
+ if (watch) {
22
+ const ctx = await esbuild.context(options);
23
+ await ctx.watch();
24
+ console.log("[esbuild] watching for changes...");
25
+ } else {
26
+ await esbuild.build(options);
27
+ console.log("[esbuild] build complete");
28
+ }
29
+}
30
+
31
+main().catch((err) => {
32
+ console.error(err);
33
+ process.exit(1);
34
+});
media/activity-icon.svg
new
+5
@@ -0,0 +1,5 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <path d="M21 12a9 9 0 1 1-3.6-7.2" />
3
+ <polyline points="21 4 21 9 16 9" />
4
+ <circle cx="12" cy="12" r="3" />
5
+</svg>
media/main.css
new
+131
@@ -0,0 +1,131 @@
1
+:root {
2
+ --sigit-gap: 8px;
3
+}
4
+
5
+* {
6
+ box-sizing: border-box;
7
+}
8
+
9
+html,
10
+body {
11
+ height: 100%;
12
+ margin: 0;
13
+ padding: 0;
14
+}
15
+
16
+body {
17
+ display: flex;
18
+ flex-direction: column;
19
+ font-family: var(--vscode-font-family);
20
+ font-size: var(--vscode-font-size);
21
+ color: var(--vscode-foreground);
22
+ background-color: var(--vscode-sideBar-background);
23
+}
24
+
25
+.messages {
26
+ flex: 1;
27
+ overflow-y: auto;
28
+ padding: var(--sigit-gap);
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: var(--sigit-gap);
32
+}
33
+
34
+.message {
35
+ display: flex;
36
+}
37
+
38
+.message-user {
39
+ justify-content: flex-end;
40
+}
41
+
42
+.bubble {
43
+ max-width: 92%;
44
+ padding: 6px 10px;
45
+ border-radius: 6px;
46
+ white-space: pre-wrap;
47
+ word-wrap: break-word;
48
+ line-height: 1.4;
49
+}
50
+
51
+.message-user .bubble {
52
+ background-color: var(--vscode-button-background);
53
+ color: var(--vscode-button-foreground);
54
+}
55
+
56
+.message-assistant .bubble {
57
+ background-color: var(--vscode-editor-inactiveSelectionBackground);
58
+ color: var(--vscode-foreground);
59
+}
60
+
61
+.message-thought .bubble {
62
+ background-color: transparent;
63
+ color: var(--vscode-descriptionForeground);
64
+ font-style: italic;
65
+ border-left: 2px solid var(--vscode-panel-border);
66
+ border-radius: 0;
67
+}
68
+
69
+.message-tool .bubble {
70
+ background-color: transparent;
71
+ color: var(--vscode-descriptionForeground);
72
+ font-family: var(--vscode-editor-font-family, monospace);
73
+ font-size: 0.9em;
74
+ border: 1px solid var(--vscode-panel-border);
75
+}
76
+
77
+.message-error .bubble {
78
+ background-color: var(--vscode-inputValidation-errorBackground);
79
+ color: var(--vscode-foreground);
80
+ border: 1px solid var(--vscode-inputValidation-errorBorder);
81
+}
82
+
83
+.status {
84
+ padding: 2px var(--sigit-gap);
85
+ font-size: 0.85em;
86
+ color: var(--vscode-descriptionForeground);
87
+ min-height: 1.2em;
88
+}
89
+
90
+.composer {
91
+ display: flex;
92
+ gap: var(--sigit-gap);
93
+ padding: var(--sigit-gap);
94
+ border-top: 1px solid var(--vscode-panel-border);
95
+}
96
+
97
+.input {
98
+ flex: 1;
99
+ resize: none;
100
+ font-family: inherit;
101
+ font-size: inherit;
102
+ color: var(--vscode-input-foreground);
103
+ background-color: var(--vscode-input-background);
104
+ border: 1px solid var(--vscode-input-border, transparent);
105
+ border-radius: 4px;
106
+ padding: 6px 8px;
107
+}
108
+
109
+.input:focus {
110
+ outline: 1px solid var(--vscode-focusBorder);
111
+ outline-offset: -1px;
112
+}
113
+
114
+.send {
115
+ align-self: flex-end;
116
+ color: var(--vscode-button-foreground);
117
+ background-color: var(--vscode-button-background);
118
+ border: none;
119
+ border-radius: 4px;
120
+ padding: 6px 12px;
121
+ cursor: pointer;
122
+}
123
+
124
+.send:hover {
125
+ background-color: var(--vscode-button-hoverBackground);
126
+}
127
+
128
+.send:disabled {
129
+ opacity: 0.6;
130
+ cursor: default;
131
+}
media/main.js
new
+125
@@ -0,0 +1,125 @@
1
+// @ts-check
2
+(function () {
3
+ const vscode = acquireVsCodeApi();
4
+
5
+ const messagesEl = document.getElementById("messages");
6
+ const statusEl = document.getElementById("status");
7
+ const formEl = document.getElementById("composer");
8
+ const inputEl = /** @type {HTMLTextAreaElement} */ (document.getElementById("input"));
9
+ const sendEl = /** @type {HTMLButtonElement} */ (document.getElementById("send"));
10
+
11
+ // The assistant streams in chunks; keep a handle to the current bubble so we
12
+ // can append to it rather than creating a new one per chunk.
13
+ let currentAssistant = null;
14
+ let busy = false;
15
+
16
+ function scrollToBottom() {
17
+ messagesEl.scrollTop = messagesEl.scrollHeight;
18
+ }
19
+
20
+ function addMessage(role, text) {
21
+ const el = document.createElement("div");
22
+ el.className = "message message-" + role;
23
+ const body = document.createElement("div");
24
+ body.className = "bubble";
25
+ body.textContent = text;
26
+ el.appendChild(body);
27
+ messagesEl.appendChild(el);
28
+ scrollToBottom();
29
+ return body;
30
+ }
31
+
32
+ function appendAssistant(text) {
33
+ if (!currentAssistant) {
34
+ currentAssistant = addMessage("assistant", "");
35
+ }
36
+ currentAssistant.textContent += text;
37
+ scrollToBottom();
38
+ }
39
+
40
+ function endAssistant() {
41
+ currentAssistant = null;
42
+ }
43
+
44
+ function setStatus(text) {
45
+ statusEl.textContent = text;
46
+ }
47
+
48
+ function setBusy(value) {
49
+ busy = value;
50
+ sendEl.disabled = value;
51
+ sendEl.textContent = value ? "…" : "Send";
52
+ }
53
+
54
+ function send() {
55
+ const text = inputEl.value.trim();
56
+ if (!text || busy) {
57
+ return;
58
+ }
59
+ endAssistant();
60
+ vscode.postMessage({ type: "prompt", text });
61
+ inputEl.value = "";
62
+ }
63
+
64
+ formEl.addEventListener("submit", (e) => {
65
+ e.preventDefault();
66
+ send();
67
+ });
68
+
69
+ inputEl.addEventListener("keydown", (e) => {
70
+ // Enter sends; Shift+Enter inserts a newline.
71
+ if (e.key === "Enter" && !e.shiftKey) {
72
+ e.preventDefault();
73
+ send();
74
+ }
75
+ });
76
+
77
+ window.addEventListener("message", (event) => {
78
+ const message = event.data;
79
+ switch (message.type) {
80
+ case "user":
81
+ endAssistant();
82
+ addMessage("user", message.text);
83
+ break;
84
+ case "assistant":
85
+ appendAssistant(message.text || "");
86
+ break;
87
+ case "thought":
88
+ addMessage("thought", message.text || "");
89
+ break;
90
+ case "tool": {
91
+ const label = message.title + (message.status ? " — " + message.status : "");
92
+ addMessage("tool", label);
93
+ break;
94
+ }
95
+ case "status":
96
+ setStatus(message.text || "");
97
+ break;
98
+ case "error":
99
+ endAssistant();
100
+ addMessage("error", message.text || "Error");
101
+ break;
102
+ case "log":
103
+ // Agent stderr — surface quietly in the status line.
104
+ if (message.text) {
105
+ setStatus(String(message.text).trim().split("\n").pop() || "");
106
+ }
107
+ break;
108
+ case "busy":
109
+ setBusy(!!message.busy);
110
+ break;
111
+ case "turnEnd":
112
+ endAssistant();
113
+ setBusy(false);
114
+ break;
115
+ case "clear":
116
+ messagesEl.innerHTML = "";
117
+ endAssistant();
118
+ break;
119
+ default:
120
+ break;
121
+ }
122
+ });
123
+
124
+ vscode.postMessage({ type: "ready" });
125
+})();
package-lock.json
new
+4505
@@ -0,0 +1,4505 @@
1
+{
2
+ "name": "sigit-code",
3
+ "version": "0.0.1",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "sigit-code",
9
+ "version": "0.0.1",
10
+ "license": "MIT",
11
+ "devDependencies": {
12
+ "@types/node": "^20.11.0",
13
+ "@types/vscode": "^1.90.0",
14
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
15
+ "@typescript-eslint/parser": "^7.0.0",
16
+ "@vscode/vsce": "^2.24.0",
17
+ "esbuild": "^0.20.0",
18
+ "eslint": "^8.57.0",
19
+ "typescript": "^5.4.0"
20
+ },
21
+ "engines": {
22
+ "vscode": "^1.90.0"
23
+ }
24
+ },
25
+ "node_modules/@azure/abort-controller": {
26
+ "version": "2.1.2",
27
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
28
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
29
+ "dev": true,
30
+ "license": "MIT",
31
+ "dependencies": {
32
+ "tslib": "^2.6.2"
33
+ },
34
+ "engines": {
35
+ "node": ">=18.0.0"
36
+ }
37
+ },
38
+ "node_modules/@azure/core-auth": {
39
+ "version": "1.10.1",
40
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz",
41
+ "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==",
42
+ "dev": true,
43
+ "license": "MIT",
44
+ "dependencies": {
45
+ "@azure/abort-controller": "^2.1.2",
46
+ "@azure/core-util": "^1.13.0",
47
+ "tslib": "^2.6.2"
48
+ },
49
+ "engines": {
50
+ "node": ">=20.0.0"
51
+ }
52
+ },
53
+ "node_modules/@azure/core-client": {
54
+ "version": "1.10.2",
55
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz",
56
+ "integrity": "sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==",
57
+ "dev": true,
58
+ "license": "MIT",
59
+ "dependencies": {
60
+ "@azure/abort-controller": "^2.1.2",
61
+ "@azure/core-auth": "^1.10.0",
62
+ "@azure/core-rest-pipeline": "^1.22.0",
63
+ "@azure/core-tracing": "^1.3.0",
64
+ "@azure/core-util": "^1.13.0",
65
+ "@azure/logger": "^1.3.0",
66
+ "tslib": "^2.6.2"
67
+ },
68
+ "engines": {
69
+ "node": ">=20.0.0"
70
+ }
71
+ },
72
+ "node_modules/@azure/core-rest-pipeline": {
73
+ "version": "1.24.0",
74
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz",
75
+ "integrity": "sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==",
76
+ "dev": true,
77
+ "license": "MIT",
78
+ "dependencies": {
79
+ "@azure/abort-controller": "^2.1.2",
80
+ "@azure/core-auth": "^1.10.0",
81
+ "@azure/core-tracing": "^1.3.0",
82
+ "@azure/core-util": "^1.13.0",
83
+ "@azure/logger": "^1.3.0",
84
+ "@typespec/ts-http-runtime": "^0.3.4",
85
+ "tslib": "^2.6.2"
86
+ },
87
+ "engines": {
88
+ "node": ">=20.0.0"
89
+ }
90
+ },
91
+ "node_modules/@azure/core-tracing": {
92
+ "version": "1.3.1",
93
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz",
94
+ "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==",
95
+ "dev": true,
96
+ "license": "MIT",
97
+ "dependencies": {
98
+ "tslib": "^2.6.2"
99
+ },
100
+ "engines": {
101
+ "node": ">=20.0.0"
102
+ }
103
+ },
104
+ "node_modules/@azure/core-util": {
105
+ "version": "1.13.1",
106
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz",
107
+ "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==",
108
+ "dev": true,
109
+ "license": "MIT",
110
+ "dependencies": {
111
+ "@azure/abort-controller": "^2.1.2",
112
+ "@typespec/ts-http-runtime": "^0.3.0",
113
+ "tslib": "^2.6.2"
114
+ },
115
+ "engines": {
116
+ "node": ">=20.0.0"
117
+ }
118
+ },
119
+ "node_modules/@azure/identity": {
120
+ "version": "4.13.1",
121
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz",
122
+ "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==",
123
+ "dev": true,
124
+ "license": "MIT",
125
+ "dependencies": {
126
+ "@azure/abort-controller": "^2.0.0",
127
+ "@azure/core-auth": "^1.9.0",
128
+ "@azure/core-client": "^1.9.2",
129
+ "@azure/core-rest-pipeline": "^1.17.0",
130
+ "@azure/core-tracing": "^1.0.0",
131
+ "@azure/core-util": "^1.11.0",
132
+ "@azure/logger": "^1.0.0",
133
+ "@azure/msal-browser": "^5.5.0",
134
+ "@azure/msal-node": "^5.1.0",
135
+ "open": "^10.1.0",
136
+ "tslib": "^2.2.0"
137
+ },
138
+ "engines": {
139
+ "node": ">=20.0.0"
140
+ }
141
+ },
142
+ "node_modules/@azure/logger": {
143
+ "version": "1.3.0",
144
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz",
145
+ "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==",
146
+ "dev": true,
147
+ "license": "MIT",
148
+ "dependencies": {
149
+ "@typespec/ts-http-runtime": "^0.3.0",
150
+ "tslib": "^2.6.2"
151
+ },
152
+ "engines": {
153
+ "node": ">=20.0.0"
154
+ }
155
+ },
156
+ "node_modules/@azure/msal-browser": {
157
+ "version": "5.15.0",
158
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.15.0.tgz",
159
+ "integrity": "sha512-2NYT6v+eeQn8kmNddr9LnbXSvXbVELpmFMmfFvtRxD7I/5+5GlkMlncApeuRFj+mY6C9syOwQip1a0Y+TIbyiA==",
160
+ "dev": true,
161
+ "license": "MIT",
162
+ "dependencies": {
163
+ "@azure/msal-common": "16.10.0"
164
+ },
165
+ "engines": {
166
+ "node": ">=0.8.0"
167
+ }
168
+ },
169
+ "node_modules/@azure/msal-common": {
170
+ "version": "16.10.0",
171
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.10.0.tgz",
172
+ "integrity": "sha512-iYtjpanlv6963Jprs0MvzIap07V+QhultjQctfbEDQCflsDAEeO3R7XnVA5gk30fhoBFLdgJT7VqO0TGsEsN9w==",
173
+ "dev": true,
174
+ "license": "MIT",
175
+ "engines": {
176
+ "node": ">=0.8.0"
177
+ }
178
+ },
179
+ "node_modules/@azure/msal-node": {
180
+ "version": "5.3.0",
181
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.3.0.tgz",
182
+ "integrity": "sha512-fXtJX811pX8y8QlrQqBSH6+plvWyKZDI0IxkheAcyAw9OtcpXyFivmTC7eGUqutLWaDlKXuQ3yOESD4zAmkjHg==",
183
+ "dev": true,
184
+ "license": "MIT",
185
+ "dependencies": {
186
+ "@azure/msal-common": "16.10.0",
187
+ "jsonwebtoken": "^9.0.0"
188
+ },
189
+ "engines": {
190
+ "node": ">=20"
191
+ }
192
+ },
193
+ "node_modules/@esbuild/aix-ppc64": {
194
+ "version": "0.20.2",
195
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
196
+ "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
197
+ "cpu": [
198
+ "ppc64"
199
+ ],
200
+ "dev": true,
201
+ "license": "MIT",
202
+ "optional": true,
203
+ "os": [
204
+ "aix"
205
+ ],
206
+ "engines": {
207
+ "node": ">=12"
208
+ }
209
+ },
210
+ "node_modules/@esbuild/android-arm": {
211
+ "version": "0.20.2",
212
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
213
+ "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
214
+ "cpu": [
215
+ "arm"
216
+ ],
217
+ "dev": true,
218
+ "license": "MIT",
219
+ "optional": true,
220
+ "os": [
221
+ "android"
222
+ ],
223
+ "engines": {
224
+ "node": ">=12"
225
+ }
226
+ },
227
+ "node_modules/@esbuild/android-arm64": {
228
+ "version": "0.20.2",
229
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
230
+ "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
231
+ "cpu": [
232
+ "arm64"
233
+ ],
234
+ "dev": true,
235
+ "license": "MIT",
236
+ "optional": true,
237
+ "os": [
238
+ "android"
239
+ ],
240
+ "engines": {
241
+ "node": ">=12"
242
+ }
243
+ },
244
+ "node_modules/@esbuild/android-x64": {
245
+ "version": "0.20.2",
246
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
247
+ "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
248
+ "cpu": [
249
+ "x64"
250
+ ],
251
+ "dev": true,
252
+ "license": "MIT",
253
+ "optional": true,
254
+ "os": [
255
+ "android"
256
+ ],
257
+ "engines": {
258
+ "node": ">=12"
259
+ }
260
+ },
261
+ "node_modules/@esbuild/darwin-arm64": {
262
+ "version": "0.20.2",
263
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
264
+ "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
265
+ "cpu": [
266
+ "arm64"
267
+ ],
268
+ "dev": true,
269
+ "license": "MIT",
270
+ "optional": true,
271
+ "os": [
272
+ "darwin"
273
+ ],
274
+ "engines": {
275
+ "node": ">=12"
276
+ }
277
+ },
278
+ "node_modules/@esbuild/darwin-x64": {
279
+ "version": "0.20.2",
280
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
281
+ "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
282
+ "cpu": [
283
+ "x64"
284
+ ],
285
+ "dev": true,
286
+ "license": "MIT",
287
+ "optional": true,
288
+ "os": [
289
+ "darwin"
290
+ ],
291
+ "engines": {
292
+ "node": ">=12"
293
+ }
294
+ },
295
+ "node_modules/@esbuild/freebsd-arm64": {
296
+ "version": "0.20.2",
297
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
298
+ "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
299
+ "cpu": [
300
+ "arm64"
301
+ ],
302
+ "dev": true,
303
+ "license": "MIT",
304
+ "optional": true,
305
+ "os": [
306
+ "freebsd"
307
+ ],
308
+ "engines": {
309
+ "node": ">=12"
310
+ }
311
+ },
312
+ "node_modules/@esbuild/freebsd-x64": {
313
+ "version": "0.20.2",
314
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
315
+ "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
316
+ "cpu": [
317
+ "x64"
318
+ ],
319
+ "dev": true,
320
+ "license": "MIT",
321
+ "optional": true,
322
+ "os": [
323
+ "freebsd"
324
+ ],
325
+ "engines": {
326
+ "node": ">=12"
327
+ }
328
+ },
329
+ "node_modules/@esbuild/linux-arm": {
330
+ "version": "0.20.2",
331
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
332
+ "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
333
+ "cpu": [
334
+ "arm"
335
+ ],
336
+ "dev": true,
337
+ "license": "MIT",
338
+ "optional": true,
339
+ "os": [
340
+ "linux"
341
+ ],
342
+ "engines": {
343
+ "node": ">=12"
344
+ }
345
+ },
346
+ "node_modules/@esbuild/linux-arm64": {
347
+ "version": "0.20.2",
348
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
349
+ "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
350
+ "cpu": [
351
+ "arm64"
352
+ ],
353
+ "dev": true,
354
+ "license": "MIT",
355
+ "optional": true,
356
+ "os": [
357
+ "linux"
358
+ ],
359
+ "engines": {
360
+ "node": ">=12"
361
+ }
362
+ },
363
+ "node_modules/@esbuild/linux-ia32": {
364
+ "version": "0.20.2",
365
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
366
+ "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
367
+ "cpu": [
368
+ "ia32"
369
+ ],
370
+ "dev": true,
371
+ "license": "MIT",
372
+ "optional": true,
373
+ "os": [
374
+ "linux"
375
+ ],
376
+ "engines": {
377
+ "node": ">=12"
378
+ }
379
+ },
380
+ "node_modules/@esbuild/linux-loong64": {
381
+ "version": "0.20.2",
382
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
383
+ "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
384
+ "cpu": [
385
+ "loong64"
386
+ ],
387
+ "dev": true,
388
+ "license": "MIT",
389
+ "optional": true,
390
+ "os": [
391
+ "linux"
392
+ ],
393
+ "engines": {
394
+ "node": ">=12"
395
+ }
396
+ },
397
+ "node_modules/@esbuild/linux-mips64el": {
398
+ "version": "0.20.2",
399
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
400
+ "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
401
+ "cpu": [
402
+ "mips64el"
403
+ ],
404
+ "dev": true,
405
+ "license": "MIT",
406
+ "optional": true,
407
+ "os": [
408
+ "linux"
409
+ ],
410
+ "engines": {
411
+ "node": ">=12"
412
+ }
413
+ },
414
+ "node_modules/@esbuild/linux-ppc64": {
415
+ "version": "0.20.2",
416
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
417
+ "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
418
+ "cpu": [
419
+ "ppc64"
420
+ ],
421
+ "dev": true,
422
+ "license": "MIT",
423
+ "optional": true,
424
+ "os": [
425
+ "linux"
426
+ ],
427
+ "engines": {
428
+ "node": ">=12"
429
+ }
430
+ },
431
+ "node_modules/@esbuild/linux-riscv64": {
432
+ "version": "0.20.2",
433
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
434
+ "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
435
+ "cpu": [
436
+ "riscv64"
437
+ ],
438
+ "dev": true,
439
+ "license": "MIT",
440
+ "optional": true,
441
+ "os": [
442
+ "linux"
443
+ ],
444
+ "engines": {
445
+ "node": ">=12"
446
+ }
447
+ },
448
+ "node_modules/@esbuild/linux-s390x": {
449
+ "version": "0.20.2",
450
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
451
+ "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
452
+ "cpu": [
453
+ "s390x"
454
+ ],
455
+ "dev": true,
456
+ "license": "MIT",
457
+ "optional": true,
458
+ "os": [
459
+ "linux"
460
+ ],
461
+ "engines": {
462
+ "node": ">=12"
463
+ }
464
+ },
465
+ "node_modules/@esbuild/linux-x64": {
466
+ "version": "0.20.2",
467
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
468
+ "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
469
+ "cpu": [
470
+ "x64"
471
+ ],
472
+ "dev": true,
473
+ "license": "MIT",
474
+ "optional": true,
475
+ "os": [
476
+ "linux"
477
+ ],
478
+ "engines": {
479
+ "node": ">=12"
480
+ }
481
+ },
482
+ "node_modules/@esbuild/netbsd-x64": {
483
+ "version": "0.20.2",
484
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
485
+ "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
486
+ "cpu": [
487
+ "x64"
488
+ ],
489
+ "dev": true,
490
+ "license": "MIT",
491
+ "optional": true,
492
+ "os": [
493
+ "netbsd"
494
+ ],
495
+ "engines": {
496
+ "node": ">=12"
497
+ }
498
+ },
499
+ "node_modules/@esbuild/openbsd-x64": {
500
+ "version": "0.20.2",
501
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
502
+ "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
503
+ "cpu": [
504
+ "x64"
505
+ ],
506
+ "dev": true,
507
+ "license": "MIT",
508
+ "optional": true,
509
+ "os": [
510
+ "openbsd"
511
+ ],
512
+ "engines": {
513
+ "node": ">=12"
514
+ }
515
+ },
516
+ "node_modules/@esbuild/sunos-x64": {
517
+ "version": "0.20.2",
518
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
519
+ "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
520
+ "cpu": [
521
+ "x64"
522
+ ],
523
+ "dev": true,
524
+ "license": "MIT",
525
+ "optional": true,
526
+ "os": [
527
+ "sunos"
528
+ ],
529
+ "engines": {
530
+ "node": ">=12"
531
+ }
532
+ },
533
+ "node_modules/@esbuild/win32-arm64": {
534
+ "version": "0.20.2",
535
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
536
+ "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
537
+ "cpu": [
538
+ "arm64"
539
+ ],
540
+ "dev": true,
541
+ "license": "MIT",
542
+ "optional": true,
543
+ "os": [
544
+ "win32"
545
+ ],
546
+ "engines": {
547
+ "node": ">=12"
548
+ }
549
+ },
550
+ "node_modules/@esbuild/win32-ia32": {
551
+ "version": "0.20.2",
552
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
553
+ "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
554
+ "cpu": [
555
+ "ia32"
556
+ ],
557
+ "dev": true,
558
+ "license": "MIT",
559
+ "optional": true,
560
+ "os": [
561
+ "win32"
562
+ ],
563
+ "engines": {
564
+ "node": ">=12"
565
+ }
566
+ },
567
+ "node_modules/@esbuild/win32-x64": {
568
+ "version": "0.20.2",
569
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
570
+ "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
571
+ "cpu": [
572
+ "x64"
573
+ ],
574
+ "dev": true,
575
+ "license": "MIT",
576
+ "optional": true,
577
+ "os": [
578
+ "win32"
579
+ ],
580
+ "engines": {
581
+ "node": ">=12"
582
+ }
583
+ },
584
+ "node_modules/@eslint-community/eslint-utils": {
585
+ "version": "4.9.1",
586
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
587
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
588
+ "dev": true,
589
+ "license": "MIT",
590
+ "dependencies": {
591
+ "eslint-visitor-keys": "^3.4.3"
592
+ },
593
+ "engines": {
594
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
595
+ },
596
+ "funding": {
597
+ "url": "https://opencollective.com/eslint"
598
+ },
599
+ "peerDependencies": {
600
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
601
+ }
602
+ },
603
+ "node_modules/@eslint-community/regexpp": {
604
+ "version": "4.12.2",
605
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
606
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
607
+ "dev": true,
608
+ "license": "MIT",
609
+ "engines": {
610
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
611
+ }
612
+ },
613
+ "node_modules/@eslint/eslintrc": {
614
+ "version": "2.1.4",
615
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
616
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
617
+ "dev": true,
618
+ "license": "MIT",
619
+ "dependencies": {
620
+ "ajv": "^6.12.4",
621
+ "debug": "^4.3.2",
622
+ "espree": "^9.6.0",
623
+ "globals": "^13.19.0",
624
+ "ignore": "^5.2.0",
625
+ "import-fresh": "^3.2.1",
626
+ "js-yaml": "^4.1.0",
627
+ "minimatch": "^3.1.2",
628
+ "strip-json-comments": "^3.1.1"
629
+ },
630
+ "engines": {
631
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
632
+ },
633
+ "funding": {
634
+ "url": "https://opencollective.com/eslint"
635
+ }
636
+ },
637
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
638
+ "version": "1.1.15",
639
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
640
+ "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
641
+ "dev": true,
642
+ "license": "MIT",
643
+ "dependencies": {
644
+ "balanced-match": "^1.0.0",
645
+ "concat-map": "0.0.1"
646
+ }
647
+ },
648
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
649
+ "version": "3.1.5",
650
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
651
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
652
+ "dev": true,
653
+ "license": "ISC",
654
+ "dependencies": {
655
+ "brace-expansion": "^1.1.7"
656
+ },
657
+ "engines": {
658
+ "node": "*"
659
+ }
660
+ },
661
+ "node_modules/@eslint/js": {
662
+ "version": "8.57.1",
663
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
664
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
665
+ "dev": true,
666
+ "license": "MIT",
667
+ "engines": {
668
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
669
+ }
670
+ },
671
+ "node_modules/@humanwhocodes/config-array": {
672
+ "version": "0.13.0",
673
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
674
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
675
+ "deprecated": "Use @eslint/config-array instead",
676
+ "dev": true,
677
+ "license": "Apache-2.0",
678
+ "dependencies": {
679
+ "@humanwhocodes/object-schema": "^2.0.3",
680
+ "debug": "^4.3.1",
681
+ "minimatch": "^3.0.5"
682
+ },
683
+ "engines": {
684
+ "node": ">=10.10.0"
685
+ }
686
+ },
687
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
688
+ "version": "1.1.15",
689
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
690
+ "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
691
+ "dev": true,
692
+ "license": "MIT",
693
+ "dependencies": {
694
+ "balanced-match": "^1.0.0",
695
+ "concat-map": "0.0.1"
696
+ }
697
+ },
698
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
699
+ "version": "3.1.5",
700
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
701
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
702
+ "dev": true,
703
+ "license": "ISC",
704
+ "dependencies": {
705
+ "brace-expansion": "^1.1.7"
706
+ },
707
+ "engines": {
708
+ "node": "*"
709
+ }
710
+ },
711
+ "node_modules/@humanwhocodes/module-importer": {
712
+ "version": "1.0.1",
713
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
714
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
715
+ "dev": true,
716
+ "license": "Apache-2.0",
717
+ "engines": {
718
+ "node": ">=12.22"
719
+ },
720
+ "funding": {
721
+ "type": "github",
722
+ "url": "https://github.com/sponsors/nzakas"
723
+ }
724
+ },
725
+ "node_modules/@humanwhocodes/object-schema": {
726
+ "version": "2.0.3",
727
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
728
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
729
+ "deprecated": "Use @eslint/object-schema instead",
730
+ "dev": true,
731
+ "license": "BSD-3-Clause"
732
+ },
733
+ "node_modules/@nodelib/fs.scandir": {
734
+ "version": "2.1.5",
735
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
736
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
737
+ "dev": true,
738
+ "license": "MIT",
739
+ "dependencies": {
740
+ "@nodelib/fs.stat": "2.0.5",
741
+ "run-parallel": "^1.1.9"
742
+ },
743
+ "engines": {
744
+ "node": ">= 8"
745
+ }
746
+ },
747
+ "node_modules/@nodelib/fs.stat": {
748
+ "version": "2.0.5",
749
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
750
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
751
+ "dev": true,
752
+ "license": "MIT",
753
+ "engines": {
754
+ "node": ">= 8"
755
+ }
756
+ },
757
+ "node_modules/@nodelib/fs.walk": {
758
+ "version": "1.2.8",
759
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
760
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
761
+ "dev": true,
762
+ "license": "MIT",
763
+ "dependencies": {
764
+ "@nodelib/fs.scandir": "2.1.5",
765
+ "fastq": "^1.6.0"
766
+ },
767
+ "engines": {
768
+ "node": ">= 8"
769
+ }
770
+ },
771
+ "node_modules/@types/node": {
772
+ "version": "20.19.43",
773
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz",
774
+ "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==",
775
+ "dev": true,
776
+ "license": "MIT",
777
+ "dependencies": {
778
+ "undici-types": "~6.21.0"
779
+ }
780
+ },
781
+ "node_modules/@types/vscode": {
782
+ "version": "1.125.0",
783
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.125.0.tgz",
784
+ "integrity": "sha512-0icm/ZQAaism87P0ekHqi4/Ju9du+Tm0RUW+y7vqRsxY2cY0FNRX1nAnaW7nT6npPt2tfHiheZ55Zm9UhqonFA==",
785
+ "dev": true,
786
+ "license": "MIT"
787
+ },
788
+ "node_modules/@typescript-eslint/eslint-plugin": {
789
+ "version": "7.18.0",
790
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
791
+ "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
792
+ "dev": true,
793
+ "license": "MIT",
794
+ "dependencies": {
795
+ "@eslint-community/regexpp": "^4.10.0",
796
+ "@typescript-eslint/scope-manager": "7.18.0",
797
+ "@typescript-eslint/type-utils": "7.18.0",
798
+ "@typescript-eslint/utils": "7.18.0",
799
+ "@typescript-eslint/visitor-keys": "7.18.0",
800
+ "graphemer": "^1.4.0",
801
+ "ignore": "^5.3.1",
802
+ "natural-compare": "^1.4.0",
803
+ "ts-api-utils": "^1.3.0"
804
+ },
805
+ "engines": {
806
+ "node": "^18.18.0 || >=20.0.0"
807
+ },
808
+ "funding": {
809
+ "type": "opencollective",
810
+ "url": "https://opencollective.com/typescript-eslint"
811
+ },
812
+ "peerDependencies": {
813
+ "@typescript-eslint/parser": "^7.0.0",
814
+ "eslint": "^8.56.0"
815
+ },
816
+ "peerDependenciesMeta": {
817
+ "typescript": {
818
+ "optional": true
819
+ }
820
+ }
821
+ },
822
+ "node_modules/@typescript-eslint/parser": {
823
+ "version": "7.18.0",
824
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
825
+ "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
826
+ "dev": true,
827
+ "license": "BSD-2-Clause",
828
+ "dependencies": {
829
+ "@typescript-eslint/scope-manager": "7.18.0",
830
+ "@typescript-eslint/types": "7.18.0",
831
+ "@typescript-eslint/typescript-estree": "7.18.0",
832
+ "@typescript-eslint/visitor-keys": "7.18.0",
833
+ "debug": "^4.3.4"
834
+ },
835
+ "engines": {
836
+ "node": "^18.18.0 || >=20.0.0"
837
+ },
838
+ "funding": {
839
+ "type": "opencollective",
840
+ "url": "https://opencollective.com/typescript-eslint"
841
+ },
842
+ "peerDependencies": {
843
+ "eslint": "^8.56.0"
844
+ },
845
+ "peerDependenciesMeta": {
846
+ "typescript": {
847
+ "optional": true
848
+ }
849
+ }
850
+ },
851
+ "node_modules/@typescript-eslint/scope-manager": {
852
+ "version": "7.18.0",
853
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
854
+ "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
855
+ "dev": true,
856
+ "license": "MIT",
857
+ "dependencies": {
858
+ "@typescript-eslint/types": "7.18.0",
859
+ "@typescript-eslint/visitor-keys": "7.18.0"
860
+ },
861
+ "engines": {
862
+ "node": "^18.18.0 || >=20.0.0"
863
+ },
864
+ "funding": {
865
+ "type": "opencollective",
866
+ "url": "https://opencollective.com/typescript-eslint"
867
+ }
868
+ },
869
+ "node_modules/@typescript-eslint/type-utils": {
870
+ "version": "7.18.0",
871
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
872
+ "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
873
+ "dev": true,
874
+ "license": "MIT",
875
+ "dependencies": {
876
+ "@typescript-eslint/typescript-estree": "7.18.0",
877
+ "@typescript-eslint/utils": "7.18.0",
878
+ "debug": "^4.3.4",
879
+ "ts-api-utils": "^1.3.0"
880
+ },
881
+ "engines": {
882
+ "node": "^18.18.0 || >=20.0.0"
883
+ },
884
+ "funding": {
885
+ "type": "opencollective",
886
+ "url": "https://opencollective.com/typescript-eslint"
887
+ },
888
+ "peerDependencies": {
889
+ "eslint": "^8.56.0"
890
+ },
891
+ "peerDependenciesMeta": {
892
+ "typescript": {
893
+ "optional": true
894
+ }
895
+ }
896
+ },
897
+ "node_modules/@typescript-eslint/types": {
898
+ "version": "7.18.0",
899
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
900
+ "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
901
+ "dev": true,
902
+ "license": "MIT",
903
+ "engines": {
904
+ "node": "^18.18.0 || >=20.0.0"
905
+ },
906
+ "funding": {
907
+ "type": "opencollective",
908
+ "url": "https://opencollective.com/typescript-eslint"
909
+ }
910
+ },
911
+ "node_modules/@typescript-eslint/typescript-estree": {
912
+ "version": "7.18.0",
913
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
914
+ "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
915
+ "dev": true,
916
+ "license": "BSD-2-Clause",
917
+ "dependencies": {
918
+ "@typescript-eslint/types": "7.18.0",
919
+ "@typescript-eslint/visitor-keys": "7.18.0",
920
+ "debug": "^4.3.4",
921
+ "globby": "^11.1.0",
922
+ "is-glob": "^4.0.3",
923
+ "minimatch": "^9.0.4",
924
+ "semver": "^7.6.0",
925
+ "ts-api-utils": "^1.3.0"
926
+ },
927
+ "engines": {
928
+ "node": "^18.18.0 || >=20.0.0"
929
+ },
930
+ "funding": {
931
+ "type": "opencollective",
932
+ "url": "https://opencollective.com/typescript-eslint"
933
+ },
934
+ "peerDependenciesMeta": {
935
+ "typescript": {
936
+ "optional": true
937
+ }
938
+ }
939
+ },
940
+ "node_modules/@typescript-eslint/utils": {
941
+ "version": "7.18.0",
942
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
943
+ "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
944
+ "dev": true,
945
+ "license": "MIT",
946
+ "dependencies": {
947
+ "@eslint-community/eslint-utils": "^4.4.0",
948
+ "@typescript-eslint/scope-manager": "7.18.0",
949
+ "@typescript-eslint/types": "7.18.0",
950
+ "@typescript-eslint/typescript-estree": "7.18.0"
951
+ },
952
+ "engines": {
953
+ "node": "^18.18.0 || >=20.0.0"
954
+ },
955
+ "funding": {
956
+ "type": "opencollective",
957
+ "url": "https://opencollective.com/typescript-eslint"
958
+ },
959
+ "peerDependencies": {
960
+ "eslint": "^8.56.0"
961
+ }
962
+ },
963
+ "node_modules/@typescript-eslint/visitor-keys": {
964
+ "version": "7.18.0",
965
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
966
+ "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
967
+ "dev": true,
968
+ "license": "MIT",
969
+ "dependencies": {
970
+ "@typescript-eslint/types": "7.18.0",
971
+ "eslint-visitor-keys": "^3.4.3"
972
+ },
973
+ "engines": {
974
+ "node": "^18.18.0 || >=20.0.0"
975
+ },
976
+ "funding": {
977
+ "type": "opencollective",
978
+ "url": "https://opencollective.com/typescript-eslint"
979
+ }
980
+ },
981
+ "node_modules/@typespec/ts-http-runtime": {
982
+ "version": "0.3.6",
983
+ "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz",
984
+ "integrity": "sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==",
985
+ "dev": true,
986
+ "license": "MIT",
987
+ "dependencies": {
988
+ "http-proxy-agent": "^7.0.0",
989
+ "https-proxy-agent": "^7.0.0",
990
+ "tslib": "^2.6.2"
991
+ },
992
+ "engines": {
993
+ "node": ">=20.0.0"
994
+ }
995
+ },
996
+ "node_modules/@ungap/structured-clone": {
997
+ "version": "1.3.2",
998
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz",
999
+ "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==",
1000
+ "dev": true,
1001
+ "license": "ISC"
1002
+ },
1003
+ "node_modules/@vscode/vsce": {
1004
+ "version": "2.32.0",
1005
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.32.0.tgz",
1006
+ "integrity": "sha512-3EFJfsgrSftIqt3EtdRcAygy/OJ3hstyI1cDmIgkU9CFZW5C+3djr6mfosndCUqcVYuyjmxOK1xmFp/Bq7+NIg==",
1007
+ "dev": true,
1008
+ "license": "MIT",
1009
+ "dependencies": {
1010
+ "@azure/identity": "^4.1.0",
1011
+ "@vscode/vsce-sign": "^2.0.0",
1012
+ "azure-devops-node-api": "^12.5.0",
1013
+ "chalk": "^2.4.2",
1014
+ "cheerio": "^1.0.0-rc.9",
1015
+ "cockatiel": "^3.1.2",
1016
+ "commander": "^6.2.1",
1017
+ "form-data": "^4.0.0",
1018
+ "glob": "^7.0.6",
1019
+ "hosted-git-info": "^4.0.2",
1020
+ "jsonc-parser": "^3.2.0",
1021
+ "leven": "^3.1.0",
1022
+ "markdown-it": "^12.3.2",
1023
+ "mime": "^1.3.4",
1024
+ "minimatch": "^3.0.3",
1025
+ "parse-semver": "^1.1.1",
1026
+ "read": "^1.0.7",
1027
+ "semver": "^7.5.2",
1028
+ "tmp": "^0.2.1",
1029
+ "typed-rest-client": "^1.8.4",
1030
+ "url-join": "^4.0.1",
1031
+ "xml2js": "^0.5.0",
1032
+ "yauzl": "^2.3.1",
1033
+ "yazl": "^2.2.2"
1034
+ },
1035
+ "bin": {
1036
+ "vsce": "vsce"
1037
+ },
1038
+ "engines": {
1039
+ "node": ">= 16"
1040
+ },
1041
+ "optionalDependencies": {
1042
+ "keytar": "^7.7.0"
1043
+ }
1044
+ },
1045
+ "node_modules/@vscode/vsce-sign": {
1046
+ "version": "2.0.9",
1047
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz",
1048
+ "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==",
1049
+ "dev": true,
1050
+ "hasInstallScript": true,
1051
+ "license": "SEE LICENSE IN LICENSE.txt",
1052
+ "optionalDependencies": {
1053
+ "@vscode/vsce-sign-alpine-arm64": "2.0.6",
1054
+ "@vscode/vsce-sign-alpine-x64": "2.0.6",
1055
+ "@vscode/vsce-sign-darwin-arm64": "2.0.6",
1056
+ "@vscode/vsce-sign-darwin-x64": "2.0.6",
1057
+ "@vscode/vsce-sign-linux-arm": "2.0.6",
1058
+ "@vscode/vsce-sign-linux-arm64": "2.0.6",
1059
+ "@vscode/vsce-sign-linux-x64": "2.0.6",
1060
+ "@vscode/vsce-sign-win32-arm64": "2.0.6",
1061
+ "@vscode/vsce-sign-win32-x64": "2.0.6"
1062
+ }
1063
+ },
1064
+ "node_modules/@vscode/vsce-sign-alpine-arm64": {
1065
+ "version": "2.0.6",
1066
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz",
1067
+ "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==",
1068
+ "cpu": [
1069
+ "arm64"
1070
+ ],
1071
+ "dev": true,
1072
+ "license": "SEE LICENSE IN LICENSE.txt",
1073
+ "optional": true,
1074
+ "os": [
1075
+ "alpine"
1076
+ ]
1077
+ },
1078
+ "node_modules/@vscode/vsce-sign-alpine-x64": {
1079
+ "version": "2.0.6",
1080
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz",
1081
+ "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==",
1082
+ "cpu": [
1083
+ "x64"
1084
+ ],
1085
+ "dev": true,
1086
+ "license": "SEE LICENSE IN LICENSE.txt",
1087
+ "optional": true,
1088
+ "os": [
1089
+ "alpine"
1090
+ ]
1091
+ },
1092
+ "node_modules/@vscode/vsce-sign-darwin-arm64": {
1093
+ "version": "2.0.6",
1094
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz",
1095
+ "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==",
1096
+ "cpu": [
1097
+ "arm64"
1098
+ ],
1099
+ "dev": true,
1100
+ "license": "SEE LICENSE IN LICENSE.txt",
1101
+ "optional": true,
1102
+ "os": [
1103
+ "darwin"
1104
+ ]
1105
+ },
1106
+ "node_modules/@vscode/vsce-sign-darwin-x64": {
1107
+ "version": "2.0.6",
1108
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz",
1109
+ "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==",
1110
+ "cpu": [
1111
+ "x64"
1112
+ ],
1113
+ "dev": true,
1114
+ "license": "SEE LICENSE IN LICENSE.txt",
1115
+ "optional": true,
1116
+ "os": [
1117
+ "darwin"
1118
+ ]
1119
+ },
1120
+ "node_modules/@vscode/vsce-sign-linux-arm": {
1121
+ "version": "2.0.6",
1122
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz",
1123
+ "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==",
1124
+ "cpu": [
1125
+ "arm"
1126
+ ],
1127
+ "dev": true,
1128
+ "license": "SEE LICENSE IN LICENSE.txt",
1129
+ "optional": true,
1130
+ "os": [
1131
+ "linux"
1132
+ ]
1133
+ },
1134
+ "node_modules/@vscode/vsce-sign-linux-arm64": {
1135
+ "version": "2.0.6",
1136
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz",
1137
+ "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==",
1138
+ "cpu": [
1139
+ "arm64"
1140
+ ],
1141
+ "dev": true,
1142
+ "license": "SEE LICENSE IN LICENSE.txt",
1143
+ "optional": true,
1144
+ "os": [
1145
+ "linux"
1146
+ ]
1147
+ },
1148
+ "node_modules/@vscode/vsce-sign-linux-x64": {
1149
+ "version": "2.0.6",
1150
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz",
1151
+ "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==",
1152
+ "cpu": [
1153
+ "x64"
1154
+ ],
1155
+ "dev": true,
1156
+ "license": "SEE LICENSE IN LICENSE.txt",
1157
+ "optional": true,
1158
+ "os": [
1159
+ "linux"
1160
+ ]
1161
+ },
1162
+ "node_modules/@vscode/vsce-sign-win32-arm64": {
1163
+ "version": "2.0.6",
1164
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz",
1165
+ "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==",
1166
+ "cpu": [
1167
+ "arm64"
1168
+ ],
1169
+ "dev": true,
1170
+ "license": "SEE LICENSE IN LICENSE.txt",
1171
+ "optional": true,
1172
+ "os": [
1173
+ "win32"
1174
+ ]
1175
+ },
1176
+ "node_modules/@vscode/vsce-sign-win32-x64": {
1177
+ "version": "2.0.6",
1178
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz",
1179
+ "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==",
1180
+ "cpu": [
1181
+ "x64"
1182
+ ],
1183
+ "dev": true,
1184
+ "license": "SEE LICENSE IN LICENSE.txt",
1185
+ "optional": true,
1186
+ "os": [
1187
+ "win32"
1188
+ ]
1189
+ },
1190
+ "node_modules/@vscode/vsce/node_modules/brace-expansion": {
1191
+ "version": "1.1.15",
1192
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
1193
+ "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
1194
+ "dev": true,
1195
+ "license": "MIT",
1196
+ "dependencies": {
1197
+ "balanced-match": "^1.0.0",
1198
+ "concat-map": "0.0.1"
1199
+ }
1200
+ },
1201
+ "node_modules/@vscode/vsce/node_modules/minimatch": {
1202
+ "version": "3.1.5",
1203
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
1204
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
1205
+ "dev": true,
1206
+ "license": "ISC",
1207
+ "dependencies": {
1208
+ "brace-expansion": "^1.1.7"
1209
+ },
1210
+ "engines": {
1211
+ "node": "*"
1212
+ }
1213
+ },
1214
+ "node_modules/acorn": {
1215
+ "version": "8.17.0",
1216
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
1217
+ "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
1218
+ "dev": true,
1219
+ "license": "MIT",
1220
+ "bin": {
1221
+ "acorn": "bin/acorn"
1222
+ },
1223
+ "engines": {
1224
+ "node": ">=0.4.0"
1225
+ }
1226
+ },
1227
+ "node_modules/acorn-jsx": {
1228
+ "version": "5.3.2",
1229
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1230
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1231
+ "dev": true,
1232
+ "license": "MIT",
1233
+ "peerDependencies": {
1234
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
1235
+ }
1236
+ },
1237
+ "node_modules/agent-base": {
1238
+ "version": "7.1.4",
1239
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
1240
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
1241
+ "dev": true,
1242
+ "license": "MIT",
1243
+ "engines": {
1244
+ "node": ">= 14"
1245
+ }
1246
+ },
1247
+ "node_modules/ajv": {
1248
+ "version": "6.15.0",
1249
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
1250
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
1251
+ "dev": true,
1252
+ "license": "MIT",
1253
+ "dependencies": {
1254
+ "fast-deep-equal": "^3.1.1",
1255
+ "fast-json-stable-stringify": "^2.0.0",
1256
+ "json-schema-traverse": "^0.4.1",
1257
+ "uri-js": "^4.2.2"
1258
+ },
1259
+ "funding": {
1260
+ "type": "github",
1261
+ "url": "https://github.com/sponsors/epoberezkin"
1262
+ }
1263
+ },
1264
+ "node_modules/ansi-regex": {
1265
+ "version": "5.0.1",
1266
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1267
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1268
+ "dev": true,
1269
+ "license": "MIT",
1270
+ "engines": {
1271
+ "node": ">=8"
1272
+ }
1273
+ },
1274
+ "node_modules/ansi-styles": {
1275
+ "version": "3.2.1",
1276
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1277
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1278
+ "dev": true,
1279
+ "license": "MIT",
1280
+ "dependencies": {
1281
+ "color-convert": "^1.9.0"
1282
+ },
1283
+ "engines": {
1284
+ "node": ">=4"
1285
+ }
1286
+ },
1287
+ "node_modules/argparse": {
1288
+ "version": "2.0.1",
1289
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1290
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1291
+ "dev": true,
1292
+ "license": "Python-2.0"
1293
+ },
1294
+ "node_modules/array-union": {
1295
+ "version": "2.1.0",
1296
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
1297
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
1298
+ "dev": true,
1299
+ "license": "MIT",
1300
+ "engines": {
1301
+ "node": ">=8"
1302
+ }
1303
+ },
1304
+ "node_modules/asynckit": {
1305
+ "version": "0.4.0",
1306
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
1307
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
1308
+ "dev": true,
1309
+ "license": "MIT"
1310
+ },
1311
+ "node_modules/azure-devops-node-api": {
1312
+ "version": "12.5.0",
1313
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
1314
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
1315
+ "dev": true,
1316
+ "license": "MIT",
1317
+ "dependencies": {
1318
+ "tunnel": "0.0.6",
1319
+ "typed-rest-client": "^1.8.4"
1320
+ }
1321
+ },
1322
+ "node_modules/balanced-match": {
1323
+ "version": "1.0.2",
1324
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1325
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1326
+ "dev": true,
1327
+ "license": "MIT"
1328
+ },
1329
+ "node_modules/base64-js": {
1330
+ "version": "1.5.1",
1331
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
1332
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
1333
+ "dev": true,
1334
+ "funding": [
1335
+ {
1336
+ "type": "github",
1337
+ "url": "https://github.com/sponsors/feross"
1338
+ },
1339
+ {
1340
+ "type": "patreon",
1341
+ "url": "https://www.patreon.com/feross"
1342
+ },
1343
+ {
1344
+ "type": "consulting",
1345
+ "url": "https://feross.org/support"
1346
+ }
1347
+ ],
1348
+ "license": "MIT",
1349
+ "optional": true
1350
+ },
1351
+ "node_modules/bl": {
1352
+ "version": "4.1.0",
1353
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
1354
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
1355
+ "dev": true,
1356
+ "license": "MIT",
1357
+ "optional": true,
1358
+ "dependencies": {
1359
+ "buffer": "^5.5.0",
1360
+ "inherits": "^2.0.4",
1361
+ "readable-stream": "^3.4.0"
1362
+ }
1363
+ },
1364
+ "node_modules/boolbase": {
1365
+ "version": "1.0.0",
1366
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
1367
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
1368
+ "dev": true,
1369
+ "license": "ISC"
1370
+ },
1371
+ "node_modules/brace-expansion": {
1372
+ "version": "2.1.1",
1373
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
1374
+ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
1375
+ "dev": true,
1376
+ "license": "MIT",
1377
+ "dependencies": {
1378
+ "balanced-match": "^1.0.0"
1379
+ }
1380
+ },
1381
+ "node_modules/braces": {
1382
+ "version": "3.0.3",
1383
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1384
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1385
+ "dev": true,
1386
+ "license": "MIT",
1387
+ "dependencies": {
1388
+ "fill-range": "^7.1.1"
1389
+ },
1390
+ "engines": {
1391
+ "node": ">=8"
1392
+ }
1393
+ },
1394
+ "node_modules/buffer": {
1395
+ "version": "5.7.1",
1396
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
1397
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
1398
+ "dev": true,
1399
+ "funding": [
1400
+ {
1401
+ "type": "github",
1402
+ "url": "https://github.com/sponsors/feross"
1403
+ },
1404
+ {
1405
+ "type": "patreon",
1406
+ "url": "https://www.patreon.com/feross"
1407
+ },
1408
+ {
1409
+ "type": "consulting",
1410
+ "url": "https://feross.org/support"
1411
+ }
1412
+ ],
1413
+ "license": "MIT",
1414
+ "optional": true,
1415
+ "dependencies": {
1416
+ "base64-js": "^1.3.1",
1417
+ "ieee754": "^1.1.13"
1418
+ }
1419
+ },
1420
+ "node_modules/buffer-crc32": {
1421
+ "version": "0.2.13",
1422
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
1423
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
1424
+ "dev": true,
1425
+ "license": "MIT",
1426
+ "engines": {
1427
+ "node": "*"
1428
+ }
1429
+ },
1430
+ "node_modules/buffer-equal-constant-time": {
1431
+ "version": "1.0.1",
1432
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
1433
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
1434
+ "dev": true,
1435
+ "license": "BSD-3-Clause"
1436
+ },
1437
+ "node_modules/bundle-name": {
1438
+ "version": "4.1.0",
1439
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
1440
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
1441
+ "dev": true,
1442
+ "license": "MIT",
1443
+ "dependencies": {
1444
+ "run-applescript": "^7.0.0"
1445
+ },
1446
+ "engines": {
1447
+ "node": ">=18"
1448
+ },
1449
+ "funding": {
1450
+ "url": "https://github.com/sponsors/sindresorhus"
1451
+ }
1452
+ },
1453
+ "node_modules/call-bind-apply-helpers": {
1454
+ "version": "1.0.2",
1455
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
1456
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
1457
+ "dev": true,
1458
+ "license": "MIT",
1459
+ "dependencies": {
1460
+ "es-errors": "^1.3.0",
1461
+ "function-bind": "^1.1.2"
1462
+ },
1463
+ "engines": {
1464
+ "node": ">= 0.4"
1465
+ }
1466
+ },
1467
+ "node_modules/call-bound": {
1468
+ "version": "1.0.4",
1469
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
1470
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
1471
+ "dev": true,
1472
+ "license": "MIT",
1473
+ "dependencies": {
1474
+ "call-bind-apply-helpers": "^1.0.2",
1475
+ "get-intrinsic": "^1.3.0"
1476
+ },
1477
+ "engines": {
1478
+ "node": ">= 0.4"
1479
+ },
1480
+ "funding": {
1481
+ "url": "https://github.com/sponsors/ljharb"
1482
+ }
1483
+ },
1484
+ "node_modules/callsites": {
1485
+ "version": "3.1.0",
1486
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1487
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1488
+ "dev": true,
1489
+ "license": "MIT",
1490
+ "engines": {
1491
+ "node": ">=6"
1492
+ }
1493
+ },
1494
+ "node_modules/chalk": {
1495
+ "version": "2.4.2",
1496
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1497
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1498
+ "dev": true,
1499
+ "license": "MIT",
1500
+ "dependencies": {
1501
+ "ansi-styles": "^3.2.1",
1502
+ "escape-string-regexp": "^1.0.5",
1503
+ "supports-color": "^5.3.0"
1504
+ },
1505
+ "engines": {
1506
+ "node": ">=4"
1507
+ }
1508
+ },
1509
+ "node_modules/cheerio": {
1510
+ "version": "1.2.0",
1511
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
1512
+ "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
1513
+ "dev": true,
1514
+ "license": "MIT",
1515
+ "dependencies": {
1516
+ "cheerio-select": "^2.1.0",
1517
+ "dom-serializer": "^2.0.0",
1518
+ "domhandler": "^5.0.3",
1519
+ "domutils": "^3.2.2",
1520
+ "encoding-sniffer": "^0.2.1",
1521
+ "htmlparser2": "^10.1.0",
1522
+ "parse5": "^7.3.0",
1523
+ "parse5-htmlparser2-tree-adapter": "^7.1.0",
1524
+ "parse5-parser-stream": "^7.1.2",
1525
+ "undici": "^7.19.0",
1526
+ "whatwg-mimetype": "^4.0.0"
1527
+ },
1528
+ "engines": {
1529
+ "node": ">=20.18.1"
1530
+ },
1531
+ "funding": {
1532
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
1533
+ }
1534
+ },
1535
+ "node_modules/cheerio-select": {
1536
+ "version": "2.1.0",
1537
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
1538
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
1539
+ "dev": true,
1540
+ "license": "BSD-2-Clause",
1541
+ "dependencies": {
1542
+ "boolbase": "^1.0.0",
1543
+ "css-select": "^5.1.0",
1544
+ "css-what": "^6.1.0",
1545
+ "domelementtype": "^2.3.0",
1546
+ "domhandler": "^5.0.3",
1547
+ "domutils": "^3.0.1"
1548
+ },
1549
+ "funding": {
1550
+ "url": "https://github.com/sponsors/fb55"
1551
+ }
1552
+ },
1553
+ "node_modules/chownr": {
1554
+ "version": "1.1.4",
1555
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
1556
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
1557
+ "dev": true,
1558
+ "license": "ISC",
1559
+ "optional": true
1560
+ },
1561
+ "node_modules/cockatiel": {
1562
+ "version": "3.2.1",
1563
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz",
1564
+ "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==",
1565
+ "dev": true,
1566
+ "license": "MIT",
1567
+ "engines": {
1568
+ "node": ">=16"
1569
+ }
1570
+ },
1571
+ "node_modules/color-convert": {
1572
+ "version": "1.9.3",
1573
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1574
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1575
+ "dev": true,
1576
+ "license": "MIT",
1577
+ "dependencies": {
1578
+ "color-name": "1.1.3"
1579
+ }
1580
+ },
1581
+ "node_modules/color-name": {
1582
+ "version": "1.1.3",
1583
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1584
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1585
+ "dev": true,
1586
+ "license": "MIT"
1587
+ },
1588
+ "node_modules/combined-stream": {
1589
+ "version": "1.0.8",
1590
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
1591
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
1592
+ "dev": true,
1593
+ "license": "MIT",
1594
+ "dependencies": {
1595
+ "delayed-stream": "~1.0.0"
1596
+ },
1597
+ "engines": {
1598
+ "node": ">= 0.8"
1599
+ }
1600
+ },
1601
+ "node_modules/commander": {
1602
+ "version": "6.2.1",
1603
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
1604
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
1605
+ "dev": true,
1606
+ "license": "MIT",
1607
+ "engines": {
1608
+ "node": ">= 6"
1609
+ }
1610
+ },
1611
+ "node_modules/concat-map": {
1612
+ "version": "0.0.1",
1613
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1614
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1615
+ "dev": true,
1616
+ "license": "MIT"
1617
+ },
1618
+ "node_modules/cross-spawn": {
1619
+ "version": "7.0.6",
1620
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1621
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1622
+ "dev": true,
1623
+ "license": "MIT",
1624
+ "dependencies": {
1625
+ "path-key": "^3.1.0",
1626
+ "shebang-command": "^2.0.0",
1627
+ "which": "^2.0.1"
1628
+ },
1629
+ "engines": {
1630
+ "node": ">= 8"
1631
+ }
1632
+ },
1633
+ "node_modules/css-select": {
1634
+ "version": "5.2.2",
1635
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
1636
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
1637
+ "dev": true,
1638
+ "license": "BSD-2-Clause",
1639
+ "dependencies": {
1640
+ "boolbase": "^1.0.0",
1641
+ "css-what": "^6.1.0",
1642
+ "domhandler": "^5.0.2",
1643
+ "domutils": "^3.0.1",
1644
+ "nth-check": "^2.0.1"
1645
+ },
1646
+ "funding": {
1647
+ "url": "https://github.com/sponsors/fb55"
1648
+ }
1649
+ },
1650
+ "node_modules/css-what": {
1651
+ "version": "6.2.2",
1652
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
1653
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
1654
+ "dev": true,
1655
+ "license": "BSD-2-Clause",
1656
+ "engines": {
1657
+ "node": ">= 6"
1658
+ },
1659
+ "funding": {
1660
+ "url": "https://github.com/sponsors/fb55"
1661
+ }
1662
+ },
1663
+ "node_modules/debug": {
1664
+ "version": "4.4.3",
1665
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1666
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1667
+ "dev": true,
1668
+ "license": "MIT",
1669
+ "dependencies": {
1670
+ "ms": "^2.1.3"
1671
+ },
1672
+ "engines": {
1673
+ "node": ">=6.0"
1674
+ },
1675
+ "peerDependenciesMeta": {
1676
+ "supports-color": {
1677
+ "optional": true
1678
+ }
1679
+ }
1680
+ },
1681
+ "node_modules/decompress-response": {
1682
+ "version": "6.0.0",
1683
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
1684
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
1685
+ "dev": true,
1686
+ "license": "MIT",
1687
+ "optional": true,
1688
+ "dependencies": {
1689
+ "mimic-response": "^3.1.0"
1690
+ },
1691
+ "engines": {
1692
+ "node": ">=10"
1693
+ },
1694
+ "funding": {
1695
+ "url": "https://github.com/sponsors/sindresorhus"
1696
+ }
1697
+ },
1698
+ "node_modules/deep-extend": {
1699
+ "version": "0.6.0",
1700
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1701
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1702
+ "dev": true,
1703
+ "license": "MIT",
1704
+ "optional": true,
1705
+ "engines": {
1706
+ "node": ">=4.0.0"
1707
+ }
1708
+ },
1709
+ "node_modules/deep-is": {
1710
+ "version": "0.1.4",
1711
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1712
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1713
+ "dev": true,
1714
+ "license": "MIT"
1715
+ },
1716
+ "node_modules/default-browser": {
1717
+ "version": "5.5.0",
1718
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
1719
+ "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
1720
+ "dev": true,
1721
+ "license": "MIT",
1722
+ "dependencies": {
1723
+ "bundle-name": "^4.1.0",
1724
+ "default-browser-id": "^5.0.0"
1725
+ },
1726
+ "engines": {
1727
+ "node": ">=18"
1728
+ },
1729
+ "funding": {
1730
+ "url": "https://github.com/sponsors/sindresorhus"
1731
+ }
1732
+ },
1733
+ "node_modules/default-browser-id": {
1734
+ "version": "5.0.1",
1735
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
1736
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
1737
+ "dev": true,
1738
+ "license": "MIT",
1739
+ "engines": {
1740
+ "node": ">=18"
1741
+ },
1742
+ "funding": {
1743
+ "url": "https://github.com/sponsors/sindresorhus"
1744
+ }
1745
+ },
1746
+ "node_modules/define-lazy-prop": {
1747
+ "version": "3.0.0",
1748
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
1749
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
1750
+ "dev": true,
1751
+ "license": "MIT",
1752
+ "engines": {
1753
+ "node": ">=12"
1754
+ },
1755
+ "funding": {
1756
+ "url": "https://github.com/sponsors/sindresorhus"
1757
+ }
1758
+ },
1759
+ "node_modules/delayed-stream": {
1760
+ "version": "1.0.0",
1761
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1762
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
1763
+ "dev": true,
1764
+ "license": "MIT",
1765
+ "engines": {
1766
+ "node": ">=0.4.0"
1767
+ }
1768
+ },
1769
+ "node_modules/detect-libc": {
1770
+ "version": "2.1.2",
1771
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
1772
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
1773
+ "dev": true,
1774
+ "license": "Apache-2.0",
1775
+ "optional": true,
1776
+ "engines": {
1777
+ "node": ">=8"
1778
+ }
1779
+ },
1780
+ "node_modules/dir-glob": {
1781
+ "version": "3.0.1",
1782
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
1783
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
1784
+ "dev": true,
1785
+ "license": "MIT",
1786
+ "dependencies": {
1787
+ "path-type": "^4.0.0"
1788
+ },
1789
+ "engines": {
1790
+ "node": ">=8"
1791
+ }
1792
+ },
1793
+ "node_modules/doctrine": {
1794
+ "version": "3.0.0",
1795
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1796
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1797
+ "dev": true,
1798
+ "license": "Apache-2.0",
1799
+ "dependencies": {
1800
+ "esutils": "^2.0.2"
1801
+ },
1802
+ "engines": {
1803
+ "node": ">=6.0.0"
1804
+ }
1805
+ },
1806
+ "node_modules/dom-serializer": {
1807
+ "version": "2.0.0",
1808
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
1809
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
1810
+ "dev": true,
1811
+ "license": "MIT",
1812
+ "dependencies": {
1813
+ "domelementtype": "^2.3.0",
1814
+ "domhandler": "^5.0.2",
1815
+ "entities": "^4.2.0"
1816
+ },
1817
+ "funding": {
1818
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
1819
+ }
1820
+ },
1821
+ "node_modules/domelementtype": {
1822
+ "version": "2.3.0",
1823
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
1824
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
1825
+ "dev": true,
1826
+ "funding": [
1827
+ {
1828
+ "type": "github",
1829
+ "url": "https://github.com/sponsors/fb55"
1830
+ }
1831
+ ],
1832
+ "license": "BSD-2-Clause"
1833
+ },
1834
+ "node_modules/domhandler": {
1835
+ "version": "5.0.3",
1836
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
1837
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
1838
+ "dev": true,
1839
+ "license": "BSD-2-Clause",
1840
+ "dependencies": {
1841
+ "domelementtype": "^2.3.0"
1842
+ },
1843
+ "engines": {
1844
+ "node": ">= 4"
1845
+ },
1846
+ "funding": {
1847
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
1848
+ }
1849
+ },
1850
+ "node_modules/domutils": {
1851
+ "version": "3.2.2",
1852
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
1853
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
1854
+ "dev": true,
1855
+ "license": "BSD-2-Clause",
1856
+ "dependencies": {
1857
+ "dom-serializer": "^2.0.0",
1858
+ "domelementtype": "^2.3.0",
1859
+ "domhandler": "^5.0.3"
1860
+ },
1861
+ "funding": {
1862
+ "url": "https://github.com/fb55/domutils?sponsor=1"
1863
+ }
1864
+ },
1865
+ "node_modules/dunder-proto": {
1866
+ "version": "1.0.1",
1867
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
1868
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
1869
+ "dev": true,
1870
+ "license": "MIT",
1871
+ "dependencies": {
1872
+ "call-bind-apply-helpers": "^1.0.1",
1873
+ "es-errors": "^1.3.0",
1874
+ "gopd": "^1.2.0"
1875
+ },
1876
+ "engines": {
1877
+ "node": ">= 0.4"
1878
+ }
1879
+ },
1880
+ "node_modules/ecdsa-sig-formatter": {
1881
+ "version": "1.0.11",
1882
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
1883
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
1884
+ "dev": true,
1885
+ "license": "Apache-2.0",
1886
+ "dependencies": {
1887
+ "safe-buffer": "^5.0.1"
1888
+ }
1889
+ },
1890
+ "node_modules/encoding-sniffer": {
1891
+ "version": "0.2.1",
1892
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
1893
+ "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
1894
+ "dev": true,
1895
+ "license": "MIT",
1896
+ "dependencies": {
1897
+ "iconv-lite": "^0.6.3",
1898
+ "whatwg-encoding": "^3.1.1"
1899
+ },
1900
+ "funding": {
1901
+ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
1902
+ }
1903
+ },
1904
+ "node_modules/end-of-stream": {
1905
+ "version": "1.4.5",
1906
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
1907
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
1908
+ "dev": true,
1909
+ "license": "MIT",
1910
+ "optional": true,
1911
+ "dependencies": {
1912
+ "once": "^1.4.0"
1913
+ }
1914
+ },
1915
+ "node_modules/entities": {
1916
+ "version": "4.5.0",
1917
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
1918
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
1919
+ "dev": true,
1920
+ "license": "BSD-2-Clause",
1921
+ "engines": {
1922
+ "node": ">=0.12"
1923
+ },
1924
+ "funding": {
1925
+ "url": "https://github.com/fb55/entities?sponsor=1"
1926
+ }
1927
+ },
1928
+ "node_modules/es-define-property": {
1929
+ "version": "1.0.1",
1930
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
1931
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
1932
+ "dev": true,
1933
+ "license": "MIT",
1934
+ "engines": {
1935
+ "node": ">= 0.4"
1936
+ }
1937
+ },
1938
+ "node_modules/es-errors": {
1939
+ "version": "1.3.0",
1940
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1941
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1942
+ "dev": true,
1943
+ "license": "MIT",
1944
+ "engines": {
1945
+ "node": ">= 0.4"
1946
+ }
1947
+ },
1948
+ "node_modules/es-object-atoms": {
1949
+ "version": "1.1.2",
1950
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
1951
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
1952
+ "dev": true,
1953
+ "license": "MIT",
1954
+ "dependencies": {
1955
+ "es-errors": "^1.3.0"
1956
+ },
1957
+ "engines": {
1958
+ "node": ">= 0.4"
1959
+ }
1960
+ },
1961
+ "node_modules/es-set-tostringtag": {
1962
+ "version": "2.1.0",
1963
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
1964
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
1965
+ "dev": true,
1966
+ "license": "MIT",
1967
+ "dependencies": {
1968
+ "es-errors": "^1.3.0",
1969
+ "get-intrinsic": "^1.2.6",
1970
+ "has-tostringtag": "^1.0.2",
1971
+ "hasown": "^2.0.2"
1972
+ },
1973
+ "engines": {
1974
+ "node": ">= 0.4"
1975
+ }
1976
+ },
1977
+ "node_modules/esbuild": {
1978
+ "version": "0.20.2",
1979
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
1980
+ "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
1981
+ "dev": true,
1982
+ "hasInstallScript": true,
1983
+ "license": "MIT",
1984
+ "bin": {
1985
+ "esbuild": "bin/esbuild"
1986
+ },
1987
+ "engines": {
1988
+ "node": ">=12"
1989
+ },
1990
+ "optionalDependencies": {
1991
+ "@esbuild/aix-ppc64": "0.20.2",
1992
+ "@esbuild/android-arm": "0.20.2",
1993
+ "@esbuild/android-arm64": "0.20.2",
1994
+ "@esbuild/android-x64": "0.20.2",
1995
+ "@esbuild/darwin-arm64": "0.20.2",
1996
+ "@esbuild/darwin-x64": "0.20.2",
1997
+ "@esbuild/freebsd-arm64": "0.20.2",
1998
+ "@esbuild/freebsd-x64": "0.20.2",
1999
+ "@esbuild/linux-arm": "0.20.2",
2000
+ "@esbuild/linux-arm64": "0.20.2",
2001
+ "@esbuild/linux-ia32": "0.20.2",
2002
+ "@esbuild/linux-loong64": "0.20.2",
2003
+ "@esbuild/linux-mips64el": "0.20.2",
2004
+ "@esbuild/linux-ppc64": "0.20.2",
2005
+ "@esbuild/linux-riscv64": "0.20.2",
2006
+ "@esbuild/linux-s390x": "0.20.2",
2007
+ "@esbuild/linux-x64": "0.20.2",
2008
+ "@esbuild/netbsd-x64": "0.20.2",
2009
+ "@esbuild/openbsd-x64": "0.20.2",
2010
+ "@esbuild/sunos-x64": "0.20.2",
2011
+ "@esbuild/win32-arm64": "0.20.2",
2012
+ "@esbuild/win32-ia32": "0.20.2",
2013
+ "@esbuild/win32-x64": "0.20.2"
2014
+ }
2015
+ },
2016
+ "node_modules/escape-string-regexp": {
2017
+ "version": "1.0.5",
2018
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
2019
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
2020
+ "dev": true,
2021
+ "license": "MIT",
2022
+ "engines": {
2023
+ "node": ">=0.8.0"
2024
+ }
2025
+ },
2026
+ "node_modules/eslint": {
2027
+ "version": "8.57.1",
2028
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
2029
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
2030
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
2031
+ "dev": true,
2032
+ "license": "MIT",
2033
+ "dependencies": {
2034
+ "@eslint-community/eslint-utils": "^4.2.0",
2035
+ "@eslint-community/regexpp": "^4.6.1",
2036
+ "@eslint/eslintrc": "^2.1.4",
2037
+ "@eslint/js": "8.57.1",
2038
+ "@humanwhocodes/config-array": "^0.13.0",
2039
+ "@humanwhocodes/module-importer": "^1.0.1",
2040
+ "@nodelib/fs.walk": "^1.2.8",
2041
+ "@ungap/structured-clone": "^1.2.0",
2042
+ "ajv": "^6.12.4",
2043
+ "chalk": "^4.0.0",
2044
+ "cross-spawn": "^7.0.2",
2045
+ "debug": "^4.3.2",
2046
+ "doctrine": "^3.0.0",
2047
+ "escape-string-regexp": "^4.0.0",
2048
+ "eslint-scope": "^7.2.2",
2049
+ "eslint-visitor-keys": "^3.4.3",
2050
+ "espree": "^9.6.1",
2051
+ "esquery": "^1.4.2",
2052
+ "esutils": "^2.0.2",
2053
+ "fast-deep-equal": "^3.1.3",
2054
+ "file-entry-cache": "^6.0.1",
2055
+ "find-up": "^5.0.0",
2056
+ "glob-parent": "^6.0.2",
2057
+ "globals": "^13.19.0",
2058
+ "graphemer": "^1.4.0",
2059
+ "ignore": "^5.2.0",
2060
+ "imurmurhash": "^0.1.4",
2061
+ "is-glob": "^4.0.0",
2062
+ "is-path-inside": "^3.0.3",
2063
+ "js-yaml": "^4.1.0",
2064
+ "json-stable-stringify-without-jsonify": "^1.0.1",
2065
+ "levn": "^0.4.1",
2066
+ "lodash.merge": "^4.6.2",
2067
+ "minimatch": "^3.1.2",
2068
+ "natural-compare": "^1.4.0",
2069
+ "optionator": "^0.9.3",
2070
+ "strip-ansi": "^6.0.1",
2071
+ "text-table": "^0.2.0"
2072
+ },
2073
+ "bin": {
2074
+ "eslint": "bin/eslint.js"
2075
+ },
2076
+ "engines": {
2077
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2078
+ },
2079
+ "funding": {
2080
+ "url": "https://opencollective.com/eslint"
2081
+ }
2082
+ },
2083
+ "node_modules/eslint-scope": {
2084
+ "version": "7.2.2",
2085
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
2086
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
2087
+ "dev": true,
2088
+ "license": "BSD-2-Clause",
2089
+ "dependencies": {
2090
+ "esrecurse": "^4.3.0",
2091
+ "estraverse": "^5.2.0"
2092
+ },
2093
+ "engines": {
2094
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2095
+ },
2096
+ "funding": {
2097
+ "url": "https://opencollective.com/eslint"
2098
+ }
2099
+ },
2100
+ "node_modules/eslint-visitor-keys": {
2101
+ "version": "3.4.3",
2102
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
2103
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
2104
+ "dev": true,
2105
+ "license": "Apache-2.0",
2106
+ "engines": {
2107
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2108
+ },
2109
+ "funding": {
2110
+ "url": "https://opencollective.com/eslint"
2111
+ }
2112
+ },
2113
+ "node_modules/eslint/node_modules/ansi-styles": {
2114
+ "version": "4.3.0",
2115
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2116
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2117
+ "dev": true,
2118
+ "license": "MIT",
2119
+ "dependencies": {
2120
+ "color-convert": "^2.0.1"
2121
+ },
2122
+ "engines": {
2123
+ "node": ">=8"
2124
+ },
2125
+ "funding": {
2126
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2127
+ }
2128
+ },
2129
+ "node_modules/eslint/node_modules/brace-expansion": {
2130
+ "version": "1.1.15",
2131
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
2132
+ "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
2133
+ "dev": true,
2134
+ "license": "MIT",
2135
+ "dependencies": {
2136
+ "balanced-match": "^1.0.0",
2137
+ "concat-map": "0.0.1"
2138
+ }
2139
+ },
2140
+ "node_modules/eslint/node_modules/chalk": {
2141
+ "version": "4.1.2",
2142
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
2143
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
2144
+ "dev": true,
2145
+ "license": "MIT",
2146
+ "dependencies": {
2147
+ "ansi-styles": "^4.1.0",
2148
+ "supports-color": "^7.1.0"
2149
+ },
2150
+ "engines": {
2151
+ "node": ">=10"
2152
+ },
2153
+ "funding": {
2154
+ "url": "https://github.com/chalk/chalk?sponsor=1"
2155
+ }
2156
+ },
2157
+ "node_modules/eslint/node_modules/color-convert": {
2158
+ "version": "2.0.1",
2159
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
2160
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2161
+ "dev": true,
2162
+ "license": "MIT",
2163
+ "dependencies": {
2164
+ "color-name": "~1.1.4"
2165
+ },
2166
+ "engines": {
2167
+ "node": ">=7.0.0"
2168
+ }
2169
+ },
2170
+ "node_modules/eslint/node_modules/color-name": {
2171
+ "version": "1.1.4",
2172
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2173
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2174
+ "dev": true,
2175
+ "license": "MIT"
2176
+ },
2177
+ "node_modules/eslint/node_modules/escape-string-regexp": {
2178
+ "version": "4.0.0",
2179
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
2180
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
2181
+ "dev": true,
2182
+ "license": "MIT",
2183
+ "engines": {
2184
+ "node": ">=10"
2185
+ },
2186
+ "funding": {
2187
+ "url": "https://github.com/sponsors/sindresorhus"
2188
+ }
2189
+ },
2190
+ "node_modules/eslint/node_modules/has-flag": {
2191
+ "version": "4.0.0",
2192
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2193
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2194
+ "dev": true,
2195
+ "license": "MIT",
2196
+ "engines": {
2197
+ "node": ">=8"
2198
+ }
2199
+ },
2200
+ "node_modules/eslint/node_modules/minimatch": {
2201
+ "version": "3.1.5",
2202
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
2203
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
2204
+ "dev": true,
2205
+ "license": "ISC",
2206
+ "dependencies": {
2207
+ "brace-expansion": "^1.1.7"
2208
+ },
2209
+ "engines": {
2210
+ "node": "*"
2211
+ }
2212
+ },
2213
+ "node_modules/eslint/node_modules/supports-color": {
2214
+ "version": "7.2.0",
2215
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2216
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2217
+ "dev": true,
2218
+ "license": "MIT",
2219
+ "dependencies": {
2220
+ "has-flag": "^4.0.0"
2221
+ },
2222
+ "engines": {
2223
+ "node": ">=8"
2224
+ }
2225
+ },
2226
+ "node_modules/espree": {
2227
+ "version": "9.6.1",
2228
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
2229
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
2230
+ "dev": true,
2231
+ "license": "BSD-2-Clause",
2232
+ "dependencies": {
2233
+ "acorn": "^8.9.0",
2234
+ "acorn-jsx": "^5.3.2",
2235
+ "eslint-visitor-keys": "^3.4.1"
2236
+ },
2237
+ "engines": {
2238
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2239
+ },
2240
+ "funding": {
2241
+ "url": "https://opencollective.com/eslint"
2242
+ }
2243
+ },
2244
+ "node_modules/esquery": {
2245
+ "version": "1.7.0",
2246
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
2247
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
2248
+ "dev": true,
2249
+ "license": "BSD-3-Clause",
2250
+ "dependencies": {
2251
+ "estraverse": "^5.1.0"
2252
+ },
2253
+ "engines": {
2254
+ "node": ">=0.10"
2255
+ }
2256
+ },
2257
+ "node_modules/esrecurse": {
2258
+ "version": "4.3.0",
2259
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
2260
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
2261
+ "dev": true,
2262
+ "license": "BSD-2-Clause",
2263
+ "dependencies": {
2264
+ "estraverse": "^5.2.0"
2265
+ },
2266
+ "engines": {
2267
+ "node": ">=4.0"
2268
+ }
2269
+ },
2270
+ "node_modules/estraverse": {
2271
+ "version": "5.3.0",
2272
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
2273
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
2274
+ "dev": true,
2275
+ "license": "BSD-2-Clause",
2276
+ "engines": {
2277
+ "node": ">=4.0"
2278
+ }
2279
+ },
2280
+ "node_modules/esutils": {
2281
+ "version": "2.0.3",
2282
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2283
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2284
+ "dev": true,
2285
+ "license": "BSD-2-Clause",
2286
+ "engines": {
2287
+ "node": ">=0.10.0"
2288
+ }
2289
+ },
2290
+ "node_modules/expand-template": {
2291
+ "version": "2.0.3",
2292
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
2293
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
2294
+ "dev": true,
2295
+ "license": "(MIT OR WTFPL)",
2296
+ "optional": true,
2297
+ "engines": {
2298
+ "node": ">=6"
2299
+ }
2300
+ },
2301
+ "node_modules/fast-deep-equal": {
2302
+ "version": "3.1.3",
2303
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2304
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2305
+ "dev": true,
2306
+ "license": "MIT"
2307
+ },
2308
+ "node_modules/fast-glob": {
2309
+ "version": "3.3.3",
2310
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2311
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2312
+ "dev": true,
2313
+ "license": "MIT",
2314
+ "dependencies": {
2315
+ "@nodelib/fs.stat": "^2.0.2",
2316
+ "@nodelib/fs.walk": "^1.2.3",
2317
+ "glob-parent": "^5.1.2",
2318
+ "merge2": "^1.3.0",
2319
+ "micromatch": "^4.0.8"
2320
+ },
2321
+ "engines": {
2322
+ "node": ">=8.6.0"
2323
+ }
2324
+ },
2325
+ "node_modules/fast-glob/node_modules/glob-parent": {
2326
+ "version": "5.1.2",
2327
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2328
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2329
+ "dev": true,
2330
+ "license": "ISC",
2331
+ "dependencies": {
2332
+ "is-glob": "^4.0.1"
2333
+ },
2334
+ "engines": {
2335
+ "node": ">= 6"
2336
+ }
2337
+ },
2338
+ "node_modules/fast-json-stable-stringify": {
2339
+ "version": "2.1.0",
2340
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
2341
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
2342
+ "dev": true,
2343
+ "license": "MIT"
2344
+ },
2345
+ "node_modules/fast-levenshtein": {
2346
+ "version": "2.0.6",
2347
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
2348
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
2349
+ "dev": true,
2350
+ "license": "MIT"
2351
+ },
2352
+ "node_modules/fastq": {
2353
+ "version": "1.20.1",
2354
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
2355
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
2356
+ "dev": true,
2357
+ "license": "ISC",
2358
+ "dependencies": {
2359
+ "reusify": "^1.0.4"
2360
+ }
2361
+ },
2362
+ "node_modules/fd-slicer": {
2363
+ "version": "1.1.0",
2364
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
2365
+ "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
2366
+ "dev": true,
2367
+ "license": "MIT",
2368
+ "dependencies": {
2369
+ "pend": "~1.2.0"
2370
+ }
2371
+ },
2372
+ "node_modules/file-entry-cache": {
2373
+ "version": "6.0.1",
2374
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
2375
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
2376
+ "dev": true,
2377
+ "license": "MIT",
2378
+ "dependencies": {
2379
+ "flat-cache": "^3.0.4"
2380
+ },
2381
+ "engines": {
2382
+ "node": "^10.12.0 || >=12.0.0"
2383
+ }
2384
+ },
2385
+ "node_modules/fill-range": {
2386
+ "version": "7.1.1",
2387
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
2388
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
2389
+ "dev": true,
2390
+ "license": "MIT",
2391
+ "dependencies": {
2392
+ "to-regex-range": "^5.0.1"
2393
+ },
2394
+ "engines": {
2395
+ "node": ">=8"
2396
+ }
2397
+ },
2398
+ "node_modules/find-up": {
2399
+ "version": "5.0.0",
2400
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
2401
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
2402
+ "dev": true,
2403
+ "license": "MIT",
2404
+ "dependencies": {
2405
+ "locate-path": "^6.0.0",
2406
+ "path-exists": "^4.0.0"
2407
+ },
2408
+ "engines": {
2409
+ "node": ">=10"
2410
+ },
2411
+ "funding": {
2412
+ "url": "https://github.com/sponsors/sindresorhus"
2413
+ }
2414
+ },
2415
+ "node_modules/flat-cache": {
2416
+ "version": "3.2.0",
2417
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
2418
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
2419
+ "dev": true,
2420
+ "license": "MIT",
2421
+ "dependencies": {
2422
+ "flatted": "^3.2.9",
2423
+ "keyv": "^4.5.3",
2424
+ "rimraf": "^3.0.2"
2425
+ },
2426
+ "engines": {
2427
+ "node": "^10.12.0 || >=12.0.0"
2428
+ }
2429
+ },
2430
+ "node_modules/flatted": {
2431
+ "version": "3.4.2",
2432
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
2433
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
2434
+ "dev": true,
2435
+ "license": "ISC"
2436
+ },
2437
+ "node_modules/form-data": {
2438
+ "version": "4.0.6",
2439
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
2440
+ "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
2441
+ "dev": true,
2442
+ "license": "MIT",
2443
+ "dependencies": {
2444
+ "asynckit": "^0.4.0",
2445
+ "combined-stream": "^1.0.8",
2446
+ "es-set-tostringtag": "^2.1.0",
2447
+ "hasown": "^2.0.4",
2448
+ "mime-types": "^2.1.35"
2449
+ },
2450
+ "engines": {
2451
+ "node": ">= 6"
2452
+ }
2453
+ },
2454
+ "node_modules/fs-constants": {
2455
+ "version": "1.0.0",
2456
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
2457
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
2458
+ "dev": true,
2459
+ "license": "MIT",
2460
+ "optional": true
2461
+ },
2462
+ "node_modules/fs.realpath": {
2463
+ "version": "1.0.0",
2464
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2465
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
2466
+ "dev": true,
2467
+ "license": "ISC"
2468
+ },
2469
+ "node_modules/function-bind": {
2470
+ "version": "1.1.2",
2471
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2472
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
2473
+ "dev": true,
2474
+ "license": "MIT",
2475
+ "funding": {
2476
+ "url": "https://github.com/sponsors/ljharb"
2477
+ }
2478
+ },
2479
+ "node_modules/get-intrinsic": {
2480
+ "version": "1.3.0",
2481
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
2482
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
2483
+ "dev": true,
2484
+ "license": "MIT",
2485
+ "dependencies": {
2486
+ "call-bind-apply-helpers": "^1.0.2",
2487
+ "es-define-property": "^1.0.1",
2488
+ "es-errors": "^1.3.0",
2489
+ "es-object-atoms": "^1.1.1",
2490
+ "function-bind": "^1.1.2",
2491
+ "get-proto": "^1.0.1",
2492
+ "gopd": "^1.2.0",
2493
+ "has-symbols": "^1.1.0",
2494
+ "hasown": "^2.0.2",
2495
+ "math-intrinsics": "^1.1.0"
2496
+ },
2497
+ "engines": {
2498
+ "node": ">= 0.4"
2499
+ },
2500
+ "funding": {
2501
+ "url": "https://github.com/sponsors/ljharb"
2502
+ }
2503
+ },
2504
+ "node_modules/get-proto": {
2505
+ "version": "1.0.1",
2506
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
2507
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
2508
+ "dev": true,
2509
+ "license": "MIT",
2510
+ "dependencies": {
2511
+ "dunder-proto": "^1.0.1",
2512
+ "es-object-atoms": "^1.0.0"
2513
+ },
2514
+ "engines": {
2515
+ "node": ">= 0.4"
2516
+ }
2517
+ },
2518
+ "node_modules/github-from-package": {
2519
+ "version": "0.0.0",
2520
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
2521
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
2522
+ "dev": true,
2523
+ "license": "MIT",
2524
+ "optional": true
2525
+ },
2526
+ "node_modules/glob": {
2527
+ "version": "7.2.3",
2528
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2529
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2530
+ "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",
2531
+ "dev": true,
2532
+ "license": "ISC",
2533
+ "dependencies": {
2534
+ "fs.realpath": "^1.0.0",
2535
+ "inflight": "^1.0.4",
2536
+ "inherits": "2",
2537
+ "minimatch": "^3.1.1",
2538
+ "once": "^1.3.0",
2539
+ "path-is-absolute": "^1.0.0"
2540
+ },
2541
+ "engines": {
2542
+ "node": "*"
2543
+ },
2544
+ "funding": {
2545
+ "url": "https://github.com/sponsors/isaacs"
2546
+ }
2547
+ },
2548
+ "node_modules/glob-parent": {
2549
+ "version": "6.0.2",
2550
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2551
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2552
+ "dev": true,
2553
+ "license": "ISC",
2554
+ "dependencies": {
2555
+ "is-glob": "^4.0.3"
2556
+ },
2557
+ "engines": {
2558
+ "node": ">=10.13.0"
2559
+ }
2560
+ },
2561
+ "node_modules/glob/node_modules/brace-expansion": {
2562
+ "version": "1.1.15",
2563
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
2564
+ "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
2565
+ "dev": true,
2566
+ "license": "MIT",
2567
+ "dependencies": {
2568
+ "balanced-match": "^1.0.0",
2569
+ "concat-map": "0.0.1"
2570
+ }
2571
+ },
2572
+ "node_modules/glob/node_modules/minimatch": {
2573
+ "version": "3.1.5",
2574
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
2575
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
2576
+ "dev": true,
2577
+ "license": "ISC",
2578
+ "dependencies": {
2579
+ "brace-expansion": "^1.1.7"
2580
+ },
2581
+ "engines": {
2582
+ "node": "*"
2583
+ }
2584
+ },
2585
+ "node_modules/globals": {
2586
+ "version": "13.24.0",
2587
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
2588
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
2589
+ "dev": true,
2590
+ "license": "MIT",
2591
+ "dependencies": {
2592
+ "type-fest": "^0.20.2"
2593
+ },
2594
+ "engines": {
2595
+ "node": ">=8"
2596
+ },
2597
+ "funding": {
2598
+ "url": "https://github.com/sponsors/sindresorhus"
2599
+ }
2600
+ },
2601
+ "node_modules/globby": {
2602
+ "version": "11.1.0",
2603
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
2604
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
2605
+ "dev": true,
2606
+ "license": "MIT",
2607
+ "dependencies": {
2608
+ "array-union": "^2.1.0",
2609
+ "dir-glob": "^3.0.1",
2610
+ "fast-glob": "^3.2.9",
2611
+ "ignore": "^5.2.0",
2612
+ "merge2": "^1.4.1",
2613
+ "slash": "^3.0.0"
2614
+ },
2615
+ "engines": {
2616
+ "node": ">=10"
2617
+ },
2618
+ "funding": {
2619
+ "url": "https://github.com/sponsors/sindresorhus"
2620
+ }
2621
+ },
2622
+ "node_modules/gopd": {
2623
+ "version": "1.2.0",
2624
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
2625
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
2626
+ "dev": true,
2627
+ "license": "MIT",
2628
+ "engines": {
2629
+ "node": ">= 0.4"
2630
+ },
2631
+ "funding": {
2632
+ "url": "https://github.com/sponsors/ljharb"
2633
+ }
2634
+ },
2635
+ "node_modules/graphemer": {
2636
+ "version": "1.4.0",
2637
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
2638
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
2639
+ "dev": true,
2640
+ "license": "MIT"
2641
+ },
2642
+ "node_modules/has-flag": {
2643
+ "version": "3.0.0",
2644
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2645
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
2646
+ "dev": true,
2647
+ "license": "MIT",
2648
+ "engines": {
2649
+ "node": ">=4"
2650
+ }
2651
+ },
2652
+ "node_modules/has-symbols": {
2653
+ "version": "1.1.0",
2654
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
2655
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
2656
+ "dev": true,
2657
+ "license": "MIT",
2658
+ "engines": {
2659
+ "node": ">= 0.4"
2660
+ },
2661
+ "funding": {
2662
+ "url": "https://github.com/sponsors/ljharb"
2663
+ }
2664
+ },
2665
+ "node_modules/has-tostringtag": {
2666
+ "version": "1.0.2",
2667
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
2668
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
2669
+ "dev": true,
2670
+ "license": "MIT",
2671
+ "dependencies": {
2672
+ "has-symbols": "^1.0.3"
2673
+ },
2674
+ "engines": {
2675
+ "node": ">= 0.4"
2676
+ },
2677
+ "funding": {
2678
+ "url": "https://github.com/sponsors/ljharb"
2679
+ }
2680
+ },
2681
+ "node_modules/hasown": {
2682
+ "version": "2.0.4",
2683
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
2684
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
2685
+ "dev": true,
2686
+ "license": "MIT",
2687
+ "dependencies": {
2688
+ "function-bind": "^1.1.2"
2689
+ },
2690
+ "engines": {
2691
+ "node": ">= 0.4"
2692
+ }
2693
+ },
2694
+ "node_modules/hosted-git-info": {
2695
+ "version": "4.1.0",
2696
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
2697
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
2698
+ "dev": true,
2699
+ "license": "ISC",
2700
+ "dependencies": {
2701
+ "lru-cache": "^6.0.0"
2702
+ },
2703
+ "engines": {
2704
+ "node": ">=10"
2705
+ }
2706
+ },
2707
+ "node_modules/htmlparser2": {
2708
+ "version": "10.1.0",
2709
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
2710
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
2711
+ "dev": true,
2712
+ "funding": [
2713
+ "https://github.com/fb55/htmlparser2?sponsor=1",
2714
+ {
2715
+ "type": "github",
2716
+ "url": "https://github.com/sponsors/fb55"
2717
+ }
2718
+ ],
2719
+ "license": "MIT",
2720
+ "dependencies": {
2721
+ "domelementtype": "^2.3.0",
2722
+ "domhandler": "^5.0.3",
2723
+ "domutils": "^3.2.2",
2724
+ "entities": "^7.0.1"
2725
+ }
2726
+ },
2727
+ "node_modules/htmlparser2/node_modules/entities": {
2728
+ "version": "7.0.1",
2729
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
2730
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
2731
+ "dev": true,
2732
+ "license": "BSD-2-Clause",
2733
+ "engines": {
2734
+ "node": ">=0.12"
2735
+ },
2736
+ "funding": {
2737
+ "url": "https://github.com/fb55/entities?sponsor=1"
2738
+ }
2739
+ },
2740
+ "node_modules/http-proxy-agent": {
2741
+ "version": "7.0.2",
2742
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
2743
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
2744
+ "dev": true,
2745
+ "license": "MIT",
2746
+ "dependencies": {
2747
+ "agent-base": "^7.1.0",
2748
+ "debug": "^4.3.4"
2749
+ },
2750
+ "engines": {
2751
+ "node": ">= 14"
2752
+ }
2753
+ },
2754
+ "node_modules/https-proxy-agent": {
2755
+ "version": "7.0.6",
2756
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
2757
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
2758
+ "dev": true,
2759
+ "license": "MIT",
2760
+ "dependencies": {
2761
+ "agent-base": "^7.1.2",
2762
+ "debug": "4"
2763
+ },
2764
+ "engines": {
2765
+ "node": ">= 14"
2766
+ }
2767
+ },
2768
+ "node_modules/iconv-lite": {
2769
+ "version": "0.6.3",
2770
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
2771
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
2772
+ "dev": true,
2773
+ "license": "MIT",
2774
+ "dependencies": {
2775
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
2776
+ },
2777
+ "engines": {
2778
+ "node": ">=0.10.0"
2779
+ }
2780
+ },
2781
+ "node_modules/ieee754": {
2782
+ "version": "1.2.1",
2783
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
2784
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
2785
+ "dev": true,
2786
+ "funding": [
2787
+ {
2788
+ "type": "github",
2789
+ "url": "https://github.com/sponsors/feross"
2790
+ },
2791
+ {
2792
+ "type": "patreon",
2793
+ "url": "https://www.patreon.com/feross"
2794
+ },
2795
+ {
2796
+ "type": "consulting",
2797
+ "url": "https://feross.org/support"
2798
+ }
2799
+ ],
2800
+ "license": "BSD-3-Clause",
2801
+ "optional": true
2802
+ },
2803
+ "node_modules/ignore": {
2804
+ "version": "5.3.2",
2805
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
2806
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
2807
+ "dev": true,
2808
+ "license": "MIT",
2809
+ "engines": {
2810
+ "node": ">= 4"
2811
+ }
2812
+ },
2813
+ "node_modules/import-fresh": {
2814
+ "version": "3.3.1",
2815
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
2816
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
2817
+ "dev": true,
2818
+ "license": "MIT",
2819
+ "dependencies": {
2820
+ "parent-module": "^1.0.0",
2821
+ "resolve-from": "^4.0.0"
2822
+ },
2823
+ "engines": {
2824
+ "node": ">=6"
2825
+ },
2826
+ "funding": {
2827
+ "url": "https://github.com/sponsors/sindresorhus"
2828
+ }
2829
+ },
2830
+ "node_modules/imurmurhash": {
2831
+ "version": "0.1.4",
2832
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2833
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
2834
+ "dev": true,
2835
+ "license": "MIT",
2836
+ "engines": {
2837
+ "node": ">=0.8.19"
2838
+ }
2839
+ },
2840
+ "node_modules/inflight": {
2841
+ "version": "1.0.6",
2842
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2843
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
2844
+ "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.",
2845
+ "dev": true,
2846
+ "license": "ISC",
2847
+ "dependencies": {
2848
+ "once": "^1.3.0",
2849
+ "wrappy": "1"
2850
+ }
2851
+ },
2852
+ "node_modules/inherits": {
2853
+ "version": "2.0.4",
2854
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2855
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2856
+ "dev": true,
2857
+ "license": "ISC"
2858
+ },
2859
+ "node_modules/ini": {
2860
+ "version": "1.3.8",
2861
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
2862
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
2863
+ "dev": true,
2864
+ "license": "ISC",
2865
+ "optional": true
2866
+ },
2867
+ "node_modules/is-docker": {
2868
+ "version": "3.0.0",
2869
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
2870
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
2871
+ "dev": true,
2872
+ "license": "MIT",
2873
+ "bin": {
2874
+ "is-docker": "cli.js"
2875
+ },
2876
+ "engines": {
2877
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2878
+ },
2879
+ "funding": {
2880
+ "url": "https://github.com/sponsors/sindresorhus"
2881
+ }
2882
+ },
2883
+ "node_modules/is-extglob": {
2884
+ "version": "2.1.1",
2885
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2886
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2887
+ "dev": true,
2888
+ "license": "MIT",
2889
+ "engines": {
2890
+ "node": ">=0.10.0"
2891
+ }
2892
+ },
2893
+ "node_modules/is-glob": {
2894
+ "version": "4.0.3",
2895
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2896
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2897
+ "dev": true,
2898
+ "license": "MIT",
2899
+ "dependencies": {
2900
+ "is-extglob": "^2.1.1"
2901
+ },
2902
+ "engines": {
2903
+ "node": ">=0.10.0"
2904
+ }
2905
+ },
2906
+ "node_modules/is-inside-container": {
2907
+ "version": "1.0.0",
2908
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
2909
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
2910
+ "dev": true,
2911
+ "license": "MIT",
2912
+ "dependencies": {
2913
+ "is-docker": "^3.0.0"
2914
+ },
2915
+ "bin": {
2916
+ "is-inside-container": "cli.js"
2917
+ },
2918
+ "engines": {
2919
+ "node": ">=14.16"
2920
+ },
2921
+ "funding": {
2922
+ "url": "https://github.com/sponsors/sindresorhus"
2923
+ }
2924
+ },
2925
+ "node_modules/is-number": {
2926
+ "version": "7.0.0",
2927
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2928
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2929
+ "dev": true,
2930
+ "license": "MIT",
2931
+ "engines": {
2932
+ "node": ">=0.12.0"
2933
+ }
2934
+ },
2935
+ "node_modules/is-path-inside": {
2936
+ "version": "3.0.3",
2937
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
2938
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
2939
+ "dev": true,
2940
+ "license": "MIT",
2941
+ "engines": {
2942
+ "node": ">=8"
2943
+ }
2944
+ },
2945
+ "node_modules/is-wsl": {
2946
+ "version": "3.1.1",
2947
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
2948
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
2949
+ "dev": true,
2950
+ "license": "MIT",
2951
+ "dependencies": {
2952
+ "is-inside-container": "^1.0.0"
2953
+ },
2954
+ "engines": {
2955
+ "node": ">=16"
2956
+ },
2957
+ "funding": {
2958
+ "url": "https://github.com/sponsors/sindresorhus"
2959
+ }
2960
+ },
2961
+ "node_modules/isexe": {
2962
+ "version": "2.0.0",
2963
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2964
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2965
+ "dev": true,
2966
+ "license": "ISC"
2967
+ },
2968
+ "node_modules/js-yaml": {
2969
+ "version": "4.2.0",
2970
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
2971
+ "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
2972
+ "dev": true,
2973
+ "funding": [
2974
+ {
2975
+ "type": "github",
2976
+ "url": "https://github.com/sponsors/puzrin"
2977
+ },
2978
+ {
2979
+ "type": "github",
2980
+ "url": "https://github.com/sponsors/nodeca"
2981
+ }
2982
+ ],
2983
+ "license": "MIT",
2984
+ "dependencies": {
2985
+ "argparse": "^2.0.1"
2986
+ },
2987
+ "bin": {
2988
+ "js-yaml": "bin/js-yaml.js"
2989
+ }
2990
+ },
2991
+ "node_modules/json-buffer": {
2992
+ "version": "3.0.1",
2993
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
2994
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
2995
+ "dev": true,
2996
+ "license": "MIT"
2997
+ },
2998
+ "node_modules/json-schema-traverse": {
2999
+ "version": "0.4.1",
3000
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
3001
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
3002
+ "dev": true,
3003
+ "license": "MIT"
3004
+ },
3005
+ "node_modules/json-stable-stringify-without-jsonify": {
3006
+ "version": "1.0.1",
3007
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
3008
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
3009
+ "dev": true,
3010
+ "license": "MIT"
3011
+ },
3012
+ "node_modules/jsonc-parser": {
3013
+ "version": "3.3.1",
3014
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
3015
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
3016
+ "dev": true,
3017
+ "license": "MIT"
3018
+ },
3019
+ "node_modules/jsonwebtoken": {
3020
+ "version": "9.0.3",
3021
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
3022
+ "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
3023
+ "dev": true,
3024
+ "license": "MIT",
3025
+ "dependencies": {
3026
+ "jws": "^4.0.1",
3027
+ "lodash.includes": "^4.3.0",
3028
+ "lodash.isboolean": "^3.0.3",
3029
+ "lodash.isinteger": "^4.0.4",
3030
+ "lodash.isnumber": "^3.0.3",
3031
+ "lodash.isplainobject": "^4.0.6",
3032
+ "lodash.isstring": "^4.0.1",
3033
+ "lodash.once": "^4.0.0",
3034
+ "ms": "^2.1.1",
3035
+ "semver": "^7.5.4"
3036
+ },
3037
+ "engines": {
3038
+ "node": ">=12",
3039
+ "npm": ">=6"
3040
+ }
3041
+ },
3042
+ "node_modules/jwa": {
3043
+ "version": "2.0.1",
3044
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
3045
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
3046
+ "dev": true,
3047
+ "license": "MIT",
3048
+ "dependencies": {
3049
+ "buffer-equal-constant-time": "^1.0.1",
3050
+ "ecdsa-sig-formatter": "1.0.11",
3051
+ "safe-buffer": "^5.0.1"
3052
+ }
3053
+ },
3054
+ "node_modules/jws": {
3055
+ "version": "4.0.1",
3056
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
3057
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
3058
+ "dev": true,
3059
+ "license": "MIT",
3060
+ "dependencies": {
3061
+ "jwa": "^2.0.1",
3062
+ "safe-buffer": "^5.0.1"
3063
+ }
3064
+ },
3065
+ "node_modules/keytar": {
3066
+ "version": "7.9.0",
3067
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
3068
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
3069
+ "dev": true,
3070
+ "hasInstallScript": true,
3071
+ "license": "MIT",
3072
+ "optional": true,
3073
+ "dependencies": {
3074
+ "node-addon-api": "^4.3.0",
3075
+ "prebuild-install": "^7.0.1"
3076
+ }
3077
+ },
3078
+ "node_modules/keyv": {
3079
+ "version": "4.5.4",
3080
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
3081
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
3082
+ "dev": true,
3083
+ "license": "MIT",
3084
+ "dependencies": {
3085
+ "json-buffer": "3.0.1"
3086
+ }
3087
+ },
3088
+ "node_modules/leven": {
3089
+ "version": "3.1.0",
3090
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
3091
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
3092
+ "dev": true,
3093
+ "license": "MIT",
3094
+ "engines": {
3095
+ "node": ">=6"
3096
+ }
3097
+ },
3098
+ "node_modules/levn": {
3099
+ "version": "0.4.1",
3100
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
3101
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
3102
+ "dev": true,
3103
+ "license": "MIT",
3104
+ "dependencies": {
3105
+ "prelude-ls": "^1.2.1",
3106
+ "type-check": "~0.4.0"
3107
+ },
3108
+ "engines": {
3109
+ "node": ">= 0.8.0"
3110
+ }
3111
+ },
3112
+ "node_modules/linkify-it": {
3113
+ "version": "3.0.3",
3114
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
3115
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
3116
+ "dev": true,
3117
+ "license": "MIT",
3118
+ "dependencies": {
3119
+ "uc.micro": "^1.0.1"
3120
+ }
3121
+ },
3122
+ "node_modules/locate-path": {
3123
+ "version": "6.0.0",
3124
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
3125
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
3126
+ "dev": true,
3127
+ "license": "MIT",
3128
+ "dependencies": {
3129
+ "p-locate": "^5.0.0"
3130
+ },
3131
+ "engines": {
3132
+ "node": ">=10"
3133
+ },
3134
+ "funding": {
3135
+ "url": "https://github.com/sponsors/sindresorhus"
3136
+ }
3137
+ },
3138
+ "node_modules/lodash.includes": {
3139
+ "version": "4.3.0",
3140
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
3141
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
3142
+ "dev": true,
3143
+ "license": "MIT"
3144
+ },
3145
+ "node_modules/lodash.isboolean": {
3146
+ "version": "3.0.3",
3147
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
3148
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
3149
+ "dev": true,
3150
+ "license": "MIT"
3151
+ },
3152
+ "node_modules/lodash.isinteger": {
3153
+ "version": "4.0.4",
3154
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
3155
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
3156
+ "dev": true,
3157
+ "license": "MIT"
3158
+ },
3159
+ "node_modules/lodash.isnumber": {
3160
+ "version": "3.0.3",
3161
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
3162
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
3163
+ "dev": true,
3164
+ "license": "MIT"
3165
+ },
3166
+ "node_modules/lodash.isplainobject": {
3167
+ "version": "4.0.6",
3168
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
3169
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
3170
+ "dev": true,
3171
+ "license": "MIT"
3172
+ },
3173
+ "node_modules/lodash.isstring": {
3174
+ "version": "4.0.1",
3175
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
3176
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
3177
+ "dev": true,
3178
+ "license": "MIT"
3179
+ },
3180
+ "node_modules/lodash.merge": {
3181
+ "version": "4.6.2",
3182
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
3183
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
3184
+ "dev": true,
3185
+ "license": "MIT"
3186
+ },
3187
+ "node_modules/lodash.once": {
3188
+ "version": "4.1.1",
3189
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
3190
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
3191
+ "dev": true,
3192
+ "license": "MIT"
3193
+ },
3194
+ "node_modules/lru-cache": {
3195
+ "version": "6.0.0",
3196
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
3197
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
3198
+ "dev": true,
3199
+ "license": "ISC",
3200
+ "dependencies": {
3201
+ "yallist": "^4.0.0"
3202
+ },
3203
+ "engines": {
3204
+ "node": ">=10"
3205
+ }
3206
+ },
3207
+ "node_modules/markdown-it": {
3208
+ "version": "12.3.2",
3209
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
3210
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
3211
+ "dev": true,
3212
+ "license": "MIT",
3213
+ "dependencies": {
3214
+ "argparse": "^2.0.1",
3215
+ "entities": "~2.1.0",
3216
+ "linkify-it": "^3.0.1",
3217
+ "mdurl": "^1.0.1",
3218
+ "uc.micro": "^1.0.5"
3219
+ },
3220
+ "bin": {
3221
+ "markdown-it": "bin/markdown-it.js"
3222
+ }
3223
+ },
3224
+ "node_modules/markdown-it/node_modules/entities": {
3225
+ "version": "2.1.0",
3226
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
3227
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
3228
+ "dev": true,
3229
+ "license": "BSD-2-Clause",
3230
+ "funding": {
3231
+ "url": "https://github.com/fb55/entities?sponsor=1"
3232
+ }
3233
+ },
3234
+ "node_modules/math-intrinsics": {
3235
+ "version": "1.1.0",
3236
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
3237
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
3238
+ "dev": true,
3239
+ "license": "MIT",
3240
+ "engines": {
3241
+ "node": ">= 0.4"
3242
+ }
3243
+ },
3244
+ "node_modules/mdurl": {
3245
+ "version": "1.0.1",
3246
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
3247
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==",
3248
+ "dev": true,
3249
+ "license": "MIT"
3250
+ },
3251
+ "node_modules/merge2": {
3252
+ "version": "1.4.1",
3253
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
3254
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
3255
+ "dev": true,
3256
+ "license": "MIT",
3257
+ "engines": {
3258
+ "node": ">= 8"
3259
+ }
3260
+ },
3261
+ "node_modules/micromatch": {
3262
+ "version": "4.0.8",
3263
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
3264
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
3265
+ "dev": true,
3266
+ "license": "MIT",
3267
+ "dependencies": {
3268
+ "braces": "^3.0.3",
3269
+ "picomatch": "^2.3.1"
3270
+ },
3271
+ "engines": {
3272
+ "node": ">=8.6"
3273
+ }
3274
+ },
3275
+ "node_modules/mime": {
3276
+ "version": "1.6.0",
3277
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
3278
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
3279
+ "dev": true,
3280
+ "license": "MIT",
3281
+ "bin": {
3282
+ "mime": "cli.js"
3283
+ },
3284
+ "engines": {
3285
+ "node": ">=4"
3286
+ }
3287
+ },
3288
+ "node_modules/mime-db": {
3289
+ "version": "1.52.0",
3290
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
3291
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
3292
+ "dev": true,
3293
+ "license": "MIT",
3294
+ "engines": {
3295
+ "node": ">= 0.6"
3296
+ }
3297
+ },
3298
+ "node_modules/mime-types": {
3299
+ "version": "2.1.35",
3300
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
3301
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
3302
+ "dev": true,
3303
+ "license": "MIT",
3304
+ "dependencies": {
3305
+ "mime-db": "1.52.0"
3306
+ },
3307
+ "engines": {
3308
+ "node": ">= 0.6"
3309
+ }
3310
+ },
3311
+ "node_modules/mimic-response": {
3312
+ "version": "3.1.0",
3313
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
3314
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
3315
+ "dev": true,
3316
+ "license": "MIT",
3317
+ "optional": true,
3318
+ "engines": {
3319
+ "node": ">=10"
3320
+ },
3321
+ "funding": {
3322
+ "url": "https://github.com/sponsors/sindresorhus"
3323
+ }
3324
+ },
3325
+ "node_modules/minimatch": {
3326
+ "version": "9.0.9",
3327
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
3328
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
3329
+ "dev": true,
3330
+ "license": "ISC",
3331
+ "dependencies": {
3332
+ "brace-expansion": "^2.0.2"
3333
+ },
3334
+ "engines": {
3335
+ "node": ">=16 || 14 >=14.17"
3336
+ },
3337
+ "funding": {
3338
+ "url": "https://github.com/sponsors/isaacs"
3339
+ }
3340
+ },
3341
+ "node_modules/minimist": {
3342
+ "version": "1.2.8",
3343
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
3344
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
3345
+ "dev": true,
3346
+ "license": "MIT",
3347
+ "optional": true,
3348
+ "funding": {
3349
+ "url": "https://github.com/sponsors/ljharb"
3350
+ }
3351
+ },
3352
+ "node_modules/mkdirp-classic": {
3353
+ "version": "0.5.3",
3354
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
3355
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
3356
+ "dev": true,
3357
+ "license": "MIT",
3358
+ "optional": true
3359
+ },
3360
+ "node_modules/ms": {
3361
+ "version": "2.1.3",
3362
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3363
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
3364
+ "dev": true,
3365
+ "license": "MIT"
3366
+ },
3367
+ "node_modules/mute-stream": {
3368
+ "version": "0.0.8",
3369
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
3370
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
3371
+ "dev": true,
3372
+ "license": "ISC"
3373
+ },
3374
+ "node_modules/napi-build-utils": {
3375
+ "version": "2.0.0",
3376
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
3377
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
3378
+ "dev": true,
3379
+ "license": "MIT",
3380
+ "optional": true
3381
+ },
3382
+ "node_modules/natural-compare": {
3383
+ "version": "1.4.0",
3384
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
3385
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
3386
+ "dev": true,
3387
+ "license": "MIT"
3388
+ },
3389
+ "node_modules/node-abi": {
3390
+ "version": "3.92.0",
3391
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz",
3392
+ "integrity": "sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==",
3393
+ "dev": true,
3394
+ "license": "MIT",
3395
+ "optional": true,
3396
+ "dependencies": {
3397
+ "semver": "^7.3.5"
3398
+ },
3399
+ "engines": {
3400
+ "node": ">=10"
3401
+ }
3402
+ },
3403
+ "node_modules/node-addon-api": {
3404
+ "version": "4.3.0",
3405
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
3406
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
3407
+ "dev": true,
3408
+ "license": "MIT",
3409
+ "optional": true
3410
+ },
3411
+ "node_modules/nth-check": {
3412
+ "version": "2.1.1",
3413
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
3414
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
3415
+ "dev": true,
3416
+ "license": "BSD-2-Clause",
3417
+ "dependencies": {
3418
+ "boolbase": "^1.0.0"
3419
+ },
3420
+ "funding": {
3421
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
3422
+ }
3423
+ },
3424
+ "node_modules/object-inspect": {
3425
+ "version": "1.13.4",
3426
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
3427
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
3428
+ "dev": true,
3429
+ "license": "MIT",
3430
+ "engines": {
3431
+ "node": ">= 0.4"
3432
+ },
3433
+ "funding": {
3434
+ "url": "https://github.com/sponsors/ljharb"
3435
+ }
3436
+ },
3437
+ "node_modules/once": {
3438
+ "version": "1.4.0",
3439
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
3440
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
3441
+ "dev": true,
3442
+ "license": "ISC",
3443
+ "dependencies": {
3444
+ "wrappy": "1"
3445
+ }
3446
+ },
3447
+ "node_modules/open": {
3448
+ "version": "10.2.0",
3449
+ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
3450
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
3451
+ "dev": true,
3452
+ "license": "MIT",
3453
+ "dependencies": {
3454
+ "default-browser": "^5.2.1",
3455
+ "define-lazy-prop": "^3.0.0",
3456
+ "is-inside-container": "^1.0.0",
3457
+ "wsl-utils": "^0.1.0"
3458
+ },
3459
+ "engines": {
3460
+ "node": ">=18"
3461
+ },
3462
+ "funding": {
3463
+ "url": "https://github.com/sponsors/sindresorhus"
3464
+ }
3465
+ },
3466
+ "node_modules/optionator": {
3467
+ "version": "0.9.4",
3468
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
3469
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
3470
+ "dev": true,
3471
+ "license": "MIT",
3472
+ "dependencies": {
3473
+ "deep-is": "^0.1.3",
3474
+ "fast-levenshtein": "^2.0.6",
3475
+ "levn": "^0.4.1",
3476
+ "prelude-ls": "^1.2.1",
3477
+ "type-check": "^0.4.0",
3478
+ "word-wrap": "^1.2.5"
3479
+ },
3480
+ "engines": {
3481
+ "node": ">= 0.8.0"
3482
+ }
3483
+ },
3484
+ "node_modules/p-limit": {
3485
+ "version": "3.1.0",
3486
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
3487
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
3488
+ "dev": true,
3489
+ "license": "MIT",
3490
+ "dependencies": {
3491
+ "yocto-queue": "^0.1.0"
3492
+ },
3493
+ "engines": {
3494
+ "node": ">=10"
3495
+ },
3496
+ "funding": {
3497
+ "url": "https://github.com/sponsors/sindresorhus"
3498
+ }
3499
+ },
3500
+ "node_modules/p-locate": {
3501
+ "version": "5.0.0",
3502
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
3503
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
3504
+ "dev": true,
3505
+ "license": "MIT",
3506
+ "dependencies": {
3507
+ "p-limit": "^3.0.2"
3508
+ },
3509
+ "engines": {
3510
+ "node": ">=10"
3511
+ },
3512
+ "funding": {
3513
+ "url": "https://github.com/sponsors/sindresorhus"
3514
+ }
3515
+ },
3516
+ "node_modules/parent-module": {
3517
+ "version": "1.0.1",
3518
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
3519
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
3520
+ "dev": true,
3521
+ "license": "MIT",
3522
+ "dependencies": {
3523
+ "callsites": "^3.0.0"
3524
+ },
3525
+ "engines": {
3526
+ "node": ">=6"
3527
+ }
3528
+ },
3529
+ "node_modules/parse-semver": {
3530
+ "version": "1.1.1",
3531
+ "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
3532
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
3533
+ "dev": true,
3534
+ "license": "MIT",
3535
+ "dependencies": {
3536
+ "semver": "^5.1.0"
3537
+ }
3538
+ },
3539
+ "node_modules/parse-semver/node_modules/semver": {
3540
+ "version": "5.7.2",
3541
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
3542
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
3543
+ "dev": true,
3544
+ "license": "ISC",
3545
+ "bin": {
3546
+ "semver": "bin/semver"
3547
+ }
3548
+ },
3549
+ "node_modules/parse5": {
3550
+ "version": "7.3.0",
3551
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
3552
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
3553
+ "dev": true,
3554
+ "license": "MIT",
3555
+ "dependencies": {
3556
+ "entities": "^6.0.0"
3557
+ },
3558
+ "funding": {
3559
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
3560
+ }
3561
+ },
3562
+ "node_modules/parse5-htmlparser2-tree-adapter": {
3563
+ "version": "7.1.0",
3564
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
3565
+ "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
3566
+ "dev": true,
3567
+ "license": "MIT",
3568
+ "dependencies": {
3569
+ "domhandler": "^5.0.3",
3570
+ "parse5": "^7.0.0"
3571
+ },
3572
+ "funding": {
3573
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
3574
+ }
3575
+ },
3576
+ "node_modules/parse5-parser-stream": {
3577
+ "version": "7.1.2",
3578
+ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
3579
+ "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
3580
+ "dev": true,
3581
+ "license": "MIT",
3582
+ "dependencies": {
3583
+ "parse5": "^7.0.0"
3584
+ },
3585
+ "funding": {
3586
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
3587
+ }
3588
+ },
3589
+ "node_modules/parse5/node_modules/entities": {
3590
+ "version": "6.0.1",
3591
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
3592
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
3593
+ "dev": true,
3594
+ "license": "BSD-2-Clause",
3595
+ "engines": {
3596
+ "node": ">=0.12"
3597
+ },
3598
+ "funding": {
3599
+ "url": "https://github.com/fb55/entities?sponsor=1"
3600
+ }
3601
+ },
3602
+ "node_modules/path-exists": {
3603
+ "version": "4.0.0",
3604
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
3605
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
3606
+ "dev": true,
3607
+ "license": "MIT",
3608
+ "engines": {
3609
+ "node": ">=8"
3610
+ }
3611
+ },
3612
+ "node_modules/path-is-absolute": {
3613
+ "version": "1.0.1",
3614
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3615
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
3616
+ "dev": true,
3617
+ "license": "MIT",
3618
+ "engines": {
3619
+ "node": ">=0.10.0"
3620
+ }
3621
+ },
3622
+ "node_modules/path-key": {
3623
+ "version": "3.1.1",
3624
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
3625
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
3626
+ "dev": true,
3627
+ "license": "MIT",
3628
+ "engines": {
3629
+ "node": ">=8"
3630
+ }
3631
+ },
3632
+ "node_modules/path-type": {
3633
+ "version": "4.0.0",
3634
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
3635
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
3636
+ "dev": true,
3637
+ "license": "MIT",
3638
+ "engines": {
3639
+ "node": ">=8"
3640
+ }
3641
+ },
3642
+ "node_modules/pend": {
3643
+ "version": "1.2.0",
3644
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
3645
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
3646
+ "dev": true,
3647
+ "license": "MIT"
3648
+ },
3649
+ "node_modules/picomatch": {
3650
+ "version": "2.3.2",
3651
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
3652
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
3653
+ "dev": true,
3654
+ "license": "MIT",
3655
+ "engines": {
3656
+ "node": ">=8.6"
3657
+ },
3658
+ "funding": {
3659
+ "url": "https://github.com/sponsors/jonschlinkert"
3660
+ }
3661
+ },
3662
+ "node_modules/prebuild-install": {
3663
+ "version": "7.1.3",
3664
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
3665
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
3666
+ "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.",
3667
+ "dev": true,
3668
+ "license": "MIT",
3669
+ "optional": true,
3670
+ "dependencies": {
3671
+ "detect-libc": "^2.0.0",
3672
+ "expand-template": "^2.0.3",
3673
+ "github-from-package": "0.0.0",
3674
+ "minimist": "^1.2.3",
3675
+ "mkdirp-classic": "^0.5.3",
3676
+ "napi-build-utils": "^2.0.0",
3677
+ "node-abi": "^3.3.0",
3678
+ "pump": "^3.0.0",
3679
+ "rc": "^1.2.7",
3680
+ "simple-get": "^4.0.0",
3681
+ "tar-fs": "^2.0.0",
3682
+ "tunnel-agent": "^0.6.0"
3683
+ },
3684
+ "bin": {
3685
+ "prebuild-install": "bin.js"
3686
+ },
3687
+ "engines": {
3688
+ "node": ">=10"
3689
+ }
3690
+ },
3691
+ "node_modules/prelude-ls": {
3692
+ "version": "1.2.1",
3693
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
3694
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
3695
+ "dev": true,
3696
+ "license": "MIT",
3697
+ "engines": {
3698
+ "node": ">= 0.8.0"
3699
+ }
3700
+ },
3701
+ "node_modules/pump": {
3702
+ "version": "3.0.4",
3703
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
3704
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
3705
+ "dev": true,
3706
+ "license": "MIT",
3707
+ "optional": true,
3708
+ "dependencies": {
3709
+ "end-of-stream": "^1.1.0",
3710
+ "once": "^1.3.1"
3711
+ }
3712
+ },
3713
+ "node_modules/punycode": {
3714
+ "version": "2.3.1",
3715
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
3716
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
3717
+ "dev": true,
3718
+ "license": "MIT",
3719
+ "engines": {
3720
+ "node": ">=6"
3721
+ }
3722
+ },
3723
+ "node_modules/qs": {
3724
+ "version": "6.15.3",
3725
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
3726
+ "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
3727
+ "dev": true,
3728
+ "license": "BSD-3-Clause",
3729
+ "dependencies": {
3730
+ "es-define-property": "^1.0.1",
3731
+ "side-channel": "^1.1.1"
3732
+ },
3733
+ "engines": {
3734
+ "node": ">=0.6"
3735
+ },
3736
+ "funding": {
3737
+ "url": "https://github.com/sponsors/ljharb"
3738
+ }
3739
+ },
3740
+ "node_modules/queue-microtask": {
3741
+ "version": "1.2.3",
3742
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
3743
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
3744
+ "dev": true,
3745
+ "funding": [
3746
+ {
3747
+ "type": "github",
3748
+ "url": "https://github.com/sponsors/feross"
3749
+ },
3750
+ {
3751
+ "type": "patreon",
3752
+ "url": "https://www.patreon.com/feross"
3753
+ },
3754
+ {
3755
+ "type": "consulting",
3756
+ "url": "https://feross.org/support"
3757
+ }
3758
+ ],
3759
+ "license": "MIT"
3760
+ },
3761
+ "node_modules/rc": {
3762
+ "version": "1.2.8",
3763
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
3764
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
3765
+ "dev": true,
3766
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
3767
+ "optional": true,
3768
+ "dependencies": {
3769
+ "deep-extend": "^0.6.0",
3770
+ "ini": "~1.3.0",
3771
+ "minimist": "^1.2.0",
3772
+ "strip-json-comments": "~2.0.1"
3773
+ },
3774
+ "bin": {
3775
+ "rc": "cli.js"
3776
+ }
3777
+ },
3778
+ "node_modules/rc/node_modules/strip-json-comments": {
3779
+ "version": "2.0.1",
3780
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
3781
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
3782
+ "dev": true,
3783
+ "license": "MIT",
3784
+ "optional": true,
3785
+ "engines": {
3786
+ "node": ">=0.10.0"
3787
+ }
3788
+ },
3789
+ "node_modules/read": {
3790
+ "version": "1.0.7",
3791
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
3792
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
3793
+ "dev": true,
3794
+ "license": "ISC",
3795
+ "dependencies": {
3796
+ "mute-stream": "~0.0.4"
3797
+ },
3798
+ "engines": {
3799
+ "node": ">=0.8"
3800
+ }
3801
+ },
3802
+ "node_modules/readable-stream": {
3803
+ "version": "3.6.2",
3804
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
3805
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
3806
+ "dev": true,
3807
+ "license": "MIT",
3808
+ "optional": true,
3809
+ "dependencies": {
3810
+ "inherits": "^2.0.3",
3811
+ "string_decoder": "^1.1.1",
3812
+ "util-deprecate": "^1.0.1"
3813
+ },
3814
+ "engines": {
3815
+ "node": ">= 6"
3816
+ }
3817
+ },
3818
+ "node_modules/resolve-from": {
3819
+ "version": "4.0.0",
3820
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
3821
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
3822
+ "dev": true,
3823
+ "license": "MIT",
3824
+ "engines": {
3825
+ "node": ">=4"
3826
+ }
3827
+ },
3828
+ "node_modules/reusify": {
3829
+ "version": "1.1.0",
3830
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
3831
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
3832
+ "dev": true,
3833
+ "license": "MIT",
3834
+ "engines": {
3835
+ "iojs": ">=1.0.0",
3836
+ "node": ">=0.10.0"
3837
+ }
3838
+ },
3839
+ "node_modules/rimraf": {
3840
+ "version": "3.0.2",
3841
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
3842
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
3843
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
3844
+ "dev": true,
3845
+ "license": "ISC",
3846
+ "dependencies": {
3847
+ "glob": "^7.1.3"
3848
+ },
3849
+ "bin": {
3850
+ "rimraf": "bin.js"
3851
+ },
3852
+ "funding": {
3853
+ "url": "https://github.com/sponsors/isaacs"
3854
+ }
3855
+ },
3856
+ "node_modules/run-applescript": {
3857
+ "version": "7.1.0",
3858
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
3859
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
3860
+ "dev": true,
3861
+ "license": "MIT",
3862
+ "engines": {
3863
+ "node": ">=18"
3864
+ },
3865
+ "funding": {
3866
+ "url": "https://github.com/sponsors/sindresorhus"
3867
+ }
3868
+ },
3869
+ "node_modules/run-parallel": {
3870
+ "version": "1.2.0",
3871
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
3872
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3873
+ "dev": true,
3874
+ "funding": [
3875
+ {
3876
+ "type": "github",
3877
+ "url": "https://github.com/sponsors/feross"
3878
+ },
3879
+ {
3880
+ "type": "patreon",
3881
+ "url": "https://www.patreon.com/feross"
3882
+ },
3883
+ {
3884
+ "type": "consulting",
3885
+ "url": "https://feross.org/support"
3886
+ }
3887
+ ],
3888
+ "license": "MIT",
3889
+ "dependencies": {
3890
+ "queue-microtask": "^1.2.2"
3891
+ }
3892
+ },
3893
+ "node_modules/safe-buffer": {
3894
+ "version": "5.2.1",
3895
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
3896
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
3897
+ "dev": true,
3898
+ "funding": [
3899
+ {
3900
+ "type": "github",
3901
+ "url": "https://github.com/sponsors/feross"
3902
+ },
3903
+ {
3904
+ "type": "patreon",
3905
+ "url": "https://www.patreon.com/feross"
3906
+ },
3907
+ {
3908
+ "type": "consulting",
3909
+ "url": "https://feross.org/support"
3910
+ }
3911
+ ],
3912
+ "license": "MIT"
3913
+ },
3914
+ "node_modules/safer-buffer": {
3915
+ "version": "2.1.2",
3916
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3917
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
3918
+ "dev": true,
3919
+ "license": "MIT"
3920
+ },
3921
+ "node_modules/sax": {
3922
+ "version": "1.6.0",
3923
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
3924
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
3925
+ "dev": true,
3926
+ "license": "BlueOak-1.0.0",
3927
+ "engines": {
3928
+ "node": ">=11.0.0"
3929
+ }
3930
+ },
3931
+ "node_modules/semver": {
3932
+ "version": "7.8.5",
3933
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
3934
+ "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
3935
+ "dev": true,
3936
+ "license": "ISC",
3937
+ "bin": {
3938
+ "semver": "bin/semver.js"
3939
+ },
3940
+ "engines": {
3941
+ "node": ">=10"
3942
+ }
3943
+ },
3944
+ "node_modules/shebang-command": {
3945
+ "version": "2.0.0",
3946
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
3947
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
3948
+ "dev": true,
3949
+ "license": "MIT",
3950
+ "dependencies": {
3951
+ "shebang-regex": "^3.0.0"
3952
+ },
3953
+ "engines": {
3954
+ "node": ">=8"
3955
+ }
3956
+ },
3957
+ "node_modules/shebang-regex": {
3958
+ "version": "3.0.0",
3959
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
3960
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
3961
+ "dev": true,
3962
+ "license": "MIT",
3963
+ "engines": {
3964
+ "node": ">=8"
3965
+ }
3966
+ },
3967
+ "node_modules/side-channel": {
3968
+ "version": "1.1.1",
3969
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
3970
+ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
3971
+ "dev": true,
3972
+ "license": "MIT",
3973
+ "dependencies": {
3974
+ "es-errors": "^1.3.0",
3975
+ "object-inspect": "^1.13.4",
3976
+ "side-channel-list": "^1.0.1",
3977
+ "side-channel-map": "^1.0.1",
3978
+ "side-channel-weakmap": "^1.0.2"
3979
+ },
3980
+ "engines": {
3981
+ "node": ">= 0.4"
3982
+ },
3983
+ "funding": {
3984
+ "url": "https://github.com/sponsors/ljharb"
3985
+ }
3986
+ },
3987
+ "node_modules/side-channel-list": {
3988
+ "version": "1.0.1",
3989
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
3990
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
3991
+ "dev": true,
3992
+ "license": "MIT",
3993
+ "dependencies": {
3994
+ "es-errors": "^1.3.0",
3995
+ "object-inspect": "^1.13.4"
3996
+ },
3997
+ "engines": {
3998
+ "node": ">= 0.4"
3999
+ },
4000
+ "funding": {
4001
+ "url": "https://github.com/sponsors/ljharb"
4002
+ }
4003
+ },
4004
+ "node_modules/side-channel-map": {
4005
+ "version": "1.0.1",
4006
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
4007
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
4008
+ "dev": true,
4009
+ "license": "MIT",
4010
+ "dependencies": {
4011
+ "call-bound": "^1.0.2",
4012
+ "es-errors": "^1.3.0",
4013
+ "get-intrinsic": "^1.2.5",
4014
+ "object-inspect": "^1.13.3"
4015
+ },
4016
+ "engines": {
4017
+ "node": ">= 0.4"
4018
+ },
4019
+ "funding": {
4020
+ "url": "https://github.com/sponsors/ljharb"
4021
+ }
4022
+ },
4023
+ "node_modules/side-channel-weakmap": {
4024
+ "version": "1.0.2",
4025
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
4026
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
4027
+ "dev": true,
4028
+ "license": "MIT",
4029
+ "dependencies": {
4030
+ "call-bound": "^1.0.2",
4031
+ "es-errors": "^1.3.0",
4032
+ "get-intrinsic": "^1.2.5",
4033
+ "object-inspect": "^1.13.3",
4034
+ "side-channel-map": "^1.0.1"
4035
+ },
4036
+ "engines": {
4037
+ "node": ">= 0.4"
4038
+ },
4039
+ "funding": {
4040
+ "url": "https://github.com/sponsors/ljharb"
4041
+ }
4042
+ },
4043
+ "node_modules/simple-concat": {
4044
+ "version": "1.0.1",
4045
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
4046
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
4047
+ "dev": true,
4048
+ "funding": [
4049
+ {
4050
+ "type": "github",
4051
+ "url": "https://github.com/sponsors/feross"
4052
+ },
4053
+ {
4054
+ "type": "patreon",
4055
+ "url": "https://www.patreon.com/feross"
4056
+ },
4057
+ {
4058
+ "type": "consulting",
4059
+ "url": "https://feross.org/support"
4060
+ }
4061
+ ],
4062
+ "license": "MIT",
4063
+ "optional": true
4064
+ },
4065
+ "node_modules/simple-get": {
4066
+ "version": "4.0.1",
4067
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
4068
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
4069
+ "dev": true,
4070
+ "funding": [
4071
+ {
4072
+ "type": "github",
4073
+ "url": "https://github.com/sponsors/feross"
4074
+ },
4075
+ {
4076
+ "type": "patreon",
4077
+ "url": "https://www.patreon.com/feross"
4078
+ },
4079
+ {
4080
+ "type": "consulting",
4081
+ "url": "https://feross.org/support"
4082
+ }
4083
+ ],
4084
+ "license": "MIT",
4085
+ "optional": true,
4086
+ "dependencies": {
4087
+ "decompress-response": "^6.0.0",
4088
+ "once": "^1.3.1",
4089
+ "simple-concat": "^1.0.0"
4090
+ }
4091
+ },
4092
+ "node_modules/slash": {
4093
+ "version": "3.0.0",
4094
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
4095
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
4096
+ "dev": true,
4097
+ "license": "MIT",
4098
+ "engines": {
4099
+ "node": ">=8"
4100
+ }
4101
+ },
4102
+ "node_modules/string_decoder": {
4103
+ "version": "1.3.0",
4104
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
4105
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
4106
+ "dev": true,
4107
+ "license": "MIT",
4108
+ "optional": true,
4109
+ "dependencies": {
4110
+ "safe-buffer": "~5.2.0"
4111
+ }
4112
+ },
4113
+ "node_modules/strip-ansi": {
4114
+ "version": "6.0.1",
4115
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4116
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
4117
+ "dev": true,
4118
+ "license": "MIT",
4119
+ "dependencies": {
4120
+ "ansi-regex": "^5.0.1"
4121
+ },
4122
+ "engines": {
4123
+ "node": ">=8"
4124
+ }
4125
+ },
4126
+ "node_modules/strip-json-comments": {
4127
+ "version": "3.1.1",
4128
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
4129
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
4130
+ "dev": true,
4131
+ "license": "MIT",
4132
+ "engines": {
4133
+ "node": ">=8"
4134
+ },
4135
+ "funding": {
4136
+ "url": "https://github.com/sponsors/sindresorhus"
4137
+ }
4138
+ },
4139
+ "node_modules/supports-color": {
4140
+ "version": "5.5.0",
4141
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4142
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4143
+ "dev": true,
4144
+ "license": "MIT",
4145
+ "dependencies": {
4146
+ "has-flag": "^3.0.0"
4147
+ },
4148
+ "engines": {
4149
+ "node": ">=4"
4150
+ }
4151
+ },
4152
+ "node_modules/tar-fs": {
4153
+ "version": "2.1.4",
4154
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
4155
+ "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
4156
+ "dev": true,
4157
+ "license": "MIT",
4158
+ "optional": true,
4159
+ "dependencies": {
4160
+ "chownr": "^1.1.1",
4161
+ "mkdirp-classic": "^0.5.2",
4162
+ "pump": "^3.0.0",
4163
+ "tar-stream": "^2.1.4"
4164
+ }
4165
+ },
4166
+ "node_modules/tar-stream": {
4167
+ "version": "2.2.0",
4168
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
4169
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
4170
+ "dev": true,
4171
+ "license": "MIT",
4172
+ "optional": true,
4173
+ "dependencies": {
4174
+ "bl": "^4.0.3",
4175
+ "end-of-stream": "^1.4.1",
4176
+ "fs-constants": "^1.0.0",
4177
+ "inherits": "^2.0.3",
4178
+ "readable-stream": "^3.1.1"
4179
+ },
4180
+ "engines": {
4181
+ "node": ">=6"
4182
+ }
4183
+ },
4184
+ "node_modules/text-table": {
4185
+ "version": "0.2.0",
4186
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
4187
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
4188
+ "dev": true,
4189
+ "license": "MIT"
4190
+ },
4191
+ "node_modules/tmp": {
4192
+ "version": "0.2.7",
4193
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
4194
+ "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
4195
+ "dev": true,
4196
+ "license": "MIT",
4197
+ "engines": {
4198
+ "node": ">=14.14"
4199
+ }
4200
+ },
4201
+ "node_modules/to-regex-range": {
4202
+ "version": "5.0.1",
4203
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
4204
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
4205
+ "dev": true,
4206
+ "license": "MIT",
4207
+ "dependencies": {
4208
+ "is-number": "^7.0.0"
4209
+ },
4210
+ "engines": {
4211
+ "node": ">=8.0"
4212
+ }
4213
+ },
4214
+ "node_modules/ts-api-utils": {
4215
+ "version": "1.4.3",
4216
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
4217
+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
4218
+ "dev": true,
4219
+ "license": "MIT",
4220
+ "engines": {
4221
+ "node": ">=16"
4222
+ },
4223
+ "peerDependencies": {
4224
+ "typescript": ">=4.2.0"
4225
+ }
4226
+ },
4227
+ "node_modules/tslib": {
4228
+ "version": "2.8.1",
4229
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
4230
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
4231
+ "dev": true,
4232
+ "license": "0BSD"
4233
+ },
4234
+ "node_modules/tunnel": {
4235
+ "version": "0.0.6",
4236
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
4237
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
4238
+ "dev": true,
4239
+ "license": "MIT",
4240
+ "engines": {
4241
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
4242
+ }
4243
+ },
4244
+ "node_modules/tunnel-agent": {
4245
+ "version": "0.6.0",
4246
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
4247
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
4248
+ "dev": true,
4249
+ "license": "Apache-2.0",
4250
+ "optional": true,
4251
+ "dependencies": {
4252
+ "safe-buffer": "^5.0.1"
4253
+ },
4254
+ "engines": {
4255
+ "node": "*"
4256
+ }
4257
+ },
4258
+ "node_modules/type-check": {
4259
+ "version": "0.4.0",
4260
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
4261
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
4262
+ "dev": true,
4263
+ "license": "MIT",
4264
+ "dependencies": {
4265
+ "prelude-ls": "^1.2.1"
4266
+ },
4267
+ "engines": {
4268
+ "node": ">= 0.8.0"
4269
+ }
4270
+ },
4271
+ "node_modules/type-fest": {
4272
+ "version": "0.20.2",
4273
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
4274
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
4275
+ "dev": true,
4276
+ "license": "(MIT OR CC0-1.0)",
4277
+ "engines": {
4278
+ "node": ">=10"
4279
+ },
4280
+ "funding": {
4281
+ "url": "https://github.com/sponsors/sindresorhus"
4282
+ }
4283
+ },
4284
+ "node_modules/typed-rest-client": {
4285
+ "version": "1.8.11",
4286
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
4287
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
4288
+ "dev": true,
4289
+ "license": "MIT",
4290
+ "dependencies": {
4291
+ "qs": "^6.9.1",
4292
+ "tunnel": "0.0.6",
4293
+ "underscore": "^1.12.1"
4294
+ }
4295
+ },
4296
+ "node_modules/typescript": {
4297
+ "version": "5.9.3",
4298
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
4299
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
4300
+ "dev": true,
4301
+ "license": "Apache-2.0",
4302
+ "bin": {
4303
+ "tsc": "bin/tsc",
4304
+ "tsserver": "bin/tsserver"
4305
+ },
4306
+ "engines": {
4307
+ "node": ">=14.17"
4308
+ }
4309
+ },
4310
+ "node_modules/uc.micro": {
4311
+ "version": "1.0.6",
4312
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
4313
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==",
4314
+ "dev": true,
4315
+ "license": "MIT"
4316
+ },
4317
+ "node_modules/underscore": {
4318
+ "version": "1.13.8",
4319
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz",
4320
+ "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==",
4321
+ "dev": true,
4322
+ "license": "MIT"
4323
+ },
4324
+ "node_modules/undici": {
4325
+ "version": "7.28.0",
4326
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz",
4327
+ "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==",
4328
+ "dev": true,
4329
+ "license": "MIT",
4330
+ "engines": {
4331
+ "node": ">=20.18.1"
4332
+ }
4333
+ },
4334
+ "node_modules/undici-types": {
4335
+ "version": "6.21.0",
4336
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
4337
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
4338
+ "dev": true,
4339
+ "license": "MIT"
4340
+ },
4341
+ "node_modules/uri-js": {
4342
+ "version": "4.4.1",
4343
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
4344
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
4345
+ "dev": true,
4346
+ "license": "BSD-2-Clause",
4347
+ "dependencies": {
4348
+ "punycode": "^2.1.0"
4349
+ }
4350
+ },
4351
+ "node_modules/url-join": {
4352
+ "version": "4.0.1",
4353
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
4354
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
4355
+ "dev": true,
4356
+ "license": "MIT"
4357
+ },
4358
+ "node_modules/util-deprecate": {
4359
+ "version": "1.0.2",
4360
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
4361
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
4362
+ "dev": true,
4363
+ "license": "MIT",
4364
+ "optional": true
4365
+ },
4366
+ "node_modules/whatwg-encoding": {
4367
+ "version": "3.1.1",
4368
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
4369
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
4370
+ "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
4371
+ "dev": true,
4372
+ "license": "MIT",
4373
+ "dependencies": {
4374
+ "iconv-lite": "0.6.3"
4375
+ },
4376
+ "engines": {
4377
+ "node": ">=18"
4378
+ }
4379
+ },
4380
+ "node_modules/whatwg-mimetype": {
4381
+ "version": "4.0.0",
4382
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
4383
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
4384
+ "dev": true,
4385
+ "license": "MIT",
4386
+ "engines": {
4387
+ "node": ">=18"
4388
+ }
4389
+ },
4390
+ "node_modules/which": {
4391
+ "version": "2.0.2",
4392
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
4393
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
4394
+ "dev": true,
4395
+ "license": "ISC",
4396
+ "dependencies": {
4397
+ "isexe": "^2.0.0"
4398
+ },
4399
+ "bin": {
4400
+ "node-which": "bin/node-which"
4401
+ },
4402
+ "engines": {
4403
+ "node": ">= 8"
4404
+ }
4405
+ },
4406
+ "node_modules/word-wrap": {
4407
+ "version": "1.2.5",
4408
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
4409
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
4410
+ "dev": true,
4411
+ "license": "MIT",
4412
+ "engines": {
4413
+ "node": ">=0.10.0"
4414
+ }
4415
+ },
4416
+ "node_modules/wrappy": {
4417
+ "version": "1.0.2",
4418
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4419
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
4420
+ "dev": true,
4421
+ "license": "ISC"
4422
+ },
4423
+ "node_modules/wsl-utils": {
4424
+ "version": "0.1.0",
4425
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
4426
+ "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
4427
+ "dev": true,
4428
+ "license": "MIT",
4429
+ "dependencies": {
4430
+ "is-wsl": "^3.1.0"
4431
+ },
4432
+ "engines": {
4433
+ "node": ">=18"
4434
+ },
4435
+ "funding": {
4436
+ "url": "https://github.com/sponsors/sindresorhus"
4437
+ }
4438
+ },
4439
+ "node_modules/xml2js": {
4440
+ "version": "0.5.0",
4441
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
4442
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
4443
+ "dev": true,
4444
+ "license": "MIT",
4445
+ "dependencies": {
4446
+ "sax": ">=0.6.0",
4447
+ "xmlbuilder": "~11.0.0"
4448
+ },
4449
+ "engines": {
4450
+ "node": ">=4.0.0"
4451
+ }
4452
+ },
4453
+ "node_modules/xmlbuilder": {
4454
+ "version": "11.0.1",
4455
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
4456
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
4457
+ "dev": true,
4458
+ "license": "MIT",
4459
+ "engines": {
4460
+ "node": ">=4.0"
4461
+ }
4462
+ },
4463
+ "node_modules/yallist": {
4464
+ "version": "4.0.0",
4465
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
4466
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
4467
+ "dev": true,
4468
+ "license": "ISC"
4469
+ },
4470
+ "node_modules/yauzl": {
4471
+ "version": "2.10.0",
4472
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
4473
+ "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
4474
+ "dev": true,
4475
+ "license": "MIT",
4476
+ "dependencies": {
4477
+ "buffer-crc32": "~0.2.3",
4478
+ "fd-slicer": "~1.1.0"
4479
+ }
4480
+ },
4481
+ "node_modules/yazl": {
4482
+ "version": "2.5.1",
4483
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
4484
+ "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
4485
+ "dev": true,
4486
+ "license": "MIT",
4487
+ "dependencies": {
4488
+ "buffer-crc32": "~0.2.3"
4489
+ }
4490
+ },
4491
+ "node_modules/yocto-queue": {
4492
+ "version": "0.1.0",
4493
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
4494
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
4495
+ "dev": true,
4496
+ "license": "MIT",
4497
+ "engines": {
4498
+ "node": ">=10"
4499
+ },
4500
+ "funding": {
4501
+ "url": "https://github.com/sponsors/sindresorhus"
4502
+ }
4503
+ }
4504
+ }
4505
+}
package.json
new
+168
@@ -0,0 +1,168 @@
1
+{
2
+ "name": "sigit-code",
3
+ "displayName": "siGit Code — On-device AI Coding Agent",
4
+ "description": "Local-first AI coding agent for VS Code. Runs the on-device sigit agent, and other ACP-compatible agents, over stdio.",
5
+ "version": "0.0.1",
6
+ "publisher": "getsigit",
7
+ "license": "MIT",
8
+ "homepage": "https://code.sigit.si",
9
+ "//icon": "TODO: add media/icon.png (128x128) before publishing, then set \"icon\": \"media/icon.png\"",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/getsigit/sigit-vscode"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/getsigit/sigit-vscode/issues"
16
+ },
17
+ "engines": {
18
+ "vscode": "^1.90.0"
19
+ },
20
+ "categories": [
21
+ "AI",
22
+ "Chat",
23
+ "Programming Languages",
24
+ "Other"
25
+ ],
26
+ "keywords": [
27
+ "acp",
28
+ "agent client protocol",
29
+ "ai",
30
+ "coding agent",
31
+ "local llm",
32
+ "on-device",
33
+ "gguf",
34
+ "offline",
35
+ "claude code",
36
+ "gemini",
37
+ "copilot alternative"
38
+ ],
39
+ "main": "./dist/extension.js",
40
+ "activationEvents": [],
41
+ "contributes": {
42
+ "commands": [
43
+ {
44
+ "command": "sigit.openChat",
45
+ "title": "siGit: Open Chat",
46
+ "category": "siGit"
47
+ },
48
+ {
49
+ "command": "sigit.newSession",
50
+ "title": "siGit: New Session",
51
+ "category": "siGit"
52
+ },
53
+ {
54
+ "command": "sigit.selectAgent",
55
+ "title": "siGit: Select Agent",
56
+ "category": "siGit"
57
+ },
58
+ {
59
+ "command": "sigit.restartAgent",
60
+ "title": "siGit: Restart Agent",
61
+ "category": "siGit"
62
+ }
63
+ ],
64
+ "viewsContainers": {
65
+ "activitybar": [
66
+ {
67
+ "id": "sigit",
68
+ "title": "siGit Code",
69
+ "icon": "media/activity-icon.svg"
70
+ }
71
+ ]
72
+ },
73
+ "views": {
74
+ "sigit": [
75
+ {
76
+ "type": "webview",
77
+ "id": "sigit.chat",
78
+ "name": "Chat"
79
+ }
80
+ ]
81
+ },
82
+ "configuration": {
83
+ "title": "siGit Code",
84
+ "properties": {
85
+ "sigit.agent.default": {
86
+ "type": "string",
87
+ "default": "sigit",
88
+ "markdownDescription": "Key of the agent to use by default, looked up in `#sigit.agents#`. Defaults to the on-device `sigit` binary."
89
+ },
90
+ "sigit.agents": {
91
+ "type": "object",
92
+ "markdownDescription": "Registry of ACP agents that siGit Code can spawn. Each entry maps a key to an agent definition. The on-device `sigit` agent is the local-first default; add other ACP-compatible agents here.",
93
+ "default": {
94
+ "sigit": {
95
+ "name": "siGit (on-device)",
96
+ "command": "sigit",
97
+ "args": [],
98
+ "env": {}
99
+ }
100
+ },
101
+ "additionalProperties": {
102
+ "type": "object",
103
+ "properties": {
104
+ "name": {
105
+ "type": "string",
106
+ "description": "Human-readable display name."
107
+ },
108
+ "command": {
109
+ "type": "string",
110
+ "description": "Executable to spawn (on PATH or an absolute path)."
111
+ },
112
+ "args": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "string"
116
+ },
117
+ "description": "Arguments passed to the agent binary."
118
+ },
119
+ "env": {
120
+ "type": "object",
121
+ "additionalProperties": {
122
+ "type": "string"
123
+ },
124
+ "description": "Extra environment variables for the agent process."
125
+ }
126
+ },
127
+ "required": [
128
+ "command"
129
+ ]
130
+ }
131
+ },
132
+ "sigit.permission.mode": {
133
+ "type": "string",
134
+ "enum": [
135
+ "prompt",
136
+ "allow",
137
+ "deny"
138
+ ],
139
+ "enumDescriptions": [
140
+ "Ask before every agent-requested action.",
141
+ "Automatically allow agent-requested actions.",
142
+ "Automatically deny agent-requested actions."
143
+ ],
144
+ "default": "prompt",
145
+ "description": "How to handle permission requests from the agent (file writes, tool calls, etc.)."
146
+ }
147
+ }
148
+ }
149
+ },
150
+ "scripts": {
151
+ "vscode:prepublish": "npm run build",
152
+ "build": "node esbuild.js --production",
153
+ "watch": "node esbuild.js --watch",
154
+ "compile": "tsc --noEmit",
155
+ "lint": "eslint src --ext ts",
156
+ "package": "vsce package"
157
+ },
158
+ "devDependencies": {
159
+ "@types/node": "^20.11.0",
160
+ "@types/vscode": "^1.90.0",
161
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
162
+ "@typescript-eslint/parser": "^7.0.0",
163
+ "@vscode/vsce": "^2.24.0",
164
+ "esbuild": "^0.20.0",
165
+ "eslint": "^8.57.0",
166
+ "typescript": "^5.4.0"
167
+ }
168
+}
src/acp/client.ts
new
+172
@@ -0,0 +1,172 @@
1
+import { ChildProcessWithoutNullStreams, spawn } from "child_process";
2
+import { EventEmitter } from "events";
3
+import { Connection } from "./connection";
4
+
5
+/**
6
+ * AcpClient — spawns an Agent Client Protocol agent over stdio and drives the
7
+ * ACP handshake and prompt turns.
8
+ *
9
+ * Protocol reference: https://agentclientprotocol.com
10
+ */
11
+
12
+export interface AgentSpawnConfig {
13
+ command: string;
14
+ args?: string[];
15
+ cwd?: string;
16
+ env?: Record<string, string>;
17
+}
18
+
19
+export interface PermissionRequest {
20
+ sessionId: string;
21
+ toolCall?: unknown;
22
+ options?: Array<{ optionId: string; name: string; kind?: string }>;
23
+ [key: string]: unknown;
24
+}
25
+
26
+export interface PermissionResponse {
27
+ outcome: { outcome: "selected"; optionId: string } | { outcome: "cancelled" };
28
+}
29
+
30
+/** Callbacks the host injects so the agent can act on the workspace. */
31
+export interface AcpCallbacks {
32
+ requestPermission: (request: PermissionRequest) => Promise<PermissionResponse>;
33
+ readTextFile: (params: { path: string; line?: number; limit?: number }) => Promise<string>;
34
+ writeTextFile: (params: { path: string; content: string }) => Promise<void>;
35
+}
36
+
37
+export interface SessionUpdate {
38
+ sessionId: string;
39
+ update: {
40
+ sessionUpdate: string;
41
+ [key: string]: unknown;
42
+ };
43
+}
44
+
45
+const PROTOCOL_VERSION = 1;
46
+
47
+export class AcpClient extends EventEmitter {
48
+ private child: ChildProcessWithoutNullStreams | undefined;
49
+ private connection: Connection | undefined;
50
+ private callbacks: AcpCallbacks;
51
+ private sessionId: string | undefined;
52
+ private disposed = false;
53
+
54
+ constructor(callbacks: AcpCallbacks) {
55
+ super();
56
+ this.callbacks = callbacks;
57
+ }
58
+
59
+ get currentSessionId(): string | undefined {
60
+ return this.sessionId;
61
+ }
62
+
63
+ /** Spawn the agent process and wire up the JSON-RPC connection. */
64
+ spawn(config: AgentSpawnConfig): void {
65
+ const env = { ...process.env, ...(config.env ?? {}) };
66
+ const child = spawn(config.command, config.args ?? [], {
67
+ cwd: config.cwd,
68
+ env,
69
+ stdio: ["pipe", "pipe", "pipe"]
70
+ });
71
+
72
+ child.on("error", (err) => this.emit("error", err));
73
+ child.on("exit", (code, signal) => this.emit("exit", code, signal));
74
+ child.stderr.on("data", (chunk: Buffer) => this.emit("stderr", chunk.toString()));
75
+
76
+ const connection = new Connection(child.stdout, child.stdin);
77
+ connection.on("error", (err) => this.emit("error", err));
78
+
79
+ connection.onNotification("session/update", (params) => {
80
+ this.emit("update", params as SessionUpdate);
81
+ });
82
+
83
+ connection.onRequest("session/request_permission", async (params) => {
84
+ return this.callbacks.requestPermission(params as PermissionRequest);
85
+ });
86
+
87
+ connection.onRequest("fs/read_text_file", async (params) => {
88
+ const p = params as { path: string; line?: number; limit?: number };
89
+ const content = await this.callbacks.readTextFile(p);
90
+ return { content };
91
+ });
92
+
93
+ connection.onRequest("fs/write_text_file", async (params) => {
94
+ const p = params as { path: string; content: string };
95
+ await this.callbacks.writeTextFile(p);
96
+ return null;
97
+ });
98
+
99
+ this.child = child;
100
+ this.connection = connection;
101
+ }
102
+
103
+ /** Run the ACP handshake: initialize → session/new. Returns the session id. */
104
+ async initialize(cwd: string): Promise<string> {
105
+ const connection = this.requireConnection();
106
+
107
+ await connection.request("initialize", {
108
+ protocolVersion: PROTOCOL_VERSION,
109
+ clientCapabilities: {
110
+ fs: {
111
+ readTextFile: true,
112
+ writeTextFile: true
113
+ }
114
+ }
115
+ });
116
+
117
+ const session = await connection.request<{ sessionId: string }>("session/new", {
118
+ cwd,
119
+ mcpServers: []
120
+ });
121
+
122
+ this.sessionId = session.sessionId;
123
+ return session.sessionId;
124
+ }
125
+
126
+ /** Send a text prompt and resolve with the stop reason for the turn. */
127
+ async prompt(text: string): Promise<string> {
128
+ const connection = this.requireConnection();
129
+ if (!this.sessionId) {
130
+ throw new Error("No active session; call initialize() first");
131
+ }
132
+ const result = await connection.request<{ stopReason: string }>("session/prompt", {
133
+ sessionId: this.sessionId,
134
+ prompt: [{ type: "text", text }]
135
+ });
136
+ return result.stopReason;
137
+ }
138
+
139
+ /** Ask the agent to cancel the current turn. */
140
+ cancel(): void {
141
+ if (!this.connection || !this.sessionId) {
142
+ return;
143
+ }
144
+ this.connection.notify("session/cancel", { sessionId: this.sessionId });
145
+ }
146
+
147
+ dispose(): void {
148
+ if (this.disposed) {
149
+ return;
150
+ }
151
+ this.disposed = true;
152
+ this.connection?.dispose();
153
+ this.connection = undefined;
154
+ if (this.child) {
155
+ try {
156
+ this.child.kill();
157
+ } catch {
158
+ // ignore
159
+ }
160
+ this.child = undefined;
161
+ }
162
+ this.sessionId = undefined;
163
+ this.removeAllListeners();
164
+ }
165
+
166
+ private requireConnection(): Connection {
167
+ if (!this.connection) {
168
+ throw new Error("Agent not spawned; call spawn() first");
169
+ }
170
+ return this.connection;
171
+ }
172
+}
src/acp/connection.ts
new
+216
@@ -0,0 +1,216 @@
1
+import { EventEmitter } from "events";
2
+import { Readable, Writable } from "stream";
3
+
4
+/**
5
+ * A generic JSON-RPC 2.0 peer over newline-delimited JSON (ndjson).
6
+ *
7
+ * Reads from a readable stream (the agent's stdout) and writes to a writable
8
+ * stream (the agent's stdin). Both incoming requests/notifications and our own
9
+ * outbound requests/notifications are supported, so this is a symmetric peer
10
+ * rather than a one-directional client.
11
+ */
12
+
13
+type JsonValue =
14
+ | null
15
+ | boolean
16
+ | number
17
+ | string
18
+ | JsonValue[]
19
+ | { [key: string]: JsonValue };
20
+
21
+interface JsonRpcRequest {
22
+ jsonrpc: "2.0";
23
+ id: number | string;
24
+ method: string;
25
+ params?: unknown;
26
+}
27
+
28
+interface JsonRpcNotification {
29
+ jsonrpc: "2.0";
30
+ method: string;
31
+ params?: unknown;
32
+}
33
+
34
+interface JsonRpcResponse {
35
+ jsonrpc: "2.0";
36
+ id: number | string;
37
+ result?: unknown;
38
+ error?: JsonRpcError;
39
+}
40
+
41
+interface JsonRpcError {
42
+ code: number;
43
+ message: string;
44
+ data?: unknown;
45
+}
46
+
47
+type RequestHandler = (params: unknown) => unknown | Promise<unknown>;
48
+type NotificationHandler = (params: unknown) => void;
49
+
50
+interface PendingRequest {
51
+ resolve: (value: unknown) => void;
52
+ reject: (reason: unknown) => void;
53
+}
54
+
55
+export class Connection extends EventEmitter {
56
+ private readonly writable: Writable;
57
+ private readonly pending = new Map<number | string, PendingRequest>();
58
+ private readonly requestHandlers = new Map<string, RequestHandler>();
59
+ private readonly notificationHandlers = new Map<string, NotificationHandler>();
60
+ private buffer = "";
61
+ private nextId = 1;
62
+ private disposed = false;
63
+
64
+ constructor(readable: Readable, writable: Writable) {
65
+ super();
66
+ this.writable = writable;
67
+ readable.on("data", (chunk: Buffer | string) => this.onData(chunk.toString()));
68
+ readable.on("error", (err) => this.emit("error", err));
69
+ readable.on("close", () => this.emit("close"));
70
+ }
71
+
72
+ /** Send a request and resolve with its result (or reject on error). */
73
+ request<T = unknown>(method: string, params?: unknown): Promise<T> {
74
+ if (this.disposed) {
75
+ return Promise.reject(new Error("Connection disposed"));
76
+ }
77
+ const id = this.nextId++;
78
+ const payload: JsonRpcRequest = { jsonrpc: "2.0", id, method, params };
79
+ return new Promise<T>((resolve, reject) => {
80
+ this.pending.set(id, {
81
+ resolve: resolve as (value: unknown) => void,
82
+ reject
83
+ });
84
+ this.send(payload);
85
+ });
86
+ }
87
+
88
+ /** Send a fire-and-forget notification. */
89
+ notify(method: string, params?: unknown): void {
90
+ if (this.disposed) {
91
+ return;
92
+ }
93
+ const payload: JsonRpcNotification = { jsonrpc: "2.0", method, params };
94
+ this.send(payload);
95
+ }
96
+
97
+ /** Register a handler for inbound requests of a given method. */
98
+ onRequest(method: string, handler: RequestHandler): void {
99
+ this.requestHandlers.set(method, handler);
100
+ }
101
+
102
+ /** Register a handler for inbound notifications of a given method. */
103
+ onNotification(method: string, handler: NotificationHandler): void {
104
+ this.notificationHandlers.set(method, handler);
105
+ }
106
+
107
+ dispose(): void {
108
+ if (this.disposed) {
109
+ return;
110
+ }
111
+ this.disposed = true;
112
+ const err = new Error("Connection disposed");
113
+ for (const { reject } of this.pending.values()) {
114
+ reject(err);
115
+ }
116
+ this.pending.clear();
117
+ this.requestHandlers.clear();
118
+ this.notificationHandlers.clear();
119
+ this.removeAllListeners();
120
+ }
121
+
122
+ private send(message: JsonValue | JsonRpcRequest | JsonRpcNotification | JsonRpcResponse): void {
123
+ try {
124
+ this.writable.write(JSON.stringify(message) + "\n");
125
+ } catch (err) {
126
+ this.emit("error", err);
127
+ }
128
+ }
129
+
130
+ private onData(text: string): void {
131
+ this.buffer += text;
132
+ let newlineIndex: number;
133
+ while ((newlineIndex = this.buffer.indexOf("\n")) !== -1) {
134
+ const line = this.buffer.slice(0, newlineIndex).trim();
135
+ this.buffer = this.buffer.slice(newlineIndex + 1);
136
+ if (line.length === 0) {
137
+ continue;
138
+ }
139
+ this.handleLine(line);
140
+ }
141
+ }
142
+
143
+ private handleLine(line: string): void {
144
+ let message: JsonRpcRequest | JsonRpcResponse | JsonRpcNotification;
145
+ try {
146
+ message = JSON.parse(line);
147
+ } catch (err) {
148
+ this.emit("error", new Error(`Failed to parse message: ${line}`));
149
+ return;
150
+ }
151
+
152
+ if ("id" in message && ("result" in message || "error" in message)) {
153
+ this.handleResponse(message as JsonRpcResponse);
154
+ } else if ("method" in message && "id" in message) {
155
+ void this.handleRequest(message as JsonRpcRequest);
156
+ } else if ("method" in message) {
157
+ this.handleNotification(message as JsonRpcNotification);
158
+ } else {
159
+ this.emit("error", new Error(`Unrecognized message: ${line}`));
160
+ }
161
+ }
162
+
163
+ private handleResponse(message: JsonRpcResponse): void {
164
+ const pending = this.pending.get(message.id);
165
+ if (!pending) {
166
+ return;
167
+ }
168
+ this.pending.delete(message.id);
169
+ if (message.error) {
170
+ const err = new Error(message.error.message);
171
+ (err as Error & { code?: number; data?: unknown }).code = message.error.code;
172
+ (err as Error & { code?: number; data?: unknown }).data = message.error.data;
173
+ pending.reject(err);
174
+ } else {
175
+ pending.resolve(message.result);
176
+ }
177
+ }
178
+
179
+ private async handleRequest(message: JsonRpcRequest): Promise<void> {
180
+ const handler = this.requestHandlers.get(message.method);
181
+ if (!handler) {
182
+ this.send({
183
+ jsonrpc: "2.0",
184
+ id: message.id,
185
+ error: { code: -32601, message: `Method not found: ${message.method}` }
186
+ });
187
+ return;
188
+ }
189
+ try {
190
+ const result = await handler(message.params);
191
+ this.send({ jsonrpc: "2.0", id: message.id, result: (result ?? null) as JsonValue });
192
+ } catch (err) {
193
+ const error = err as Error & { code?: number; data?: unknown };
194
+ this.send({
195
+ jsonrpc: "2.0",
196
+ id: message.id,
197
+ error: {
198
+ code: typeof error.code === "number" ? error.code : -32603,
199
+ message: error.message ?? "Internal error",
200
+ data: error.data
201
+ }
202
+ });
203
+ }
204
+ }
205
+
206
+ private handleNotification(message: JsonRpcNotification): void {
207
+ const handler = this.notificationHandlers.get(message.method);
208
+ if (handler) {
209
+ try {
210
+ handler(message.params);
211
+ } catch (err) {
212
+ this.emit("error", err);
213
+ }
214
+ }
215
+ }
216
+}
src/agents.ts
new
+73
@@ -0,0 +1,73 @@
1
+import * as vscode from "vscode";
2
+
3
+/**
4
+ * Reads the siGit agent registry and permission settings from the workspace
5
+ * configuration. Falls back to the on-device `sigit` binary when the registry
6
+ * is empty — local-first is always the default.
7
+ */
8
+
9
+export interface AgentDefinition {
10
+ key: string;
11
+ name: string;
12
+ command: string;
13
+ args: string[];
14
+ env: Record<string, string>;
15
+}
16
+
17
+export type PermissionMode = "prompt" | "allow" | "deny";
18
+
19
+const FALLBACK_AGENT: AgentDefinition = {
20
+ key: "sigit",
21
+ name: "siGit (on-device)",
22
+ command: "sigit",
23
+ args: [],
24
+ env: {}
25
+};
26
+
27
+interface RawAgent {
28
+ name?: string;
29
+ command: string;
30
+ args?: string[];
31
+ env?: Record<string, string>;
32
+}
33
+
34
+function config(): vscode.WorkspaceConfiguration {
35
+ return vscode.workspace.getConfiguration("sigit");
36
+}
37
+
38
+function normalize(key: string, raw: RawAgent): AgentDefinition {
39
+ return {
40
+ key,
41
+ name: raw.name ?? key,
42
+ command: raw.command,
43
+ args: raw.args ?? [],
44
+ env: raw.env ?? {}
45
+ };
46
+}
47
+
48
+/** All configured agents, never empty (falls back to on-device `sigit`). */
49
+export function listAgents(): AgentDefinition[] {
50
+ const registry = config().get<Record<string, RawAgent>>("agents") ?? {};
51
+ const entries = Object.entries(registry).filter(([, raw]) => raw && raw.command);
52
+ if (entries.length === 0) {
53
+ return [FALLBACK_AGENT];
54
+ }
55
+ return entries.map(([key, raw]) => normalize(key, raw));
56
+}
57
+
58
+/** Resolve a specific agent by key, or the configured default when omitted. */
59
+export function resolveAgent(key?: string): AgentDefinition {
60
+ const agents = listAgents();
61
+ const wanted = key ?? config().get<string>("agent.default") ?? FALLBACK_AGENT.key;
62
+ return agents.find((agent) => agent.key === wanted) ?? agents[0];
63
+}
64
+
65
+/** The key of the default agent. */
66
+export function defaultAgentKey(): string {
67
+ return config().get<string>("agent.default") ?? FALLBACK_AGENT.key;
68
+}
69
+
70
+/** Current permission handling mode. */
71
+export function permissionMode(): PermissionMode {
72
+ return config().get<PermissionMode>("permission.mode") ?? "prompt";
73
+}
src/chatView.ts
new
+344
@@ -0,0 +1,344 @@
1
+import * as vscode from "vscode";
2
+import { AcpClient, PermissionRequest, PermissionResponse, SessionUpdate } from "./acp/client";
3
+import { defaultAgentKey, listAgents, permissionMode, resolveAgent } from "./agents";
4
+
5
+/**
6
+ * The siGit chat webview. Owns a single AcpClient at a time, streams agent
7
+ * output into the webview, and bridges file reads/writes and permission
8
+ * requests back to VS Code.
9
+ */
10
+export class ChatViewProvider implements vscode.WebviewViewProvider {
11
+ public static readonly viewType = "sigit.chat";
12
+
13
+ private view: vscode.WebviewView | undefined;
14
+ private client: AcpClient | undefined;
15
+ private activeAgentKey: string;
16
+ private starting: Promise<void> | undefined;
17
+
18
+ constructor(private readonly context: vscode.ExtensionContext) {
19
+ this.activeAgentKey = defaultAgentKey();
20
+ }
21
+
22
+ resolveWebviewView(webviewView: vscode.WebviewView): void {
23
+ this.view = webviewView;
24
+ webviewView.webview.options = {
25
+ enableScripts: true,
26
+ localResourceRoots: [vscode.Uri.joinPath(this.context.extensionUri, "media")]
27
+ };
28
+ webviewView.webview.html = this.getHtml(webviewView.webview);
29
+
30
+ webviewView.webview.onDidReceiveMessage((message) => {
31
+ switch (message?.type) {
32
+ case "prompt":
33
+ void this.handlePrompt(String(message.text ?? ""));
34
+ break;
35
+ case "cancel":
36
+ this.client?.cancel();
37
+ break;
38
+ case "ready":
39
+ this.postStatus(`Agent: ${this.activeAgentKey}`);
40
+ break;
41
+ default:
42
+ break;
43
+ }
44
+ });
45
+
46
+ webviewView.onDidDispose(() => {
47
+ this.disposeClient();
48
+ this.view = undefined;
49
+ });
50
+ }
51
+
52
+ reveal(): void {
53
+ this.view?.show?.(true);
54
+ }
55
+
56
+ /** Start a fresh session, discarding any existing client. */
57
+ async newSession(): Promise<void> {
58
+ this.disposeClient();
59
+ this.post({ type: "clear" });
60
+ await this.ensureClient();
61
+ this.postStatus("New session started");
62
+ }
63
+
64
+ /** Restart the active agent process. */
65
+ async restart(): Promise<void> {
66
+ this.disposeClient();
67
+ this.postStatus("Restarting agent…");
68
+ await this.ensureClient();
69
+ this.postStatus(`Agent restarted: ${this.activeAgentKey}`);
70
+ }
71
+
72
+ /** Pick an agent from the registry and switch to it. */
73
+ async selectAgent(): Promise<void> {
74
+ const agents = listAgents();
75
+ const picked = await vscode.window.showQuickPick(
76
+ agents.map((agent) => ({
77
+ label: agent.name,
78
+ description: agent.key,
79
+ detail: `${agent.command} ${agent.args.join(" ")}`.trim(),
80
+ agent
81
+ })),
82
+ { placeHolder: "Select an ACP agent" }
83
+ );
84
+ if (!picked) {
85
+ return;
86
+ }
87
+ this.activeAgentKey = picked.agent.key;
88
+ this.disposeClient();
89
+ this.post({ type: "clear" });
90
+ await this.ensureClient();
91
+ this.postStatus(`Agent: ${picked.agent.name}`);
92
+ }
93
+
94
+ private async handlePrompt(text: string): Promise<void> {
95
+ const trimmed = text.trim();
96
+ if (!trimmed) {
97
+ return;
98
+ }
99
+ try {
100
+ await this.ensureClient();
101
+ } catch (err) {
102
+ this.postError(`Failed to start agent: ${(err as Error).message}`);
103
+ return;
104
+ }
105
+ if (!this.client) {
106
+ this.postError("No agent available.");
107
+ return;
108
+ }
109
+ this.post({ type: "user", text: trimmed });
110
+ this.post({ type: "busy", busy: true });
111
+ try {
112
+ const stopReason = await this.client.prompt(trimmed);
113
+ this.post({ type: "turnEnd", stopReason });
114
+ } catch (err) {
115
+ this.postError(`Prompt failed: ${(err as Error).message}`);
116
+ } finally {
117
+ this.post({ type: "busy", busy: false });
118
+ }
119
+ }
120
+
121
+ /** Spawn the active agent and open a session if not already running. */
122
+ private ensureClient(): Promise<void> {
123
+ if (this.client) {
124
+ return Promise.resolve();
125
+ }
126
+ if (this.starting) {
127
+ return this.starting;
128
+ }
129
+ this.starting = this.startClient().finally(() => {
130
+ this.starting = undefined;
131
+ });
132
+ return this.starting;
133
+ }
134
+
135
+ private async startClient(): Promise<void> {
136
+ const agent = resolveAgent(this.activeAgentKey);
137
+ this.activeAgentKey = agent.key;
138
+ const cwd = this.workspaceFolder();
139
+
140
+ const client = new AcpClient({
141
+ requestPermission: (request) => this.handlePermission(request),
142
+ readTextFile: (params) => this.readFile(params),
143
+ writeTextFile: (params) => this.writeFile(params)
144
+ });
145
+
146
+ client.on("update", (update: SessionUpdate) => this.handleUpdate(update));
147
+ client.on("stderr", (chunk: string) => this.post({ type: "log", text: chunk }));
148
+ client.on("error", (err: Error) => this.postError(`Agent error: ${err.message}`));
149
+ client.on("exit", (code: number | null) => {
150
+ this.postStatus(`Agent exited${code === null ? "" : ` (code ${code})`}`);
151
+ if (this.client === client) {
152
+ this.client = undefined;
153
+ }
154
+ });
155
+
156
+ try {
157
+ client.spawn({ command: agent.command, args: agent.args, cwd, env: agent.env });
158
+ await client.initialize(cwd);
159
+ } catch (err) {
160
+ client.dispose();
161
+ throw err;
162
+ }
163
+
164
+ this.client = client;
165
+ this.postStatus(`Connected to ${agent.name}`);
166
+ }
167
+
168
+ private handleUpdate(update: SessionUpdate): void {
169
+ const inner = update.update;
170
+ if (!inner || typeof inner.sessionUpdate !== "string") {
171
+ return;
172
+ }
173
+ switch (inner.sessionUpdate) {
174
+ case "agent_message_chunk":
175
+ this.post({ type: "assistant", text: this.contentText(inner.content) });
176
+ break;
177
+ case "agent_thought_chunk":
178
+ this.post({ type: "thought", text: this.contentText(inner.content) });
179
+ break;
180
+ case "tool_call":
181
+ case "tool_call_update":
182
+ this.post({
183
+ type: "tool",
184
+ title: (inner.title as string) ?? (inner.kind as string) ?? "tool",
185
+ status: (inner.status as string) ?? "",
186
+ toolCallId: inner.toolCallId as string | undefined
187
+ });
188
+ break;
189
+ default:
190
+ break;
191
+ }
192
+ }
193
+
194
+ private async handlePermission(request: PermissionRequest): Promise<PermissionResponse> {
195
+ const mode = permissionMode();
196
+ const options = request.options ?? [];
197
+ const allowOption = options.find((o) => /allow|yes|approve/i.test(o.name ?? o.optionId));
198
+ const denyOption = options.find((o) => /deny|no|reject|cancel/i.test(o.name ?? o.optionId));
199
+
200
+ if (mode === "allow" && allowOption) {
201
+ return { outcome: { outcome: "selected", optionId: allowOption.optionId } };
202
+ }
203
+ if (mode === "deny") {
204
+ return denyOption
205
+ ? { outcome: { outcome: "selected", optionId: denyOption.optionId } }
206
+ : { outcome: { outcome: "cancelled" } };
207
+ }
208
+
209
+ // prompt mode → ask the user
210
+ const label = this.permissionLabel(request);
211
+ if (options.length > 0) {
212
+ const choice = await vscode.window.showInformationMessage(
213
+ label,
214
+ { modal: true },
215
+ ...options.map((o) => o.name ?? o.optionId)
216
+ );
217
+ if (!choice) {
218
+ return { outcome: { outcome: "cancelled" } };
219
+ }
220
+ const selected = options.find((o) => (o.name ?? o.optionId) === choice);
221
+ return selected
222
+ ? { outcome: { outcome: "selected", optionId: selected.optionId } }
223
+ : { outcome: { outcome: "cancelled" } };
224
+ }
225
+
226
+ const choice = await vscode.window.showInformationMessage(
227
+ label,
228
+ { modal: true },
229
+ "Allow",
230
+ "Deny"
231
+ );
232
+ if (choice === "Allow" && allowOption) {
233
+ return { outcome: { outcome: "selected", optionId: allowOption.optionId } };
234
+ }
235
+ return { outcome: { outcome: "cancelled" } };
236
+ }
237
+
238
+ private permissionLabel(request: PermissionRequest): string {
239
+ const tc = request.toolCall as { title?: string; kind?: string } | undefined;
240
+ const what = tc?.title ?? tc?.kind ?? "perform an action";
241
+ return `The agent wants to ${what}. Allow?`;
242
+ }
243
+
244
+ private async readFile(params: { path: string }): Promise<string> {
245
+ const uri = this.resolveUri(params.path);
246
+ const bytes = await vscode.workspace.fs.readFile(uri);
247
+ return Buffer.from(bytes).toString("utf8");
248
+ }
249
+
250
+ private async writeFile(params: { path: string; content: string }): Promise<void> {
251
+ const uri = this.resolveUri(params.path);
252
+ await vscode.workspace.fs.writeFile(uri, Buffer.from(params.content, "utf8"));
253
+ }
254
+
255
+ private resolveUri(p: string): vscode.Uri {
256
+ if (p.startsWith("/") || /^[a-zA-Z]:[\\/]/.test(p)) {
257
+ return vscode.Uri.file(p);
258
+ }
259
+ const folder = vscode.workspace.workspaceFolders?.[0];
260
+ if (folder) {
261
+ return vscode.Uri.joinPath(folder.uri, p);
262
+ }
263
+ return vscode.Uri.file(p);
264
+ }
265
+
266
+ private workspaceFolder(): string {
267
+ return vscode.workspace.workspaceFolders?.[0]?.uri.fsPath ?? process.cwd();
268
+ }
269
+
270
+ private contentText(content: unknown): string {
271
+ if (typeof content === "string") {
272
+ return content;
273
+ }
274
+ if (content && typeof content === "object") {
275
+ const c = content as { type?: string; text?: string };
276
+ if (c.type === "text" && typeof c.text === "string") {
277
+ return c.text;
278
+ }
279
+ }
280
+ return "";
281
+ }
282
+
283
+ private post(message: Record<string, unknown>): void {
284
+ void this.view?.webview.postMessage(message);
285
+ }
286
+
287
+ private postStatus(text: string): void {
288
+ this.post({ type: "status", text });
289
+ }
290
+
291
+ private postError(text: string): void {
292
+ this.post({ type: "error", text });
293
+ }
294
+
295
+ private disposeClient(): void {
296
+ this.client?.dispose();
297
+ this.client = undefined;
298
+ }
299
+
300
+ private getHtml(webview: vscode.Webview): string {
301
+ const nonce = getNonce();
302
+ const scriptUri = webview.asWebviewUri(
303
+ vscode.Uri.joinPath(this.context.extensionUri, "media", "main.js")
304
+ );
305
+ const styleUri = webview.asWebviewUri(
306
+ vscode.Uri.joinPath(this.context.extensionUri, "media", "main.css")
307
+ );
308
+ const csp = [
309
+ `default-src 'none'`,
310
+ `style-src ${webview.cspSource}`,
311
+ `script-src 'nonce-${nonce}'`,
312
+ `font-src ${webview.cspSource}`
313
+ ].join("; ");
314
+
315
+ return /* html */ `<!DOCTYPE html>
316
+<html lang="en">
317
+<head>
318
+ <meta charset="UTF-8" />
319
+ <meta http-equiv="Content-Security-Policy" content="${csp}" />
320
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
321
+ <link href="${styleUri}" rel="stylesheet" />
322
+ <title>siGit Chat</title>
323
+</head>
324
+<body>
325
+ <div id="messages" class="messages"></div>
326
+ <div id="status" class="status"></div>
327
+ <form id="composer" class="composer">
328
+ <textarea id="input" class="input" rows="2" placeholder="Ask the on-device agent…"></textarea>
329
+ <button id="send" class="send" type="submit">Send</button>
330
+ </form>
331
+ <script nonce="${nonce}" src="${scriptUri}"></script>
332
+</body>
333
+</html>`;
334
+ }
335
+}
336
+
337
+function getNonce(): string {
338
+ const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
339
+ let text = "";
340
+ for (let i = 0; i < 32; i++) {
341
+ text += chars.charAt(Math.floor(Math.random() * chars.length));
342
+ }
343
+ return text;
344
+}
src/extension.ts
new
+26
@@ -0,0 +1,26 @@
1
+import * as vscode from "vscode";
2
+import { ChatViewProvider } from "./chatView";
3
+
4
+export function activate(context: vscode.ExtensionContext): void {
5
+ const provider = new ChatViewProvider(context);
6
+
7
+ context.subscriptions.push(
8
+ vscode.window.registerWebviewViewProvider(ChatViewProvider.viewType, provider, {
9
+ webviewOptions: { retainContextWhenHidden: true }
10
+ })
11
+ );
12
+
13
+ context.subscriptions.push(
14
+ vscode.commands.registerCommand("sigit.openChat", async () => {
15
+ await vscode.commands.executeCommand("sigit.chat.focus");
16
+ provider.reveal();
17
+ }),
18
+ vscode.commands.registerCommand("sigit.newSession", () => provider.newSession()),
19
+ vscode.commands.registerCommand("sigit.selectAgent", () => provider.selectAgent()),
20
+ vscode.commands.registerCommand("sigit.restartAgent", () => provider.restart())
21
+ );
22
+}
23
+
24
+export function deactivate(): void {
25
+ // Resources are tied to context.subscriptions and disposed automatically.
26
+}
tsconfig.json
new
+17
@@ -0,0 +1,17 @@
1
+{
2
+ "compilerOptions": {
3
+ "module": "Node16",
4
+ "moduleResolution": "Node16",
5
+ "target": "ES2022",
6
+ "lib": ["ES2022"],
7
+ "outDir": "dist",
8
+ "rootDir": "src",
9
+ "sourceMap": true,
10
+ "strict": true,
11
+ "esModuleInterop": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "skipLibCheck": true
14
+ },
15
+ "include": ["src"],
16
+ "exclude": ["node_modules", "dist"]
17
+}