@songsid/agend 2.3.0-beta.2 → 2.3.0-beta.21
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 +7 -1
- package/README.zh-TW.md +7 -1
- package/dist/agent-cli-instructions.md +9 -2
- package/dist/agent-cli.js +63 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +4 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.d.ts +4 -1
- package/dist/agent-file-read.js +189 -16
- package/dist/agent-file-read.js.map +1 -1
- package/dist/agent-whats-new.d.ts +11 -0
- package/dist/agent-whats-new.js +29 -5
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.d.ts +30 -1
- package/dist/auth-api.js +45 -13
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/authority-state.d.ts +38 -0
- package/dist/authority/authority-state.js +114 -0
- package/dist/authority/authority-state.js.map +1 -0
- package/dist/authority/session-authorizations.d.ts +43 -0
- package/dist/authority/session-authorizations.js +102 -0
- package/dist/authority/session-authorizations.js.map +1 -0
- package/dist/authority/web-authority.d.ts +120 -0
- package/dist/authority/web-authority.js +157 -0
- package/dist/authority/web-authority.js.map +1 -0
- package/dist/backend/claude-code.d.ts +2 -2
- package/dist/backend/claude-code.js +18 -8
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-metadata.d.ts +8 -0
- package/dist/backend/codex-metadata.js +74 -17
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex.js +15 -2
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +2 -0
- package/dist/backend/credential-profile.js +2 -0
- package/dist/backend/credential-profile.js.map +1 -1
- package/dist/backend/types.d.ts +6 -0
- package/dist/backend/types.js +15 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-availability.d.ts +120 -0
- package/dist/backend-availability.js +396 -0
- package/dist/backend-availability.js.map +1 -0
- package/dist/backend-command.d.ts +23 -3
- package/dist/backend-command.js +25 -4
- package/dist/backend-command.js.map +1 -1
- package/dist/bug-report-cli.d.ts +30 -0
- package/dist/bug-report-cli.js +138 -0
- package/dist/bug-report-cli.js.map +1 -0
- package/dist/bug-report.d.ts +47 -0
- package/dist/bug-report.js +136 -0
- package/dist/bug-report.js.map +1 -0
- package/dist/bundled-skills.d.ts +14 -0
- package/dist/bundled-skills.js +29 -0
- package/dist/bundled-skills.js.map +1 -0
- package/dist/cache-ledger.d.ts +16 -3
- package/dist/cache-ledger.js +33 -13
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-service.d.ts +55 -3
- package/dist/cache-service.js +152 -16
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord-client-retirement.d.ts +5 -0
- package/dist/channel/adapters/discord-client-retirement.js +57 -0
- package/dist/channel/adapters/discord-client-retirement.js.map +1 -0
- package/dist/channel/adapters/discord.d.ts +9 -0
- package/dist/channel/adapters/discord.js +49 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/mcp-tools.js +22 -11
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/types.d.ts +6 -0
- package/dist/classic-channel-manager.d.ts +10 -5
- package/dist/classic-channel-manager.js +12 -9
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +224 -111
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +6 -0
- package/dist/config-validator.js +129 -3
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +13 -1
- package/dist/config.js +14 -5
- package/dist/config.js.map +1 -1
- package/dist/cross-instance-notice.d.ts +7 -0
- package/dist/cross-instance-notice.js +10 -0
- package/dist/cross-instance-notice.js.map +1 -1
- package/dist/daemon.d.ts +24 -1
- package/dist/daemon.js +151 -19
- package/dist/daemon.js.map +1 -1
- package/dist/decision-list.d.ts +25 -0
- package/dist/decision-list.js +30 -0
- package/dist/decision-list.js.map +1 -0
- package/dist/delivery-outbox.d.ts +10 -0
- package/dist/delivery-outbox.js +17 -1
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/diagnostic-redaction.d.ts +10 -0
- package/dist/diagnostic-redaction.js +167 -0
- package/dist/diagnostic-redaction.js.map +1 -0
- package/dist/fleet-context.d.ts +10 -0
- package/dist/fleet-manager.d.ts +505 -15
- package/dist/fleet-manager.js +1870 -204
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-process-handlers.d.ts +18 -0
- package/dist/fleet-process-handlers.js +69 -0
- package/dist/fleet-process-handlers.js.map +1 -0
- package/dist/fleet-traffic.d.ts +74 -0
- package/dist/fleet-traffic.js +196 -0
- package/dist/fleet-traffic.js.map +1 -0
- package/dist/general-knowledge/skills/bug-report/SKILL.md +31 -0
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +17 -6
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +6 -1
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +2 -0
- package/dist/general-knowledge/skills/multi-channel/SKILL.md +3 -2
- package/dist/general-knowledge/skills/persona-emoji/SKILL.md +1 -1
- package/dist/general-knowledge/skills/scheduling/SKILL.md +4 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +190 -47
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +545 -0
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
- package/dist/human-delivery-receipts.d.ts +24 -1
- package/dist/human-delivery-receipts.js +64 -11
- package/dist/human-delivery-receipts.js.map +1 -1
- package/dist/instance-config-impact.js +7 -1
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +10 -1
- package/dist/instance-lifecycle.js +79 -18
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instance-names.d.ts +4 -0
- package/dist/instance-names.js +12 -0
- package/dist/instance-names.js.map +1 -0
- package/dist/instructions.d.ts +12 -1
- package/dist/instructions.js +13 -2
- package/dist/instructions.js.map +1 -1
- package/dist/locale.js +173 -12
- package/dist/locale.js.map +1 -1
- package/dist/log-steps.d.ts +1 -0
- package/dist/log-steps.js +15 -0
- package/dist/log-steps.js.map +1 -1
- package/dist/login-controller.d.ts +45 -0
- package/dist/login-controller.js +101 -5
- package/dist/login-controller.js.map +1 -1
- package/dist/ls-attach-resolve.d.ts +96 -0
- package/dist/ls-attach-resolve.js +180 -0
- package/dist/ls-attach-resolve.js.map +1 -0
- package/dist/ls-rows.d.ts +12 -0
- package/dist/ls-rows.js +82 -3
- package/dist/ls-rows.js.map +1 -1
- package/dist/memory-hogs.d.ts +27 -0
- package/dist/memory-hogs.js +124 -0
- package/dist/memory-hogs.js.map +1 -0
- package/dist/needs-you.d.ts +10 -0
- package/dist/needs-you.js +2 -1
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +11 -0
- package/dist/outbound-handlers.js +139 -11
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +200 -4
- package/dist/outbound-schemas.js +124 -11
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +17 -4
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +9 -0
- package/dist/public-web-link.js +8 -0
- package/dist/public-web-link.js.map +1 -1
- package/dist/quickstart-api.d.ts +19 -1
- package/dist/quickstart-api.js +94 -4
- package/dist/quickstart-api.js.map +1 -1
- package/dist/reply-buttons-controller.d.ts +4 -0
- package/dist/reply-buttons-controller.js +2 -2
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/restart-progress.d.ts +80 -1
- package/dist/restart-progress.js +306 -21
- package/dist/restart-progress.js.map +1 -1
- package/dist/rollout-index.d.ts +5 -0
- package/dist/rollout-index.js +26 -5
- package/dist/rollout-index.js.map +1 -1
- package/dist/scheduler/db.d.ts +40 -13
- package/dist/scheduler/db.js +123 -89
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/task-board-text.d.ts +26 -0
- package/dist/scheduler/task-board-text.js +135 -0
- package/dist/scheduler/task-board-text.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +650 -0
- package/dist/scheduler/task-board.js +1938 -0
- package/dist/scheduler/task-board.js.map +1 -0
- package/dist/scheduler/types.d.ts +6 -1
- package/dist/search/search-docs.d.ts +58 -0
- package/dist/search/search-docs.js +63 -0
- package/dist/search/search-docs.js.map +1 -0
- package/dist/search/search-index.d.ts +141 -0
- package/dist/search/search-index.js +440 -0
- package/dist/search/search-index.js.map +1 -0
- package/dist/search/search-store.d.ts +122 -0
- package/dist/search/search-store.js +236 -0
- package/dist/search/search-store.js.map +1 -0
- package/dist/search/search-worker.d.ts +1 -0
- package/dist/search/search-worker.js +163 -0
- package/dist/search/search-worker.js.map +1 -0
- package/dist/service-installer.js +12 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-api.d.ts +23 -0
- package/dist/settings-api.js +164 -3
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +104 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-confirmation.d.ts +3 -1
- package/dist/settings-confirmation.js +2 -0
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.js +34 -3
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.d.ts +11 -0
- package/dist/settings-http-confirmation.js +10 -0
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +23 -7
- package/dist/setup-form.js.map +1 -1
- package/dist/spawn-gate.d.ts +1 -0
- package/dist/spawn-gate.js +13 -3
- package/dist/spawn-gate.js.map +1 -1
- package/dist/task-board-tool.d.ts +25 -0
- package/dist/task-board-tool.js +154 -0
- package/dist/task-board-tool.js.map +1 -0
- package/dist/task-board-waker.d.ts +44 -0
- package/dist/task-board-waker.js +128 -0
- package/dist/task-board-waker.js.map +1 -0
- package/dist/tmux-exec-helper.d.ts +94 -0
- package/dist/tmux-exec-helper.js +407 -0
- package/dist/tmux-exec-helper.js.map +1 -0
- package/dist/tmux-manager.d.ts +5 -0
- package/dist/tmux-manager.js +42 -11
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-permissions.d.ts +0 -7
- package/dist/tool-permissions.js +44 -5
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +17 -1
- package/dist/topic-commands.js +45 -19
- package/dist/topic-commands.js.map +1 -1
- package/dist/tunnel/cloudflared.js +37 -2
- package/dist/tunnel/cloudflared.js.map +1 -1
- package/dist/tunnel/types.d.ts +3 -1
- package/dist/tunnel/types.js.map +1 -1
- package/dist/types.d.ts +63 -1
- package/dist/ui/app-effects.js +90 -32
- package/dist/ui/backend-signin.js +297 -0
- package/dist/ui/chat-ambient.js +307 -0
- package/dist/ui/chat-effect-posters.js +8 -8
- package/dist/ui/chat-effects.js +110 -15
- package/dist/ui/chat-msg-actions.js +176 -0
- package/dist/ui/chat-render.js +21 -3
- package/dist/ui/chat-store.js +64 -12
- package/dist/ui/chat-strings.js +85 -8
- package/dist/ui/chat-thread.js +204 -21
- package/dist/ui/effect-trial-controller.js +13 -8
- package/dist/ui/effect-trial-panel.js +19 -16
- package/dist/ui/effects-waker.js +70 -0
- package/dist/ui/fleet-canvas-layout.js +117 -0
- package/dist/ui/fleet-canvas.js +555 -0
- package/dist/ui/fleet-org.js +27 -12
- package/dist/ui/fleet-route-scene.js +207 -0
- package/dist/ui/fleet-route-worker.js +21 -0
- package/dist/ui/fleet-route.js +88 -0
- package/dist/ui/fleet-task-card.js +436 -0
- package/dist/ui/fleet-task-common.js +448 -0
- package/dist/ui/fleet-tasks.js +535 -0
- package/dist/ui/fleet-traffic.js +359 -0
- package/dist/ui/fleet-usage.js +435 -0
- package/dist/ui/panel-chat.js +264 -66
- package/dist/ui/panel-details.js +2 -1
- package/dist/ui/panel-fleet.js +65 -83
- package/dist/ui/panel-needs.js +4 -2
- package/dist/ui/panel-settings.js +56 -11
- package/dist/ui/preview.js +3 -2
- package/dist/ui/search-dialog.js +349 -0
- package/dist/ui/settings-appearance.js +44 -19
- package/dist/ui/settings-apply.js +3 -3
- package/dist/ui/settings-catalog.js +92 -0
- package/dist/ui/settings-confirm.js +7 -2
- package/dist/ui/settings-dialogs.js +40 -12
- package/dist/ui/settings-effects.js +4 -3
- package/dist/ui/settings-guests.js +117 -0
- package/dist/ui/settings-learn.js +25 -0
- package/dist/ui/settings-model.js +15 -6
- package/dist/ui/settings-mods.js +23 -9
- package/dist/ui/settings-owner-effects.js +15 -13
- package/dist/ui/settings-strings.js +122 -42
- package/dist/ui/settings-web-authority.js +91 -0
- package/dist/ui/shared/agend-auth.js +1 -1
- package/dist/ui/shared/app-i18n.js +11 -2
- package/dist/ui/shared/app-prefs.js +17 -4
- package/dist/ui/shared/app-route.js +19 -1
- package/dist/ui/shared/app-session.js +2 -0
- package/dist/ui/shared/app-shell.js +174 -30
- package/dist/ui/shared/app-store.js +26 -1
- package/dist/ui/shared/app-stream.js +5 -1
- package/dist/ui/shared/app-themes.js +140 -7
- package/dist/ui/shared/app.css +705 -20
- package/dist/ui/shared/app.js +26 -15
- package/dist/ui/shared/card-strings.js +8 -0
- package/dist/ui/shared/effect-app-runtime.js +68 -19
- package/dist/ui/shared/effect-chat-runtime.js +16 -3
- package/dist/ui/shared/effect-frame.js +26 -7
- package/dist/ui/shared/effect-geometry.js +24 -9
- package/dist/ui/shared/effect-owner-source.js +8 -1
- package/dist/ui/shared/effect-policy.js +21 -7
- package/dist/ui/shared/effect-profiler.js +31 -9
- package/dist/ui/shared/effect-registry.js +97 -50
- package/dist/ui/shared/effect-stock-snapshot.js +9 -0
- package/dist/ui/shared/effect-stock-trust.js +62 -10
- package/dist/ui/shared/effect-trial-shadow.js +62 -0
- package/dist/ui/shared/effect-trial-source.js +1 -1
- package/dist/ui/shared/effect-trial-stage.js +54 -31
- package/dist/ui/shared/effect-trial.css +40 -0
- package/dist/ui/shared/fx-motion.js +67 -0
- package/dist/ui/shared/identity-card.js +100 -11
- package/dist/ui/shared/identity-color.js +14 -10
- package/dist/ui/shared/instance-nav.js +179 -23
- package/dist/ui/shared/owner-css.js +30 -1
- package/dist/ui/shared/panel-view.js +24 -4
- package/dist/ui/shared/tokens.css +9 -3
- package/dist/ui/shared/ui-icons.js +2 -0
- package/dist/ui/shared/ui-menu.js +20 -7
- package/dist/ui/shared/ui-toast.js +16 -3
- package/dist/ui/shared/usage-dialog.js +34 -3
- package/dist/ui/shared/view-strings.js +72 -0
- package/dist/ui/shared/web-authorize.js +198 -0
- package/dist/ui/web-terminal/terminal.css +4 -4
- package/dist/ui/web-terminal/terminal.html +1 -1
- package/dist/update-launch.d.ts +9 -0
- package/dist/update-launch.js +38 -12
- package/dist/update-launch.js.map +1 -1
- package/dist/usage/format-rich.js +6 -3
- package/dist/usage/format-rich.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +2 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/i18n.d.ts +13 -1
- package/dist/usage/i18n.js +29 -0
- package/dist/usage/i18n.js.map +1 -1
- package/dist/usage/providers.d.ts +81 -2
- package/dist/usage/providers.js +240 -38
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/usage-api.d.ts +5 -1
- package/dist/usage/usage-api.js +184 -58
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/usage-report.d.ts +158 -0
- package/dist/usage-report.js +226 -0
- package/dist/usage-report.js.map +1 -0
- package/dist/usage-rollup.d.ts +51 -0
- package/dist/usage-rollup.js +168 -0
- package/dist/usage-rollup.js.map +1 -0
- package/dist/user-systemd.d.ts +24 -0
- package/dist/user-systemd.js +75 -0
- package/dist/user-systemd.js.map +1 -0
- package/dist/view-api.d.ts +39 -0
- package/dist/view-api.js +69 -6
- package/dist/view-api.js.map +1 -1
- package/dist/web-ambient.d.ts +72 -0
- package/dist/web-ambient.js +161 -0
- package/dist/web-ambient.js.map +1 -0
- package/dist/web-api.d.ts +98 -14
- package/dist/web-api.js +1027 -83
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-policy.d.ts +4 -6
- package/dist/web-appearance-policy.js +5 -12
- package/dist/web-appearance-policy.js.map +1 -1
- package/dist/web-appearance-tools.d.ts +3 -0
- package/dist/web-appearance-tools.js +22 -3
- package/dist/web-appearance-tools.js.map +1 -1
- package/dist/web-appearance-view.d.ts +27 -2
- package/dist/web-appearance-view.js +129 -14
- package/dist/web-appearance-view.js.map +1 -1
- package/dist/web-appearance.d.ts +17 -3
- package/dist/web-appearance.js +85 -8
- package/dist/web-appearance.js.map +1 -1
- package/dist/web-asset-parts.d.ts +2 -2
- package/dist/web-asset-parts.js +3 -3
- package/dist/web-asset-parts.js.map +1 -1
- package/dist/web-auth.js +3 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-backend-login.d.ts +130 -0
- package/dist/web-backend-login.js +225 -0
- package/dist/web-backend-login.js.map +1 -0
- package/dist/web-card.d.ts +14 -0
- package/dist/web-card.js +40 -6
- package/dist/web-card.js.map +1 -1
- package/dist/web-channel-echo.d.ts +7 -1
- package/dist/web-channel-echo.js +6 -2
- package/dist/web-channel-echo.js.map +1 -1
- package/dist/web-chat-history.d.ts +83 -0
- package/dist/web-chat-history.js +137 -5
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +6 -1
- package/dist/web-commands.js +1 -1
- package/dist/web-commands.js.map +1 -1
- package/dist/web-effect-bootstrap.d.ts +12 -0
- package/dist/web-effect-bootstrap.js +49 -0
- package/dist/web-effect-bootstrap.js.map +1 -0
- package/dist/web-effect-bundle.js +46 -1
- package/dist/web-effect-bundle.js.map +1 -1
- package/dist/web-effect-playback.d.ts +30 -0
- package/dist/web-effect-playback.js +71 -0
- package/dist/web-effect-playback.js.map +1 -0
- package/dist/web-effect-profiles.d.ts +4 -4
- package/dist/web-effect-service.d.ts +11 -4
- package/dist/web-effect-service.js +25 -4
- package/dist/web-effect-service.js.map +1 -1
- package/dist/web-effect-tools.d.ts +1 -0
- package/dist/web-effect-tools.js +4 -4
- package/dist/web-effect-tools.js.map +1 -1
- package/dist/web-effect-trials.d.ts +2 -2
- package/dist/web-effect-trials.js +3 -3
- package/dist/web-effect-trials.js.map +1 -1
- package/dist/web-effect-upload.js +1 -1
- package/dist/web-effect-upload.js.map +1 -1
- package/dist/web-effect-worker.d.ts +1 -1
- package/dist/web-effect-worker.js +2 -2
- package/dist/web-effect-worker.js.map +1 -1
- package/dist/web-effect.d.ts +1 -1
- package/dist/web-guest-access.d.ts +126 -0
- package/dist/web-guest-access.js +238 -0
- package/dist/web-guest-access.js.map +1 -0
- package/dist/web-guest-rooms.d.ts +82 -0
- package/dist/web-guest-rooms.js +135 -0
- package/dist/web-guest-rooms.js.map +1 -0
- package/dist/web-host-guard.d.ts +11 -0
- package/dist/web-host-guard.js +11 -0
- package/dist/web-host-guard.js.map +1 -1
- package/dist/web-identity-color.d.ts +1 -1
- package/dist/web-identity-color.js +2 -2
- package/dist/web-identity-color.js.map +1 -1
- package/dist/web-identity-palette.d.ts +1 -1
- package/dist/web-identity-palette.js +2 -2
- package/dist/web-identity-palette.js.map +1 -1
- package/dist/web-image-meta.d.ts +13 -0
- package/dist/web-image-meta.js +62 -0
- package/dist/web-image-meta.js.map +1 -1
- package/dist/web-libavoid.d.ts +14 -0
- package/dist/web-libavoid.js +46 -0
- package/dist/web-libavoid.js.map +1 -0
- package/dist/web-login.d.ts +47 -0
- package/dist/web-login.js +115 -0
- package/dist/web-login.js.map +1 -1
- package/dist/web-mod-agent.d.ts +1 -1
- package/dist/web-mod-agent.js +7 -5
- package/dist/web-mod-agent.js.map +1 -1
- package/dist/web-mod-bundle.d.ts +9 -1
- package/dist/web-mod-bundle.js +62 -3
- package/dist/web-mod-bundle.js.map +1 -1
- package/dist/web-mod-export.d.ts +9 -0
- package/dist/web-mod-export.js +21 -0
- package/dist/web-mod-export.js.map +1 -1
- package/dist/web-mod-store.d.ts +7 -1
- package/dist/web-mod-store.js +19 -6
- package/dist/web-mod-store.js.map +1 -1
- package/dist/web-owner-css-store.d.ts +44 -1
- package/dist/web-owner-css-store.js +70 -9
- package/dist/web-owner-css-store.js.map +1 -1
- package/dist/web-prefs.d.ts +14 -0
- package/dist/web-prefs.js +37 -4
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +6 -2
- package/dist/web-preview.js +4 -2
- package/dist/web-preview.js.map +1 -1
- package/dist/web-returning-device.d.ts +41 -0
- package/dist/web-returning-device.js +57 -5
- package/dist/web-returning-device.js.map +1 -1
- package/dist/web-session-authorization.d.ts +132 -0
- package/dist/web-session-authorization.js +193 -0
- package/dist/web-session-authorization.js.map +1 -0
- package/dist/web-session.d.ts +70 -10
- package/dist/web-session.js +137 -22
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +49 -2
- package/dist/web-settings-patch.js +145 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-settings-tools.d.ts +94 -0
- package/dist/web-settings-tools.js +301 -0
- package/dist/web-settings-tools.js.map +1 -0
- 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-terminal-http.js +15 -2
- package/dist/web-terminal-http.js.map +1 -1
- package/dist/web-theme-store.d.ts +39 -0
- package/dist/web-theme-store.js +122 -11
- package/dist/web-theme-store.js.map +1 -1
- package/dist/web-theme.d.ts +31 -0
- package/dist/web-theme.js +99 -2
- package/dist/web-theme.js.map +1 -1
- package/dist/web-upload.d.ts +13 -0
- package/dist/web-upload.js +39 -3
- package/dist/web-upload.js.map +1 -1
- package/dist/windows-shortcuts.d.ts +78 -0
- package/dist/windows-shortcuts.js +203 -0
- package/dist/windows-shortcuts.js.map +1 -0
- package/dist/workflow-templates/default.md +4 -1
- package/dist/yaml-shared-nodes.d.ts +25 -0
- package/dist/yaml-shared-nodes.js +185 -0
- package/dist/yaml-shared-nodes.js.map +1 -0
- package/launcher/agend-install.cjs +553 -0
- package/launcher/install-admission.cjs +4 -39
- package/launcher/postinstall.cjs +14 -12
- package/package.json +4 -2
- package/scripts/preinstall-guard.cjs +2 -5
- package/templates/windows-shortcuts.ps1 +181 -0
- package/launcher/old-updater-note.cjs +0 -48
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #2233: signing a backend in from the web dashboard — the dashboard side of LoginController's `web` requester.
|
|
3
|
+
*
|
|
4
|
+
* - Who: a signed-in admin session on the local surface (the route checks it; the controller asks again through the
|
|
5
|
+
* sink, and the watchdog below keeps asking while the sign-in runs). Never a guest, a read session or the public link.
|
|
6
|
+
* - Two steps, as in chat: `check` runs the controller's pre-check and keeps its answer here, server-side, under a
|
|
7
|
+
* random id bound to the session that asked (chat keeps it in a nonce button); `begin` with that id starts the
|
|
8
|
+
* sign-in through every check again. The client never says whether a token was present.
|
|
9
|
+
* - What chat sends as a link, a DM or a device code goes to the one session that started it, read back with `view`:
|
|
10
|
+
* the browser terminal's URL, the provider's URL and code, and the access token while it is unredeemed. Other admin
|
|
11
|
+
* sessions see that a sign-in is running (backend, device, phase) and may cancel it; nothing more.
|
|
12
|
+
* - A sign-in whose session signs out, expires or is revoked is cancelled (WEB_LOGIN_WATCH_MS).
|
|
13
|
+
*/
|
|
14
|
+
import { randomBytes } from "node:crypto";
|
|
15
|
+
import { LOGIN_BACKEND_ALIASES, LOGIN_FLOWS } from "./login-flows.js";
|
|
16
|
+
import { CHAT_PROFILE_LOGIN_BACKENDS } from "./backend/credential-profile.js";
|
|
17
|
+
/** How long the dialog's "go ahead" stays valid after the pre-check (chat's buttons expire as stale too). */
|
|
18
|
+
export const WEB_LOGIN_CONFIRM_TTL_MS = 5 * 60_000;
|
|
19
|
+
/** How long an ended sign-in is still shown (its outcome), then it is gone. */
|
|
20
|
+
export const WEB_LOGIN_KEEP_ENDED_MS = 10 * 60_000;
|
|
21
|
+
/** How often a running sign-in checks that the session which started it is still a local admin. */
|
|
22
|
+
export const WEB_LOGIN_WATCH_MS = 5_000;
|
|
23
|
+
const MAX_LINES = 20;
|
|
24
|
+
const MAX_LINE_CHARS = 2000;
|
|
25
|
+
/**
|
|
26
|
+
* The provider hosts a sign-in link may point at to be offered as a link; any other URL is shown as text only. The
|
|
27
|
+
* CLI's own output is what is matched, and a page that turns whatever it printed into a link is a phishing aid.
|
|
28
|
+
*/
|
|
29
|
+
export const LOGIN_LINK_HOSTS = {
|
|
30
|
+
"codex": ["openai.com"],
|
|
31
|
+
"grok": ["x.ai"],
|
|
32
|
+
"kiro-cli": ["amazonaws.com", "awsapps.com", "aws.amazon.com", "kiro.dev"],
|
|
33
|
+
"claude-code": ["anthropic.com", "claude.ai", "claude.com"],
|
|
34
|
+
};
|
|
35
|
+
/** An https URL on one of the backend's own hosts (or a subdomain of one). */
|
|
36
|
+
export function linkableLoginUrl(backend, url) {
|
|
37
|
+
let parsed;
|
|
38
|
+
try {
|
|
39
|
+
parsed = new URL(url);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
if (parsed.protocol !== "https:" || parsed.username || parsed.password)
|
|
45
|
+
return false;
|
|
46
|
+
const host = parsed.hostname.toLowerCase();
|
|
47
|
+
return (LOGIN_LINK_HOSTS[backend] ?? []).some(domain => host === domain || host.endsWith(`.${domain}`));
|
|
48
|
+
}
|
|
49
|
+
/** Whether the dashboard can run this sign-in (the same rule as chat's /login: a reviewed flow, profiles where chat signs them in). */
|
|
50
|
+
export function dashboardSignInSupported(backend, profile) {
|
|
51
|
+
const flow = LOGIN_FLOWS[backend];
|
|
52
|
+
if (!flow || flow.remoteLogin === "unsupported" || flow.noShellEscape !== true)
|
|
53
|
+
return false;
|
|
54
|
+
return !profile || CHAT_PROFILE_LOGIN_BACKENDS.has(backend);
|
|
55
|
+
}
|
|
56
|
+
export class WebBackendLogins {
|
|
57
|
+
deps;
|
|
58
|
+
pending = new Map();
|
|
59
|
+
run = null;
|
|
60
|
+
/** Every admitted sign-in not yet ended — starting (its listener, tunnel or cloudflared still coming) or running. */
|
|
61
|
+
live = new Set();
|
|
62
|
+
seq = 0;
|
|
63
|
+
watch = null;
|
|
64
|
+
constructor(deps) {
|
|
65
|
+
this.deps = deps;
|
|
66
|
+
}
|
|
67
|
+
now() { return (this.deps.now ?? Date.now)(); }
|
|
68
|
+
/** The pre-check: the dialog's question, or the controller's answer (a refusal, "busy", "unsupported"…). */
|
|
69
|
+
async check(who, backendArg, profile) {
|
|
70
|
+
const backend = LOGIN_BACKEND_ALIASES[backendArg.toLowerCase()] ?? backendArg.toLowerCase();
|
|
71
|
+
const asked = { info: null };
|
|
72
|
+
const sink = {
|
|
73
|
+
isAdmin: () => this.deps.isLocalAdmin(who.handle),
|
|
74
|
+
confirm: info => { asked.info = info; },
|
|
75
|
+
hint: () => { }, terminal: () => { }, ended: () => { },
|
|
76
|
+
};
|
|
77
|
+
const lines = [];
|
|
78
|
+
const message = await this.deps.start(backend, this.chatFor(who, sink, lines), profile !== undefined ? { profile } : {});
|
|
79
|
+
if (!asked.info)
|
|
80
|
+
return { message: message ?? lines.join("\n") };
|
|
81
|
+
this.sweep();
|
|
82
|
+
for (const [id, p] of this.pending)
|
|
83
|
+
if (p.handle === who.handle)
|
|
84
|
+
this.pending.delete(id); // one question per session
|
|
85
|
+
const id = randomBytes(16).toString("hex");
|
|
86
|
+
const entry = { id, backend, ...(profile !== undefined ? { profile } : {}), handle: who.handle, ...asked.info, expiresAt: this.now() + WEB_LOGIN_CONFIRM_TTL_MS };
|
|
87
|
+
this.pending.set(id, entry);
|
|
88
|
+
const { handle: _handle, ...confirm } = entry;
|
|
89
|
+
return { confirm };
|
|
90
|
+
}
|
|
91
|
+
/** The go-ahead for a pre-check this session was given; `tunnel` only where it offered a public link. */
|
|
92
|
+
async begin(who, confirmId, tunnel) {
|
|
93
|
+
this.sweep();
|
|
94
|
+
const asked = this.pending.get(confirmId);
|
|
95
|
+
if (!asked || asked.handle !== who.handle)
|
|
96
|
+
return { error: "confirm_expired" };
|
|
97
|
+
if (tunnel && !asked.publicLink)
|
|
98
|
+
return { error: "tunnel_not_offered" };
|
|
99
|
+
this.pending.delete(confirmId);
|
|
100
|
+
const run = {
|
|
101
|
+
id: randomBytes(16).toString("hex"), seq: ++this.seq, backend: asked.backend, ...(asked.profile !== undefined ? { profile: asked.profile } : {}),
|
|
102
|
+
handle: who.handle, label: who.label, startedAt: this.now(), phase: "running", ok: null, endedAt: null,
|
|
103
|
+
hint: null, terminal: null, lines: [], sink: null,
|
|
104
|
+
};
|
|
105
|
+
run.sink = {
|
|
106
|
+
isAdmin: () => this.deps.isLocalAdmin(who.handle),
|
|
107
|
+
confirm: () => { },
|
|
108
|
+
hint: (url, code) => { run.hint = { url, code, linkable: linkableLoginUrl(run.backend, url) }; },
|
|
109
|
+
terminal: info => { run.terminal = { ...info }; },
|
|
110
|
+
ended: result => {
|
|
111
|
+
run.phase = "ended";
|
|
112
|
+
run.ok = result.ok;
|
|
113
|
+
run.endedAt = this.now();
|
|
114
|
+
this.live.delete(run);
|
|
115
|
+
if (!this.live.size)
|
|
116
|
+
this.stopWatch();
|
|
117
|
+
if (this.run === run)
|
|
118
|
+
this.changed();
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
// Watched from admission, not from publication: a session revoked while its listener, tunnel or cloudflared is
|
|
122
|
+
// still coming up ends its own attempt (cancelFor) — never one that replaced it.
|
|
123
|
+
this.live.add(run);
|
|
124
|
+
this.startWatch();
|
|
125
|
+
const message = await this.deps.start(asked.backend, this.chatFor(who, run.sink, run.lines), {
|
|
126
|
+
skipAuthCheck: true, tokenPresent: asked.tokenPresent, ...(tunnel ? { tunnel: true } : {}),
|
|
127
|
+
...(asked.profile !== undefined ? { profile: asked.profile } : {}),
|
|
128
|
+
});
|
|
129
|
+
const running = run.phase === "running" && this.deps.isActiveFor(run.sink);
|
|
130
|
+
if (!running && run.phase !== "ended") { // refused: nothing ran
|
|
131
|
+
this.live.delete(run);
|
|
132
|
+
if (!this.live.size)
|
|
133
|
+
this.stopWatch();
|
|
134
|
+
return { message: message ?? "" };
|
|
135
|
+
}
|
|
136
|
+
if (message && !running)
|
|
137
|
+
pushLine(run.lines, message); // ended while starting: why
|
|
138
|
+
// A start that took longer than a later one (its listener held, then cancelled) never replaces what that one shows.
|
|
139
|
+
if (this.run && this.run.seq > run.seq)
|
|
140
|
+
return running ? { login: this.viewOf(run, who.handle) } : { message: message ?? run.lines.join("\n") };
|
|
141
|
+
this.run = run;
|
|
142
|
+
this.changed();
|
|
143
|
+
if (running) {
|
|
144
|
+
try {
|
|
145
|
+
this.deps.notice({ shown: asked.profile ? `${asked.backend} (${asked.profile})` : asked.backend, label: who.label, handle: who.handle });
|
|
146
|
+
}
|
|
147
|
+
catch { /* a notice never stops a sign-in */ }
|
|
148
|
+
}
|
|
149
|
+
return { login: this.viewOf(run, who.handle) };
|
|
150
|
+
}
|
|
151
|
+
/** The current sign-in as this session may see it, or null. */
|
|
152
|
+
view(viewerHandle) {
|
|
153
|
+
const run = this.run;
|
|
154
|
+
if (!run)
|
|
155
|
+
return null;
|
|
156
|
+
if (run.phase === "ended" && run.endedAt !== null && this.now() - run.endedAt > WEB_LOGIN_KEEP_ENDED_MS) {
|
|
157
|
+
this.run = null;
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return this.viewOf(run, viewerHandle);
|
|
161
|
+
}
|
|
162
|
+
/** Any local admin may stop it (it only takes something away); a chat-started sign-in or install included. */
|
|
163
|
+
cancel() { return this.deps.cancel(); }
|
|
164
|
+
dispose() { this.stopWatch(); this.pending.clear(); this.live.clear(); }
|
|
165
|
+
viewOf(run, viewerHandle) {
|
|
166
|
+
const mine = run.handle === viewerHandle && this.deps.isLocalAdmin(viewerHandle);
|
|
167
|
+
const base = {
|
|
168
|
+
id: run.id, backend: run.backend, ...(run.profile !== undefined ? { profile: run.profile } : {}), phase: run.phase, ok: run.ok,
|
|
169
|
+
startedOn: run.label, startedAt: run.startedAt, endedAt: run.endedAt, mine,
|
|
170
|
+
};
|
|
171
|
+
if (!mine)
|
|
172
|
+
return base;
|
|
173
|
+
const running = run.phase === "running" && this.deps.isActiveFor(run.sink);
|
|
174
|
+
return {
|
|
175
|
+
...base, lines: [...run.lines], hint: running ? run.hint : null, terminal: running ? run.terminal : null,
|
|
176
|
+
accessCode: running && run.terminal ? this.deps.accessToken(run.sink) : null,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
changed() { try {
|
|
180
|
+
this.deps.changed?.();
|
|
181
|
+
}
|
|
182
|
+
catch { /* the pages read it on their own next time */ } }
|
|
183
|
+
chatFor(who, sink, lines) {
|
|
184
|
+
// The status lines chat would post (done, recovery, a download notice) — this sign-in's own, shown to its session.
|
|
185
|
+
const adapter = {
|
|
186
|
+
type: "web", id: "web",
|
|
187
|
+
sendText: async (_chatId, text) => { pushLine(lines, text); return { chatId: "web", messageId: randomBytes(6).toString("hex") }; },
|
|
188
|
+
};
|
|
189
|
+
return { adapter, adapterId: "web", chatId: "web", userId: `web:${who.handle}`, web: sink };
|
|
190
|
+
}
|
|
191
|
+
sweep() {
|
|
192
|
+
const now = this.now();
|
|
193
|
+
for (const [id, p] of this.pending)
|
|
194
|
+
if (p.expiresAt <= now)
|
|
195
|
+
this.pending.delete(id);
|
|
196
|
+
}
|
|
197
|
+
startWatch() {
|
|
198
|
+
if (this.watch)
|
|
199
|
+
return;
|
|
200
|
+
this.watch = setInterval(() => {
|
|
201
|
+
for (const run of [...this.live]) {
|
|
202
|
+
if (this.deps.isLocalAdmin(run.handle))
|
|
203
|
+
continue;
|
|
204
|
+
// The session that holds the code is gone (signed out, expired, revoked): its own sign-in goes with it.
|
|
205
|
+
this.live.delete(run);
|
|
206
|
+
void this.deps.cancelFor(run.sink).catch(() => false);
|
|
207
|
+
}
|
|
208
|
+
if (!this.live.size)
|
|
209
|
+
this.stopWatch();
|
|
210
|
+
}, WEB_LOGIN_WATCH_MS);
|
|
211
|
+
this.watch.unref?.();
|
|
212
|
+
}
|
|
213
|
+
stopWatch() {
|
|
214
|
+
if (this.watch) {
|
|
215
|
+
clearInterval(this.watch);
|
|
216
|
+
this.watch = null;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function pushLine(lines, text) {
|
|
221
|
+
lines.push(text.length > MAX_LINE_CHARS ? `${text.slice(0, MAX_LINE_CHARS - 1)}…` : text);
|
|
222
|
+
if (lines.length > MAX_LINES)
|
|
223
|
+
lines.splice(0, lines.length - MAX_LINES);
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=web-backend-login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-backend-login.js","sourceRoot":"","sources":["../src/web-backend-login.ts"],"names":[],"mappings":"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"}
|
package/dist/web-card.d.ts
CHANGED
|
@@ -9,7 +9,14 @@ export interface HumanCard {
|
|
|
9
9
|
portrait: string | null;
|
|
10
10
|
banner: string | null;
|
|
11
11
|
updated_at: number;
|
|
12
|
+
banner_focus?: number | null;
|
|
12
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* #2086: the banner's vertical focus — which part of a cropped banner stays in view, 0 (top) … 100 (bottom); 50 is the
|
|
16
|
+
* centre and the default. A whole number; anything else is not one.
|
|
17
|
+
*/
|
|
18
|
+
export declare const BANNER_FOCUS_DEFAULT = 50;
|
|
19
|
+
export declare function bannerFocusOk(v: unknown): number | null;
|
|
13
20
|
export type CardWrite = {
|
|
14
21
|
ok: true;
|
|
15
22
|
id?: string;
|
|
@@ -37,6 +44,8 @@ export declare class HumanCardStore {
|
|
|
37
44
|
tagline?: unknown;
|
|
38
45
|
bio?: unknown;
|
|
39
46
|
}): CardWrite;
|
|
47
|
+
/** #2086: the person's banner focus (0–100), or null to follow the agent's (else the centre). */
|
|
48
|
+
setBannerFocus(name: string, focus: unknown): CardWrite;
|
|
40
49
|
/** A person's portrait or banner: png, jpeg or webp within the limits in force, metadata stripped. Replaces theirs. */
|
|
41
50
|
setPicture(name: string, slot: CardSlot, bytes: Uint8Array, limits: AppearanceLimits): CardWrite;
|
|
42
51
|
/** Remove the person's portrait or banner (the agent's shows again, if it has one). */
|
|
@@ -84,6 +93,11 @@ export interface ResolvedCard {
|
|
|
84
93
|
text: string;
|
|
85
94
|
by: "human" | "agent";
|
|
86
95
|
};
|
|
96
|
+
/** #2086: the banner's focus (0–100), when someone set one (absent: the centre). */
|
|
97
|
+
banner_focus?: {
|
|
98
|
+
value: number;
|
|
99
|
+
by: "human" | "agent";
|
|
100
|
+
};
|
|
87
101
|
}
|
|
88
102
|
/** The id a stored picture file name carries. */
|
|
89
103
|
export declare function cardFileId(file: string | null): string | null;
|
package/dist/web-card.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* own (`theme.card`, web-theme.ts); a person sets theirs in View's Edit profile, and **the person's wins field by
|
|
4
4
|
* field**. This module keeps the person's side and resolves the two.
|
|
5
5
|
*
|
|
6
|
-
* profiles.db `instance_card` (instance_name, tagline, bio, portrait, banner, updated_at)
|
|
6
|
+
* profiles.db `instance_card` (instance_name, tagline, bio, portrait, banner, updated_at, banner_focus)
|
|
7
7
|
* <dataDir>/cards/<hash>/<slot>-<id>.<ext> the person's pictures, metadata stripped, id = sha of the kept bytes
|
|
8
8
|
*
|
|
9
9
|
* Its own table (never new columns on instance_profile), so an older AgEnD reading profiles.db sees what it knew.
|
|
@@ -15,6 +15,14 @@ import { join } from "node:path";
|
|
|
15
15
|
import { imageSize, MEDIA_EXT, MEDIA_MIME, sniffMedia, stripMetadata } from "./web-image-meta.js";
|
|
16
16
|
import { canonicalBio, canonicalTagline, TAGLINE_MAX_GRAPHEMES, BIO_MAX_GRAPHEMES, BIO_MAX_BREAKS } from "./web-theme.js";
|
|
17
17
|
export const CARD_SLOTS = ["portrait", "banner"];
|
|
18
|
+
/**
|
|
19
|
+
* #2086: the banner's vertical focus — which part of a cropped banner stays in view, 0 (top) … 100 (bottom); 50 is the
|
|
20
|
+
* centre and the default. A whole number; anything else is not one.
|
|
21
|
+
*/
|
|
22
|
+
export const BANNER_FOCUS_DEFAULT = 50;
|
|
23
|
+
export function bannerFocusOk(v) {
|
|
24
|
+
return typeof v === "number" && Number.isInteger(v) && v >= 0 && v <= 100 ? v : null;
|
|
25
|
+
}
|
|
18
26
|
const CARD_KINDS = new Set(["png", "jpeg", "webp"]);
|
|
19
27
|
/** A stored picture's file name: `<slot>-<32 hex>.<ext>` — the id is the part after the slot. */
|
|
20
28
|
const FILE = /^(portrait|banner)-([0-9a-f]{32})\.(png|jpg|webp)$/;
|
|
@@ -31,13 +39,17 @@ function table(db) {
|
|
|
31
39
|
banner TEXT,
|
|
32
40
|
updated_at INTEGER
|
|
33
41
|
);`);
|
|
42
|
+
// #2086: the banner's focus, added to a table made before it (a column an older AgEnD never names, so never sees).
|
|
43
|
+
const cols = db.prepare("PRAGMA table_info(instance_card)").all();
|
|
44
|
+
if (!cols.some((c) => c.name === "banner_focus"))
|
|
45
|
+
db.exec("ALTER TABLE instance_card ADD COLUMN banner_focus INTEGER");
|
|
34
46
|
// Prism #2003 P2-2: ready only when made outside a transaction — a rollback takes the table away, never the mark.
|
|
35
47
|
if (!db.inTransaction)
|
|
36
48
|
ready.add(db);
|
|
37
49
|
}
|
|
38
50
|
return db;
|
|
39
51
|
}
|
|
40
|
-
const EMPTY = { tagline: null, bio: null, portrait: null, banner: null, updated_at: 0 };
|
|
52
|
+
const EMPTY = { tagline: null, bio: null, portrait: null, banner: null, updated_at: 0, banner_focus: null };
|
|
41
53
|
export class HumanCardStore {
|
|
42
54
|
dataDir;
|
|
43
55
|
openDb;
|
|
@@ -49,7 +61,7 @@ export class HumanCardStore {
|
|
|
49
61
|
}
|
|
50
62
|
dir(name) { return join(this.dataDir, "cards", hash32(`instance\0${name}`)); }
|
|
51
63
|
get(name) {
|
|
52
|
-
const row = table(this.openDb()).prepare("SELECT tagline, bio, portrait, banner, updated_at FROM instance_card WHERE instance_name = ?").get(name);
|
|
64
|
+
const row = table(this.openDb()).prepare("SELECT tagline, bio, portrait, banner, updated_at, banner_focus FROM instance_card WHERE instance_name = ?").get(name);
|
|
53
65
|
return row ? { ...EMPTY, ...row } : { ...EMPTY };
|
|
54
66
|
}
|
|
55
67
|
/** Every person-set card, for a status read: only when profiles.db exists and has the table — a read creates nothing. */
|
|
@@ -60,8 +72,10 @@ export class HumanCardStore {
|
|
|
60
72
|
const db = openDb();
|
|
61
73
|
if (!db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'instance_card'").get())
|
|
62
74
|
return new Map();
|
|
63
|
-
|
|
64
|
-
|
|
75
|
+
// #2086: a table made before the focus has no such column (a read never alters it): read it as unset.
|
|
76
|
+
const focus = db.prepare("PRAGMA table_info(instance_card)").all().some((c) => c.name === "banner_focus");
|
|
77
|
+
const rows = db.prepare(`SELECT instance_name, tagline, bio, portrait, banner, updated_at${focus ? ", banner_focus" : ""} FROM instance_card`).all();
|
|
78
|
+
return new Map(rows.map(r => [r.instance_name, { tagline: r.tagline, bio: r.bio, portrait: r.portrait, banner: r.banner, updated_at: r.updated_at, banner_focus: r.banner_focus ?? null }]));
|
|
65
79
|
}
|
|
66
80
|
catch {
|
|
67
81
|
return new Map();
|
|
@@ -111,6 +125,20 @@ export class HumanCardStore {
|
|
|
111
125
|
}
|
|
112
126
|
return { ok: true };
|
|
113
127
|
}
|
|
128
|
+
/** #2086: the person's banner focus (0–100), or null to follow the agent's (else the centre). */
|
|
129
|
+
setBannerFocus(name, focus) {
|
|
130
|
+
const v = focus === null ? null : bannerFocusOk(focus);
|
|
131
|
+
if (focus !== null && v === null)
|
|
132
|
+
return { ok: false, status: 400, error: "card_banner_focus", detail: "a whole number from 0 (top) to 100 (bottom), or null" };
|
|
133
|
+
try {
|
|
134
|
+
table(this.openDb()).prepare(`INSERT INTO instance_card (instance_name, banner_focus, updated_at) VALUES (@n, @f, @t)
|
|
135
|
+
ON CONFLICT(instance_name) DO UPDATE SET banner_focus = @f, updated_at = @t`).run({ n: name, f: v, t: this.now() });
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
return { ok: false, status: 503, error: "card_write_failed", detail: err.message };
|
|
139
|
+
}
|
|
140
|
+
return { ok: true };
|
|
141
|
+
}
|
|
114
142
|
/** A person's portrait or banner: png, jpeg or webp within the limits in force, metadata stripped. Replaces theirs. */
|
|
115
143
|
setPicture(name, slot, bytes, limits) {
|
|
116
144
|
const lim = limits[slot];
|
|
@@ -221,12 +249,18 @@ export function resolveCard(name, human, agent) {
|
|
|
221
249
|
out.bio = { text: human.bio, by: "human" };
|
|
222
250
|
else if (agent?.bio)
|
|
223
251
|
out.bio = { text: agent.bio, by: "agent" };
|
|
252
|
+
const hf = bannerFocusOk(human?.banner_focus), af = bannerFocusOk(agent?.bannerFocus);
|
|
253
|
+
if (hf !== null)
|
|
254
|
+
out.banner_focus = { value: hf, by: "human" };
|
|
255
|
+
else if (af !== null)
|
|
256
|
+
out.banner_focus = { value: af, by: "agent" };
|
|
224
257
|
return out;
|
|
225
258
|
}
|
|
226
259
|
/** A short version of what is drawn (the status frame's card_v): the page reads the card again when it moves. */
|
|
227
260
|
export function cardVersion(card) {
|
|
228
261
|
if (!Object.keys(card).length)
|
|
229
262
|
return null;
|
|
230
|
-
return hash32(JSON.stringify([card.portrait?.id, card.portrait?.by, card.banner?.id, card.banner?.by, card.tagline?.text, card.tagline?.by, card.bio?.text, card.bio?.by
|
|
263
|
+
return hash32(JSON.stringify([card.portrait?.id, card.portrait?.by, card.banner?.id, card.banner?.by, card.tagline?.text, card.tagline?.by, card.bio?.text, card.bio?.by,
|
|
264
|
+
...(card.banner_focus ? [card.banner_focus.value, card.banner_focus.by] : [])])).slice(0, 12);
|
|
231
265
|
}
|
|
232
266
|
//# sourceMappingURL=web-card.js.map
|
package/dist/web-card.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-card.js","sourceRoot":"","sources":["../src/web-card.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-card.js","sourceRoot":"","sources":["../src/web-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,12 @@ export declare const WEB_ECHO_PREFIX = "\uD83C\uDF10 web \u00B7 ";
|
|
|
4
4
|
* URLs and email local parts are data, not mention/command tokens.
|
|
5
5
|
*/
|
|
6
6
|
export declare function neutralizeWebEchoText(text: string): string;
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* `guest` (#1920): the web person is a guest — the copy says so after the (clipped) name, so a name a guest chose can
|
|
9
|
+
* never pass for a member's or an admin's in the channel.
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatWebChannelEcho(user: string, preview: string, fullTextNote?: string, opts?: {
|
|
12
|
+
guest?: boolean;
|
|
13
|
+
}): string;
|
|
8
14
|
/** Before trigger evaluation, independent of flags, send ACKs or recent IDs. */
|
|
9
15
|
export declare function isWebChannelEcho(text: string, authorId: string, fleetBotIds: ReadonlySet<string>): boolean;
|
package/dist/web-channel-echo.js
CHANGED
|
@@ -38,8 +38,12 @@ export function neutralizeWebEchoText(text) {
|
|
|
38
38
|
}
|
|
39
39
|
return result + neutralizeTokens(normalized.slice(offset));
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
/**
|
|
42
|
+
* `guest` (#1920): the web person is a guest — the copy says so after the (clipped) name, so a name a guest chose can
|
|
43
|
+
* never pass for a member's or an admin's in the channel.
|
|
44
|
+
*/
|
|
45
|
+
export function formatWebChannelEcho(user, preview, fullTextNote = "full text in web chat", opts = {}) {
|
|
46
|
+
const label = (clip(neutralizeWebEchoText(user).replace(/\s+/g, " "), 80) || "web-user") + (opts.guest ? " (guest)" : "");
|
|
43
47
|
const header = `${WEB_ECHO_PREFIX}${label}: `;
|
|
44
48
|
const body = neutralizeWebEchoText(preview);
|
|
45
49
|
// Labels can expand short input dramatically. Keep one platform message:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-channel-echo.js","sourceRoot":"","sources":["../src/web-channel-echo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"web-channel-echo.js","sourceRoot":"","sources":["../src/web-channel-echo.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export interface WebChatAttachment {
|
|
|
7
7
|
name: string;
|
|
8
8
|
size: number;
|
|
9
9
|
mime: string;
|
|
10
|
+
width?: number;
|
|
11
|
+
height?: number;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* #1565: a file shown with a message from before the fleet restarted that could not be served again (missing, moved,
|
|
@@ -78,7 +80,49 @@ export interface WebChatMessage {
|
|
|
78
80
|
ts: string;
|
|
79
81
|
/** #1990: a status line's names that open another instance's chat — ranges of `text` with an in-app route. */
|
|
80
82
|
links?: TextLink[];
|
|
83
|
+
/**
|
|
84
|
+
* #1920 §5.2: this message reached the instance's platform channel (its topic or room) — what a member of that channel
|
|
85
|
+
* already saw, so a guest may see it too. Set by the code path that knows (an inbound platform message; an agent reply
|
|
86
|
+
* that landed there; a web message once its channel copy was sent); absent: not shown to guests.
|
|
87
|
+
*/
|
|
88
|
+
channel?: true;
|
|
89
|
+
/** #1920: the account that wrote it (`<connection id>:<user id>`), for a person's message — a guest sees its own. */
|
|
90
|
+
from?: string;
|
|
91
|
+
/**
|
|
92
|
+
* #1920 (#2085 review): when it became the channel's after it was recorded (its copy was sent later) — a sequence
|
|
93
|
+
* number from its boot's id counter, so a cursor handed out after that moves past it and a guest's next poll is sent
|
|
94
|
+
* the row it could not see before. Kept on disk with the row (#2085 review): a page that held a cursor of that boot
|
|
95
|
+
* across a restart is still sent it.
|
|
96
|
+
*/
|
|
97
|
+
seenSeq?: number;
|
|
98
|
+
/**
|
|
99
|
+
* #2272: the message a person's message replies to — its row (`boot`, `id`) and what the bubble quotes: who wrote it
|
|
100
|
+
* and its first words, taken by the server from that row when the reply was sent (never from the page). `media`: a
|
|
101
|
+
* row with files and no text. A person's messages only.
|
|
102
|
+
*/
|
|
103
|
+
replyTo?: WebChatReplyRef;
|
|
104
|
+
}
|
|
105
|
+
/** #2272: a reply's reference to an earlier message of the same chat (see WebChatMessage.replyTo). */
|
|
106
|
+
export interface WebChatReplyRef {
|
|
107
|
+
boot: string;
|
|
108
|
+
id: number;
|
|
109
|
+
sender: string;
|
|
110
|
+
text: string;
|
|
111
|
+
media?: "photo" | "document";
|
|
81
112
|
}
|
|
113
|
+
/** #2272: how much of the quoted message a reply keeps for its bubble (the agent's `reply_to` is longer). */
|
|
114
|
+
export declare const WEB_CHAT_REPLY_SNIPPET_MAX = 160;
|
|
115
|
+
/** #2272: the agent's `(reply_to: "…")` — at most this many characters of the quoted message. */
|
|
116
|
+
export declare const WEB_CHAT_REPLY_TEXT_MAX = 500;
|
|
117
|
+
/** #2272: what a reply quotes from a row: its sender, its first words on one line (a click's label), its files' kind. */
|
|
118
|
+
export declare function webChatReplyRef(row: WebChatMessage): WebChatReplyRef;
|
|
119
|
+
/**
|
|
120
|
+
* #2272: the quoted message as the agent gets it — `(reply_to: "…")`, like a Discord or Telegram reply: one line (a
|
|
121
|
+
* newline in it could start a line that reads as another header), its double quotes made typographic so the quote
|
|
122
|
+
* cannot end early, at most WEB_CHAT_REPLY_TEXT_MAX characters; a message of files only names them.
|
|
123
|
+
*/
|
|
124
|
+
export declare function webChatReplyText(row: WebChatMessage): string;
|
|
125
|
+
export declare function webChatFrom(adapterId: unknown, userId: unknown): string | undefined;
|
|
82
126
|
export interface WebChatClick {
|
|
83
127
|
label: string;
|
|
84
128
|
of?: string;
|
|
@@ -120,6 +164,13 @@ export interface StoredWebChatMessage {
|
|
|
120
164
|
};
|
|
121
165
|
/** #1990: a status line's links (validated again when read back). */
|
|
122
166
|
links?: TextLink[];
|
|
167
|
+
/** #1920: reached the platform channel; and who wrote it (see WebChatMessage). */
|
|
168
|
+
channel?: true;
|
|
169
|
+
from?: string;
|
|
170
|
+
/** #1920: when, in its boot's id sequence, it became the channel's (see WebChatMessage). */
|
|
171
|
+
seenSeq?: number;
|
|
172
|
+
/** #2272: what a person's reply quotes (see WebChatMessage). */
|
|
173
|
+
replyTo?: WebChatReplyRef;
|
|
123
174
|
}
|
|
124
175
|
/** #1565: what the history needs of the file ledger (web-upload.ts). */
|
|
125
176
|
export interface WebChatFiles {
|
|
@@ -137,6 +188,8 @@ export interface WebChatFiles {
|
|
|
137
188
|
kind: "photo" | "document";
|
|
138
189
|
size: number;
|
|
139
190
|
mime: string;
|
|
191
|
+
width?: number;
|
|
192
|
+
height?: number;
|
|
140
193
|
} | null;
|
|
141
194
|
/** These ids are no longer shown: nothing is served under them. */
|
|
142
195
|
drop(ids: string[]): void;
|
|
@@ -192,6 +245,12 @@ export declare class WebChatHistory {
|
|
|
192
245
|
restore(instance: string, rows: unknown[] | null): number;
|
|
193
246
|
/** #1565: a restored row's files served again (only the rows kept: an older one's file is never registered). */
|
|
194
247
|
private restoreFiles;
|
|
248
|
+
/**
|
|
249
|
+
* #2179: when the instance last replied to a person — its newest kept `agent` message (a reply through the reply tool,
|
|
250
|
+
* shown in a channel or the web chat; a cross-instance line is never one), restored history included. Null when none
|
|
251
|
+
* is kept.
|
|
252
|
+
*/
|
|
253
|
+
lastAgentReply(instance: string): string | null;
|
|
195
254
|
/** The id the next message will get minus one: the newest id handed out so far (0 when none). */
|
|
196
255
|
get lastId(): number;
|
|
197
256
|
/** Record one message; returns it with its id. Text beyond WEB_CHAT_TEXT_MAX is cut. */
|
|
@@ -207,6 +266,9 @@ export declare class WebChatHistory {
|
|
|
207
266
|
click?: unknown;
|
|
208
267
|
effectTrial?: unknown;
|
|
209
268
|
links?: unknown;
|
|
269
|
+
channel?: unknown;
|
|
270
|
+
from?: unknown;
|
|
271
|
+
replyTo?: unknown;
|
|
210
272
|
}): WebChatMessage;
|
|
211
273
|
/** Host-only producer seam. Generic records cannot promote sender/role strings into a Try action. */
|
|
212
274
|
recordEffectTrial(instance: string, offer: unknown, ts: string): WebChatMessage | null;
|
|
@@ -216,11 +278,32 @@ export declare class WebChatHistory {
|
|
|
216
278
|
* later, or polls it (the public link), sees the same state. Returns the message it changed, if it is still kept.
|
|
217
279
|
*/
|
|
218
280
|
updateButtons(instance: string, raw: unknown): WebChatMessage | null;
|
|
281
|
+
/**
|
|
282
|
+
* #1920: a web message's channel copy was sent — it is now what the channel saw. Returns the message when this changed
|
|
283
|
+
* it (the caller tells the guests), null otherwise.
|
|
284
|
+
*/
|
|
285
|
+
markChannel(instance: string, messageId: string): WebChatMessage | null;
|
|
286
|
+
/**
|
|
287
|
+
* #1920 (#2085 review): the messages that became the channel's after this cursor (same boot) — what a guest's poll
|
|
288
|
+
* adds to its replay, since their ids are older than the cursor it was given.
|
|
289
|
+
*/
|
|
290
|
+
seenAfter(cursor: {
|
|
291
|
+
boot: string;
|
|
292
|
+
id: number;
|
|
293
|
+
} | null): WebChatMessage[];
|
|
294
|
+
/** #1920: a kept message by the `message_id` the agent was given (a web message, a web click). */
|
|
295
|
+
/** #2272: one kept message of an instance's chat by its row (`boot`, `id`), or undefined (never sent, or no longer kept). */
|
|
296
|
+
find(instance: string, boot: string, id: number): WebChatMessage | undefined;
|
|
297
|
+
findByMessageId(instance: string, messageId: string): WebChatMessage | undefined;
|
|
298
|
+
/** #1920: a kept reply by its buttons' set id. */
|
|
299
|
+
findByButtons(instance: string, buttonsId: string): WebChatMessage | undefined;
|
|
219
300
|
/** #1266: every kept reply whose buttons have ended — what a polling page applies (a stream page hears it live). */
|
|
220
301
|
buttonStates(): Array<{
|
|
221
302
|
instance: string;
|
|
222
303
|
buttons: WebChatButtons;
|
|
223
304
|
}>;
|
|
305
|
+
/** The instances that have a history (#2293: the search backfill). */
|
|
306
|
+
instances(): string[];
|
|
224
307
|
/** The most recent `limit` messages of one instance, oldest first. */
|
|
225
308
|
list(instance: string, limit?: number): WebChatMessage[];
|
|
226
309
|
/**
|