@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -73,4 +73,22 @@ export declare function schemaDropProblem(schema: string): string | null;
|
|
|
73
73
|
*/
|
|
74
74
|
export declare function schemasToDrop(sources: readonly MigrationSource[], targetLedger: readonly string[]): string[];
|
|
75
75
|
export declare function loadDatabase(pool: Pool, stageDir: string, opts?: LoadOptions): Promise<LoadReport>;
|
|
76
|
+
/**
|
|
77
|
+
* The foreign keys defined on these tables, each as the statement that adds it
|
|
78
|
+
* back (`pg_get_constraintdef`), so the load can hold them off and restore them
|
|
79
|
+
* exactly. Only keys *on* the loaded tables: keys on other tables that point
|
|
80
|
+
* into them are left alone, and a truncate cascade already emptied those.
|
|
81
|
+
*/
|
|
82
|
+
export declare function foreignKeysOf(client: {
|
|
83
|
+
query: (sql: string, params?: unknown[]) => Promise<{
|
|
84
|
+
rows: Array<Record<string, unknown>>;
|
|
85
|
+
}>;
|
|
86
|
+
}, tables: ReadonlyArray<{
|
|
87
|
+
schema: string;
|
|
88
|
+
table: string;
|
|
89
|
+
}>): Promise<Array<{
|
|
90
|
+
table: string;
|
|
91
|
+
name: string;
|
|
92
|
+
definition: string;
|
|
93
|
+
}>>;
|
|
76
94
|
//# sourceMappingURL=load.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/backup/load.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/backup/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
* A plugin whose package is not installed here cannot have its schema rebuilt.
|
|
23
23
|
* That is reported as "not loaded", never thrown: an owner restoring on a new
|
|
24
24
|
* machine should get their core installation back even if one plugin is still
|
|
25
|
-
* to be reinstalled.
|
|
25
|
+
* to be reinstalled. `restoreBackup` then keeps that schema's data for later
|
|
26
|
+
* (`pending.ts`), and it loads when the plugin is installed.
|
|
26
27
|
*/
|
|
27
28
|
import { createReadStream, existsSync } from 'node:fs';
|
|
28
29
|
import { readdir, readFile } from 'node:fs/promises';
|
|
@@ -377,7 +378,7 @@ export async function loadDatabase(pool, stageDir, opts = {}) {
|
|
|
377
378
|
* exactly. Only keys *on* the loaded tables: keys on other tables that point
|
|
378
379
|
* into them are left alone, and a truncate cascade already emptied those.
|
|
379
380
|
*/
|
|
380
|
-
async function foreignKeysOf(client, tables) {
|
|
381
|
+
export async function foreignKeysOf(client, tables) {
|
|
381
382
|
const { rows } = await client.query(`select n.nspname as schema, c.relname as table, k.conname as name, pg_get_constraintdef(k.oid) as definition
|
|
382
383
|
from pg_constraint k
|
|
383
384
|
join pg_class c on c.oid = k.conrelid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/backup/load.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/backup/load.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { Pool } from 'pg';
|
|
2
|
+
/** `<data>/restore/pending` — one directory per schema below it. */
|
|
3
|
+
export declare function pendingDataRoot(dataDir: string): string;
|
|
4
|
+
export interface PendingTable {
|
|
5
|
+
/** `schema.table`. */
|
|
6
|
+
table: string;
|
|
7
|
+
rows: number;
|
|
8
|
+
/** Why this table is still staged after an attempt (it had rows), or null. */
|
|
9
|
+
kept: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface PendingPluginData {
|
|
12
|
+
schema: string;
|
|
13
|
+
archive: string;
|
|
14
|
+
stagedPath: string;
|
|
15
|
+
tables: PendingTable[];
|
|
16
|
+
rows: number;
|
|
17
|
+
/** The archive's migration filenames for this schema. */
|
|
18
|
+
migrations: string[];
|
|
19
|
+
/** Why the last attempt left it waiting; null before any attempt. */
|
|
20
|
+
reason: string | null;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Copy one schema's part of an unpacked archive into `dest`.
|
|
25
|
+
*
|
|
26
|
+
* `dest` is written fresh (the caller swaps it into place). Every directory is
|
|
27
|
+
* 0700 and every file 0600: this is table data, and on an encrypted archive it
|
|
28
|
+
* is the only plaintext copy outside the database.
|
|
29
|
+
*/
|
|
30
|
+
export declare function writePendingSlice(stageDir: string, schema: string, dest: string): Promise<{
|
|
31
|
+
tables: PendingTable[];
|
|
32
|
+
rows: number;
|
|
33
|
+
migrations: string[];
|
|
34
|
+
}>;
|
|
35
|
+
interface Queryable {
|
|
36
|
+
query: Pool['query'];
|
|
37
|
+
}
|
|
38
|
+
/** Record (or replace) one schema's staged data. */
|
|
39
|
+
export declare function recordPendingPluginData(db: Queryable, entry: Omit<PendingPluginData, 'reason' | 'createdAt'>): Promise<void>;
|
|
40
|
+
/** Everything waiting. An installation that predates the table has nothing. */
|
|
41
|
+
export declare function listPendingPluginData(db: Queryable): Promise<PendingPluginData[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Drop the records whose staged files are not on this machine.
|
|
44
|
+
*
|
|
45
|
+
* The record is a core table, so a backup carries it — but not the files it
|
|
46
|
+
* points at. An archive taken while data was waiting, restored elsewhere,
|
|
47
|
+
* brings rows that name another machine's directories. Returns what it forgot.
|
|
48
|
+
*/
|
|
49
|
+
export declare function forgetUnstagedPluginData(db: Queryable): Promise<PendingPluginData[]>;
|
|
50
|
+
export type PendingLoadOutcome =
|
|
51
|
+
/** Nothing was waiting for this schema. */
|
|
52
|
+
{
|
|
53
|
+
kind: 'none';
|
|
54
|
+
schema: string;
|
|
55
|
+
}
|
|
56
|
+
/** Every table loaded; the record and the staged files are gone. */
|
|
57
|
+
| {
|
|
58
|
+
kind: 'loaded';
|
|
59
|
+
schema: string;
|
|
60
|
+
tables: Array<{
|
|
61
|
+
table: string;
|
|
62
|
+
rows: number;
|
|
63
|
+
}>;
|
|
64
|
+
sequences: number;
|
|
65
|
+
}
|
|
66
|
+
/** Some tables loaded; the rest had rows and stay staged. */
|
|
67
|
+
| {
|
|
68
|
+
kind: 'partial';
|
|
69
|
+
schema: string;
|
|
70
|
+
tables: Array<{
|
|
71
|
+
table: string;
|
|
72
|
+
rows: number;
|
|
73
|
+
}>;
|
|
74
|
+
kept: PendingTable[];
|
|
75
|
+
sequences: number;
|
|
76
|
+
}
|
|
77
|
+
/** Nothing loaded; `reason` says why, and the record says it too. */
|
|
78
|
+
| {
|
|
79
|
+
kind: 'waiting';
|
|
80
|
+
schema: string;
|
|
81
|
+
reason: string;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Whether a table is a settings table the loader may merge into.
|
|
85
|
+
*
|
|
86
|
+
* The rule, kept narrow on purpose: the primary key is exactly one column,
|
|
87
|
+
* named `key`, of a text type (text, varchar, citext), and the table also has
|
|
88
|
+
* a column named `value`. That is the shape every plugin's preferences table
|
|
89
|
+
* has (`finance.preferences (key text primary key, value jsonb)`), and it is
|
|
90
|
+
* a shape where "the same key" means "the same setting". A table keyed by an
|
|
91
|
+
* id — even a text one — is not: two rows with different ids may still be the
|
|
92
|
+
* same thing, so merging could duplicate it, and such a table stays kept
|
|
93
|
+
* aside as before.
|
|
94
|
+
*/
|
|
95
|
+
export declare function isKeyValueTable(db: Queryable, schema: string, table: string): Promise<boolean>;
|
|
96
|
+
/**
|
|
97
|
+
* Load one schema's staged data, if it can be loaded now.
|
|
98
|
+
*
|
|
99
|
+
* Never throws for a reason the owner can act on (the plugin is not migrated
|
|
100
|
+
* far enough, a table is missing, a row fails its foreign key): those leave
|
|
101
|
+
* the data staged, the reason on the record, and come back as `waiting`.
|
|
102
|
+
*/
|
|
103
|
+
export declare function loadPendingPluginData(pool: Pool, schema: string, opts?: {
|
|
104
|
+
log?: (line: string) => void;
|
|
105
|
+
}): Promise<PendingLoadOutcome>;
|
|
106
|
+
/**
|
|
107
|
+
* Load every waiting schema among `schemas` — the ones whose plugin is here.
|
|
108
|
+
* A schema with nothing waiting costs one query.
|
|
109
|
+
*/
|
|
110
|
+
export declare function loadPendingForSchemas(pool: Pool, schemas: readonly string[], opts?: {
|
|
111
|
+
log?: (line: string) => void;
|
|
112
|
+
}): Promise<PendingLoadOutcome[]>;
|
|
113
|
+
export {};
|
|
114
|
+
//# sourceMappingURL=pending.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../src/backup/pending.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin data a restore kept for later.
|
|
3
|
+
*
|
|
4
|
+
* A restore into an installation that does not have a plugin yet — the normal
|
|
5
|
+
* order on a fresh install: restore first, install the plugins after — cannot
|
|
6
|
+
* rebuild that plugin's schema, because the schema comes from the plugin's own
|
|
7
|
+
* migrations. It used to report the rows as "not loaded" and move on, and the
|
|
8
|
+
* plugin installed afterwards came up with empty tables while the owner's data
|
|
9
|
+
* sat in an archive nobody would open again.
|
|
10
|
+
*
|
|
11
|
+
* So that schema's part of the archive is kept: its COPY files and its slices
|
|
12
|
+
* of `tables.json`, `sequences.json` and `migrations.json`, under
|
|
13
|
+
* `<data>/restore/pending/<schema>/`, recorded in `core.pending_plugin_data`.
|
|
14
|
+
* When the plugin is installed and its migrations have run (or at the next
|
|
15
|
+
* start, for a plugin that is already there), `loadPendingPluginData` puts the
|
|
16
|
+
* rows in:
|
|
17
|
+
*
|
|
18
|
+
* - only when the plugin's ledger holds every migration the archive was taken
|
|
19
|
+
* at — data from a newer schema than the installed plugin's is not forced
|
|
20
|
+
* into older tables;
|
|
21
|
+
* - only into tables that exist and are empty — a table with rows is never
|
|
22
|
+
* overwritten; it stays staged and is named, so the owner can decide —
|
|
23
|
+
* except a settings table (see `isKeyValueTable`), which a plugin often
|
|
24
|
+
* seeds with defaults at install: there the backup's keys that are missing
|
|
25
|
+
* are added and every key already present keeps its current value;
|
|
26
|
+
* - with foreign keys held off and added back, which re-checks every row;
|
|
27
|
+
* - sequences moved forward to the archive's, never back;
|
|
28
|
+
* - all in one transaction per schema, with the record updated in it, so a
|
|
29
|
+
* crash at any point either loaded and forgot, or did neither.
|
|
30
|
+
*
|
|
31
|
+
* The staged files are plaintext table data even when the archive was
|
|
32
|
+
* encrypted. They live in the data dir, which holds the database's own files
|
|
33
|
+
* on a packaged install, and are written owner-only (0700 / 0600).
|
|
34
|
+
*/
|
|
35
|
+
import { createReadStream, existsSync } from 'node:fs';
|
|
36
|
+
import { chmod, copyFile, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
37
|
+
import path from 'node:path';
|
|
38
|
+
import { pipeline } from 'node:stream/promises';
|
|
39
|
+
import copyStreams from 'pg-copy-streams';
|
|
40
|
+
import { quote } from './dump.js';
|
|
41
|
+
import { foreignKeysOf } from './load.js';
|
|
42
|
+
import { DB_MIGRATIONS_NAME, DIR_MODE, FILE_MODE, SEQUENCES_NAME, TABLES_NAME, copyFileName, } from './manifest.js';
|
|
43
|
+
const { from: copyFrom } = copyStreams;
|
|
44
|
+
/** `<data>/restore/pending` — one directory per schema below it. */
|
|
45
|
+
export function pendingDataRoot(dataDir) {
|
|
46
|
+
return path.join(dataDir, 'restore', 'pending');
|
|
47
|
+
}
|
|
48
|
+
async function readJson(file) {
|
|
49
|
+
return JSON.parse(await readFile(file, 'utf8'));
|
|
50
|
+
}
|
|
51
|
+
async function writePrivate(file, body) {
|
|
52
|
+
await writeFile(file, body, { mode: FILE_MODE });
|
|
53
|
+
await chmod(file, FILE_MODE);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Copy one schema's part of an unpacked archive into `dest`.
|
|
57
|
+
*
|
|
58
|
+
* `dest` is written fresh (the caller swaps it into place). Every directory is
|
|
59
|
+
* 0700 and every file 0600: this is table data, and on an encrypted archive it
|
|
60
|
+
* is the only plaintext copy outside the database.
|
|
61
|
+
*/
|
|
62
|
+
export async function writePendingSlice(stageDir, schema, dest) {
|
|
63
|
+
const tables = (await readJson(path.join(stageDir, TABLES_NAME))).filter((t) => t.schema === schema);
|
|
64
|
+
const sequences = (await readJson(path.join(stageDir, SEQUENCES_NAME))).filter((s) => s.schema === schema);
|
|
65
|
+
const migrations = await readJson(path.join(stageDir, DB_MIGRATIONS_NAME));
|
|
66
|
+
const plugins = {};
|
|
67
|
+
for (const [key, entry] of Object.entries(migrations.plugins)) {
|
|
68
|
+
if (entry.schema === schema)
|
|
69
|
+
plugins[key] = entry;
|
|
70
|
+
}
|
|
71
|
+
const filenames = Object.values(plugins).flatMap((e) => e.filenames);
|
|
72
|
+
await rm(dest, { recursive: true, force: true });
|
|
73
|
+
await mkdir(path.join(dest, 'db'), { recursive: true, mode: DIR_MODE });
|
|
74
|
+
await chmod(dest, DIR_MODE);
|
|
75
|
+
await chmod(path.join(dest, 'db'), DIR_MODE);
|
|
76
|
+
for (const table of tables) {
|
|
77
|
+
// quote() refuses a name that is not a plain identifier: the archive is
|
|
78
|
+
// the untrusted half, and these names become file names and SQL later.
|
|
79
|
+
quote(table.schema);
|
|
80
|
+
quote(table.table);
|
|
81
|
+
const name = copyFileName(table.schema, table.table);
|
|
82
|
+
await copyFile(path.join(stageDir, name), path.join(dest, name));
|
|
83
|
+
await chmod(path.join(dest, name), FILE_MODE);
|
|
84
|
+
}
|
|
85
|
+
await writePrivate(path.join(dest, TABLES_NAME), `${JSON.stringify(tables, null, 2)}\n`);
|
|
86
|
+
await writePrivate(path.join(dest, SEQUENCES_NAME), `${JSON.stringify(sequences, null, 2)}\n`);
|
|
87
|
+
await writePrivate(path.join(dest, DB_MIGRATIONS_NAME), `${JSON.stringify({ core: [], plugins }, null, 2)}\n`);
|
|
88
|
+
return {
|
|
89
|
+
tables: tables.map((t) => ({ table: `${t.schema}.${t.table}`, rows: t.rows, kept: null })),
|
|
90
|
+
rows: tables.reduce((sum, t) => sum + t.rows, 0),
|
|
91
|
+
migrations: filenames,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Record (or replace) one schema's staged data. */
|
|
95
|
+
export async function recordPendingPluginData(db, entry) {
|
|
96
|
+
await db.query(`insert into core.pending_plugin_data (schema, archive, staged_path, tables, rows, migrations, reason)
|
|
97
|
+
values ($1, $2, $3, $4::jsonb, $5, $6::jsonb, null)
|
|
98
|
+
on conflict (schema) do update set
|
|
99
|
+
archive = excluded.archive, staged_path = excluded.staged_path, tables = excluded.tables,
|
|
100
|
+
rows = excluded.rows, migrations = excluded.migrations, reason = null,
|
|
101
|
+
created_at = now(), updated_at = now()`, [
|
|
102
|
+
entry.schema,
|
|
103
|
+
entry.archive,
|
|
104
|
+
entry.stagedPath,
|
|
105
|
+
JSON.stringify(entry.tables),
|
|
106
|
+
entry.rows,
|
|
107
|
+
JSON.stringify(entry.migrations),
|
|
108
|
+
]);
|
|
109
|
+
}
|
|
110
|
+
function fromRow(row) {
|
|
111
|
+
return {
|
|
112
|
+
schema: row.schema,
|
|
113
|
+
archive: row.archive,
|
|
114
|
+
stagedPath: row.staged_path,
|
|
115
|
+
tables: row.tables,
|
|
116
|
+
rows: Number(row.rows),
|
|
117
|
+
migrations: row.migrations,
|
|
118
|
+
reason: row.reason,
|
|
119
|
+
createdAt: row.created_at.toISOString(),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** Everything waiting. An installation that predates the table has nothing. */
|
|
123
|
+
export async function listPendingPluginData(db) {
|
|
124
|
+
try {
|
|
125
|
+
const { rows } = await db.query(`select schema, archive, staged_path, tables, rows::text as rows, migrations, reason, created_at
|
|
126
|
+
from core.pending_plugin_data order by schema`);
|
|
127
|
+
return rows.map(fromRow);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Drop the records whose staged files are not on this machine.
|
|
135
|
+
*
|
|
136
|
+
* The record is a core table, so a backup carries it — but not the files it
|
|
137
|
+
* points at. An archive taken while data was waiting, restored elsewhere,
|
|
138
|
+
* brings rows that name another machine's directories. Returns what it forgot.
|
|
139
|
+
*/
|
|
140
|
+
export async function forgetUnstagedPluginData(db) {
|
|
141
|
+
const gone = (await listPendingPluginData(db)).filter((p) => !existsSync(p.stagedPath));
|
|
142
|
+
if (gone.length > 0) {
|
|
143
|
+
await db.query(`delete from core.pending_plugin_data where schema = any($1)`, [gone.map((g) => g.schema)]);
|
|
144
|
+
}
|
|
145
|
+
return gone;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Whether a table is a settings table the loader may merge into.
|
|
149
|
+
*
|
|
150
|
+
* The rule, kept narrow on purpose: the primary key is exactly one column,
|
|
151
|
+
* named `key`, of a text type (text, varchar, citext), and the table also has
|
|
152
|
+
* a column named `value`. That is the shape every plugin's preferences table
|
|
153
|
+
* has (`finance.preferences (key text primary key, value jsonb)`), and it is
|
|
154
|
+
* a shape where "the same key" means "the same setting". A table keyed by an
|
|
155
|
+
* id — even a text one — is not: two rows with different ids may still be the
|
|
156
|
+
* same thing, so merging could duplicate it, and such a table stays kept
|
|
157
|
+
* aside as before.
|
|
158
|
+
*/
|
|
159
|
+
export async function isKeyValueTable(db, schema, table) {
|
|
160
|
+
const qualified = `${quote(schema)}.${quote(table)}`;
|
|
161
|
+
const { rows: pk } = await db.query(`select a.attname as name, t.typname as type
|
|
162
|
+
from pg_index i
|
|
163
|
+
join pg_attribute a on a.attrelid = i.indrelid and a.attnum = any(i.indkey)
|
|
164
|
+
join pg_type t on t.oid = a.atttypid
|
|
165
|
+
where i.indrelid = $1::regclass and i.indisprimary`, [qualified]);
|
|
166
|
+
if (pk.length !== 1)
|
|
167
|
+
return false;
|
|
168
|
+
const only = pk[0];
|
|
169
|
+
if (only.name !== 'key' || !['text', 'varchar', 'citext', 'bpchar'].includes(only.type))
|
|
170
|
+
return false;
|
|
171
|
+
const { rows: value } = await db.query(`select 1 from information_schema.columns where table_schema = $1 and table_name = $2 and column_name = 'value'`, [schema, table]);
|
|
172
|
+
return value.length > 0;
|
|
173
|
+
}
|
|
174
|
+
/** The next value a sequence hands out, as a bigint. */
|
|
175
|
+
function nextOf(lastValue, isCalled) {
|
|
176
|
+
return BigInt(lastValue) + (isCalled ? 1n : 0n);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Load one schema's staged data, if it can be loaded now.
|
|
180
|
+
*
|
|
181
|
+
* Never throws for a reason the owner can act on (the plugin is not migrated
|
|
182
|
+
* far enough, a table is missing, a row fails its foreign key): those leave
|
|
183
|
+
* the data staged, the reason on the record, and come back as `waiting`.
|
|
184
|
+
*/
|
|
185
|
+
export async function loadPendingPluginData(pool, schema, opts = {}) {
|
|
186
|
+
const log = opts.log ?? ((line) => console.error(line));
|
|
187
|
+
const pending = (await listPendingPluginData(pool)).find((p) => p.schema === schema);
|
|
188
|
+
if (pending === undefined)
|
|
189
|
+
return { kind: 'none', schema };
|
|
190
|
+
const wait = async (reason) => {
|
|
191
|
+
await pool
|
|
192
|
+
.query(`update core.pending_plugin_data set reason = $2, updated_at = now() where schema = $1`, [schema, reason])
|
|
193
|
+
.catch(() => { });
|
|
194
|
+
log(`restore: ${schema} data from ${pending.archive} is still waiting — ${reason}`);
|
|
195
|
+
return { kind: 'waiting', schema, reason };
|
|
196
|
+
};
|
|
197
|
+
if (!existsSync(pending.stagedPath)) {
|
|
198
|
+
return wait(`its staged files are not at ${pending.stagedPath} any more`);
|
|
199
|
+
}
|
|
200
|
+
/* The migration level --------------------------------------------- */
|
|
201
|
+
const { rows: ledgerRows } = await pool.query(`select filename from core.migrations where schema = $1`, [schema]);
|
|
202
|
+
const ledger = new Set(ledgerRows.map((r) => r.filename));
|
|
203
|
+
const behind = pending.migrations.filter((f) => !ledger.has(f));
|
|
204
|
+
if (behind.length > 0) {
|
|
205
|
+
return wait(ledger.size === 0
|
|
206
|
+
? 'the plugin that owns it has not migrated here yet'
|
|
207
|
+
: `the installed plugin is at an older schema than the backup (missing ${behind.join(', ')}); update it`);
|
|
208
|
+
}
|
|
209
|
+
let tables;
|
|
210
|
+
let sequences;
|
|
211
|
+
try {
|
|
212
|
+
tables = await readJson(path.join(pending.stagedPath, TABLES_NAME));
|
|
213
|
+
sequences = await readJson(path.join(pending.stagedPath, SEQUENCES_NAME));
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
return wait(`its staged files could not be read: ${err instanceof Error ? err.message : String(err)}`);
|
|
217
|
+
}
|
|
218
|
+
const client = await pool.connect();
|
|
219
|
+
try {
|
|
220
|
+
await client.query('begin');
|
|
221
|
+
// The row lock is what makes an install and a start racing load once: the
|
|
222
|
+
// second waits here, then finds the record gone.
|
|
223
|
+
const locked = await client.query(`select tables from core.pending_plugin_data where schema = $1 for update`, [schema]);
|
|
224
|
+
const lockedRow = locked.rows[0];
|
|
225
|
+
if (lockedRow === undefined) {
|
|
226
|
+
await client.query('rollback');
|
|
227
|
+
return { kind: 'none', schema };
|
|
228
|
+
}
|
|
229
|
+
// The record, read under the lock, says which tables are still waiting: a
|
|
230
|
+
// table an earlier attempt loaded is gone from it even if the slice's own
|
|
231
|
+
// list on disk was not rewritten.
|
|
232
|
+
const waitingNames = new Set(lockedRow.tables.map((t) => t.table));
|
|
233
|
+
tables = tables.filter((t) => t.schema === schema && waitingNames.has(`${t.schema}.${t.table}`));
|
|
234
|
+
await client.query(`savepoint replica_mode`);
|
|
235
|
+
try {
|
|
236
|
+
// Triggers off where the role may, so a plugin's insert triggers do not
|
|
237
|
+
// rewrite restored rows. Foreign keys are handled below either way.
|
|
238
|
+
await client.query(`set local session_replication_role = replica`);
|
|
239
|
+
await client.query(`release savepoint replica_mode`);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
await client.query(`rollback to savepoint replica_mode`);
|
|
243
|
+
await client.query(`release savepoint replica_mode`);
|
|
244
|
+
}
|
|
245
|
+
const loadable = [];
|
|
246
|
+
const mergeable = [];
|
|
247
|
+
const kept = [];
|
|
248
|
+
const missing = [];
|
|
249
|
+
for (const table of tables) {
|
|
250
|
+
const qualified = `${quote(table.schema)}.${quote(table.table)}`;
|
|
251
|
+
const name = `${table.schema}.${table.table}`;
|
|
252
|
+
const { rows: cols } = await client.query(`select column_name from information_schema.columns where table_schema = $1 and table_name = $2`, [table.schema, table.table]);
|
|
253
|
+
if (cols.length === 0) {
|
|
254
|
+
missing.push(`${name} does not exist in the installed plugin`);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
const have = new Set(cols.map((c) => c.column_name));
|
|
258
|
+
const absent = table.columns.filter((c) => !have.has(c));
|
|
259
|
+
if (absent.length > 0) {
|
|
260
|
+
missing.push(`${name} has no column ${absent.join(', ')} in the installed plugin`);
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
const { rows: counted } = await client.query(`select count(*)::text as n from ${qualified}`);
|
|
264
|
+
const existing = Number(counted[0]?.n ?? '0');
|
|
265
|
+
if (existing > 0 && (await isKeyValueTable(client, table.schema, table.table))) {
|
|
266
|
+
mergeable.push(table);
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
if (existing > 0) {
|
|
270
|
+
kept.push({
|
|
271
|
+
table: name,
|
|
272
|
+
rows: table.rows,
|
|
273
|
+
kept: `${name} already has ${existing} row(s), so the backup's ${table.rows} were not loaded over them`,
|
|
274
|
+
});
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
loadable.push(table);
|
|
278
|
+
}
|
|
279
|
+
if (missing.length > 0) {
|
|
280
|
+
await client.query('rollback');
|
|
281
|
+
return wait(missing.join('; '));
|
|
282
|
+
}
|
|
283
|
+
const heldKeys = loadable.length > 0 ? await foreignKeysOf(client, loadable) : [];
|
|
284
|
+
for (const key of heldKeys) {
|
|
285
|
+
await client.query(`alter table ${key.table} drop constraint ${quote(key.name)}`);
|
|
286
|
+
}
|
|
287
|
+
for (const table of loadable) {
|
|
288
|
+
const qualified = `${quote(table.schema)}.${quote(table.table)}`;
|
|
289
|
+
const columns = table.columns.map(quote).join(', ');
|
|
290
|
+
const sink = client.query(copyFrom(`copy ${qualified} (${columns}) from stdin`));
|
|
291
|
+
await pipeline(createReadStream(path.join(pending.stagedPath, copyFileName(table.schema, table.table))), sink);
|
|
292
|
+
}
|
|
293
|
+
// Adding a key back validates every row: data that does not fit fails
|
|
294
|
+
// here, inside the transaction, and nothing was loaded.
|
|
295
|
+
for (const key of heldKeys) {
|
|
296
|
+
await client.query(`alter table ${key.table} add constraint ${quote(key.name)} ${key.definition}`);
|
|
297
|
+
}
|
|
298
|
+
// A settings table that already has rows: the backup's rows go into a
|
|
299
|
+
// scratch copy first, then only the keys that are missing are added. A
|
|
300
|
+
// key on both sides keeps the value it has now — the plugin's default or
|
|
301
|
+
// whatever the owner set since — rather than being overwritten.
|
|
302
|
+
const merged = [];
|
|
303
|
+
for (const [i, table] of mergeable.entries()) {
|
|
304
|
+
const qualified = `${quote(table.schema)}.${quote(table.table)}`;
|
|
305
|
+
const scratch = quote(`buddi_merge_${i}`);
|
|
306
|
+
const columns = table.columns.map(quote).join(', ');
|
|
307
|
+
await client.query(`create temp table ${scratch} (like ${qualified} including defaults) on commit drop`);
|
|
308
|
+
const sink = client.query(copyFrom(`copy ${scratch} (${columns}) from stdin`));
|
|
309
|
+
await pipeline(createReadStream(path.join(pending.stagedPath, copyFileName(table.schema, table.table))), sink);
|
|
310
|
+
const added = await client.query(`insert into ${qualified} (${columns}) overriding system value
|
|
311
|
+
select ${columns} from ${scratch} on conflict (key) do nothing`);
|
|
312
|
+
merged.push({ table: `${table.schema}.${table.table}`, rows: added.rowCount ?? 0 });
|
|
313
|
+
}
|
|
314
|
+
// Forward only. A table that was kept may already have handed out ids
|
|
315
|
+
// past the archive's, and moving its sequence back would collide.
|
|
316
|
+
let reset = 0;
|
|
317
|
+
if (loadable.length > 0) {
|
|
318
|
+
for (const sequence of sequences) {
|
|
319
|
+
if (sequence.schema !== schema)
|
|
320
|
+
continue;
|
|
321
|
+
const qualified = `${quote(sequence.schema)}.${quote(sequence.name)}`;
|
|
322
|
+
const exists = await client.query(`select to_regclass($1)::text as r`, [qualified]);
|
|
323
|
+
if (!exists.rows[0]?.r)
|
|
324
|
+
continue;
|
|
325
|
+
const current = await client.query(`select last_value::text as last_value, is_called from ${qualified}`);
|
|
326
|
+
const now = current.rows[0];
|
|
327
|
+
if (now && nextOf(now.last_value, now.is_called) >= nextOf(sequence.lastValue, sequence.isCalled))
|
|
328
|
+
continue;
|
|
329
|
+
await client.query(`select setval($1::regclass, $2::bigint, $3)`, [
|
|
330
|
+
qualified,
|
|
331
|
+
sequence.lastValue,
|
|
332
|
+
sequence.isCalled,
|
|
333
|
+
]);
|
|
334
|
+
reset += 1;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
const done = [...loadable.map((t) => ({ table: `${t.schema}.${t.table}`, rows: t.rows })), ...merged];
|
|
338
|
+
if (kept.length === 0) {
|
|
339
|
+
await client.query(`delete from core.pending_plugin_data where schema = $1`, [schema]);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
await client.query(`update core.pending_plugin_data
|
|
343
|
+
set tables = $2::jsonb, rows = $3, reason = $4, updated_at = now()
|
|
344
|
+
where schema = $1`, [
|
|
345
|
+
schema,
|
|
346
|
+
JSON.stringify(kept),
|
|
347
|
+
kept.reduce((sum, t) => sum + t.rows, 0),
|
|
348
|
+
`${kept.length} table(s) already had rows and were left staged`,
|
|
349
|
+
]);
|
|
350
|
+
}
|
|
351
|
+
await client.query('commit');
|
|
352
|
+
const rows = done.reduce((sum, t) => sum + t.rows, 0);
|
|
353
|
+
if (kept.length === 0) {
|
|
354
|
+
await rm(pending.stagedPath, { recursive: true, force: true }).catch(() => { });
|
|
355
|
+
const mergedNote = merged.length > 0 ? `; merged into ${merged.map((m) => m.table).join(', ')}, keeping the keys already set` : '';
|
|
356
|
+
log(`restore: loaded ${schema} data from ${pending.archive} — ${done.length} table(s), ${rows} row(s)${mergedNote}`);
|
|
357
|
+
return { kind: 'loaded', schema, tables: done, sequences: reset };
|
|
358
|
+
}
|
|
359
|
+
// The loaded tables' files are not needed again; the list on disk follows
|
|
360
|
+
// the record, though the record is what is read.
|
|
361
|
+
for (const table of [...loadable, ...mergeable]) {
|
|
362
|
+
await rm(path.join(pending.stagedPath, copyFileName(table.schema, table.table)), { force: true }).catch(() => { });
|
|
363
|
+
}
|
|
364
|
+
const keptNames = new Set(kept.map((k) => k.table));
|
|
365
|
+
await writePrivate(path.join(pending.stagedPath, TABLES_NAME), `${JSON.stringify(tables.filter((t) => keptNames.has(`${t.schema}.${t.table}`)), null, 2)}\n`).catch(() => { });
|
|
366
|
+
log(`restore: loaded ${done.length} ${schema} table(s) (${rows} row(s)) from ${pending.archive}; ` +
|
|
367
|
+
`left staged at ${pending.stagedPath} because they already had rows: ${kept.map((k) => k.table).join(', ')}`);
|
|
368
|
+
return { kind: 'partial', schema, tables: done, kept, sequences: reset };
|
|
369
|
+
}
|
|
370
|
+
catch (err) {
|
|
371
|
+
await client.query('rollback').catch(() => { });
|
|
372
|
+
return wait(`loading it failed and nothing was changed: ${err instanceof Error ? err.message : String(err)}`);
|
|
373
|
+
}
|
|
374
|
+
finally {
|
|
375
|
+
client.release();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Load every waiting schema among `schemas` — the ones whose plugin is here.
|
|
380
|
+
* A schema with nothing waiting costs one query.
|
|
381
|
+
*/
|
|
382
|
+
export async function loadPendingForSchemas(pool, schemas, opts = {}) {
|
|
383
|
+
const waiting = new Set((await listPendingPluginData(pool)).map((p) => p.schema));
|
|
384
|
+
const outcomes = [];
|
|
385
|
+
for (const schema of schemas) {
|
|
386
|
+
if (!waiting.has(schema))
|
|
387
|
+
continue;
|
|
388
|
+
outcomes.push(await loadPendingPluginData(pool, schema, opts));
|
|
389
|
+
}
|
|
390
|
+
return outcomes;
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=pending.js.map
|