utils.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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 const promptSelector = '[data-component="prompt-input"]'
  10. export const terminalSelector = '[data-component="terminal"]'
  11. export function createSdk(directory?: string) {
  12. return createOpencodeClient({ baseUrl: serverUrl, directory, throwOnError: true })
  13. }
  14. export async function getWorktree() {
  15. const sdk = createSdk()
  16. const result = await sdk.path.get()
  17. const data = result.data
  18. if (!data?.worktree) throw new Error(`Failed to resolve a worktree from ${serverUrl}/path`)
  19. return data.worktree
  20. }
  21. export function dirSlug(directory: string) {
  22. return base64Encode(directory)
  23. }
  24. export function dirPath(directory: string) {
  25. return `/${dirSlug(directory)}`
  26. }
  27. export function sessionPath(directory: string, sessionID?: string) {
  28. return `${dirPath(directory)}/session${sessionID ? `/${sessionID}` : ""}`
  29. }