| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { createOpencodeClient } from "@opencode-ai/sdk/v2/client"
- import { base64Encode, checksum } from "@opencode-ai/util/encode"
- export const serverHost = process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"
- export const serverPort = process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"
- export const serverUrl = `http://${serverHost}:${serverPort}`
- export const serverName = `${serverHost}:${serverPort}`
- export const modKey = process.platform === "darwin" ? "Meta" : "Control"
- export const terminalToggleKey = "Control+Backquote"
- export function createSdk(directory?: string) {
- return createOpencodeClient({ baseUrl: serverUrl, directory, throwOnError: true })
- }
- export async function resolveDirectory(directory: string) {
- return createSdk(directory)
- .path.get()
- .then((x) => x.data?.directory ?? directory)
- }
- export async function getWorktree() {
- const sdk = createSdk()
- const result = await sdk.path.get()
- const data = result.data
- if (!data?.worktree) throw new Error(`Failed to resolve a worktree from ${serverUrl}/path`)
- return data.worktree
- }
- export function dirSlug(directory: string) {
- return base64Encode(directory)
- }
- export function dirPath(directory: string) {
- return `/${dirSlug(directory)}`
- }
- export function sessionPath(directory: string, sessionID?: string) {
- return `${dirPath(directory)}/session${sessionID ? `/${sessionID}` : ""}`
- }
- export function workspacePersistKey(directory: string, key: string) {
- const head = directory.slice(0, 12) || "workspace"
- const sum = checksum(directory) ?? "0"
- return `opencode.workspace.${head}.${sum}.dat:workspace:${key}`
- }
|