stella-coder 5.3.2 → 5.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/setup-full.ps1 +84 -0
- package/stella-cli/index.mjs +11 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stella-coder",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Stella Coder 5.0 — AI coding agent with Telegram bot, huge context, TDD, Git ecosystem, presentations, computer control, smart home, Office automation, and antivirus",
|
|
6
6
|
"main": "stella-cli/index.mjs",
|
package/setup-full.ps1
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Stella Coder - Full Installer (Pure PowerShell)
|
|
2
|
+
$ErrorActionPreference = "Stop"
|
|
3
|
+
$nodeVer = "v22.14.0"
|
|
4
|
+
$nodeDir = "$env:USERPROFILE\StellaNode"
|
|
5
|
+
$nodePath = "$nodeDir\node-$nodeVer-win-x64"
|
|
6
|
+
|
|
7
|
+
Write-Host ""
|
|
8
|
+
Write-Host " ===================================" -ForegroundColor Green
|
|
9
|
+
Write-Host " Stella Coder - Full Installer" -ForegroundColor Green
|
|
10
|
+
Write-Host " ===================================" -ForegroundColor Green
|
|
11
|
+
Write-Host ""
|
|
12
|
+
|
|
13
|
+
# Step 1: Set execution policy
|
|
14
|
+
Write-Host " [1/5] Setting execution policy..." -ForegroundColor Yellow
|
|
15
|
+
try {
|
|
16
|
+
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force -ErrorAction Stop
|
|
17
|
+
} catch {
|
|
18
|
+
# Policy already set at Machine level, that's fine
|
|
19
|
+
}
|
|
20
|
+
Write-Host " [OK] Execution policy ready" -ForegroundColor Green
|
|
21
|
+
|
|
22
|
+
# Step 2: Download Node.js
|
|
23
|
+
Write-Host " [2/5] Downloading Node.js $nodeVer..." -ForegroundColor Yellow
|
|
24
|
+
if (Test-Path "$nodePath\node.exe") {
|
|
25
|
+
Write-Host " [OK] Node.js already installed" -ForegroundColor Green
|
|
26
|
+
} else {
|
|
27
|
+
$zipUrl = "https://nodejs.org/dist/$nodeVer/node-$nodeVer-win-x64.zip"
|
|
28
|
+
$zipFile = "$env:TEMP\node.zip"
|
|
29
|
+
Write-Host " Downloading from $zipUrl..."
|
|
30
|
+
Invoke-WebRequest -Uri $zipUrl -OutFile $zipFile -UseBasicParsing
|
|
31
|
+
Write-Host " Extracting..."
|
|
32
|
+
if (-not (Test-Path $nodeDir)) { New-Item -ItemType Directory -Path $nodeDir -Force | Out-Null }
|
|
33
|
+
Expand-Archive -Path $zipFile -DestinationPath $nodeDir -Force
|
|
34
|
+
Remove-Item $zipFile -Force -ErrorAction SilentlyContinue
|
|
35
|
+
Write-Host " [OK] Node.js installed" -ForegroundColor Green
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# Step 3: Add to PATH
|
|
39
|
+
Write-Host " [3/5] Adding Node.js to PATH..." -ForegroundColor Yellow
|
|
40
|
+
$env:PATH = "$nodePath;$env:PATH"
|
|
41
|
+
$currentPath = [Environment]::GetEnvironmentVariable("PATH", "User")
|
|
42
|
+
if ($currentPath -notlike "*StellaNode*") {
|
|
43
|
+
[Environment]::SetEnvironmentVariable("PATH", "$nodePath;$currentPath", "User")
|
|
44
|
+
}
|
|
45
|
+
Write-Host " [OK] PATH updated" -ForegroundColor Green
|
|
46
|
+
|
|
47
|
+
# Step 4: Install stella-coder
|
|
48
|
+
Write-Host " [4/5] Installing stella-coder..." -ForegroundColor Yellow
|
|
49
|
+
& "$nodePath\node.exe" "$nodePath\node_modules\npm\bin\npm-cli.js" install -g stella-coder
|
|
50
|
+
if ($LASTEXITCODE -ne 0) {
|
|
51
|
+
Write-Host " [ERROR] npm install failed" -ForegroundColor Red
|
|
52
|
+
pause
|
|
53
|
+
exit 1
|
|
54
|
+
}
|
|
55
|
+
Write-Host " [OK] stella-coder installed" -ForegroundColor Green
|
|
56
|
+
|
|
57
|
+
# Remove .ps1 wrapper so PowerShell uses .cmd instead
|
|
58
|
+
$stellaPs1 = "$nodePath\stella.ps1"
|
|
59
|
+
if (Test-Path $stellaPs1) {
|
|
60
|
+
Remove-Item $stellaPs1 -Force -ErrorAction SilentlyContinue
|
|
61
|
+
Write-Host " [OK] Removed stella.ps1 wrapper (use stella.cmd)" -ForegroundColor Green
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# Step 5: Create desktop shortcut
|
|
65
|
+
Write-Host " [5/5] Creating desktop shortcut..." -ForegroundColor Yellow
|
|
66
|
+
$ws = New-Object -ComObject WScript.Shell
|
|
67
|
+
$shortcut = $ws.CreateShortcut("$env:USERPROFILE\Desktop\Stella Coder.lnk")
|
|
68
|
+
$shortcut.TargetPath = "$nodePath\node.exe"
|
|
69
|
+
$shortcut.Arguments = "`"$nodePath\node_modules\stella-coder\stella-cli\index.mjs`""
|
|
70
|
+
$shortcut.WorkingDirectory = $env:USERPROFILE
|
|
71
|
+
$shortcut.Save()
|
|
72
|
+
Write-Host " [OK] Shortcut created" -ForegroundColor Green
|
|
73
|
+
|
|
74
|
+
Write-Host ""
|
|
75
|
+
Write-Host " ===================================" -ForegroundColor Green
|
|
76
|
+
Write-Host " DONE!" -ForegroundColor Green
|
|
77
|
+
Write-Host " ===================================" -ForegroundColor Green
|
|
78
|
+
Write-Host ""
|
|
79
|
+
Write-Host " Launch: stella" -ForegroundColor Cyan
|
|
80
|
+
Write-Host " Or double-click 'Stella Coder' on Desktop" -ForegroundColor Cyan
|
|
81
|
+
Write-Host ""
|
|
82
|
+
|
|
83
|
+
# Launch stella
|
|
84
|
+
& "$nodePath\stella.cmd"
|
package/stella-cli/index.mjs
CHANGED
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
generateAdminCode, listAuthorizedUsers,
|
|
53
53
|
} from "./telegram-bot.mjs"
|
|
54
54
|
|
|
55
|
-
const VERSION = "5.
|
|
55
|
+
const VERSION = "5.3.4"
|
|
56
56
|
const CONFIG_DIR = path.join(os.homedir(), ".stella")
|
|
57
57
|
const CONFIG_PATH = path.join(CONFIG_DIR, "config.json")
|
|
58
58
|
const HISTORY_PATH = path.join(CONFIG_DIR, "history.json")
|
|
@@ -299,12 +299,21 @@ async function runTurn(userText) {
|
|
|
299
299
|
console.log(red("\n ✗ API ключ не задан. Введи /login для настройки.\n"))
|
|
300
300
|
return
|
|
301
301
|
}
|
|
302
|
+
console.log(dim(` → модель: ${state.model}, ключ: ${apiKey ? "есть" : "нет"}`))
|
|
302
303
|
state.messages.push({ role: "user", content: userText })
|
|
303
304
|
state.turns++
|
|
304
305
|
state.interrupted = false
|
|
305
306
|
|
|
306
307
|
const isOllama = state.model.startsWith("ollama:")
|
|
307
308
|
const controller = new AbortController()
|
|
309
|
+
|
|
310
|
+
// 30 second timeout
|
|
311
|
+
const timeout = setTimeout(() => {
|
|
312
|
+
controller.abort()
|
|
313
|
+
stopSpinner()
|
|
314
|
+
console.log("\n" + red("✗ Таймаут: API не отвечает 30 секунд. Проверь модель: /model"))
|
|
315
|
+
}, 30000)
|
|
316
|
+
|
|
308
317
|
const onSigint = () => {
|
|
309
318
|
state.interrupted = true
|
|
310
319
|
controller.abort()
|
|
@@ -455,6 +464,7 @@ async function runTurn(userText) {
|
|
|
455
464
|
}
|
|
456
465
|
}
|
|
457
466
|
} finally {
|
|
467
|
+
clearTimeout(timeout)
|
|
458
468
|
process.removeListener("SIGINT", onSigint)
|
|
459
469
|
}
|
|
460
470
|
console.log()
|