@songsid/agend 2.2.0-beta.9 → 2.3.0-beta.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 +40 -24
- package/README.zh-TW.md +40 -24
- package/dist/agent-cli.js +248 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.d.ts +2 -0
- package/dist/agent-endpoint.js +28 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.d.ts +30 -0
- package/dist/agent-file-read.js +129 -0
- package/dist/agent-file-read.js.map +1 -0
- package/dist/agent-whats-new.js +20 -1
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/atomic-write.js +9 -1
- package/dist/atomic-write.js.map +1 -1
- package/dist/auth-api.d.ts +3 -1
- package/dist/auth-api.js +32 -1
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/antigravity.d.ts +33 -0
- package/dist/backend/antigravity.js +129 -21
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +3 -0
- package/dist/backend/claude-code.js +9 -0
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-metadata.d.ts +33 -0
- package/dist/backend/codex-metadata.js +122 -18
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex.d.ts +3 -0
- package/dist/backend/codex.js +17 -1
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/effort-metadata.d.ts +37 -1
- package/dist/backend/effort-metadata.js +86 -15
- package/dist/backend/effort-metadata.js.map +1 -1
- package/dist/backend/grok.d.ts +3 -0
- package/dist/backend/grok.js +9 -0
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +3 -1
- package/dist/backend/kiro.js +7 -3
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/launch-effort.d.ts +61 -0
- package/dist/backend/launch-effort.js +170 -0
- package/dist/backend/launch-effort.js.map +1 -0
- package/dist/backend/muse.js +10 -2
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +24 -0
- package/dist/backend/types.js +12 -1
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-command.d.ts +91 -0
- package/dist/backend-command.js +122 -0
- package/dist/backend-command.js.map +1 -0
- package/dist/channel/adapters/discord.d.ts +14 -0
- package/dist/channel/adapters/discord.js +66 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +26 -1
- package/dist/channel/adapters/telegram.js +98 -7
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +36 -0
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.d.ts +2 -0
- package/dist/channel/tool-router.js +1 -1
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/channel/types.d.ts +31 -0
- package/dist/cli.js +124 -24
- package/dist/cli.js.map +1 -1
- package/dist/command-table.d.ts +2 -2
- package/dist/command-table.js +5 -2
- package/dist/command-table.js.map +1 -1
- package/dist/compact-watch.d.ts +86 -0
- package/dist/compact-watch.js +288 -0
- package/dist/compact-watch.js.map +1 -0
- package/dist/config-validator.js +55 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +9 -0
- package/dist/daemon.js +394 -29
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-outbox.d.ts +8 -1
- package/dist/delivery-outbox.js +6 -2
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/doctor.js +7 -0
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-context.d.ts +12 -0
- package/dist/fleet-manager.d.ts +247 -9
- package/dist/fleet-manager.js +1227 -142
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +4 -3
- package/dist/forged-envelope-scan.js +4 -3
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-knowledge/skills/model-discovery/SKILL.md +4 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +258 -0
- package/dist/install-lock.d.ts +18 -1
- package/dist/install-lock.js +30 -3
- package/dist/install-lock.js.map +1 -1
- package/dist/instance-avatar.d.ts +5 -4
- package/dist/instance-avatar.js +15 -8
- package/dist/instance-avatar.js.map +1 -1
- package/dist/instance-config-impact.js +3 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.js +9 -4
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.js +2 -2
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-compact-pane.d.ts +38 -0
- package/dist/kiro-compact-pane.js +57 -0
- package/dist/kiro-compact-pane.js.map +1 -0
- package/dist/launchd-handoff.d.ts +43 -0
- package/dist/launchd-handoff.js +56 -0
- package/dist/launchd-handoff.js.map +1 -0
- package/dist/locale.js +202 -30
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +10 -2
- package/dist/log-service.js.map +1 -1
- package/dist/login-shell.d.ts +21 -0
- package/dist/login-shell.js +98 -0
- package/dist/login-shell.js.map +1 -0
- package/dist/needs-you-hub.d.ts +4 -0
- package/dist/needs-you-hub.js +31 -6
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +1 -13
- package/dist/needs-you.js +3 -37
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +32 -0
- package/dist/outbound-handlers.js +150 -45
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +76 -0
- package/dist/outbound-schemas.js +65 -4
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/provider-probe.d.ts +29 -0
- package/dist/provider-probe.js +198 -2
- package/dist/provider-probe.js.map +1 -1
- package/dist/public-web-gateway.d.ts +2 -0
- package/dist/public-web-gateway.js +25 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.d.ts +1 -1
- package/dist/quickstart-api.js +8 -6
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +12 -0
- package/dist/quickstart.js +36 -6
- package/dist/quickstart.js.map +1 -1
- package/dist/reply-buttons-controller.d.ts +86 -5
- package/dist/reply-buttons-controller.js +271 -7
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/reply-buttons.d.ts +48 -3
- package/dist/reply-buttons.js +105 -10
- package/dist/reply-buttons.js.map +1 -1
- package/dist/reply-polls.d.ts +85 -0
- package/dist/reply-polls.js +154 -0
- package/dist/reply-polls.js.map +1 -0
- package/dist/repo-worktree-guard.d.ts +36 -0
- package/dist/repo-worktree-guard.js +143 -0
- package/dist/repo-worktree-guard.js.map +1 -0
- package/dist/restart-guard.d.ts +6 -3
- package/dist/restart-guard.js +6 -3
- package/dist/restart-guard.js.map +1 -1
- package/dist/restart-progress.d.ts +0 -2
- package/dist/restart-progress.js +0 -2
- package/dist/restart-progress.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts +58 -1
- package/dist/scheduler/scheduler.js +176 -10
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/sd-notify.d.ts +22 -1
- package/dist/sd-notify.js +63 -10
- package/dist/sd-notify.js.map +1 -1
- package/dist/service-activation.d.ts +15 -7
- package/dist/service-activation.js +42 -26
- package/dist/service-activation.js.map +1 -1
- package/dist/service-installer.d.ts +24 -0
- package/dist/service-installer.js +49 -1
- package/dist/service-installer.js.map +1 -1
- package/dist/service-plan.d.ts +11 -0
- package/dist/service-plan.js +23 -0
- package/dist/service-plan.js.map +1 -1
- package/dist/settings-api.js +74 -1
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +8 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +16 -2
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +5 -0
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/systemd-peer-bus.d.ts +95 -0
- package/dist/systemd-peer-bus.js +430 -0
- package/dist/systemd-peer-bus.js.map +1 -0
- package/dist/systemd-runtime.d.ts +27 -1
- package/dist/systemd-runtime.js +69 -7
- package/dist/systemd-runtime.js.map +1 -1
- package/dist/tool-permissions.js +53 -3
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +72 -2
- package/dist/topic-commands.js +156 -38
- package/dist/topic-commands.js.map +1 -1
- package/dist/topic-link.d.ts +128 -0
- package/dist/topic-link.js +269 -0
- package/dist/topic-link.js.map +1 -0
- package/dist/transcript-jsonl.d.ts +7 -2
- package/dist/transcript-jsonl.js +13 -7
- package/dist/transcript-jsonl.js.map +1 -1
- package/dist/transcript-sources.js +6 -1
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/ui/app-effects.js +187 -0
- package/dist/ui/chat-commands.js +1 -0
- package/dist/ui/chat-effect-posters.js +42 -0
- package/dist/ui/chat-effects.js +72 -0
- package/dist/ui/chat-live-replies.js +58 -0
- package/dist/ui/chat-render.js +59 -14
- package/dist/ui/chat-store.js +78 -8
- package/dist/ui/chat-strings.js +43 -16
- package/dist/ui/chat-thread.js +175 -31
- package/dist/ui/chat-tour.js +18 -15
- package/dist/ui/effect-trial-controller.js +119 -0
- package/dist/ui/effect-trial-offer.js +31 -0
- package/dist/ui/effect-trial-panel.js +37 -0
- package/dist/ui/image-lightbox.js +1 -1
- package/dist/ui/panel-chat.js +101 -27
- package/dist/ui/panel-details.js +18 -5
- package/dist/ui/panel-fleet.js +18 -5
- package/dist/ui/panel-log.js +10 -10
- package/dist/ui/panel-needs.js +13 -10
- package/dist/ui/panel-settings.js +66 -12
- package/dist/ui/preview-panel.js +25 -9
- package/dist/ui/settings-appearance.js +325 -0
- package/dist/ui/settings-dialogs.js +11 -6
- package/dist/ui/settings-effects.js +201 -0
- package/dist/ui/settings-model.js +3 -1
- package/dist/ui/settings-mods.js +257 -0
- package/dist/ui/settings-owner-effects.js +80 -0
- package/dist/ui/settings-strings.js +269 -10
- package/dist/ui/settings-token.js +7 -0
- package/dist/ui/settings-wizard.js +5 -3
- package/dist/ui/shared/agend-auth.js +27 -3
- package/dist/ui/shared/agent-widget.js +248 -0
- package/dist/ui/shared/app-i18n.js +3 -1
- package/dist/ui/shared/app-prefs.js +30 -10
- package/dist/ui/shared/app-route.js +23 -1
- package/dist/ui/shared/app-session.js +1 -1
- package/dist/ui/shared/app-shell.js +29 -16
- package/dist/ui/shared/app-store.js +2 -0
- package/dist/ui/shared/app-stream.js +15 -7
- package/dist/ui/shared/app-themes.js +188 -0
- package/dist/ui/shared/app.css +266 -11
- package/dist/ui/shared/app.js +6 -0
- package/dist/ui/shared/card-strings.js +28 -0
- package/dist/ui/shared/effect-app-runtime.js +248 -0
- package/dist/ui/shared/effect-baseline.js +64 -0
- package/dist/ui/shared/effect-chat-runtime.js +154 -0
- package/dist/ui/shared/effect-cursor.js +125 -0
- package/dist/ui/shared/effect-frame.js +127 -0
- package/dist/ui/shared/effect-geometry.js +122 -0
- package/dist/ui/shared/effect-host-style.js +10 -0
- package/dist/ui/shared/effect-owner-regions.js +74 -0
- package/dist/ui/shared/effect-owner-source.js +115 -0
- package/dist/ui/shared/effect-policy.js +137 -0
- package/dist/ui/shared/effect-poster-reader.js +98 -0
- package/dist/ui/shared/effect-posters.js +117 -0
- package/dist/ui/shared/effect-profiler.js +162 -0
- package/dist/ui/shared/effect-profiles.js +65 -0
- package/dist/ui/shared/effect-registry.js +496 -0
- package/dist/ui/shared/effect-runtime-loader.js +234 -0
- package/dist/ui/shared/effect-safety.js +153 -0
- package/dist/ui/shared/effect-stock-snapshot.js +34 -0
- package/dist/ui/shared/effect-stock-trust.js +165 -0
- package/dist/ui/shared/effect-trial-source.js +103 -0
- package/dist/ui/shared/effect-trial-stage.js +147 -0
- package/dist/ui/shared/header-tools.js +35 -15
- package/dist/ui/shared/identity-card.js +202 -0
- package/dist/ui/shared/identity-color.js +261 -0
- package/dist/ui/shared/instance-nav.js +22 -14
- package/dist/ui/shared/instance-switch.js +5 -2
- package/dist/ui/shared/owner-css.js +221 -0
- package/dist/ui/shared/owner-effect-prefs.js +117 -0
- package/dist/ui/shared/panel-view.js +96 -12
- package/dist/ui/shared/signin.js +17 -9
- package/dist/ui/shared/ui-dialog.js +1 -1
- package/dist/ui/shared/ui-icons.js +3 -0
- package/dist/ui/shared/ui-menu.js +1 -1
- package/dist/ui/shared/ui-toast.js +1 -1
- package/dist/ui/shared/view-strings.js +40 -2
- package/dist/ui/signin.html +9 -3
- package/dist/update-check.d.ts +31 -0
- package/dist/update-check.js +47 -0
- package/dist/update-check.js.map +1 -1
- package/dist/update-launch.d.ts +48 -1
- package/dist/update-launch.js +159 -5
- package/dist/update-launch.js.map +1 -1
- package/dist/usage/providers.d.ts +28 -8
- package/dist/usage/providers.js +96 -41
- package/dist/usage/providers.js.map +1 -1
- package/dist/view-api.d.ts +29 -0
- package/dist/view-api.js +214 -17
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +86 -2
- package/dist/web-api.js +1160 -92
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-limits.d.ts +82 -0
- package/dist/web-appearance-limits.js +83 -0
- package/dist/web-appearance-limits.js.map +1 -0
- package/dist/web-appearance-policy.d.ts +66 -0
- package/dist/web-appearance-policy.js +94 -0
- package/dist/web-appearance-policy.js.map +1 -0
- package/dist/web-appearance-tools.d.ts +50 -0
- package/dist/web-appearance-tools.js +105 -0
- package/dist/web-appearance-tools.js.map +1 -0
- package/dist/web-appearance-view.d.ts +99 -0
- package/dist/web-appearance-view.js +163 -0
- package/dist/web-appearance-view.js.map +1 -0
- package/dist/web-appearance.d.ts +79 -0
- package/dist/web-appearance.js +298 -0
- package/dist/web-appearance.js.map +1 -0
- package/dist/web-asset-parts.d.ts +98 -0
- package/dist/web-asset-parts.js +133 -0
- package/dist/web-asset-parts.js.map +1 -0
- package/dist/web-auth.js +17 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-card.d.ts +96 -0
- package/dist/web-card.js +232 -0
- package/dist/web-card.js.map +1 -0
- package/dist/web-chat-history.d.ts +39 -1
- package/dist/web-chat-history.js +69 -9
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +39 -3
- package/dist/web-commands.js +22 -5
- package/dist/web-commands.js.map +1 -1
- package/dist/web-effect-bundle.d.ts +28 -0
- package/dist/web-effect-bundle.js +126 -0
- package/dist/web-effect-bundle.js.map +1 -0
- package/dist/web-effect-canonical.d.ts +8 -0
- package/dist/web-effect-canonical.js +27 -0
- package/dist/web-effect-canonical.js.map +1 -0
- package/dist/web-effect-library.d.ts +114 -0
- package/dist/web-effect-library.js +530 -0
- package/dist/web-effect-library.js.map +1 -0
- package/dist/web-effect-poster.d.ts +8 -0
- package/dist/web-effect-poster.js +52 -0
- package/dist/web-effect-poster.js.map +1 -0
- package/dist/web-effect-profiles.d.ts +118 -0
- package/dist/web-effect-profiles.js +180 -0
- package/dist/web-effect-profiles.js.map +1 -0
- package/dist/web-effect-service.d.ts +86 -0
- package/dist/web-effect-service.js +312 -0
- package/dist/web-effect-service.js.map +1 -0
- package/dist/web-effect-tools.d.ts +47 -0
- package/dist/web-effect-tools.js +126 -0
- package/dist/web-effect-tools.js.map +1 -0
- package/dist/web-effect-trials.d.ts +86 -0
- package/dist/web-effect-trials.js +204 -0
- package/dist/web-effect-trials.js.map +1 -0
- package/dist/web-effect-upload.d.ts +29 -0
- package/dist/web-effect-upload.js +190 -0
- package/dist/web-effect-upload.js.map +1 -0
- package/dist/web-effect-worker.d.ts +8 -0
- package/dist/web-effect-worker.js +170 -0
- package/dist/web-effect-worker.js.map +1 -0
- package/dist/web-effect.d.ts +89 -0
- package/dist/web-effect.js +132 -0
- package/dist/web-effect.js.map +1 -0
- package/dist/web-identity-color.d.ts +87 -0
- package/dist/web-identity-color.js +209 -0
- package/dist/web-identity-color.js.map +1 -0
- package/dist/web-identity-palette.d.ts +113 -0
- package/dist/web-identity-palette.js +84 -0
- package/dist/web-identity-palette.js.map +1 -0
- package/dist/web-image-meta.d.ts +25 -0
- package/dist/web-image-meta.js +200 -0
- package/dist/web-image-meta.js.map +1 -0
- package/dist/web-login.d.ts +14 -0
- package/dist/web-login.js +4 -2
- package/dist/web-login.js.map +1 -1
- package/dist/web-mod-agent.d.ts +50 -0
- package/dist/web-mod-agent.js +203 -0
- package/dist/web-mod-agent.js.map +1 -0
- package/dist/web-mod-bundle.d.ts +144 -0
- package/dist/web-mod-bundle.js +464 -0
- package/dist/web-mod-bundle.js.map +1 -0
- package/dist/web-mod-export.d.ts +59 -0
- package/dist/web-mod-export.js +79 -0
- package/dist/web-mod-export.js.map +1 -0
- package/dist/web-mod-store.d.ts +283 -0
- package/dist/web-mod-store.js +624 -0
- package/dist/web-mod-store.js.map +1 -0
- package/dist/web-org.d.ts +3 -3
- package/dist/web-org.js +11 -17
- package/dist/web-org.js.map +1 -1
- package/dist/web-owner-css-store.d.ts +180 -0
- package/dist/web-owner-css-store.js +384 -0
- package/dist/web-owner-css-store.js.map +1 -0
- package/dist/web-owner-css.d.ts +58 -0
- package/dist/web-owner-css.js +552 -0
- package/dist/web-owner-css.js.map +1 -0
- package/dist/web-prefs.d.ts +66 -0
- package/dist/web-prefs.js +243 -35
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +9 -1
- package/dist/web-preview.js +24 -7
- package/dist/web-preview.js.map +1 -1
- package/dist/web-profile.d.ts +32 -0
- package/dist/web-profile.js +132 -0
- package/dist/web-profile.js.map +1 -0
- package/dist/web-session.d.ts +14 -0
- package/dist/web-session.js +10 -0
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +18 -0
- package/dist/web-settings-patch.js +51 -0
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-shell-routes.d.ts +1 -1
- package/dist/web-shell-routes.js +1 -1
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-theme-store.d.ts +218 -0
- package/dist/web-theme-store.js +516 -0
- package/dist/web-theme-store.js.map +1 -0
- package/dist/web-theme.d.ts +121 -0
- package/dist/web-theme.js +407 -0
- package/dist/web-theme.js.map +1 -0
- package/dist/web-upload.d.ts +119 -4
- package/dist/web-upload.js +252 -39
- package/dist/web-upload.js.map +1 -1
- package/dist/web-widget.d.ts +72 -0
- package/dist/web-widget.js +245 -0
- package/dist/web-widget.js.map +1 -0
- package/launcher/install-admission.cjs +61 -6
- package/package.json +3 -3
package/dist/web-prefs.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
export declare const WEB_PREFS_FILE = "web-prefs.json";
|
|
2
2
|
export declare const OPERATOR = "operator";
|
|
3
|
+
/** Fixed scope, never supplied by a request. Existing public keys remain host-wide. */
|
|
4
|
+
export declare const OWNER_EFFECT_KEYS: readonly ["fx.sidebar", "fx.header", "fx.page", "fx.box", "fx.cursor"];
|
|
5
|
+
export type OwnerEffectKey = typeof OWNER_EFFECT_KEYS[number];
|
|
6
|
+
export declare function isOwnerEffectKey(key: string): key is OwnerEffectKey;
|
|
7
|
+
/** Library holders are bounded even for the longest platform identity. They confer no runtime read authority. */
|
|
8
|
+
export declare function ownerEffectHolder(identity: string, key: OwnerEffectKey): string;
|
|
9
|
+
/** #1629 r4.1 Q3 (a): at most this many per-instance card sizes. */
|
|
10
|
+
export declare const MAX_CARD_SIZES = 200;
|
|
3
11
|
/** #1664: at most this many favorites. */
|
|
4
12
|
export declare const MAX_FAVORITES = 50;
|
|
13
|
+
export declare function webPrefScope(key: string): "person" | "host" | "internal" | null;
|
|
5
14
|
export declare const WEB_PREF_KEYS: readonly string[];
|
|
6
15
|
export declare function isWebPrefKey(key: string): boolean;
|
|
7
16
|
export interface WebPrefsView {
|
|
@@ -49,6 +58,14 @@ export declare class WebPrefsStore {
|
|
|
49
58
|
get path(): string;
|
|
50
59
|
private load;
|
|
51
60
|
read(identity?: string): WebPrefsView;
|
|
61
|
+
/** null is explicitly host-only, including when OPERATOR physically holds personal choices. */
|
|
62
|
+
readForViewer(person: string | null): WebPrefsView;
|
|
63
|
+
private scopedView;
|
|
64
|
+
/** All identities retain their stored references after sharing is withdrawn; unknown state refuses collection. */
|
|
65
|
+
ownerEffectReferences(): Array<{
|
|
66
|
+
id: string;
|
|
67
|
+
holder: string;
|
|
68
|
+
}>;
|
|
52
69
|
rev(): number;
|
|
53
70
|
/** #1664: an instance was removed — drop it from every favorites list (a write, and a new rev, only if one had it). */
|
|
54
71
|
forgetInstance(name: string): void;
|
|
@@ -60,4 +77,53 @@ export declare class WebPrefsStore {
|
|
|
60
77
|
write(identity: string, patch: Map<string, unknown>, opts?: {
|
|
61
78
|
onlyIfUnset?: boolean;
|
|
62
79
|
}): WebPrefsWrite;
|
|
80
|
+
/** One candidate/index write/revision for mixed host+person patches. No migration or cross-bucket shadowing. */
|
|
81
|
+
writeForViewer(person: string | null, patch: Map<string, unknown>, opts?: {
|
|
82
|
+
onlyIfUnset?: boolean;
|
|
83
|
+
validateEffect?: (person: string, key: OwnerEffectKey, id: string) => string | null;
|
|
84
|
+
}): WebPrefsWrite;
|
|
85
|
+
private writeBuckets;
|
|
86
|
+
/** #1827: a web person's profile as kept (checked again where it is used); null while the file cannot be read. */
|
|
87
|
+
profile(identity: string): WebProfile | null;
|
|
88
|
+
/** #1827: set (or, with null, clear) a person's own name — already validated by the caller (web-profile.ts). */
|
|
89
|
+
setProfileName(identity: string, name: string | null): {
|
|
90
|
+
ok: true;
|
|
91
|
+
} | {
|
|
92
|
+
ok: false;
|
|
93
|
+
status: 400 | 503;
|
|
94
|
+
error: string;
|
|
95
|
+
};
|
|
96
|
+
/** B2: unlike the legacy nullable accessor, absence is proven only from a readable, valid CSS bucket. */
|
|
97
|
+
ownerCssSelection(identity: string): {
|
|
98
|
+
known: true;
|
|
99
|
+
active: string | null;
|
|
100
|
+
} | {
|
|
101
|
+
known: false;
|
|
102
|
+
};
|
|
103
|
+
/** #1629 r4 §3: the person's active owner-CSS version, or null (none, or the file cannot be read). */
|
|
104
|
+
ownerCssActive(identity: string): string | null;
|
|
105
|
+
/** #1629 r4-5: the person's owner-CSS trial id, or null (none, or the file cannot be read). */
|
|
106
|
+
ownerCssTrial(identity: string): string | null;
|
|
107
|
+
/**
|
|
108
|
+
* #1629 r4 §3: move the person's owner-CSS pointers in one write — `active` (null: none in force) and `trial` (null:
|
|
109
|
+
* none on trial). A change is a new rev, so their other devices follow.
|
|
110
|
+
*/
|
|
111
|
+
setOwnerCss(identity: string, change: {
|
|
112
|
+
active?: string | null;
|
|
113
|
+
trial?: string | null;
|
|
114
|
+
}): {
|
|
115
|
+
ok: true;
|
|
116
|
+
} | {
|
|
117
|
+
ok: false;
|
|
118
|
+
status: 400 | 503;
|
|
119
|
+
error: string;
|
|
120
|
+
};
|
|
121
|
+
/** #1827: their account's display name at a sign-in (a change is a write and a new rev; the same, nothing). */
|
|
122
|
+
setPlatformName(identity: string, name: string): void;
|
|
123
|
+
}
|
|
124
|
+
export interface WebProfile {
|
|
125
|
+
/** The name they chose (as stored); absent: not set — their platform name is used. */
|
|
126
|
+
readonly name?: string;
|
|
127
|
+
/** Their account's display name at their last sign-in with a code. */
|
|
128
|
+
readonly platformName?: string;
|
|
63
129
|
}
|
package/dist/web-prefs.js
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* the HTML-preview opt-in), kept on the host — design: the comment on #1665.
|
|
4
4
|
*
|
|
5
5
|
* - The tour and the first-run card stay per device (the user's call on #1665): they are not keys here.
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
6
|
+
* - Existing visible preferences remain in the host operator bucket. Five new owner-effect keys have fixed personal
|
|
7
|
+
* scope: a platform-bound web identity, or explicit host operator for an ownerless signed-in session. No migration.
|
|
8
|
+
* Raw internal profile/CSS callers retain their existing bucket API; web reads/writes use the scoped projection.
|
|
8
9
|
* - A fixed registry of keys, each with its own validator. Anything else is refused — "__proto__" and "constructor"
|
|
9
10
|
* are just unknown keys: every lookup is a Map, never an object's prototype chain.
|
|
10
11
|
* - The file (<home>/web-prefs.json, 0600) is replaced atomically. One that cannot be read or parsed is never
|
|
@@ -12,10 +13,21 @@
|
|
|
12
13
|
* - `rev` rises with every change; the status frame carries it, so another device re-reads at its next poll.
|
|
13
14
|
*/
|
|
14
15
|
import { readFileSync } from "node:fs";
|
|
16
|
+
import { createHash } from "node:crypto";
|
|
15
17
|
import { join } from "node:path";
|
|
18
|
+
import { canonicalPlacements } from "./web-identity-palette.js";
|
|
16
19
|
import { atomicWriteFileSync } from "./atomic-write.js";
|
|
20
|
+
import { checkWidgetData, checkWidgetSpec } from "./web-widget.js";
|
|
17
21
|
export const WEB_PREFS_FILE = "web-prefs.json";
|
|
18
22
|
export const OPERATOR = "operator";
|
|
23
|
+
/** Fixed scope, never supplied by a request. Existing public keys remain host-wide. */
|
|
24
|
+
export const OWNER_EFFECT_KEYS = ["fx.sidebar", "fx.header", "fx.page", "fx.box", "fx.cursor"];
|
|
25
|
+
const OWNER_KEYS = new Set(OWNER_EFFECT_KEYS);
|
|
26
|
+
export function isOwnerEffectKey(key) { return OWNER_KEYS.has(key); }
|
|
27
|
+
/** Library holders are bounded even for the longest platform identity. They confer no runtime read authority. */
|
|
28
|
+
export function ownerEffectHolder(identity, key) {
|
|
29
|
+
return `prefs:${createHash("sha256").update(identity).digest("hex")}:${key}`;
|
|
30
|
+
}
|
|
19
31
|
const bad = (invalid) => ({ invalid });
|
|
20
32
|
const isInvalid = (v) => !!v && typeof v === "object" && Object.hasOwn(v, "invalid") && Object.keys(v).length === 1;
|
|
21
33
|
const plain = (v) => !!v && typeof v === "object" && !Array.isArray(v) && Object.getPrototypeOf(v) === Object.prototype;
|
|
@@ -35,13 +47,24 @@ function uniqueStrings(v, max, each, what) {
|
|
|
35
47
|
return bad(`${what}: no repeats`);
|
|
36
48
|
return v;
|
|
37
49
|
}
|
|
50
|
+
/** #1827: a web person's profile keys (internal: not settable through /ui/prefs, not in its view). */
|
|
51
|
+
const PROFILE_NAME = "profile.name";
|
|
52
|
+
const PROFILE_PLATFORM_NAME = "profile.platformName";
|
|
53
|
+
/** #1629 r4 §3: the person's active owner-CSS version (a sha), internal too: set only by the owner-CSS routes. */
|
|
54
|
+
const OWNER_CSS_ACTIVE = "css.active";
|
|
55
|
+
/** #1629 r4 §3: the version on trial (keep or revert), internal too — its changes are what other devices hear. */
|
|
56
|
+
const OWNER_CSS_TRIAL = "css.trial";
|
|
57
|
+
/** Keys kept in a person's bucket that /ui/prefs neither shows nor sets. */
|
|
58
|
+
const PROFILE_KEYS = new Set([PROFILE_NAME, PROFILE_PLATFORM_NAME, OWNER_CSS_ACTIVE, OWNER_CSS_TRIAL]);
|
|
59
|
+
/** #1629 r4.1 Q3 (a): at most this many per-instance card sizes. */
|
|
60
|
+
export const MAX_CARD_SIZES = 200;
|
|
38
61
|
/** #1664: at most this many favorites. */
|
|
39
62
|
export const MAX_FAVORITES = 50;
|
|
40
63
|
const FAVORITES = "nav.favorites";
|
|
41
64
|
/** The status chips of the sidebar filter (src/ui/shared/instance-nav.js STATUS_FACETS). */
|
|
42
65
|
const STATUS_FACETS = new Set(["working", "needs", "idle", "stopped", "crashed"]);
|
|
43
66
|
/** Each key's validator: the value to store, or why it is refused. `null` (clear) never reaches one. */
|
|
44
|
-
const
|
|
67
|
+
const VALIDATORS = new Map([
|
|
45
68
|
["theme", (v) => (v === "light" || v === "dark" || v === "system" ? v : bad("theme: light, dark or system"))],
|
|
46
69
|
["lang", (v) => (v === "en" || v === "zh-TW" ? v : bad("lang: en or zh-TW"))],
|
|
47
70
|
// The sidebar's drag order: the rows instance-nav.js keeps (group rows have no group_name).
|
|
@@ -82,11 +105,56 @@ const REGISTRY = new Map([
|
|
|
82
105
|
[FAVORITES, (v) => uniqueStrings(v, MAX_FAVORITES, name, FAVORITES)],
|
|
83
106
|
// HTML previews allowed. Who may write it at all is the route's business (a signed-in session, never the public link).
|
|
84
107
|
["preview.optIn", (v) => (typeof v === "boolean" ? v : bad("preview.optIn: true or false"))],
|
|
108
|
+
// #1629 r2 (d): whether this person's screens show agents' themes and effects (default true; synced like the rest).
|
|
109
|
+
["fx.show", (v) => (typeof v === "boolean" ? v : bad("fx.show: true or false"))],
|
|
110
|
+
// #1629 r4.1 Q3 (a): how large this person's screens draw identity cards — the default for every card, and the cards
|
|
111
|
+
// set apart from it (at most 200; the page drops the oldest). A display size only: no agent reads or sets it.
|
|
112
|
+
["card.size", (v) => (v === "s" || v === "m" || v === "l" ? v : bad("card.size: s, m or l"))],
|
|
113
|
+
// #1958: where identity colours show for an instance nobody chose for (a list of name / bar / ring; [] is nowhere;
|
|
114
|
+
// unset: ring and bar), and whether this host shows them at all (true: off everywhere; every pick is kept).
|
|
115
|
+
["color.show", (v) => canonicalPlacements(v) ?? bad("color.show: a list of name, bar, ring (each once; [] for nowhere)")],
|
|
116
|
+
["color.off", (v) => (v === true ? v : bad("color.off: true (clear it to turn colours back on)"))],
|
|
117
|
+
["card.sizeByInstance", (v) => {
|
|
118
|
+
if (!plain(v))
|
|
119
|
+
return bad("card.sizeByInstance: { <instance>: s | m | l }");
|
|
120
|
+
const keys = Object.keys(v);
|
|
121
|
+
if (keys.length > MAX_CARD_SIZES)
|
|
122
|
+
return bad(`card.sizeByInstance: at most ${MAX_CARD_SIZES} instances`);
|
|
123
|
+
for (const k of keys)
|
|
124
|
+
if (!name(k) || !["s", "m", "l"].includes(v[k]))
|
|
125
|
+
return bad("card.sizeByInstance: { <instance>: s | m | l }");
|
|
126
|
+
return v;
|
|
127
|
+
}],
|
|
128
|
+
// #1629 r4-4: the person's own sidebar widget — a declarative spec and its values (web-widget.ts), checked as an
|
|
129
|
+
// agent's is, with the fleet's counts as the only binds. Never an agent's: no tool or agent path writes a person's keys.
|
|
130
|
+
["widget.sidebar", (v) => {
|
|
131
|
+
if (!plain(v) || !exactly(v, ["spec", "data"]))
|
|
132
|
+
return bad("widget.sidebar: { spec, data }");
|
|
133
|
+
const spec = checkWidgetSpec(v.spec, "sidebar");
|
|
134
|
+
if (!spec.ok)
|
|
135
|
+
return bad(`widget.sidebar: ${spec.errors[0].path} — ${spec.errors[0].problem}`);
|
|
136
|
+
const data = checkWidgetData(v.data, spec.value);
|
|
137
|
+
if (!data.ok)
|
|
138
|
+
return bad(`widget.sidebar: ${data.errors[0].path} — ${data.errors[0].problem}`);
|
|
139
|
+
return { spec: spec.value, data: { ...data.value } };
|
|
140
|
+
}],
|
|
85
141
|
// #1722: which name leads where the web shows an instance — its nickname (display name) or its real instance name.
|
|
86
142
|
["names.primary", (v) => (v === "nickname" || v === "instance" ? v : bad("names.primary: nickname or instance"))],
|
|
143
|
+
// #1827: a web person's own profile — the name they chose, and their account's display name at their last sign-in.
|
|
144
|
+
// Kept here so it follows the person (their bucket), but never a /ui/prefs key: read and written only through
|
|
145
|
+
// profile() / setProfileName() / setPlatformName(), and checked in full where it is used (web-profile.ts). The file's
|
|
146
|
+
// own check is only its shape.
|
|
147
|
+
[PROFILE_NAME, (v) => (typeof v === "string" && v.length >= 1 && v.length <= 256 ? v : bad("profile.name"))],
|
|
148
|
+
[PROFILE_PLATFORM_NAME, (v) => (typeof v === "string" && v.length >= 1 && v.length <= 256 ? v : bad("profile.platformName"))],
|
|
149
|
+
[OWNER_CSS_ACTIVE, (v) => (typeof v === "string" && /^[0-9a-f]{32}$/.test(v) ? v : bad("css.active"))],
|
|
150
|
+
[OWNER_CSS_TRIAL, (v) => (typeof v === "string" && /^[0-9a-f]{32}$/.test(v) ? v : bad("css.trial"))],
|
|
87
151
|
]);
|
|
88
|
-
|
|
89
|
-
|
|
152
|
+
for (const key of OWNER_EFFECT_KEYS)
|
|
153
|
+
VALIDATORS.set(key, v => typeof v === "string" && /^[0-9a-f]{32}$/.test(v) ? v : bad(`${key}: an effect id`));
|
|
154
|
+
const REGISTRY = new Map([...VALIDATORS].map(([key, validate]) => [key, { validate, scope: (OWNER_KEYS.has(key) ? "person" : PROFILE_KEYS.has(key) ? "internal" : "host") }]));
|
|
155
|
+
export function webPrefScope(key) { return REGISTRY.get(key)?.scope ?? null; }
|
|
156
|
+
export const WEB_PREF_KEYS = [...REGISTRY.keys()].filter((k) => !PROFILE_KEYS.has(k));
|
|
157
|
+
export function isWebPrefKey(key) { return REGISTRY.has(key) && !PROFILE_KEYS.has(key); }
|
|
90
158
|
/**
|
|
91
159
|
* A request's `set`: own keys only, each known, each valid — or the first reason it is not. All or nothing.
|
|
92
160
|
* `exists`: whether an instance of that name is in the fleet now (#1664: a favorite must be one).
|
|
@@ -99,7 +167,7 @@ export function parseWebPrefsPatch(set, exists) {
|
|
|
99
167
|
if (!keys.length)
|
|
100
168
|
return { ok: false, error: "set: at least one preference" };
|
|
101
169
|
for (const key of keys) {
|
|
102
|
-
const validate = REGISTRY.get(key);
|
|
170
|
+
const validate = PROFILE_KEYS.has(key) ? undefined : REGISTRY.get(key)?.validate;
|
|
103
171
|
if (!validate)
|
|
104
172
|
return { ok: false, error: `unknown_pref: ${key.slice(0, 64)}` };
|
|
105
173
|
const raw = set[key];
|
|
@@ -164,12 +232,17 @@ export class WebPrefsStore {
|
|
|
164
232
|
const bucket = { values: new Map(), updated: new Map() };
|
|
165
233
|
// A key this version no longer knows, or a value it would refuse now, is left out (never served).
|
|
166
234
|
for (const key of Object.keys(raw.values)) {
|
|
167
|
-
const validate = REGISTRY.get(key);
|
|
235
|
+
const validate = REGISTRY.get(key)?.validate;
|
|
168
236
|
if (!validate)
|
|
169
237
|
continue;
|
|
170
238
|
const value = validate(raw.values[key]);
|
|
171
|
-
if (isInvalid(value))
|
|
239
|
+
if (isInvalid(value)) {
|
|
240
|
+
if (OWNER_KEYS.has(key))
|
|
241
|
+
return (this.state = "unreadable");
|
|
242
|
+
if (key === OWNER_CSS_ACTIVE || key === OWNER_CSS_TRIAL)
|
|
243
|
+
bucket.ownerCssUnknown = true;
|
|
172
244
|
continue;
|
|
245
|
+
}
|
|
173
246
|
bucket.values.set(key, value);
|
|
174
247
|
const at = raw.updated[key];
|
|
175
248
|
bucket.updated.set(key, typeof at === "number" && Number.isFinite(at) ? at : 0);
|
|
@@ -188,6 +261,39 @@ export class WebPrefsStore {
|
|
|
188
261
|
return { values: {}, rev: 0, unreadable: true };
|
|
189
262
|
return this.viewOf(state, identity);
|
|
190
263
|
}
|
|
264
|
+
/** null is explicitly host-only, including when OPERATOR physically holds personal choices. */
|
|
265
|
+
readForViewer(person) {
|
|
266
|
+
const state = this.load();
|
|
267
|
+
return state === "unreadable" ? { values: {}, rev: 0, unreadable: true } : this.scopedView(state, person);
|
|
268
|
+
}
|
|
269
|
+
scopedView(state, person) {
|
|
270
|
+
const host = this.viewOf(state, OPERATOR), values = {};
|
|
271
|
+
for (const [key, value] of Object.entries(host.values))
|
|
272
|
+
if (REGISTRY.get(key)?.scope === "host")
|
|
273
|
+
values[key] = value;
|
|
274
|
+
if (person !== null)
|
|
275
|
+
for (const [key, value] of state.buckets.get(person)?.values ?? [])
|
|
276
|
+
if (REGISTRY.get(key)?.scope === "person")
|
|
277
|
+
values[key] = value;
|
|
278
|
+
return { values, rev: state.rev };
|
|
279
|
+
}
|
|
280
|
+
/** All identities retain their stored references after sharing is withdrawn; unknown state refuses collection. */
|
|
281
|
+
ownerEffectReferences() {
|
|
282
|
+
const state = this.load();
|
|
283
|
+
if (state === "unreadable")
|
|
284
|
+
throw Error("prefs_unreadable");
|
|
285
|
+
const refs = [];
|
|
286
|
+
for (const [identity, bucket] of state.buckets)
|
|
287
|
+
for (const key of OWNER_EFFECT_KEYS) {
|
|
288
|
+
const id = bucket.values.get(key);
|
|
289
|
+
if (id === undefined)
|
|
290
|
+
continue;
|
|
291
|
+
if (typeof id !== "string" || !/^[0-9a-f]{32}$/.test(id))
|
|
292
|
+
throw Error("prefs_unreadable");
|
|
293
|
+
refs.push({ id, holder: ownerEffectHolder(identity, key) });
|
|
294
|
+
}
|
|
295
|
+
return refs;
|
|
296
|
+
}
|
|
191
297
|
rev() { const s = this.load(); return s === "unreadable" ? 0 : s.rev; }
|
|
192
298
|
/** #1664: an instance was removed — drop it from every favorites list (a write, and a new rev, only if one had it). */
|
|
193
299
|
forgetInstance(name) {
|
|
@@ -205,7 +311,8 @@ export class WebPrefsStore {
|
|
|
205
311
|
const bucket = state.buckets.get(identity);
|
|
206
312
|
if (bucket)
|
|
207
313
|
for (const [k, v] of bucket.values)
|
|
208
|
-
|
|
314
|
+
if (!PROFILE_KEYS.has(k))
|
|
315
|
+
values[k] = v;
|
|
209
316
|
// #1664: a favorite whose instance was deleted is dropped (paused or stopped ones are still instances: kept).
|
|
210
317
|
if (Object.hasOwn(values, FAVORITES)) {
|
|
211
318
|
const exists = this.opts.exists;
|
|
@@ -218,48 +325,149 @@ export class WebPrefsStore {
|
|
|
218
325
|
* the keys the host does not have yet are taken, so the first device to arrive wins and the host wins from then on.
|
|
219
326
|
*/
|
|
220
327
|
write(identity, patch, opts = {}) {
|
|
328
|
+
const result = this.writeBuckets([{ identity, patch }], opts);
|
|
329
|
+
return result.ok ? { ok: true, view: this.viewOf(result.state, identity), changed: result.changed } : result;
|
|
330
|
+
}
|
|
331
|
+
/** One candidate/index write/revision for mixed host+person patches. No migration or cross-bucket shadowing. */
|
|
332
|
+
writeForViewer(person, patch, opts = {}) {
|
|
333
|
+
const parsed = this.parsePatch(Object.fromEntries(patch));
|
|
334
|
+
if (!parsed.ok)
|
|
335
|
+
return { ok: false, status: 400, error: parsed.error };
|
|
336
|
+
const host = new Map(), own = new Map();
|
|
337
|
+
for (const [key, value] of parsed.patch) {
|
|
338
|
+
if (REGISTRY.get(key)?.scope !== "person") {
|
|
339
|
+
host.set(key, value);
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
if (person === null)
|
|
343
|
+
return { ok: false, status: 400, error: "prefs_need_a_signed_in_person" };
|
|
344
|
+
if (value !== null) {
|
|
345
|
+
const error = opts.validateEffect ? opts.validateEffect(person, key, value) : "effects_unavailable";
|
|
346
|
+
if (error)
|
|
347
|
+
return { ok: false, status: 400, error };
|
|
348
|
+
}
|
|
349
|
+
own.set(key, value);
|
|
350
|
+
}
|
|
351
|
+
const targets = person === OPERATOR ? [{ identity: OPERATOR, patch: new Map([...host, ...own]) }]
|
|
352
|
+
: [{ identity: OPERATOR, patch: host }, ...(person === null ? [] : [{ identity: person, patch: own }])];
|
|
353
|
+
const result = this.writeBuckets(targets, opts);
|
|
354
|
+
return result.ok ? { ok: true, view: this.scopedView(result.state, person), changed: result.changed } : result;
|
|
355
|
+
}
|
|
356
|
+
writeBuckets(targets, opts) {
|
|
221
357
|
const state = this.load();
|
|
222
358
|
if (state === "unreadable")
|
|
223
359
|
return { ok: false, status: 503, error: "prefs_unreadable" };
|
|
224
|
-
const
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
continue;
|
|
231
|
-
if (value === null) {
|
|
232
|
-
if (!next.values.has(key))
|
|
233
|
-
continue;
|
|
234
|
-
next.values.delete(key);
|
|
235
|
-
next.updated.delete(key);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
if (next.values.has(key) && JSON.stringify(next.values.get(key)) === JSON.stringify(value))
|
|
360
|
+
const buckets = new Map(state.buckets), changed = [], at = (this.opts.now ?? Date.now)();
|
|
361
|
+
for (const { identity, patch } of targets) {
|
|
362
|
+
const prior = buckets.get(identity), next = { values: new Map(prior?.values), updated: new Map(prior?.updated) };
|
|
363
|
+
let touched = false;
|
|
364
|
+
for (const [key, value] of patch) {
|
|
365
|
+
if (opts.onlyIfUnset && next.values.has(key))
|
|
239
366
|
continue;
|
|
240
|
-
|
|
241
|
-
|
|
367
|
+
if (value === null) {
|
|
368
|
+
if (!next.values.has(key))
|
|
369
|
+
continue;
|
|
370
|
+
next.values.delete(key);
|
|
371
|
+
next.updated.delete(key);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
if (next.values.has(key) && JSON.stringify(next.values.get(key)) === JSON.stringify(value))
|
|
375
|
+
continue;
|
|
376
|
+
next.values.set(key, value);
|
|
377
|
+
next.updated.set(key, at);
|
|
378
|
+
}
|
|
379
|
+
changed.push(key);
|
|
380
|
+
touched = true;
|
|
242
381
|
}
|
|
243
|
-
|
|
382
|
+
if (touched)
|
|
383
|
+
buckets.set(identity, next);
|
|
244
384
|
}
|
|
245
385
|
if (!changed.length)
|
|
246
|
-
return { ok: true,
|
|
247
|
-
|
|
248
|
-
|
|
386
|
+
return { ok: true, state, changed };
|
|
387
|
+
// A successful full rewrite drops previously filtered invalid CSS values too. Publish that proof only after write.
|
|
388
|
+
for (const [id, bucket] of buckets)
|
|
389
|
+
if (bucket.ownerCssUnknown)
|
|
390
|
+
buckets.set(id, { values: bucket.values, updated: bucket.updated });
|
|
249
391
|
const candidate = { buckets, rev: state.rev + 1 };
|
|
250
392
|
(this.opts.write ?? ((path, data) => atomicWriteFileSync(path, data, { mode: 0o600 })))(this.path, serialize(candidate));
|
|
251
|
-
// Only once it is on disk: a failed write leaves memory as the file is.
|
|
252
393
|
this.state = candidate;
|
|
253
|
-
return { ok: true,
|
|
394
|
+
return { ok: true, state: candidate, changed };
|
|
395
|
+
}
|
|
396
|
+
/** #1827: a web person's profile as kept (checked again where it is used); null while the file cannot be read. */
|
|
397
|
+
profile(identity) {
|
|
398
|
+
const state = this.load();
|
|
399
|
+
if (state === "unreadable")
|
|
400
|
+
return null;
|
|
401
|
+
const values = state.buckets.get(identity)?.values;
|
|
402
|
+
const name = values?.get(PROFILE_NAME);
|
|
403
|
+
const platformName = values?.get(PROFILE_PLATFORM_NAME);
|
|
404
|
+
return { ...(name !== undefined ? { name } : {}), ...(platformName !== undefined ? { platformName } : {}) };
|
|
405
|
+
}
|
|
406
|
+
/** #1827: set (or, with null, clear) a person's own name — already validated by the caller (web-profile.ts). */
|
|
407
|
+
setProfileName(identity, name) {
|
|
408
|
+
const w = this.write(identity, new Map([[PROFILE_NAME, name]]));
|
|
409
|
+
return w.ok ? { ok: true } : w;
|
|
410
|
+
}
|
|
411
|
+
/** B2: unlike the legacy nullable accessor, absence is proven only from a readable, valid CSS bucket. */
|
|
412
|
+
ownerCssSelection(identity) {
|
|
413
|
+
const state = this.load();
|
|
414
|
+
if (state === "unreadable")
|
|
415
|
+
return { known: false };
|
|
416
|
+
const bucket = state.buckets.get(identity);
|
|
417
|
+
if (bucket?.ownerCssUnknown)
|
|
418
|
+
return { known: false };
|
|
419
|
+
const value = bucket?.values.get(OWNER_CSS_ACTIVE);
|
|
420
|
+
return value === undefined ? { known: true, active: null }
|
|
421
|
+
: typeof value === "string" && /^[0-9a-f]{32}$/.test(value) ? { known: true, active: value } : { known: false };
|
|
422
|
+
}
|
|
423
|
+
/** #1629 r4 §3: the person's active owner-CSS version, or null (none, or the file cannot be read). */
|
|
424
|
+
ownerCssActive(identity) {
|
|
425
|
+
const state = this.load();
|
|
426
|
+
if (state === "unreadable")
|
|
427
|
+
return null;
|
|
428
|
+
const v = state.buckets.get(identity)?.values.get(OWNER_CSS_ACTIVE);
|
|
429
|
+
return typeof v === "string" ? v : null;
|
|
430
|
+
}
|
|
431
|
+
/** #1629 r4-5: the person's owner-CSS trial id, or null (none, or the file cannot be read). */
|
|
432
|
+
ownerCssTrial(identity) {
|
|
433
|
+
const state = this.load();
|
|
434
|
+
if (state === "unreadable")
|
|
435
|
+
return null;
|
|
436
|
+
const v = state.buckets.get(identity)?.values.get(OWNER_CSS_TRIAL);
|
|
437
|
+
return typeof v === "string" ? v : null;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* #1629 r4 §3: move the person's owner-CSS pointers in one write — `active` (null: none in force) and `trial` (null:
|
|
441
|
+
* none on trial). A change is a new rev, so their other devices follow.
|
|
442
|
+
*/
|
|
443
|
+
setOwnerCss(identity, change) {
|
|
444
|
+
const patch = new Map();
|
|
445
|
+
for (const [key, v] of [[OWNER_CSS_ACTIVE, change.active], [OWNER_CSS_TRIAL, change.trial]]) {
|
|
446
|
+
if (v === undefined)
|
|
447
|
+
continue;
|
|
448
|
+
if (v !== null && !/^[0-9a-f]{32}$/.test(v))
|
|
449
|
+
return { ok: false, status: 400, error: key };
|
|
450
|
+
patch.set(key, v);
|
|
451
|
+
}
|
|
452
|
+
if (!patch.size)
|
|
453
|
+
return { ok: true };
|
|
454
|
+
const w = this.write(identity, patch);
|
|
455
|
+
return w.ok ? { ok: true } : w;
|
|
456
|
+
}
|
|
457
|
+
/** #1827: their account's display name at a sign-in (a change is a write and a new rev; the same, nothing). */
|
|
458
|
+
setPlatformName(identity, name) {
|
|
459
|
+
const value = name.slice(0, 256);
|
|
460
|
+
if (value)
|
|
461
|
+
this.write(identity, new Map([[PROFILE_PLATFORM_NAME, value]]));
|
|
254
462
|
}
|
|
255
463
|
}
|
|
256
464
|
function serialize(state) {
|
|
257
|
-
const identities =
|
|
465
|
+
const identities = Object.create(null);
|
|
258
466
|
for (const [id, b] of state.buckets) {
|
|
259
467
|
identities[id] = { values: Object.fromEntries(b.values), updated: Object.fromEntries(b.updated) };
|
|
260
468
|
}
|
|
261
|
-
//
|
|
262
|
-
//
|
|
469
|
+
// A raw identity named "__proto__" remains data in the null-prototype container.
|
|
470
|
+
// Bucket values use Object.fromEntries, which also defines own data properties.
|
|
263
471
|
return JSON.stringify({ version: 1, rev: state.rev, identities }, null, 2) + "\n";
|
|
264
472
|
}
|
|
265
473
|
//# sourceMappingURL=web-prefs.js.map
|
package/dist/web-prefs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-prefs.js","sourceRoot":"","sources":["../src/web-prefs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-prefs.js","sourceRoot":"","sources":["../src/web-prefs.ts"],"names":[],"mappings":"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"}
|
package/dist/web-preview.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Server } from "node:http";
|
|
2
2
|
import { type HostGuardConfig } from "./web-host-guard.js";
|
|
3
|
+
import { buildCanvasEffectShim } from "./web-effect-worker.js";
|
|
3
4
|
/** The most HTML a preview takes (UTF-8 bytes): the parent refuses more before sending, the shim refuses it too. */
|
|
4
5
|
export declare const PREVIEW_HTML_MAX_BYTES: number;
|
|
5
6
|
export interface PreviewWebConfig {
|
|
@@ -65,6 +66,8 @@ export declare function previewFrameCsp(ancestors: readonly string[]): string;
|
|
|
65
66
|
* own document. Every later message is ignored.
|
|
66
67
|
*/
|
|
67
68
|
export declare function buildShim(bootId: string, origins: readonly string[]): string;
|
|
69
|
+
/** #1629: Canvas Worker-only effect document. No mod HTML runs in this realm. */
|
|
70
|
+
export declare const buildEffectShim: typeof buildCanvasEffectShim;
|
|
68
71
|
export interface PreviewListener {
|
|
69
72
|
readonly server: Server;
|
|
70
73
|
readonly bootId: string;
|
|
@@ -74,7 +77,7 @@ export interface PreviewListener {
|
|
|
74
77
|
close(): void;
|
|
75
78
|
}
|
|
76
79
|
/**
|
|
77
|
-
* The preview listener: GET /frame
|
|
80
|
+
* The preview listener: exact GET /frame or /effect → a shim with the §5.1 headers; anything else → empty 404; a Host
|
|
78
81
|
* it does not answer to → empty 403. No X-Frame-Options (it must be framable by the dashboard), no cookie or
|
|
79
82
|
* header parsing beyond Host, nothing logged per request. Built once: the shim and its headers never change.
|
|
80
83
|
*/
|
|
@@ -86,6 +89,11 @@ export declare function previewFrameResponse(bootId: string, origins: readonly s
|
|
|
86
89
|
body: Buffer;
|
|
87
90
|
headers: Record<string, string>;
|
|
88
91
|
};
|
|
92
|
+
/** Effects add only local blob script/Worker execution; network/nested contexts remain denied. */
|
|
93
|
+
export declare function previewEffectResponse(bootId: string, origins: readonly string[]): {
|
|
94
|
+
body: Buffer;
|
|
95
|
+
headers: Record<string, string>;
|
|
96
|
+
};
|
|
89
97
|
export declare function createPreviewListener(opts: {
|
|
90
98
|
settings: PreviewSettings;
|
|
91
99
|
healthPort: number;
|