@agentorg/computer 0.0.18 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ export interface paths {
11
11
  path?: never;
12
12
  cookie?: never;
13
13
  };
14
- /** What this service is and how it isolates its computers. */
14
+ /** What this service offers: this computer, the kinds of computer it can make, and the browsers that can go with each, every one ready or not and why. */
15
15
  get: operations["getInfo"];
16
16
  put?: never;
17
17
  post?: never;
@@ -21,6 +21,95 @@ export interface paths {
21
21
  patch?: never;
22
22
  trace?: never;
23
23
  };
24
+ "/v1/connection": {
25
+ parameters: {
26
+ query?: never;
27
+ header?: never;
28
+ path?: never;
29
+ cookie?: never;
30
+ };
31
+ /** Who is connected to the service: each client that holds a WebSocket open at this same path, with the control token in its Authorization header and its name as `?name=`. It carries nothing either way, and one that stops answering the service's pings is dropped. */
32
+ get: operations["getConnection"];
33
+ put?: never;
34
+ post?: never;
35
+ delete?: never;
36
+ options?: never;
37
+ head?: never;
38
+ patch?: never;
39
+ trace?: never;
40
+ };
41
+ "/v1/setup": {
42
+ parameters: {
43
+ query?: never;
44
+ header?: never;
45
+ path?: never;
46
+ cookie?: never;
47
+ };
48
+ /** For each part of the service's machine an agent can use, the person's switch, whether it has all it needs, and each thing it needs, read afresh each time. */
49
+ get: operations["getSetup"];
50
+ put?: never;
51
+ post?: never;
52
+ delete?: never;
53
+ options?: never;
54
+ head?: never;
55
+ patch?: never;
56
+ trace?: never;
57
+ };
58
+ "/v1/setup/{capability}": {
59
+ parameters: {
60
+ query?: never;
61
+ header?: never;
62
+ path: {
63
+ capability: components["schemas"]["Switch"];
64
+ };
65
+ cookie?: never;
66
+ };
67
+ get?: never;
68
+ /** Set a part's switch, which lasts across restarts. Turning it on, or on again, also asks for everything the part is missing, as asking for it with no need named does. Where that couldn't be started, it answers 409, saying why, and the switch stays on. */
69
+ put: operations["setSetup"];
70
+ post?: never;
71
+ delete?: never;
72
+ options?: never;
73
+ head?: never;
74
+ patch?: never;
75
+ trace?: never;
76
+ };
77
+ "/v1/setup/{capability}/ask": {
78
+ parameters: {
79
+ query?: never;
80
+ header?: never;
81
+ path: {
82
+ capability: components["schemas"]["Switch"];
83
+ };
84
+ cookie?: never;
85
+ };
86
+ get?: never;
87
+ put?: never;
88
+ /** Ask the person, on the service's machine, macOS only, for one thing a part needs, or, with none named, for everything it is missing. screen-recording or accessibility, while it is missing: Cua Driver's own grant, its app started first, which makes the system's requests in its own order, Accessibility first. For a driver an app hosts, the app asks, for that grant alone. Then that grant's own pane in System Settings opens. chrome or edge: that browser opens at its inspect page, where remote debugging is switched on. With none named, the screen's grant while either is missing, and the first browser installed, Chrome before Edge, while none is on. It answers once the steps have started, with each part then; what the person does next is read afresh later. A browser the service was given only the folder of, the person opens. Elsewhere it asks for nothing. */
89
+ post: operations["askSetup"];
90
+ delete?: never;
91
+ options?: never;
92
+ head?: never;
93
+ patch?: never;
94
+ trace?: never;
95
+ };
96
+ "/v1/acting": {
97
+ parameters: {
98
+ query?: never;
99
+ header?: never;
100
+ path?: never;
101
+ cookie?: never;
102
+ };
103
+ /** Who is acting now on the computers attached to this machine, all of them at once: each one, on what, and when they last acted there, the most recent first, as each computer's presence surface has it. A computer in a container isn't included: its own presence surface has it. */
104
+ get: operations["getActing"];
105
+ put?: never;
106
+ post?: never;
107
+ delete?: never;
108
+ options?: never;
109
+ head?: never;
110
+ patch?: never;
111
+ trace?: never;
112
+ };
24
113
  "/v1/computers": {
25
114
  parameters: {
26
115
  query?: never;
@@ -31,7 +120,10 @@ export interface paths {
31
120
  /** List the computers. */
32
121
  get: operations["listComputers"];
33
122
  put?: never;
34
- /** Create a computer. It answers once the computer is running. */
123
+ /**
124
+ * Create a computer. It answers once the computer is running.
125
+ * @description Meanwhile, once any `copyFrom` copy is done, it is listed by `listComputers` as `starting`, with the name and metadata given here, its `reason`, and its image's `progress` where that is counted: that is how a caller shows a computer being made before `create` has answered.
126
+ */
35
127
  post: operations["createComputer"];
36
128
  delete?: never;
37
129
  options?: never;
@@ -39,6 +131,23 @@ export interface paths {
39
131
  patch?: never;
40
132
  trace?: never;
41
133
  };
134
+ "/v1/computers/attach": {
135
+ parameters: {
136
+ query?: never;
137
+ header?: never;
138
+ path?: never;
139
+ cookie?: never;
140
+ };
141
+ get?: never;
142
+ put?: never;
143
+ /** Attach this computer, the machine the service runs on, whole: its files and commands reach all of it, as whoever started the service. Each call attaches it as a computer of its own, with its own id and token. Killing one detaches it and removes nothing of the machine's. Refused with 409 by a service that other machines can reach, which doesn't offer it. */
144
+ post: operations["attachComputer"];
145
+ delete?: never;
146
+ options?: never;
147
+ head?: never;
148
+ patch?: never;
149
+ trace?: never;
150
+ };
42
151
  "/v1/computers/{computerID}": {
43
152
  parameters: {
44
153
  query?: never;
@@ -187,10 +296,24 @@ export interface components {
187
296
  */
188
297
  Access: "none" | "read" | "files" | "terminal";
189
298
  /**
190
- * @description failed: it was to be running and isn't, because its browser or container ended by itself, or because it couldn't be brought back when the service started. Its logs say why. Stop it and start it again.
299
+ * @description starting: it is being made, started, or brought back as the service starts. Its `reason` says what it waits on, and its `progress` how far that has come, where it counts. Its endpoints and live sessions are refused with 409 and that `reason` until it is running. `create` and `start` answer once it is running, and it is listed meanwhile; `start` on one already starting answers at once. failed: it was to be running and isn't, because its browser or container ended by itself, or because it couldn't be brought back when the service started. Its `reason` says why, and its logs say more. Stop it and start it again.
191
300
  * @enum {string}
192
301
  */
193
- ComputerState: "running" | "stopped" | "failed";
302
+ ComputerState: "starting" | "running" | "stopped" | "failed";
303
+ /** @description How far a step that counts its bytes has come: today only fetching a computer's image, where Docker is on a socket on the service's machine. */
304
+ Progress: {
305
+ /** @description The step, in words with no numbers: "Downloading its image". */
306
+ title: string;
307
+ /** @description Bytes come so far. */
308
+ done: number;
309
+ /** @description Bytes to come, as far as is known: Docker gives each layer's size as the layer begins, so it can grow. Null while nothing is known. */
310
+ total: number | null;
311
+ /**
312
+ * Format: date-time
313
+ * @description When it last moved: bytes came, or, for an image, a layer was unpacked. When the step began, until then.
314
+ */
315
+ moved: string;
316
+ };
194
317
  /** @description Seconds from now until the computer stops. */
195
318
  Timeout: number;
196
319
  /** @description Your own labels, kept and returned as given. */
@@ -207,13 +330,33 @@ export interface components {
207
330
  browser: boolean;
208
331
  /** @description The full path of a folder that exists, on the service's machine. With none, the service makes a folder, which goes when the computer is killed. A folder named here never does. */
209
332
  workspace?: string;
210
- /** @description How it is isolated, which it keeps for as long as it exists. Left out, it is the service's own, the `isolation` that `getInfo` answers. */
333
+ /** @description The full path of a folder on the service's machine. The workspace the service makes starts with a copy of what is in it, taken once when the computer is made; the folder itself is never mounted or changed. Links are copied as they are, and sockets, pipes and devices are left out. Use it instead of workspace; it needs access other than none. */
334
+ copyFrom?: string;
335
+ /** @description How it is isolated, which it keeps for as long as it exists: container, the default. One with no isolation is no longer made, and asking for one is refused: attach this computer instead. */
211
336
  isolation?: components["schemas"]["Isolation"];
212
337
  timeout?: components["schemas"]["Timeout"];
213
338
  metadata?: components["schemas"]["Metadata"];
214
339
  };
340
+ AttachComputer: {
341
+ name?: string;
342
+ access: components["schemas"]["Access"];
343
+ /**
344
+ * @description Its browser. true: a headless one of its own. own: the person's own, Chrome or else Edge, signed in, reached through the browser's own attach, which asks the person to allow the connection; attaching waits up to 2 minutes for that, and is refused with 409 if it isn't allowed, or where `info` says it isn't ready. Its agent works only in tabs it opens: the person's own tabs are left alone. It is never closed: when the computer stops, it is only let go. With access none, the computer must have a browser or the screen.
345
+ * @default false
346
+ */
347
+ browser: boolean | "own";
348
+ /**
349
+ * @description Whether its agent has the machine's screen: to see it and act on it, through Cua Driver, which the person installs and grants Screen Recording and Accessibility once. It acts as the person, whatever `access` says. Refused with 409 where `info` says the screen isn't ready.
350
+ * @default false
351
+ */
352
+ screen: boolean;
353
+ /** @description Its work folder: the full path of a folder that exists. Commands and relative paths start there and its agent is told to work there, but nothing keeps its files inside it. Detaching never removes it. */
354
+ workspace: string;
355
+ timeout?: components["schemas"]["Timeout"];
356
+ metadata?: components["schemas"]["Metadata"];
357
+ };
215
358
  /**
216
- * @description none: processes of whoever started the service. container: a container of its own, which needs Docker on the service's machine.
359
+ * @description none: processes of whoever started the service, which only this computer has now; a computer made with no isolation before can't start again. container: a container of its own, which needs Docker on the service's machine.
217
360
  * @enum {string}
218
361
  */
219
362
  Isolation: "none" | "container";
@@ -223,17 +366,28 @@ export interface components {
223
366
  computer: string | null;
224
367
  /** @description The browser. */
225
368
  browser: string | null;
369
+ /** @description The screen endpoint, or null when this computer was attached without `screen`. */
370
+ screen: string | null;
226
371
  };
227
372
  Computer: {
228
373
  computerID: string;
229
374
  name: string;
230
375
  state: components["schemas"]["ComputerState"];
376
+ /** @description In a line a person reads: while it is starting, the step it waits on, with no numbers, such as "Its image is being fetched.", "Its container is being started." or "It is being started."; while it is failed, why. Null while it is running or stopped. */
377
+ reason: string | null;
378
+ /** @description While it is starting, how far its step has come, where the step counts its bytes; null otherwise. */
379
+ progress: components["schemas"]["Progress"] | null;
231
380
  access: components["schemas"]["Access"];
232
381
  /** @description The isolation it was made in. It is never run in another. */
233
382
  isolation: components["schemas"]["Isolation"];
234
- /** @description The version of the program it ran at its last start. With no isolation it is the service's `version` (see `getInfo`). In a container it is the version inside its image, and null for a container made before 0.0.17, which doesn't say, until it is made again. It is kept from its last start, so a stopped computer's can be older than the service's until it starts. Compare it with the service's to show that a computer runs an older program. */
383
+ /** @description Whether it is this computer, attached rather than made: the service's machine, whole, acting as whoever started the service, with no isolation. False with isolation none marks a computer made with no isolation by an earlier version, which can't start again; its workspace is kept. */
384
+ attached: boolean;
385
+ /** @description The version of the program it ran at its last start. For this computer it is the service's `version` (see `getInfo`). In a container it is the version inside its image, and null for a container made before 0.0.17, which doesn't say, until it is made again. It is kept from its last start, so a stopped computer's can be older than the service's until it starts. Compare it with the service's to show that a computer runs an older program. */
235
386
  version: string | null;
236
- browser: boolean;
387
+ /** @description Its browser, as it was given, or false where it has none. */
388
+ browser: boolean | "own";
389
+ /** @description Whether its agent has the screen: only this computer can have one. */
390
+ screen: boolean;
237
391
  workspace: string | null;
238
392
  /**
239
393
  * Format: date-time
@@ -259,13 +413,14 @@ export interface components {
259
413
  tools: {
260
414
  computer: string[];
261
415
  browser: string[];
416
+ screen: string[];
262
417
  };
263
418
  };
264
419
  /**
265
- * @description terminal: every terminal on it, the agent's commands and a person's shells alike, on one socket in terminal@1: text messages are TerminalEvent one way and TerminalInput the other. Watching reads them all; operating also opens a shell, types into any of them, the agent's included, sizes and stops them. files: its workspace's files, in files@1: text messages are FilesRequest one way and FilesAnswer the other, and a file's bytes travel as binary messages of at most 1,048,576 bytes. Watching lists and reads; operating also writes, which a computer with read access doesn't offer. browser: its browser, in screencast@1: binary messages are JPEG frames of the page shown, text messages are ScreencastEvent one way and ScreencastInput the other. Nobody waits for anybody: the agent's tools and a person's input act on the same browser at once. The page shown is each socket's own. A socket is shown each new tab as it opens, until it sends a tab input to show or open one; from then its page changes only when that page closes. load: how busy it is, in metrics@1, to watch only: a LoadReading every two seconds while a socket is open, the first two seconds after the first socket opens, and the last one at once to a socket that opens later. One that can't be taken is left out, and a socket that hasn't read the one before is not sent the next. Nothing is read while nobody watches or asks.
420
+ * @description terminal: every terminal on it, the agent's commands and a person's shells alike, on one socket in terminal@1: text messages are TerminalEvent one way and TerminalInput the other. Watching reads them all; operating also opens a shell, types into any of them, the agent's included, sizes and stops them. files: its workspace's files, in files@1: text messages are FilesRequest one way and FilesAnswer the other, and a file's bytes travel as binary messages of at most 1,048,576 bytes. Watching lists and reads; operating also writes, which a computer with read access doesn't offer. browser: its browser, in screencast@1: binary messages are JPEG frames of the page shown, text messages are ScreencastEvent one way and ScreencastInput the other. Nobody waits for anybody: the agent's tools and a person's input act on the same browser at once. The page shown is each socket's own. A socket is shown each new tab as it opens, until it sends a tab input to show or open one; from then its page changes only when that page closes. load: how busy it is, in metrics@1, to watch only: a LoadReading every two seconds while a socket is open, the first two seconds after the first socket opens, and the last one at once to a socket that opens later. One that can't be taken is left out, and a socket that hasn't read the one before is not sent the next. Nothing is read while nobody watches or asks. presence: who is acting on it now, in presence@1, to watch only: a PresenceEvent when the socket opens, and another each time someone starts or stops acting on something. screen: the machine's screen, for this computer attached with it, in screen@1: binary messages are PNG frames of the whole screen, at most 1,280 pixels on their longest side, text messages are ScreenEvent one way and ScreenInput the other. The screen is taken twice a second while a socket is open, and a frame is sent only when the picture changed, so a socket is sent the last one when it opens and nothing more while the screen is still. A socket with more than 4 MiB still to be sent to it is sent nothing until it catches up.
266
421
  * @enum {string}
267
422
  */
268
- Surface: "terminal" | "files" | "browser" | "load";
423
+ Surface: "terminal" | "files" | "browser" | "load" | "presence" | "screen";
269
424
  /**
270
425
  * @description In watch you see and don't act: what you send is dropped, except that a files socket may still ask to list, to read and for what changed.
271
426
  * @enum {string}
@@ -385,6 +540,39 @@ export interface components {
385
540
  /** @description A URL, or back, forward or reload. */
386
541
  to: string;
387
542
  };
543
+ /** @description What the service sends on a screen@1 socket, as JSON text. */
544
+ ScreenEvent: {
545
+ /** @constant */
546
+ type: "size";
547
+ width: number;
548
+ height: number;
549
+ } | {
550
+ /** @constant */
551
+ type: "refused";
552
+ message: string;
553
+ };
554
+ /** @description What an operate socket sends on screen@1, as JSON text, no message over 65,536 bytes: a larger one closes the socket. Each is done in order, through Cua Driver, as the person. A point is in pixels of the frames, as the last size says, scaled to the screen; keys and text go to the window in front. What isn't done is answered with refused, and why: what Cua Driver refuses, what is none of these, and what is sent while 32 are still waiting. Binary messages, and whatever a watch socket sends, are dropped. */
555
+ ScreenInput: {
556
+ /** @constant */
557
+ type: "mouse";
558
+ /** @enum {string} */
559
+ action: "click" | "double_click" | "right_click" | "drag" | "scroll";
560
+ x: number;
561
+ y: number;
562
+ to_x?: number;
563
+ to_y?: number;
564
+ /** @enum {string} */
565
+ direction?: "up" | "down" | "left" | "right";
566
+ amount?: number;
567
+ } | {
568
+ /** @constant */
569
+ type: "key";
570
+ keys: string[];
571
+ } | {
572
+ /** @constant */
573
+ type: "text";
574
+ text: string;
575
+ };
388
576
  /** @description What the service sends on a terminal@1 socket, as JSON text, no message over 65,536 bytes. A terminal is a command the agent started or a shell a person opened; its id is the session id the agent's tools use. A new socket is first sent, for each terminal already there, the oldest first, its start, the end of what it wrote (its last 65,536 characters), and its exit if it has ended; then each event as it happens, with nothing to mark where the first ends. The last 64 that ended are among those already there, and one that leaves that list is not told. A character here is a UTF-16 unit. A socket with more than 4 MiB still to be sent to it is closed, with no close frame (1006): one that has stopped reading, or one that is reading while a terminal writes tens of megabytes at once. It isn't an error. Opened again, it is sent every terminal afresh, with the last 65,536 characters each wrote, in place of whatever it held. */
389
577
  TerminalEvent: {
390
578
  /** @constant */
@@ -452,7 +640,7 @@ export interface components {
452
640
  /** @constant */
453
641
  type: "reading";
454
642
  /**
455
- * @description Whose numbers these are. computer: this computer's own, which a container's are. machine: the whole machine's, which a computer with no isolation shares with whatever else runs there, so every computer of that service reads the same; and a container's where it can't read its own.
643
+ * @description Whose numbers these are. computer: the computer's own, as a container's are. machine: the whole machine's, as this computer's are, which it shares with whatever else runs there; and a container's where it can't read its own.
456
644
  * @enum {string}
457
645
  */
458
646
  scope: "computer" | "machine";
@@ -467,6 +655,75 @@ export interface components {
467
655
  /** @description Bytes on that volume. */
468
656
  diskTotal: number;
469
657
  };
658
+ /**
659
+ * @description A part of the service's machine an agent can use: its terminal, its files, its screen, and the person's own browser.
660
+ * @enum {string}
661
+ */
662
+ Switch: "terminal" | "files" | "screen" | "browser";
663
+ /**
664
+ * @description install: Cua Driver, which the screen works through. screen-recording and accessibility: Cua Driver's two grants. chrome and edge: each browser, with remote debugging on or off; named: the one browser a service was given the folder of.
665
+ * @enum {string}
666
+ */
667
+ NeedName: "install" | "screen-recording" | "accessibility" | "chrome" | "edge" | "named";
668
+ Need: {
669
+ need: components["schemas"]["NeedName"];
670
+ /** @description A browser's name: Chrome, Edge, or the browser. */
671
+ name?: string;
672
+ /** @description For a grant, whose it is, as System Settings lists it: the outermost app Cua Driver is inside, CuaDriver for its own app, or an app that carries the driver. None where Cua Driver is in no app. */
673
+ holder?: string;
674
+ /**
675
+ * @description missing: not installed. unknown: it can't be read now. A browser is on while it is open with its remote debugging switched on.
676
+ * @enum {string}
677
+ */
678
+ state: "missing" | "granted" | "not-granted" | "unknown" | "on" | "off";
679
+ };
680
+ Setup: {
681
+ /** @description terminal, files, screen and browser, in that order. */
682
+ capabilities: {
683
+ capability: components["schemas"]["Switch"];
684
+ /** @description The person's switch. Off, agents' new calls to the part refuse, saying the person turned it off, and `info` says so; what an agent already started runs on. The terminal and the screen each reach the whole machine: commands read any file, and the screen acts in any app. The browser's switch is for the person's own; any browser's code-running tool answers to the terminal's switch, and a browser call that names files, by `paths` or `filename`, to the files'. A service started with `--lend` starts with every one off; any other, with every one on. */
685
+ on: boolean;
686
+ /** @description Whether the part has all it needs, apart from its switch: the screen, each item granted; the browser, one browser on. The terminal and files always do. */
687
+ ready: boolean;
688
+ /** @description Each thing the part needs, always, with its state. The terminal and files need nothing. The screen needs Cua Driver, which while it isn't installed is the one item, and on macOS its two grants. The browser lists Chrome then Edge, each on, off or missing, or the one browser named; with both on, the agent's is Chrome. */
689
+ needs: components["schemas"]["Need"][];
690
+ }[];
691
+ };
692
+ Connection: {
693
+ /** @description Whether any client holds a connection now. */
694
+ connected: boolean;
695
+ /** @description Each client holding one, the earliest first. */
696
+ clients: {
697
+ /** @description The name it gave, its first 100 characters, or empty: such as AgentOrg 0.0.15. */
698
+ name: string;
699
+ /** Format: date-time */
700
+ since: string;
701
+ /** @description Whether it connects from this machine, by the address it connects from. False behind --tls-proxy, where every client comes from the proxy. */
702
+ local: boolean;
703
+ }[];
704
+ };
705
+ /** @description Someone who acted on a computer in the last 10 seconds. The person acts in a live view at operate: opening a shell, typing into or stopping a terminal, writing a file, any input to the browser but moving the pointer, or any input to the screen that Cua Driver did. Watching is not acting, and the person's own use of the screen, outside a live view, can't be seen. The agent acts by calling its endpoints: starting a command or typing into one (waiting on its output is not acting), any file tool, reads among them, any browser tool that is answered, and any screen tool. Computers attached to the same machine share its files and its screen: each is shown the person and the other computers' agents acting on them, by name. */
706
+ Acting: {
707
+ /** @enum {string} */
708
+ who: "person" | "agent";
709
+ /** @description The agent's name */
710
+ name?: string;
711
+ /** @enum {string} */
712
+ capability: "terminal" | "files" | "browser" | "screen";
713
+ /** @description Which terminal, by its id; only for a terminal. */
714
+ terminal?: string;
715
+ /**
716
+ * Format: date-time
717
+ * @description When it last acted there, as of this message: one who goes on acting is sent again only when someone starts or stops.
718
+ */
719
+ at: string;
720
+ };
721
+ /** @description What the service sends on a presence@1 socket, as JSON text: the whole list of everyone acting now, the most recent first, empty where nobody is. It is sent when the socket opens and each time someone starts acting on something, or stops: 10 seconds after they last acted there. Nothing is refused by it. What a socket sends is dropped. */
722
+ PresenceEvent: {
723
+ /** @constant */
724
+ type: "presence";
725
+ acting: components["schemas"]["Acting"][];
726
+ };
470
727
  /** @description What a socket sends on files@1, as JSON text. Each has an id of its own choosing, which the answer repeats; answers come as they are ready, in any order, and ids aren't checked for repeats. A request still unanswered when the socket closes gets no answer. A path is from the workspace, with / between its parts, or absolute inside it, and nothing outside the workspace is reached. A binary message that follows no write closes the socket, and so does any message over 1,048,576 bytes. */
471
728
  FilesRequest: {
472
729
  /** @constant */
@@ -559,12 +816,42 @@ export interface components {
559
816
  line: string;
560
817
  }[];
561
818
  };
819
+ Readiness: {
820
+ ready: boolean;
821
+ /** @description Why it isn't ready, in a line a person reads. Only when it isn't. */
822
+ reason?: string;
823
+ };
824
+ /**
825
+ * @description What a computer offers its agent and the person: what it is, its terminals, its files and its screen. This computer's screen is reached through Cua Driver: it is ready where Cua Driver is installed, at 0.49.7 or later, and granted Screen Recording and Accessibility, and otherwise the reason says what to do. A part the person switched off on that machine isn't ready either.
826
+ * @enum {string}
827
+ */
828
+ Capability: "about" | "terminal" | "files" | "screen";
829
+ CapabilityState: components["schemas"]["Readiness"] & {
830
+ capability: components["schemas"]["Capability"];
831
+ };
832
+ /**
833
+ * @description headless: a headless browser with a profile of its own, beside the computer, which a person watches and controls through its live view. own: the person's own browser on the service's machine, Chrome or Edge, signed in, offered for this computer: ready where one is open with its remote debugging switched on, Chrome first, which the person does once on its inspect page; the browser then asks them to allow each connection. Not ready, the reason names the browser and what to do on that machine. Switched off by the person on that machine, it isn't ready either.
834
+ * @enum {string}
835
+ */
836
+ BrowserKind: "headless" | "own";
837
+ BrowserState: components["schemas"]["Readiness"] & {
838
+ kind: components["schemas"]["BrowserKind"];
839
+ };
840
+ Offer: components["schemas"]["Readiness"] & {
841
+ /** @description What such a computer has, each ready or not. */
842
+ capabilities: components["schemas"]["CapabilityState"][];
843
+ /** @description The browsers that can go with it, each ready or not. */
844
+ browsers: components["schemas"]["BrowserState"][];
845
+ };
846
+ MadeKind: components["schemas"]["Offer"] & {
847
+ isolation: components["schemas"]["Isolation"];
848
+ };
562
849
  ServiceInfo: {
563
850
  version: string;
564
- /** @description The isolation of a computer made without saying which, chosen when the service is started. */
565
- isolation: components["schemas"]["Isolation"];
566
- /** @description The isolations a computer can be made in now, `none` first. `container` is among them while Docker answers on the service's machine. It is what to offer, not a promise: Docker is asked for a second here and for ten when a container is made, so one that is slow can be missing here and still be made. If `isolation` itself is missing, a computer made without saying which is refused with 409. */
567
- isolationsAvailable: components["schemas"]["Isolation"][];
851
+ /** @description This computer, the machine the service runs on, attached whole, as whoever started the service. It can be attached while ready: only where the service listens on loopback, with no proxy in front and no public address. Elsewhere it isn't offered, and one attached before is refused at start. */
852
+ thisComputer: components["schemas"]["Offer"];
853
+ /** @description Each kind of computer it makes, ready while it can be made now. A container is ready while Docker answers on the service's machine: asked for a second here and for ten when one is made, so one that is slow can be not ready here and still be made. */
854
+ made: components["schemas"]["MadeKind"][];
568
855
  };
569
856
  };
570
857
  responses: {
@@ -615,6 +902,145 @@ export interface operations {
615
902
  401: components["responses"]["Unauthorized"];
616
903
  };
617
904
  };
905
+ getConnection: {
906
+ parameters: {
907
+ query?: never;
908
+ header?: never;
909
+ path?: never;
910
+ cookie?: never;
911
+ };
912
+ requestBody?: never;
913
+ responses: {
914
+ /** @description Who is connected. */
915
+ 200: {
916
+ headers: {
917
+ [name: string]: unknown;
918
+ };
919
+ content: {
920
+ "application/json": components["schemas"]["Connection"];
921
+ };
922
+ };
923
+ 401: components["responses"]["Unauthorized"];
924
+ };
925
+ };
926
+ getSetup: {
927
+ parameters: {
928
+ query?: never;
929
+ header?: never;
930
+ path?: never;
931
+ cookie?: never;
932
+ };
933
+ requestBody?: never;
934
+ responses: {
935
+ /** @description Each part. */
936
+ 200: {
937
+ headers: {
938
+ [name: string]: unknown;
939
+ };
940
+ content: {
941
+ "application/json": components["schemas"]["Setup"];
942
+ };
943
+ };
944
+ 401: components["responses"]["Unauthorized"];
945
+ };
946
+ };
947
+ setSetup: {
948
+ parameters: {
949
+ query?: never;
950
+ header?: never;
951
+ path: {
952
+ capability: components["schemas"]["Switch"];
953
+ };
954
+ cookie?: never;
955
+ };
956
+ requestBody: {
957
+ content: {
958
+ "application/json": {
959
+ on: boolean;
960
+ };
961
+ };
962
+ };
963
+ responses: {
964
+ /** @description Set, and its steps started. */
965
+ 200: {
966
+ headers: {
967
+ [name: string]: unknown;
968
+ };
969
+ content: {
970
+ "application/json": components["schemas"]["Setup"];
971
+ };
972
+ };
973
+ 401: components["responses"]["Unauthorized"];
974
+ /** @description On, but the steps that ask for what it needs couldn't be started. */
975
+ 409: {
976
+ headers: {
977
+ [name: string]: unknown;
978
+ };
979
+ content: {
980
+ "application/json": components["schemas"]["Error"];
981
+ };
982
+ };
983
+ };
984
+ };
985
+ askSetup: {
986
+ parameters: {
987
+ query?: never;
988
+ header?: never;
989
+ path: {
990
+ capability: components["schemas"]["Switch"];
991
+ };
992
+ cookie?: never;
993
+ };
994
+ requestBody?: {
995
+ content: {
996
+ "application/json": {
997
+ need?: components["schemas"]["NeedName"];
998
+ };
999
+ };
1000
+ };
1001
+ responses: {
1002
+ /** @description Asked, its steps started. */
1003
+ 200: {
1004
+ headers: {
1005
+ [name: string]: unknown;
1006
+ };
1007
+ content: {
1008
+ "application/json": components["schemas"]["Setup"];
1009
+ };
1010
+ };
1011
+ 401: components["responses"]["Unauthorized"];
1012
+ /** @description The part doesn't need that here, or what it needs can't be asked for, such as a browser that isn't installed, or the steps couldn't be started. */
1013
+ 409: {
1014
+ headers: {
1015
+ [name: string]: unknown;
1016
+ };
1017
+ content: {
1018
+ "application/json": components["schemas"]["Error"];
1019
+ };
1020
+ };
1021
+ };
1022
+ };
1023
+ getActing: {
1024
+ parameters: {
1025
+ query?: never;
1026
+ header?: never;
1027
+ path?: never;
1028
+ cookie?: never;
1029
+ };
1030
+ requestBody?: never;
1031
+ responses: {
1032
+ /** @description Who is acting now. */
1033
+ 200: {
1034
+ headers: {
1035
+ [name: string]: unknown;
1036
+ };
1037
+ content: {
1038
+ "application/json": components["schemas"]["Acting"][];
1039
+ };
1040
+ };
1041
+ 401: components["responses"]["Unauthorized"];
1042
+ };
1043
+ };
618
1044
  listComputers: {
619
1045
  parameters: {
620
1046
  query?: {
@@ -663,6 +1089,34 @@ export interface operations {
663
1089
  };
664
1090
  400: components["responses"]["Error"];
665
1091
  401: components["responses"]["Unauthorized"];
1092
+ 409: components["responses"]["Error"];
1093
+ };
1094
+ };
1095
+ attachComputer: {
1096
+ parameters: {
1097
+ query?: never;
1098
+ header?: never;
1099
+ path?: never;
1100
+ cookie?: never;
1101
+ };
1102
+ requestBody: {
1103
+ content: {
1104
+ "application/json": components["schemas"]["AttachComputer"];
1105
+ };
1106
+ };
1107
+ responses: {
1108
+ /** @description It, with its access token, shown only now. */
1109
+ 201: {
1110
+ headers: {
1111
+ [name: string]: unknown;
1112
+ };
1113
+ content: {
1114
+ "application/json": components["schemas"]["CreatedComputer"];
1115
+ };
1116
+ };
1117
+ 400: components["responses"]["Error"];
1118
+ 401: components["responses"]["Unauthorized"];
1119
+ 409: components["responses"]["Error"];
666
1120
  };
667
1121
  };
668
1122
  getComputer: {
@@ -709,6 +1163,15 @@ export interface operations {
709
1163
  };
710
1164
  401: components["responses"]["Unauthorized"];
711
1165
  404: components["responses"]["Error"];
1166
+ /** @description It can't be removed here: a container while Docker doesn't answer, or one made before under a service that now only lends this machine. */
1167
+ 409: {
1168
+ headers: {
1169
+ [name: string]: unknown;
1170
+ };
1171
+ content: {
1172
+ "application/json": components["schemas"]["Error"];
1173
+ };
1174
+ };
712
1175
  };
713
1176
  };
714
1177
  setComputerTimeout: {
@@ -794,6 +1257,7 @@ export interface operations {
794
1257
  };
795
1258
  401: components["responses"]["Unauthorized"];
796
1259
  404: components["responses"]["Error"];
1260
+ 409: components["responses"]["Error"];
797
1261
  };
798
1262
  };
799
1263
  getComputerLogs: {