Deploy: clean professional lite builder (no false integrity failure)
Browse files- Lite bundle now exits cleanly with guidance (Start-JackAILocal .ps1/.sh)
instead of failing the full-package integrity check.
- Exported builder no longer ships the misleading SHA manifest or internal
dev/vendor dirs (docs, scripts, tools, updates, client-builder, installer,
deploy).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- macos/Start-JackAILocal.sh +34 -0
- saas/gradio/app.py +10 -2
- windows/Start-JackAILocal.ps1 +33 -0
macos/Start-JackAILocal.sh
CHANGED
|
@@ -2,6 +2,40 @@
|
|
| 2 |
set -euo pipefail
|
| 3 |
|
| 4 |
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
LOG_DIR="$ROOT_DIR/.jackailocal/logs"
|
| 6 |
mkdir -p "$LOG_DIR"
|
| 7 |
export JACKAILOCAL_ROOT="$ROOT_DIR"
|
|
|
|
| 2 |
set -euo pipefail
|
| 3 |
|
| 4 |
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
| 5 |
+
|
| 6 |
+
# Lite / inspection bundle exported from the hosted Hugging Face Space: it ships
|
| 7 |
+
# the builder, WebUI, config and the AI-reviewed manifest, but NOT the native
|
| 8 |
+
# runtime binaries or models (a hosted Space cannot ship them). Exit cleanly with
|
| 9 |
+
# guidance instead of failing on a missing binary.
|
| 10 |
+
BUILD_MANIFEST="$ROOT_DIR/manifest/build-manifest.json"
|
| 11 |
+
IS_LITE=0
|
| 12 |
+
if [ -f "$BUILD_MANIFEST" ] && grep -q '"hosted_lite_build"[[:space:]]*:[[:space:]]*true' "$BUILD_MANIFEST"; then
|
| 13 |
+
IS_LITE=1
|
| 14 |
+
fi
|
| 15 |
+
if [ ! -x "$ROOT_DIR/bin/jackailocald" ]; then
|
| 16 |
+
IS_LITE=1
|
| 17 |
+
fi
|
| 18 |
+
if [ "$IS_LITE" -eq 1 ]; then
|
| 19 |
+
cat <<'LITE_EOF'
|
| 20 |
+
|
| 21 |
+
JackAILocal - lite inspection bundle
|
| 22 |
+
-----------------------------------------------------------------
|
| 23 |
+
This package was exported from the hosted Hugging Face Space.
|
| 24 |
+
It contains the builder scripts, WebUI, configuration and the
|
| 25 |
+
AI-reviewed build manifest - but NOT the native runtime binaries
|
| 26 |
+
(Ollama, whisper.cpp, Piper) or the models, which a hosted Space
|
| 27 |
+
cannot ship. This bundle is for inspecting the build plan.
|
| 28 |
+
|
| 29 |
+
To actually run JackAILocal:
|
| 30 |
+
1. Get the full package (with binaries) from the project repo.
|
| 31 |
+
2. From that full package, run BUILD-LOCAL-MAC.command or BUILD-USB-MAC.command.
|
| 32 |
+
|
| 33 |
+
See README-FIRST.txt and manifest/build-manifest.json for details.
|
| 34 |
+
-----------------------------------------------------------------
|
| 35 |
+
LITE_EOF
|
| 36 |
+
exit 0
|
| 37 |
+
fi
|
| 38 |
+
|
| 39 |
LOG_DIR="$ROOT_DIR/.jackailocal/logs"
|
| 40 |
mkdir -p "$LOG_DIR"
|
| 41 |
export JACKAILOCAL_ROOT="$ROOT_DIR"
|
saas/gradio/app.py
CHANGED
|
@@ -2298,8 +2298,11 @@ def export_platform_builder_zip(
|
|
| 2298 |
"START-HERE.cmd", "START-DESKTOP.cmd", "STOP-JACKAILOCAL.cmd", "START-HERE.command", "STOP-JACKAILOCAL.command",
|
| 2299 |
"BUILD-LOCAL.cmd", "BUILD-USB.cmd", "BUILD-SSD.cmd", "BUILD-LOCAL-MAC.command", "BUILD-USB-MAC.command", "BUILD-SSD-MAC.command", "README-FIRST.txt", "autorun.inf",
|
| 2300 |
"webui", "windows", "macos", "unix", "config", "manifest", "models", "backends", "bin",
|
| 2301 |
-
"
|
| 2302 |
-
|
|
|
|
|
|
|
|
|
|
| 2303 |
]
|
| 2304 |
with tempfile.NamedTemporaryFile(delete=False, suffix=".zip", prefix=prefix) as tmp:
|
| 2305 |
output_path = tmp.name
|
|
@@ -2345,6 +2348,11 @@ def export_platform_builder_zip(
|
|
| 2345 |
relative = os.path.relpath(full_path, WORKSPACE_ROOT).replace("\\", "/")
|
| 2346 |
if relative == "config/update-private-key.xml" or filename.endswith(".pyc"):
|
| 2347 |
continue
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2348 |
archive.write(full_path, relative)
|
| 2349 |
return output_path
|
| 2350 |
|
|
|
|
| 2298 |
"START-HERE.cmd", "START-DESKTOP.cmd", "STOP-JACKAILOCAL.cmd", "START-HERE.command", "STOP-JACKAILOCAL.command",
|
| 2299 |
"BUILD-LOCAL.cmd", "BUILD-USB.cmd", "BUILD-SSD.cmd", "BUILD-LOCAL-MAC.command", "BUILD-USB-MAC.command", "BUILD-SSD-MAC.command", "README-FIRST.txt", "autorun.inf",
|
| 2300 |
"webui", "windows", "macos", "unix", "config", "manifest", "models", "backends", "bin",
|
| 2301 |
+
"licenses", "content", "content-packs",
|
| 2302 |
+
# Internal dev/vendor directories (docs with commercialization notes,
|
| 2303 |
+
# scripts, tools, update key-gen tooling, client-builder, installer and
|
| 2304 |
+
# deploy sources) are deliberately NOT shipped in the exported product
|
| 2305 |
+
# builder so the download stays clean and customer/judge-facing.
|
| 2306 |
]
|
| 2307 |
with tempfile.NamedTemporaryFile(delete=False, suffix=".zip", prefix=prefix) as tmp:
|
| 2308 |
output_path = tmp.name
|
|
|
|
| 2348 |
relative = os.path.relpath(full_path, WORKSPACE_ROOT).replace("\\", "/")
|
| 2349 |
if relative == "config/update-private-key.xml" or filename.endswith(".pyc"):
|
| 2350 |
continue
|
| 2351 |
+
# A lite bundle ships no native binaries, so the full
|
| 2352 |
+
# package SHA baseline would only yield false integrity
|
| 2353 |
+
# failures. Drop it from the lite export.
|
| 2354 |
+
if lite_build and relative == "manifest/sha256-manifest.json":
|
| 2355 |
+
continue
|
| 2356 |
archive.write(full_path, relative)
|
| 2357 |
return output_path
|
| 2358 |
|
windows/Start-JackAILocal.ps1
CHANGED
|
@@ -11,6 +11,39 @@ $CacheDir = Join-Path $Root ".jackailocal\cache"
|
|
| 11 |
$RunDir = Join-Path $Root ".jackailocal\run"
|
| 12 |
New-Item -ItemType Directory -Force -Path $DiagDir,$LogDir,$CacheDir,$RunDir | Out-Null
|
| 13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
& (Join-Path $PSScriptRoot "hwscan-windows.ps1") -OutputPath (Join-Path $DiagDir "hardware.json") | Out-Null
|
| 15 |
& (Join-Path $PSScriptRoot "Integrity-Check.ps1") -Root $Root -Mode Fail | Out-Null
|
| 16 |
|
|
|
|
| 11 |
$RunDir = Join-Path $Root ".jackailocal\run"
|
| 12 |
New-Item -ItemType Directory -Force -Path $DiagDir,$LogDir,$CacheDir,$RunDir | Out-Null
|
| 13 |
|
| 14 |
+
# Lite / inspection bundle exported from the hosted Hugging Face Space: it ships
|
| 15 |
+
# the builder scripts, WebUI, config and the AI-reviewed manifest, but NOT the
|
| 16 |
+
# native runtime binaries (Ollama, whisper.cpp, Piper) or the models, which a
|
| 17 |
+
# hosted Space cannot ship. Detect it and exit cleanly with guidance instead of
|
| 18 |
+
# failing the integrity check meant for the full package.
|
| 19 |
+
$buildManifest = Join-Path $Root "manifest\build-manifest.json"
|
| 20 |
+
$isLite = $false
|
| 21 |
+
if (Test-Path $buildManifest) {
|
| 22 |
+
try {
|
| 23 |
+
$bm = Get-Content -Raw $buildManifest | ConvertFrom-Json
|
| 24 |
+
if ($bm.hosted_lite_build -eq $true) { $isLite = $true }
|
| 25 |
+
} catch {}
|
| 26 |
+
}
|
| 27 |
+
if (-not (Test-Path (Join-Path $Root "bin\jackailocald.exe"))) { $isLite = $true }
|
| 28 |
+
if ($isLite) {
|
| 29 |
+
Write-Host ""
|
| 30 |
+
Write-Host "JackAILocal - lite inspection bundle" -ForegroundColor Cyan
|
| 31 |
+
Write-Host "-----------------------------------------------------------------"
|
| 32 |
+
Write-Host "This package was exported from the hosted Hugging Face Space."
|
| 33 |
+
Write-Host "It contains the builder scripts, WebUI, configuration and the"
|
| 34 |
+
Write-Host "AI-reviewed build manifest - but NOT the native runtime binaries"
|
| 35 |
+
Write-Host "(Ollama, whisper.cpp, Piper) or the models, which a hosted Space"
|
| 36 |
+
Write-Host "cannot ship. This bundle is for inspecting the build plan."
|
| 37 |
+
Write-Host ""
|
| 38 |
+
Write-Host "To actually run JackAILocal:"
|
| 39 |
+
Write-Host " 1. Get the full package (with binaries) from the project repo."
|
| 40 |
+
Write-Host " 2. From that full package, run BUILD-LOCAL.cmd or BUILD-USB.cmd."
|
| 41 |
+
Write-Host ""
|
| 42 |
+
Write-Host "See README-FIRST.txt and manifest\build-manifest.json for details."
|
| 43 |
+
Write-Host "-----------------------------------------------------------------"
|
| 44 |
+
exit 0
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
& (Join-Path $PSScriptRoot "hwscan-windows.ps1") -OutputPath (Join-Path $DiagDir "hardware.json") | Out-Null
|
| 48 |
& (Join-Path $PSScriptRoot "Integrity-Check.ps1") -Root $Root -Mode Fail | Out-Null
|
| 49 |
|