@songsid/agend 2.2.0-beta.4 → 2.2.0-beta.6
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/dist/backend/claude-carry.d.ts +22 -0
- package/dist/backend/claude-carry.js +170 -0
- package/dist/backend/claude-carry.js.map +1 -0
- package/dist/backend/claude-code.d.ts +23 -0
- package/dist/backend/claude-code.js +102 -2
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +7 -0
- package/dist/backend/credential-profile.js +7 -1
- package/dist/backend/credential-profile.js.map +1 -1
- package/dist/backend/kiro.js +5 -2
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.d.ts +41 -0
- package/dist/backend/muse.js +239 -44
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +7 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/background-work-ended.d.ts +18 -0
- package/dist/background-work-ended.js +30 -0
- package/dist/background-work-ended.js.map +1 -0
- package/dist/channel/adapters/telegram.d.ts +4 -5
- package/dist/channel/adapters/telegram.js +33 -17
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/message-edit-errors.d.ts +5 -0
- package/dist/channel/message-edit-errors.js +24 -0
- package/dist/channel/message-edit-errors.js.map +1 -0
- package/dist/cli.js +60 -10
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +3 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/daemon.js +41 -0
- package/dist/daemon.js.map +1 -1
- package/dist/fleet-context.d.ts +4 -1
- package/dist/fleet-manager.d.ts +112 -5
- package/dist/fleet-manager.js +516 -52
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +44 -9
- package/dist/locale.js +18 -2
- package/dist/locale.js.map +1 -1
- package/dist/needs-you-hub.js +2 -0
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you-live.d.ts +6 -0
- package/dist/needs-you-live.js +23 -3
- package/dist/needs-you-live.js.map +1 -1
- package/dist/outbound-handlers.d.ts +7 -0
- package/dist/outbound-handlers.js +19 -10
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/public-preview.d.ts +100 -0
- package/dist/public-preview.js +233 -0
- package/dist/public-preview.js.map +1 -0
- package/dist/public-web-gateway.js +4 -3
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +20 -0
- package/dist/public-web-link.js +26 -1
- package/dist/public-web-link.js.map +1 -1
- package/dist/restart-progress.d.ts +33 -0
- package/dist/restart-progress.js +30 -0
- package/dist/restart-progress.js.map +1 -1
- package/dist/service-installer.d.ts +31 -0
- package/dist/service-installer.js +41 -2
- package/dist/service-installer.js.map +1 -1
- package/dist/topic-commands.js +3 -1
- package/dist/topic-commands.js.map +1 -1
- package/dist/tunnel/purpose-lane.d.ts +5 -1
- package/dist/tunnel/purpose-lane.js +14 -7
- package/dist/tunnel/purpose-lane.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/ui/chat-strings.js +14 -2
- package/dist/ui/chat-thread.js +2 -2
- package/dist/ui/panel-chat.js +9 -2
- package/dist/ui/panel-fleet.js +148 -35
- package/dist/ui/panel-needs.js +4 -3
- package/dist/ui/panel-settings.js +1 -1
- package/dist/ui/preview-status.js +28 -0
- package/dist/ui/preview.js +35 -2
- package/dist/ui/shared/app-i18n.js +4 -0
- package/dist/ui/shared/app-prefs.js +1 -0
- package/dist/ui/shared/app-shell.js +146 -2
- package/dist/ui/shared/app-stream.js +21 -4
- package/dist/ui/shared/app.css +41 -15
- package/dist/ui/shared/instance-nav.js +47 -16
- package/dist/ui/shared/usage-dialog.js +10 -1
- package/dist/ui/shared/view-strings.js +4 -0
- package/dist/update-install.d.ts +13 -1
- package/dist/update-install.js +16 -4
- package/dist/update-install.js.map +1 -1
- package/dist/update-marker.d.ts +51 -0
- package/dist/update-marker.js +61 -0
- package/dist/update-marker.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +1 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/providers.d.ts +34 -5
- package/dist/usage/providers.js +160 -27
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/statusline-usage.d.ts +6 -2
- package/dist/usage/statusline-usage.js +10 -4
- package/dist/usage/statusline-usage.js.map +1 -1
- package/dist/web-api.d.ts +20 -1
- package/dist/web-api.js +101 -13
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +2 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-prefs.js +2 -0
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +14 -1
- package/dist/web-preview.js +35 -13
- package/dist/web-preview.js.map +1 -1
- package/dist/web-schedules.d.ts +12 -0
- package/dist/web-schedules.js +34 -0
- package/dist/web-schedules.js.map +1 -0
- package/dist/web-server-drain.d.ts +10 -0
- package/dist/web-server-drain.js +50 -0
- package/dist/web-server-drain.js.map +1 -0
- package/package.json +1 -1
- package/templates/launchd.plist.ejs +3 -1
- package/templates/systemd.service.ejs +2 -1
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1723: HTML previews over the temporary public link. Design: #1723 issuecomment-6127793728.
|
|
3
|
+
*
|
|
4
|
+
* The public dashboard (`https://<a>.trycloudflare.com`) gets a preview origin of its own: a second quick tunnel to a
|
|
5
|
+
* per-exposure preview gateway, at `https://<b>.trycloudflare.com`. trycloudflare.com is on the Public Suffix List, so
|
|
6
|
+
* the two are different sites — the frame is cross-site to the dashboard (its own process, no shared cookies), which
|
|
7
|
+
* isolates better than the local same-site default.
|
|
8
|
+
*
|
|
9
|
+
* The gateway serves exactly the local listener's frame (web-preview.ts: the shim, its CSP, sandbox, no network) with
|
|
10
|
+
* `frame-ancestors` = this exposure's dashboard origin and nothing else; a readiness page for the tunnel's probe; and
|
|
11
|
+
* nothing more. It is never the dashboard host, and the dashboard host never serves it (isPublicWebRoute has no
|
|
12
|
+
* /frame).
|
|
13
|
+
*
|
|
14
|
+
* It never delays the link: PublicWebLink starts it without awaiting it, and nothing of the link's steps reads it.
|
|
15
|
+
* Until it is ready the page says "Preview is starting…" and asks /ui/preview-status; if it fails, the link is
|
|
16
|
+
* untouched and the page says why. It lives and dies with its exposure.
|
|
17
|
+
*/
|
|
18
|
+
import { randomBytes } from "node:crypto";
|
|
19
|
+
import { createServer } from "node:http";
|
|
20
|
+
import { normalizeOrigin, previewFrameResponse } from "./web-preview.js";
|
|
21
|
+
import { failureOf } from "./public-link-progress.js";
|
|
22
|
+
import { newTunnelSid } from "./tunnel/manager.js";
|
|
23
|
+
const QUICK_TUNNEL_HOST = /^[a-z0-9-]+\.trycloudflare\.com$/;
|
|
24
|
+
/**
|
|
25
|
+
* What a public-link page may frame: any quick tunnel's /frame — the preview host is not known when the page may
|
|
26
|
+
* load. The page only ever points its frame at the origin its exposure names; the boundary is the preview side's
|
|
27
|
+
* exact frame-ancestors, its sandbox and its connect-src 'none' (#1723 design, option 1). Public-link pages only.
|
|
28
|
+
*/
|
|
29
|
+
export const PUBLIC_PREVIEW_FRAME_SRC = "https://*.trycloudflare.com/frame";
|
|
30
|
+
/**
|
|
31
|
+
* #1732: a preview tunnel that came up unreachable is started once more, with a fresh quick tunnel — only if the first
|
|
32
|
+
* attempt ended within this long of the preview's start, so that the second (one 60 s startup budget) still ends
|
|
33
|
+
* inside the page's 5-minute wait for it (preview-status.js).
|
|
34
|
+
*/
|
|
35
|
+
export const PREVIEW_RETRY_WITHIN_MS = 180_000;
|
|
36
|
+
/** Where the public link's preview tunnel keeps its own lease (never the fleet's one `tunnel.lease`). */
|
|
37
|
+
export const PUBLIC_PREVIEW_TUNNEL_DIR = "preview-tunnel";
|
|
38
|
+
/**
|
|
39
|
+
* Whether a public link gets a preview tunnel of its own: previews on (`web.preview`), on for the public link
|
|
40
|
+
* (`web.preview_on_public_link`, default true), and no `web.preview_origin` — a configured one is used instead.
|
|
41
|
+
*/
|
|
42
|
+
export function publicPreviewWanted(web) {
|
|
43
|
+
if (web?.preview === false || web?.preview_on_public_link === false)
|
|
44
|
+
return false;
|
|
45
|
+
return !(typeof web?.preview_origin === "string" && normalizeOrigin(web.preview_origin));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The preview gateway: `GET /frame` → the shim, framable only by `dashboardOrigin()` (503 until that is known);
|
|
49
|
+
* `GET /ready` → the tunnel's readiness marker; anything else → empty 404. A Host other than this tunnel's own, or an
|
|
50
|
+
* exposure no longer current → empty 403. No cookie or header but Host is read, nothing is logged per request.
|
|
51
|
+
*/
|
|
52
|
+
export function createPublicPreviewGateway(opts) {
|
|
53
|
+
let host = null;
|
|
54
|
+
const bootId = opts.bootId ?? randomBytes(16).toString("hex");
|
|
55
|
+
const marker = `agend-preview-${opts.exposureId}`;
|
|
56
|
+
const sockets = new Set();
|
|
57
|
+
let frame = null;
|
|
58
|
+
const empty = (res, status) => {
|
|
59
|
+
res.writeHead(status, { "Content-Length": "0", "Cache-Control": "no-store", "X-Content-Type-Options": "nosniff", "Referrer-Policy": "no-referrer" });
|
|
60
|
+
res.end();
|
|
61
|
+
};
|
|
62
|
+
const server = (opts.create ?? createServer)((req, res) => {
|
|
63
|
+
try {
|
|
64
|
+
if (!opts.isCurrent() || !host || req.headers.host !== host)
|
|
65
|
+
return empty(res, 403);
|
|
66
|
+
if (req.method !== "GET")
|
|
67
|
+
return empty(res, 404);
|
|
68
|
+
if (req.url === "/ready") {
|
|
69
|
+
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8", "Cache-Control": "no-store", "X-Content-Type-Options": "nosniff" });
|
|
70
|
+
res.end(`<html><body>${marker}</body></html>`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (req.url !== "/frame")
|
|
74
|
+
return empty(res, 404);
|
|
75
|
+
const origin = opts.dashboardOrigin();
|
|
76
|
+
if (!origin)
|
|
77
|
+
return empty(res, 503);
|
|
78
|
+
// Built for the one dashboard origin this exposure has; rebuilt only if that ever changes.
|
|
79
|
+
if (frame?.origin !== origin)
|
|
80
|
+
frame = { origin, ...previewFrameResponse(bootId, [origin]) };
|
|
81
|
+
res.writeHead(200, frame.headers);
|
|
82
|
+
res.end(frame.body);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
if (!res.headersSent)
|
|
86
|
+
empty(res, 400);
|
|
87
|
+
else
|
|
88
|
+
res.destroy();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
server.maxHeadersCount = 32;
|
|
92
|
+
server.headersTimeout = 5_000;
|
|
93
|
+
server.requestTimeout = 10_000;
|
|
94
|
+
server.keepAliveTimeout = 5_000;
|
|
95
|
+
server.setTimeout(15_000, socket => socket.destroy());
|
|
96
|
+
server.on("connection", socket => { if (sockets.size >= 32) {
|
|
97
|
+
socket.destroy();
|
|
98
|
+
return;
|
|
99
|
+
} sockets.add(socket); socket.on("close", () => sockets.delete(socket)); });
|
|
100
|
+
server.on("upgrade", (_req, socket) => socket.destroy());
|
|
101
|
+
server.on("connect", (_req, socket) => socket.destroy());
|
|
102
|
+
server.on("clientError", (_err, socket) => socket.destroy());
|
|
103
|
+
server.on("error", () => { host = null; });
|
|
104
|
+
return {
|
|
105
|
+
server, readinessMarker: marker, bootId,
|
|
106
|
+
listen: () => new Promise((resolve, rejectListen) => {
|
|
107
|
+
server.once("error", rejectListen);
|
|
108
|
+
server.listen(0, "127.0.0.1", () => {
|
|
109
|
+
server.off("error", rejectListen);
|
|
110
|
+
const address = server.address();
|
|
111
|
+
if (!address || typeof address === "string") {
|
|
112
|
+
rejectListen(new Error("preview gateway not bound"));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
resolve(new URL(`http://127.0.0.1:${address.port}`));
|
|
116
|
+
});
|
|
117
|
+
}),
|
|
118
|
+
setHost: value => {
|
|
119
|
+
if (value !== null && !QUICK_TUNNEL_HOST.test(value))
|
|
120
|
+
throw new Error("invalid tunnel host");
|
|
121
|
+
host = value;
|
|
122
|
+
},
|
|
123
|
+
close: () => {
|
|
124
|
+
host = null;
|
|
125
|
+
server.close();
|
|
126
|
+
server.closeAllConnections();
|
|
127
|
+
for (const socket of sockets)
|
|
128
|
+
socket.destroy();
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* One exposure's preview: its gateway and its quick tunnel, on a manager (and lease) of its own — never the fleet's
|
|
134
|
+
* one tunnel lane, which the dashboard link holds while this exists. start() returns at once; the work runs behind it
|
|
135
|
+
* and only ever changes this object's status.
|
|
136
|
+
*/
|
|
137
|
+
export class PublicPreview {
|
|
138
|
+
deps;
|
|
139
|
+
current = { state: "starting" };
|
|
140
|
+
abort = new AbortController();
|
|
141
|
+
gateway = null;
|
|
142
|
+
running = Promise.resolve();
|
|
143
|
+
stopping = null;
|
|
144
|
+
unsubscribe;
|
|
145
|
+
constructor(deps) {
|
|
146
|
+
this.deps = deps;
|
|
147
|
+
}
|
|
148
|
+
status() { return this.current; }
|
|
149
|
+
/** Start in the background. Never throws, never awaited by the link: its outcome is only ever this status. */
|
|
150
|
+
start() {
|
|
151
|
+
this.running = this.run().catch((err) => {
|
|
152
|
+
this.settle({ state: "failed", reason: err instanceof PreviewStartFailure ? err.reason : this.abort.signal.aborted ? "closed" : "unknown" });
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
live() { return !this.abort.signal.aborted && !this.stopping && this.deps.isCurrent(); }
|
|
156
|
+
settle(status) {
|
|
157
|
+
if (this.current.state !== "starting" && status.state !== "failed")
|
|
158
|
+
return;
|
|
159
|
+
if (this.current.state === "failed")
|
|
160
|
+
return;
|
|
161
|
+
this.current = status;
|
|
162
|
+
if (status.state === "failed")
|
|
163
|
+
this.gateway?.setHost(null);
|
|
164
|
+
this.deps.log?.(status.state === "failed" ? `preview ${status.reason}` : "preview ready");
|
|
165
|
+
try {
|
|
166
|
+
this.deps.onSettled?.(status);
|
|
167
|
+
}
|
|
168
|
+
catch { /* a progress message is no reason to fail */ }
|
|
169
|
+
}
|
|
170
|
+
async run() {
|
|
171
|
+
const now = this.deps.now ?? (() => performance.now());
|
|
172
|
+
const startedAt = now();
|
|
173
|
+
const gateway = (this.deps.createGateway ?? createPublicPreviewGateway)({
|
|
174
|
+
exposureId: this.deps.exposureId, dashboardOrigin: () => this.deps.dashboardOrigin(),
|
|
175
|
+
isCurrent: () => this.live() && this.current.state !== "failed",
|
|
176
|
+
});
|
|
177
|
+
this.gateway = gateway;
|
|
178
|
+
const origin = await gateway.listen().catch(() => { throw new PreviewStartFailure("gateway-failed"); });
|
|
179
|
+
if (!this.live())
|
|
180
|
+
throw new PreviewStartFailure("closed");
|
|
181
|
+
const attempt = () => this.deps.manager.start(this.deps.provider(), {
|
|
182
|
+
sid: newTunnelSid(), origin, pagePath: "/ready", readinessMarker: gateway.readinessMarker, expiresAt: this.deps.expiresAt,
|
|
183
|
+
signal: this.abort.signal, onCandidateHost: host => { if (this.live())
|
|
184
|
+
gateway.setHost(host); },
|
|
185
|
+
});
|
|
186
|
+
let result = await attempt();
|
|
187
|
+
// #1732: unreachable is often the edge's jitter, and a fresh quick tunnel comes up: once, while this exposure is
|
|
188
|
+
// live, its child proven gone (no lease held), and early enough to end inside the page's wait. Still "starting".
|
|
189
|
+
if (!result.ok && failureOf(result.errorKind) === "unreachable" && !result.leaseHeld && this.live()
|
|
190
|
+
&& this.current.state === "starting" && now() - startedAt <= PREVIEW_RETRY_WITHIN_MS) {
|
|
191
|
+
gateway.setHost(null); // the first tunnel's host is never answered again
|
|
192
|
+
this.deps.log?.("preview unreachable; retrying once");
|
|
193
|
+
result = await attempt();
|
|
194
|
+
}
|
|
195
|
+
if (!result.ok)
|
|
196
|
+
throw new PreviewStartFailure(failureOf(result.errorKind));
|
|
197
|
+
if (!this.live())
|
|
198
|
+
throw new PreviewStartFailure("closed");
|
|
199
|
+
const published = new URL(result.handle.pageUrl);
|
|
200
|
+
if (published.protocol !== "https:" || published.pathname !== "/ready" || !QUICK_TUNNEL_HOST.test(published.host)) {
|
|
201
|
+
throw new PreviewStartFailure("no-address");
|
|
202
|
+
}
|
|
203
|
+
gateway.setHost(published.host);
|
|
204
|
+
this.unsubscribe = result.handle.onUnexpectedExit(() => { this.settle({ state: "failed", reason: "exited" }); });
|
|
205
|
+
this.settle({ state: "ready", origin: published.origin, boot: gateway.bootId });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The exposure is closing: fence now (no request is answered from here on), then end the start in flight and the
|
|
209
|
+
* tunnel — on proof, as the link's own tunnel is stopped.
|
|
210
|
+
*/
|
|
211
|
+
stop(reason) {
|
|
212
|
+
if (this.stopping)
|
|
213
|
+
return this.stopping;
|
|
214
|
+
this.abort.abort();
|
|
215
|
+
this.unsubscribe?.();
|
|
216
|
+
this.gateway?.setHost(null);
|
|
217
|
+
this.gateway?.close();
|
|
218
|
+
this.stopping = (async () => {
|
|
219
|
+
await this.running.catch(() => { });
|
|
220
|
+
this.gateway?.close(); // listen may have finished after the first close
|
|
221
|
+
return this.deps.manager.stop(reason);
|
|
222
|
+
})();
|
|
223
|
+
return this.stopping;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
class PreviewStartFailure extends Error {
|
|
227
|
+
reason;
|
|
228
|
+
constructor(reason) {
|
|
229
|
+
super(reason);
|
|
230
|
+
this.reason = reason;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=public-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-preview.js","sourceRoot":"","sources":["../src/public-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,15 +30,16 @@ export function isPublicWebRoute(method, path) {
|
|
|
30
30
|
return true;
|
|
31
31
|
if (method === "GET" && /^\/ui\/js\/[a-z0-9_-]+\.js$/.test(path))
|
|
32
32
|
return true;
|
|
33
|
-
if (method === "GET" && /^\/ui\/(backends|poll|history|file\/[^/]+|prompts|instance\/[^/]+|instances|tasks(?:\/[^/]+)?|schedules(?:\/[^/]+)?|teams(?:\/[^/]+)?|config|org|cache|prefs)$/.test(path))
|
|
33
|
+
if (method === "GET" && /^\/ui\/(backends|poll|history|file\/[^/]+|prompts|instance\/[^/]+|instances|tasks(?:\/[^/]+)?|schedules(?:\/[^/]+)?|teams(?:\/[^/]+)?|config|org|cache|prefs|preview-status)$/.test(path))
|
|
34
34
|
return true;
|
|
35
35
|
// #1630: avatars and server emoji, read-only — nothing a signed-in public user cannot already see in the page.
|
|
36
36
|
if (method === "GET" && /^\/ui\/(?:img\/(?:bot|avatar|emoji)\/[^/]+|emojis|mentions)$/.test(path))
|
|
37
37
|
return true;
|
|
38
|
-
if (method === "POST" && /^\/ui\/(send|upload|prompt|reply-button|command|needs\/ack|cancel\/[^/]+|stop\/[^/]+|start\/[^/]+|instances\/[^/]+\/delete|restart\/[^/]+|instances|tasks|
|
|
38
|
+
if (method === "POST" && /^\/ui\/(send|upload|prompt|reply-button|command|needs\/ack|cancel\/[^/]+|stop\/[^/]+|start\/[^/]+|instances\/[^/]+\/delete|restart\/[^/]+|instances|tasks|config)$/.test(path))
|
|
39
39
|
return true;
|
|
40
|
-
if (
|
|
40
|
+
if (method === "POST" && /^\/ui\/tasks\/[^/]+$/.test(path))
|
|
41
41
|
return true;
|
|
42
|
+
// #1724: schedules are not created, edited or deleted over the public link (the handlers refuse it too).
|
|
42
43
|
// #1689: teams are not created, edited or deleted over the public link (the handlers refuse it too).
|
|
43
44
|
// Settings has an explicit method/subroute manifest (not an arbitrary /api prefix).
|
|
44
45
|
return isPublicSettingsRoute(method, path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-web-gateway.js","sourceRoot":"","sources":["../src/public-web-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C,2FAA2F;AAC3F,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,IAAY;IAC3D,MAAM,KAAK,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,CAAC;IACpD,IAAI,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChM,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjH,kHAAkH;IAClH,IAAI,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3G,IAAI,MAAM,KAAK,QAAQ,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3F,IAAI,KAAK,IAAI,uCAAuC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,sHAAsH;IACtH,mFAAmF;IACnF,IAAI,MAAM,KAAK,MAAM,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpF,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrH,IAAI,MAAM,KAAK,KAAK,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,IAAI,MAAM,KAAK,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"public-web-gateway.js","sourceRoot":"","sources":["../src/public-web-gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import type { TunnelStopResult } from "./tunnel/types.js";
|
|
|
6
6
|
import type { PublicGateway } from "./public-web-gateway.js";
|
|
7
7
|
import type { LoginCodeOwner } from "./web-login.js";
|
|
8
8
|
import type { WebConfig } from "./types.js";
|
|
9
|
+
import type { PublicPreview, PublicPreviewStatus } from "./public-preview.js";
|
|
9
10
|
export declare const PUBLIC_LINK_DEFAULT_MINUTES = 120;
|
|
10
11
|
export declare const PUBLIC_LINK_MAX_MINUTES = 480;
|
|
11
12
|
export declare function publicLinkSettings(web: WebConfig | undefined): {
|
|
@@ -40,8 +41,27 @@ export declare class PublicWebLink {
|
|
|
40
41
|
wallNow?: () => number;
|
|
41
42
|
ensure?: typeof ensureCloudflared;
|
|
42
43
|
provider?: (binary: string, protocol: "http2" | "quic" | "auto") => CloudflaredProvider;
|
|
44
|
+
/**
|
|
45
|
+
* #1723: this exposure's preview, or null when it gets none (web.preview off, web.preview_on_public_link off, or a
|
|
46
|
+
* configured web.preview_origin used instead). Called once the binary is verified; its start is never awaited.
|
|
47
|
+
*/
|
|
48
|
+
createPreview?(exposure: {
|
|
49
|
+
id: string;
|
|
50
|
+
expiresAt: number;
|
|
51
|
+
binary: string;
|
|
52
|
+
protocol: "http2" | "quic" | "auto";
|
|
53
|
+
dashboardOrigin(): string | null;
|
|
54
|
+
isCurrent(): boolean;
|
|
55
|
+
}): PublicPreview | null;
|
|
43
56
|
});
|
|
44
57
|
get exposureId(): string | undefined;
|
|
58
|
+
/** #1723: the open exposure's dashboard origin (`https://<host>`), for a configured preview origin to accept; else null. */
|
|
59
|
+
openDashboardOrigin(): string | null;
|
|
60
|
+
/**
|
|
61
|
+
* #1723: the preview of exposure `exposureId`, as a page of it may use it — null when that exposure is not the open
|
|
62
|
+
* one, or has no preview.
|
|
63
|
+
*/
|
|
64
|
+
previewStatus(exposureId: string): PublicPreviewStatus | null;
|
|
45
65
|
status(): {
|
|
46
66
|
state: string;
|
|
47
67
|
expiresAt?: number;
|
package/dist/public-web-link.js
CHANGED
|
@@ -51,6 +51,21 @@ export class PublicWebLink {
|
|
|
51
51
|
this.now = deps.now ?? (() => performance.now());
|
|
52
52
|
}
|
|
53
53
|
get exposureId() { return this.entry?.id; }
|
|
54
|
+
/** #1723: the open exposure's dashboard origin (`https://<host>`), for a configured preview origin to accept; else null. */
|
|
55
|
+
openDashboardOrigin() {
|
|
56
|
+
const e = this.entry;
|
|
57
|
+
return e && e.phase === "open" && e.url && this.current(e) ? new URL(e.url).origin : null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* #1723: the preview of exposure `exposureId`, as a page of it may use it — null when that exposure is not the open
|
|
61
|
+
* one, or has no preview.
|
|
62
|
+
*/
|
|
63
|
+
previewStatus(exposureId) {
|
|
64
|
+
const e = this.entry;
|
|
65
|
+
if (!e || e.id !== exposureId || e.phase !== "open" || !this.current(e) || !e.preview)
|
|
66
|
+
return null;
|
|
67
|
+
return e.preview.status();
|
|
68
|
+
}
|
|
54
69
|
status() {
|
|
55
70
|
const e = this.entry;
|
|
56
71
|
if (e && this.now() >= e.deadline && !e.closing)
|
|
@@ -172,6 +187,11 @@ export class PublicWebLink {
|
|
|
172
187
|
onProgress: p => applyInstallProgress(e.progress, p) });
|
|
173
188
|
if (!this.current(e))
|
|
174
189
|
throw new Error("closed");
|
|
190
|
+
// #1723: the preview tunnel starts now, beside the link's, and is never awaited: no step below waits on it or
|
|
191
|
+
// reads it, so a slow or failing preview cannot delay or fail the link.
|
|
192
|
+
e.preview = this.deps.createPreview?.({ id: e.id, expiresAt: e.expiresAt, binary: binary.path, protocol,
|
|
193
|
+
dashboardOrigin: () => (e.url ? new URL(e.url).origin : null), isCurrent: () => this.current(e) }) ?? null;
|
|
194
|
+
e.preview?.start();
|
|
175
195
|
e.progress.begin("tunnel");
|
|
176
196
|
const gateway = this.deps.createGateway(e.id, () => this.current(e), () => e.phase === "open", () => { void this.close("gateway failed", e.id); });
|
|
177
197
|
e.gateway = gateway;
|
|
@@ -228,10 +248,15 @@ export class PublicWebLink {
|
|
|
228
248
|
this.deps.revoke(e.id);
|
|
229
249
|
e.gateway?.setHost(null);
|
|
230
250
|
e.gateway?.close();
|
|
251
|
+
// #1723: the preview is fenced now too (its own stop fences synchronously), and its tunnel ends with this one.
|
|
252
|
+
// Its failure is observed at once (an unproven stop, not an unhandled rejection while the link's own start ends).
|
|
253
|
+
const previewStopped = e.preview?.stop(reason).catch(() => ({ confirmed: false, reason: "preview stop failed", pid: null, identity: null }));
|
|
231
254
|
e.closing = (async () => {
|
|
232
255
|
await e.starting.catch(() => { });
|
|
233
256
|
e.gateway?.close(); // listen may have finished after the first close.
|
|
234
|
-
|
|
257
|
+
// The reservation holds the one tunnel lane until BOTH tunnels are proven stopped: an unproven preview keeps it
|
|
258
|
+
// from the next /dashboard or /login as an unproven link tunnel does.
|
|
259
|
+
const result = await e.reservation.stop(reason, previewStopped);
|
|
235
260
|
if (this.entry === e) {
|
|
236
261
|
if (result.confirmed)
|
|
237
262
|
this.entry = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-web-link.js","sourceRoot":"","sources":["../src/public-web-link.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"public-web-link.js","sourceRoot":"","sources":["../src/public-web-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ChannelAdapter } from "./channel/types.js";
|
|
2
|
+
import { type UpdateMarker, type UpdateProgressState, type UpdateReceipt } from "./update-marker.js";
|
|
2
3
|
export interface RestartProgressTarget {
|
|
3
4
|
/** Initial adapter generation, when one already exists. Update recovery may
|
|
4
5
|
* start with no adapter object and rely solely on resolveAdapter(). */
|
|
@@ -20,6 +21,12 @@ export interface RestartProgressSummary {
|
|
|
20
21
|
failedNames?: string[];
|
|
21
22
|
/** Optional update-completion tip; ignored for ordinary restarts. */
|
|
22
23
|
tipText?: string;
|
|
24
|
+
/** Instances whose background work this restart/update ended (#1716); all modes. */
|
|
25
|
+
backgroundWorkEndedNames?: string[];
|
|
26
|
+
/** Optional non-fatal cleanup note (e.g. old system copy left behind); update mode only. */
|
|
27
|
+
warningText?: string;
|
|
28
|
+
/** Verbatim manual cleanup command; rendered as its own code line, update mode only. */
|
|
29
|
+
warningCommand?: string;
|
|
23
30
|
}
|
|
24
31
|
type ProgressLogger = {
|
|
25
32
|
warn(data: unknown, message: string): void;
|
|
@@ -32,8 +39,34 @@ export type RestartProgressMode = "restart" | "update" | "reload";
|
|
|
32
39
|
export declare const RESTART_PROGRESS_TERMINAL_TIMEOUT_MS = 30000;
|
|
33
40
|
/** Minimum ms between non-terminal progress edits (throttle window). */
|
|
34
41
|
export declare const PROGRESS_THROTTLE_MS = 2500;
|
|
42
|
+
/** #1716: the shared background-work line for the completion and every fallback path. */
|
|
43
|
+
export declare function formatBackgroundWorkEndedLine(names: readonly string[]): string;
|
|
35
44
|
/** One terminal text shared by the in-place edit and FleetManager fallback. */
|
|
36
45
|
export declare function formatRestartProgressCompletion(mode: RestartProgressMode, summary: RestartProgressSummary, startedAt: number, now?: number): string;
|
|
46
|
+
/**
|
|
47
|
+
* #1660: pure cleanup-watch decision for the post-completion marker watch.
|
|
48
|
+
* The caller owns the side effects; this only classifies:
|
|
49
|
+
* - append: the owed outcome landed on the same receipt — render it.
|
|
50
|
+
* - release: done silent, or the updater died past the max age — clear it.
|
|
51
|
+
* - drop: the receipt is gone or belongs to another operation — leave the
|
|
52
|
+
* marker to its own lifecycle, stop watching.
|
|
53
|
+
* - wait: outcome still owed and fresh — touch nothing (never stage-edit; the
|
|
54
|
+
* completion summary is already posted).
|
|
55
|
+
*/
|
|
56
|
+
export type CleanupWatchVerdict = {
|
|
57
|
+
action: "append";
|
|
58
|
+
warning: string;
|
|
59
|
+
cleanupCommand?: string;
|
|
60
|
+
} | {
|
|
61
|
+
action: "release";
|
|
62
|
+
} | {
|
|
63
|
+
action: "drop";
|
|
64
|
+
} | {
|
|
65
|
+
action: "wait";
|
|
66
|
+
};
|
|
67
|
+
export declare function cleanupWatchVerdict(marker: (UpdateMarker & {
|
|
68
|
+
progress: UpdateProgressState;
|
|
69
|
+
}) | null, receipt: UpdateReceipt, now?: number): CleanupWatchVerdict;
|
|
37
70
|
/** One General-topic message that is edited throughout a fleet startup. */
|
|
38
71
|
export declare class RestartProgress {
|
|
39
72
|
readonly total: number;
|
package/dist/restart-progress.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { t } from "./locale.js";
|
|
2
2
|
import { updateElapsedSeconds } from "./update-progress.js";
|
|
3
3
|
import { runBeforeDeadline } from "./deadline.js";
|
|
4
|
+
import { UPDATE_MARKER_MAX_AGE_MS, updateReceiptOf, } from "./update-marker.js";
|
|
4
5
|
const TERMINAL_DELIVERY_RETRY_MS = 1_000;
|
|
5
6
|
export const RESTART_PROGRESS_TERMINAL_TIMEOUT_MS = 30_000;
|
|
6
7
|
/** Minimum ms between non-terminal progress edits (throttle window). */
|
|
@@ -21,6 +22,10 @@ function retryAfterMs(err) {
|
|
|
21
22
|
}
|
|
22
23
|
return 0;
|
|
23
24
|
}
|
|
25
|
+
/** #1716: the shared background-work line for the completion and every fallback path. */
|
|
26
|
+
export function formatBackgroundWorkEndedLine(names) {
|
|
27
|
+
return `⚠️ Background work was running and was ended: ${names.join(", ")}`;
|
|
28
|
+
}
|
|
24
29
|
/** One terminal text shared by the in-place edit and FleetManager fallback. */
|
|
25
30
|
export function formatRestartProgressCompletion(mode, summary, startedAt, now = Date.now()) {
|
|
26
31
|
const elapsed = formatElapsed(now - startedAt);
|
|
@@ -35,10 +40,35 @@ export function formatRestartProgressCompletion(mode, summary, startedAt, now =
|
|
|
35
40
|
if (summary.failedNames?.length) {
|
|
36
41
|
lines.push(`⚠️ Failed (${summary.failedNames.length}): ${summary.failedNames.join(", ")}`);
|
|
37
42
|
}
|
|
43
|
+
if (summary.backgroundWorkEndedNames?.length) {
|
|
44
|
+
lines.push(formatBackgroundWorkEndedLine(summary.backgroundWorkEndedNames));
|
|
45
|
+
}
|
|
46
|
+
if (mode === "update" && summary.warningText)
|
|
47
|
+
lines.push("", `⚠️ ${summary.warningText}`);
|
|
48
|
+
if (mode === "update" && summary.warningCommand)
|
|
49
|
+
lines.push(`\`$ ${summary.warningCommand}\``);
|
|
38
50
|
if (mode === "update" && summary.tipText)
|
|
39
51
|
lines.push("", summary.tipText);
|
|
40
52
|
return lines.join("\n");
|
|
41
53
|
}
|
|
54
|
+
export function cleanupWatchVerdict(marker, receipt, now = Date.now()) {
|
|
55
|
+
const current = marker ? updateReceiptOf(marker) : null;
|
|
56
|
+
if (!current || current.startedAt !== receipt.startedAt
|
|
57
|
+
|| current.messageId !== receipt.messageId || current.operation !== receipt.operation) {
|
|
58
|
+
return { action: "drop" };
|
|
59
|
+
}
|
|
60
|
+
// Age first: a recorded-but-undelivered warning still obeys the watch
|
|
61
|
+
// limit (Prism c) — otherwise a permanently refusing adapter pins the tick.
|
|
62
|
+
if (now - receipt.startedAt > UPDATE_MARKER_MAX_AGE_MS)
|
|
63
|
+
return { action: "release" };
|
|
64
|
+
const progress = marker.progress;
|
|
65
|
+
if (progress.cleanup === "done") {
|
|
66
|
+
return progress.warning
|
|
67
|
+
? { action: "append", warning: progress.warning, cleanupCommand: progress.cleanupCommand }
|
|
68
|
+
: { action: "release" };
|
|
69
|
+
}
|
|
70
|
+
return { action: "wait" };
|
|
71
|
+
}
|
|
42
72
|
/** One General-topic message that is edited throughout a fleet startup. */
|
|
43
73
|
export class RestartProgress {
|
|
44
74
|
total;
|