#!/usr/bin/env bash set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" CANON_PATH="${1:-$ROOT/canon/system.yml}" BUILD_DIR="$ROOT/build/system" COMPILED_PATH="$BUILD_DIR/compiled_system.json" USER_GOVERNANCE_PATH="$BUILD_DIR/user_governance.json" CONTINUITY_PROVIDER_PATH="$BUILD_DIR/continuity_provider.json" CONTINUITY_OPERATOR_PATH="$BUILD_DIR/continuity_operator.json" PRODUCT_CANDIDATE_REGISTRY_PATH="$BUILD_DIR/product_candidate_registry.json" TYPED_MEMORY_RUNTIME_PATH="$BUILD_DIR/typed_memory_runtime.json" MEMORY_READINESS_PATH="$BUILD_DIR/memory_readiness.json" API_PATH="$ROOT/api/conversational_api_v0.json" RUNTIME_PATH="$ROOT/runtime/work_manifest_v0.json" CONTROL_PATH="$ROOT/policy/control_language_v0.json" INFERENCE_PATH="$ROOT/inference.yaml" if ! command -v yq >/dev/null 2>&1; then echo "compile_system.sh requires yq" >&2 exit 1 fi if ! command -v jq >/dev/null 2>&1; then echo "compile_system.sh requires jq" >&2 exit 1 fi if [ ! -f "$CANON_PATH" ]; then echo "canonical system file not found: $CANON_PATH" >&2 exit 1 fi mkdir -p "$BUILD_DIR" yq -o=json '.api' "$CANON_PATH" > "$API_PATH" yq -o=json '.runtime' "$CANON_PATH" > "$RUNTIME_PATH" yq -o=json '.control' "$CANON_PATH" > "$CONTROL_PATH" yq '.inference' "$CANON_PATH" > "$INFERENCE_PATH" yq -o=json '.continuity_provider' "$CANON_PATH" > "$CONTINUITY_PROVIDER_PATH" yq -o=json '.continuity_operator' "$CANON_PATH" > "$CONTINUITY_OPERATOR_PATH" python3 "$ROOT/scripts/compile_user_governance.py" >/dev/null python3 "$ROOT/scripts/build_product_candidate_registry.py" >/dev/null python3 "$ROOT/scripts/build_typed_memory_runtime.py" >/dev/null python3 "$ROOT/scripts/build_memory_readiness.py" >/dev/null jq -n \ --arg compiled_at "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \ --arg canon_path "$CANON_PATH" \ --arg user_governance_path "$USER_GOVERNANCE_PATH" \ --arg continuity_provider_path "$CONTINUITY_PROVIDER_PATH" \ --arg continuity_operator_path "$CONTINUITY_OPERATOR_PATH" \ --arg product_candidate_registry_path "$PRODUCT_CANDIDATE_REGISTRY_PATH" \ --arg typed_memory_runtime_path "$TYPED_MEMORY_RUNTIME_PATH" \ --arg memory_readiness_path "$MEMORY_READINESS_PATH" \ --arg api_path "$API_PATH" \ --arg runtime_path "$RUNTIME_PATH" \ --arg control_path "$CONTROL_PATH" \ --arg inference_path "$INFERENCE_PATH" \ --argjson canon "$(yq -o=json '.' "$CANON_PATH")" \ --argjson user_governance "$(cat "$USER_GOVERNANCE_PATH")" \ '{ compiled_at: $compiled_at, canon_path: $canon_path, outputs: { api: $api_path, runtime: $runtime_path, control: $control_path, inference: $inference_path, continuity_provider: $continuity_provider_path, continuity_operator: $continuity_operator_path, product_candidate_registry: $product_candidate_registry_path, typed_memory_runtime: $typed_memory_runtime_path, memory_readiness: $memory_readiness_path, user_governance: $user_governance_path }, canon: $canon, user_governance: $user_governance }' > "$COMPILED_PATH" printf '%s\n' "$COMPILED_PATH" printf '%s\n' "$USER_GOVERNANCE_PATH" printf '%s\n' "$CONTINUITY_PROVIDER_PATH" printf '%s\n' "$CONTINUITY_OPERATOR_PATH" printf '%s\n' "$PRODUCT_CANDIDATE_REGISTRY_PATH" printf '%s\n' "$TYPED_MEMORY_RUNTIME_PATH" printf '%s\n' "$MEMORY_READINESS_PATH" printf '%s\n' "$API_PATH" printf '%s\n' "$RUNTIME_PATH" printf '%s\n' "$CONTROL_PATH" printf '%s\n' "$INFERENCE_PATH"