/** * brand.ts — MCP tool 名前綴的單一真相源(single source of truth)。 * * 為什麼存在(leo 硬要求 2): * 歷史上 tool 名前綴(早期 "u6u_"、對外改名後應為 "arcrun_")被明碼散寫在 * ~39 個 tool 檔裡,每次 rebrand 都得逐檔手改、極易漏 → u6u 洩漏給用戶。 * 收斂成這一個常數後,未來再 rebrand「只改這一行」。 * * 用法: * import { toolName } from "../brand.js"; * server.tool(toolName("push_workflow"), ...) // → "arcrun_push_workflow" * * 語意後綴(push_workflow / list_tags …)保留可讀,只有「品牌前綴」被變數化。 * * 前綴預設 "arcrun"。內部另留一個 rebrand 過渡 / 單元測試用的覆蓋鉤子 * (ARCRUN_TOOL_PREFIX,經 globalThis.process 安全取值)——但 Cloudflare * Workers runtime 沒有 process 全域,部署後此覆蓋「基本不生效」、一律 fallback 到 * "arcrun"。**這不是對外 / 用戶可用特性,勿寫進對外文件**;正式 rebrand 請直接改本檔預設值。 */ const envPrefix = (globalThis as { process?: { env?: Record } }) .process?.env?.ARCRUN_TOOL_PREFIX; export const TOOL_PREFIX = envPrefix || "arcrun"; /** 把語意後綴組成完整 tool 名,例:toolName("whoami") → "arcrun_whoami"。 */ export const toolName = (suffix: string): string => `${TOOL_PREFIX}_${suffix}`;