diff --git a/docs/users/features/sandbox.md b/docs/users/features/sandbox.md index f67ddae6..86abacec 100644 --- a/docs/users/features/sandbox.md +++ b/docs/users/features/sandbox.md @@ -1,4 +1,4 @@ -# Sandboxing in Qwen Code +# Sandbox This document provides a guide to sandboxing in Qwen Code, including prerequisites, quickstart, and configuration. diff --git a/docs/users/overview.md b/docs/users/overview.md index c2aec5aa..9b7a67d8 100644 --- a/docs/users/overview.md +++ b/docs/users/overview.md @@ -17,14 +17,12 @@ Prerequisites: npm install -g @qwen-code/qwen-code@latest ``` -**Homebrew** +**Homebrew**(macOS, Linux) ```bash brew install qwen-code ``` -![](https://gw.alicdn.com/imgextra/i4/O1CN01eBPcmt27ezX0uaIn1_!!6000000007823-1-tps-1152-646.gif) - ### Start using Qwen Code: ```bash @@ -38,13 +36,13 @@ Select **Qwen OAuth (Free)** authentication and follow the prompts to log in. Th what does this project do? ``` -![](https://gw.alicdn.com/imgextra/i1/O1CN01KUl70h277YcVQRS0Z_!!6000000007750-1-tps-1152-646.gif) +![](https://gw.alicdn.com/imgextra/i2/O1CN01XoPbZm1CrsZzvMQ6m_!!6000000000135-1-tps-772-646.gif) You'll be prompted to log in on first use. That's it! [Continue with Quickstart (5 mins) →](/users/quickstart) > [!tip] > -> See [troubleshooting](/users/support/troubleshooting) if you hit issues. +> See [troubleshooting](/users/support/troubleshooting) if you hit issues. > [!note] > @@ -52,13 +50,13 @@ You'll be prompted to log in on first use. That's it! [Continue with Quickstart ## What Qwen Code does for you -* **Build features from descriptions**: Tell Qwen Code what you want to build in plain language. It will make a plan, write the code, and ensure it works. -* **Debug and fix issues**: Describe a bug or paste an error message. Qwen Code will analyze your codebase, identify the problem, and implement a fix. -* **Navigate any codebase**: Ask anything about your team's codebase, and get a thoughtful answer back. Qwen Code maintains awareness of your entire project structure, can find up-to-date information from the web, and with [MCP](/users/features/mcp) can pull from external datasources like Google Drive, Figma, and Slack. -* **Automate tedious tasks**: Fix fiddly lint issues, resolve merge conflicts, and write release notes. Do all this in a single command from your developer machines, or automatically in CI. +- **Build features from descriptions**: Tell Qwen Code what you want to build in plain language. It will make a plan, write the code, and ensure it works. +- **Debug and fix issues**: Describe a bug or paste an error message. Qwen Code will analyze your codebase, identify the problem, and implement a fix. +- **Navigate any codebase**: Ask anything about your team's codebase, and get a thoughtful answer back. Qwen Code maintains awareness of your entire project structure, can find up-to-date information from the web, and with [MCP](/users/features/mcp) can pull from external datasources like Google Drive, Figma, and Slack. +- **Automate tedious tasks**: Fix fiddly lint issues, resolve merge conflicts, and write release notes. Do all this in a single command from your developer machines, or automatically in CI. ## Why developers love Qwen Code -* **Works in your terminal**: Not another chat window. Not another IDE. Qwen Code meets you where you already work, with the tools you already love. -* **Takes action**: Qwen Code can directly edit files, run commands, and create commits. Need more? [MCP](/users/features/mcp) lets Qwen Code read your design docs in Google Drive, update your tickets in Jira, or use *your* custom developer tooling. -* **Unix philosophy**: Qwen Code is composable and scriptable. `tail -f app.log | qwen -p "Slack me if you see any anomalies appear in this log stream"` *works*. Your CI can run `qwen -p "If there are new text strings, translate them into French and raise a PR for @lang-fr-team to review"`. \ No newline at end of file +- **Works in your terminal**: Not another chat window. Not another IDE. Qwen Code meets you where you already work, with the tools you already love. +- **Takes action**: Qwen Code can directly edit files, run commands, and create commits. Need more? [MCP](/users/features/mcp) lets Qwen Code read your design docs in Google Drive, update your tickets in Jira, or use _your_ custom developer tooling. +- **Unix philosophy**: Qwen Code is composable and scriptable. `tail -f app.log | qwen -p "Slack me if you see any anomalies appear in this log stream"` _works_. Your CI can run `qwen -p "If there are new text strings, translate them into French and raise a PR for @lang-fr-team to review"`. diff --git a/docs/users/quickstart.md b/docs/users/quickstart.md index 91b9a7d5..1b6c0f13 100644 --- a/docs/users/quickstart.md +++ b/docs/users/quickstart.md @@ -22,13 +22,13 @@ Requires [Node.js 20+](https://nodejs.org/download), you can use `node -v` check If you have [Node.js or newer installed](https://nodejs.org/en/download/): -```sh +```sh npm install -g @qwen-code/qwen-code@latest ``` ### Homebrew (macOS, Linux) -```sh +```sh brew install qwen-code ``` @@ -36,12 +36,12 @@ brew install qwen-code Qwen Code requires an account to use. When you start an interactive session with the `qwen` command, you'll need to log in: -```bash +```bash # You'll be prompted to log in on first use qwen ``` -```bash +```bash # Follow the prompts to log in with your account /auth ``` @@ -60,7 +60,7 @@ Select `Qwen OAuth`, log in to your account and follow the prompts to confirm. O Open your terminal in any project directory and start Qwen Code: -```bash +```bash # optiona cd /path/to/your/project # start qwen @@ -69,7 +69,7 @@ qwen You'll see the Qwen Code welcome screen with your session information, recent conversations, and latest updates. Type `/help` for available commands. -## Chat with Qwen Code +## 🤖 Chat with Qwen Code ### Ask your first question @@ -150,10 +150,10 @@ there's a bug where users can submit empty forms - fix it Qwen Code will: -* Locate the relevant code -* Understand the context -* Implement a solution -* Run tests if available +- Locate the relevant code +- Understand the context +- Implement a solution +- Run tests if available ### Test out other common workflows @@ -209,10 +209,10 @@ See the [CLI reference](/users/reference/cli-reference) for a complete list of c ## Pro tips for beginners - Be specific with your requests - - Instead of: "fix the bug" - - Try: "fix the login bug where users see a blank screen after entering wrong credentials" + - Instead of: "fix the bug" + - Try: "fix the login bug where users see a blank screen after entering wrong credentials" - Use step-by-step instructions - - Break complex tasks into steps: + - Break complex tasks into steps: ``` 1. create a new database table for user profiles 2. create an API endpoint to get and update user profiles @@ -220,7 +220,8 @@ See the [CLI reference](/users/reference/cli-reference) for a complete list of c ``` - Let Claude explore first - - Before making changes, let Claude understand your code: + - Before making changes, let Claude understand your code: + ``` analyze the database schema ``` @@ -229,14 +230,14 @@ See the [CLI reference](/users/reference/cli-reference) for a complete list of c build a dashboard showing products that are most frequently returned by our UK customers ``` - - Save time with shortcuts - - Press `?` to see all available keyboard shortcuts - - Use Tab for command completion - - Press ↑ for command history - - Type `/` to see all slash commands +- Save time with shortcuts + - Press `?` to see all available keyboard shortcuts + - Use Tab for command completion + - Press ↑ for command history + - Type `/` to see all slash commands ## Getting help - **In Qwen Code**: Type `/help` or ask "how do I..." - **Documentation**: You're here! Browse other guides -- **Community**: Join our [GitHub Discussion](https://github.com/QwenLM/qwen-code/discussions) for tips and support \ No newline at end of file +- **Community**: Join our [GitHub Discussion](https://github.com/QwenLM/qwen-code/discussions) for tips and support diff --git a/docs/users/reference/cli-reference.md b/docs/users/reference/cli-reference.md new file mode 100644 index 00000000..78c3a16e --- /dev/null +++ b/docs/users/reference/cli-reference.md @@ -0,0 +1,253 @@ +# Qwen Code Command Reference + +This document details all commands supported by Qwen Code, helping you efficiently manage sessions, customize the interface, and control its behavior. + +Qwen Code commands are triggered through specific prefixes and fall into three categories: + +| Prefix Type | Function Description | Typical Use Case | +| -------------------------- | --------------------------------------------------- | ---------------------------------------------------------------- | +| Slash Commands (`/`) | Meta-level control of Qwen Code itself | Managing sessions, modifying settings, getting help | +| At Commands (`@`) | Quickly inject local file content into conversation | Allowing AI to analyze specified files or code under directories | +| Exclamation Commands (`!`) | Direct interaction with system Shell | Executing system commands like `git status`, `ls`, etc. | + +## 1. Slash Commands (`/`) + +Slash commands are used to manage Qwen Code sessions, interface, and basic behavior. + +### 1.1 Session and Project Management + +These commands help you save, restore, and summarize work progress. + +| Command | Description | Usage Examples | +| ----------- | --------------------------------------------------------- | ------------------------------------ | +| `/summary` | Generate project summary based on conversation history | `/summary` | +| `/compress` | Replace chat history with summary to save Tokens | `/compress` | +| `/restore` | Restore files to state before tool execution | `/restore` (list) or `/restore ` | +| `/init` | Analyze current directory and create initial context file | `/init` | + +### 1.2 Interface and Workspace Control + +Commands for adjusting interface appearance and work environment. + +| Command | Description | Usage Examples | +| ------------ | ---------------------------------------- | ----------------------------- | +| `/clear` | Clear terminal screen content | `/clear` (shortcut: `Ctrl+L`) | +| `/theme` | Change Qwen Code visual theme | `/theme` | +| `/vim` | Turn input area Vim editing mode on/off | `/vim` | +| `/directory` | Manage multi-directory support workspace | `/dir add ./src,./tests` | +| `/editor` | Open dialog to select supported editor | `/editor` | + +### 1.3 Language Settings + +Commands specifically for controlling interface and output language. + +| Command | Description | Usage Examples | +| --------------------- | -------------------------------- | -------------------------- | +| `/language` | View or change language settings | `/language` | +| → `ui [language]` | Set UI interface language | `/language ui zh-CN` | +| → `output [language]` | Set LLM output language | `/language output Chinese` | + +- Available UI languages: `zh-CN` (Simplified Chinese), `en-US` (English) +- Output language examples: `Chinese`, `English`, `Japanese`, etc. + +### 1.4 Tool and Model Management + +Commands for managing AI tools and models. + +| Command | Description | Usage Examples | +| ---------------- | --------------------------------------------- | --------------------------------------------- | +| `/mcp` | List configured MCP servers and tools | `/mcp`, `/mcp desc` | +| `/tools` | Display currently available tool list | `/tools`, `/tools desc` | +| `/approval-mode` | Change approval mode for tool usage | `/approval-mode --project` | +| →`plan` | Analysis only, no execution | Secure review | +| →`default` | Require approval for edits | Daily use | +| →`auto-edit` | Automatically approve edits | Trusted environment | +| →`yolo` | Automatically approve all | Quick prototyping | +| `/model` | Switch model used in current session | `/model` | +| `/extensions` | List all active extensions in current session | `/extensions` | +| `/memory` | Manage AI's instruction context | `/memory add Important Info` | + +### 1.5 Information, Settings, and Help + +Commands for obtaining information and performing system settings. + +| Command | Description | Usage Examples | +| --------------- | ----------------------------------------------- | ------------------------------------------------ | +| `/help` | Display help information for available commands | `/help` or `/?` | +| `/about` | Display version information | `/about` | +| `/stats` | Display detailed statistics for current session | `/stats` | +| `/settings` | Open settings editor | `/settings` | +| `/auth` | Change authentication method | `/auth` | +| `/bug` | Submit issue about Qwen Code | `/bug Button click unresponsive` | +| `/copy` | Copy last output content to clipboard | `/copy` | +| `/quit-confirm` | Show confirmation dialog before quitting | `/quit-confirm` (shortcut: press `Ctrl+C` twice) | +| `/quit` | Exit Qwen Code immediately | `/quit` or `/exit` | + +### 1.6 Common Shortcuts + +| Shortcut | Function | Note | +| ------------------ | ----------------------- | ---------------------- | +| `Ctrl/cmd+L` | Clear screen | Equivalent to `/clear` | +| `Ctrl/cmd+T` | Toggle tool description | MCP tool management | +| `Ctrl/cmd+C`×2 | Exit confirmation | Secure exit mechanism | +| `Ctrl/cmd+Z` | Undo input | Text editing | +| `Ctrl/cmd+Shift+Z` | Redo input | Text editing | + +## 2. @ Commands (Introducing Files) + +@ commands are used to quickly add local file or directory content to the conversation. + +| Command Format | Description | Examples | +| ------------------- | -------------------------------------------- | ------------------------------------------------ | +| `@` | Inject content of specified file | `@src/main.py Please explain this code` | +| `@` | Recursively read all text files in directory | `@docs/ Summarize content of this document` | +| Standalone `@` | Used when discussing `@` symbol itself | `@ What is this symbol used for in programming?` | + +Note: Spaces in paths need to be escaped with backslash (e.g., `@My\ Documents/file.txt`) + +## 3. Exclamation Commands (`!`) - Shell Command Execution + +Exclamation commands allow you to execute system commands directly within Qwen Code. + +| Command Format | Description | Examples | +| ------------------ | ------------------------------------------------------------------ | -------------------------------------- | +| `!` | Execute command in sub-Shell | `!ls -la`, `!git status` | +| Standalone `!` | Switch Shell mode, any input is executed directly as Shell command | `!`(enter) → Input command → `!`(exit) | + +Environment Variables: Commands executed via `!` will set the `QWEN_CODE=1` environment variable. + +## 4. Custom Commands + +Save frequently used prompts as shortcut commands to improve work efficiency and ensure consistency. + +### 📋 Quick Overview + +| Function | Description | Advantages | Priority | Applicable Scenarios | +| ---------------- | ------------------------------------------ | -------------------------------------- | -------- | ---------------------------------------------------- | +| Namespace | Subdirectory creates colon-named commands | Better command organization | | | +| Global Commands | `~/.qwen/commands/` | Available in all projects | Low | Personal frequently used commands, cross-project use | +| Project Commands | `/.qwen/commands/` | Project-specific, version-controllable | High | Team sharing, project-specific commands | + +Priority Rules: Project commands > User commands (project command used when names are same) + +### 🔤 Command Naming Rules + +#### File Path to Command Name Mapping Table + +| File Location | Generated Command | Example Call | +| ---------------------------- | ----------------- | --------------------- | +| `~/.qwen/commands/test.toml` | `/test` | `/test Parameter` | +| `/git/commit.toml` | `/git:commit` | `/git:commit Message` | + +Naming Rules: Path separator (`/` or `\`) converted to colon (`:`) + +### 📄 TOML File Format Specification + +| Field | Required | Description | Example | +| ------------- | -------- | ---------------------------------------- | ------------------------------------------ | +| `prompt` | Required | Prompt content sent to model | `prompt = "Please analyze code: {{args}}"` | +| `description` | Optional | Command description (displayed in /help) | `description = "Code analysis tool"` | + +### 🔧 Parameter Processing Mechanism + +| Processing Method | Syntax | Applicable Scenarios | Security Features | +| ---------------------------- | ------------------ | ------------------------------------ | -------------------------------------- | +| Context-aware Injection | `{{args}}` | Need precise parameter control | Automatic Shell escaping | +| Default Parameter Processing | No special marking | Simple commands, parameter appending | Append as-is | +| Shell Command Injection | `!{command}` | Need dynamic content | Execution confirmation required before | + +#### 1. Context-aware Injection (`{{args}}`) + +| Scenario | TOML Configuration | Call Method | Actual Effect | +| ---------------- | --------------------------------------- | --------------------- | ------------------------ | +| Raw Injection | `prompt = "Fix: {{args}}"` | `/fix "Button issue"` | `Fix: "Button issue"` | +| In Shell Command | `prompt = "Search: !{grep {{args}} .}"` | `/search "hello"` | Execute `grep "hello" .` | + +#### 2. Default Parameter Processing + +| Input Situation | Processing Method | Example | +| --------------- | ------------------------------------------------------ | ---------------------------------------------- | +| Has parameters | Append to end of prompt (separated by two line breaks) | `/cmd parameter` → Original prompt + parameter | +| No parameters | Send prompt as is | `/cmd` → Original prompt | + +🚀 Dynamic Content Injection + +| Injection Type | Syntax | Processing Order | Purpose | +| --------------------- | -------------- | ------------------- | -------------------------------- | +| File Content | `@{file path}` | Processed first | Inject static reference files | +| Shell Commands | `!{command}` | Processed in middle | Inject dynamic execution results | +| Parameter Replacement | `{{args}}` | Processed last | Inject user parameters | + +#### 3. Shell Command Execution (`!{...}`) + +| Operation | User Interaction | +| ------------------------------- | -------------------- | +| 1️⃣ Parse command and parameters | - | +| 2️⃣ Automatic Shell escaping | - | +| 3️⃣ Show confirmation dialog | ✅ User confirmation | +| 4️⃣ Execute command | - | +| 5️⃣ Inject output to prompt | - | + +Example: Git Commit Message Generation + +``` +# git/commit.toml +description = "Generate Commit message based on staged changes" +prompt = """ +Please generate a Commit message based on the following diff: +diff +!{git diff --staged} +""" +``` + +#### 4. File Content Injection (`@{...}`) + +| File Type | Support Status | Processing Method | +| ------------ | ---------------------- | --------------------------- | +| Text Files | ✅ Full Support | Directly inject content | +| Images/PDF | ✅ Multi-modal Support | Encode and inject | +| Binary Files | ⚠️ Limited Support | May be skipped or truncated | +| Directory | ✅ Recursive Injection | Follow .gitignore rules | + +Example: Code Review Command + +``` +# review.toml +description = "Code review based on best practices" +prompt = """ +Review {{args}}, reference standards: + +@{docs/code-standards.md} +""" +``` + +### 🛠️ Practical Creation Example + +#### "Pure Function Refactoring" Command Creation Steps Table + +| Operation | Command/Code | +| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1️⃣ Create directory structure | `mkdir -p ~/.qwen/commands/refactor` | +| 2️⃣ Create command file | `touch ~/.qwen/commands/refactor/pure.toml` | +| 3️⃣ Edit command content | `
# ~/.qwen/commands/refactor/pure.toml
description = "Refactor code to pure function"
prompt = """
Please analyze code in current context, refactor to pure function.
Requirements:
1. Provide refactored code
2. Explain key changes and pure function characteristic implementation
3. Maintain function unchanged
"""
` | +| 4️⃣ Test command | `@file.js` → `/refactor:pure` | + +### 💡 Custom Command Best Practices Summary + +#### Command Design Recommendations Table + +| Practice Points | Recommended Approach | Avoid | +| -------------------- | ----------------------------------- | ------------------------------------------- | +| Command Naming | Use namespaces for organization | Avoid overly generic names | +| Parameter Processing | Clearly use `{{args}}` | Rely on default appending (easy to confuse) | +| Error Handling | Utilize Shell error output | Ignore execution failure | +| File Organization | Organize by function in directories | All commands in root directory | +| Description Field | Always provide clear description | Rely on auto-generated description | + +#### Security Features Reminder Table + +| Security Mechanism | Protection Effect | User Operation | +| ---------------------- | -------------------------- | ---------------------- | +| Shell Escaping | Prevent command injection | Automatic processing | +| Execution Confirmation | Avoid accidental execution | Dialog confirmation | +| Error Reporting | Help diagnose issues | View error information | diff --git a/package-lock.json b/package-lock.json index b2042225..9139e377 100644 --- a/package-lock.json +++ b/package-lock.json @@ -555,6 +555,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -578,6 +579,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -2118,6 +2120,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -3279,6 +3282,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -3717,6 +3721,7 @@ "integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3727,6 +3732,7 @@ "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", "dev": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.0.0" } @@ -3932,6 +3938,7 @@ "integrity": "sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.35.0", "@typescript-eslint/types": "8.35.0", @@ -4700,6 +4707,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5054,8 +5062,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.9", @@ -6229,7 +6236,6 @@ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "5.2.1" }, @@ -7263,6 +7269,7 @@ "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -7732,7 +7739,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -7794,7 +7800,6 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -7804,7 +7809,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7814,7 +7818,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -7981,7 +7984,6 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "license": "MIT", - "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", @@ -8000,7 +8002,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -8009,15 +8010,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/finalhandler/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8" } @@ -9056,6 +9055,7 @@ "resolved": "https://registry.npmjs.org/ink/-/ink-6.2.3.tgz", "integrity": "sha512-fQkfEJjKbLXIcVWEE3MvpYSnwtbbmRsmeNDNz1pIuOFlwE+UF2gsy228J36OXKZGWJWZJKUigphBSqCNMcARtg==", "license": "MIT", + "peer": true, "dependencies": { "@alcalzone/ansi-tokenize": "^0.2.0", "ansi-escapes": "^7.0.0", @@ -10959,7 +10959,6 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -12167,8 +12166,7 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/path-type": { "version": "3.0.0", @@ -12672,6 +12670,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -12682,6 +12681,7 @@ "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" @@ -12715,6 +12715,7 @@ "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -14524,6 +14525,7 @@ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -14696,7 +14698,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsx": { "version": "4.20.3", @@ -14704,6 +14707,7 @@ "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -14888,6 +14892,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -15157,7 +15162,6 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.4.0" } @@ -15213,6 +15217,7 @@ "integrity": "sha512-ixXJB1YRgDIw2OszKQS9WxGHKwLdCsbQNkpJN171udl6szi/rIySHL6/Os3s2+oE4P/FLD4dxg4mD7Wust+u5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.6", @@ -15326,6 +15331,7 @@ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -15339,6 +15345,7 @@ "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -16017,6 +16024,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -16278,6 +16286,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" },