Enhancement: 1-Click Installers & Zero-Config Auth Prep
This commit is contained in:
42
README.md
42
README.md
@@ -10,35 +10,40 @@
|
||||
## 👋 Welcome to OpenQode
|
||||
OpenQode is a powerful Terminal User Interface (TUI) that brings advanced AI coding capabilities directly to your command line. Whether you're debugging via SSH, coding on a cloud server, or just love the terminal, OpenQode is designed for you.
|
||||
|
||||
We are proud to present two distinct experiences: **Next-Gen (Gen 5)** and **Classic (Gen 4)**.
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 1-Click Installation (Windows)
|
||||
Copy and paste this into PowerShell to automatically download, install, and run OpenQode:
|
||||
## ⚡ 1-Click Installation (Zero-Config)
|
||||
|
||||
### 🖥️ Windows (PowerShell)
|
||||
Copy and paste this into PowerShell:
|
||||
```powershell
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/roman-ryzenadvanced/OpenQode-Public-Alpha/main/install.ps1'))
|
||||
```
|
||||
|
||||
### 🍎 macOS / 🐧 Linux (Bash)
|
||||
Copy and paste this into your terminal:
|
||||
```bash
|
||||
curl -sL https://raw.githubusercontent.com/roman-ryzenadvanced/OpenQode-Public-Alpha/main/install.sh | bash
|
||||
```
|
||||
|
||||
*(These scripts automatically download source, install dependencies, and launch the assistant)*
|
||||
|
||||
---
|
||||
|
||||
## 📦 Manual Installation
|
||||
|
||||
### 🖥️ Windows Users
|
||||
1. **Download** the latest release or clone the repo.
|
||||
### Windows
|
||||
1. **Download** the latest release.
|
||||
2. Double-click **`OpenQode.bat`**.
|
||||
*(First run will automatically install dependencies)*
|
||||
3. Choose **Option 5** for the Next-Gen Experience!
|
||||
|
||||
### 🍎 macOS / 🐧 Linux Users
|
||||
### Linux / Mac
|
||||
1. Open terminal in the folder.
|
||||
2. Run:
|
||||
```bash
|
||||
chmod +x OpenQode.sh
|
||||
./OpenQode.sh
|
||||
```
|
||||
3. Choose **Option 5**.
|
||||
|
||||
---
|
||||
|
||||
@@ -53,24 +58,21 @@ We recommend starting with **Next-Gen (Option 5)**!
|
||||
| **Interactivity**| **Interactive Menus** (Arrow Keys Selection) | Command-based only |
|
||||
| **Models** | **Visual Model Selector** (`/model`) | Manual Switch via CLI |
|
||||
| **Thinking** | **Real-time Stats** (CPS, Tokens) | Basic Loading |
|
||||
| **Output** | **Collapsible Cards** & Markdown | Linear Log |
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## ⚡ Quick Start Guide
|
||||
Once in Next-Gen TUI:
|
||||
## ⚡ Feature: Zero-Config Authentication
|
||||
OpenQode attempts to use your existing Qwen CLI authentication.
|
||||
- Using standard **Option 5**, simply follow the prompts.
|
||||
- If it's your first time, you may need to authenticate via browser.
|
||||
- The assistant is designed to be "Hassle Free"!
|
||||
|
||||
- **Chat:** Just type your question!
|
||||
- **Select Model:** Type `/model` to open the visual selector.
|
||||
- **Switch Agent:** Type `/agent <name>` (e.g., `/agent planner`).
|
||||
|
||||
### 🔑 Configuration (Optional)
|
||||
If you have your own API keys (e.g., for Qwen Coder models):
|
||||
### 🔑 Advanced Configuration
|
||||
If you have your own API keys or specialized setup:
|
||||
1. Copy `config.example.cjs` to `config.cjs`.
|
||||
2. Edit `config.cjs` and paste your key.
|
||||
3. Restart.
|
||||
2. Edit `config.cjs` to add your keys.
|
||||
|
||||
---
|
||||
|
||||
|
||||
94
install.sh
94
install.sh
@@ -1,74 +1,46 @@
|
||||
#!/bin/bash
|
||||
# OpenQode v1.3 Installation Script for Linux/Mac
|
||||
# OpenQode One-Liner Installer for Linux/Mac
|
||||
|
||||
echo ""
|
||||
echo "========================================================"
|
||||
echo " OpenQode v1.3 Alpha - Installation"
|
||||
echo " AI-Powered Coding Assistant with Qwen Integration"
|
||||
echo "========================================================"
|
||||
echo ""
|
||||
echo -e "\033[0;36mOpenQode Auto-Installer\033[0m"
|
||||
echo -e "\033[0;36m-----------------------\033[0m"
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
# Check Git
|
||||
if ! command -v git &> /dev/null; then
|
||||
echo -e "\033[0;31mError: Git is not installed.\033[0m"
|
||||
echo "Please install Git (e.g., sudo apt install git or brew install git)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check Node.js
|
||||
echo "[1/3] Checking Node.js..."
|
||||
# Check Node
|
||||
if ! command -v node &> /dev/null; then
|
||||
echo ""
|
||||
echo "ERROR: Node.js is not installed!"
|
||||
echo ""
|
||||
echo "Install Node.js:"
|
||||
echo " Ubuntu/Debian: curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs"
|
||||
echo " macOS: brew install node"
|
||||
echo " Or download from: https://nodejs.org/"
|
||||
echo ""
|
||||
echo -e "\033[0;31mError: Node.js is not installed.\033[0m"
|
||||
echo "Please install Node.js: https://nodejs.org/"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check Node.js version
|
||||
NODE_VERSION=$(node -v | cut -d. -f1 | tr -d 'v')
|
||||
if [ "$NODE_VERSION" -lt 20 ]; then
|
||||
echo ""
|
||||
echo -e "\033[0;33mWARNING: Node.js v20+ is recommended! You have v${NODE_VERSION}.\033[0m"
|
||||
echo "Some features may not work correctly."
|
||||
echo ""
|
||||
fi
|
||||
echo " Found: $(node --version)"
|
||||
TARGET_DIR="OpenQode"
|
||||
REPO_URL="https://github.com/roman-ryzenadvanced/OpenQode-Public-Alpha.git"
|
||||
|
||||
# Install npm dependencies
|
||||
echo ""
|
||||
echo "[2/3] Installing dependencies..."
|
||||
echo " (This may take a minute...)"
|
||||
npm install --legacy-peer-deps
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: npm install failed!"
|
||||
echo "Try: npm install --legacy-peer-deps"
|
||||
exit 1
|
||||
fi
|
||||
echo " Done!"
|
||||
|
||||
# Check Qwen CLI (optional)
|
||||
echo ""
|
||||
echo "[3/3] Checking Qwen CLI (optional)..."
|
||||
if ! command -v qwen &> /dev/null; then
|
||||
echo " Qwen CLI not found (optional - Modern TUI doesn't need it)"
|
||||
echo " To install: npm install -g @anthropic/qwen-code"
|
||||
if [ -d "$TARGET_DIR" ]; then
|
||||
echo -e "\033[1;33mDirectory '$TARGET_DIR' already exists. Entering...\033[0m"
|
||||
else
|
||||
echo " Qwen CLI already installed!"
|
||||
echo -e "\033[1;33mCloning repository...\033[0m"
|
||||
git clone "$REPO_URL" "$TARGET_DIR"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "\033[0;31mClone failed.\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure scripts are executable
|
||||
chmod +x OpenQode.sh start.sh 2>/dev/null
|
||||
cd "$TARGET_DIR"
|
||||
|
||||
echo ""
|
||||
echo "========================================================"
|
||||
echo -e "\033[1;32m Installation Complete! \033[0m"
|
||||
echo "========================================================"
|
||||
echo ""
|
||||
echo " To start OpenQode:"
|
||||
echo ""
|
||||
echo -e " \033[1;36m./OpenQode.sh\033[0m"
|
||||
echo ""
|
||||
echo " Then select Option 5 for the Modern TUI!"
|
||||
echo ""
|
||||
echo "========================================================"
|
||||
echo ""
|
||||
if [ ! -d "node_modules" ]; then
|
||||
echo -e "\033[1;33mInstalling dependencies...\033[0m"
|
||||
npm install
|
||||
else
|
||||
echo -e "\033[0;32mDependencies already installed.\033[0m"
|
||||
fi
|
||||
|
||||
echo -e "\033[0;32mInstallation complete! Launching...\033[0m"
|
||||
chmod +x OpenQode.sh
|
||||
./OpenQode.sh
|
||||
|
||||
141
package-lock.json
generated
141
package-lock.json
generated
@@ -9,6 +9,7 @@
|
||||
"version": "1.01.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@qwen-code/qwen-code": "latest",
|
||||
"blessed": "^0.1.81",
|
||||
"cli-truncate": "^5.1.1",
|
||||
"clipboardy": "^5.0.2",
|
||||
@@ -63,6 +64,122 @@
|
||||
"node": ">=0.1.90"
|
||||
}
|
||||
},
|
||||
"node_modules/@lydell/node-pty": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty/-/node-pty-1.1.0.tgz",
|
||||
"integrity": "sha512-VDD8LtlMTOrPKWMXUAcB9+LTktzuunqrMwkYR1DMRBkS6LQrCt+0/Ws1o2rMml/n3guePpS7cxhHF7Nm5K4iMw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"optionalDependencies": {
|
||||
"@lydell/node-pty-darwin-arm64": "1.1.0",
|
||||
"@lydell/node-pty-darwin-x64": "1.1.0",
|
||||
"@lydell/node-pty-linux-arm64": "1.1.0",
|
||||
"@lydell/node-pty-linux-x64": "1.1.0",
|
||||
"@lydell/node-pty-win32-arm64": "1.1.0",
|
||||
"@lydell/node-pty-win32-x64": "1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@lydell/node-pty-darwin-arm64": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty-darwin-arm64/-/node-pty-darwin-arm64-1.1.0.tgz",
|
||||
"integrity": "sha512-7kFD+owAA61qmhJCtoMbqj3Uvff3YHDiU+4on5F2vQdcMI3MuwGi7dM6MkFG/yuzpw8LF2xULpL71tOPUfxs0w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
]
|
||||
},
|
||||
"node_modules/@lydell/node-pty-darwin-x64": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty-darwin-x64/-/node-pty-darwin-x64-1.1.0.tgz",
|
||||
"integrity": "sha512-XZdvqj5FjAMjH8bdp0YfaZjur5DrCIDD1VYiE9EkkYVMDQqRUPHYV3U8BVEQVT9hYfjmpr7dNaELF2KyISWSNA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
]
|
||||
},
|
||||
"node_modules/@lydell/node-pty-linux-arm64": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty-linux-arm64/-/node-pty-linux-arm64-1.1.0.tgz",
|
||||
"integrity": "sha512-yyDBmalCfHpLiQMT2zyLcqL2Fay4Xy7rIs8GH4dqKLnEviMvPGOK7LADVkKAsbsyXBSISL3Lt1m1MtxhPH6ckg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@lydell/node-pty-linux-x64": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty-linux-x64/-/node-pty-linux-x64-1.1.0.tgz",
|
||||
"integrity": "sha512-NcNqRTD14QT+vXcEuqSSvmWY+0+WUBn2uRE8EN0zKtDpIEr9d+YiFj16Uqds6QfcLCHfZmC+Ls7YzwTaqDnanA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
]
|
||||
},
|
||||
"node_modules/@lydell/node-pty-win32-arm64": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty-win32-arm64/-/node-pty-win32-arm64-1.1.0.tgz",
|
||||
"integrity": "sha512-JOMbCou+0fA7d/m97faIIfIU0jOv8sn2OR7tI45u3AmldKoKoLP8zHY6SAvDDnI3fccO1R2HeR1doVjpS7HM0w==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/@lydell/node-pty-win32-x64": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@lydell/node-pty-win32-x64/-/node-pty-win32-x64-1.1.0.tgz",
|
||||
"integrity": "sha512-3N56BZ+WDFnUMYRtsrr7Ky2mhWGl9xXcyqR6cexfuCqcz9RNWL+KoXRv/nZylY5dYaXkft4JaR1uVu+roiZDAw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/@qwen-code/qwen-code": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@qwen-code/qwen-code/-/qwen-code-0.5.0.tgz",
|
||||
"integrity": "sha512-PUVwBwDJTR00KrBR4ZdGV85HTUfOavE0XOPHHoz3C9XTMpUquiMl+aE4zefgZ+QRgYso1cTR687VDRsdnqz4hw==",
|
||||
"dependencies": {
|
||||
"tiktoken": "^1.0.21"
|
||||
},
|
||||
"bin": {
|
||||
"qwen": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@lydell/node-pty": "1.1.0",
|
||||
"@lydell/node-pty-darwin-arm64": "1.1.0",
|
||||
"@lydell/node-pty-darwin-x64": "1.1.0",
|
||||
"@lydell/node-pty-linux-x64": "1.1.0",
|
||||
"@lydell/node-pty-win32-arm64": "1.1.0",
|
||||
"@lydell/node-pty-win32-x64": "1.1.0",
|
||||
"node-pty": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@sec-ant/readable-stream": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
|
||||
@@ -3237,6 +3354,13 @@
|
||||
"thenify-all": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/nan": {
|
||||
"version": "2.24.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.24.0.tgz",
|
||||
"integrity": "sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg==",
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/negotiator": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
|
||||
@@ -3261,6 +3385,17 @@
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/node-pty": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.0.0.tgz",
|
||||
"integrity": "sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
"nan": "^2.17.0"
|
||||
}
|
||||
},
|
||||
"node_modules/nodemon": {
|
||||
"version": "3.1.11",
|
||||
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz",
|
||||
@@ -4198,6 +4333,12 @@
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/tiktoken": {
|
||||
"version": "1.0.22",
|
||||
"resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.22.tgz",
|
||||
"integrity": "sha512-PKvy1rVF1RibfF3JlXBSP0Jrcw2uq3yXdgcEXtKTYn3QJ/cBRBHDnrJ5jHky+MENZ6DIPwNUGWpkVx+7joCpNA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
"remark-parse": "^11.0.0",
|
||||
"string-width": "^8.1.0",
|
||||
"strip-ansi": "^7.1.2",
|
||||
"wrap-ansi": "^9.0.2"
|
||||
"wrap-ansi": "^9.0.2",
|
||||
"@qwen-code/qwen-code": "latest"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^3.0.1"
|
||||
@@ -61,4 +62,4 @@
|
||||
"url": "https://github.com/roman-ryzenadvanced/openqode/issues"
|
||||
},
|
||||
"homepage": "https://github.com/roman-ryzenadvanced/openqode#readme"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user