UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

90 lines (89 loc) 4.44 kB
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js"; import { d as pathExists } from "./fs-safe-B6pvPGnf.js"; import { n as resolvePreferredOpenClawTmpDir } from "./tmp-openclaw-dir-DnyL0lW9.js"; import "./temp-path-DcDoMvSD.js"; import "./string-coerce-runtime-GQa0ehRA.js"; import { t as createPluginSecretRefSetupCli } from "./secret-ref-runtime-DaSgXYun.js"; import "./security-runtime-Ckf0kc0h.js"; import { t as parseVaultSecretId } from "./vault-secret-id-r3Pg3gBq.js"; import { fileURLToPath } from "node:url"; import path from "node:path"; //#region extensions/vault/src/cli.ts const VAULT_PROVIDER_ALIAS = "vault"; function normalizeVaultSecretId(label, value) { try { parseVaultSecretId(value); return value; } catch { throw new Error(`Invalid ${label} Vault secret id: ${value}`); } } const vaultSecretRefSetupCli = createPluginSecretRefSetupCli({ productName: "Vault", secretIdLabel: "Vault secret id", secretIdPlaceholder: "vault-secret-id", defaultProviderAlias: VAULT_PROVIDER_ALIAS, pluginIntegration: { pluginId: "vault", integrationId: "vault" }, normalizeSecretId: normalizeVaultSecretId, defaultPlanPath: () => path.join(resolvePreferredOpenClawTmpDir(), `openclaw-vault-secrets-${process.pid}.json`) }); function writeLine(message = "") { process.stdout.write(`${message}\n`); } function writeJson(value) { process.stdout.write(`${JSON.stringify(value, null, 2)}\n`); } function resolverScriptPathCandidates(baseUrl) { return [fileURLToPath(new URL("../vault-secret-ref-resolver.js", baseUrl)), fileURLToPath(new URL("./extensions/vault/vault-secret-ref-resolver.js", baseUrl))]; } async function resolveResolverScriptPath(baseUrl = import.meta.url, exists = pathExists) { const candidates = resolverScriptPathCandidates(baseUrl); for (const candidate of candidates) if (await exists(candidate)) return candidate; return candidates[0]; } async function runStatus(config, options) { const { providerAlias, provider } = vaultSecretRefSetupCli.inspectProvider(config, options.providerAlias); const authMethod = normalizeOptionalString(process.env.OPENCLAW_VAULT_AUTH_METHOD) ?? "token"; const result = { providerAlias, provider, resolverScript: await resolveResolverScriptPath(), vaultAddr: normalizeOptionalString(process.env.VAULT_ADDR), authMethod, authMount: normalizeOptionalString(process.env.OPENCLAW_VAULT_AUTH_MOUNT) ?? (authMethod === "kubernetes" ? "kubernetes" : "jwt"), authRole: normalizeOptionalString(process.env.OPENCLAW_VAULT_AUTH_ROLE), hasJwtFile: Boolean(normalizeOptionalString(process.env.OPENCLAW_VAULT_JWT_FILE)), hasVaultTokenFile: Boolean(normalizeOptionalString(process.env.VAULT_TOKEN_FILE)), kvMount: normalizeOptionalString(process.env.OPENCLAW_VAULT_KV_MOUNT) ?? "secret", kvVersion: normalizeOptionalString(process.env.OPENCLAW_VAULT_KV_VERSION) ?? "2", hasVaultToken: Boolean(normalizeOptionalString(process.env.VAULT_TOKEN)) }; if (options.json) { writeJson(result); return; } writeLine(`Vault provider: ${provider.configured ? "configured" : "not configured"}`); if (provider.source) writeLine(`Source: ${provider.source}`); if (provider.command) writeLine(`Command: ${provider.command}`); if (provider.pluginIntegration) writeLine(`Plugin integration: ${provider.pluginIntegration.pluginId}:${provider.pluginIntegration.integrationId}`); writeLine(`Resolver: ${result.resolverScript}`); writeLine(`VAULT_ADDR: ${result.vaultAddr ?? "not set"}`); writeLine(`Auth method: ${result.authMethod}`); writeLine(`VAULT_TOKEN: ${result.hasVaultToken ? "set" : "not set"}`); writeLine(`VAULT_TOKEN_FILE: ${result.hasVaultTokenFile ? "set" : "not set"}`); writeLine(`Auth mount: ${result.authMount}`); writeLine(`Auth role: ${result.authRole ?? "not set"}`); writeLine(`OPENCLAW_VAULT_JWT_FILE: ${result.hasJwtFile ? "set" : "not set"}`); writeLine(`KV mount: ${result.kvMount}`); writeLine(`KV version: ${result.kvVersion}`); } function registerVaultCommands(params) { const vault = params.program.command("vault").description("Manage Vault SecretRefs"); vault.command("status").description("Show Vault SecretRef provider status").option("--json", "Print JSON status").option("--provider-alias <alias>", "Secret provider alias to inspect").action((options) => runStatus(params.config, options)); vaultSecretRefSetupCli.registerSetupCommand(vault); } //#endregion export { registerVaultCommands };