mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 00:02:31 +00:00
* fix(browser): add native-UA session profiles * test(browser): add Google sign-in UA probe * fix(browser): preserve native profile UA identity
80 lines
2.7 KiB
TypeScript
80 lines
2.7 KiB
TypeScript
import { formatBase64PayloadByteCount } from './base64-payload-byte-count'
|
|
import type {
|
|
BrowserProfileListResult,
|
|
BrowserScreenshotResult,
|
|
BrowserSnapshotResult,
|
|
BrowserTabCurrentResult,
|
|
BrowserTabListResult,
|
|
BrowserTabProfileCloneResult,
|
|
BrowserTabProfileShowResult,
|
|
BrowserTabShowResult
|
|
} from '../shared/runtime-types'
|
|
|
|
export function formatSnapshot(result: BrowserSnapshotResult): string {
|
|
const header = `page: ${result.browserPageId}\n${result.title} — ${result.url}\n`
|
|
return header + result.snapshot
|
|
}
|
|
|
|
export function formatScreenshot(result: BrowserScreenshotResult): string {
|
|
return `Screenshot captured (${result.format}, ${formatBase64PayloadByteCount(result.data)})`
|
|
}
|
|
|
|
export function formatTabList(result: BrowserTabListResult): string {
|
|
return formatTabListWithProfiles(result, false)
|
|
}
|
|
|
|
export function formatTabListWithProfiles(
|
|
result: BrowserTabListResult,
|
|
showProfile: boolean
|
|
): string {
|
|
if (result.tabs.length === 0) {
|
|
return 'No browser tabs open.'
|
|
}
|
|
return result.tabs
|
|
.map((t) => {
|
|
const marker = t.active ? '* ' : ' '
|
|
const profile = showProfile ? ` [${t.profileLabel ?? t.profileId ?? 'Unknown'}]` : ''
|
|
return `${marker}[${t.index}] ${t.browserPageId} ${t.title} — ${t.url}${profile}`
|
|
})
|
|
.join('\n')
|
|
}
|
|
|
|
export function formatBrowserProfileList(result: BrowserProfileListResult): string {
|
|
if (result.profiles.length === 0) {
|
|
return 'No browser profiles found.'
|
|
}
|
|
return result.profiles
|
|
.map((profile) => {
|
|
const marker = profile.scope === 'default' ? '* ' : ' '
|
|
const source = profile.source?.browserFamily ?? 'none'
|
|
const userAgent = profile.userAgentMode === 'native' ? ' ua:native' : ''
|
|
return `${marker}${profile.id} ${profile.label} ${profile.scope} source:${source}${userAgent}`
|
|
})
|
|
.join('\n')
|
|
}
|
|
|
|
export function formatTabShow(result: BrowserTabShowResult | BrowserTabCurrentResult): string {
|
|
const tab = result.tab
|
|
return [
|
|
`page: ${tab.browserPageId}`,
|
|
`title: ${tab.title}`,
|
|
`url: ${tab.url}`,
|
|
`active: ${tab.active}`,
|
|
`worktree: ${tab.worktreeId ?? 'unknown'}`,
|
|
`profile: ${tab.profileLabel ?? tab.profileId ?? 'unknown'}`
|
|
].join('\n')
|
|
}
|
|
|
|
export function formatTabProfileShow(result: BrowserTabProfileShowResult): string {
|
|
return [
|
|
`page: ${result.browserPageId}`,
|
|
`worktree: ${result.worktreeId ?? 'unknown'}`,
|
|
`profileId: ${result.profileId ?? 'default'}`,
|
|
`profile: ${result.profileLabel ?? result.profileId ?? 'default'}`
|
|
].join('\n')
|
|
}
|
|
|
|
export function formatTabProfileClone(result: BrowserTabProfileCloneResult): string {
|
|
return `Cloned ${result.sourceBrowserPageId} to ${result.browserPageId} (${result.profileLabel ?? result.profileId ?? 'default'})`
|
|
}
|