Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# Changelog
All notable changes to this project's latest version.

## [0.1.46] - 2025-12-20
## [0.1.47] - 2025-12-20

### Documentation

- Update changelog for v0.1.45
- Update changelog for v0.1.46

### Miscellaneous Tasks

- Update GitHub Actions workflows to use latest action versions
- Bump version to v0.1.46
- Bump version to v0.1.47

### Refactor

- Standardize output messages in build-windows-standalone.ps1

<!-- generated by git-cliff -->
77 changes: 39 additions & 38 deletions build_scripts/build-windows-standalone.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,28 @@

$ErrorActionPreference = "Stop"

Write-Host "🪟 RunAgent Windows Build Script (Standalone)" -ForegroundColor Cyan
Write-Host "[WINDOWS] RunAgent Windows Build Script (Standalone)" -ForegroundColor Cyan
Write-Host "==============================================" -ForegroundColor Cyan
Write-Host ""

# Check prerequisites
Write-Host "📋 Checking prerequisites..." -ForegroundColor White
Write-Host "[CHECK] Checking prerequisites..." -ForegroundColor White

# Check Python
if (-not (Get-Command python -ErrorAction SilentlyContinue)) {
Write-Host " Python 3 not found. Please install Python 3.9+" -ForegroundColor Red
Write-Host "[ERROR] Python 3 not found. Please install Python 3.9+" -ForegroundColor Red
Write-Host ""
Write-Host "Download from: https://www.python.org/downloads/" -ForegroundColor Yellow
exit 1
}

$PythonVersion = python --version
Write-Host " $PythonVersion found" -ForegroundColor Green
Write-Host "[OK] $PythonVersion found" -ForegroundColor Green

# Check for Visual Studio Build Tools
$VSWhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (-not (Test-Path $VSWhere)) {
Write-Host "⚠️ Visual Studio Build Tools not found" -ForegroundColor Yellow
Write-Host "[WARN] Visual Studio Build Tools not found" -ForegroundColor Yellow
Write-Host ""
Write-Host "Please install Visual Studio Build Tools:" -ForegroundColor Yellow
Write-Host "https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022" -ForegroundColor Yellow
Expand All @@ -39,40 +39,40 @@ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$ProjectRoot = Split-Path -Parent $ScriptDir
Set-Location $ProjectRoot

Write-Host "📁 Project root: $ProjectRoot" -ForegroundColor White
Write-Host "[DIR] Project root: $ProjectRoot" -ForegroundColor White

# Check if we're in the right directory
if (-not (Test-Path "pyproject.toml")) {
Write-Host " Error: pyproject.toml not found. Please run this script from the project root or build_scripts folder." -ForegroundColor Red
Write-Host "[ERROR] Error: pyproject.toml not found. Please run this script from the project root or build_scripts folder." -ForegroundColor Red
exit 1
}

# Setup virtual environment
Write-Host ""
Write-Host "📦 Setting up virtual environment..." -ForegroundColor White
Write-Host "[PKG] Setting up virtual environment..." -ForegroundColor White
if (-not (Test-Path ".venv")) {
python -m venv .venv
Write-Host " Virtual environment created" -ForegroundColor Green
Write-Host "[OK] Virtual environment created" -ForegroundColor Green
} else {
Write-Host " Virtual environment already exists" -ForegroundColor Green
Write-Host "[OK] Virtual environment already exists" -ForegroundColor Green
}

# Activate virtual environment
& ".\.venv\Scripts\Activate.ps1"

# Install dependencies
Write-Host ""
Write-Host "📥 Installing dependencies..." -ForegroundColor White
Write-Host "[DOWNLOAD] Installing dependencies..." -ForegroundColor White
pip install --upgrade pip --quiet
pip install -e . --quiet
pip install nuitka --quiet
pip install ordered-set --quiet
Write-Host " Dependencies installed" -ForegroundColor Green
Write-Host "[OK] Dependencies installed" -ForegroundColor Green

# Create entry point if it doesn't exist
if (-not (Test-Path "runagent_entry.py")) {
Write-Host ""
Write-Host "📝 Creating entry point file..." -ForegroundColor White
Write-Host "[FILE] Creating entry point file..." -ForegroundColor White
@'
#!/usr/bin/env python3
"""Nuitka entry point for RunAgent CLI"""
Expand All @@ -81,7 +81,7 @@ if __name__ == "__main__":
from runagent.cli.main import runagent
runagent()
'@ | Out-File -FilePath "runagent_entry.py" -Encoding UTF8
Write-Host " Entry point created" -ForegroundColor Green
Write-Host "[OK] Entry point created" -ForegroundColor Green
}

# Detect architecture
Expand All @@ -94,8 +94,8 @@ if ($env:ARCH) {
}

Write-Host ""
Write-Host "🖥️ Building for Windows-$Arch" -ForegroundColor White
Write-Host " This will take 5-10 minutes on first build..." -ForegroundColor White
Write-Host "[BUILD] Building for Windows-$Arch" -ForegroundColor White
Write-Host "[WAIT] This will take 5-10 minutes on first build..." -ForegroundColor White
Write-Host ""

$BuildDir = "dist\windows-$Arch"
Expand All @@ -115,7 +115,7 @@ New-Item -ItemType Directory -Force -Path $BuildDir | Out-Null

$FinalOutput = "runagent.exe"

Write-Host "🚀 Building Standalone Version (Fast Startup)..." -ForegroundColor Cyan
Write-Host "[START] Building Standalone Version (Fast Startup)..." -ForegroundColor Cyan

# STANDALONE NUITKA COMMAND
python -m nuitka `
Expand All @@ -142,76 +142,77 @@ python -m nuitka `
runagent_entry.py

Write-Host ""
Write-Host "🧹 Cleaning up build artifacts..." -ForegroundColor White
Write-Host "[CLEAN] Cleaning up build artifacts..." -ForegroundColor White
Remove-Item -Recurse -Force "$BuildDir\runagent_entry.build" -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force "$BuildDir\runagent_entry.onefile-build" -ErrorAction SilentlyContinue
Write-Host " Cleaned up temporary files" -ForegroundColor Green
Write-Host "[OK] Cleaned up temporary files" -ForegroundColor Green

Write-Host ""
Write-Host " Build complete!" -ForegroundColor Green
Write-Host "[OK] Build complete!" -ForegroundColor Green
Write-Host ""

# The binary is in the standalone folder
$DistExecutable = "$BuildDir\runagent_entry.dist\$FinalOutput"

if (Test-Path $DistExecutable) {
Write-Host " Found executable at: $DistExecutable" -ForegroundColor Green
Write-Host "[OK] Found executable at: $DistExecutable" -ForegroundColor Green

# Create a wrapper batch file for easy execution
$Wrapper = "$BuildDir\runagent.bat"
@"
$BatchContent = @'
@echo off
REM RunAgent wrapper script
set SCRIPT_DIR=%~dp0
"%SCRIPT_DIR%runagent_entry.dist\$FinalOutput" %*
"@ | Out-File -FilePath $Wrapper -Encoding ASCII
"%SCRIPT_DIR%runagent_entry.dist\runagent.exe" %*
'@
$BatchContent | Out-File -FilePath $Wrapper -Encoding ASCII

Write-Host ""
Write-Host "🧪 Testing binary..." -ForegroundColor White
Write-Host "[TEST] Testing binary..." -ForegroundColor White
& $DistExecutable --version
Write-Host ""
Write-Host " Success! Executable is ready" -ForegroundColor Green
Write-Host "[SUCCESS] Success! Executable is ready" -ForegroundColor Green
Write-Host ""

$FolderSize = (Get-ChildItem "$BuildDir\runagent_entry.dist" -Recurse | Measure-Object -Property Length -Sum).Sum / 1MB
$BinarySize = (Get-Item $DistExecutable).Length / 1MB
Write-Host "📊 Binary information:" -ForegroundColor White

Write-Host "[INFO] Binary information:" -ForegroundColor White
Write-Host " Distributable folder: $([math]::Round($FolderSize, 2)) MB"
Write-Host " Main binary: $([math]::Round($BinarySize, 2)) MB"
Write-Host ""
Write-Host "📦 Distribution structure:" -ForegroundColor White
Write-Host "[PKG] Distribution structure:" -ForegroundColor White
Write-Host " $BuildDir\runagent_entry.dist\ # Standalone folder with all dependencies"
Write-Host " $BuildDir\runagent.bat # Wrapper script (use this!)"
Write-Host ""

# Create zip for distribution
Write-Host "📦 Creating release archive..." -ForegroundColor White
Write-Host "[PKG] Creating release archive..." -ForegroundColor White
$ZipPath = "dist\runagent-windows-$Arch.zip"
if (Test-Path $ZipPath) {
Remove-Item $ZipPath
}
Compress-Archive -Path "$BuildDir\runagent_entry.dist" -DestinationPath $ZipPath -Force

$ZipSize = (Get-Item $ZipPath).Length / 1MB
Write-Host " Release archive created: $ZipPath ($([math]::Round($ZipSize, 2)) MB)" -ForegroundColor Green
Write-Host "[OK] Release archive created: $ZipPath ($([math]::Round($ZipSize, 2)) MB)" -ForegroundColor Green
Write-Host ""

Write-Host "💡 Usage:" -ForegroundColor White
Write-Host "[USAGE] Usage:" -ForegroundColor White
Write-Host " $BuildDir\runagent.bat --version"
Write-Host " $BuildDir\runagent.bat --help"
Write-Host ""
Write-Host " Performance test:" -ForegroundColor White
Write-Host "[PERF] Performance test:" -ForegroundColor White
Write-Host " Measure-Command { & $BuildDir\runagent.bat --help }"
Write-Host ""
Write-Host "💡 To install system-wide:" -ForegroundColor White
Write-Host "[TIP] To install system-wide:" -ForegroundColor White
Write-Host " 1. Copy $BuildDir\runagent_entry.dist to C:\Program Files\RunAgent"
Write-Host " 2. Add C:\Program Files\RunAgent to your PATH"
Write-Host ""
Write-Host "📝 Note: This creates a ~100-150MB folder instead of single file" -ForegroundColor Yellow
Write-Host "[NOTE] Note: This creates a ~100-150MB folder instead of single file" -ForegroundColor Yellow
Write-Host " But startup is 10-20x FASTER! (~1-2s instead of 15-20s)" -ForegroundColor Yellow
} else {
Write-Host " Binary file not found at $DistExecutable" -ForegroundColor Red
Write-Host "[ERROR] Binary file not found at $DistExecutable" -ForegroundColor Red
Write-Host ""
Write-Host "Looking for build output in $BuildDir\:" -ForegroundColor Yellow
Get-ChildItem $BuildDir
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ build-backend = "hatchling.build"

[project]
name = "runagent"
version = "0.1.46"
version = "0.1.47"
description = "A command-line tool and SDK for deploying, managing, and interacting with AI agents"
readme = "README.md"
requires-python = ">=3.9"
Expand Down Expand Up @@ -103,7 +103,7 @@ line_length = 88
skip = ["docs"]

[tool.mypy]
python_version = "0.1.46"
python_version = "0.1.47"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
Expand Down
2 changes: 1 addition & 1 deletion runagent-go/version.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package runagent

// Version represents the current version of the RunAgent Go SDK
const Version = "0.1.46"
const Version = "0.1.47"
2 changes: 1 addition & 1 deletion runagent-rust/runagent/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "runagent"
version = "0.1.46"
version = "0.1.47"
edition = "2021"
description = "RunAgent SDK for Rust - Client SDK for interacting with deployed AI agents"
license = "MIT"
Expand Down
4 changes: 2 additions & 2 deletions runagent-ts/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion runagent-ts/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "runagent",
"version": "0.1.46",
"version": "0.1.47",
"type": "module",
"files": [
"dist"
Expand Down
2 changes: 1 addition & 1 deletion runagent/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
built with frameworks like LangGraph, LangChain, and LlamaIndex.
"""

__version__ = "0.1.46"
__version__ = "0.1.47"

from .client import RunAgentClient

Expand Down
2 changes: 1 addition & 1 deletion runagent/__version__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.1.46"
__version__ = "0.1.47"