browse
Version:
Unified Browserbase CLI for browser automation and cloud APIs.
47 lines (46 loc) • 1.97 kB
JavaScript
import { Args, Flags } from "@oclif/core";
import { createBrowserbaseClient, outputJson, withBrowserbaseApi, } from "../../../lib/cloud/api.js";
import { apiCommonFlags, toApiOptions } from "../../../lib/cloud/flags.js";
import { reduceLogs } from "../../../lib/cloud/reduce-logs.js";
import { BrowseCommand } from "../../../base.js";
export default class SessionsLogs extends BrowseCommand {
static description = "Get Browserbase session logs.";
static examples = [
"browse cloud sessions logs <session-id>",
"browse cloud sessions logs <session-id> --only-errors",
"browse cloud sessions logs <session-id> --only-errors --failed-requests",
];
static args = {
id: Args.string({ required: true, description: "Session ID." }),
};
static flags = {
...apiCommonFlags,
"only-errors": Flags.boolean({
description: "Return only the high-signal error records (console errors/exceptions, HTTP 4xx/5xx, network failures) instead of the full CDP firehose.",
default: false,
}),
"failed-requests": Flags.boolean({
description: "With --only-errors, narrow to failed / error-status network requests only.",
default: false,
dependsOn: ["only-errors"],
}),
};
async run() {
const { args, flags } = await this.parse(SessionsLogs);
await withBrowserbaseApi("sessions", async () => {
const client = createBrowserbaseClient(toApiOptions(flags));
const raw = await client.sessions.logs.list(args.id);
if (flags["only-errors"]) {
const arr = Array.isArray(raw)
? raw
: (raw?.data ?? []);
outputJson(reduceLogs(arr, {
failedRequests: flags["failed-requests"],
}));
}
else {
outputJson(raw);
}
});
}
}