@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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mail almost instantly: one IMAP IDLE connection per mailbox, on INBOX.
|
|
3
|
+
*
|
|
4
|
+
* The poll (`inbox-poll.ts`) reads what changed; this file only learns *that*
|
|
5
|
+
* something changed, and asks for that account's poll right away. So nothing
|
|
6
|
+
* here touches a cursor, a row or a flag, and everything the poll guarantees
|
|
7
|
+
* (the quad, the transaction, the dedup key) holds for a poll IDLE started.
|
|
8
|
+
*
|
|
9
|
+
* - **Its own connection.** Never the poll's reader and never the write
|
|
10
|
+
* port's, so a mailbox action (a MOVE, a STORE) cannot break IDLE, and an
|
|
11
|
+
* IDLE that dies costs the poll nothing. INBOX only, opened read-only;
|
|
12
|
+
* Sent stays on the poll.
|
|
13
|
+
* - **Coalesced.** A burst of EXISTS/EXPUNGE/FLAGS starts one timer
|
|
14
|
+
* (`IDLE_DEBOUNCE_MS`, 2s) and the poll runs when it fires. The source
|
|
15
|
+
* never runs two polls of one account at once; a change that lands during
|
|
16
|
+
* a poll asks for one more after it (`inbox-poll.ts`, `runLocked`).
|
|
17
|
+
* - **Re-issued.** imapflow breaks and re-issues IDLE every
|
|
18
|
+
* `IDLE_RESTART_MS` (10 min), inside the 29 minutes a server may allow.
|
|
19
|
+
* - **Reconnected with backoff.** A drop or a failed connect waits 5s, then
|
|
20
|
+
* 10s, 20s … up to 5 minutes; a session that stayed up a minute resets it.
|
|
21
|
+
* After a reconnect the poll runs once, for whatever arrived meanwhile.
|
|
22
|
+
* - **Quiet when it cannot.** A server without IDLE is said once and left to
|
|
23
|
+
* the poll. A refused login records the same `login_failed_at` the poll
|
|
24
|
+
* does ("Password needed") and is not retried until the password changes
|
|
25
|
+
* (Set password, or a poll whose login works again).
|
|
26
|
+
* - **Stopped cleanly.** Plugin taken out, buddi stopping, account removed or
|
|
27
|
+
* turned off: the socket is closed and every timer cleared.
|
|
28
|
+
*
|
|
29
|
+
* While IDLE is live the poll slows to `IDLE_SLOW_POLL_SECONDS` for that
|
|
30
|
+
* account (the safety net); while it is not, the poll keeps its normal period.
|
|
31
|
+
*/
|
|
32
|
+
import type { BuddiHost } from '@buddi/core/plugin';
|
|
33
|
+
import { type EnvLike } from '../config.js';
|
|
34
|
+
import type { ImapIdleFactory } from '../ports.js';
|
|
35
|
+
/** How long a burst of IDLE changes is gathered before the poll runs. */
|
|
36
|
+
export declare const IDLE_DEBOUNCE_MS = 2000;
|
|
37
|
+
/** First reconnect delay; doubled per failure up to `IDLE_BACKOFF_MAX_MS`. */
|
|
38
|
+
export declare const IDLE_BACKOFF_FIRST_MS = 5000;
|
|
39
|
+
export declare const IDLE_BACKOFF_MAX_MS: number;
|
|
40
|
+
/** A session that lived this long counts as healthy: the backoff starts over. */
|
|
41
|
+
export declare const IDLE_STABLE_MS = 60000;
|
|
42
|
+
/** The poll's period for an account whose IDLE is live: the safety net. */
|
|
43
|
+
export declare const IDLE_SLOW_POLL_SECONDS: number;
|
|
44
|
+
export type IdleState =
|
|
45
|
+
/** Opening the connection. */
|
|
46
|
+
'connecting'
|
|
47
|
+
/** Idling: the server tells us. */
|
|
48
|
+
| 'live'
|
|
49
|
+
/** Dropped or could not connect; waiting to try again. */
|
|
50
|
+
| 'retrying'
|
|
51
|
+
/** The server has no IDLE. The poll does it all. */
|
|
52
|
+
| 'unsupported'
|
|
53
|
+
/** The server refused the password. Waits for a new one. */
|
|
54
|
+
| 'refused'
|
|
55
|
+
/** No password could be read. Waits for the account to change. */
|
|
56
|
+
| 'no-password' | 'stopped';
|
|
57
|
+
export interface AccountChange {
|
|
58
|
+
/** The account that changed; absent when a mailbox was added or removed. */
|
|
59
|
+
accountId?: string;
|
|
60
|
+
/** Its password was replaced: reconnect with the new one. */
|
|
61
|
+
password?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** Said by the page tools after add, remove and Set password. */
|
|
64
|
+
export declare function accountChanged(change?: AccountChange): void;
|
|
65
|
+
/** Whether this process has a live IDLE on this account's INBOX right now. */
|
|
66
|
+
export declare function idleLive(accountId: string): boolean;
|
|
67
|
+
export interface IdleWatchersOptions {
|
|
68
|
+
idle: ImapIdleFactory;
|
|
69
|
+
host: BuddiHost;
|
|
70
|
+
/** Ask for this account's poll now. The source serialises it. */
|
|
71
|
+
poll: (accountId: string) => Promise<void>;
|
|
72
|
+
/** Passwords by name instead of the owner's secrets (tests). */
|
|
73
|
+
env?: EnvLike;
|
|
74
|
+
debounceMs?: number;
|
|
75
|
+
backoffFirstMs?: number;
|
|
76
|
+
backoffMaxMs?: number;
|
|
77
|
+
stableMs?: number;
|
|
78
|
+
}
|
|
79
|
+
/** Every enabled account's watcher, kept in step with `email.accounts`. */
|
|
80
|
+
export declare class IdleWatchers {
|
|
81
|
+
#private;
|
|
82
|
+
constructor(opts: IdleWatchersOptions);
|
|
83
|
+
state(accountId: string): IdleState | null;
|
|
84
|
+
/** Start, stop or restart watchers so they match the enabled accounts. Serialised. */
|
|
85
|
+
reconcile(): Promise<void>;
|
|
86
|
+
/** The password changed: drop the connection and open one with the new one. */
|
|
87
|
+
restart(accountId: string): Promise<void>;
|
|
88
|
+
stop(): Promise<void>;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=idle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle.d.ts","sourceRoot":"","sources":["../../src/sources/idle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,KAAK,EAAiB,eAAe,EAAmB,MAAM,aAAa,CAAC;AAEnF,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AACtC,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAC3C,eAAO,MAAM,mBAAmB,QAAa,CAAC;AAC9C,iFAAiF;AACjF,eAAO,MAAM,cAAc,QAAS,CAAC;AACrC,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,QAAU,CAAC;AAE9C,MAAM,MAAM,SAAS;AACnB,8BAA8B;AAC5B,YAAY;AACd,mCAAmC;GACjC,MAAM;AACR,0DAA0D;GACxD,UAAU;AACZ,oDAAoD;GAClD,aAAa;AACf,4DAA4D;GAC1D,SAAS;AACX,kEAAkE;GAChE,aAAa,GACb,SAAS,CAAC;AAMd,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,MAAM,GAAE,aAAkB,GAAG,IAAI,CAQ/D;AAQD,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGnD;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC;IAChB,iEAAiE;IACjE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,gEAAgE;IAChE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2EAA2E;AAC3E,qBAAa,YAAY;;gBAOX,IAAI,EAAE,mBAAmB;IAWrC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI1C,sFAAsF;IACtF,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC1B,+EAA+E;IACzE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { listAccounts } from '../config.js';
|
|
2
|
+
import { mailboxAuth } from '../credentials.js';
|
|
3
|
+
import { isAuthFailure, recordLoginFailure } from '../logins.js';
|
|
4
|
+
/** How long a burst of IDLE changes is gathered before the poll runs. */
|
|
5
|
+
export const IDLE_DEBOUNCE_MS = 2_000;
|
|
6
|
+
/** First reconnect delay; doubled per failure up to `IDLE_BACKOFF_MAX_MS`. */
|
|
7
|
+
export const IDLE_BACKOFF_FIRST_MS = 5_000;
|
|
8
|
+
export const IDLE_BACKOFF_MAX_MS = 5 * 60_000;
|
|
9
|
+
/** A session that lived this long counts as healthy: the backoff starts over. */
|
|
10
|
+
export const IDLE_STABLE_MS = 60_000;
|
|
11
|
+
/** The poll's period for an account whose IDLE is live: the safety net. */
|
|
12
|
+
export const IDLE_SLOW_POLL_SECONDS = 15 * 60;
|
|
13
|
+
const changeListeners = new Set();
|
|
14
|
+
/** Said by the page tools after add, remove and Set password. */
|
|
15
|
+
export function accountChanged(change = {}) {
|
|
16
|
+
for (const listener of changeListeners) {
|
|
17
|
+
try {
|
|
18
|
+
listener(change);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// A watcher's trouble is its own; the tool that changed the row is done.
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/* ------------------------------------------------------------------------ */
|
|
26
|
+
/* What the page reads. */
|
|
27
|
+
/* ------------------------------------------------------------------------ */
|
|
28
|
+
const managers = new Set();
|
|
29
|
+
/** Whether this process has a live IDLE on this account's INBOX right now. */
|
|
30
|
+
export function idleLive(accountId) {
|
|
31
|
+
for (const manager of managers)
|
|
32
|
+
if (manager.state(accountId) === 'live')
|
|
33
|
+
return true;
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
/** Every enabled account's watcher, kept in step with `email.accounts`. */
|
|
37
|
+
export class IdleWatchers {
|
|
38
|
+
#opts;
|
|
39
|
+
#watchers = new Map();
|
|
40
|
+
#unlisten;
|
|
41
|
+
#stopped = false;
|
|
42
|
+
#reconciling = Promise.resolve();
|
|
43
|
+
constructor(opts) {
|
|
44
|
+
this.#opts = opts;
|
|
45
|
+
managers.add(this);
|
|
46
|
+
const listener = (change) => {
|
|
47
|
+
const done = change.password && change.accountId ? this.restart(change.accountId) : this.reconcile();
|
|
48
|
+
done.catch((err) => this.#opts.host.log(`email.idle: ${err instanceof Error ? err.message : String(err)}`));
|
|
49
|
+
};
|
|
50
|
+
changeListeners.add(listener);
|
|
51
|
+
this.#unlisten = () => changeListeners.delete(listener);
|
|
52
|
+
}
|
|
53
|
+
state(accountId) {
|
|
54
|
+
return this.#watchers.get(accountId)?.state ?? null;
|
|
55
|
+
}
|
|
56
|
+
/** Start, stop or restart watchers so they match the enabled accounts. Serialised. */
|
|
57
|
+
reconcile() {
|
|
58
|
+
const next = this.#reconciling.then(() => this.#reconcile()).catch((err) => {
|
|
59
|
+
this.#opts.host.log(`email.idle: ${err instanceof Error ? err.message : String(err)}`);
|
|
60
|
+
});
|
|
61
|
+
this.#reconciling = next;
|
|
62
|
+
return next;
|
|
63
|
+
}
|
|
64
|
+
async #reconcile() {
|
|
65
|
+
if (this.#stopped)
|
|
66
|
+
return;
|
|
67
|
+
const accounts = await listAccounts(this.#opts.host.db);
|
|
68
|
+
if (this.#stopped)
|
|
69
|
+
return;
|
|
70
|
+
const byId = new Map(accounts.map((a) => [a.id, a]));
|
|
71
|
+
for (const [id, watcher] of [...this.#watchers]) {
|
|
72
|
+
const account = byId.get(id);
|
|
73
|
+
const moved = account !== undefined &&
|
|
74
|
+
(account.imapHost !== watcher.account.imapHost || account.imapPort !== watcher.account.imapPort ||
|
|
75
|
+
account.address !== watcher.account.address || account.secretName !== watcher.account.secretName);
|
|
76
|
+
// A refusal is over once a login works again (the poll or Set password
|
|
77
|
+
// cleared `login_failed_at`).
|
|
78
|
+
const unrefused = account !== undefined && watcher.state === 'refused' && !account.loginFailedAt;
|
|
79
|
+
// A password that could not be read may be readable now.
|
|
80
|
+
const unread = watcher.state === 'no-password';
|
|
81
|
+
if (account === undefined || moved || unrefused || unread) {
|
|
82
|
+
this.#watchers.delete(id);
|
|
83
|
+
await watcher.stop();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
watcher.account = account;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const account of accounts) {
|
|
90
|
+
if (this.#stopped || this.#watchers.has(account.id))
|
|
91
|
+
continue;
|
|
92
|
+
// A row whose password the provider refused waits for a new one.
|
|
93
|
+
if (account.loginFailedAt)
|
|
94
|
+
continue;
|
|
95
|
+
const watcher = new AccountWatcher(account, this.#opts);
|
|
96
|
+
this.#watchers.set(account.id, watcher);
|
|
97
|
+
watcher.start();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** The password changed: drop the connection and open one with the new one. */
|
|
101
|
+
async restart(accountId) {
|
|
102
|
+
const watcher = this.#watchers.get(accountId);
|
|
103
|
+
if (watcher) {
|
|
104
|
+
this.#watchers.delete(accountId);
|
|
105
|
+
await watcher.stop();
|
|
106
|
+
}
|
|
107
|
+
await this.reconcile();
|
|
108
|
+
}
|
|
109
|
+
async stop() {
|
|
110
|
+
this.#stopped = true;
|
|
111
|
+
this.#unlisten();
|
|
112
|
+
managers.delete(this);
|
|
113
|
+
await this.#reconciling;
|
|
114
|
+
const all = [...this.#watchers.values()];
|
|
115
|
+
this.#watchers.clear();
|
|
116
|
+
await Promise.all(all.map((w) => w.stop()));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** One account's IDLE connection, its reconnects and its debounce. */
|
|
120
|
+
class AccountWatcher {
|
|
121
|
+
account;
|
|
122
|
+
opts;
|
|
123
|
+
state = 'connecting';
|
|
124
|
+
#session = null;
|
|
125
|
+
#connecting = null;
|
|
126
|
+
#retryTimer = null;
|
|
127
|
+
#debounceTimer = null;
|
|
128
|
+
#attempt = 0;
|
|
129
|
+
#stopped = false;
|
|
130
|
+
constructor(account, opts) {
|
|
131
|
+
this.account = account;
|
|
132
|
+
this.opts = opts;
|
|
133
|
+
}
|
|
134
|
+
start() {
|
|
135
|
+
this.#launch(false);
|
|
136
|
+
}
|
|
137
|
+
/** Connect, never leaving a rejection unhandled: an unexpected error (a database read, the vault) retries with backoff. */
|
|
138
|
+
#launch(reconnect) {
|
|
139
|
+
this.#connecting = this.#connect(reconnect)
|
|
140
|
+
.catch((err) => {
|
|
141
|
+
if (!this.#stopped)
|
|
142
|
+
this.#retry(err);
|
|
143
|
+
})
|
|
144
|
+
.finally(() => {
|
|
145
|
+
this.#connecting = null;
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
#log(line) {
|
|
149
|
+
this.opts.host.log(`email.idle: ${this.account.address}: ${line}`);
|
|
150
|
+
}
|
|
151
|
+
async #connect(reconnect) {
|
|
152
|
+
if (this.#stopped)
|
|
153
|
+
return;
|
|
154
|
+
this.state = 'connecting';
|
|
155
|
+
const auth = await mailboxAuth({ buddi: this.opts.host }, this.account, this.opts.env);
|
|
156
|
+
if (this.#stopped)
|
|
157
|
+
return;
|
|
158
|
+
if (!auth.ok) {
|
|
159
|
+
this.state = 'no-password';
|
|
160
|
+
this.#log(`no IDLE: ${auth.problem.message}; checking on the poll`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
let session;
|
|
164
|
+
try {
|
|
165
|
+
session = await this.opts.idle(this.account, auth.value, () => this.#changed());
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
if (this.#stopped)
|
|
169
|
+
return;
|
|
170
|
+
if (isAuthFailure(err)) {
|
|
171
|
+
this.state = 'refused';
|
|
172
|
+
await recordLoginFailure(this.opts.host.db, this.account.id, err, this.opts.host.clock.now()).catch(() => { });
|
|
173
|
+
this.#log('refused its stored password; IDLE waits for a new one (Settings → Email → Set password)');
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this.#retry(err);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (session === 'unsupported') {
|
|
180
|
+
this.state = 'unsupported';
|
|
181
|
+
this.#log('the server has no IDLE; checking on the poll');
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (this.#stopped) {
|
|
185
|
+
await session.close().catch(() => { });
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this.#session = session;
|
|
189
|
+
this.state = 'live';
|
|
190
|
+
const since = Date.now();
|
|
191
|
+
this.#log(reconnect ? 'IDLE is back' : 'IDLE on INBOX');
|
|
192
|
+
// Mail that arrived while the connection was down is the poll's to find.
|
|
193
|
+
if (reconnect)
|
|
194
|
+
this.#changed();
|
|
195
|
+
void session.ended.then(({ error }) => {
|
|
196
|
+
if (this.#session !== session)
|
|
197
|
+
return;
|
|
198
|
+
this.#session = null;
|
|
199
|
+
if (this.#stopped)
|
|
200
|
+
return;
|
|
201
|
+
if (Date.now() - since >= (this.opts.stableMs ?? IDLE_STABLE_MS))
|
|
202
|
+
this.#attempt = 0;
|
|
203
|
+
this.#retry(error ?? new Error('the server closed the connection'));
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
#retry(err) {
|
|
207
|
+
if (this.#stopped)
|
|
208
|
+
return;
|
|
209
|
+
this.state = 'retrying';
|
|
210
|
+
const first = this.opts.backoffFirstMs ?? IDLE_BACKOFF_FIRST_MS;
|
|
211
|
+
const max = this.opts.backoffMaxMs ?? IDLE_BACKOFF_MAX_MS;
|
|
212
|
+
const delay = Math.min(max, first * 2 ** Math.min(this.#attempt, 20));
|
|
213
|
+
this.#attempt += 1;
|
|
214
|
+
this.#log(`IDLE dropped (${err instanceof Error ? err.message : String(err)}); trying again in ${Math.round(delay / 1000)}s`);
|
|
215
|
+
this.#retryTimer = setTimeout(() => {
|
|
216
|
+
this.#retryTimer = null;
|
|
217
|
+
this.#launch(true);
|
|
218
|
+
}, delay);
|
|
219
|
+
this.#retryTimer.unref?.();
|
|
220
|
+
}
|
|
221
|
+
/** Something changed on INBOX: one poll, at most `debounceMs` from the first change. */
|
|
222
|
+
#changed() {
|
|
223
|
+
if (this.#stopped || this.#debounceTimer)
|
|
224
|
+
return;
|
|
225
|
+
this.#debounceTimer = setTimeout(() => {
|
|
226
|
+
this.#debounceTimer = null;
|
|
227
|
+
if (this.#stopped)
|
|
228
|
+
return;
|
|
229
|
+
this.opts.poll(this.account.id).catch((err) => {
|
|
230
|
+
this.#log(`poll after IDLE failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
231
|
+
});
|
|
232
|
+
}, this.opts.debounceMs ?? IDLE_DEBOUNCE_MS);
|
|
233
|
+
this.#debounceTimer.unref?.();
|
|
234
|
+
}
|
|
235
|
+
async stop() {
|
|
236
|
+
this.#stopped = true;
|
|
237
|
+
this.state = 'stopped';
|
|
238
|
+
if (this.#retryTimer)
|
|
239
|
+
clearTimeout(this.#retryTimer);
|
|
240
|
+
if (this.#debounceTimer)
|
|
241
|
+
clearTimeout(this.#debounceTimer);
|
|
242
|
+
this.#retryTimer = null;
|
|
243
|
+
this.#debounceTimer = null;
|
|
244
|
+
await this.#connecting?.catch(() => { });
|
|
245
|
+
const session = this.#session;
|
|
246
|
+
this.#session = null;
|
|
247
|
+
await session?.close().catch(() => { });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=idle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle.js","sourceRoot":"","sources":["../../src/sources/idle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type EnvLike } from '../config.js';
|
|
2
|
-
import type { ImapClientFactory } from '../ports.js';
|
|
2
|
+
import type { ImapClientFactory, ImapIdleFactory } from '../ports.js';
|
|
3
|
+
import { type IdleWatchersOptions } from './idle.js';
|
|
3
4
|
import type { Source } from '../types.js';
|
|
4
5
|
/** The agent every new message is triaged by. */
|
|
5
6
|
export declare const TRIAGE_AGENT_ID = "mail-triage";
|
|
@@ -58,6 +59,16 @@ export interface InboxPollOptions {
|
|
|
58
59
|
timeoutMs?: number;
|
|
59
60
|
/** Newest-N to bring along on first contact. Overrides `EMAIL_BACKFILL`. */
|
|
60
61
|
backfill?: number;
|
|
62
|
+
/**
|
|
63
|
+
* How IDLE connections are made. With one, the source has a `watch` that
|
|
64
|
+
* keeps one IDLE connection per enabled account on INBOX (`idle.ts`);
|
|
65
|
+
* without one (tests, one-shot callers) it only polls.
|
|
66
|
+
*/
|
|
67
|
+
idle?: ImapIdleFactory;
|
|
68
|
+
/** Debounce and backoff, for tests. */
|
|
69
|
+
idleTuning?: Pick<IdleWatchersOptions, 'debounceMs' | 'backoffFirstMs' | 'backoffMaxMs' | 'stableMs'>;
|
|
70
|
+
/** The poll period, in seconds, for an account whose IDLE is live. Default 15 minutes. */
|
|
71
|
+
slowPollSeconds?: number;
|
|
61
72
|
}
|
|
62
73
|
/**
|
|
63
74
|
* Build the source. The IMAP factory is a parameter, not a default, so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-poll.d.ts","sourceRoot":"","sources":["../../src/sources/inbox-poll.ts"],"names":[],"mappings":"AAkDA,OAAO,
|
|
1
|
+
{"version":3,"file":"inbox-poll.d.ts","sourceRoot":"","sources":["../../src/sources/inbox-poll.ts"],"names":[],"mappings":"AAkDA,OAAO,EAAuD,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAUjG,OAAO,KAAK,EAA6B,iBAAiB,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAChH,OAAO,EAAwC,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAI3F,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAMzD,iDAAiD;AACjD,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,+BAA+B;AAC/B,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,sFAAsF;AACtF,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAEtC,6EAA6E;AAC7E,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,YAAY,mBAAmB,CAAC;AAE7C,iFAAiF;AACjF,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,EAAE,EAAE,MAAM;IAHrB,SAAkB,IAAI,sBAAsB;gBAEjC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM;CAItB;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAC/B,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAUD,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,OAAO,EAAE,iBAAiB,CAAC;IAC3B,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,uCAAuC;IACvC,UAAU,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,gBAAgB,GAAG,cAAc,GAAG,UAAU,CAAC,CAAC;IACtG,0FAA0F;IAC1F,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+TD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAwTpE;AAoeD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,KAAK,CAAC"}
|