#!/bin/zsh set -euo pipefail script_dir=$(cd "$(dirname "$0")" && pwd) repo_root=$(cd "$script_dir/../../.." && pwd) model_name='Dolphin3.0-Llama3.2-3B-stateful-int4.mlpackage' model_root="$script_dir/ModelAssets" model_path="$model_root/$model_name" if command -v hf >/dev/null 2>&1; then hf_command=(hf) elif command -v uvx >/dev/null 2>&1; then hf_command=(uvx --from 'huggingface_hub[cli]' hf) else print -u2 'Install the hf CLI or uv before preparing the model.' exit 1 fi mkdir -p "$model_root" "${hf_command[@]}" download ales27pm/Dolphin3.0-CoreML \ --revision v2.0.0 \ --include "$model_name/**" \ --local-dir "$model_root" verify_file() { local relative_path=$1 local expected=$2 local actual actual=$(shasum -a 256 "$model_path/$relative_path" | awk '{print $1}') if [[ "$actual" != "$expected" ]]; then print -u2 "Hash mismatch for $relative_path: $actual" exit 1 fi } verify_file 'Data/com.apple.CoreML/model.mlmodel' \ 'a34a00a253c98153cf3b231105493edddde532086e224443e40b255b0f10a924' verify_file 'Data/com.apple.CoreML/weights/weight.bin' \ '6240edc377b1a0158812454c4bb6e3053d8e8a75a7eedb751b9740fffdfd3e15' verify_file 'Manifest.json' \ '5b8ac347a822f02ba3a6d9ccff60dd723f2649424c8e88570961f12b1c59afb6' verify_repo_file() { local relative_path=$1 local expected=$2 local source_path="$repo_root/$relative_path" local actual if [[ ! -f "$source_path" ]]; then print -u2 "Missing bundled tokenizer resource: $source_path" exit 1 fi actual=$(shasum -a 256 "$source_path" | awk '{print $1}') if [[ "$actual" != "$expected" ]]; then print -u2 "Hash mismatch for $relative_path: $actual" exit 1 fi } verify_repo_file 'config.json' \ 'e21ff53ea39726f972362beba869807216775d5e308bc2f531784846c06a0249' verify_repo_file 'generation_config.json' \ 'e627b5a8b2dc371f90388947ada64fa6e71de0f991c04c835f0c0bc97e305a4f' verify_repo_file 'special_tokens_map.json' \ '2df2c4620bb1a9eb877bc7c90c7fa04608bda9fa7c0cf2cdcc0a17b849649683' verify_repo_file 'tokenizer.json' \ 'e40b93124a3e29f62d5f4ff41be56cb2af34ecacf9239acd9da53a98860380b5' verify_repo_file 'tokenizer_config.json' \ '51ad9580aba8d00016efda43357185a0d8ff9884584dcc82ab58ca552afd14e1' if command -v xcodegen >/dev/null 2>&1; then xcodegen generate --spec "$script_dir/project.yml" --project "$script_dir" else print 'Assets verified. Install XcodeGen and run xcodegen generate before opening the app.' fi print "Prepared and verified the model package and tokenizer resources."