@songsid/agend 2.1.12 → 2.2.0-alpha.1
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 +2 -2
- package/README.zh-TW.md +2 -2
- package/dist/auth/one-time-code.d.ts +19 -0
- package/dist/auth/one-time-code.js +49 -0
- package/dist/auth/one-time-code.js.map +1 -0
- package/dist/auth-api.d.ts +52 -0
- package/dist/auth-api.js +346 -0
- package/dist/auth-api.js.map +1 -0
- package/dist/backend/claude-code.d.ts +4 -0
- package/dist/backend/claude-code.js +97 -0
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex.js +59 -30
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-agent.d.ts +66 -0
- package/dist/backend/kiro-agent.js +302 -0
- package/dist/backend/kiro-agent.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +80 -0
- package/dist/backend/kiro-identity.js +537 -0
- package/dist/backend/kiro-identity.js.map +1 -0
- package/dist/backend/kiro-v2-store-worker.d.ts +1 -0
- package/dist/backend/kiro-v2-store-worker.js +87 -0
- package/dist/backend/kiro-v2-store-worker.js.map +1 -0
- package/dist/backend/kiro-v2-store.d.ts +54 -0
- package/dist/backend/kiro-v2-store.js +131 -0
- package/dist/backend/kiro-v2-store.js.map +1 -0
- package/dist/backend/kiro-v3-identity.d.ts +5 -0
- package/dist/backend/kiro-v3-identity.js +22 -0
- package/dist/backend/kiro-v3-identity.js.map +1 -1
- package/dist/backend/kiro.d.ts +83 -7
- package/dist/backend/kiro.js +418 -91
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +45 -3
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +1 -0
- package/dist/channel/adapters/discord.js +29 -10
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +1 -0
- package/dist/channel/adapters/telegram.js +13 -1
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/types.d.ts +9 -1
- package/dist/classic-channel-manager.d.ts +18 -10
- package/dist/classic-channel-manager.js +45 -18
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +225 -127
- package/dist/cli.js.map +1 -1
- package/dist/command-table.d.ts +5 -3
- package/dist/command-table.js +29 -27
- package/dist/command-table.js.map +1 -1
- package/dist/config-validator.js +46 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/connection-secrets.d.ts +6 -0
- package/dist/connection-secrets.js +4 -0
- package/dist/connection-secrets.js.map +1 -1
- package/dist/daemon.d.ts +89 -4
- package/dist/daemon.js +661 -77
- package/dist/daemon.js.map +1 -1
- package/dist/darwin-memory.d.ts +6 -1
- package/dist/darwin-memory.js +17 -6
- package/dist/darwin-memory.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +85 -0
- package/dist/delivery-consumed-watch.js +244 -0
- package/dist/delivery-consumed-watch.js.map +1 -0
- package/dist/delivery-outbox.d.ts +61 -0
- package/dist/delivery-outbox.js +120 -2
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +14 -5
- package/dist/delivery-reconciliation.js +27 -4
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/delivery-reconciliation.test.js +35 -1
- package/dist/delivery-reconciliation.test.js.map +1 -1
- package/dist/event-loop-watch.d.ts +28 -0
- package/dist/event-loop-watch.js +75 -3
- package/dist/event-loop-watch.js.map +1 -1
- package/dist/fleet-context.d.ts +22 -2
- package/dist/fleet-level-config.d.ts +2 -2
- package/dist/fleet-level-config.js +6 -1
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +293 -12
- package/dist/fleet-manager.js +2364 -449
- package/dist/fleet-manager.js.map +1 -1
- package/dist/host-memory.d.ts +4 -0
- package/dist/host-memory.js.map +1 -1
- package/dist/instance-config-impact.js +5 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +10 -5
- package/dist/instance-lifecycle.js +162 -53
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +150 -16
- package/dist/locale.js.map +1 -1
- package/dist/login-controller.d.ts +2 -0
- package/dist/login-controller.js +17 -5
- package/dist/login-controller.js.map +1 -1
- package/dist/memory-pressure.d.ts +7 -8
- package/dist/memory-pressure.js +76 -15
- package/dist/memory-pressure.js.map +1 -1
- package/dist/monotonic-budget.d.ts +2 -0
- package/dist/monotonic-budget.js +28 -0
- package/dist/monotonic-budget.js.map +1 -0
- package/dist/needs-you-hub.d.ts +114 -0
- package/dist/needs-you-hub.js +370 -0
- package/dist/needs-you-hub.js.map +1 -0
- package/dist/needs-you-live.d.ts +116 -0
- package/dist/needs-you-live.js +228 -0
- package/dist/needs-you-live.js.map +1 -0
- package/dist/needs-you.d.ts +132 -0
- package/dist/needs-you.js +164 -0
- package/dist/needs-you.js.map +1 -0
- package/dist/node-version-guard.d.ts +30 -0
- package/dist/node-version-guard.js +50 -0
- package/dist/node-version-guard.js.map +1 -0
- package/dist/operator-control-paths.d.ts +4 -0
- package/dist/operator-control-paths.js +24 -0
- package/dist/operator-control-paths.js.map +1 -0
- package/dist/outbound-handlers.d.ts +2 -0
- package/dist/outbound-handlers.js +9 -2
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +5 -5
- package/dist/profile-control.js +4 -20
- package/dist/profile-control.js.map +1 -1
- package/dist/public-web-gateway.d.ts +18 -0
- package/dist/public-web-gateway.js +141 -0
- package/dist/public-web-gateway.js.map +1 -0
- package/dist/public-web-link.d.ts +53 -0
- package/dist/public-web-link.js +175 -0
- package/dist/public-web-link.js.map +1 -0
- package/dist/quickstart-api.d.ts +8 -1
- package/dist/quickstart-api.js +86 -48
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +1 -0
- package/dist/quickstart.js +6 -2
- package/dist/quickstart.js.map +1 -1
- package/dist/scheduler/db.d.ts +7 -1
- package/dist/scheduler/db.js +38 -0
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/index.d.ts +1 -1
- package/dist/scheduler/retry-label.d.ts +11 -0
- package/dist/scheduler/retry-label.js +24 -0
- package/dist/scheduler/retry-label.js.map +1 -0
- package/dist/scheduler/scheduler.d.ts +55 -2
- package/dist/scheduler/scheduler.js +220 -8
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/scheduler/types.d.ts +22 -0
- package/dist/scheduler/types.js.map +1 -1
- package/dist/secret-store.d.ts +5 -0
- package/dist/secret-store.js +20 -0
- package/dist/secret-store.js.map +1 -1
- package/dist/service-activation.d.ts +110 -0
- package/dist/service-activation.js +302 -0
- package/dist/service-activation.js.map +1 -0
- package/dist/service-installer.d.ts +7 -0
- package/dist/service-installer.js +7 -4
- package/dist/service-installer.js.map +1 -1
- package/dist/service-restart-selection.d.ts +6 -5
- package/dist/service-restart-selection.js +6 -5
- package/dist/service-restart-selection.js.map +1 -1
- package/dist/settings-api.d.ts +10 -2
- package/dist/settings-api.js +175 -72
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-baseline.d.ts +20 -0
- package/dist/settings-baseline.js +104 -0
- package/dist/settings-baseline.js.map +1 -0
- package/dist/settings-change.d.ts +21 -0
- package/dist/settings-change.js +133 -0
- package/dist/settings-change.js.map +1 -0
- package/dist/settings-confirmation.d.ts +105 -0
- package/dist/settings-confirmation.js +232 -0
- package/dist/settings-confirmation.js.map +1 -0
- package/dist/settings-control.d.ts +41 -0
- package/dist/settings-control.js +294 -0
- package/dist/settings-control.js.map +1 -0
- package/dist/settings-effect.d.ts +24 -0
- package/dist/settings-effect.js +169 -0
- package/dist/settings-effect.js.map +1 -0
- package/dist/settings-http-confirmation.d.ts +29 -0
- package/dist/settings-http-confirmation.js +123 -0
- package/dist/settings-http-confirmation.js.map +1 -0
- package/dist/settings-instance-patch.d.ts +4 -0
- package/dist/settings-instance-patch.js +26 -0
- package/dist/settings-instance-patch.js.map +1 -0
- package/dist/settings-request-capability.d.ts +16 -0
- package/dist/settings-request-capability.js +32 -0
- package/dist/settings-request-capability.js.map +1 -0
- package/dist/settings-transaction.d.ts +65 -0
- package/dist/settings-transaction.js +223 -0
- package/dist/settings-transaction.js.map +1 -0
- package/dist/setup-auth.d.ts +10 -18
- package/dist/setup-auth.js +14 -38
- package/dist/setup-auth.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +75 -18
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-guide.d.ts +13 -0
- package/dist/setup-guide.js +25 -0
- package/dist/setup-guide.js.map +1 -0
- package/dist/setup-host.d.ts +16 -0
- package/dist/setup-host.js +197 -32
- package/dist/setup-host.js.map +1 -1
- package/dist/setup-wizard.js +3 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/slash-authz.d.ts +17 -3
- package/dist/slash-authz.js +5 -0
- package/dist/slash-authz.js.map +1 -1
- package/dist/spawn-gate.js +3 -3
- package/dist/spawn-gate.js.map +1 -1
- package/dist/statusline-watcher.d.ts +5 -0
- package/dist/statusline-watcher.js +2 -0
- package/dist/statusline-watcher.js.map +1 -1
- package/dist/steer-capability.d.ts +6 -0
- package/dist/steer-capability.js +8 -0
- package/dist/steer-capability.js.map +1 -1
- package/dist/sync-work-attribution.d.ts +14 -0
- package/dist/sync-work-attribution.js +43 -8
- package/dist/sync-work-attribution.js.map +1 -1
- package/dist/tips.js +10 -5
- package/dist/tips.js.map +1 -1
- package/dist/tmux-control.d.ts +35 -5
- package/dist/tmux-control.js +291 -57
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.d.ts +20 -6
- package/dist/tmux-manager.js +90 -47
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.d.ts +59 -0
- package/dist/tmux-read.js +213 -0
- package/dist/tmux-read.js.map +1 -0
- package/dist/topic-commands.d.ts +21 -10
- package/dist/topic-commands.js +191 -58
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-delta-reader.js +2 -1
- package/dist/transcript-delta-reader.js.map +1 -1
- package/dist/tunnel/cloudflared-install.d.ts +2 -0
- package/dist/tunnel/cloudflared-install.js +1 -1
- package/dist/tunnel/cloudflared-install.js.map +1 -1
- package/dist/tunnel/purpose-lane.d.ts +14 -0
- package/dist/tunnel/purpose-lane.js +43 -0
- package/dist/tunnel/purpose-lane.js.map +1 -0
- package/dist/turn-reply-guard.d.ts +2 -0
- package/dist/turn-reply-guard.js +10 -1
- package/dist/turn-reply-guard.js.map +1 -1
- package/dist/types.d.ts +33 -0
- package/dist/ui/app.html +18 -0
- package/dist/ui/chat-render.js +478 -0
- package/dist/ui/chat-store.js +289 -0
- package/dist/ui/chat-strings.js +69 -0
- package/dist/ui/chat-thread.js +209 -0
- package/dist/ui/chat-tour.js +116 -0
- package/dist/ui/fleet-org.js +142 -0
- package/dist/ui/panel-chat.js +418 -0
- package/dist/ui/panel-fleet.js +413 -0
- package/dist/ui/panel-needs.js +202 -0
- package/dist/ui/panel-settings.js +750 -0
- package/dist/ui/preview.js +266 -0
- package/dist/ui/settings-apply.js +239 -0
- package/dist/ui/settings-confirm.js +186 -0
- package/dist/ui/settings-dialogs.js +546 -0
- package/dist/ui/settings-model.js +277 -0
- package/dist/ui/settings-strings.js +652 -0
- package/dist/ui/settings-wizard.js +140 -0
- package/dist/ui/shared/agend-auth.js +93 -0
- package/dist/ui/shared/app-ctx.js +80 -0
- package/dist/ui/shared/app-html.js +9 -0
- package/dist/ui/shared/app-i18n.js +95 -0
- package/dist/ui/shared/app-nav.js +73 -0
- package/dist/ui/shared/app-needs.js +114 -0
- package/dist/ui/shared/app-route.js +73 -0
- package/dist/ui/shared/app-session.js +66 -0
- package/dist/ui/shared/app-shell.js +344 -0
- package/dist/ui/shared/app-store.js +51 -0
- package/dist/ui/shared/app-stream.js +201 -0
- package/dist/ui/shared/app.css +676 -0
- package/dist/ui/shared/app.js +88 -0
- package/dist/ui/shared/fonts/OFL.txt +92 -0
- package/dist/ui/shared/fonts/README.md +21 -0
- package/dist/ui/shared/fonts/inter.woff2 +0 -0
- package/dist/ui/shared/htm.module.js +1 -0
- package/dist/ui/shared/panel-view.js +655 -0
- package/dist/ui/shared/preact-hooks.module.js +2 -0
- package/dist/ui/shared/preact.module.js +2 -0
- package/dist/ui/shared/signin.js +130 -0
- package/dist/ui/shared/theme.js +29 -0
- package/dist/ui/shared/tokens.css +153 -0
- package/dist/ui/shared/ui-confirm.js +43 -0
- package/dist/ui/shared/ui-dialog.js +45 -0
- package/dist/ui/shared/ui-icons.js +61 -0
- package/dist/ui/shared/ui-menu.js +39 -0
- package/dist/ui/shared/ui-states.js +20 -0
- package/dist/ui/shared/ui-toast.js +18 -0
- package/dist/ui/shared/vendor/htm.LICENSE +202 -0
- package/dist/ui/shared/vendor/preact.LICENSE +21 -0
- package/dist/ui/shared/vendor/vendor.json +39 -0
- package/dist/ui/shared/view-strings.js +309 -0
- package/dist/ui/signin.html +51 -0
- package/dist/update-check.d.ts +6 -2
- package/dist/update-check.js +12 -3
- package/dist/update-check.js.map +1 -1
- package/dist/update-install.d.ts +71 -0
- package/dist/update-install.js +162 -0
- package/dist/update-install.js.map +1 -0
- package/dist/upgrade-notices.d.ts +17 -0
- package/dist/upgrade-notices.js +93 -0
- package/dist/upgrade-notices.js.map +1 -0
- package/dist/usage/statusline-usage.d.ts +2 -0
- package/dist/usage/statusline-usage.js +14 -10
- package/dist/usage/statusline-usage.js.map +1 -1
- package/dist/view-api.d.ts +6 -1
- package/dist/view-api.js +62 -51
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +71 -14
- package/dist/web-api.js +492 -77
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.d.ts +71 -27
- package/dist/web-auth.js +169 -69
- package/dist/web-auth.js.map +1 -1
- package/dist/web-body.d.ts +3 -0
- package/dist/web-body.js +55 -0
- package/dist/web-body.js.map +1 -0
- package/dist/web-channel-echo.d.ts +9 -0
- package/dist/web-channel-echo.js +55 -0
- package/dist/web-channel-echo.js.map +1 -0
- package/dist/web-chat-history.d.ts +125 -0
- package/dist/web-chat-history.js +184 -0
- package/dist/web-chat-history.js.map +1 -0
- package/dist/web-continuation.d.ts +7 -0
- package/dist/web-continuation.js +22 -0
- package/dist/web-continuation.js.map +1 -0
- package/dist/web-host-guard.d.ts +34 -0
- package/dist/web-host-guard.js +57 -1
- package/dist/web-host-guard.js.map +1 -1
- package/dist/web-login.d.ts +72 -0
- package/dist/web-login.js +132 -0
- package/dist/web-login.js.map +1 -0
- package/dist/web-org.d.ts +55 -0
- package/dist/web-org.js +67 -0
- package/dist/web-org.js.map +1 -0
- package/dist/web-preview.d.ts +77 -0
- package/dist/web-preview.js +240 -0
- package/dist/web-preview.js.map +1 -0
- package/dist/web-request-context.d.ts +10 -0
- package/dist/web-request-context.js +13 -0
- package/dist/web-request-context.js.map +1 -0
- package/dist/web-session.d.ts +167 -0
- package/dist/web-session.js +389 -0
- package/dist/web-session.js.map +1 -0
- package/dist/web-shell-routes.d.ts +59 -0
- package/dist/web-shell-routes.js +96 -0
- package/dist/web-shell-routes.js.map +1 -0
- package/dist/web-upload.d.ts +183 -0
- package/dist/web-upload.js +468 -0
- package/dist/web-upload.js.map +1 -0
- package/dist/website-tips-renderer.d.ts +2 -2
- package/dist/website-tips-renderer.js +3 -3
- package/dist/website-tips-renderer.js.map +1 -1
- package/package.json +8 -5
- package/scripts/preinstall-guard.cjs +36 -0
- package/dist/ui/dashboard.html +0 -774
- package/dist/ui/settings.html +0 -2165
- package/dist/ui/view.html +0 -1139
package/dist/web-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-auth.js","sourceRoot":"","sources":["../src/web-auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-auth.js","sourceRoot":"","sources":["../src/web-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/web-body.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { cachedSettingsBody, settingsRequestExecution } from "./settings-request-capability.js";
|
|
2
|
+
/** Byte-bounded, abort-aware reader. Socket/request deadlines belong to the listener. */
|
|
3
|
+
export function readBoundedWebBody(req, maxBytes) {
|
|
4
|
+
const cached = cachedSettingsBody(req);
|
|
5
|
+
if (cached) {
|
|
6
|
+
if (cached.length > maxBytes)
|
|
7
|
+
return Promise.reject(new Error("payload too large"));
|
|
8
|
+
try {
|
|
9
|
+
settingsRequestExecution(req)?.assert();
|
|
10
|
+
return Promise.resolve(cached);
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
return Promise.reject(err);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
const chunks = [];
|
|
18
|
+
let size = 0, settled = false;
|
|
19
|
+
const finish = (error) => {
|
|
20
|
+
if (settled)
|
|
21
|
+
return;
|
|
22
|
+
settled = true;
|
|
23
|
+
req.off("data", data);
|
|
24
|
+
req.off("end", end);
|
|
25
|
+
req.off("error", fail);
|
|
26
|
+
req.off("aborted", aborted);
|
|
27
|
+
req.off("close", closed);
|
|
28
|
+
if (error)
|
|
29
|
+
reject(error);
|
|
30
|
+
else
|
|
31
|
+
resolve(Buffer.concat(chunks));
|
|
32
|
+
};
|
|
33
|
+
const data = (chunk) => {
|
|
34
|
+
const bytes = typeof chunk === "string" ? Buffer.from(chunk, "utf8") : chunk;
|
|
35
|
+
size += bytes.length;
|
|
36
|
+
if (size > maxBytes) {
|
|
37
|
+
finish(new Error("payload too large"));
|
|
38
|
+
req.destroy();
|
|
39
|
+
}
|
|
40
|
+
else
|
|
41
|
+
chunks.push(bytes);
|
|
42
|
+
};
|
|
43
|
+
const end = () => finish();
|
|
44
|
+
const fail = (error) => finish(error);
|
|
45
|
+
const aborted = () => finish(new Error("request aborted"));
|
|
46
|
+
const closed = () => { if (!settled)
|
|
47
|
+
finish(new Error("request closed")); };
|
|
48
|
+
req.on("data", data);
|
|
49
|
+
req.on("end", end);
|
|
50
|
+
req.on("error", fail);
|
|
51
|
+
req.on("aborted", aborted);
|
|
52
|
+
req.on("close", closed);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=web-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-body.js","sourceRoot":"","sources":["../src/web-body.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Shared visible protocol prefix; provenance is the platform's author identity. */
|
|
2
|
+
export declare const WEB_ECHO_PREFIX = "\uD83C\uDF10 web \u00B7 ";
|
|
3
|
+
/** Visible ASCII labels survive compatibility normalisation/format stripping.
|
|
4
|
+
* URLs and email local parts are data, not mention/command tokens.
|
|
5
|
+
*/
|
|
6
|
+
export declare function neutralizeWebEchoText(text: string): string;
|
|
7
|
+
export declare function formatWebChannelEcho(user: string, preview: string, fullTextNote?: string): string;
|
|
8
|
+
/** Before trigger evaluation, independent of flags, send ACKs or recent IDs. */
|
|
9
|
+
export declare function isWebChannelEcho(text: string, authorId: string, fleetBotIds: ReadonlySet<string>): boolean;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** Shared visible protocol prefix; provenance is the platform's author identity. */
|
|
2
|
+
export const WEB_ECHO_PREFIX = "🌐 web · ";
|
|
3
|
+
function clip(text, length) {
|
|
4
|
+
return text.slice(0, length).replace(/[\uD800-\uDBFF]$/, "");
|
|
5
|
+
}
|
|
6
|
+
function neutralizeTokens(text) {
|
|
7
|
+
return text
|
|
8
|
+
.replace(/<@([!&]?)(\d+)>/g, (_token, kind, id) => `[${kind === "&" ? "role" : "mention"}: ${id}]`)
|
|
9
|
+
.replace(/<#(\d+)>/g, (_token, id) => `[channel: ${id}]`)
|
|
10
|
+
.replace(/(?<![\p{L}\p{N}_/])\/([A-Za-z0-9_]+)(?:@([A-Za-z0-9_]+))?(?![\p{L}\p{N}_/@])/gu, (_token, command, bot) => `[command: ${command}${bot ? ` at ${bot}` : ""}]`)
|
|
11
|
+
.replace(/@([A-Za-z0-9_]+)(?=@)/g, (_token, name) => `[at: ${name}]`)
|
|
12
|
+
.replace(/(?<![\p{L}\p{N}_@.+%\-])@([A-Za-z0-9_]+)(?![A-Za-z0-9_])/gu, (_token, name) => `[at: ${name}]`);
|
|
13
|
+
}
|
|
14
|
+
/** Visible ASCII labels survive compatibility normalisation/format stripping.
|
|
15
|
+
* URLs and email local parts are data, not mention/command tokens.
|
|
16
|
+
*/
|
|
17
|
+
export function neutralizeWebEchoText(text) {
|
|
18
|
+
const normalized = text.normalize("NFKC").replace(/[\p{Cc}\p{Cf}]/gu, char => char === "\n" ? "\n" : char === "\t" ? " " : "");
|
|
19
|
+
const dataTokens = /[A-Za-z][A-Za-z0-9+.-]*:\/\/[^\s<>"'`]+|(?<![\p{L}\p{N}_@])(?:"[^"\r\n]+"|[\p{L}\p{N}._%+\-]+)@[A-Za-z0-9.\-]+\.[A-Za-z]{2,}(?![\p{L}\p{N}_@])/gu;
|
|
20
|
+
let result = "", offset = 0;
|
|
21
|
+
for (const match of normalized.matchAll(dataTokens)) {
|
|
22
|
+
let end = match.index + match[0].length;
|
|
23
|
+
// A Markdown/parenthesised URL ends at its balanced closing delimiter;
|
|
24
|
+
// that delimiter must not hide an adjacent active mention from rewriting.
|
|
25
|
+
if (/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(match[0]) && normalized[match.index - 1] === "(") {
|
|
26
|
+
let depth = 1;
|
|
27
|
+
for (let index = match.index; index < end; index++) {
|
|
28
|
+
if (normalized[index] === "(")
|
|
29
|
+
depth++;
|
|
30
|
+
if (normalized[index] === ")" && --depth === 0) {
|
|
31
|
+
end = index;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
result += neutralizeTokens(normalized.slice(offset, match.index)) + normalized.slice(match.index, end);
|
|
37
|
+
offset = end;
|
|
38
|
+
}
|
|
39
|
+
return result + neutralizeTokens(normalized.slice(offset));
|
|
40
|
+
}
|
|
41
|
+
export function formatWebChannelEcho(user, preview, fullTextNote = "full text in web chat") {
|
|
42
|
+
const label = clip(neutralizeWebEchoText(user).replace(/\s+/g, " "), 80) || "web-user";
|
|
43
|
+
const header = `${WEB_ECHO_PREFIX}${label}: `;
|
|
44
|
+
const body = neutralizeWebEchoText(preview);
|
|
45
|
+
// Labels can expand short input dramatically. Keep one platform message:
|
|
46
|
+
// a later Discord chunk would otherwise lose the provenance prefix.
|
|
47
|
+
const budget = 1800 - header.length;
|
|
48
|
+
const note = ` … (${clip(neutralizeWebEchoText(fullTextNote), 100)})`;
|
|
49
|
+
return header + (body.length > budget ? clip(body, budget - note.length) + note : body);
|
|
50
|
+
}
|
|
51
|
+
/** Before trigger evaluation, independent of flags, send ACKs or recent IDs. */
|
|
52
|
+
export function isWebChannelEcho(text, authorId, fleetBotIds) {
|
|
53
|
+
return fleetBotIds.has(authorId) && text.startsWith(WEB_ECHO_PREFIX);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=web-channel-echo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-channel-echo.js","sourceRoot":"","sources":["../src/web-channel-echo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/** A file shown with a message: an id the dashboard can fetch, never a path. */
|
|
2
|
+
export interface WebChatAttachment {
|
|
3
|
+
id: string;
|
|
4
|
+
kind: "photo" | "document";
|
|
5
|
+
name: string;
|
|
6
|
+
size: number;
|
|
7
|
+
mime: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* How far a message the web user sent has got (web track C3) — the ticks under it. The same lifecycle a
|
|
11
|
+
* Telegram message shows as reactions: waiting behind another message, handed to the agent, taken up by it,
|
|
12
|
+
* or not delivered; and `cancelled` when a Stop dropped it while it was still waiting.
|
|
13
|
+
*/
|
|
14
|
+
export type WebDeliveryState = "queued" | "processing" | "delivered" | "failed" | "cancelled";
|
|
15
|
+
/** The state after `next` arrives at a message in `prev`; `prev` itself when `next` would move it back. */
|
|
16
|
+
export declare function nextDeliveryState(prev: WebDeliveryState | undefined, next: WebDeliveryState): WebDeliveryState | undefined;
|
|
17
|
+
export type WebChatRole = "agent" | "user" | "status";
|
|
18
|
+
export interface WebChatMessage {
|
|
19
|
+
/** Files shown with the message (absent when none). */
|
|
20
|
+
attachments?: WebChatAttachment[];
|
|
21
|
+
/** The fleet process generation the id belongs to. */
|
|
22
|
+
boot: string;
|
|
23
|
+
/** Where a web user's message has got (absent: nothing reported yet, or not the web user's). */
|
|
24
|
+
delivery?: WebDeliveryState;
|
|
25
|
+
id: number;
|
|
26
|
+
instance: string;
|
|
27
|
+
/** The `message_id` the agent was given for a web user's message — what delivery reports name it by. */
|
|
28
|
+
messageId?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Who the server says wrote it (#1306), set by the code path that emitted it — never read from the text or the
|
|
31
|
+
* sender name: `agent` (a delivered reply), `user` (a person, on any surface; the default), `status` (a daemon
|
|
32
|
+
* status line on a web-only fleet). Only `agent` messages may get HTML preview cards.
|
|
33
|
+
*/
|
|
34
|
+
role: WebChatRole;
|
|
35
|
+
sender: string;
|
|
36
|
+
text: string;
|
|
37
|
+
ts: string;
|
|
38
|
+
}
|
|
39
|
+
export interface WebChatHistoryOptions {
|
|
40
|
+
/** Messages kept per instance. */
|
|
41
|
+
perInstance?: number;
|
|
42
|
+
/** Bytes of text kept per instance (UTF-16 length × 2 is close enough for a bound). */
|
|
43
|
+
perInstanceChars?: number;
|
|
44
|
+
/** Most messages one SSE reconnect is sent. */
|
|
45
|
+
replayMax?: number;
|
|
46
|
+
/** The generation id (tests); random otherwise. */
|
|
47
|
+
boot?: string;
|
|
48
|
+
}
|
|
49
|
+
export declare const WEB_CHAT_TEXT_MAX = 16000;
|
|
50
|
+
/**
|
|
51
|
+
* The `message_id` a message from the web chat is delivered under. Unique (two sends in one millisecond used
|
|
52
|
+
* to share `web-<ms>`), and never a platform id: Telegram and Discord ids are digits only.
|
|
53
|
+
*/
|
|
54
|
+
export declare function newWebMessageId(): string;
|
|
55
|
+
/** Whether a delivery report is about a message from the web chat rather than one on a platform. */
|
|
56
|
+
export declare function isWebMessageId(messageId: string): boolean;
|
|
57
|
+
export declare class WebChatHistory {
|
|
58
|
+
private nextId;
|
|
59
|
+
/** This process's generation: ids are only unique within it. */
|
|
60
|
+
readonly boot: string;
|
|
61
|
+
private readonly byInstance;
|
|
62
|
+
private readonly perInstance;
|
|
63
|
+
private readonly perInstanceChars;
|
|
64
|
+
private readonly replayMax;
|
|
65
|
+
constructor(opts?: WebChatHistoryOptions);
|
|
66
|
+
/** The id the next message will get minus one: the newest id handed out so far (0 when none). */
|
|
67
|
+
get lastId(): number;
|
|
68
|
+
/** Record one message; returns it with its id. Text beyond WEB_CHAT_TEXT_MAX is cut. */
|
|
69
|
+
record(msg: {
|
|
70
|
+
instance: string;
|
|
71
|
+
sender: string;
|
|
72
|
+
text: string;
|
|
73
|
+
ts: string;
|
|
74
|
+
attachments?: WebChatAttachment[];
|
|
75
|
+
messageId?: string;
|
|
76
|
+
role?: string;
|
|
77
|
+
}): WebChatMessage;
|
|
78
|
+
/** The most recent `limit` messages of one instance, oldest first. */
|
|
79
|
+
list(instance: string, limit?: number): WebChatMessage[];
|
|
80
|
+
/**
|
|
81
|
+
* Every message newer than `lastId`, across instances, oldest first, at most `replayMax` (the newest ones).
|
|
82
|
+
* Ids are this boot's: a cursor from another boot goes through replayFor(), never straight here.
|
|
83
|
+
*/
|
|
84
|
+
after(lastId: number): WebChatMessage[];
|
|
85
|
+
/**
|
|
86
|
+
* A delivery report for one of this instance's messages. Returns the message when its state changed (so the
|
|
87
|
+
* caller tells the pages), null when there is no such message or the report would move it back.
|
|
88
|
+
*/
|
|
89
|
+
setDelivery(instance: string, messageId: string, state: WebDeliveryState): WebChatMessage | null;
|
|
90
|
+
/**
|
|
91
|
+
* A Stop on this instance: the web user's messages still waiting (nothing reported, or queued) were dropped
|
|
92
|
+
* from the queue. The queue is first in, first out, so nothing older than a message that got further can
|
|
93
|
+
* still be waiting: the walk goes back from the newest and stops there. Returns the messages it changed.
|
|
94
|
+
*/
|
|
95
|
+
/**
|
|
96
|
+
* Where every retained web message got — the ticks — in one list. A delivery report has no cursor of its own and
|
|
97
|
+
* changes a message already sent, so a page that missed one (a dropped stream, a poll) catches up from this:
|
|
98
|
+
* the stream sends it on every (re)connect and each poll carries it (#1253 review). Ticks only move forward on
|
|
99
|
+
* the page, so receiving it twice changes nothing.
|
|
100
|
+
*/
|
|
101
|
+
deliveries(): Array<{
|
|
102
|
+
instance: string;
|
|
103
|
+
messageId: string;
|
|
104
|
+
delivery: WebDeliveryState;
|
|
105
|
+
}>;
|
|
106
|
+
cancelPending(instance: string): WebChatMessage[];
|
|
107
|
+
/** Forget an instance (deleted). */
|
|
108
|
+
forget(instance: string): void;
|
|
109
|
+
/** The SSE cursor for one message: `<boot>-<id>`. */
|
|
110
|
+
cursorOf(m: WebChatMessage): string;
|
|
111
|
+
/**
|
|
112
|
+
* What a reconnecting stream with this `Last-Event-ID` should be sent. A cursor of this boot replays what
|
|
113
|
+
* came after it; a cursor of another boot (the fleet restarted) gets this boot's whole retained backlog,
|
|
114
|
+
* since none of it can have been seen; no cursor, or one that is not ours in shape, gets nothing.
|
|
115
|
+
*/
|
|
116
|
+
replayFor(cursor: {
|
|
117
|
+
boot: string;
|
|
118
|
+
id: number;
|
|
119
|
+
} | null): WebChatMessage[];
|
|
120
|
+
}
|
|
121
|
+
/** `Last-Event-ID` as `<boot>-<id>`, or null when absent or not that shape. */
|
|
122
|
+
export declare function parseLastEventId(header: string | string[] | undefined): {
|
|
123
|
+
boot: string;
|
|
124
|
+
id: number;
|
|
125
|
+
} | null;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the web chat has said, kept so that a reload — or a dropped SSE stream — does not leave the chat empty.
|
|
3
|
+
*
|
|
4
|
+
* The browser used to hold the only copy (500 messages per instance, in memory): a reload showed nothing, and a
|
|
5
|
+
* stream that reconnected silently lost whatever was said while it was down. Now every chat message the fleet
|
|
6
|
+
* pushes over SSE is recorded here with a monotonically increasing id: `/ui/history` serves the recent messages
|
|
7
|
+
* of one instance, and an EventSource that reconnects with `Last-Event-ID` is sent what it missed.
|
|
8
|
+
*
|
|
9
|
+
* Bounded by count AND by bytes per instance, so a chatty agent cannot grow the fleet process without limit.
|
|
10
|
+
* In memory only: it survives a page reload, not a fleet restart (persisting chat text is a separate decision).
|
|
11
|
+
*
|
|
12
|
+
* Ids count from 1 in every fleet process, so an id alone is not an identity across a restart: each history
|
|
13
|
+
* has a random `boot` generation, every message carries it, and the SSE cursor is `<boot>-<id>`. A cursor
|
|
14
|
+
* from another boot is not compared with this boot's ids at all — that client gets this boot's backlog.
|
|
15
|
+
*/
|
|
16
|
+
import { randomBytes } from "node:crypto";
|
|
17
|
+
/**
|
|
18
|
+
* Ranks for the order a message moves through. Events can arrive late or twice (a queued after the spawn
|
|
19
|
+
* settles, a retry): a tick never moves back. `delivered` and `failed` are final; `cancelled` is not, since
|
|
20
|
+
* a Stop races a delivery already under way — what the agent actually got wins.
|
|
21
|
+
*/
|
|
22
|
+
const DELIVERY_RANK = { queued: 1, processing: 2, cancelled: 3, delivered: 4, failed: 4 };
|
|
23
|
+
/** The state after `next` arrives at a message in `prev`; `prev` itself when `next` would move it back. */
|
|
24
|
+
export function nextDeliveryState(prev, next) {
|
|
25
|
+
// Own keys only: "__proto__" or "constructor" is in every object, and is no state.
|
|
26
|
+
if (!Object.hasOwn(DELIVERY_RANK, next))
|
|
27
|
+
return prev;
|
|
28
|
+
if (prev === undefined || !Object.hasOwn(DELIVERY_RANK, prev))
|
|
29
|
+
return next;
|
|
30
|
+
return DELIVERY_RANK[next] > DELIVERY_RANK[prev] ? next : prev;
|
|
31
|
+
}
|
|
32
|
+
const ROLES = new Set(["agent", "user", "status"]);
|
|
33
|
+
export const WEB_CHAT_TEXT_MAX = 16_000;
|
|
34
|
+
/**
|
|
35
|
+
* The `message_id` a message from the web chat is delivered under. Unique (two sends in one millisecond used
|
|
36
|
+
* to share `web-<ms>`), and never a platform id: Telegram and Discord ids are digits only.
|
|
37
|
+
*/
|
|
38
|
+
export function newWebMessageId() {
|
|
39
|
+
return `web-${Date.now().toString(36)}-${randomBytes(4).toString("hex")}`;
|
|
40
|
+
}
|
|
41
|
+
/** Whether a delivery report is about a message from the web chat rather than one on a platform. */
|
|
42
|
+
export function isWebMessageId(messageId) {
|
|
43
|
+
return messageId.startsWith("web-");
|
|
44
|
+
}
|
|
45
|
+
export class WebChatHistory {
|
|
46
|
+
nextId = 1;
|
|
47
|
+
/** This process's generation: ids are only unique within it. */
|
|
48
|
+
boot;
|
|
49
|
+
byInstance = new Map();
|
|
50
|
+
perInstance;
|
|
51
|
+
perInstanceChars;
|
|
52
|
+
replayMax;
|
|
53
|
+
constructor(opts = {}) {
|
|
54
|
+
this.perInstance = opts.perInstance ?? 500;
|
|
55
|
+
this.perInstanceChars = opts.perInstanceChars ?? 1_000_000;
|
|
56
|
+
this.replayMax = opts.replayMax ?? 500;
|
|
57
|
+
this.boot = opts.boot ?? randomBytes(6).toString("hex");
|
|
58
|
+
}
|
|
59
|
+
/** The id the next message will get minus one: the newest id handed out so far (0 when none). */
|
|
60
|
+
get lastId() { return this.nextId - 1; }
|
|
61
|
+
/** Record one message; returns it with its id. Text beyond WEB_CHAT_TEXT_MAX is cut. */
|
|
62
|
+
record(msg) {
|
|
63
|
+
const entry = {
|
|
64
|
+
boot: this.boot,
|
|
65
|
+
id: this.nextId++,
|
|
66
|
+
instance: String(msg.instance),
|
|
67
|
+
// Anything not one of the three — or absent — is a person's message.
|
|
68
|
+
role: typeof msg.role === "string" && ROLES.has(msg.role) ? msg.role : "user",
|
|
69
|
+
sender: String(msg.sender),
|
|
70
|
+
text: String(msg.text ?? "").slice(0, WEB_CHAT_TEXT_MAX),
|
|
71
|
+
ts: String(msg.ts),
|
|
72
|
+
...(msg.attachments && msg.attachments.length ? { attachments: msg.attachments.slice(0, 20).map(a => ({ id: a.id, kind: a.kind, name: a.name, size: a.size, mime: a.mime })) } : {}),
|
|
73
|
+
...(typeof msg.messageId === "string" && msg.messageId ? { messageId: msg.messageId.slice(0, 64) } : {}),
|
|
74
|
+
};
|
|
75
|
+
let slot = this.byInstance.get(entry.instance);
|
|
76
|
+
if (!slot) {
|
|
77
|
+
slot = { messages: [], chars: 0 };
|
|
78
|
+
this.byInstance.set(entry.instance, slot);
|
|
79
|
+
}
|
|
80
|
+
slot.messages.push(entry);
|
|
81
|
+
slot.chars += entry.text.length;
|
|
82
|
+
while (slot.messages.length > 1 && (slot.messages.length > this.perInstance || slot.chars > this.perInstanceChars)) {
|
|
83
|
+
slot.chars -= slot.messages.shift().text.length;
|
|
84
|
+
}
|
|
85
|
+
return entry;
|
|
86
|
+
}
|
|
87
|
+
/** The most recent `limit` messages of one instance, oldest first. */
|
|
88
|
+
list(instance, limit = this.perInstance) {
|
|
89
|
+
const slot = this.byInstance.get(instance);
|
|
90
|
+
if (!slot)
|
|
91
|
+
return [];
|
|
92
|
+
const n = Math.max(0, Math.min(Math.floor(limit), this.perInstance));
|
|
93
|
+
return n === 0 ? [] : slot.messages.slice(-n);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Every message newer than `lastId`, across instances, oldest first, at most `replayMax` (the newest ones).
|
|
97
|
+
* Ids are this boot's: a cursor from another boot goes through replayFor(), never straight here.
|
|
98
|
+
*/
|
|
99
|
+
after(lastId) {
|
|
100
|
+
if (!Number.isFinite(lastId) || lastId < 0)
|
|
101
|
+
return [];
|
|
102
|
+
const out = [];
|
|
103
|
+
for (const slot of this.byInstance.values()) {
|
|
104
|
+
for (const m of slot.messages)
|
|
105
|
+
if (m.id > lastId)
|
|
106
|
+
out.push(m);
|
|
107
|
+
}
|
|
108
|
+
out.sort((a, b) => a.id - b.id);
|
|
109
|
+
return out.length > this.replayMax ? out.slice(-this.replayMax) : out;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A delivery report for one of this instance's messages. Returns the message when its state changed (so the
|
|
113
|
+
* caller tells the pages), null when there is no such message or the report would move it back.
|
|
114
|
+
*/
|
|
115
|
+
setDelivery(instance, messageId, state) {
|
|
116
|
+
const messages = this.byInstance.get(instance)?.messages ?? [];
|
|
117
|
+
let m;
|
|
118
|
+
for (let i = messages.length - 1; i >= 0 && !m; i--)
|
|
119
|
+
if (messages[i].messageId === messageId)
|
|
120
|
+
m = messages[i];
|
|
121
|
+
if (!m)
|
|
122
|
+
return null;
|
|
123
|
+
const next = nextDeliveryState(m.delivery, state);
|
|
124
|
+
if (next === m.delivery)
|
|
125
|
+
return null;
|
|
126
|
+
m.delivery = next;
|
|
127
|
+
return m;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A Stop on this instance: the web user's messages still waiting (nothing reported, or queued) were dropped
|
|
131
|
+
* from the queue. The queue is first in, first out, so nothing older than a message that got further can
|
|
132
|
+
* still be waiting: the walk goes back from the newest and stops there. Returns the messages it changed.
|
|
133
|
+
*/
|
|
134
|
+
/**
|
|
135
|
+
* Where every retained web message got — the ticks — in one list. A delivery report has no cursor of its own and
|
|
136
|
+
* changes a message already sent, so a page that missed one (a dropped stream, a poll) catches up from this:
|
|
137
|
+
* the stream sends it on every (re)connect and each poll carries it (#1253 review). Ticks only move forward on
|
|
138
|
+
* the page, so receiving it twice changes nothing.
|
|
139
|
+
*/
|
|
140
|
+
deliveries() {
|
|
141
|
+
const out = [];
|
|
142
|
+
for (const [instance, slot] of this.byInstance) {
|
|
143
|
+
for (const m of slot.messages)
|
|
144
|
+
if (m.messageId !== undefined && m.delivery !== undefined)
|
|
145
|
+
out.push({ instance, messageId: m.messageId, delivery: m.delivery });
|
|
146
|
+
}
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
cancelPending(instance) {
|
|
150
|
+
const changed = [];
|
|
151
|
+
const messages = this.byInstance.get(instance)?.messages ?? [];
|
|
152
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
153
|
+
const m = messages[i];
|
|
154
|
+
if (m.messageId === undefined)
|
|
155
|
+
continue;
|
|
156
|
+
if (m.delivery !== undefined && m.delivery !== "queued")
|
|
157
|
+
break;
|
|
158
|
+
m.delivery = "cancelled";
|
|
159
|
+
changed.push(m);
|
|
160
|
+
}
|
|
161
|
+
return changed.reverse();
|
|
162
|
+
}
|
|
163
|
+
/** Forget an instance (deleted). */
|
|
164
|
+
forget(instance) { this.byInstance.delete(instance); }
|
|
165
|
+
/** The SSE cursor for one message: `<boot>-<id>`. */
|
|
166
|
+
cursorOf(m) { return `${m.boot}-${m.id}`; }
|
|
167
|
+
/**
|
|
168
|
+
* What a reconnecting stream with this `Last-Event-ID` should be sent. A cursor of this boot replays what
|
|
169
|
+
* came after it; a cursor of another boot (the fleet restarted) gets this boot's whole retained backlog,
|
|
170
|
+
* since none of it can have been seen; no cursor, or one that is not ours in shape, gets nothing.
|
|
171
|
+
*/
|
|
172
|
+
replayFor(cursor) {
|
|
173
|
+
if (!cursor)
|
|
174
|
+
return [];
|
|
175
|
+
return cursor.boot === this.boot ? this.after(cursor.id) : this.after(0);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/** `Last-Event-ID` as `<boot>-<id>`, or null when absent or not that shape. */
|
|
179
|
+
export function parseLastEventId(header) {
|
|
180
|
+
const raw = (Array.isArray(header) ? header[0] : header)?.trim();
|
|
181
|
+
const m = raw === undefined ? null : /^([0-9a-f]{1,32})-(\d{1,15})$/.exec(raw);
|
|
182
|
+
return m ? { boot: m[1], id: Number(m[2]) } : null;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=web-chat-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-chat-history.js","sourceRoot":"","sources":["../src/web-chat-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { WebSessionStore } from "./web-session.js";
|
|
3
|
+
/** Recheck AFTER a body/authorization await and BEFORE admitting a new public mutation. */
|
|
4
|
+
export declare function permitWebContinuation(req: IncomingMessage, res: ServerResponse, ctx: {
|
|
5
|
+
readonly webToken?: string | null;
|
|
6
|
+
readonly webSessions?: WebSessionStore | null;
|
|
7
|
+
}): boolean;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { settingsRequestExecution } from "./settings-request-capability.js";
|
|
2
|
+
import { evaluateWebRequest } from "./web-auth.js";
|
|
3
|
+
import { gatewayRequestContext } from "./web-request-context.js";
|
|
4
|
+
/** Recheck AFTER a body/authorization await and BEFORE admitting a new public mutation. */
|
|
5
|
+
export function permitWebContinuation(req, res, ctx) {
|
|
6
|
+
const execution = settingsRequestExecution(req);
|
|
7
|
+
if (execution) {
|
|
8
|
+
execution.assert();
|
|
9
|
+
return !res.destroyed;
|
|
10
|
+
}
|
|
11
|
+
if (!gatewayRequestContext(req))
|
|
12
|
+
return true;
|
|
13
|
+
const verdict = evaluateWebRequest(req, new URL(req.url ?? "/", "http://localhost"), ctx.webToken ?? null, ctx.webSessions, { touch: false });
|
|
14
|
+
if (verdict.kind === "allow" && !res.destroyed)
|
|
15
|
+
return true;
|
|
16
|
+
if (!res.headersSent && !res.destroyed) {
|
|
17
|
+
res.writeHead(verdict.kind === "reject" ? verdict.status : 401, { "Content-Type": "application/json" });
|
|
18
|
+
res.end(JSON.stringify({ error: "public request no longer authorized" }));
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=web-continuation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-continuation.js","sourceRoot":"","sources":["../src/web-continuation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB,CAAC,GAAoB,EAAE,GAAmB,EAC7E,GAAyF;IACzF,MAAM,SAAS,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,SAAS,EAAE,CAAC;QAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IAAC,CAAC;IAC7D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9I,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACvC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACxG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/web-host-guard.d.ts
CHANGED
|
@@ -26,6 +26,23 @@ export declare const LOOPBACK_HOST_NAMES: readonly string[];
|
|
|
26
26
|
* mistaken for it.
|
|
27
27
|
*/
|
|
28
28
|
export declare function hostnameOf(value: string): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* What a page served here may load and where it may send anything.
|
|
31
|
+
*
|
|
32
|
+
* `script-src` is this origin only — no `'unsafe-inline'` (#1268): a panel's own inline
|
|
33
|
+
* script runs because the panel is served with a per-response nonce for it
|
|
34
|
+
* (sendPanelHtml), and no panel has an inline `on*=` handler. Injected markup can
|
|
35
|
+
* therefore not run script. `connect-src`, `img-src` and `form-action` are this
|
|
36
|
+
* origin, so nothing read can be posted elsewhere, and `base-uri`, `object-src` and
|
|
37
|
+
* `frame-ancestors` are closed. Styles are the same (#1300): `style-src 'self'`, and a
|
|
38
|
+
* panel's own `<style>` block carries the response's nonce. No panel has a `style="…"`
|
|
39
|
+
* attribute — what a script colours or sizes at run time goes through the style object
|
|
40
|
+
* (CSSOM), which the policy does not govern — so injected markup cannot add inline styles of its
|
|
41
|
+
* own (it can still carry the page's existing class names).
|
|
42
|
+
*
|
|
43
|
+
* Fonts, scripts and styles are all served from here; nothing loads from a CDN.
|
|
44
|
+
*/
|
|
45
|
+
export declare const WEB_CONTENT_SECURITY_POLICY: string;
|
|
29
46
|
export interface HostGuardConfig {
|
|
30
47
|
hostname?: string;
|
|
31
48
|
web?: {
|
|
@@ -45,3 +62,20 @@ export declare function isHostAllowed(hostHeader: string | string[] | undefined,
|
|
|
45
62
|
* Node merges `writeHead` headers over `setHeader` ones.
|
|
46
63
|
*/
|
|
47
64
|
export declare function applyWebSecurityHeaders(res: ServerResponse): void;
|
|
65
|
+
/**
|
|
66
|
+
* The panel policy for one response: WEB_CONTENT_SECURITY_POLICY with this response's nonce for scripts and styles,
|
|
67
|
+
* and — for /ui only, when a preview origin was chosen for this load (#1306) — `frame-src <preview origin>/frame`:
|
|
68
|
+
* path-scoped, so nothing else of that origin can be framed or navigated to. Without it, frames fall back to
|
|
69
|
+
* default-src 'self'.
|
|
70
|
+
*/
|
|
71
|
+
export declare function panelContentSecurityPolicy(nonce: string, opts?: {
|
|
72
|
+
frameSrc?: string;
|
|
73
|
+
}): string;
|
|
74
|
+
/**
|
|
75
|
+
* Send a panel page (/ui, /view, /settings, the sign-in page). Its own inline `<script>` and `<style>` blocks get a
|
|
76
|
+
* fresh nonce, and the response's CSP names that nonce and nothing else inline (#1268, #1300): a script or a style
|
|
77
|
+
* that was not in the file as served — anything injected into the page — has no nonce and does not apply.
|
|
78
|
+
*/
|
|
79
|
+
export declare function sendPanelHtml(res: ServerResponse, html: string, status?: number, headers?: Record<string, string>, csp?: {
|
|
80
|
+
frameSrc?: string;
|
|
81
|
+
}): void;
|