URI-Scheme 值參照

script_vars.interpolate 把單一間接寫死(${secrets.NAME} → vault),而 AssetStore 的憑證 參照僅限 vault 名稱。沒有一個通用、可插拔的讀取時間接機制 —— 也就是現代設定模式:儲存一個*指標* (env://TOKENfile://./tokensecret://api-key)而非值本身。本功能補上這個解析器。

純標準函式庫(os / re);不匯入 PySide6。env 讀取器、secret 解析器與基底目錄皆可注入,因此 解析安全且在 CI 中具決定性。

無頭 API

from je_auto_control import resolve_ref, resolve_refs_in, RefResolver

token = resolve_ref("env://API_TOKEN")
key = resolve_ref("file://./secrets/key.pem")

config = resolve_refs_in({
    "token": "env://API_TOKEN",
    "db": {"password": "secret://db-password"},
})

resolve_ref 解析單一參照:env:// 讀取環境變數(來自可注入的 mapping,否則回退 os.environ), file:// 讀取檔案(可選的 base_dir realpath 防穿越保護),``secret://`` 委派給可注入的解析器或 governance 憑證 broker。resolve_refs_in 走訪巢狀 dict/list 並就地解析每個參照,非參照值保持不變。 is_ref 測試一個值,``RefResolver`` 把可注入後端打包以便重複使用。無法解析或未知 scheme 的參照會拋出 SecretRefError

執行器命令

AC_resolve_ref 把單一 ref 解析成 {value};``AC_resolve_refs`` 解析 obj 內每個參照並回傳 {resolved}。兩者皆以 MCP 工具(ac_resolve_ref / ac_resolve_refs)以及 Script Builder 中 Security 分類下的命令提供。