import { pathToFileURL } from "node:url"; import { splitServiceCredentialFile, type ConsumerCredentialProvider, } from "../src/runtime/credential-compartments.js"; export async function main(arguments_: string[] = process.argv.slice(2)): Promise { const source = valueAfter(arguments_, "--source"); const outputDirectory = valueAfter(arguments_, "--output-dir"); if (!source || !outputDirectory) { throw new Error("Usage: split-service-credentials --source --output-dir [--consumer-providers letta,letta-local,tinker,openai,openai-compatible]"); } const providers = (valueAfter(arguments_, "--consumer-providers") ?? "letta") .split(",") .map((value) => value.trim()) .filter(Boolean) as ConsumerCredentialProvider[]; for (const provider of providers) { if (!(["letta", "letta-local", "tinker", "openai", "openai-compatible"] as string[]).includes(provider)) { throw new Error(`Unsupported consumer credential provider: ${provider}`); } } const receipt = await splitServiceCredentialFile(source, outputDirectory, { consumerProviders: providers }); process.stdout.write(`${JSON.stringify(receipt, null, 2)}\n`); } function valueAfter(arguments_: string[], flag: string): string | undefined { const index = arguments_.indexOf(flag); return index >= 0 ? arguments_[index + 1] : undefined; } if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { await main(); }