utils.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { createOpencodeClient } from "@opencode-ai/sdk/v2/client"
  2. import { base64Encode } from "@opencode-ai/util/encode"
  3. export const serverHost = process.env.PLAYWRIGHT_SERVER_HOST ?? "localhost"
  4. export const serverPort = process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"
  5. export const serverUrl = `http://${serverHost}:${serverPort}`
  6. export const serverName = `${serverHost}:${serverPort}`
  7. export const modKey = process.platform === "darwin" ? "Meta" : "Control"
  8. export const terminalToggleKey = "Control+Backquote"
  9. export function createSdk(directory?: string) {
  10. return createOpencodeClient({ baseUrl: serverUrl, directory, throwOnError: true })
  11. }
  12. export async function getWorktree() {
  13. const sdk = createSdk()
  14. const result = await sdk.path.get()
  15. const data = result.data
  16. if (!data?.worktree) throw new Error(`Failed to resolve a worktree from ${serverUrl}/path`)
  17. return data.worktree
  18. }
  19. export function dirSlug(directory: string) {
  20. return base64Encode(directory)
  21. }
  22. export function dirPath(directory: string) {
  23. return `/${dirSlug(directory)}`
  24. }
  25. export function sessionPath(directory: string, sessionID?: string) {
  26. return `${dirPath(directory)}/session${sessionID ? `/${sessionID}` : ""}`
  27. }