@saadnvd1/agent-os 0.3.499 → 0.3.501
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.
- package/README.md +70 -0
- package/app/api/usage/rollups/route.ts +36 -0
- package/components/Devices/ConnectCard.tsx +10 -12
- package/components/Tasks/TaskRow.tsx +2 -0
- package/components/Usage/RatchetView.tsx +249 -0
- package/components/Usage/UsageDialog.tsx +7 -1
- package/components/Usage/WindowCard.tsx +2 -1
- package/data/usage/index.ts +28 -0
- package/lib/chat/drivers/claude-mapper.ts +1 -0
- package/lib/chat/drivers/claude.ts +46 -0
- package/lib/chat/events.ts +3 -0
- package/lib/chat/worker/host.ts +21 -0
- package/lib/chat/worker/protocol.ts +8 -1
- package/lib/connect/cli.ts +51 -72
- package/lib/connect/cloudflared.ts +172 -0
- package/lib/connect/config.ts +75 -26
- package/lib/connect/control-api.ts +107 -48
- package/lib/connect/enrol.ts +33 -107
- package/lib/connect/serve.ts +177 -94
- package/lib/connect/supervise.ts +281 -0
- package/lib/db/migrations.ts +72 -0
- package/lib/security/auth.ts +20 -4
- package/lib/security/gate.ts +8 -5
- package/lib/security/reach.ts +1 -1
- package/lib/tasks/index.ts +8 -0
- package/lib/usage/calls.ts +284 -0
- package/lib/usage/check-runs.ts +40 -19
- package/lib/usage/config.ts +56 -0
- package/lib/usage/nightly.ts +157 -0
- package/lib/usage/quality.ts +239 -0
- package/lib/usage/ratchet.ts +275 -0
- package/lib/usage/rate-limits.ts +192 -0
- package/lib/usage/rollup.ts +90 -0
- package/lib/usage/span.ts +152 -0
- package/lib/usage/transcript-import.ts +226 -0
- package/lib/usage/weights.ts +64 -0
- package/lib/usage/windows.ts +27 -2
- package/package.json +2 -4
- package/server.ts +7 -4
- package/stores/usageUi.ts +3 -3
- package/lib/connect/cert-check.ts +0 -32
- package/lib/connect/cloudflare-dns.ts +0 -56
- package/lib/connect/frames.ts +0 -72
- package/lib/connect/identity.ts +0 -98
- package/lib/connect/mux.ts +0 -110
- package/lib/connect/stream.ts +0 -106
- package/lib/connect/tunnel.ts +0 -98
package/lib/connect/tunnel.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This machine's end of the tunnel: dial the relay, prove who we are, and
|
|
3
|
-
* hand each incoming stream to `onStream`. Reconnects with backoff forever.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import WebSocket from "ws";
|
|
7
|
-
import { encode, Frame, json } from "./frames";
|
|
8
|
-
import { signHello } from "./identity";
|
|
9
|
-
import { Mux } from "./mux";
|
|
10
|
-
import type { TunnelStream } from "./stream";
|
|
11
|
-
import type { ConnectConfig } from "./config";
|
|
12
|
-
|
|
13
|
-
export interface TunnelOptions {
|
|
14
|
-
config: ConnectConfig;
|
|
15
|
-
machineKey: string;
|
|
16
|
-
onStream: (stream: TunnelStream) => void;
|
|
17
|
-
log?: (line: string) => void;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export type TunnelState = "connecting" | "up" | "denied" | "stopped";
|
|
21
|
-
|
|
22
|
-
export function startTunnel(opts: TunnelOptions) {
|
|
23
|
-
const log = opts.log ?? (() => {});
|
|
24
|
-
let state: TunnelState = "connecting";
|
|
25
|
-
let ws: WebSocket | null = null;
|
|
26
|
-
let delay = 1000;
|
|
27
|
-
let timer: NodeJS.Timeout | null = null;
|
|
28
|
-
|
|
29
|
-
const connect = () => {
|
|
30
|
-
if (state === "stopped") return;
|
|
31
|
-
const { relayUrl, relayServername, relayCa } = opts.config;
|
|
32
|
-
// ws hands these to tls.connect; servername isn't in its own types.
|
|
33
|
-
const tlsOptions = {
|
|
34
|
-
// Frames are at most 64 KB; nothing legitimate comes near this.
|
|
35
|
-
maxPayload: 1 << 20,
|
|
36
|
-
servername: relayServername,
|
|
37
|
-
ca: relayCa,
|
|
38
|
-
headers: relayServername ? { Host: relayServername } : undefined,
|
|
39
|
-
} as WebSocket.ClientOptions;
|
|
40
|
-
try {
|
|
41
|
-
ws = new WebSocket(`${relayUrl}/tunnel`, tlsOptions);
|
|
42
|
-
} catch (err) {
|
|
43
|
-
// A bad relayUrl must not throw out of a reconnect timer.
|
|
44
|
-
log(`connect: can't dial ${relayUrl}: ${(err as Error).message}`);
|
|
45
|
-
state = "denied";
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const mux = new Mux(ws, (stream) => opts.onStream(stream));
|
|
49
|
-
ws.on("open", () => {
|
|
50
|
-
ws!.send(
|
|
51
|
-
encode(
|
|
52
|
-
Frame.HELLO,
|
|
53
|
-
0,
|
|
54
|
-
signHello(opts.config.machineId, opts.machineKey)
|
|
55
|
-
)
|
|
56
|
-
);
|
|
57
|
-
});
|
|
58
|
-
ws.on("message", (data: Buffer) => {
|
|
59
|
-
const f = mux.handle(data);
|
|
60
|
-
if (f?.type === Frame.READY) {
|
|
61
|
-
state = "up";
|
|
62
|
-
delay = 1000;
|
|
63
|
-
log(
|
|
64
|
-
`connect: up as ${json<{ hostname: string }>(f.payload)?.hostname}`
|
|
65
|
-
);
|
|
66
|
-
} else if (f?.type === Frame.DENIED) {
|
|
67
|
-
state = "denied";
|
|
68
|
-
log(
|
|
69
|
-
`connect: relay refused: ${json<{ error: string }>(f.payload)?.error}`
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
ws.on("close", () => {
|
|
74
|
-
mux.closeAll();
|
|
75
|
-
if (state === "stopped") return;
|
|
76
|
-
// A refusal won't fix itself quickly; back off hard.
|
|
77
|
-
const denied = state === "denied";
|
|
78
|
-
if (!denied) state = "connecting";
|
|
79
|
-
const wait = denied ? 5 * 60_000 : delay;
|
|
80
|
-
delay = Math.min(delay * 2, 30_000);
|
|
81
|
-
timer = setTimeout(() => {
|
|
82
|
-
state = "connecting";
|
|
83
|
-
connect();
|
|
84
|
-
}, wait);
|
|
85
|
-
});
|
|
86
|
-
ws.on("error", (err) => log(`connect: ${err.message}`));
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
connect();
|
|
90
|
-
return {
|
|
91
|
-
state: () => state,
|
|
92
|
-
stop() {
|
|
93
|
-
state = "stopped";
|
|
94
|
-
if (timer) clearTimeout(timer);
|
|
95
|
-
ws?.close();
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
}
|