@openagt/dashboard 0.41.0 → 0.42.0

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.
Files changed (37) hide show
  1. package/dist/daemon.d.ts.map +1 -1
  2. package/dist/daemon.js +4 -0
  3. package/dist/daemon.js.map +1 -1
  4. package/dist/dashboard/computers-sync.d.ts +104 -0
  5. package/dist/dashboard/computers-sync.d.ts.map +1 -0
  6. package/dist/dashboard/computers-sync.js +179 -0
  7. package/dist/dashboard/computers-sync.js.map +1 -0
  8. package/dist/dashboard/models.d.ts +2 -1
  9. package/dist/dashboard/models.d.ts.map +1 -1
  10. package/dist/dashboard/models.js +1 -1
  11. package/dist/dashboard/models.js.map +1 -1
  12. package/dist/dashboard-bundle/assets/host/{module-BcFzlJhp.js → module-BWXIkXv5.js} +1 -1
  13. package/dist/dashboard-bundle/assets/{main-rpNhGecV.js → main-CA55XzlS.js} +3 -3
  14. package/dist/dashboard-bundle/assets/{module-Bhd9t16k.js → module-CXKv8UKd.js} +1 -1
  15. package/dist/dashboard-bundle/index.html +3 -3
  16. package/dist/dashboard-rpc/computers.d.ts +27 -0
  17. package/dist/dashboard-rpc/computers.d.ts.map +1 -0
  18. package/dist/dashboard-rpc/computers.js +90 -0
  19. package/dist/dashboard-rpc/computers.js.map +1 -0
  20. package/dist/dashboard-rpc/machines.d.ts +4 -0
  21. package/dist/dashboard-rpc/machines.d.ts.map +1 -1
  22. package/dist/dashboard-rpc/machines.js +24 -1
  23. package/dist/dashboard-rpc/machines.js.map +1 -1
  24. package/dist/dashboard-rpc/relay-dispatch.d.ts.map +1 -1
  25. package/dist/dashboard-rpc/relay-dispatch.js +3 -2
  26. package/dist/dashboard-rpc/relay-dispatch.js.map +1 -1
  27. package/dist/module-types/dashboard/lib/models.d.ts +7 -3
  28. package/dist/module-types/src/dashboard/computers-sync.d.ts +103 -0
  29. package/dist/module-types/src/dashboard/models.d.ts +2 -1
  30. package/dist/module-types/src/dashboard-rpc/computers.d.ts +26 -0
  31. package/dist/module-types/src/dashboard-rpc/machines.d.ts +4 -0
  32. package/dist/module-types/src/registry.d.ts +20 -0
  33. package/dist/registry.d.ts +20 -0
  34. package/dist/registry.d.ts.map +1 -1
  35. package/dist/registry.js +49 -4
  36. package/dist/registry.js.map +1 -1
  37. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAYA,OAAO,EAA4D,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAG7I,OAAO,EAAiD,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGxI,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAMzE;;;;;;;;;;;;GAYG;AAEH,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAEvC,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;kGACkG;AAClG,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,0IAA0I;IAC1I,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iGAAiG;IACjG,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iJAAiJ;IACjJ,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,kGAAkG;IAClG,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACtE,4GAA4G;IAC5G,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,eAAe,CAAA;IACnE,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAKD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqLvF"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAYA,OAAO,EAA4D,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAG7I,OAAO,EAAiD,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGxI,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAOzE;;;;;;;;;;;;GAYG;AAEH,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,OAAO,CAAA;AAEvC,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;kGACkG;AAClG,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE/D,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,0IAA0I;IAC1I,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iGAAiG;IACjG,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iJAAiJ;IACjJ,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,kGAAkG;IAClG,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACtE,4GAA4G;IAC5G,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,KAAK,eAAe,CAAA;IACnE,oGAAoG;IACpG,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAKD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwLvF"}
package/dist/daemon.js CHANGED
@@ -18,6 +18,7 @@ import { readAllAgents } from './store/index.js';
18
18
  import { setOpenagentVersion } from './version.js';
19
19
  import { personLogins } from './dashboard/copy-logins.js';
20
20
  import { startLoginsSync } from './dashboard/logins-sync.js';
21
+ import { startComputersSync } from './dashboard/computers-sync.js';
21
22
  import { runComputerCommand } from './dashboard-rpc/modules.js';
22
23
  import { dispatchMachineRpc, isRelayReadCall } from './dashboard-rpc/relay-dispatch.js';
23
24
  /**
@@ -172,8 +173,11 @@ export async function runDaemon(cwd, opts = {}) {
172
173
  });
173
174
  // A computer keeps the servers that use its logins up to them (`logins-sync.ts`); a server makes none for another.
174
175
  const stopLoginsSync = env.OPENAGENT_SERVER === '1' ? () => { } : startLoginsSync(env);
176
+ // Every computer of the person's keeps the same computers as the others (`computers-sync.ts`), a server too.
177
+ const stopComputersSync = startComputersSync(env);
175
178
  await waitForShutdown(opts.signal);
176
179
  stopLoginsSync();
180
+ stopComputersSync();
177
181
  // One Ctrl+C stops the dashboard (#2141): a step that hangs is logged and left behind once the
178
182
  // deadline passes, and a second Ctrl+C stops at once.
179
183
  const hurry = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { type ForgottenMachine, type MachineRecord } from '../registry.js';
2
+ /**
3
+ * The person's computers, the same on every one of them: a computer one of them saves, the others
4
+ * save too, and one the person removes on one of them, the others take out. So every computer's
5
+ * page reaches every other, whichever page the person opens.
6
+ *
7
+ * Each computer, now and then, asks each of the person's computers it reaches at an address (a
8
+ * server, or a computer on Tailscale) what it has and what it removed. What that computer lacks,
9
+ * this one hands it: for each of its other computers reached at an address, and for itself when
10
+ * it has one, a code that computer gets in with, fetched from the door it is for, so every
11
+ * computer holds a key of its own. What that computer removed after it was saved here is taken out
12
+ * here, and what was removed here, it takes out. A computer that keeps a line to a server of the
13
+ * person's is saved through that server, by every computer that is in there.
14
+ *
15
+ * Only the person's own computers: a computer of another person's, shared on a server, is never
16
+ * handed on. Each computer still says only its own projects and runs; it only knows the others.
17
+ */
18
+ /** One of the person's computers another computer reaches at its address, as a computer says it has it. */
19
+ export interface OwnComputer {
20
+ url: string;
21
+ label: string;
22
+ /** The computer's own name, as it first said it. */
23
+ host?: string;
24
+ /** When it was saved there, ISO: a removal after this one stands. */
25
+ added?: string;
26
+ }
27
+ /** What a computer says of the person's computers: the ones it reaches at their addresses, the ones the person removed there, and its own door's address. */
28
+ export interface OwnComputers {
29
+ /** Where this computer's own door is reached, when it has an address: a server's, or its name on Tailscale. */
30
+ door?: string;
31
+ computers: OwnComputer[];
32
+ forgotten: ForgottenMachine[];
33
+ }
34
+ /** Whether a saved machine is one another computer reaches at the same address: a server, or a computer on Tailscale. Not one saved through a server, on a Wi-Fi, or on a line at this server. */
35
+ export declare function reachedAtAddress(machine: Pick<MachineRecord, 'url'>): boolean;
36
+ /** Whether a saved machine is a server of the person's with a door of its own: one other computers keep lines to. A computer on Tailscale keeps none. */
37
+ export declare function isServer(machine: Pick<MachineRecord, 'url'>): boolean;
38
+ /** What a computer answered as its computers, the ones that read as such: anything else is dropped. */
39
+ export declare function ownComputersOf(said: unknown): OwnComputers;
40
+ /** Whether a removal at `at` stands over a computer saved at `added`: one with no time of its own was saved before any. */
41
+ export declare function removedSince(added: string | undefined, at: string): boolean;
42
+ /** A computer to hand another: one of this computer's others, or this computer itself. */
43
+ export type Handed = {
44
+ self: true;
45
+ url: string;
46
+ } | {
47
+ self?: undefined;
48
+ machine: MachineRecord;
49
+ };
50
+ /**
51
+ * What computer `there` lacks of what this one reaches at an address: each of this computer's
52
+ * others but `there` itself, and this computer when its door has an address. One `there` has by
53
+ * its address or its own name is not handed, nor one it removed since this computer saved it.
54
+ */
55
+ export declare function lacking(there: MachineRecord, theirs: OwnComputers, mine: readonly MachineRecord[], door: string | undefined): Handed[];
56
+ /** What this computer's own door says of itself: its address, and its id among the devices of each server it keeps a line to. */
57
+ export interface OwnDoor {
58
+ address?: string;
59
+ lines: {
60
+ url: string;
61
+ id: string;
62
+ }[];
63
+ }
64
+ /** A computer on a line at a server, as the server lists it. */
65
+ export interface LineComputer {
66
+ id: string;
67
+ name: string;
68
+ added: boolean;
69
+ owner?: string;
70
+ }
71
+ /** What a round reaches through: the real ones, unless a test says otherwise. */
72
+ export declare const computersWiring: {
73
+ env: NodeJS.ProcessEnv;
74
+ machines: () => Promise<MachineRecord[]>;
75
+ forgotten: () => Promise<ForgottenMachine[]>;
76
+ call: (machine: MachineRecord, fn: string, args: unknown[]) => Promise<{
77
+ ok: true;
78
+ ret: unknown;
79
+ } | {
80
+ ok: false;
81
+ error: string;
82
+ }>;
83
+ door: () => Promise<OwnDoor>;
84
+ /** A link one more device of the person gets in with: at this computer's own door, or at a saved machine's. */
85
+ ownCode: () => Promise<string | undefined>;
86
+ codeAt: (machine: MachineRecord) => Promise<string | undefined>;
87
+ /** This computer's name, as a computer it is handed to saves it by. */
88
+ name: () => string;
89
+ /** Take out here what the person removed on another of their computers. */
90
+ forget: (gone: readonly ForgottenMachine[]) => Promise<void>;
91
+ /** The computers on a line at a saved server, and how one is saved through it. */
92
+ lineComputers: (server: MachineRecord) => Promise<LineComputer[] | undefined>;
93
+ saveThrough: (server: MachineRecord, id: string) => Promise<void>;
94
+ now: () => number;
95
+ };
96
+ /** One round: each of the person's computers reached at an address is brought up to this one's, and this one to theirs. */
97
+ export declare function syncComputers(): Promise<void>;
98
+ /** A round in a moment, when the computers sync at all: the person just saved or removed one. */
99
+ export declare function syncComputersSoon(): void;
100
+ /** Keep the person's computers the same on all of them, from now on: a round every few minutes, the first a moment after the start. */
101
+ export declare function startComputersSync(env: NodeJS.ProcessEnv): () => void;
102
+ /** Take out here the computers the person removed on another of theirs, after each was saved here: through-saved ones with the server they go through. */
103
+ export declare function forgetHere(gone: readonly ForgottenMachine[], remove: (machine: MachineRecord) => Promise<boolean>): Promise<void>;
104
+ //# sourceMappingURL=computers-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computers-sync.d.ts","sourceRoot":"","sources":["../../src/dashboard/computers-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ import { computerName } from '../computer-name.js';
2
+ import { forgetMachine, listForgotten, listMachines } from '../registry.js';
3
+ import { THROUGH_PATH, machineCall } from './remote-run.js';
4
+ /** Whether a saved machine is one another computer reaches at the same address: a server, or a computer on Tailscale. Not one saved through a server, on a Wi-Fi, or on a line at this server. */
5
+ export function reachedAtAddress(machine) {
6
+ return machine.url.startsWith('https://') && !machine.url.includes(THROUGH_PATH);
7
+ }
8
+ /** Whether a saved machine is a server of the person's with a door of its own: one other computers keep lines to. A computer on Tailscale keeps none. */
9
+ export function isServer(machine) {
10
+ return reachedAtAddress(machine) && !/\.ts\.net(:\d+)?$/i.test(new URL(machine.url).host);
11
+ }
12
+ /** The longest list a computer is taken at its word for. */
13
+ const MAX_LISTED = 64;
14
+ /** What a computer answered as its computers, the ones that read as such: anything else is dropped. */
15
+ export function ownComputersOf(said) {
16
+ const { door, computers, forgotten } = (said && typeof said === 'object' ? said : {});
17
+ const address = (value) => typeof value === 'string' && value.length <= 512 && reachedAtAddress({ url: value }) && /^https:\/\/[^/]+$/.test(value);
18
+ const time = (value) => typeof value === 'string' && !Number.isNaN(Date.parse(value));
19
+ const word = (value) => typeof value === 'string' && value.trim().length > 0 && value.length <= 200;
20
+ const listed = [];
21
+ for (const raw of Array.isArray(computers) ? computers.slice(0, MAX_LISTED) : []) {
22
+ const { url, label, host, added } = (raw && typeof raw === 'object' ? raw : {});
23
+ if (!address(url))
24
+ continue;
25
+ listed.push({ url, label: word(label) ? label.trim() : new URL(url).host, ...(word(host) ? { host } : {}), ...(time(added) ? { added } : {}) });
26
+ }
27
+ const gone = [];
28
+ for (const raw of Array.isArray(forgotten) ? forgotten.slice(0, MAX_LISTED) : []) {
29
+ const { url, at } = (raw && typeof raw === 'object' ? raw : {});
30
+ if (typeof url === 'string' && /^https?:\/\//.test(url) && url.length <= 512 && time(at))
31
+ gone.push({ url, at });
32
+ }
33
+ return { ...(address(door) ? { door } : {}), computers: listed, forgotten: gone };
34
+ }
35
+ /** Whether a removal at `at` stands over a computer saved at `added`: one with no time of its own was saved before any. */
36
+ export function removedSince(added, at) {
37
+ return Date.parse(at) > (added === undefined ? -Infinity : Date.parse(added));
38
+ }
39
+ /**
40
+ * What computer `there` lacks of what this one reaches at an address: each of this computer's
41
+ * others but `there` itself, and this computer when its door has an address. One `there` has by
42
+ * its address or its own name is not handed, nor one it removed since this computer saved it.
43
+ */
44
+ export function lacking(there, theirs, mine, door) {
45
+ const has = (url, host) => url === theirs.door || theirs.computers.some(computer => computer.url === url || (host !== undefined && computer.host === host));
46
+ const removed = (url, added) => theirs.forgotten.some(gone => gone.url === url && removedSince(added, gone.at));
47
+ const handed = [];
48
+ for (const machine of mine) {
49
+ if (machine.url === there.url || machine.url === theirs.door || (machine.host !== undefined && machine.host === there.host))
50
+ continue;
51
+ if (!has(machine.url, machine.host) && !removed(machine.url, machine.added))
52
+ handed.push({ machine });
53
+ }
54
+ if (door !== undefined && !has(door) && !removed(door))
55
+ handed.push({ self: true, url: door });
56
+ return handed;
57
+ }
58
+ /** How long a computer that could not be handed one is not handed it again: each try makes a code at a door. */
59
+ const TRIED_KEPT_MS = 60 * 60_000;
60
+ /** What a round reaches through: the real ones, unless a test says otherwise. */
61
+ export const computersWiring = {
62
+ env: process.env,
63
+ machines: () => listMachines(undefined, computersWiring.env),
64
+ forgotten: () => listForgotten(undefined, computersWiring.env),
65
+ call: (machine, fn, args) => machineCall(machine, fn, args, 20_000),
66
+ door: async () => (await import('../dashboard-rpc/computers.js')).ownDoor(),
67
+ ownCode: async () => (await import('../dashboard-rpc/computers.js')).ownCode(),
68
+ codeAt: async (machine) => {
69
+ const asked = await (await import('../dashboard-rpc/machines.js')).sendMachineCode(machine.id);
70
+ return asked.ok ? asked.value.url : undefined;
71
+ },
72
+ name: () => computerName(),
73
+ forget: async (gone) => (await import('../dashboard-rpc/computers.js')).sendForgetComputers(gone).then(() => { }),
74
+ lineComputers: async (server) => {
75
+ const asked = await (await import('../dashboard-rpc/machines.js')).onComputersThrough(server.id);
76
+ return asked.ok ? asked.computers : undefined;
77
+ },
78
+ saveThrough: async (server, id) => void (await (await import('../dashboard-rpc/machines.js')).saveComputerThrough(server.id, id)),
79
+ now: () => Date.now(),
80
+ };
81
+ /** When each computer was last handed one it could not take, by both their addresses. */
82
+ const tried = new Map();
83
+ /** One round: each of the person's computers reached at an address is brought up to this one's, and this one to theirs. */
84
+ export async function syncComputers() {
85
+ const w = computersWiring;
86
+ const [saved, forgotten, door] = await Promise.all([w.machines(), w.forgotten(), w.door().catch(() => ({ lines: [] }))]);
87
+ const own = saved.filter(machine => machine.owner === undefined);
88
+ const atAddress = own.filter(reachedAtAddress);
89
+ for (const there of atAddress) {
90
+ const said = await w.call(there, 'onOwnComputers', []);
91
+ if (!said.ok)
92
+ continue;
93
+ const theirs = ownComputersOf(said.ret);
94
+ // What the person removed there after it was saved here goes here too.
95
+ await w.forget(theirs.forgotten);
96
+ // What was removed here, it takes out.
97
+ const removedHere = forgotten.filter(gone => theirs.computers.some(computer => computer.url === gone.url && removedSince(computer.added, gone.at)));
98
+ if (removedHere.length > 0)
99
+ await w.call(there, 'sendForgetComputers', [removedHere]);
100
+ for (const handed of lacking(there, theirs, atAddress, door.address)) {
101
+ const url = handed.self ? handed.url : handed.machine.url;
102
+ const key = `${there.url} ${url}`;
103
+ if (w.now() - (tried.get(key) ?? -Infinity) < TRIED_KEPT_MS)
104
+ continue;
105
+ tried.set(key, w.now());
106
+ const link = handed.self ? await w.ownCode().catch(() => undefined) : await w.codeAt(handed.machine).catch(() => undefined);
107
+ if (link === undefined)
108
+ continue;
109
+ const label = handed.self ? w.name() : handed.machine.label;
110
+ const took = await w.call(there, 'sendAddComputer', [link, label, handed.self ? null : (handed.machine.added ?? null)]);
111
+ // Taken: it may be handed again, should it ever lack it.
112
+ if (took.ok && took.ret?.ok === true)
113
+ tried.delete(key);
114
+ }
115
+ }
116
+ // Each server of the person's: their own computers that keep a line there, saved here through it.
117
+ for (const server of own.filter(isServer)) {
118
+ const listed = await w.lineComputers(server).catch(() => undefined);
119
+ const mine = door.lines.find(line => line.url === server.url)?.id;
120
+ for (const computer of listed ?? []) {
121
+ if (computer.owner !== undefined || computer.added || computer.id === mine)
122
+ continue;
123
+ if (forgotten.some(gone => gone.url === `${server.url}${THROUGH_PATH}${computer.id}`))
124
+ continue;
125
+ await w.saveThrough(server, computer.id).catch(() => { });
126
+ }
127
+ }
128
+ }
129
+ /** How often a round runs, and how soon after the person saved or removed a computer. */
130
+ const EVERY_MS = 2 * 60_000;
131
+ const SOON_MS = 3_000;
132
+ let running;
133
+ let soon;
134
+ let started = false;
135
+ function round() {
136
+ running ??= syncComputers()
137
+ .catch(() => { })
138
+ .finally(() => (running = undefined));
139
+ }
140
+ /** A round in a moment, when the computers sync at all: the person just saved or removed one. */
141
+ export function syncComputersSoon() {
142
+ if (!started || soon)
143
+ return;
144
+ soon = setTimeout(() => {
145
+ soon = undefined;
146
+ round();
147
+ }, SOON_MS);
148
+ soon.unref();
149
+ }
150
+ /** Keep the person's computers the same on all of them, from now on: a round every few minutes, the first a moment after the start. */
151
+ export function startComputersSync(env) {
152
+ computersWiring.env = env;
153
+ started = true;
154
+ const first = setTimeout(round, 20_000);
155
+ const timer = setInterval(round, EVERY_MS);
156
+ first.unref();
157
+ timer.unref();
158
+ return () => {
159
+ started = false;
160
+ clearTimeout(first);
161
+ clearInterval(timer);
162
+ if (soon)
163
+ clearTimeout(soon);
164
+ soon = undefined;
165
+ };
166
+ }
167
+ /** Take out here the computers the person removed on another of theirs, after each was saved here: through-saved ones with the server they go through. */
168
+ export async function forgetHere(gone, remove) {
169
+ const saved = await computersWiring.machines();
170
+ for (const removal of gone) {
171
+ const machine = saved.find(candidate => candidate.url === removal.url);
172
+ if (machine && !removedSince(machine.added, removal.at))
173
+ continue;
174
+ if (machine && !(await remove(machine)))
175
+ continue;
176
+ await forgetMachine(removal.url, removal.at, undefined, computersWiring.env);
177
+ }
178
+ }
179
+ //# sourceMappingURL=computers-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computers-sync.js","sourceRoot":"","sources":["../../src/dashboard/computers-sync.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { Driver, DriverModel } from '@openagt/agent-driver';
2
2
  import { type DriverName } from '../driver-names.js';
3
- /** What one coding agent offers: its models, or why it could not say. */
3
+ /** What one coding agent offers: its models, or why it could not say; `missing` when its CLI is not on the computer at all. */
4
4
  export type DriverModels = {
5
5
  models: DriverModel[];
6
6
  } | {
7
7
  models: [];
8
8
  error: string;
9
+ missing?: true;
9
10
  };
10
11
  /** The models of every coding agent a person can pick, by driver. */
11
12
  export type ModelsView = Record<DriverName, DriverModels>;
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/dashboard/models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE7D,yEAAyE;AACzE,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpF,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAEzD,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,YAAY,CAkBxG;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,IAAI,YAAY,CAElD"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/dashboard/models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE7D,+HAA+H;AAC/H,MAAM,MAAM,YAAY,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAEpG,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAEzD,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CAAA;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,GAAG,YAAY,CAkBxG;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,IAAI,YAAY,CAElD"}
@@ -17,7 +17,7 @@ export function cachedModelsSource(drivers) {
17
17
  asked.set(name, answer);
18
18
  answer.catch(() => asked.delete(name));
19
19
  }
20
- return answer.then(models => ({ models }), (err) => ({ models: [], error: err instanceof Error ? err.message : String(err) }));
20
+ return answer.then(models => ({ models }), (err) => ({ models: [], error: err instanceof Error ? err.message : String(err), ...(err.code === 'ENOENT' ? { missing: true } : {}) }));
21
21
  };
22
22
  return {
23
23
  read: async () => Object.fromEntries(await Promise.all(DRIVERS.map(async (name) => [name, await ask(name)]))),
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/dashboard/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,OAAO,EAAmB,MAAM,oBAAoB,CAAA;AAa7D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAuD;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAA;IAC3D,MAAM,GAAG,GAAG,CAAC,IAAgB,EAAyB,EAAE;QACtD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAA;YAC3C,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;YACrH,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACvB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAChB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EACtB,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAC5F,CAAA;IACH,CAAC,CAAA;IACD,OAAO;QACL,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC,CAAe;KACnI,CAAA;AACH,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB;IACjC,OAAO,kBAAkB,CAAC,EAAE,aAAa,EAAE,IAAI,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,EAAE,CAAC,CAAA;AAChG,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/dashboard/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,OAAO,EAAmB,MAAM,oBAAoB,CAAA;AAa7D;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAuD;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAA;IAC3D,MAAM,GAAG,GAAG,CAAC,IAAgB,EAAyB,EAAE;QACtD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAA;YAC3C,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;YACrH,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACvB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAChB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EACtB,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAE,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACrL,CAAA;IACH,CAAC,CAAA;IACD,OAAO;QACL,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC,CAAe;KACnI,CAAA;AACH,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB;IACjC,OAAO,kBAAkB,CAAC,EAAE,aAAa,EAAE,IAAI,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,EAAE,CAAC,CAAA;AAChG,CAAC"}
@@ -1 +1 @@
1
- import{$ as e,A as t,An as n,B as r,C as i,Cn as a,Dn as o,E as s,F as c,G as l,H as u,I as d,J as f,Jt as p,K as m,Kt as h,L as g,M as _,N as v,P as y,Pn as b,Q as x,Qt as S,R as C,S as w,Sn as T,Tn as E,U as D,V as O,W as k,X as A,Xt as j,Y as M,Yt as N,Z as P,_ as F,_t as I,a as L,an as R,bn as z,br as B,c as V,cn as H,d as U,dr as W,en as G,et as K,f as q,g as J,gn as Y,gr as X,gt as Z,h as Q,hr as $,i as ee,in as te,k as ne,l as re,ln as ie,lt as ae,m as oe,mr as se,n as ce,nn as le,nt as ue,o as de,on as fe,pr as pe,pt as me,q as he,qt as ge,r as _e,rn as ve,rt as ye,s as be,sn as xe,st as Se,t as Ce,tn as we,tt as Te,u as Ee,un as De,ur as Oe,ut as ke,v as Ae,w as je,wn as Me,wr as Ne,xr as Pe,yr as Fe,z as Ie}from"../module-Bhd9t16k.js";export{Se as Badge,se as Button,e as Card,K as CardContent,Te as CardHeader,ue as CardTitle,ye as CardTitleLink,ae as Checkbox,ke as ConfirmDialog,v as ContextMenu,y as ContextMenuTrigger,Z as Dialog,c as DiffStat,p as DropdownMenu,N as DropdownMenuCheckboxItem,j as DropdownMenuContent,S as DropdownMenuItem,G as DropdownMenuSeparator,we as DropdownMenuSub,le as DropdownMenuSubContent,ve as DropdownMenuSubTrigger,te as DropdownMenuTrigger,i as FileIcon,je as FilterChips,ie as Input,l as Label,Ae as LinkActions,Ne as MAX_SPEND_OFFSET,b as MachineMark,me as Markdown,Ce as ModuleHostContext,ne as Page,t as PaneActions,_ as PaneTitle,V as Pieces,g as Popover,C as PopoverContent,Ie as PopoverTrigger,q as QrCode,fe as RadioGroup,xe as RadioGroupItem,H as RadioGroupOption,d as RangeSlider,R as ScrollArea,r as Select,O as SelectContent,u as SelectItem,D as SelectTrigger,k as SelectValue,ge as Separator,Q as SettingsRow,J as SettingsSection,F as SettingsSelectRow,h as Skeleton,w as StartAgentButton,s as StatTile,x as Switch,m as Table,he as TableBody,f as TableCell,M as TableHead,A as TableHeader,P as TableRow,I as Textarea,Oe as Tooltip,W as TooltipContent,pe as TooltipTrigger,Ee as Waiting,$ as buttonVariants,X as cn,ce as defineModule,z as forgetRemembered,Me as formatAge,E as formatDateTime,o as formatDuration,n as formatRelative,Fe as machineKind,B as machineName,_e as moduleHost,L as pathsIn,Pe as reachedByLine,De as useAction,Y as useCodingAgents,de as useFileNames,re as useHighlighted,T as useLoaded,ee as useModuleHost,U as useNarrow,a as usePolled,be as useSchedule,oe as useSettingsCrumb};
1
+ import{$ as e,A as t,An as n,B as r,C as i,Cn as a,Dn as o,E as s,F as c,G as l,H as u,I as d,J as f,Jt as p,K as m,Kt as h,L as g,M as _,N as v,P as y,Pn as b,Q as x,Qt as S,R as C,S as w,Sn as T,Tn as E,U as D,V as O,W as k,X as A,Xt as j,Y as M,Yt as N,Z as P,_ as F,_t as I,a as L,an as R,bn as z,br as B,c as V,cn as H,d as U,dr as W,en as G,et as K,f as q,g as J,gn as Y,gr as X,gt as Z,h as Q,hr as $,i as ee,in as te,k as ne,l as re,ln as ie,lt as ae,m as oe,mr as se,n as ce,nn as le,nt as ue,o as de,on as fe,pr as pe,pt as me,q as he,qt as ge,r as _e,rn as ve,rt as ye,s as be,sn as xe,st as Se,t as Ce,tn as we,tt as Te,u as Ee,un as De,ur as Oe,ut as ke,v as Ae,w as je,wn as Me,wr as Ne,xr as Pe,yr as Fe,z as Ie}from"../module-CXKv8UKd.js";export{Se as Badge,se as Button,e as Card,K as CardContent,Te as CardHeader,ue as CardTitle,ye as CardTitleLink,ae as Checkbox,ke as ConfirmDialog,v as ContextMenu,y as ContextMenuTrigger,Z as Dialog,c as DiffStat,p as DropdownMenu,N as DropdownMenuCheckboxItem,j as DropdownMenuContent,S as DropdownMenuItem,G as DropdownMenuSeparator,we as DropdownMenuSub,le as DropdownMenuSubContent,ve as DropdownMenuSubTrigger,te as DropdownMenuTrigger,i as FileIcon,je as FilterChips,ie as Input,l as Label,Ae as LinkActions,Ne as MAX_SPEND_OFFSET,b as MachineMark,me as Markdown,Ce as ModuleHostContext,ne as Page,t as PaneActions,_ as PaneTitle,V as Pieces,g as Popover,C as PopoverContent,Ie as PopoverTrigger,q as QrCode,fe as RadioGroup,xe as RadioGroupItem,H as RadioGroupOption,d as RangeSlider,R as ScrollArea,r as Select,O as SelectContent,u as SelectItem,D as SelectTrigger,k as SelectValue,ge as Separator,Q as SettingsRow,J as SettingsSection,F as SettingsSelectRow,h as Skeleton,w as StartAgentButton,s as StatTile,x as Switch,m as Table,he as TableBody,f as TableCell,M as TableHead,A as TableHeader,P as TableRow,I as Textarea,Oe as Tooltip,W as TooltipContent,pe as TooltipTrigger,Ee as Waiting,$ as buttonVariants,X as cn,ce as defineModule,z as forgetRemembered,Me as formatAge,E as formatDateTime,o as formatDuration,n as formatRelative,Fe as machineKind,B as machineName,_e as moduleHost,L as pathsIn,Pe as reachedByLine,De as useAction,Y as useCodingAgents,de as useFileNames,re as useHighlighted,T as useLoaded,ee as useModuleHost,U as useNarrow,a as usePolled,be as useSchedule,oe as useSettingsCrumb};