openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
56 lines (55 loc) • 2.38 kB
JavaScript
import { w as parseStrictPositiveInteger } from "./number-coercion-CLj0HTDM.js";
import { r as truncateUtf16Safe } from "./utf16-slice-D_ngcYKd.js";
import "./number-runtime-Cy4drVnh.js";
import "./text-utility-runtime-BjzvUG99.js";
//#region extensions/onepassword/src/cli.ts
function parseLimit(value) {
if (value === void 0) return 50;
const parsed = parseStrictPositiveInteger(value);
if (parsed === void 0 || parsed > 1e3) throw new Error("--limit must be an integer from 1 to 1000");
return parsed;
}
function truncateReason(reason) {
return reason.length <= 80 ? reason : `${truncateUtf16Safe(reason, 77)}...`;
}
async function buildStatus(config, opClient) {
const policies = {
auto: 0,
approve: 0,
deny: 0
};
for (const item of Object.values(config?.items ?? {})) policies[item.policy] += 1;
return {
tokenFilePresent: await opClient.tokenFilePresent(),
opBinaryResolved: Boolean(opClient.opBin),
opBinaryPath: opClient.opBin ?? null,
itemCount: Object.keys(config?.items ?? {}).length,
policyCounts: policies
};
}
async function readAuditRows(auditStore, limit) {
return (await auditStore.entries()).toSorted((left, right) => right.value.timestampMs - left.value.timestampMs || right.key.localeCompare(left.key)).slice(0, limit).map(({ value }) => {
const row = {
timestamp: new Date(value.timestampMs).toISOString(),
agent: value.agentId,
slug: value.slug,
outcome: value.outcome,
reason: truncateReason(value.reason)
};
if (value.errorCode) row.errorCode = value.errorCode;
return row;
});
}
function registerOnePasswordCommands(context) {
const write = context.write ?? ((message) => process.stdout.write(`${message}\n`));
const command = context.program.command("onepassword").description("Inspect the 1Password broker");
context.registerAdditionalCommands?.(command);
command.command("status").description("Show broker readiness without secret values").action(async () => {
write(JSON.stringify(await buildStatus(context.resolveConfig(), context.resolveOpClient()), null, 2));
});
command.command("audit").description("Show recent 1Password access audit rows").option("--limit <number>", "Maximum rows to print", "50").action(async (options) => {
write(JSON.stringify(await readAuditRows(context.auditStore, parseLimit(options.limit)), null, 2));
});
}
//#endregion
export { registerOnePasswordCommands };