feat: initial public release (MAESTRO v0.1.0)

Open-source release of MAESTRO, an agent orchestration platform that runs
LLM-driven tasks through sandboxed tools, with a web UI. Apache-2.0.
See README.md and docs/ (getting-started, configuration, architecture).
This commit is contained in:
clade
2026-06-03 04:01:14 +00:00
committed by swallow
commit 7049a874f3
825 changed files with 184390 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
#!/usr/bin/env bash
#
# ミドルウェア・ランタイム依存の準備スクリプト
#
# npm install 後や依存バージョン更新後に実行して、
# npm パッケージ以外のランタイム依存が揃っていることを確認する。
#
# ./scripts/prepare.sh
#
set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$PROJECT_DIR"
OK=0
WARN=0
FAIL=0
pass() { echo "$1"; OK=$((OK + 1)); }
warn() { echo "$1"; WARN=$((WARN + 1)); }
fail() { echo "$1"; FAIL=$((FAIL + 1)); }
echo "=== ランタイム依存チェック ==="
echo ""
# -------------------------------------------------
# 1. Playwright ブラウザバイナリ
# -------------------------------------------------
echo "[1/4] Playwright ブラウザ..."
# playwright が要求する chromium のパスを取得
EXPECTED_PATH=$(node -e "
try {
const { chromium } = require('playwright');
console.log(chromium.executablePath());
} catch { process.exit(1); }
" 2>/dev/null) || EXPECTED_PATH=""
if [ -n "$EXPECTED_PATH" ] && [ -x "$EXPECTED_PATH" ]; then
pass "chromium: $EXPECTED_PATH"
else
echo " → ブラウザバイナリが見つかりません。インストール中..."
if npx playwright install chromium 2>&1 | tail -3; then
pass "chromium インストール完了"
else
fail "chromium のインストールに失敗しました。手動で 'npx playwright install chromium' を実行してください"
fi
fi
# システム共有ライブラリ(libnspr4, libnss3, libatk 等)の確認・インストール
# playwright install-deps は不足ライブラリを apt 等でインストールする(root 権限が必要)
if [ -n "$EXPECTED_PATH" ] && [ -x "$EXPECTED_PATH" ]; then
# ldd でリンク切れを簡易チェック
MISSING_LIBS=$(ldd "$EXPECTED_PATH" 2>/dev/null | grep "not found" || true)
if [ -n "$MISSING_LIBS" ]; then
echo " → 共有ライブラリが不足しています。インストール中..."
echo "$MISSING_LIBS" | head -5 | sed 's/^/ /'
if npx playwright install-deps chromium 2>&1 | tail -3; then
pass "システム依存ライブラリ インストール完了"
else
warn "システム依存ライブラリのインストールに失敗しました(root 権限が必要です)。手動で 'sudo npx playwright install-deps chromium' を実行してください"
fi
else
pass "システム依存ライブラリ: OK"
fi
fi
echo ""
# -------------------------------------------------
# 2. noVNC 依存(オプション)
# -------------------------------------------------
echo "[2/4] noVNC 依存(オプション)..."
NOVNC_DEPS=(Xvfb x11vnc websockify)
NOVNC_MISSING=()
for cmd in "${NOVNC_DEPS[@]}"; do
if command -v "$cmd" >/dev/null 2>&1; then
pass "$cmd: $(command -v "$cmd")"
else
NOVNC_MISSING+=("$cmd")
fi
done
if [ ${#NOVNC_MISSING[@]} -gt 0 ]; then
warn "未インストール: ${NOVNC_MISSING[*]} — noVNC CAPTCHA 解決を使う場合は ./scripts/setup-novnc.sh を実行してください"
fi
echo ""
# -------------------------------------------------
# 3. better-sqlite3 ネイティブモジュール
# -------------------------------------------------
echo "[3/4] ネイティブモジュール..."
if node -e "require('better-sqlite3')" 2>/dev/null; then
pass "better-sqlite3: ロード OK"
else
fail "better-sqlite3 のロードに失敗しました。'npm rebuild better-sqlite3' を試してください"
fi
echo ""
# -------------------------------------------------
# 4. 日本語フォント(AnnotateImage のテキスト描画用)
# -------------------------------------------------
echo "[4/4] 日本語フォント(オプション)..."
if command -v fc-list >/dev/null 2>&1; then
if fc-list :lang=ja 2>/dev/null | grep -q .; then
pass "日本語フォント: 利用可能"
else
warn "日本語フォント未検出 — AnnotateImage のテキスト描画が □□□ になる可能性があります。'sudo apt install fonts-noto-cjk' を実行してください"
fi
else
warn "fc-list コマンドなし — フォント検出をスキップしました"
fi
echo ""
# -------------------------------------------------
# サマリー
# -------------------------------------------------
echo "=== 結果: ✓ $OK$WARN$FAIL ==="
if [ "$FAIL" -gt 0 ]; then
echo ""
echo "エラーがあります。上記の指示に従って修正してください。"
exit 1
fi
echo ""
echo "準備完了です。"