From 219c28064407147b2e9364ec3da8b86b819b179d Mon Sep 17 00:00:00 2001 From: Palash Shah <35114859+Palashio@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:21:28 -0400 Subject: [PATCH] feat: add initial updates to create cli (#469) * open swe cli: initial cli updates * openswe cli: add working authentication * open swe cli: remove unecessary console log statements * openswe cli: typescript modifications * openswe cli: updates to formats * openswe cli: updates to formatting * openswe cli: ran prettier * openswe cli: update urls * openswe cli: update eslint * openswe cli: add env example * Update apps/cli/package.json --------- Co-authored-by: Brace Sproul --- apps/cli/.env.example | 12 + apps/cli/eslint.config.js | 41 ++ apps/cli/package.json | 46 +++ apps/cli/src/TerminalInterface.tsx | 42 ++ apps/cli/src/auth-server.ts | 114 ++++++ apps/cli/src/index.tsx | 161 ++++++++ apps/cli/tsconfig.json | 15 + yarn.lock | 618 ++++++++++++++++++++++++++++- 8 files changed, 1037 insertions(+), 12 deletions(-) create mode 100644 apps/cli/.env.example create mode 100644 apps/cli/eslint.config.js create mode 100644 apps/cli/package.json create mode 100644 apps/cli/src/TerminalInterface.tsx create mode 100644 apps/cli/src/auth-server.ts create mode 100644 apps/cli/src/index.tsx create mode 100644 apps/cli/tsconfig.json diff --git a/apps/cli/.env.example b/apps/cli/.env.example new file mode 100644 index 00000000..bc5d4e89 --- /dev/null +++ b/apps/cli/.env.example @@ -0,0 +1,12 @@ +GITHUB_CLIENT_ID="" +GITHUB_CLIENT_SECRET="" +GITHUB_CALLBACK_URL="" +GITHUB_LOGIN_URL="" +GITHUB_ACCESS_TOKEN_LOGIN_LINK= +GITHUB_APP_NAME="open-swe-dev" +GITHUB_APP_ID="" +GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +...add your private key here... +-----END RSA PRIVATE KEY----- +" +SECRETS_ENCRYPTION_KEY="" \ No newline at end of file diff --git a/apps/cli/eslint.config.js b/apps/cli/eslint.config.js new file mode 100644 index 00000000..99c13d44 --- /dev/null +++ b/apps/cli/eslint.config.js @@ -0,0 +1,41 @@ +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; + +export default [ + js.configs.recommended, + { + files: ["**/*.{ts,tsx}"], + languageOptions: { + parser: tsParser, + ecmaVersion: 2020, + globals: { + ...globals.node, + ...globals.browser, + }, + }, + plugins: { + "@typescript-eslint": tseslint, + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "@typescript-eslint/no-explicit-any": 0, + "@typescript-eslint/no-unused-vars": [ + "error", + { args: "none", argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, + ], + "react-refresh/only-export-components": [ + "warn", + { allowConstantExport: true }, + ], + }, + }, + { + ignores: ["dist"], + }, +]; diff --git a/apps/cli/package.json b/apps/cli/package.json new file mode 100644 index 00000000..7664fa3d --- /dev/null +++ b/apps/cli/package.json @@ -0,0 +1,46 @@ +{ + "name": "@open-swe/cli", + "version": "0.0.0", + "license": "MIT", + "private": true, + "type": "module", + "main": "index.js", + "scripts": { + "clean": "rm -rf ./dist .turbo || true", + "build": "yarn clean && tsc", + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "format": "prettier --write .", + "format:check": "prettier --check .", + "test": "echo \"Error: no test specified\" && exit 1", + "dev": "tsx src/index.tsx" + }, + "dependencies": { + "dotenv": "^16.6.1", + "express": "^4.18.2", + "ink": "^6.0.1", + "keytar": "^7.9.0", + "node-fetch": "^2.6.7", + "open": "^9.1.0", + "react": "^19.1.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.19.0", + "@tsconfig/recommended": "^1.0.8", + "@types/express": "^4.17.21", + "@types/node": "^22.13.5", + "@types/node-fetch": "^2.6.4", + "@types/react": "^19.1.8", + "@typescript-eslint/eslint-plugin": "^8.38.0", + "@typescript-eslint/parser": "^8.38.0", + "eslint": "^9.19.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-no-instanceof": "^1.0.1", + "eslint-plugin-prettier": "^4.2.1", + "prettier": "^3.5.2", + "typescript": "^5.8.3" + }, + "packageManager": "yarn@3.5.1" +} diff --git a/apps/cli/src/TerminalInterface.tsx b/apps/cli/src/TerminalInterface.tsx new file mode 100644 index 00000000..5cc66278 --- /dev/null +++ b/apps/cli/src/TerminalInterface.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { Box, Text } from "ink"; + +interface TerminalInterfaceProps { + message: string | null; + setMessage: () => void; + CustomInput: React.FC<{ onSubmit: () => void }>; +} + +const TerminalInterface: React.FC = ({ + message, + setMessage, + CustomInput, +}) => { + return ( + + + LangChain Open SWE CLI + + + Describe your coding task in as much detail as possible... + + + + + {message && ( + + You typed: {message} + + )} + + ); +}; + +export default TerminalInterface; diff --git a/apps/cli/src/auth-server.ts b/apps/cli/src/auth-server.ts new file mode 100644 index 00000000..0b6b80ad --- /dev/null +++ b/apps/cli/src/auth-server.ts @@ -0,0 +1,114 @@ +import "dotenv/config"; +import express from "express"; +import type { Request, Response } from "express"; +import fs from "fs"; +import os from "os"; +import path from "path"; + +const CLIENT_ID = process.env.GITHUB_CLIENT_ID || ""; +const CLIENT_SECRET = process.env.GITHUB_CLIENT_SECRET || ""; +const PORT = 3000; +const CALLBACK_URL = "http://localhost:3000/api/auth/github/callback"; + +const TOKEN_PATH = path.join( + os.homedir(), + ".open-swe-cli", + "github_token.json", +); + +let accessToken: string | null = null; + +interface GitHubTokenResponse { + access_token?: string; + token_type?: string; + scope?: string; + error?: string; + error_description?: string; + error_uri?: string; +} + +function saveToken(tokenData: GitHubTokenResponse) { + const dir = path.dirname(TOKEN_PATH); + try { + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true, mode: 0o700 }); + } + fs.writeFileSync(TOKEN_PATH, JSON.stringify(tokenData, null, 2), { + mode: 0o600, + }); + } catch (err) { + console.error("Failed to save token:", err); + } +} + +function loadToken() { + try { + if (fs.existsSync(TOKEN_PATH)) { + return JSON.parse(fs.readFileSync(TOKEN_PATH, "utf8")); + } + } catch (err) { + console.error("Failed to load token:", err); + } + return null; +} + +const app = express(); + +// 1. Start OAuth flow +app.get("/api/auth/github/login", (_req: Request, res: Response) => { + const state = Math.random().toString(36).substring(2); + const baseGithubAuthUrl = "https://github.com/login/oauth/authorize"; + const url = new URL(baseGithubAuthUrl); + url.searchParams.set("client_id", CLIENT_ID); + url.searchParams.set("redirect_uri", CALLBACK_URL); + url.searchParams.set("state", state); + return res.redirect(url.toString()); +}); + +// 2. Handle OAuth callback +app.get("/api/auth/github/callback", async (req: Request, res: Response) => { + const code = req.query.code as string; + // Optionally validate state here + if (!code) { + return res.status(400).send("Missing code parameter"); + } + const GITHUB_ACCESS_TOKEN_LOGIN_LINK = + process.env.GITHUB_ACCESS_TOKEN_LOGIN_LINK || + "https://github.com/login/oauth/access_token"; + // Exchange code for access token + const tokenRes = await fetch(GITHUB_ACCESS_TOKEN_LOGIN_LINK, { + method: "POST", + headers: { Accept: "application/json", "Content-Type": "application/json" }, + body: JSON.stringify({ + client_id: CLIENT_ID, + client_secret: CLIENT_SECRET, + code, + redirect_uri: CALLBACK_URL, + }), + }); + const tokenData = await tokenRes.json(); + if (tokenData.error) { + return res + .status(400) + .send("Error exchanging code for token: " + tokenData.error); + } + accessToken = tokenData.access_token; + // Store the token in a config file + try { + saveToken(tokenData); + } catch (err) { + console.error("Failed to store token in config file:", err); + } + return res.send("Authentication successful! You can close this window."); +}); + +export function startAuthServer() { + app.listen(PORT, () => {}); +} + +export function getAccessToken() { + // Try to get from memory first, then from config file + if (accessToken) return accessToken; + const tokenData = loadToken(); + return tokenData ? tokenData.access_token : null; +} diff --git a/apps/cli/src/index.tsx b/apps/cli/src/index.tsx new file mode 100644 index 00000000..98b607fe --- /dev/null +++ b/apps/cli/src/index.tsx @@ -0,0 +1,161 @@ +#!/usr/bin/env node +import React, { useState, useEffect } from "react"; +import { render, Box, Text, useInput } from "ink"; +import { startAuthServer, getAccessToken } from "./auth-server.js"; +import open from "open"; +import TerminalInterface from "./TerminalInterface.js"; + +const GITHUB_LOGIN_URL = + process.env.GITHUB_LOGIN_URL || "http://localhost:3000/api/auth/github/login"; + +const CustomInput: React.FC<{ onSubmit: () => void }> = ({ onSubmit }) => { + const [input, setInput] = useState(""); + const [isSubmitted, setIsSubmitted] = useState(false); + + useInput((inputChar, key) => { + if (isSubmitted) return; + if (key.return) { + setIsSubmitted(true); + onSubmit(); + } else if (key.backspace || key.delete) { + setInput((prev) => prev.slice(0, -1)); + } else if (inputChar) { + setInput((prev) => prev + inputChar); + } + }); + + if (isSubmitted) return null; + + return ( + + > {input} + + ); +}; + +const App: React.FC = () => { + const [authPrompt, setAuthPrompt] = useState(null); + const [authInput, setAuthInput] = useState(""); + const [message, setMessage] = useState(null); + const [exit, setExit] = useState(false); + const [authStarted, setAuthStarted] = useState(false); + const [isLoggedIn, setIsLoggedIn] = useState(false); + + // On mount, check for existing token + useEffect(() => { + const token = getAccessToken(); + if (token) { + setIsLoggedIn(true); + } + }, []); + + // Poll for token after auth flow starts + useEffect(() => { + if (authStarted && !isLoggedIn) { + const interval = setInterval(() => { + const token = getAccessToken(); + if (token) { + setIsLoggedIn(true); + clearInterval(interval); + } + }, 1000); + return () => clearInterval(interval); + } + }, [authStarted, isLoggedIn]); + + // Handle yes/no input for auth prompt + useInput((input, key) => { + if (authPrompt === null && !isLoggedIn) { + if (key.return) { + if (authInput.toLowerCase() === "y") { + setAuthPrompt(true); + } else if (authInput.toLowerCase() === "n") { + setAuthPrompt(false); + setExit(true); + } + } else if (key.backspace || key.delete) { + setAuthInput((prev) => prev.slice(0, -1)); + } else if (input && authInput.length < 1) { + // Only allow a single character (y/n) + setAuthInput(input); + } + } + }); + + // Exit the process safely after render + useEffect(() => { + if (exit) { + process.exit(0); + } + }, [exit]); + + // Start auth server and open browser when user says yes + useEffect(() => { + if (authPrompt === true && !authStarted) { + setAuthStarted(true); + startAuthServer(); + open(GITHUB_LOGIN_URL); + } + }, [authPrompt, authStarted]); + + if (isLoggedIn) { + return ( + + setMessage(null)} + CustomInput={CustomInput} + /> + + + + logged in + + + + ); + } + + if (authPrompt === null) { + return ( + + + + LangChain Open SWE CLI + + + + + Do you want to start the GitHub authentication flow? (y/n){" "} + {authInput} + + + + ); + } + + return ( + + + + LangChain Open SWE CLI + + + {!message && setMessage(null)} />} + {message && ( + + You typed: {message} + + )} + + ); +}; + +render(); diff --git a/apps/cli/tsconfig.json b/apps/cli/tsconfig.json new file mode 100644 index 00000000..03bcff17 --- /dev/null +++ b/apps/cli/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "Node16", + "moduleResolution": "node16", + "rootDir": "src", + "outDir": "dist", + "jsx": "react-jsx", + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true + }, + "include": ["src"] +} diff --git a/yarn.lock b/yarn.lock index 3617bae7..0e7ab1d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4135,6 +4135,36 @@ __metadata: languageName: unknown linkType: soft +"@open-swe/cli@workspace:apps/cli": + version: 0.0.0-use.local + resolution: "@open-swe/cli@workspace:apps/cli" + dependencies: + "@eslint/eslintrc": ^3.1.0 + "@eslint/js": ^9.19.0 + "@tsconfig/recommended": ^1.0.8 + "@types/express": ^4.17.21 + "@types/node": ^22.13.5 + "@types/node-fetch": ^2.6.4 + "@types/react": ^19.1.8 + "@typescript-eslint/eslint-plugin": ^8.38.0 + "@typescript-eslint/parser": ^8.38.0 + dotenv: ^16.6.1 + eslint: ^9.19.0 + eslint-config-prettier: ^8.8.0 + eslint-plugin-import: ^2.27.5 + eslint-plugin-no-instanceof: ^1.0.1 + eslint-plugin-prettier: ^4.2.1 + express: ^4.18.2 + ink: ^6.0.1 + keytar: ^7.9.0 + node-fetch: ^2.6.7 + open: ^9.1.0 + prettier: ^3.5.2 + react: ^19.1.0 + typescript: ^5.8.3 + languageName: unknown + linkType: soft + "@open-swe/docs@workspace:apps/docs": version: 0.0.0-use.local resolution: "@open-swe/docs@workspace:apps/docs" @@ -6655,6 +6685,16 @@ __metadata: languageName: node linkType: hard +"@types/body-parser@npm:*": + version: 1.19.6 + resolution: "@types/body-parser@npm:1.19.6" + dependencies: + "@types/connect": "*" + "@types/node": "*" + checksum: 33041e88eae00af2cfa0827e951e5f1751eafab2a8b6fce06cd89ef368a988907996436b1325180edaeddd1c0c7d0d0d4c20a6c9ff294a91e0039a9db9e9b658 + languageName: node + linkType: hard + "@types/chai@npm:^5.2.2": version: 5.2.2 resolution: "@types/chai@npm:5.2.2" @@ -6664,6 +6704,15 @@ __metadata: languageName: node linkType: hard +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "*" + checksum: 7eb1bc5342a9604facd57598a6c62621e244822442976c443efb84ff745246b10d06e8b309b6e80130026a396f19bf6793b7cecd7380169f369dac3bfc46fb99 + languageName: node + linkType: hard + "@types/cookie@npm:^0.6.0": version: 0.6.0 resolution: "@types/cookie@npm:0.6.0" @@ -6790,6 +6839,30 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^4.17.33": + version: 4.19.6 + resolution: "@types/express-serve-static-core@npm:4.19.6" + dependencies: + "@types/node": "*" + "@types/qs": "*" + "@types/range-parser": "*" + "@types/send": "*" + checksum: b0576eddc2d25ccdf10e68ba09598b87a4d7b2ad04a81dc847cb39fe56beb0b6a5cc017b1e00aa0060cb3b38e700384ce96d291a116a0f1e54895564a104aae9 + languageName: node + linkType: hard + +"@types/express@npm:^4.17.21": + version: 4.17.23 + resolution: "@types/express@npm:4.17.23" + dependencies: + "@types/body-parser": "*" + "@types/express-serve-static-core": ^4.17.33 + "@types/qs": "*" + "@types/serve-static": "*" + checksum: f1a020c6ad6dc0169a3277199605d60649d463a72c920673e0f230ab1e76f2d3aa23daabd25ef8e62eda314e26b879306c58ec806e669e1e40ca37a4b73a44b0 + languageName: node + linkType: hard + "@types/graceful-fs@npm:^4.1.3": version: 4.1.9 resolution: "@types/graceful-fs@npm:4.1.9" @@ -6824,6 +6897,13 @@ __metadata: languageName: node linkType: hard +"@types/http-errors@npm:*": + version: 2.0.5 + resolution: "@types/http-errors@npm:2.0.5" + checksum: a88da669366bc483e8f3b3eb3d34ada5f8d13eeeef851b1204d77e2ba6fc42aba4566d877cca5c095204a3f4349b87fe397e3e21288837bdd945dd514120755b + languageName: node + linkType: hard + "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" @@ -6913,6 +6993,13 @@ __metadata: languageName: node linkType: hard +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: e29a5f9c4776f5229d84e525b7cd7dd960b51c30a0fb9a028c0821790b82fca9f672dab56561e2acd9e8eed51d431bde52eafdfef30f643586c4162f1aecfc78 + languageName: node + linkType: hard + "@types/ms@npm:*": version: 2.1.0 resolution: "@types/ms@npm:2.1.0" @@ -6929,6 +7016,16 @@ __metadata: languageName: node linkType: hard +"@types/node-fetch@npm:^2.6.4": + version: 2.6.12 + resolution: "@types/node-fetch@npm:2.6.12" + dependencies: + "@types/node": "*" + form-data: ^4.0.0 + checksum: 9647e68f9a125a090220c38d77b3c8e669c488658ae7506f1b4f9568214beba087624b1705bba1dc76649a65281ce3fd5b400e15266cbef8088027fb88777557 + languageName: node + linkType: hard + "@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=13.7.0": version: 24.0.14 resolution: "@types/node@npm:24.0.14" @@ -6954,6 +7051,20 @@ __metadata: languageName: node linkType: hard +"@types/qs@npm:*": + version: 6.14.0 + resolution: "@types/qs@npm:6.14.0" + checksum: 1909205514d22b3cbc7c2314e2bd8056d5f05dfb21cf4377f0730ee5e338ea19957c41735d5e4806c746176563f50005bbab602d8358432e25d900bdf4970826 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 95640233b689dfbd85b8c6ee268812a732cf36d5affead89e806fe30da9a430767af8ef2cd661024fd97e19d61f3dec75af2df5e80ec3bea000019ab7028629a + languageName: node + linkType: hard + "@types/react-dom@npm:^19.0.3": version: 19.1.6 resolution: "@types/react-dom@npm:19.1.6" @@ -6972,7 +7083,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^19.0.8": +"@types/react@npm:*, @types/react@npm:^19.0.8, @types/react@npm:^19.1.8": version: 19.1.8 resolution: "@types/react@npm:19.1.8" dependencies: @@ -6988,6 +7099,27 @@ __metadata: languageName: node linkType: hard +"@types/send@npm:*": + version: 0.17.5 + resolution: "@types/send@npm:0.17.5" + dependencies: + "@types/mime": ^1 + "@types/node": "*" + checksum: bff5add75eb178c3b80bebc422db483c76eeb2cb5016508c952e4fc67d968794f9c709b978d086bf60e4d6fbfe8c0b77e99a7603a615c671c1f97f808458d4a8 + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.15.8 + resolution: "@types/serve-static@npm:1.15.8" + dependencies: + "@types/http-errors": "*" + "@types/node": "*" + "@types/send": "*" + checksum: 41e0fb40bfdf3b5c2ac997c5dd5d58af9229e6a325dab1cf5f73b488b09635d933c1aa6f0e3265d6df8b45be0d09af36a9ffe90175088726f1db6bf104bf9ecf + languageName: node + linkType: hard + "@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -7097,6 +7229,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:^8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.38.0" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.38.0 + "@typescript-eslint/type-utils": 8.38.0 + "@typescript-eslint/utils": 8.38.0 + "@typescript-eslint/visitor-keys": 8.38.0 + graphemer: ^1.4.0 + ignore: ^7.0.0 + natural-compare: ^1.4.0 + ts-api-utils: ^2.1.0 + peerDependencies: + "@typescript-eslint/parser": ^8.38.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 7c9a584c413fe868c75b20eeb65ef82e98fce3129875b78ccf5e459b2a64532a0d582ade73b9f3ff5902e7d185e2f41f515332cc58b54644fe50b817b9a4d943 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:8.37.0, @typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": version: 8.37.0 resolution: "@typescript-eslint/parser@npm:8.37.0" @@ -7113,6 +7266,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:^8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/parser@npm:8.38.0" + dependencies: + "@typescript-eslint/scope-manager": 8.38.0 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/typescript-estree": 8.38.0 + "@typescript-eslint/visitor-keys": 8.38.0 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 8964da26cef76509c4c6015ccf3eff3ab837676adb5fbe8da5ac6d95b08ddbf1c66946c9ce29c0e3b05fa9942632d7cd10c8376a073fbfdbfeb07f32a0d83336 + languageName: node + linkType: hard + "@typescript-eslint/project-service@npm:8.37.0": version: 8.37.0 resolution: "@typescript-eslint/project-service@npm:8.37.0" @@ -7126,6 +7295,19 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/project-service@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/project-service@npm:8.38.0" + dependencies: + "@typescript-eslint/tsconfig-utils": ^8.38.0 + "@typescript-eslint/types": ^8.38.0 + debug: ^4.3.4 + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 8d2466fd0efe2e0328416322d968f2274a1678e7435f58879a282187c28831162f5c5c41223702cfb38700dede295b98b2792f22ce5834344999fc652d519fd2 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.37.0": version: 8.37.0 resolution: "@typescript-eslint/scope-manager@npm:8.37.0" @@ -7136,6 +7318,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/scope-manager@npm:8.38.0" + dependencies: + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/visitor-keys": 8.38.0 + checksum: a70e1bf0e227abe45ddb330747e5241710aee419a2bf05d369231bb5b27d88cf9bfdb1dc4233a38d5ec62dfe1d6eeba642eca31d0d6ed12966366e0f5f29b6ff + languageName: node + linkType: hard + "@typescript-eslint/tsconfig-utils@npm:8.37.0, @typescript-eslint/tsconfig-utils@npm:^8.37.0": version: 8.37.0 resolution: "@typescript-eslint/tsconfig-utils@npm:8.37.0" @@ -7145,6 +7337,15 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/tsconfig-utils@npm:8.38.0, @typescript-eslint/tsconfig-utils@npm:^8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.38.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: e1c80d2a4bd50edc5c1da418bd11cf67fc10e55fc9e2e937df2799c44de7f48739c7821c0579a3b92658e50eb75e341ab89610e952ea28b7deb901219235821c + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.37.0": version: 8.37.0 resolution: "@typescript-eslint/type-utils@npm:8.37.0" @@ -7161,6 +7362,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/type-utils@npm:8.38.0" + dependencies: + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/typescript-estree": 8.38.0 + "@typescript-eslint/utils": 8.38.0 + debug: ^4.3.4 + ts-api-utils: ^2.1.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: af6931ca64d99c41365c563f32e5e9062465d76d3ff64263749b8b78ca4307eb59e8e0a3ded5854827df21ce6273cf534e560c25f05f4c6f18ce3a6024ed0dda + languageName: node + linkType: hard + "@typescript-eslint/types@npm:8.37.0, @typescript-eslint/types@npm:^8.37.0": version: 8.37.0 resolution: "@typescript-eslint/types@npm:8.37.0" @@ -7168,6 +7385,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.38.0, @typescript-eslint/types@npm:^8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/types@npm:8.38.0" + checksum: 66c293e0e7bec90a94c9622197c373dfa9b3427ff568d81ffe47b8f95198ec599e1bc39b28464f91674a621bca0324628ece236837493d5401cc86562ae74e29 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.37.0": version: 8.37.0 resolution: "@typescript-eslint/typescript-estree@npm:8.37.0" @@ -7188,6 +7412,26 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.38.0" + dependencies: + "@typescript-eslint/project-service": 8.38.0 + "@typescript-eslint/tsconfig-utils": 8.38.0 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/visitor-keys": 8.38.0 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^2.1.0 + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 3acb587458247577bfbae2069c381bb9ac37fcd121fb6a9d3e911167a8a1d9dbffb377d9ab32cec93cfd61acd075c80a037c7152ab0c91ebfc0b3305de10b73a + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:8.37.0": version: 8.37.0 resolution: "@typescript-eslint/utils@npm:8.37.0" @@ -7203,6 +7447,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/utils@npm:8.38.0" + dependencies: + "@eslint-community/eslint-utils": ^4.7.0 + "@typescript-eslint/scope-manager": 8.38.0 + "@typescript-eslint/types": 8.38.0 + "@typescript-eslint/typescript-estree": 8.38.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: cef57b6ff702f6caa9d5fde1390f27191cdb2e2587cb6cbad0135359b2232f70116e57ef8f643c0d72908cfb56ff3b6d03d11e8dddc657afbe277745a9842c50 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.37.0": version: 8.37.0 resolution: "@typescript-eslint/visitor-keys@npm:8.37.0" @@ -7213,6 +7472,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.38.0": + version: 8.38.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.38.0" + dependencies: + "@typescript-eslint/types": 8.38.0 + eslint-visitor-keys: ^4.2.1 + checksum: d6e5f1e7595acc53c24e238cd6f947c386f64ed535e914068e67371bf595e6e419687754ea712eb370a34ceaecdc35a169c472bc9d5dcaf9a8b2cfab307e9486 + languageName: node + linkType: hard + "@typescript/vfs@npm:^1.6.0": version: 1.6.1 resolution: "@typescript/vfs@npm:1.6.1" @@ -8146,6 +8415,13 @@ __metadata: languageName: node linkType: hard +"big-integer@npm:^1.6.44": + version: 1.6.52 + resolution: "big-integer@npm:1.6.52" + checksum: 6e86885787a20fed96521958ae9086960e4e4b5e74d04f3ef7513d4d0ad631a9f3bde2730fc8aaa4b00419fc865f6ec573e5320234531ef37505da7da192c40b + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0, binary-extensions@npm:^2.2.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" @@ -8153,6 +8429,17 @@ __metadata: languageName: node linkType: hard +"bl@npm:^4.0.3": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: ^5.5.0 + inherits: ^2.0.4 + readable-stream: ^3.4.0 + checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 + languageName: node + linkType: hard + "bl@npm:^5.0.0": version: 5.1.0 resolution: "bl@npm:5.1.0" @@ -8208,6 +8495,15 @@ __metadata: languageName: node linkType: hard +"bplist-parser@npm:^0.2.0": + version: 0.2.0 + resolution: "bplist-parser@npm:0.2.0" + dependencies: + big-integer: ^1.6.44 + checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.12 resolution: "brace-expansion@npm:1.1.12" @@ -8299,7 +8595,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.2.1": +"buffer@npm:^5.2.1, buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -8319,6 +8615,15 @@ __metadata: languageName: node linkType: hard +"bundle-name@npm:^3.0.0": + version: 3.0.0 + resolution: "bundle-name@npm:3.0.0" + dependencies: + run-applescript: ^5.0.0 + checksum: edf2b1fbe6096ed32e7566947ace2ea937ee427391744d7510a2880c4b9a5b3543d3f6c551236a29e5c87d3195f8e2912516290e638c15bcbede7b37cc375615 + languageName: node + linkType: hard + "bundle-name@npm:^4.1.0": version: 4.1.0 resolution: "bundle-name@npm:4.1.0" @@ -8579,6 +8884,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -9321,6 +9633,13 @@ __metadata: languageName: node linkType: hard +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -9335,6 +9654,16 @@ __metadata: languageName: node linkType: hard +"default-browser-id@npm:^3.0.0": + version: 3.0.0 + resolution: "default-browser-id@npm:3.0.0" + dependencies: + bplist-parser: ^0.2.0 + untildify: ^4.0.0 + checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 + languageName: node + linkType: hard + "default-browser-id@npm:^5.0.0": version: 5.0.0 resolution: "default-browser-id@npm:5.0.0" @@ -9342,6 +9671,18 @@ __metadata: languageName: node linkType: hard +"default-browser@npm:^4.0.0": + version: 4.0.0 + resolution: "default-browser@npm:4.0.0" + dependencies: + bundle-name: ^3.0.0 + default-browser-id: ^3.0.0 + execa: ^7.1.1 + titleize: ^3.0.0 + checksum: 40c5af984799042b140300be5639c9742599bda76dc9eba5ac9ad5943c83dd36cebc4471eafcfddf8e0ec817166d5ba89d56f08e66a126c7c7908a179cead1a7 + languageName: node + linkType: hard + "default-browser@npm:^5.2.1": version: 5.2.1 resolution: "default-browser@npm:5.2.1" @@ -9450,7 +9791,7 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.3, detect-libc@npm:^2.0.4": +"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.3, detect-libc@npm:^2.0.4": version: 2.0.4 resolution: "detect-libc@npm:2.0.4" checksum: 3d186b7d4e16965e10e21db596c78a4e131f9eee69c0081d13b85e6a61d7448d3ba23fe7997648022bdfa3b0eb4cc3c289a44c8188df949445a20852689abef6 @@ -9558,7 +9899,7 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.4.7": +"dotenv@npm:^16.4.7, dotenv@npm:^16.6.1": version: 16.6.1 resolution: "dotenv@npm:16.6.1" checksum: e8bd63c9a37f57934f7938a9cf35de698097fadf980cb6edb61d33b3e424ceccfe4d10f37130b904a973b9038627c2646a3365a904b4406514ea94d7f1816b69 @@ -9682,7 +10023,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0": +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" dependencies: @@ -10576,7 +10917,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^7.0.0": +"execa@npm:^7.0.0, execa@npm:^7.1.1": version: 7.2.0 resolution: "execa@npm:7.2.0" dependencies: @@ -10627,6 +10968,13 @@ __metadata: languageName: node linkType: hard +"expand-template@npm:^2.0.3": + version: 2.0.3 + resolution: "expand-template@npm:2.0.3" + checksum: 588c19847216421ed92befb521767b7018dc88f88b0576df98cb242f20961425e96a92cbece525ef28cc5becceae5d544ae0f5b9b5e2aa05acb13716ca5b3099 + languageName: node + linkType: hard + "expand-tilde@npm:^2.0.2": version: 2.0.2 resolution: "expand-tilde@npm:2.0.2" @@ -11233,6 +11581,13 @@ __metadata: languageName: node linkType: hard +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d + languageName: node + linkType: hard + "fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1, fs-extra@npm:^11.2.0": version: 11.3.0 resolution: "fs-extra@npm:11.3.0" @@ -11459,6 +11814,13 @@ __metadata: languageName: node linkType: hard +"github-from-package@npm:0.0.0": + version: 0.0.0 + resolution: "github-from-package@npm:0.0.0" + checksum: 14e448192a35c1e42efee94c9d01a10f42fe790375891a24b25261246ce9336ab9df5d274585aedd4568f7922246c2a78b8a8cd2571bfe99c693a9718e7dd0e3 + languageName: node + linkType: hard + "glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" @@ -12201,6 +12563,13 @@ __metadata: languageName: node linkType: hard +"ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 + languageName: node + linkType: hard + "ink-spinner@npm:^5.0.0": version: 5.0.0 resolution: "ink-spinner@npm:5.0.0" @@ -12254,6 +12623,47 @@ __metadata: languageName: node linkType: hard +"ink@npm:^6.0.1": + version: 6.0.1 + resolution: "ink@npm:6.0.1" + dependencies: + "@alcalzone/ansi-tokenize": ^0.1.3 + ansi-escapes: ^7.0.0 + ansi-styles: ^6.2.1 + auto-bind: ^5.0.1 + chalk: ^5.3.0 + cli-boxes: ^3.0.0 + cli-cursor: ^4.0.0 + cli-truncate: ^4.0.0 + code-excerpt: ^4.0.0 + es-toolkit: ^1.22.0 + indent-string: ^5.0.0 + is-in-ci: ^1.0.0 + patch-console: ^2.0.0 + react-reconciler: ^0.32.0 + scheduler: ^0.23.0 + signal-exit: ^3.0.7 + slice-ansi: ^7.1.0 + stack-utils: ^2.0.6 + string-width: ^7.2.0 + type-fest: ^4.27.0 + widest-line: ^5.0.0 + wrap-ansi: ^9.0.0 + ws: ^8.18.0 + yoga-layout: ~3.2.1 + peerDependencies: + "@types/react": ">=19.0.0" + react: ">=19.0.0" + react-devtools-core: ^4.19.1 + peerDependenciesMeta: + "@types/react": + optional: true + react-devtools-core: + optional: true + checksum: 95fa6cd8a96b72ed72c48f0698fa877ed9838fff6a1dbadc0358874dcb382bdb3db86ec581e33168328fdaf8fa201a4975ba25074cfe4d68fd51c149d09a75c2 + languageName: node + linkType: hard + "inline-style-parser@npm:0.2.4": version: 0.2.4 resolution: "inline-style-parser@npm:0.2.4" @@ -13649,6 +14059,17 @@ __metadata: languageName: node linkType: hard +"keytar@npm:^7.9.0": + version: 7.9.0 + resolution: "keytar@npm:7.9.0" + dependencies: + node-addon-api: ^4.3.0 + node-gyp: latest + prebuild-install: ^7.0.1 + checksum: 4dbdd21f69e21a53032cbc949847f57338e42df763c5eec04e1b5d7142a689f95d8c3d74fb3b7dc321b5d678271d8d8d1a0dcaa919673ebc50ef8ce76f354e21 + languageName: node + linkType: hard + "keyv@npm:^4.5.3, keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -15138,7 +15559,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -15257,6 +15678,13 @@ __metadata: languageName: node linkType: hard +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -15372,6 +15800,13 @@ __metadata: languageName: node linkType: hard +"napi-build-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "napi-build-utils@npm:2.0.0" + checksum: 532121efd2dd2272595580bca48859e404bdd4ed455a72a28432ba44868c38d0e64fac3026a8f82bf8563d2a18b32eb9a1d59e601a9da4e84ba4d45b922297f5 + languageName: node + linkType: hard + "napi-postinstall@npm:^0.3.0": version: 0.3.0 resolution: "napi-postinstall@npm:0.3.0" @@ -15561,6 +15996,24 @@ __metadata: languageName: node linkType: hard +"node-abi@npm:^3.3.0": + version: 3.75.0 + resolution: "node-abi@npm:3.75.0" + dependencies: + semver: ^7.3.5 + checksum: b86021c748b316b31efda4f1f4a74db9fd411b0ae63fa50be5b0247546285ae7e31c737e92013478877eaf39a3fd0a06072d48b1cace21ad629862373410416f + languageName: node + linkType: hard + +"node-addon-api@npm:^4.3.0": + version: 4.3.0 + resolution: "node-addon-api@npm:4.3.0" + dependencies: + node-gyp: latest + checksum: 3de396e23cc209f539c704583e8e99c148850226f6e389a641b92e8967953713228109f919765abc1f4355e801e8f41842f96210b8d61c7dcc10a477002dcf00 + languageName: node + linkType: hard + "node-domexception@npm:^1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" @@ -15582,7 +16035,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.7.0": +"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.7, node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -15902,6 +16355,18 @@ __metadata: languageName: node linkType: hard +"open@npm:^9.1.0": + version: 9.1.0 + resolution: "open@npm:9.1.0" + dependencies: + default-browser: ^4.0.0 + define-lazy-prop: ^3.0.0 + is-inside-container: ^1.0.0 + is-wsl: ^2.2.0 + checksum: 3993c0f61d51fed8ac290e99c9c3cf45d3b6cfb3e2aa2b74cafd312c3486c22fd81df16ac8f3ab91dd8a4e3e729a16fc2480cfc406c4833416cf908acf1ae7c9 + languageName: node + linkType: hard + "openai@npm:^5.3.0": version: 5.10.1 resolution: "openai@npm:5.10.1" @@ -16532,6 +16997,28 @@ __metadata: languageName: node linkType: hard +"prebuild-install@npm:^7.0.1": + version: 7.1.3 + resolution: "prebuild-install@npm:7.1.3" + dependencies: + detect-libc: ^2.0.0 + expand-template: ^2.0.3 + github-from-package: 0.0.0 + minimist: ^1.2.3 + mkdirp-classic: ^0.5.3 + napi-build-utils: ^2.0.0 + node-abi: ^3.3.0 + pump: ^3.0.0 + rc: ^1.2.7 + simple-get: ^4.0.0 + tar-fs: ^2.0.0 + tunnel-agent: ^0.6.0 + bin: + prebuild-install: bin.js + checksum: 300740ca415e9ddbf2bd363f1a6d2673cc11dd0665c5ec431bbb5bf024c2f13c56791fb939ce2b2a2c12f2d2a09c91316169e8063a80eb4482a44b8fe5b265e1 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -16922,6 +17409,20 @@ __metadata: languageName: node linkType: hard +"rc@npm:^1.2.7": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + languageName: node + linkType: hard + "react-dom@npm:^19.0.0": version: 19.1.0 resolution: "react-dom@npm:19.1.0" @@ -16981,6 +17482,17 @@ __metadata: languageName: node linkType: hard +"react-reconciler@npm:^0.32.0": + version: 0.32.0 + resolution: "react-reconciler@npm:0.32.0" + dependencies: + scheduler: ^0.26.0 + peerDependencies: + react: ^19.1.0 + checksum: 47dd7ec683cb48ddb6eb71c04847b3df6a43808e6a81249ef3db5b2603e2eb3095f75272fadf0d50560c0d88c9dac7b5e4ff45fbc5eadaab810c84d13deb247b + languageName: node + linkType: hard + "react-remove-scroll-bar@npm:^2.3.7": version: 2.3.8 resolution: "react-remove-scroll-bar@npm:2.3.8" @@ -17086,14 +17598,14 @@ __metadata: languageName: node linkType: hard -"react@npm:^19.0.0": +"react@npm:^19.0.0, react@npm:^19.1.0": version: 19.1.0 resolution: "react@npm:19.1.0" checksum: c0905f8cfb878b0543a5522727e5ed79c67c8111dc16ceee135b7fe19dce77b2c1c19293513061a8934e721292bfc1517e0487e262d1906f306bdf95fa54d02f languageName: node linkType: hard -"readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.2": +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.2": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -17733,6 +18245,15 @@ __metadata: languageName: node linkType: hard +"run-applescript@npm:^5.0.0": + version: 5.0.0 + resolution: "run-applescript@npm:5.0.0" + dependencies: + execa: ^5.0.0 + checksum: d00c2dbfa5b2d774de7451194b8b125f40f65fc183de7d9dcae97f57f59433586d3c39b9001e111c38bfa24c3436c99df1bb4066a2a0c90d39a8c4cd6889af77 + languageName: node + linkType: hard + "run-applescript@npm:^7.0.0": version: 7.0.0 resolution: "run-applescript@npm:7.0.0" @@ -18288,6 +18809,13 @@ __metadata: languageName: node linkType: hard +"simple-concat@npm:^1.0.0": + version: 1.0.1 + resolution: "simple-concat@npm:1.0.1" + checksum: 4d211042cc3d73a718c21ac6c4e7d7a0363e184be6a5ad25c8a1502e49df6d0a0253979e3d50dbdd3f60ef6c6c58d756b5d66ac1e05cda9cacd2e9fc59e3876a + languageName: node + linkType: hard + "simple-eval@npm:1.0.1": version: 1.0.1 resolution: "simple-eval@npm:1.0.1" @@ -18297,6 +18825,17 @@ __metadata: languageName: node linkType: hard +"simple-get@npm:^4.0.0": + version: 4.0.1 + resolution: "simple-get@npm:4.0.1" + dependencies: + decompress-response: ^6.0.0 + once: ^1.3.1 + simple-concat: ^1.0.0 + checksum: e4132fd27cf7af230d853fa45c1b8ce900cb430dd0a3c6d3829649fe4f2b26574c803698076c4006450efb0fad2ba8c5455fbb5755d4b0a5ec42d4f12b31d27e + languageName: node + linkType: hard + "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" @@ -18825,6 +19364,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + "strip-literal@npm:^3.0.0": version: 3.0.0 resolution: "strip-literal@npm:3.0.0" @@ -18969,6 +19515,18 @@ __metadata: languageName: node linkType: hard +"tar-fs@npm:^2.0.0": + version: 2.1.3 + resolution: "tar-fs@npm:2.1.3" + dependencies: + chownr: ^1.1.1 + mkdirp-classic: ^0.5.2 + pump: ^3.0.0 + tar-stream: ^2.1.4 + checksum: 8dd66c20779c1fe535df5cf2ab5132705c12aba3ab95283f225a798329c5aaa8bbe92144c8e21bc9404f46a0d3ce59fc4997f5c42bafc55b6a225d4ad15aa966 + languageName: node + linkType: hard + "tar-fs@npm:^3.0.6": version: 3.1.0 resolution: "tar-fs@npm:3.1.0" @@ -18986,6 +19544,19 @@ __metadata: languageName: node linkType: hard +"tar-stream@npm:^2.1.4": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: ^4.0.3 + end-of-stream: ^1.4.1 + fs-constants: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^3.1.1 + checksum: 699831a8b97666ef50021c767f84924cfee21c142c2eb0e79c63254e140e6408d6d55a065a2992548e72b06de39237ef2b802b99e3ece93ca3904a37622a66f3 + languageName: node + linkType: hard + "tar-stream@npm:^3.1.5": version: 3.1.7 resolution: "tar-stream@npm:3.1.7" @@ -19111,6 +19682,13 @@ __metadata: languageName: node linkType: hard +"titleize@npm:^3.0.0": + version: 3.0.0 + resolution: "titleize@npm:3.0.0" + checksum: 71fbbeabbfb36ccd840559f67f21e356e1d03da2915b32d2ae1a60ddcc13a124be2739f696d2feb884983441d159a18649e8d956648d591bdad35c430a6b6d28 + languageName: node + linkType: hard + "tmp@npm:^0.0.33": version: 0.0.33 resolution: "tmp@npm:0.0.33" @@ -19316,6 +19894,15 @@ __metadata: languageName: node linkType: hard +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 + languageName: node + linkType: hard + "turbo-darwin-64@npm:2.5.5": version: 2.5.5 resolution: "turbo-darwin-64@npm:2.5.5" @@ -19520,7 +20107,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5": +"typescript@npm:^5, typescript@npm:^5.8.3": version: 5.8.3 resolution: "typescript@npm:5.8.3" bin: @@ -19540,7 +20127,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^5#~builtin": +"typescript@patch:typescript@^5#~builtin, typescript@patch:typescript@^5.8.3#~builtin": version: 5.8.3 resolution: "typescript@patch:typescript@npm%3A5.8.3#~builtin::version=5.8.3&hash=77c9e2" bin: @@ -19893,6 +20480,13 @@ __metadata: languageName: node linkType: hard +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.1.3": version: 1.1.3 resolution: "update-browserslist-db@npm:1.1.3"