UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

49 lines (48 loc) • 2.7 kB
import { a as readPublishedXAllowlist, r as normalizeXUserId } from "./allowlist-ZXKTf1Qk.mjs"; import { t as getXRuntime } from "./runtime-DJewOfvF.mjs"; //#region extensions/x/src/guest-tools.ts const X_GUEST_TOOLS = [ "read", "ls", "sessions_spawn", "sessions_yield", "subagents" ]; //#endregion //#region extensions/x/src/guest-policy.ts function supportsXGuestHelpers(runtime = getXRuntime()) { return runtime.capabilities?.includes("sender-restricted-hidden-helpers-v1") === true; } function resolveXGuestSettings(account) { return { enabled: account.config.guests?.enabled === true, maxMentionsPerAuthorPerDay: account.config.guests?.maxMentionsPerAuthorPerDay ?? 5, threadContextMaxPosts: account.config.guests?.threadContextMaxPosts ?? 10 }; } function resolveXSenderTier(account, senderId) { const id = senderId && normalizeXUserId(senderId); const allowed = [...account.config.allowFrom ?? [], ...readPublishedXAllowlist(getXRuntime(), account.accountId, account.config.verifiedFromGitHub)]; return id && allowed.some((entry) => normalizeXUserId(entry) === id) ? "maintainer" : "guest"; } function resolveXGuestToolPolicy(account) { const configured = account.config.guests?.tools; const helpersAvailable = supportsXGuestHelpers(); const allow = X_GUEST_TOOLS.filter((name) => (helpersAvailable || name === "read" || name === "ls") && (!configured?.allow || configured.allow.includes(name))); return allow.length ? { allow, deny: ["skills_read", ...configured?.deny ?? []] } : { deny: ["*"] }; } function formatXSenderLine(tier, authorId, user, github) { const inline = (text) => text.replace(/[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/gu, " ").trim(); const label = [user?.username ? `@${inline(user.username)}` : "", user?.name ? `(${inline(user.name)})` : ""].filter(Boolean).join(" "); const sender = `${label ? `${label}, ` : ""}X user id ${authorId}`; if (tier === "maintainer") { if (github) return `This is from a verified user: ${sender}, GitHub @${inline(github.entry.githubLogin)} with write access to ${inline(github.repo)}.`; return `This is from a verified user: ${sender}, on the maintainer allowlist.`; } return `This is from a guest: ${sender}. Guest tier: answer from the OpenClaw repo only; ${supportsXGuestHelpers() ? "hidden helpers must use the same agent and repository. You cannot open visible work sessions" : "this host supports read-only guest answers. You cannot start helpers or work sessions"}, write, run commands, or read unrelated sessions for guests.`; } //#endregion export { supportsXGuestHelpers as a, resolveXSenderTier as i, resolveXGuestSettings as n, X_GUEST_TOOLS as o, resolveXGuestToolPolicy as r, formatXSenderLine as t };