UNPKG

browse

Version:

Unified Browserbase CLI for browser automation and cloud APIs.

56 lines (55 loc) 2.54 kB
import { Flags } from "@oclif/core"; import { createBrowserbaseClient, outputJson, resolveBody, withBrowserbaseApi, } from "../../../lib/cloud/api.js"; import { contextNameRequirement, getContextAlias, isValidContextName, saveContextAlias, } from "../../../lib/cloud/contexts-store.js"; import { apiCommonFlags, toApiOptions } from "../../../lib/cloud/flags.js"; import { fail } from "../../../lib/errors.js"; import { BrowseCommand } from "../../../base.js"; export default class ContextsCreate extends BrowseCommand { static description = "Create a Browserbase context. Pass --name to save a local alias you can reuse instead of the context ID."; static examples = [ "browse cloud contexts create", "browse cloud contexts create --name github", `browse cloud contexts create --body '{"region":"us-west-2"}'`, `echo '{"region":"us-west-2"}' | browse cloud contexts create --stdin`, ]; static flags = { ...apiCommonFlags, name: Flags.string({ description: "Save a local alias for the new context so you can reuse it by name.", helpValue: "<name>", }), body: Flags.string({ description: "Optional JSON request body.", helpValue: "<body>", }), stdin: Flags.boolean({ description: "Read JSON request body from stdin.", }), }; async run() { const { flags } = await this.parse(ContextsCreate); const name = flags.name; if (name !== undefined) { if (!isValidContextName(name)) { fail(`Invalid context name "${name}". ${contextNameRequirement()}`); } if (await getContextAlias(name)) { fail(`A context named "${name}" already exists locally. Choose another name or remove it with "browse cloud contexts delete ${name}".`); } } await withBrowserbaseApi("contexts", async () => { const client = createBrowserbaseClient(toApiOptions(flags)); const body = await resolveBody({ body: flags.body, stdin: flags.stdin }); const context = await client.contexts.create(body); if (name !== undefined && context.id) { await saveContextAlias(name, { id: context.id, createdAt: new Date().toISOString(), }); outputJson({ ...context, name }); return; } outputJson(context); }); } }