@withbuddi/buddi 0.1.0-pre.26 → 0.1.0-pre.28
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/extension/manifest.json +2 -2
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts +10 -0
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +237 -18
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor-probes.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor-probes.js +10 -8
- package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.d.ts +28 -0
- package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.js +36 -0
- package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
- package/node_modules/@buddi/cli/dist/mcp/tools.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/mcp/tools.js +3 -2
- package/node_modules/@buddi/cli/dist/mcp/tools.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts +3 -0
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js +1 -0
- package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/core/dist/agents/edit.d.ts +3 -0
- package/node_modules/@buddi/core/dist/agents/edit.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/edit.js +3 -1
- package/node_modules/@buddi/core/dist/agents/edit.js.map +1 -1
- package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts +10 -0
- package/node_modules/@buddi/core/dist/agents/frontmatter.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/frontmatter.js +7 -0
- package/node_modules/@buddi/core/dist/agents/frontmatter.js.map +1 -1
- package/node_modules/@buddi/core/dist/agents/idle-rollover.d.ts +20 -0
- package/node_modules/@buddi/core/dist/agents/idle-rollover.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/agents/idle-rollover.js +30 -0
- package/node_modules/@buddi/core/dist/agents/idle-rollover.js.map +1 -0
- package/node_modules/@buddi/core/dist/agents/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/agents/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/index.js +1 -0
- package/node_modules/@buddi/core/dist/agents/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/backup/dump.d.ts +9 -0
- package/node_modules/@buddi/core/dist/backup/dump.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/backup/dump.js +10 -1
- package/node_modules/@buddi/core/dist/backup/dump.js.map +1 -1
- package/node_modules/@buddi/core/dist/backup/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/backup/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/backup/index.js +1 -0
- package/node_modules/@buddi/core/dist/backup/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/backup/load.d.ts +18 -0
- package/node_modules/@buddi/core/dist/backup/load.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/backup/load.js +3 -2
- package/node_modules/@buddi/core/dist/backup/load.js.map +1 -1
- package/node_modules/@buddi/core/dist/backup/pending.d.ts +114 -0
- package/node_modules/@buddi/core/dist/backup/pending.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/backup/pending.js +392 -0
- package/node_modules/@buddi/core/dist/backup/pending.js.map +1 -0
- package/node_modules/@buddi/core/dist/backup/restore.d.ts +3 -1
- package/node_modules/@buddi/core/dist/backup/restore.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/backup/restore.js +55 -2
- package/node_modules/@buddi/core/dist/backup/restore.js.map +1 -1
- package/node_modules/@buddi/core/dist/feedback/index.d.ts +108 -0
- package/node_modules/@buddi/core/dist/feedback/index.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/feedback/index.js +160 -0
- package/node_modules/@buddi/core/dist/feedback/index.js.map +1 -0
- package/node_modules/@buddi/core/dist/home.d.ts +24 -0
- package/node_modules/@buddi/core/dist/home.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/home.js +3 -0
- package/node_modules/@buddi/core/dist/home.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.js +28 -1
- package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts +29 -2
- package/node_modules/@buddi/core/dist/host/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/index.js +1 -0
- package/node_modules/@buddi/core/dist/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/learning/policies.d.ts +7 -1
- package/node_modules/@buddi/core/dist/learning/policies.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/learning/policies.js +4 -1
- package/node_modules/@buddi/core/dist/learning/policies.js.map +1 -1
- package/node_modules/@buddi/core/dist/learning/store.d.ts +29 -1
- package/node_modules/@buddi/core/dist/learning/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/learning/store.js +33 -8
- package/node_modules/@buddi/core/dist/learning/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/learning/types.d.ts +24 -1
- package/node_modules/@buddi/core/dist/learning/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/learning/types.js +6 -0
- package/node_modules/@buddi/core/dist/learning/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/owner.d.ts +2 -1
- package/node_modules/@buddi/core/dist/owner.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/owner.js.map +1 -1
- package/node_modules/@buddi/core/dist/pages.d.ts +27 -0
- package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages.js +24 -3
- package/node_modules/@buddi/core/dist/pages.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +7 -6
- package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.js +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.d.ts +3 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/binaries.js +15 -23
- package/node_modules/@buddi/core/dist/postgres/binaries.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/cluster.js +1 -1
- package/node_modules/@buddi/core/dist/postgres/cluster.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/postgres/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/index.js +1 -0
- package/node_modules/@buddi/core/dist/postgres/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/postgres/links.d.ts +15 -0
- package/node_modules/@buddi/core/dist/postgres/links.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/postgres/links.js +98 -0
- package/node_modules/@buddi/core/dist/postgres/links.js.map +1 -0
- package/node_modules/@buddi/core/dist/registry.d.ts +10 -1
- package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/registry.js +13 -0
- package/node_modules/@buddi/core/dist/registry.js.map +1 -1
- package/node_modules/@buddi/core/dist/sources/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/sources/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/sources/index.js +1 -0
- package/node_modules/@buddi/core/dist/sources/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/sources/watch.d.ts +37 -0
- package/node_modules/@buddi/core/dist/sources/watch.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/sources/watch.js +81 -0
- package/node_modules/@buddi/core/dist/sources/watch.js.map +1 -0
- package/node_modules/@buddi/core/dist/tools.d.ts +47 -0
- package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/tools.js.map +1 -1
- package/node_modules/@buddi/core/migrations/055_pending_plugin_data.sql +24 -0
- package/node_modules/@buddi/core/migrations/056_dashboard_sessions.sql +37 -0
- package/node_modules/@buddi/core/migrations/057_proposal_decided_by.sql +34 -0
- package/node_modules/@buddi/core/migrations/058_message_feedback.sql +50 -0
- package/node_modules/@buddi/core/package.json +4 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learning-digest.d.ts +7 -1
- package/node_modules/@buddi/gateway/dist/agents/learning-digest.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learning-digest.js +29 -3
- package/node_modules/@buddi/gateway/dist/agents/learning-digest.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-files.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/agents/platform-files.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform-files.js +2 -0
- package/node_modules/@buddi/gateway/dist/agents/platform-files.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.d.ts +20 -0
- package/node_modules/@buddi/gateway/dist/agents/platform.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/platform.js +46 -3
- package/node_modules/@buddi/gateway/dist/agents/platform.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.js +12 -2
- package/node_modules/@buddi/gateway/dist/agents-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
- package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.js +1 -0
- package/node_modules/@buddi/gateway/dist/mcp/requests.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/approve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/approve.js +13 -2
- package/node_modules/@buddi/gateway/dist/plugins/approve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/migrate.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/migrate.js +11 -1
- package/node_modules/@buddi/gateway/dist/plugins/migrate.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/paths.d.ts +14 -0
- package/node_modules/@buddi/gateway/dist/plugins/paths.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/paths.js +27 -1
- package/node_modules/@buddi/gateway/dist/plugins/paths.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +27 -3
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.js +35 -5
- package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +4 -0
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.js +42 -9
- package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +14 -2
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.d.ts +2 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.js +8 -5
- package/node_modules/@buddi/gateway/dist/surfaces/browser-continuation.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.d.ts +27 -4
- package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.js +57 -7
- package/node_modules/@buddi/gateway/dist/surfaces/browser-handoff.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/carry-over.d.ts +89 -0
- package/node_modules/@buddi/gateway/dist/surfaces/carry-over.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/surfaces/carry-over.js +172 -0
- package/node_modules/@buddi/gateway/dist/surfaces/carry-over.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.d.ts +5 -2
- package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.js +5 -2
- package/node_modules/@buddi/gateway/dist/surfaces/conversation-lifetime.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/api.d.ts +34 -2
- package/node_modules/@buddi/gateway/dist/telegram/api.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/api.js +15 -2
- package/node_modules/@buddi/gateway/dist/telegram/api.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/env-owner.d.ts +30 -0
- package/node_modules/@buddi/gateway/dist/telegram/env-owner.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/env-owner.js +45 -0
- package/node_modules/@buddi/gateway/dist/telegram/env-owner.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts +0 -2
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.js +20 -25
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/notify.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/notify.js +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/notify.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/telegram/outbound.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/outbound.js +12 -3
- package/node_modules/@buddi/gateway/dist/telegram/outbound.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/reactions.d.ts +45 -0
- package/node_modules/@buddi/gateway/dist/telegram/reactions.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/reactions.js +97 -0
- package/node_modules/@buddi/gateway/dist/telegram/reactions.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +27 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +186 -12
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/agents.d.ts +7 -1
- package/node_modules/@buddi/gateway/dist/web/agents.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/agents.js +32 -2
- package/node_modules/@buddi/gateway/dist/web/agents.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts +10 -3
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.js +18 -5
- package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/plugins.d.ts +6 -1
- package/node_modules/@buddi/gateway/dist/web/plugins.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/plugins.js +31 -2
- package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/proposals.d.ts +21 -0
- package/node_modules/@buddi/gateway/dist/web/proposals.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/proposals.js +50 -1
- package/node_modules/@buddi/gateway/dist/web/proposals.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +23 -0
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.js +36 -1
- package/node_modules/@buddi/gateway/dist/web/read.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/recovery.d.ts +40 -2
- package/node_modules/@buddi/gateway/dist/web/recovery.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/recovery.js +215 -18
- package/node_modules/@buddi/gateway/dist/web/recovery.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +87 -29
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/sessions.d.ts +81 -7
- package/node_modules/@buddi/gateway/dist/web/sessions.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/sessions.js +242 -24
- package/node_modules/@buddi/gateway/dist/web/sessions.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts +46 -0
- package/node_modules/@buddi/gateway/dist/web/signed-out.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/signed-out.js +99 -0
- package/node_modules/@buddi/gateway/dist/web/signed-out.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/tailscale.d.ts +13 -0
- package/node_modules/@buddi/gateway/dist/web/tailscale.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/tailscale.js +12 -0
- package/node_modules/@buddi/gateway/dist/web/tailscale.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/backup.d.ts +18 -0
- package/node_modules/@buddi/install/dist/backup.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/backup.js +39 -2
- package/node_modules/@buddi/install/dist/backup.js.map +1 -1
- package/node_modules/@buddi/install/dist/kept-data.d.ts +20 -0
- package/node_modules/@buddi/install/dist/kept-data.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/kept-data.js +34 -0
- package/node_modules/@buddi/install/dist/kept-data.js.map +1 -0
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +17 -3
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/postgres-check.d.ts +18 -0
- package/node_modules/@buddi/install/dist/postgres-check.d.ts.map +1 -0
- package/node_modules/@buddi/install/dist/postgres-check.js +66 -0
- package/node_modules/@buddi/install/dist/postgres-check.js.map +1 -0
- package/node_modules/@buddi/install/dist/upgrade.d.ts +3 -0
- package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.js +30 -0
- package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/agent.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/agent.js +11 -0
- package/node_modules/@buddi/tool-email/dist/agent.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts +89 -3
- package/node_modules/@buddi/tool-email/dist/imap/fake.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/fake.js +234 -4
- package/node_modules/@buddi/tool-email/dist/imap/fake.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts +14 -1
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js +157 -2
- package/node_modules/@buddi/tool-email/dist/imap/imapflow-client.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/index.d.ts +14 -2
- package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/index.js +23 -4
- package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/logins.d.ts +24 -0
- package/node_modules/@buddi/tool-email/dist/logins.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/logins.js +35 -0
- package/node_modules/@buddi/tool-email/dist/logins.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/mail.d.ts +14 -0
- package/node_modules/@buddi/tool-email/dist/mail.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/mail.js +23 -0
- package/node_modules/@buddi/tool-email/dist/mail.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/mailbox/actions.d.ts +205 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/actions.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/actions.js +662 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/actions.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/arrival.d.ts +61 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/arrival.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/arrival.js +153 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/arrival.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/select.d.ts +53 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/select.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/select.js +117 -0
- package/node_modules/@buddi/tool-email/dist/mailbox/select.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts +37 -1
- package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/accounts.js +104 -2
- package/node_modules/@buddi/tool-email/dist/pages/accounts.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/descriptors.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/descriptors.js +142 -0
- package/node_modules/@buddi/tool-email/dist/pages/descriptors.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/drafts-tools.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/pages/format.d.ts +1 -12
- package/node_modules/@buddi/tool-email/dist/pages/format.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/format.js +17 -0
- package/node_modules/@buddi/tool-email/dist/pages/format.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.js +5 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/policies-tools.d.ts +7 -0
- package/node_modules/@buddi/tool-email/dist/pages/policies-tools.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/policies-tools.js +11 -2
- package/node_modules/@buddi/tool-email/dist/pages/policies-tools.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +16 -0
- package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/queries.js +154 -3
- package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/auto.d.ts +133 -0
- package/node_modules/@buddi/tool-email/dist/policies/auto.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/policies/auto.js +241 -0
- package/node_modules/@buddi/tool-email/dist/policies/auto.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/policies/gate.d.ts +34 -10
- package/node_modules/@buddi/tool-email/dist/policies/gate.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/gate.js +27 -12
- package/node_modules/@buddi/tool-email/dist/policies/gate.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/learn.d.ts +26 -18
- package/node_modules/@buddi/tool-email/dist/policies/learn.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/learn.js +36 -10
- package/node_modules/@buddi/tool-email/dist/policies/learn.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/learned.d.ts +25 -2
- package/node_modules/@buddi/tool-email/dist/policies/learned.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/learned.js +47 -5
- package/node_modules/@buddi/tool-email/dist/policies/learned.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/store.d.ts +8 -2
- package/node_modules/@buddi/tool-email/dist/policies/store.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/store.js +19 -5
- package/node_modules/@buddi/tool-email/dist/policies/store.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/ports.d.ts +79 -0
- package/node_modules/@buddi/tool-email/dist/ports.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/ports.js +6 -0
- package/node_modules/@buddi/tool-email/dist/ports.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/rows.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/rows.js +3 -1
- package/node_modules/@buddi/tool-email/dist/rows.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/idle.d.ts +90 -0
- package/node_modules/@buddi/tool-email/dist/sources/idle.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/sources/idle.js +250 -0
- package/node_modules/@buddi/tool-email/dist/sources/idle.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts +12 -1
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +280 -134
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/mailbox.d.ts +108 -0
- package/node_modules/@buddi/tool-email/dist/tools/mailbox.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/tools/mailbox.js +359 -0
- package/node_modules/@buddi/tool-email/dist/tools/mailbox.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/tools/policies.d.ts +8 -2
- package/node_modules/@buddi/tool-email/dist/tools/policies.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/policies.js +43 -3
- package/node_modules/@buddi/tool-email/dist/tools/policies.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/read.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/tools/triage.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/triage.js +10 -4
- package/node_modules/@buddi/tool-email/dist/tools/triage.js.map +1 -1
- package/node_modules/@buddi/tool-email/migrations/017_mailbox_actions.sql +60 -0
- package/node_modules/@buddi/tool-email/migrations/018_learned_auto.sql +30 -0
- package/node_modules/@buddi/tool-email/migrations/019_arrival_pending.sql +26 -0
- package/node_modules/@buddi/tool-email/package.json +3 -2
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/imapflow/CHANGELOG.md +14 -0
- package/node_modules/imapflow/dist/cjs/commands/fetch.js +1 -1
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +2 -0
- package/node_modules/imapflow/dist/cjs/imap-flow.js +14 -1
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/cjs/tools.d.ts +2 -1
- package/node_modules/imapflow/dist/cjs/tools.js +8 -6
- package/node_modules/imapflow/dist/cjs/types.d.ts +9 -1
- package/node_modules/imapflow/dist/esm/commands/fetch.js +1 -1
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +2 -0
- package/node_modules/imapflow/dist/esm/imap-flow.js +14 -1
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/tools.d.ts +2 -1
- package/node_modules/imapflow/dist/esm/tools.js +8 -6
- package/node_modules/imapflow/dist/esm/types.d.ts +9 -1
- package/node_modules/imapflow/package.json +4 -4
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/commands.d.ts +10 -0
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +237 -18
- package/packages/cli/dist/commands.js.map +1 -1
- package/packages/cli/dist/doctor-probes.d.ts.map +1 -1
- package/packages/cli/dist/doctor-probes.js +10 -8
- package/packages/cli/dist/doctor-probes.js.map +1 -1
- package/packages/cli/dist/doctor.d.ts +28 -0
- package/packages/cli/dist/doctor.d.ts.map +1 -1
- package/packages/cli/dist/doctor.js +36 -0
- package/packages/cli/dist/doctor.js.map +1 -1
- package/packages/cli/dist/mcp/tools.d.ts.map +1 -1
- package/packages/cli/dist/mcp/tools.js +3 -2
- package/packages/cli/dist/mcp/tools.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/catalog.d.ts +3 -0
- package/packages/core/dist/agents/catalog.d.ts.map +1 -1
- package/packages/core/dist/agents/catalog.js +1 -0
- package/packages/core/dist/agents/catalog.js.map +1 -1
- package/packages/core/dist/agents/edit.d.ts +3 -0
- package/packages/core/dist/agents/edit.d.ts.map +1 -1
- package/packages/core/dist/agents/edit.js +3 -1
- package/packages/core/dist/agents/edit.js.map +1 -1
- package/packages/core/dist/agents/frontmatter.d.ts +10 -0
- package/packages/core/dist/agents/frontmatter.d.ts.map +1 -1
- package/packages/core/dist/agents/frontmatter.js +7 -0
- package/packages/core/dist/agents/frontmatter.js.map +1 -1
- package/packages/core/dist/agents/idle-rollover.d.ts +20 -0
- package/packages/core/dist/agents/idle-rollover.d.ts.map +1 -0
- package/packages/core/dist/agents/idle-rollover.js +30 -0
- package/packages/core/dist/agents/idle-rollover.js.map +1 -0
- package/packages/core/dist/agents/index.d.ts +1 -0
- package/packages/core/dist/agents/index.d.ts.map +1 -1
- package/packages/core/dist/agents/index.js +1 -0
- package/packages/core/dist/agents/index.js.map +1 -1
- package/packages/core/dist/backup/dump.d.ts +9 -0
- package/packages/core/dist/backup/dump.d.ts.map +1 -1
- package/packages/core/dist/backup/dump.js +10 -1
- package/packages/core/dist/backup/dump.js.map +1 -1
- package/packages/core/dist/backup/index.d.ts +1 -0
- package/packages/core/dist/backup/index.d.ts.map +1 -1
- package/packages/core/dist/backup/index.js +1 -0
- package/packages/core/dist/backup/index.js.map +1 -1
- package/packages/core/dist/backup/load.d.ts +18 -0
- package/packages/core/dist/backup/load.d.ts.map +1 -1
- package/packages/core/dist/backup/load.js +3 -2
- package/packages/core/dist/backup/load.js.map +1 -1
- package/packages/core/dist/backup/pending.d.ts +114 -0
- package/packages/core/dist/backup/pending.d.ts.map +1 -0
- package/packages/core/dist/backup/pending.js +392 -0
- package/packages/core/dist/backup/pending.js.map +1 -0
- package/packages/core/dist/backup/restore.d.ts +3 -1
- package/packages/core/dist/backup/restore.d.ts.map +1 -1
- package/packages/core/dist/backup/restore.js +55 -2
- package/packages/core/dist/backup/restore.js.map +1 -1
- package/packages/core/dist/feedback/index.d.ts +108 -0
- package/packages/core/dist/feedback/index.d.ts.map +1 -0
- package/packages/core/dist/feedback/index.js +160 -0
- package/packages/core/dist/feedback/index.js.map +1 -0
- package/packages/core/dist/home.d.ts +24 -0
- package/packages/core/dist/home.d.ts.map +1 -1
- package/packages/core/dist/home.js +3 -0
- package/packages/core/dist/home.js.map +1 -1
- package/packages/core/dist/host/build.d.ts.map +1 -1
- package/packages/core/dist/host/build.js +28 -1
- package/packages/core/dist/host/build.js.map +1 -1
- package/packages/core/dist/host/types.d.ts +29 -2
- package/packages/core/dist/host/types.d.ts.map +1 -1
- package/packages/core/dist/index.d.ts +1 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +1 -0
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/learning/policies.d.ts +7 -1
- package/packages/core/dist/learning/policies.d.ts.map +1 -1
- package/packages/core/dist/learning/policies.js +4 -1
- package/packages/core/dist/learning/policies.js.map +1 -1
- package/packages/core/dist/learning/store.d.ts +29 -1
- package/packages/core/dist/learning/store.d.ts.map +1 -1
- package/packages/core/dist/learning/store.js +33 -8
- package/packages/core/dist/learning/store.js.map +1 -1
- package/packages/core/dist/learning/types.d.ts +24 -1
- package/packages/core/dist/learning/types.d.ts.map +1 -1
- package/packages/core/dist/learning/types.js +6 -0
- package/packages/core/dist/learning/types.js.map +1 -1
- package/packages/core/dist/owner.d.ts +2 -1
- package/packages/core/dist/owner.d.ts.map +1 -1
- package/packages/core/dist/owner.js.map +1 -1
- package/packages/core/dist/pages.d.ts +27 -0
- package/packages/core/dist/pages.d.ts.map +1 -1
- package/packages/core/dist/pages.js +24 -3
- package/packages/core/dist/pages.js.map +1 -1
- package/packages/core/dist/plugin/index.d.ts +7 -6
- package/packages/core/dist/plugin/index.d.ts.map +1 -1
- package/packages/core/dist/plugin/index.js +1 -1
- package/packages/core/dist/plugin/index.js.map +1 -1
- package/packages/core/dist/plugin/version.d.ts +1 -1
- package/packages/core/dist/plugin/version.js +1 -1
- package/packages/core/dist/postgres/binaries.d.ts +3 -1
- package/packages/core/dist/postgres/binaries.d.ts.map +1 -1
- package/packages/core/dist/postgres/binaries.js +15 -23
- package/packages/core/dist/postgres/binaries.js.map +1 -1
- package/packages/core/dist/postgres/cluster.js +1 -1
- package/packages/core/dist/postgres/cluster.js.map +1 -1
- package/packages/core/dist/postgres/index.d.ts +1 -0
- package/packages/core/dist/postgres/index.d.ts.map +1 -1
- package/packages/core/dist/postgres/index.js +1 -0
- package/packages/core/dist/postgres/index.js.map +1 -1
- package/packages/core/dist/postgres/links.d.ts +15 -0
- package/packages/core/dist/postgres/links.d.ts.map +1 -0
- package/packages/core/dist/postgres/links.js +98 -0
- package/packages/core/dist/postgres/links.js.map +1 -0
- package/packages/core/dist/registry.d.ts +10 -1
- package/packages/core/dist/registry.d.ts.map +1 -1
- package/packages/core/dist/registry.js +13 -0
- package/packages/core/dist/registry.js.map +1 -1
- package/packages/core/dist/sources/index.d.ts +1 -0
- package/packages/core/dist/sources/index.d.ts.map +1 -1
- package/packages/core/dist/sources/index.js +1 -0
- package/packages/core/dist/sources/index.js.map +1 -1
- package/packages/core/dist/sources/watch.d.ts +37 -0
- package/packages/core/dist/sources/watch.d.ts.map +1 -0
- package/packages/core/dist/sources/watch.js +81 -0
- package/packages/core/dist/sources/watch.js.map +1 -0
- package/packages/core/dist/tools.d.ts +47 -0
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/core/migrations/055_pending_plugin_data.sql +24 -0
- package/packages/core/migrations/056_dashboard_sessions.sql +37 -0
- package/packages/core/migrations/057_proposal_decided_by.sql +34 -0
- package/packages/core/migrations/058_message_feedback.sql +50 -0
- package/packages/core/package.json +4 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/learning-digest.d.ts +7 -1
- package/packages/gateway/dist/agents/learning-digest.d.ts.map +1 -1
- package/packages/gateway/dist/agents/learning-digest.js +29 -3
- package/packages/gateway/dist/agents/learning-digest.js.map +1 -1
- package/packages/gateway/dist/agents/platform-files.d.ts +2 -0
- package/packages/gateway/dist/agents/platform-files.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform-files.js +2 -0
- package/packages/gateway/dist/agents/platform-files.js.map +1 -1
- package/packages/gateway/dist/agents/platform.d.ts +20 -0
- package/packages/gateway/dist/agents/platform.d.ts.map +1 -1
- package/packages/gateway/dist/agents/platform.js +46 -3
- package/packages/gateway/dist/agents/platform.js.map +1 -1
- package/packages/gateway/dist/agents-cli.d.ts +1 -1
- package/packages/gateway/dist/agents-cli.d.ts.map +1 -1
- package/packages/gateway/dist/agents-cli.js +12 -2
- package/packages/gateway/dist/agents-cli.js.map +1 -1
- package/packages/gateway/dist/chat/session.d.ts.map +1 -1
- package/packages/gateway/dist/chat/session.js +2 -1
- package/packages/gateway/dist/chat/session.js.map +1 -1
- package/packages/gateway/dist/mcp/requests.d.ts.map +1 -1
- package/packages/gateway/dist/mcp/requests.js +1 -0
- package/packages/gateway/dist/mcp/requests.js.map +1 -1
- package/packages/gateway/dist/plugins/approve.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/approve.js +13 -2
- package/packages/gateway/dist/plugins/approve.js.map +1 -1
- package/packages/gateway/dist/plugins/migrate.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/migrate.js +11 -1
- package/packages/gateway/dist/plugins/migrate.js.map +1 -1
- package/packages/gateway/dist/plugins/paths.d.ts +14 -0
- package/packages/gateway/dist/plugins/paths.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/paths.js +27 -1
- package/packages/gateway/dist/plugins/paths.js.map +1 -1
- package/packages/gateway/dist/plugins/stage.d.ts +27 -3
- package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/stage.js +35 -5
- package/packages/gateway/dist/plugins/stage.js.map +1 -1
- package/packages/gateway/dist/plugins-cli.d.ts +4 -0
- package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/packages/gateway/dist/plugins-cli.js +42 -9
- package/packages/gateway/dist/plugins-cli.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +14 -2
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/surfaces/browser-continuation.d.ts +2 -1
- package/packages/gateway/dist/surfaces/browser-continuation.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/browser-continuation.js +8 -5
- package/packages/gateway/dist/surfaces/browser-continuation.js.map +1 -1
- package/packages/gateway/dist/surfaces/browser-handoff.d.ts +27 -4
- package/packages/gateway/dist/surfaces/browser-handoff.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/browser-handoff.js +57 -7
- package/packages/gateway/dist/surfaces/browser-handoff.js.map +1 -1
- package/packages/gateway/dist/surfaces/carry-over.d.ts +89 -0
- package/packages/gateway/dist/surfaces/carry-over.d.ts.map +1 -0
- package/packages/gateway/dist/surfaces/carry-over.js +172 -0
- package/packages/gateway/dist/surfaces/carry-over.js.map +1 -0
- package/packages/gateway/dist/surfaces/conversation-lifetime.d.ts +5 -2
- package/packages/gateway/dist/surfaces/conversation-lifetime.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/conversation-lifetime.js +5 -2
- package/packages/gateway/dist/surfaces/conversation-lifetime.js.map +1 -1
- package/packages/gateway/dist/telegram/api.d.ts +34 -2
- package/packages/gateway/dist/telegram/api.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/api.js +15 -2
- package/packages/gateway/dist/telegram/api.js.map +1 -1
- package/packages/gateway/dist/telegram/env-owner.d.ts +30 -0
- package/packages/gateway/dist/telegram/env-owner.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/env-owner.js +45 -0
- package/packages/gateway/dist/telegram/env-owner.js.map +1 -0
- package/packages/gateway/dist/telegram/main.d.ts +0 -2
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +20 -25
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/notify.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/notify.js +1 -1
- package/packages/gateway/dist/telegram/notify.js.map +1 -1
- package/packages/gateway/dist/telegram/outbound.d.ts +2 -2
- package/packages/gateway/dist/telegram/outbound.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/outbound.js +12 -3
- package/packages/gateway/dist/telegram/outbound.js.map +1 -1
- package/packages/gateway/dist/telegram/reactions.d.ts +45 -0
- package/packages/gateway/dist/telegram/reactions.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/reactions.js +97 -0
- package/packages/gateway/dist/telegram/reactions.js.map +1 -0
- package/packages/gateway/dist/telegram/surface.d.ts +27 -1
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +186 -12
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/web/agents.d.ts +7 -1
- package/packages/gateway/dist/web/agents.d.ts.map +1 -1
- package/packages/gateway/dist/web/agents.js +32 -2
- package/packages/gateway/dist/web/agents.js.map +1 -1
- package/packages/gateway/dist/web/chat.d.ts +10 -3
- package/packages/gateway/dist/web/chat.d.ts.map +1 -1
- package/packages/gateway/dist/web/chat.js +18 -5
- package/packages/gateway/dist/web/chat.js.map +1 -1
- package/packages/gateway/dist/web/plugins.d.ts +6 -1
- package/packages/gateway/dist/web/plugins.d.ts.map +1 -1
- package/packages/gateway/dist/web/plugins.js +31 -2
- package/packages/gateway/dist/web/plugins.js.map +1 -1
- package/packages/gateway/dist/web/proposals.d.ts +21 -0
- package/packages/gateway/dist/web/proposals.d.ts.map +1 -1
- package/packages/gateway/dist/web/proposals.js +50 -1
- package/packages/gateway/dist/web/proposals.js.map +1 -1
- package/packages/gateway/dist/web/read.d.ts +23 -0
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/read.js +36 -1
- package/packages/gateway/dist/web/read.js.map +1 -1
- package/packages/gateway/dist/web/recovery.d.ts +40 -2
- package/packages/gateway/dist/web/recovery.d.ts.map +1 -1
- package/packages/gateway/dist/web/recovery.js +215 -18
- package/packages/gateway/dist/web/recovery.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +87 -29
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/sessions.d.ts +81 -7
- package/packages/gateway/dist/web/sessions.d.ts.map +1 -1
- package/packages/gateway/dist/web/sessions.js +242 -24
- package/packages/gateway/dist/web/sessions.js.map +1 -1
- package/packages/gateway/dist/web/signed-out.d.ts +46 -0
- package/packages/gateway/dist/web/signed-out.d.ts.map +1 -0
- package/packages/gateway/dist/web/signed-out.js +99 -0
- package/packages/gateway/dist/web/signed-out.js.map +1 -0
- package/packages/gateway/dist/web/tailscale.d.ts +13 -0
- package/packages/gateway/dist/web/tailscale.d.ts.map +1 -1
- package/packages/gateway/dist/web/tailscale.js +12 -0
- package/packages/gateway/dist/web/tailscale.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/backup.d.ts +18 -0
- package/packages/install/dist/backup.d.ts.map +1 -1
- package/packages/install/dist/backup.js +39 -2
- package/packages/install/dist/backup.js.map +1 -1
- package/packages/install/dist/kept-data.d.ts +20 -0
- package/packages/install/dist/kept-data.d.ts.map +1 -0
- package/packages/install/dist/kept-data.js +34 -0
- package/packages/install/dist/kept-data.js.map +1 -0
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +17 -3
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/postgres-check.d.ts +18 -0
- package/packages/install/dist/postgres-check.d.ts.map +1 -0
- package/packages/install/dist/postgres-check.js +66 -0
- package/packages/install/dist/postgres-check.js.map +1 -0
- package/packages/install/dist/upgrade.d.ts +3 -0
- package/packages/install/dist/upgrade.d.ts.map +1 -1
- package/packages/install/dist/upgrade.js +30 -0
- package/packages/install/dist/upgrade.js.map +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/agent.d.ts.map +1 -1
- package/packages/tools/email/dist/agent.js +11 -0
- package/packages/tools/email/dist/agent.js.map +1 -1
- package/packages/tools/email/dist/imap/fake.d.ts +89 -3
- package/packages/tools/email/dist/imap/fake.d.ts.map +1 -1
- package/packages/tools/email/dist/imap/fake.js +234 -4
- package/packages/tools/email/dist/imap/fake.js.map +1 -1
- package/packages/tools/email/dist/imap/imapflow-client.d.ts +14 -1
- package/packages/tools/email/dist/imap/imapflow-client.d.ts.map +1 -1
- package/packages/tools/email/dist/imap/imapflow-client.js +157 -2
- package/packages/tools/email/dist/imap/imapflow-client.js.map +1 -1
- package/packages/tools/email/dist/index.d.ts +14 -2
- package/packages/tools/email/dist/index.d.ts.map +1 -1
- package/packages/tools/email/dist/index.js +23 -4
- package/packages/tools/email/dist/index.js.map +1 -1
- package/packages/tools/email/dist/logins.d.ts +24 -0
- package/packages/tools/email/dist/logins.d.ts.map +1 -0
- package/packages/tools/email/dist/logins.js +35 -0
- package/packages/tools/email/dist/logins.js.map +1 -0
- package/packages/tools/email/dist/mail.d.ts +14 -0
- package/packages/tools/email/dist/mail.d.ts.map +1 -1
- package/packages/tools/email/dist/mail.js +23 -0
- package/packages/tools/email/dist/mail.js.map +1 -1
- package/packages/tools/email/dist/mailbox/actions.d.ts +205 -0
- package/packages/tools/email/dist/mailbox/actions.d.ts.map +1 -0
- package/packages/tools/email/dist/mailbox/actions.js +662 -0
- package/packages/tools/email/dist/mailbox/actions.js.map +1 -0
- package/packages/tools/email/dist/mailbox/arrival.d.ts +61 -0
- package/packages/tools/email/dist/mailbox/arrival.d.ts.map +1 -0
- package/packages/tools/email/dist/mailbox/arrival.js +153 -0
- package/packages/tools/email/dist/mailbox/arrival.js.map +1 -0
- package/packages/tools/email/dist/mailbox/select.d.ts +53 -0
- package/packages/tools/email/dist/mailbox/select.d.ts.map +1 -0
- package/packages/tools/email/dist/mailbox/select.js +117 -0
- package/packages/tools/email/dist/mailbox/select.js.map +1 -0
- package/packages/tools/email/dist/pages/accounts.d.ts +37 -1
- package/packages/tools/email/dist/pages/accounts.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/accounts.js +104 -2
- package/packages/tools/email/dist/pages/accounts.js.map +1 -1
- package/packages/tools/email/dist/pages/descriptors.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/descriptors.js +142 -0
- package/packages/tools/email/dist/pages/descriptors.js.map +1 -1
- package/packages/tools/email/dist/pages/drafts-tools.d.ts +2 -2
- package/packages/tools/email/dist/pages/format.d.ts +1 -12
- package/packages/tools/email/dist/pages/format.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/format.js +17 -0
- package/packages/tools/email/dist/pages/format.js.map +1 -1
- package/packages/tools/email/dist/pages/index.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/index.js +5 -1
- package/packages/tools/email/dist/pages/index.js.map +1 -1
- package/packages/tools/email/dist/pages/policies-tools.d.ts +7 -0
- package/packages/tools/email/dist/pages/policies-tools.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/policies-tools.js +11 -2
- package/packages/tools/email/dist/pages/policies-tools.js.map +1 -1
- package/packages/tools/email/dist/pages/queries.d.ts +16 -0
- package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/queries.js +154 -3
- package/packages/tools/email/dist/pages/queries.js.map +1 -1
- package/packages/tools/email/dist/policies/auto.d.ts +133 -0
- package/packages/tools/email/dist/policies/auto.d.ts.map +1 -0
- package/packages/tools/email/dist/policies/auto.js +241 -0
- package/packages/tools/email/dist/policies/auto.js.map +1 -0
- package/packages/tools/email/dist/policies/gate.d.ts +34 -10
- package/packages/tools/email/dist/policies/gate.d.ts.map +1 -1
- package/packages/tools/email/dist/policies/gate.js +27 -12
- package/packages/tools/email/dist/policies/gate.js.map +1 -1
- package/packages/tools/email/dist/policies/learn.d.ts +26 -18
- package/packages/tools/email/dist/policies/learn.d.ts.map +1 -1
- package/packages/tools/email/dist/policies/learn.js +36 -10
- package/packages/tools/email/dist/policies/learn.js.map +1 -1
- package/packages/tools/email/dist/policies/learned.d.ts +25 -2
- package/packages/tools/email/dist/policies/learned.d.ts.map +1 -1
- package/packages/tools/email/dist/policies/learned.js +47 -5
- package/packages/tools/email/dist/policies/learned.js.map +1 -1
- package/packages/tools/email/dist/policies/store.d.ts +8 -2
- package/packages/tools/email/dist/policies/store.d.ts.map +1 -1
- package/packages/tools/email/dist/policies/store.js +19 -5
- package/packages/tools/email/dist/policies/store.js.map +1 -1
- package/packages/tools/email/dist/ports.d.ts +79 -0
- package/packages/tools/email/dist/ports.d.ts.map +1 -1
- package/packages/tools/email/dist/ports.js +6 -0
- package/packages/tools/email/dist/ports.js.map +1 -1
- package/packages/tools/email/dist/rows.d.ts.map +1 -1
- package/packages/tools/email/dist/rows.js +3 -1
- package/packages/tools/email/dist/rows.js.map +1 -1
- package/packages/tools/email/dist/sources/idle.d.ts +90 -0
- package/packages/tools/email/dist/sources/idle.d.ts.map +1 -0
- package/packages/tools/email/dist/sources/idle.js +250 -0
- package/packages/tools/email/dist/sources/idle.js.map +1 -0
- package/packages/tools/email/dist/sources/inbox-poll.d.ts +12 -1
- package/packages/tools/email/dist/sources/inbox-poll.d.ts.map +1 -1
- package/packages/tools/email/dist/sources/inbox-poll.js +280 -134
- package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
- package/packages/tools/email/dist/tools/mailbox.d.ts +108 -0
- package/packages/tools/email/dist/tools/mailbox.d.ts.map +1 -0
- package/packages/tools/email/dist/tools/mailbox.js +359 -0
- package/packages/tools/email/dist/tools/mailbox.js.map +1 -0
- package/packages/tools/email/dist/tools/policies.d.ts +8 -2
- package/packages/tools/email/dist/tools/policies.d.ts.map +1 -1
- package/packages/tools/email/dist/tools/policies.js +43 -3
- package/packages/tools/email/dist/tools/policies.js.map +1 -1
- package/packages/tools/email/dist/tools/read.d.ts +2 -2
- package/packages/tools/email/dist/tools/triage.d.ts.map +1 -1
- package/packages/tools/email/dist/tools/triage.js +10 -4
- package/packages/tools/email/dist/tools/triage.js.map +1 -1
- package/packages/tools/email/migrations/017_mailbox_actions.sql +60 -0
- package/packages/tools/email/migrations/018_learned_auto.sql +30 -0
- package/packages/tools/email/migrations/019_arrival_pending.sql +26 -0
- package/packages/tools/email/package.json +3 -2
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/.tsbuildinfo +1 -1
- package/packages/tools/web/dist/.tsbuildinfo +1 -1
- package/packages/web/dist/assets/index-CKuhKCWw.js +131 -0
- package/packages/web/dist/assets/index-DsK8UWCJ.css +1 -0
- package/packages/web/dist/assets/{lottie_light-7wQnGwdw.js → lottie_light-CSeMXM8D.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/packages/web/dist/assets/index-BxbiKNMS.css +0 -1
- package/packages/web/dist/assets/index-Rrze3bGo.js +0 -130
|
@@ -90,23 +90,80 @@ export interface Session {
|
|
|
90
90
|
/** When the browser was last handed this cookie. Drives the refresh rule. */
|
|
91
91
|
cookieIssuedAt: Date;
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* What the table stores in place of a session id: sha256, hex.
|
|
95
|
+
*
|
|
96
|
+
* A plain hash is enough because the id is 256 random bits — there is nothing
|
|
97
|
+
* to guess, so nothing a slow hash would slow down.
|
|
98
|
+
*/
|
|
99
|
+
export declare function sessionIdHash(sessionId: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* The CSRF value for a session, derived from its id.
|
|
102
|
+
*
|
|
103
|
+
* Derived rather than random so it never has to be stored: after a restart the
|
|
104
|
+
* request presents the session id, and the CSRF value it must also echo is
|
|
105
|
+
* recomputed from it. HMAC keyed by the id is one-way — the page can read the
|
|
106
|
+
* CSRF cookie, and that reveals nothing about the HttpOnly id — and another
|
|
107
|
+
* site still cannot read either cookie, which is all double-submit asks of it.
|
|
108
|
+
*/
|
|
109
|
+
export declare function csrfFor(sessionId: string): string;
|
|
110
|
+
/** Just enough of `pg.Pool` for the session table. */
|
|
111
|
+
export interface SessionDb {
|
|
112
|
+
query: (sql: string, params?: unknown[]) => Promise<{
|
|
113
|
+
rows: unknown[];
|
|
114
|
+
}>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* A session as `forget` offers it: the stored fields, and the id only when this
|
|
118
|
+
* process has seen the cookie (a row read back from the table has no id to give).
|
|
119
|
+
*/
|
|
120
|
+
export type SessionRecord = Omit<Session, 'id' | 'csrf'> & {
|
|
121
|
+
id?: string;
|
|
122
|
+
};
|
|
123
|
+
export interface SessionStoreOptions {
|
|
124
|
+
/** The database the sessions are kept in. Without one they live in memory only. */
|
|
125
|
+
db?: SessionDb | undefined;
|
|
126
|
+
log?: ((line: string) => void) | undefined;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The longest the stored idle edge may lag the live one.
|
|
130
|
+
*
|
|
131
|
+
* Sliding the in-memory expiry is free and happens on every request; writing
|
|
132
|
+
* it back is a database round trip, so it is done at most this often per
|
|
133
|
+
* session (or a tenth of the idle lifetime, when that is shorter). A restart
|
|
134
|
+
* can therefore cost a session at most this much of its idle lifetime, never
|
|
135
|
+
* extend it.
|
|
136
|
+
*/
|
|
137
|
+
export declare const SESSION_WRITE_EVERY_MS: number;
|
|
138
|
+
/** How often expired rows are swept from the table. */
|
|
139
|
+
export declare const SESSION_SWEEP_EVERY_MS: number;
|
|
93
140
|
export declare class SessionStore {
|
|
94
141
|
#private;
|
|
95
|
-
constructor(ttlMs?: Partial<Record<SessionScope, number>>, tailscaleMaxMs?: number);
|
|
142
|
+
constructor(ttlMs?: Partial<Record<SessionScope, number>>, tailscaleMaxMs?: number, options?: SessionStoreOptions);
|
|
96
143
|
/** The idle lifetime a session established from `scope` gets. */
|
|
97
144
|
ttlFor(scope: SessionScope): number;
|
|
98
|
-
create(scope: SessionScope, now?: Date, provenance?: SessionProvenance): Session;
|
|
99
145
|
/**
|
|
100
|
-
*
|
|
146
|
+
* A new session. Stored unless `persist` is false — which is how the open
|
|
147
|
+
* loopback gate mints its silent sessions: one is minted again for free on
|
|
148
|
+
* the next request, so there is nothing to keep across a restart, and a
|
|
149
|
+
* cookie-less local poller must not add a row per request.
|
|
150
|
+
*/
|
|
151
|
+
create(scope: SessionScope, now?: Date, provenance?: SessionProvenance, options?: {
|
|
152
|
+
persist?: boolean;
|
|
153
|
+
}): Session;
|
|
154
|
+
/**
|
|
155
|
+
* Forget every session matching this — in memory and in the table — and say
|
|
156
|
+
* how many went.
|
|
101
157
|
*
|
|
102
158
|
* What the setting page uses to revoke the sessions an identity earned the
|
|
103
159
|
* moment that identity stops being allowed one: turning the switch off, or
|
|
104
160
|
* naming a different login, empties the tailnet's access immediately rather
|
|
105
|
-
* than at the next request that happens to be made.
|
|
161
|
+
* than at the next request that happens to be made. Rows this process never
|
|
162
|
+
* saw a cookie for are offered without an `id`.
|
|
106
163
|
*/
|
|
107
|
-
forget(matches: (session:
|
|
164
|
+
forget(matches: (session: SessionRecord) => boolean): Promise<number>;
|
|
108
165
|
/**
|
|
109
|
-
* The live session for this cookie, sliding its expiry.
|
|
166
|
+
* The live session for this cookie, from memory only, sliding its expiry.
|
|
110
167
|
*
|
|
111
168
|
* `scope` is where *this request* came from, and it must match where the
|
|
112
169
|
* session was established. A cookie minted on loopback is not honoured when
|
|
@@ -114,8 +171,19 @@ export declare class SessionStore {
|
|
|
114
171
|
* this machine rather than a credential that got a longer life by accident.
|
|
115
172
|
* (A browser will not send it across hosts in the first place; this is the
|
|
116
173
|
* belt to that suspenders.)
|
|
174
|
+
*
|
|
175
|
+
* The server asks `resolve`, which reads through to the table on a miss.
|
|
117
176
|
*/
|
|
118
177
|
get(sessionId: string | undefined, scope: SessionScope, now?: Date): Session | undefined;
|
|
178
|
+
/**
|
|
179
|
+
* `get`, reading through to the table when this process has not seen the
|
|
180
|
+
* cookie yet — after a restart, every session starts here.
|
|
181
|
+
*
|
|
182
|
+
* A row is honoured on exactly the terms a cached session is: past its idle
|
|
183
|
+
* edge or its absolute one it is deleted and refused, and its scope must
|
|
184
|
+
* match. A database that cannot be read is a miss, never an error page.
|
|
185
|
+
*/
|
|
186
|
+
resolve(sessionId: string | undefined, scope: SessionScope, now?: Date): Promise<Session | undefined>;
|
|
119
187
|
/**
|
|
120
188
|
* Should this response carry a fresh cookie? Mutating: a `true` answer marks
|
|
121
189
|
* the cookie as issued now, so the caller must actually send it.
|
|
@@ -125,7 +193,13 @@ export declare class SessionStore {
|
|
|
125
193
|
static maxAgeSeconds(session: Session): number;
|
|
126
194
|
/** Constant-time double-submit check. */
|
|
127
195
|
static csrfMatches(session: Session, presented: string | undefined): boolean;
|
|
128
|
-
|
|
196
|
+
/**
|
|
197
|
+
* End this session, in memory at once and in the table before the returned
|
|
198
|
+
* promise settles. Callers that revoke for a reason await it.
|
|
199
|
+
*/
|
|
200
|
+
destroy(sessionId: string | undefined): Promise<void>;
|
|
201
|
+
/** Every table operation queued so far has settled. A test seam. */
|
|
202
|
+
flush(): Promise<void>;
|
|
129
203
|
get size(): number;
|
|
130
204
|
}
|
|
131
205
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/web/sessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/web/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sessions, CSRF tokens, spent tickets and the auth rate limit.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Sessions are kept in `core.dashboard_sessions` with a small cache in front,
|
|
5
|
+
* so a restart or an upgrade no longer signs the owner out (docs/web.md,
|
|
6
|
+
* "Sessions"). What is stored is a hash of the session id, never the id: a
|
|
7
|
+
* copy of the table cannot be replayed as a cookie. The CSRF value is derived
|
|
8
|
+
* from the id rather than stored at all. The rate limit stays in memory.
|
|
9
|
+
* Nothing here is ever written to a log.
|
|
8
10
|
*/
|
|
9
|
-
import { createHash, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
11
|
+
import { createHash, createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
10
12
|
/**
|
|
11
13
|
* How long a session is honoured **without any activity**, by where it was
|
|
12
14
|
* established. Both are idle lifetimes, not absolute ones: a session in use
|
|
@@ -66,24 +68,86 @@ function equal(a, b) {
|
|
|
66
68
|
const bb = Buffer.from(b ?? '', 'utf8');
|
|
67
69
|
return ab.length > 0 && ab.length === bb.length && timingSafeEqual(ab, bb);
|
|
68
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* What the table stores in place of a session id: sha256, hex.
|
|
73
|
+
*
|
|
74
|
+
* A plain hash is enough because the id is 256 random bits — there is nothing
|
|
75
|
+
* to guess, so nothing a slow hash would slow down.
|
|
76
|
+
*/
|
|
77
|
+
export function sessionIdHash(sessionId) {
|
|
78
|
+
return createHash('sha256').update(sessionId, 'utf8').digest('hex');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The CSRF value for a session, derived from its id.
|
|
82
|
+
*
|
|
83
|
+
* Derived rather than random so it never has to be stored: after a restart the
|
|
84
|
+
* request presents the session id, and the CSRF value it must also echo is
|
|
85
|
+
* recomputed from it. HMAC keyed by the id is one-way — the page can read the
|
|
86
|
+
* CSRF cookie, and that reveals nothing about the HttpOnly id — and another
|
|
87
|
+
* site still cannot read either cookie, which is all double-submit asks of it.
|
|
88
|
+
*/
|
|
89
|
+
export function csrfFor(sessionId) {
|
|
90
|
+
return createHmac('sha256', sessionId).update('buddi-csrf-v1').digest('base64url').slice(0, 32);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The longest the stored idle edge may lag the live one.
|
|
94
|
+
*
|
|
95
|
+
* Sliding the in-memory expiry is free and happens on every request; writing
|
|
96
|
+
* it back is a database round trip, so it is done at most this often per
|
|
97
|
+
* session (or a tenth of the idle lifetime, when that is shorter). A restart
|
|
98
|
+
* can therefore cost a session at most this much of its idle lifetime, never
|
|
99
|
+
* extend it.
|
|
100
|
+
*/
|
|
101
|
+
export const SESSION_WRITE_EVERY_MS = 5 * 60_000;
|
|
102
|
+
/** How often expired rows are swept from the table. */
|
|
103
|
+
export const SESSION_SWEEP_EVERY_MS = 10 * 60_000;
|
|
104
|
+
const COLUMNS = `id_hash, scope, via, tailscale_login, tailscale_address, tailscale_name, ttl_ms,
|
|
105
|
+
created_at, expires_at, absolute_expires_at`;
|
|
106
|
+
/** Is this a row the table could have produced? Anything else is a miss. */
|
|
107
|
+
function isRow(value) {
|
|
108
|
+
const row = value;
|
|
109
|
+
return !!row && typeof row.id_hash === 'string'
|
|
110
|
+
&& (row.scope === 'local' || row.scope === 'remote')
|
|
111
|
+
&& (row.via === 'local' || row.via === 'ticket' || row.via === 'tailscale')
|
|
112
|
+
&& row.created_at !== undefined && row.expires_at !== undefined && row.ttl_ms !== undefined;
|
|
113
|
+
}
|
|
69
114
|
export class SessionStore {
|
|
115
|
+
/** Keyed by the id's hash, so the cache and the table speak the same key. */
|
|
70
116
|
#sessions = new Map();
|
|
117
|
+
/** When each cached session's idle edge was last written back. */
|
|
118
|
+
#persistedAt = new Map();
|
|
119
|
+
/** Destroyed while a read of the table may still be in flight. */
|
|
120
|
+
#revoked = new Set();
|
|
71
121
|
#ttl;
|
|
72
122
|
#tailscaleMaxMs;
|
|
73
|
-
|
|
123
|
+
#db;
|
|
124
|
+
#log;
|
|
125
|
+
/** Every table operation, in order: a revoke can never be overtaken by a read. */
|
|
126
|
+
#chain = Promise.resolve();
|
|
127
|
+
#sweptAt = Number.NEGATIVE_INFINITY;
|
|
128
|
+
constructor(ttlMs = {}, tailscaleMaxMs = TAILSCALE_SESSION_MAX_MS, options = {}) {
|
|
74
129
|
this.#ttl = { ...SESSION_TTL_MS, ...ttlMs };
|
|
75
130
|
this.#tailscaleMaxMs = tailscaleMaxMs;
|
|
131
|
+
this.#db = options.db;
|
|
132
|
+
this.#log = options.log ?? ((line) => console.error(line));
|
|
76
133
|
}
|
|
77
134
|
/** The idle lifetime a session established from `scope` gets. */
|
|
78
135
|
ttlFor(scope) {
|
|
79
136
|
return this.#ttl[scope];
|
|
80
137
|
}
|
|
81
|
-
|
|
138
|
+
/**
|
|
139
|
+
* A new session. Stored unless `persist` is false — which is how the open
|
|
140
|
+
* loopback gate mints its silent sessions: one is minted again for free on
|
|
141
|
+
* the next request, so there is nothing to keep across a restart, and a
|
|
142
|
+
* cookie-less local poller must not add a row per request.
|
|
143
|
+
*/
|
|
144
|
+
create(scope, now = new Date(), provenance = { via: scope === 'local' ? 'local' : 'ticket' }, options = {}) {
|
|
82
145
|
this.#prune(now);
|
|
83
146
|
const ttlMs = this.#ttl[scope];
|
|
147
|
+
const sessionId = id();
|
|
84
148
|
const session = {
|
|
85
|
-
id:
|
|
86
|
-
csrf:
|
|
149
|
+
id: sessionId,
|
|
150
|
+
csrf: csrfFor(sessionId),
|
|
87
151
|
scope,
|
|
88
152
|
via: provenance.via,
|
|
89
153
|
...(provenance.tailscaleLogin !== undefined ? { tailscaleLogin: provenance.tailscaleLogin } : {}),
|
|
@@ -95,29 +159,62 @@ export class SessionStore {
|
|
|
95
159
|
...(provenance.via === 'tailscale' ? { absoluteExpiresAt: new Date(now.getTime() + this.#tailscaleMaxMs) } : {}),
|
|
96
160
|
cookieIssuedAt: now,
|
|
97
161
|
};
|
|
98
|
-
|
|
162
|
+
const key = sessionIdHash(sessionId);
|
|
163
|
+
this.#sessions.set(key, session);
|
|
164
|
+
if (options.persist !== false && this.#db) {
|
|
165
|
+
this.#persistedAt.set(key, now.getTime());
|
|
166
|
+
const db = this.#db;
|
|
167
|
+
void this.#enqueue('storing a session', () => db.query(`insert into core.dashboard_sessions (${COLUMNS}, last_seen_at)
|
|
168
|
+
values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $8)
|
|
169
|
+
on conflict (id_hash) do nothing`, [key, session.scope, session.via, session.tailscaleLogin ?? null, session.tailscaleAddress ?? null,
|
|
170
|
+
session.tailscaleName ?? null, ttlMs, session.createdAt, session.expiresAt, session.absoluteExpiresAt ?? null]));
|
|
171
|
+
this.#maybeSweep(now);
|
|
172
|
+
}
|
|
99
173
|
return session;
|
|
100
174
|
}
|
|
101
175
|
/**
|
|
102
|
-
* Forget every session matching this
|
|
176
|
+
* Forget every session matching this — in memory and in the table — and say
|
|
177
|
+
* how many went.
|
|
103
178
|
*
|
|
104
179
|
* What the setting page uses to revoke the sessions an identity earned the
|
|
105
180
|
* moment that identity stops being allowed one: turning the switch off, or
|
|
106
181
|
* naming a different login, empties the tailnet's access immediately rather
|
|
107
|
-
* than at the next request that happens to be made.
|
|
182
|
+
* than at the next request that happens to be made. Rows this process never
|
|
183
|
+
* saw a cookie for are offered without an `id`.
|
|
108
184
|
*/
|
|
109
|
-
forget(matches) {
|
|
110
|
-
|
|
185
|
+
async forget(matches) {
|
|
186
|
+
const gone = new Set();
|
|
111
187
|
for (const [key, session] of this.#sessions) {
|
|
112
188
|
if (matches(session)) {
|
|
113
|
-
this.#
|
|
114
|
-
gone
|
|
189
|
+
this.#drop(key);
|
|
190
|
+
gone.add(key);
|
|
115
191
|
}
|
|
116
192
|
}
|
|
117
|
-
|
|
193
|
+
const db = this.#db;
|
|
194
|
+
if (db) {
|
|
195
|
+
await this.#enqueue('revoking sessions', async () => {
|
|
196
|
+
const { rows } = await db.query(`select ${COLUMNS} from core.dashboard_sessions`);
|
|
197
|
+
const drop = [...gone];
|
|
198
|
+
for (const row of rows) {
|
|
199
|
+
if (!isRow(row) || gone.has(row.id_hash))
|
|
200
|
+
continue;
|
|
201
|
+
const { id: _id, csrf: _csrf, ...record } = this.#fromRow(row, undefined);
|
|
202
|
+
if (matches(record)) {
|
|
203
|
+
drop.push(row.id_hash);
|
|
204
|
+
gone.add(row.id_hash);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// A read queued before this one may have cached a row it is dropping.
|
|
208
|
+
for (const key of drop)
|
|
209
|
+
this.#drop(key);
|
|
210
|
+
if (drop.length > 0)
|
|
211
|
+
await db.query(`delete from core.dashboard_sessions where id_hash = any($1)`, [drop]);
|
|
212
|
+
}, true);
|
|
213
|
+
}
|
|
214
|
+
return gone.size;
|
|
118
215
|
}
|
|
119
216
|
/**
|
|
120
|
-
* The live session for this cookie, sliding its expiry.
|
|
217
|
+
* The live session for this cookie, from memory only, sliding its expiry.
|
|
121
218
|
*
|
|
122
219
|
* `scope` is where *this request* came from, and it must match where the
|
|
123
220
|
* session was established. A cookie minted on loopback is not honoured when
|
|
@@ -125,22 +222,57 @@ export class SessionStore {
|
|
|
125
222
|
* this machine rather than a credential that got a longer life by accident.
|
|
126
223
|
* (A browser will not send it across hosts in the first place; this is the
|
|
127
224
|
* belt to that suspenders.)
|
|
225
|
+
*
|
|
226
|
+
* The server asks `resolve`, which reads through to the table on a miss.
|
|
128
227
|
*/
|
|
129
228
|
get(sessionId, scope, now = new Date()) {
|
|
130
229
|
if (!sessionId)
|
|
131
230
|
return undefined;
|
|
132
|
-
const
|
|
231
|
+
const key = sessionIdHash(sessionId);
|
|
232
|
+
const session = this.#sessions.get(key);
|
|
133
233
|
if (!session)
|
|
134
234
|
return undefined;
|
|
135
235
|
if (this.#dead(session, now)) {
|
|
136
|
-
this.#
|
|
236
|
+
this.#drop(key);
|
|
237
|
+
if (this.#db)
|
|
238
|
+
void this.#deleteRows([key]);
|
|
137
239
|
return undefined;
|
|
138
240
|
}
|
|
139
241
|
if (session.scope !== scope)
|
|
140
242
|
return undefined;
|
|
141
243
|
session.expiresAt = new Date(now.getTime() + session.ttlMs);
|
|
244
|
+
this.#writeBack(key, session, now);
|
|
142
245
|
return session;
|
|
143
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* `get`, reading through to the table when this process has not seen the
|
|
249
|
+
* cookie yet — after a restart, every session starts here.
|
|
250
|
+
*
|
|
251
|
+
* A row is honoured on exactly the terms a cached session is: past its idle
|
|
252
|
+
* edge or its absolute one it is deleted and refused, and its scope must
|
|
253
|
+
* match. A database that cannot be read is a miss, never an error page.
|
|
254
|
+
*/
|
|
255
|
+
async resolve(sessionId, scope, now = new Date()) {
|
|
256
|
+
if (!sessionId)
|
|
257
|
+
return undefined;
|
|
258
|
+
const key = sessionIdHash(sessionId);
|
|
259
|
+
if (!this.#sessions.has(key) && this.#db && !this.#revoked.has(key)) {
|
|
260
|
+
const db = this.#db;
|
|
261
|
+
await this.#enqueue('reading a session', async () => {
|
|
262
|
+
// Another request with the same cookie may have loaded it meanwhile.
|
|
263
|
+
if (this.#sessions.has(key) || this.#revoked.has(key))
|
|
264
|
+
return;
|
|
265
|
+
const { rows } = await db.query(`select ${COLUMNS} from core.dashboard_sessions where id_hash = $1`, [key]);
|
|
266
|
+
const row = rows[0];
|
|
267
|
+
if (!isRow(row) || row.id_hash !== key || this.#revoked.has(key))
|
|
268
|
+
return;
|
|
269
|
+
this.#sessions.set(key, this.#fromRow(row, sessionId));
|
|
270
|
+
this.#persistedAt.set(key, now.getTime());
|
|
271
|
+
});
|
|
272
|
+
this.#maybeSweep(now);
|
|
273
|
+
}
|
|
274
|
+
return this.get(sessionId, scope, now);
|
|
275
|
+
}
|
|
144
276
|
/**
|
|
145
277
|
* Should this response carry a fresh cookie? Mutating: a `true` answer marks
|
|
146
278
|
* the cookie as issued now, so the caller must actually send it.
|
|
@@ -160,17 +292,103 @@ export class SessionStore {
|
|
|
160
292
|
static csrfMatches(session, presented) {
|
|
161
293
|
return presented !== undefined && equal(session.csrf, presented);
|
|
162
294
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
295
|
+
/**
|
|
296
|
+
* End this session, in memory at once and in the table before the returned
|
|
297
|
+
* promise settles. Callers that revoke for a reason await it.
|
|
298
|
+
*/
|
|
299
|
+
async destroy(sessionId) {
|
|
300
|
+
if (!sessionId)
|
|
301
|
+
return;
|
|
302
|
+
const key = sessionIdHash(sessionId);
|
|
303
|
+
this.#drop(key);
|
|
304
|
+
if (this.#db) {
|
|
305
|
+
this.#revoked.add(key);
|
|
306
|
+
try {
|
|
307
|
+
await this.#deleteRows([key], true);
|
|
308
|
+
}
|
|
309
|
+
finally {
|
|
310
|
+
this.#revoked.delete(key);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/** Every table operation queued so far has settled. A test seam. */
|
|
315
|
+
async flush() {
|
|
316
|
+
await this.#chain;
|
|
166
317
|
}
|
|
167
318
|
get size() {
|
|
168
319
|
return this.#sessions.size;
|
|
169
320
|
}
|
|
321
|
+
#drop(key) {
|
|
322
|
+
this.#sessions.delete(key);
|
|
323
|
+
this.#persistedAt.delete(key);
|
|
324
|
+
}
|
|
325
|
+
#deleteRows(keys, rethrow = false) {
|
|
326
|
+
const db = this.#db;
|
|
327
|
+
if (!db)
|
|
328
|
+
return Promise.resolve();
|
|
329
|
+
return this.#enqueue('revoking a session', () => db.query(`delete from core.dashboard_sessions where id_hash = any($1)`, [keys]), rethrow);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Write the sliding edge back, sparingly: at most once per
|
|
333
|
+
* `SESSION_WRITE_EVERY_MS` (or a tenth of the idle lifetime) per session.
|
|
334
|
+
*/
|
|
335
|
+
#writeBack(key, session, now) {
|
|
336
|
+
const db = this.#db;
|
|
337
|
+
const last = this.#persistedAt.get(key);
|
|
338
|
+
if (!db || last === undefined)
|
|
339
|
+
return;
|
|
340
|
+
const every = Math.min(SESSION_WRITE_EVERY_MS, session.ttlMs / 10);
|
|
341
|
+
if (now.getTime() - last < every)
|
|
342
|
+
return;
|
|
343
|
+
this.#persistedAt.set(key, now.getTime());
|
|
344
|
+
const expiresAt = session.expiresAt;
|
|
345
|
+
void this.#enqueue('renewing a session', () => db.query(`update core.dashboard_sessions set expires_at = greatest(expires_at, $2), last_seen_at = $3 where id_hash = $1`, [key, expiresAt, now]));
|
|
346
|
+
}
|
|
347
|
+
#maybeSweep(now) {
|
|
348
|
+
const db = this.#db;
|
|
349
|
+
if (!db || now.getTime() - this.#sweptAt < SESSION_SWEEP_EVERY_MS)
|
|
350
|
+
return;
|
|
351
|
+
this.#sweptAt = now.getTime();
|
|
352
|
+
void this.#enqueue('sweeping expired sessions', () => db.query(`delete from core.dashboard_sessions where expires_at <= $1 or absolute_expires_at <= $1`, [now]));
|
|
353
|
+
}
|
|
354
|
+
/** A stored row as a session. Its cookie is re-issued on the first response. */
|
|
355
|
+
#fromRow(row, sessionId) {
|
|
356
|
+
const createdAt = new Date(row.created_at);
|
|
357
|
+
return {
|
|
358
|
+
id: sessionId ?? '',
|
|
359
|
+
csrf: sessionId ? csrfFor(sessionId) : '',
|
|
360
|
+
scope: row.scope,
|
|
361
|
+
via: row.via,
|
|
362
|
+
...(row.tailscale_login !== null ? { tailscaleLogin: row.tailscale_login } : {}),
|
|
363
|
+
...(row.tailscale_address !== null ? { tailscaleAddress: row.tailscale_address } : {}),
|
|
364
|
+
...(row.tailscale_name !== null ? { tailscaleName: row.tailscale_name } : {}),
|
|
365
|
+
ttlMs: Number(row.ttl_ms),
|
|
366
|
+
createdAt,
|
|
367
|
+
expiresAt: new Date(row.expires_at),
|
|
368
|
+
...(row.absolute_expires_at !== null ? { absoluteExpiresAt: new Date(row.absolute_expires_at) } : {}),
|
|
369
|
+
// Unknown after a restart, so treated as old: the browser's copy is
|
|
370
|
+
// refreshed on the first response rather than trusted to outlive it.
|
|
371
|
+
cookieIssuedAt: createdAt,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Run one table operation after every earlier one. A failure is logged by a
|
|
376
|
+
* fixed sentence (never a value) and, unless `rethrow`, swallowed: the
|
|
377
|
+
* dashboard keeps working from memory when the database hiccups.
|
|
378
|
+
*/
|
|
379
|
+
#enqueue(what, op, rethrow = false) {
|
|
380
|
+
const run = this.#chain.then(async () => { await op(); });
|
|
381
|
+
this.#chain = run.catch(() => { });
|
|
382
|
+
return run.catch((err) => {
|
|
383
|
+
this.#log(`web: ${what} failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
384
|
+
if (rethrow)
|
|
385
|
+
throw err;
|
|
386
|
+
});
|
|
387
|
+
}
|
|
170
388
|
#prune(now) {
|
|
171
389
|
for (const [key, session] of this.#sessions) {
|
|
172
390
|
if (this.#dead(session, now))
|
|
173
|
-
this.#
|
|
391
|
+
this.#drop(key);
|
|
174
392
|
}
|
|
175
393
|
}
|
|
176
394
|
/** Idle too long, or past the absolute edge no use extends. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/web/sessions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/web/sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AA6B7D,MAAM,CAAC,MAAM,cAAc,GAA2C;IACpE,KAAK,EAAE,oBAAoB;IAC3B,MAAM,EAAE,qBAAqB;CAC9B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAuBrC,SAAS,EAAE,CAAC,KAAK,GAAG,EAAE;IACpB,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,CAAS;IACjC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,SAAiB;IACvC,OAAO,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClG,CAAC;AAmBD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEjD,uDAAuD;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,MAAM,CAAC;AAelD,MAAM,OAAO,GAAG;8CAC8B,CAAC;AAE/C,4EAA4E;AAC5E,SAAS,KAAK,CAAC,KAAc;IAC3B,MAAM,GAAG,GAAG,KAA4B,CAAC;IACzC,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;WAC1C,CAAC,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC;WACjD,CAAC,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,CAAC;WACxE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;AAChG,CAAC;AAED,MAAM,OAAO,YAAY;IACvB,6EAA6E;IACpE,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;IAChD,kEAAkE;IACzD,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,kEAAkE;IACzD,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,IAAI,CAA+B;IACnC,eAAe,CAAS;IACxB,GAAG,CAAwB;IAC3B,IAAI,CAAyB;IACtC,kFAAkF;IAClF,MAAM,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1C,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEpC,YACE,QAA+C,EAAE,EACjD,iBAAyB,wBAAwB,EACjD,UAA+B,EAAE;QAEjC,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,KAAmB;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CACJ,KAAmB,EACnB,MAAY,IAAI,IAAI,EAAE,EACtB,aAAgC,EAAE,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAC/E,UAAiC,EAAE;QAEnC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,EAAE,EAAE,CAAC;QACvB,MAAM,OAAO,GAAY;YACvB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC;YACxB,KAAK;YACL,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,GAAG,CAAC,UAAU,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,GAAG,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,KAAK;YACL,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC;YAC1C,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChH,cAAc,EAAE,GAAG;SACpB,CAAC;QACF,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,KAAK,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CACpD,wCAAwC,OAAO;;0CAEb,EAClC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI;gBAChG,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,CACjH,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,OAA4C;QACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,OAAO,+BAA+B,CAAC,CAAC;gBAClF,MAAM,IAAI,GAAa,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;wBAAE,SAAS;oBACnD,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC1E,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;wBAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAAC,CAAC;gBACzE,CAAC;gBACD,sEAAsE;gBACtE,KAAK,MAAM,GAAG,IAAI,IAAI;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,EAAE,CAAC,KAAK,CAAC,6DAA6D,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7G,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,GAAG,CACD,SAA6B,EAC7B,KAAmB,EACnB,MAAY,IAAI,IAAI,EAAE;QAEtB,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,GAAG;gBAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACX,SAA6B,EAC7B,KAAmB,EACnB,MAAY,IAAI,IAAI,EAAE;QAEtB,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QACjC,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;gBAClD,qEAAqE;gBACrE,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO;gBAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,OAAO,kDAAkD,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,OAAO;gBACzE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAAgB,EAAE,MAAY,IAAI,IAAI,EAAE;QAClD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC7D,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAC7D,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8DAA8D;IAC9D,MAAM,CAAC,aAAa,CAAC,OAAgB;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,yCAAyC;IACzC,MAAM,CAAC,WAAW,CAAC,OAAgB,EAAE,SAA6B;QAChE,OAAO,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACnE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,SAA6B;QACzC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,WAAW,CAAC,IAAc,EAAE,OAAO,GAAG,KAAK;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CACvD,6DAA6D,EAAE,CAAC,IAAI,CAAC,CACtE,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,GAAW,EAAE,OAAgB,EAAE,GAAS;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACnE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,KAAK;YAAE,OAAO;QACzC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,KAAK,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CACrD,gHAAgH,EAChH,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CACtB,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,GAAS;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,sBAAsB;YAAE,OAAO;QAC1E,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAC5D,yFAAyF,EAAE,CAAC,GAAG,CAAC,CACjG,CAAC,CAAC;IACL,CAAC;IAED,gFAAgF;IAChF,QAAQ,CAAC,GAAQ,EAAE,SAA6B;QAC9C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO;YACL,EAAE,EAAE,SAAS,IAAI,EAAE;YACnB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACzC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YACzB,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrG,oEAAoE;YACpE,qEAAqE;YACrE,cAAc,EAAE,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAY,EAAE,EAA0B,EAAE,OAAO,GAAG,KAAK;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtF,IAAI,OAAO;gBAAE,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAS;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,OAAgB,EAAE,GAAS;QAC/B,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9D,OAAO,OAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;IACzG,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACb,KAAK,GAAG,IAAI,GAAG,EAA8C,CAAC;IAC9D,IAAI,CAAS;IACb,SAAS,CAAS;IAE3B,YAAY,MAAc,iBAAiB,EAAE,WAAmB,cAAc;QAC5E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED,4EAA4E;IAC5E,OAAO,CAAC,GAAW,EAAE,MAAY,IAAI,IAAI,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3D,OAAO,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;IAClC,CAAC;IAED,2EAA2E;IAC3E,IAAI,CAAC,GAAW,EAAE,MAAY,IAAI,IAAI,EAAE;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,+EAA+E;IACtE,KAAK,GAAG,IAAI,GAAG,EAAoD,CAAC;IAE7E;;;;;;OAMG;IACH,cAAc,CAAC,GAAW,EAAE,UAAkB,EAAE,MAAY,IAAI,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxF,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QACpC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page a signed-out browser gets instead of an empty 401.
|
|
3
|
+
*
|
|
4
|
+
* An empty 401 on a page load is shown by the browser (and by the installed
|
|
5
|
+
* app) as its own error page — "This site can't be reached" — with nothing
|
|
6
|
+
* saying what to do. A *navigation* that the gate refuses gets this instead:
|
|
7
|
+
* still a 401, still nothing about why beyond the one sentence a person
|
|
8
|
+
* needs, and the way back in. API calls, event streams and anything a script
|
|
9
|
+
* fetched keep the empty 401 (`http.ts`, `sendEmpty`): a caller that is not a
|
|
10
|
+
* person learns exactly one bit, as before.
|
|
11
|
+
*
|
|
12
|
+
* Self-contained on purpose: inline styles carrying the dashboard's tokens
|
|
13
|
+
* (`packages/web/src/tokens.css`), no script, no font, no image, and a
|
|
14
|
+
* Content-Security-Policy that would refuse anything else. It holds no token,
|
|
15
|
+
* no CSRF value and no path on this machine.
|
|
16
|
+
*/
|
|
17
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
18
|
+
/**
|
|
19
|
+
* Is this request a person opening a page, rather than a script asking?
|
|
20
|
+
*
|
|
21
|
+
* `Sec-Fetch-Mode: navigate` is the browser's own word for it. A client that
|
|
22
|
+
* sends no fetch metadata at all (an old browser, an embedded view) is taken
|
|
23
|
+
* at its `Accept`: a page load asks for HTML first. Never under `/api/` or
|
|
24
|
+
* `/stream`, never anything but a GET.
|
|
25
|
+
*/
|
|
26
|
+
export declare function wantsSignedOutPage(req: IncomingMessage, method: string, pathname: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Where "Try again" points: this same page, as a path on this origin. Never
|
|
29
|
+
* `//host` (which a browser reads as another site), never anything but a path.
|
|
30
|
+
*/
|
|
31
|
+
export declare function retryHref(pathname: string, search: string): string;
|
|
32
|
+
export interface SignedOutOptions {
|
|
33
|
+
/** Where "Try again" goes, from `retryHref`. */
|
|
34
|
+
retry: string;
|
|
35
|
+
/**
|
|
36
|
+
* Set when the request came through Tailscale Serve, sign-in through
|
|
37
|
+
* Tailscale is on, and this login is not the one it allows: the refusal's
|
|
38
|
+
* own sentence (`tailscaleRefusalReason`), which never names a login.
|
|
39
|
+
*/
|
|
40
|
+
tailscaleRefusal?: string | undefined;
|
|
41
|
+
}
|
|
42
|
+
/** The page itself. Exported for tests; the server calls `sendSignedOut`. */
|
|
43
|
+
export declare function signedOutPage(options: SignedOutOptions): string;
|
|
44
|
+
/** Answer a refused page load with the signed-out page: 401, HTML, nothing loadable. */
|
|
45
|
+
export declare function sendSignedOut(res: ServerResponse, options: SignedOutOptions, headers?: Record<string, string | string[]>): void;
|
|
46
|
+
//# sourceMappingURL=signed-out.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signed-out.d.ts","sourceRoot":"","sources":["../../src/web/signed-out.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMlG;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAsD/D;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAM,GAAG,IAAI,CAUnI"}
|