File size: 2,297 Bytes
dd87944
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { http } from "./api";

function frameFromResult(data) {
  if (!data?.ok) return null;
  return {
    url: data.url,
    title: data.title,
    preview: data.text || data.preview,
    screenshot_base64: data.screenshot_base64,
    elements: data.elements || [],
    session_id: data.session_id || "default",
    action: data.action || "control",
    viewport_width: data.viewport_width || 1280,
    viewport_height: data.viewport_height || 900,
  };
}

const FAST = { fast: true };

export async function browserOpen(url, sessionId = "default") {
  const r = await http.post("/browser/open", { url, session_id: sessionId, ...FAST });
  return frameFromResult(r.data);
}

export async function browserSnapshot(sessionId = "default") {
  const r = await http.post("/browser/snapshot", { session_id: sessionId, ...FAST });
  return frameFromResult(r.data);
}

export async function browserClick(ref, sessionId = "default") {
  const r = await http.post("/browser/click", { ref, session_id: sessionId, ...FAST });
  return frameFromResult(r.data);
}

export async function browserClickAt(x, y, sessionId = "default") {
  const r = await http.post("/browser/click", { x, y, session_id: sessionId, ...FAST });
  return frameFromResult(r.data);
}

export async function browserType(ref, text, sessionId = "default", { clear = false, pressEnter = false } = {}) {
  const r = await http.post("/browser/type", {
    ref,
    text,
    session_id: sessionId,
    clear,
    press_enter: pressEnter,
    ...FAST,
  });
  return frameFromResult(r.data);
}

export async function browserScroll(sessionId = "default", direction = "down", amount = 600) {
  const r = await http.post("/browser/scroll", { session_id: sessionId, direction, amount, ...FAST });
  return frameFromResult(r.data);
}

/** Touche sans capture — instantané côté serveur. */
export async function browserKeyFire(sessionId = "default", { key, text } = {}) {
  await http.post("/browser/key", {
    session_id: sessionId,
    key,
    text,
    snapshot: false,
    ...FAST,
  });
}

export async function browserKey(sessionId = "default", { key, text } = {}) {
  const r = await http.post("/browser/key", {
    session_id: sessionId,
    key,
    text,
    snapshot: true,
    ...FAST,
  });
  return frameFromResult(r.data);
}