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).
42 lines
1.6 KiB
Bash
Executable File
42 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# migrate-config.sh — convert a legacy (v1) config.yaml to the v2 layout.
|
|
#
|
|
# Usage:
|
|
# scripts/migrate-config.sh # in-place rewrite of ./config.yaml
|
|
# scripts/migrate-config.sh --dry-run # print result to stdout + diff to stderr
|
|
# scripts/migrate-config.sh --config /path.yaml # operate on a different file
|
|
#
|
|
# The script delegates to the TypeScript CLI compiled at
|
|
# dist/scripts/migrate-config.js. If that file doesn't exist yet, we try
|
|
# the tsx runtime as a fallback (matches `npm run dev`'s approach), so
|
|
# the script works even before `npm run build` has run once.
|
|
#
|
|
# Exit codes mirror the Node CLI (see src/scripts/migrate-config.ts).
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
DIST_ENTRY="$PROJECT_DIR/dist/scripts/migrate-config.js"
|
|
TS_ENTRY="$PROJECT_DIR/src/scripts/migrate-config.ts"
|
|
|
|
if [[ -f "$DIST_ENTRY" ]]; then
|
|
exec node "$DIST_ENTRY" "$@"
|
|
fi
|
|
|
|
# Fallback path for pre-build environments. Prefer tsx > ts-node because
|
|
# the rest of the repo's npm scripts use tsx (see package.json:bench).
|
|
if command -v npx >/dev/null 2>&1; then
|
|
if [[ -f "$PROJECT_DIR/node_modules/tsx/dist/cli.mjs" ]] || npx --no-install tsx --version >/dev/null 2>&1; then
|
|
exec npx --no-install tsx "$TS_ENTRY" "$@"
|
|
fi
|
|
if [[ -f "$PROJECT_DIR/node_modules/ts-node/dist/bin.js" ]]; then
|
|
exec node --loader ts-node/esm "$TS_ENTRY" "$@"
|
|
fi
|
|
fi
|
|
|
|
echo "error: neither dist/scripts/migrate-config.js nor a TS runtime (tsx/ts-node) is available." >&2
|
|
echo " Run 'npm run build' first, or install tsx (npm i -D tsx)." >&2
|
|
exit 1
|