URI-Scheme 值參照
script_vars.interpolate 把單一間接寫死(${secrets.NAME} → vault),而 AssetStore 的憑證
參照僅限 vault 名稱。沒有一個通用、可插拔的讀取時間接機制 —— 也就是現代設定模式:儲存一個*指標*
(env://TOKEN、file://./token、secret://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 分類下的命令提供。