@withbuddi/buddi 0.1.0-pre.16 → 0.1.0-pre.18
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/LICENSE +202 -0
- package/README.md +27 -26
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/args.d.ts +9 -3
- package/node_modules/@buddi/cli/dist/args.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/args.js +25 -89
- package/node_modules/@buddi/cli/dist/args.js.map +1 -1
- package/node_modules/@buddi/cli/dist/backup/index.d.ts +2 -0
- package/node_modules/@buddi/cli/dist/backup/index.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/backup/index.js +13 -4
- package/node_modules/@buddi/cli/dist/backup/index.js.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts +94 -0
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -0
- package/node_modules/@buddi/cli/dist/commands.js +993 -0
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -0
- package/node_modules/@buddi/cli/dist/index.d.ts +3 -1
- package/node_modules/@buddi/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/index.js +3 -1
- package/node_modules/@buddi/cli/dist/index.js.map +1 -1
- package/node_modules/@buddi/cli/dist/jobs-cmd.d.ts +4 -0
- package/node_modules/@buddi/cli/dist/jobs-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/jobs-cmd.js +26 -7
- package/node_modules/@buddi/cli/dist/jobs-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/dist/main.d.ts +9 -2
- package/node_modules/@buddi/cli/dist/main.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/main.js +246 -30
- package/node_modules/@buddi/cli/dist/main.js.map +1 -1
- package/node_modules/@buddi/cli/dist/mcp/gateway-client.d.ts +1 -1
- package/node_modules/@buddi/cli/dist/mcp/gateway-client.js +1 -1
- package/node_modules/@buddi/cli/dist/mcp/secrets.d.ts +1 -1
- package/node_modules/@buddi/cli/dist/mcp/secrets.js +1 -1
- package/node_modules/@buddi/cli/dist/mcp/server.d.ts +1 -1
- package/node_modules/@buddi/cli/dist/mcp/server.js +1 -1
- package/node_modules/@buddi/cli/dist/mcp/tools.d.ts +1 -1
- package/node_modules/@buddi/cli/dist/mcp/tools.js +1 -1
- package/node_modules/@buddi/cli/dist/paths.d.ts +8 -5
- package/node_modules/@buddi/cli/dist/paths.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/paths.js +36 -10
- package/node_modules/@buddi/cli/dist/paths.js.map +1 -1
- package/node_modules/@buddi/cli/dist/status.d.ts +70 -0
- package/node_modules/@buddi/cli/dist/status.d.ts.map +1 -0
- package/node_modules/@buddi/cli/dist/status.js +122 -0
- package/node_modules/@buddi/cli/dist/status.js.map +1 -0
- package/node_modules/@buddi/cli/dist/style.d.ts +13 -0
- package/node_modules/@buddi/cli/dist/style.d.ts.map +1 -0
- package/node_modules/@buddi/cli/dist/style.js +10 -0
- package/node_modules/@buddi/cli/dist/style.js.map +1 -0
- package/node_modules/@buddi/cli/dist/telegram-cmd.d.ts +1 -1
- package/node_modules/@buddi/cli/dist/telegram-cmd.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/telegram-cmd.js +23 -6
- package/node_modules/@buddi/cli/dist/telegram-cmd.js.map +1 -1
- package/node_modules/@buddi/cli/dist/vault-cmd.js +3 -3
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/actions/approvals.d.ts +0 -17
- package/node_modules/@buddi/core/dist/actions/approvals.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/actions/approvals.js +21 -0
- package/node_modules/@buddi/core/dist/actions/approvals.js.map +1 -1
- package/node_modules/@buddi/core/dist/actions/execute.d.ts +1 -1
- package/node_modules/@buddi/core/dist/actions/jobs.d.ts +1 -1
- package/node_modules/@buddi/core/dist/actions/types.js +1 -1
- package/node_modules/@buddi/core/dist/agents/provider-from-env.d.ts +1 -1
- package/node_modules/@buddi/core/dist/agents/provider-from-env.js +1 -1
- package/node_modules/@buddi/core/dist/agents/skills.js +1 -1
- package/node_modules/@buddi/core/dist/goals/types.d.ts +1 -1
- package/node_modules/@buddi/core/dist/goals/types.js +1 -1
- package/node_modules/@buddi/core/dist/host/build.d.ts +15 -1
- package/node_modules/@buddi/core/dist/host/build.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/build.js +101 -3
- package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/http.d.ts +1 -1
- package/node_modules/@buddi/core/dist/host/http.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/http.js +1 -1
- package/node_modules/@buddi/core/dist/host/http.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts +92 -5
- 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/echoes.d.ts +1 -1
- package/node_modules/@buddi/core/dist/learning/echoes.js +1 -1
- package/node_modules/@buddi/core/dist/learning/policies.d.ts +1 -1
- package/node_modules/@buddi/core/dist/learning/skill-files.js +1 -1
- package/node_modules/@buddi/core/dist/learning/types.d.ts +2 -2
- package/node_modules/@buddi/core/dist/notifications/channels.d.ts +37 -0
- package/node_modules/@buddi/core/dist/notifications/channels.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/channels.js +87 -0
- package/node_modules/@buddi/core/dist/notifications/channels.js.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/index.d.ts +5 -0
- package/node_modules/@buddi/core/dist/notifications/index.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/index.js +5 -0
- package/node_modules/@buddi/core/dist/notifications/index.js.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/notify.d.ts +35 -0
- package/node_modules/@buddi/core/dist/notifications/notify.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/notify.js +262 -0
- package/node_modules/@buddi/core/dist/notifications/notify.js.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/store.d.ts +48 -0
- package/node_modules/@buddi/core/dist/notifications/store.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/store.js +207 -0
- package/node_modules/@buddi/core/dist/notifications/store.js.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/types.d.ts +136 -0
- package/node_modules/@buddi/core/dist/notifications/types.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/types.js +5 -0
- package/node_modules/@buddi/core/dist/notifications/types.js.map +1 -0
- package/node_modules/@buddi/core/dist/owner.js +1 -1
- package/node_modules/@buddi/core/dist/pages/__fixtures__/demo.js +1 -1
- package/node_modules/@buddi/core/dist/pages.d.ts +4 -4
- package/node_modules/@buddi/core/dist/pages.js +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +2 -2
- 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/search.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/search.js +1 -1
- package/node_modules/@buddi/core/dist/plugin/url.js +1 -1
- package/node_modules/@buddi/core/dist/plugin/uses.d.ts +2 -2
- package/node_modules/@buddi/core/dist/plugin/uses.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/uses.js +5 -1
- package/node_modules/@buddi/core/dist/plugin/uses.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.d.ts +2 -2
- package/node_modules/@buddi/core/dist/plugin/version.js +2 -2
- package/node_modules/@buddi/core/dist/provider.d.ts +1 -1
- package/node_modules/@buddi/core/dist/provider.js +1 -1
- package/node_modules/@buddi/core/dist/queue/retry-policy.d.ts +1 -1
- package/node_modules/@buddi/core/dist/queue/retry-policy.js +1 -1
- package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/registry.js +4 -5
- package/node_modules/@buddi/core/dist/registry.js.map +1 -1
- package/node_modules/@buddi/core/dist/reminders/store.d.ts +1 -1
- package/node_modules/@buddi/core/dist/reminders/store.js +1 -1
- package/node_modules/@buddi/core/dist/reminders/types.d.ts +1 -1
- package/node_modules/@buddi/core/dist/reminders/types.js +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.d.ts +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js +1 -1
- package/node_modules/@buddi/core/dist/secrets/destinations.d.ts +1 -1
- package/node_modules/@buddi/core/dist/secrets/scrub.js +1 -1
- package/node_modules/@buddi/core/dist/secrets/settings.js +1 -1
- package/node_modules/@buddi/core/dist/secrets/store.d.ts +1 -1
- package/node_modules/@buddi/core/dist/secrets/totp.js +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.d.ts +1 -1
- package/node_modules/@buddi/core/dist/sentinels/types.d.ts +1 -1
- package/node_modules/@buddi/core/dist/testing/index.d.ts +1 -1
- package/node_modules/@buddi/core/dist/testing/index.js +1 -1
- package/node_modules/@buddi/core/dist/time.d.ts +12 -0
- package/node_modules/@buddi/core/dist/time.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/time.js +46 -0
- package/node_modules/@buddi/core/dist/time.js.map +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +10 -10
- package/node_modules/@buddi/core/dist/vault/file.js +2 -2
- package/node_modules/@buddi/core/dist/vault/keychain.js +1 -1
- package/node_modules/@buddi/core/dist/vault/keychain.js.map +1 -1
- package/node_modules/@buddi/core/dist/vault/resolve.d.ts +3 -3
- package/node_modules/@buddi/core/dist/vault/resolve.js +3 -3
- package/node_modules/@buddi/core/dist/vault/types.d.ts +1 -1
- package/node_modules/@buddi/core/dist/vault/types.js +2 -2
- package/node_modules/@buddi/core/migrations/003_owner_surfaces.sql +1 -1
- package/node_modules/@buddi/core/migrations/005_artifacts.sql +1 -1
- package/node_modules/@buddi/core/migrations/009_queue.sql +1 -2
- package/node_modules/@buddi/core/migrations/010_actions.sql +1 -1
- package/node_modules/@buddi/core/migrations/043_owner_notifications.sql +77 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js +5 -6
- package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learned-skills.js +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learning-digest.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learning-digest.js +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learning.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/agents/learning.js +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.d.ts +25 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents-cli.js +91 -27
- package/node_modules/@buddi/gateway/dist/agents-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/bootstrap.js +10 -2
- package/node_modules/@buddi/gateway/dist/bootstrap.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/channels/local-notification.d.ts +39 -0
- package/node_modules/@buddi/gateway/dist/channels/local-notification.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/channels/local-notification.js +154 -0
- package/node_modules/@buddi/gateway/dist/channels/local-notification.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/chat/approvals.d.ts +3 -3
- package/node_modules/@buddi/gateway/dist/chat/approvals.js +3 -3
- package/node_modules/@buddi/gateway/dist/cli.d.ts +14 -0
- package/node_modules/@buddi/gateway/dist/cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/cli.js +208 -37
- package/node_modules/@buddi/gateway/dist/cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/db-ready.d.ts +2 -1
- package/node_modules/@buddi/gateway/dist/db-ready.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/db-ready.js +3 -2
- package/node_modules/@buddi/gateway/dist/db-ready.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.d.ts +4 -1
- package/node_modules/@buddi/gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/index.js +5 -1
- package/node_modules/@buddi/gateway/dist/index.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.js +1 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.js +10 -1
- package/node_modules/@buddi/gateway/dist/missions/agent-run.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts +16 -2
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +6 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals-page.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals-page.js +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/missions/goals.js +1 -1
- package/node_modules/@buddi/gateway/dist/missions/watcher-mail.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/missions/watcher-mail.js +1 -1
- package/node_modules/@buddi/gateway/dist/missions-cli.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/missions-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions-cli.js +53 -8
- package/node_modules/@buddi/gateway/dist/missions-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/owner-notify.d.ts +43 -0
- package/node_modules/@buddi/gateway/dist/owner-notify.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/owner-notify.js +87 -0
- package/node_modules/@buddi/gateway/dist/owner-notify.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/owner-secrets.d.ts +3 -3
- package/node_modules/@buddi/gateway/dist/owner-secrets.js +3 -3
- package/node_modules/@buddi/gateway/dist/plugins/load.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/load.js +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/scaffold.js +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +2 -2
- package/node_modules/@buddi/gateway/dist/plugins/stage.js +1 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +3 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.js +11 -4
- package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/provider-accounts.js +1 -1
- package/node_modules/@buddi/gateway/dist/provider-accounts.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/reminders-cli.d.ts +3 -1
- package/node_modules/@buddi/gateway/dist/reminders-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/reminders-cli.js +21 -2
- package/node_modules/@buddi/gateway/dist/reminders-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +62 -15
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/approvals.d.ts +3 -3
- package/node_modules/@buddi/gateway/dist/telegram/approvals.js +3 -3
- package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts +30 -0
- package/node_modules/@buddi/gateway/dist/telegram/channel.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/channel.js +49 -0
- package/node_modules/@buddi/gateway/dist/telegram/channel.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +4 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/config.js +3 -3
- package/node_modules/@buddi/gateway/dist/web/http.d.ts +16 -3
- package/node_modules/@buddi/gateway/dist/web/http.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/http.js +39 -3
- package/node_modules/@buddi/gateway/dist/web/http.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/notifications.d.ts +36 -0
- package/node_modules/@buddi/gateway/dist/web/notifications.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/notifications.js +63 -0
- package/node_modules/@buddi/gateway/dist/web/notifications.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/onboarding.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/pages.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.js +3 -3
- package/node_modules/@buddi/gateway/dist/web/secrets.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +37 -25
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/version.d.ts +1 -0
- package/node_modules/@buddi/gateway/dist/web/version.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/version.js +2 -1
- package/node_modules/@buddi/gateway/dist/web/version.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.js +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/install/dist/environment.d.ts +29 -0
- package/node_modules/@buddi/install/dist/environment.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/environment.js +50 -1
- package/node_modules/@buddi/install/dist/environment.js.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts +3 -1
- package/node_modules/@buddi/install/dist/launcher.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/launcher.js +93 -12
- package/node_modules/@buddi/install/dist/launcher.js.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.d.ts +16 -3
- package/node_modules/@buddi/install/dist/upgrade.d.ts.map +1 -1
- package/node_modules/@buddi/install/dist/upgrade.js +21 -7
- package/node_modules/@buddi/install/dist/upgrade.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts +35 -2
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.js +36 -12
- package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/delegate.js +1 -1
- package/node_modules/@buddi/runtime/dist/loop.d.ts +13 -1
- package/node_modules/@buddi/runtime/dist/loop.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/loop.js +70 -3
- package/node_modules/@buddi/runtime/dist/loop.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/openai.js +9 -6
- package/node_modules/@buddi/runtime/dist/openai.js.map +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/index.d.ts +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.d.ts +34 -8
- package/node_modules/@buddi/tool-browser/dist/availability.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/availability.js +44 -5
- package/node_modules/@buddi/tool-browser/dist/availability.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +7 -6
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/host.d.ts +3 -1
- package/node_modules/@buddi/tool-browser/dist/host.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/host.js +5 -1
- package/node_modules/@buddi/tool-browser/dist/host.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/secrets.d.ts +2 -2
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +4 -4
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-email/dist/attachments/safety.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/attachments/safety.js +1 -1
- package/node_modules/@buddi/tool-email/dist/channel.d.ts +43 -0
- package/node_modules/@buddi/tool-email/dist/channel.d.ts.map +1 -0
- package/node_modules/@buddi/tool-email/dist/channel.js +99 -0
- package/node_modules/@buddi/tool-email/dist/channel.js.map +1 -0
- package/node_modules/@buddi/tool-email/dist/credentials.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/dates.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/dates.js +1 -1
- package/node_modules/@buddi/tool-email/dist/drafts.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/drafts.js +1 -1
- package/node_modules/@buddi/tool-email/dist/index.d.ts +1 -0
- package/node_modules/@buddi/tool-email/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/index.js +13 -6
- package/node_modules/@buddi/tool-email/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/mail.d.ts +4 -4
- package/node_modules/@buddi/tool-email/dist/mail.js +4 -4
- package/node_modules/@buddi/tool-email/dist/pages/accounts.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/pages/descriptors.js +7 -7
- 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 +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/index.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/policies-tools.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/pages/policies-tools.js +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/pages/queries.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/pages/queries.js +3 -3
- package/node_modules/@buddi/tool-email/dist/pages/queries.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/phrases.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/phrases.js +2 -2
- package/node_modules/@buddi/tool-email/dist/policies/gate.js +2 -2
- package/node_modules/@buddi/tool-email/dist/policies/learn.d.ts +3 -3
- package/node_modules/@buddi/tool-email/dist/policies/learn.js +1 -1
- package/node_modules/@buddi/tool-email/dist/policies/learned.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/ports.d.ts +4 -4
- package/node_modules/@buddi/tool-email/dist/ports.js +1 -1
- package/node_modules/@buddi/tool-email/dist/rows.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/rows.js +1 -1
- package/node_modules/@buddi/tool-email/dist/search.js +2 -2
- package/node_modules/@buddi/tool-email/dist/sentinels/date-stated.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/index.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/index.js +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/index.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/promised-reply.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/receipt-or-bill.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/suspicious-sender.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/unanswered-by-them.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/waiting-on-me.d.ts +2 -2
- package/node_modules/@buddi/tool-email/dist/sentinels/waiting-on-me.d.ts.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sentinels/waiting-on-me.js +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js +5 -5
- package/node_modules/@buddi/tool-email/dist/sources/inbox-poll.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/retention.js +1 -1
- package/node_modules/@buddi/tool-email/dist/sources/retention.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/suspicions-store.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/attachments.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/attachments.js +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/drafts.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/drafts.js +3 -3
- package/node_modules/@buddi/tool-email/dist/tools/drafts.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/policies.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/send.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/send.js +4 -4
- package/node_modules/@buddi/tool-email/dist/tools/send.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/settings.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/tools/triage.js +2 -2
- package/node_modules/@buddi/tool-email/dist/watchers.d.ts +1 -1
- package/node_modules/@buddi/tool-email/dist/watchers.js +1 -1
- package/node_modules/@buddi/tool-email/dist/watchers.js.map +1 -1
- package/node_modules/@buddi/tool-email/migrations/001_email.sql +3 -2
- package/node_modules/@buddi/tool-email/package.json +2 -1
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/index.js +1 -1
- package/node_modules/@buddi/tool-memory/migrations/001_memory.sql +1 -1
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-web/dist/guard.d.ts +1 -1
- package/node_modules/@buddi/tool-web/dist/guard.js +1 -1
- package/package.json +6 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/args.d.ts +9 -3
- package/packages/cli/dist/args.d.ts.map +1 -1
- package/packages/cli/dist/args.js +25 -89
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/backup/index.d.ts +2 -0
- package/packages/cli/dist/backup/index.d.ts.map +1 -1
- package/packages/cli/dist/backup/index.js +13 -4
- package/packages/cli/dist/backup/index.js.map +1 -1
- package/packages/cli/dist/commands.d.ts +94 -0
- package/packages/cli/dist/commands.d.ts.map +1 -0
- package/packages/cli/dist/commands.js +993 -0
- package/packages/cli/dist/commands.js.map +1 -0
- package/packages/cli/dist/index.d.ts +3 -1
- package/packages/cli/dist/index.d.ts.map +1 -1
- package/packages/cli/dist/index.js +3 -1
- package/packages/cli/dist/index.js.map +1 -1
- package/packages/cli/dist/jobs-cmd.d.ts +4 -0
- package/packages/cli/dist/jobs-cmd.d.ts.map +1 -1
- package/packages/cli/dist/jobs-cmd.js +26 -7
- package/packages/cli/dist/jobs-cmd.js.map +1 -1
- package/packages/cli/dist/main.d.ts +9 -2
- package/packages/cli/dist/main.d.ts.map +1 -1
- package/packages/cli/dist/main.js +246 -30
- package/packages/cli/dist/main.js.map +1 -1
- package/packages/cli/dist/mcp/gateway-client.d.ts +1 -1
- package/packages/cli/dist/mcp/gateway-client.js +1 -1
- package/packages/cli/dist/mcp/secrets.d.ts +1 -1
- package/packages/cli/dist/mcp/secrets.js +1 -1
- package/packages/cli/dist/mcp/server.d.ts +1 -1
- package/packages/cli/dist/mcp/server.js +1 -1
- package/packages/cli/dist/mcp/tools.d.ts +1 -1
- package/packages/cli/dist/mcp/tools.js +1 -1
- package/packages/cli/dist/paths.d.ts +8 -5
- package/packages/cli/dist/paths.d.ts.map +1 -1
- package/packages/cli/dist/paths.js +36 -10
- package/packages/cli/dist/paths.js.map +1 -1
- package/packages/cli/dist/status.d.ts +70 -0
- package/packages/cli/dist/status.d.ts.map +1 -0
- package/packages/cli/dist/status.js +122 -0
- package/packages/cli/dist/status.js.map +1 -0
- package/packages/cli/dist/style.d.ts +13 -0
- package/packages/cli/dist/style.d.ts.map +1 -0
- package/packages/cli/dist/style.js +10 -0
- package/packages/cli/dist/style.js.map +1 -0
- package/packages/cli/dist/telegram-cmd.d.ts +1 -1
- package/packages/cli/dist/telegram-cmd.d.ts.map +1 -1
- package/packages/cli/dist/telegram-cmd.js +23 -6
- package/packages/cli/dist/telegram-cmd.js.map +1 -1
- package/packages/cli/dist/vault-cmd.js +3 -3
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/actions/approvals.d.ts +0 -17
- package/packages/core/dist/actions/approvals.d.ts.map +1 -1
- package/packages/core/dist/actions/approvals.js +21 -0
- package/packages/core/dist/actions/approvals.js.map +1 -1
- package/packages/core/dist/actions/execute.d.ts +1 -1
- package/packages/core/dist/actions/jobs.d.ts +1 -1
- package/packages/core/dist/actions/types.js +1 -1
- package/packages/core/dist/agents/provider-from-env.d.ts +1 -1
- package/packages/core/dist/agents/provider-from-env.js +1 -1
- package/packages/core/dist/agents/skills.js +1 -1
- package/packages/core/dist/goals/types.d.ts +1 -1
- package/packages/core/dist/goals/types.js +1 -1
- package/packages/core/dist/host/build.d.ts +15 -1
- package/packages/core/dist/host/build.d.ts.map +1 -1
- package/packages/core/dist/host/build.js +101 -3
- package/packages/core/dist/host/build.js.map +1 -1
- package/packages/core/dist/host/http.d.ts +1 -1
- package/packages/core/dist/host/http.d.ts.map +1 -1
- package/packages/core/dist/host/http.js +1 -1
- package/packages/core/dist/host/http.js.map +1 -1
- package/packages/core/dist/host/types.d.ts +92 -5
- 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/echoes.d.ts +1 -1
- package/packages/core/dist/learning/echoes.js +1 -1
- package/packages/core/dist/learning/policies.d.ts +1 -1
- package/packages/core/dist/learning/skill-files.js +1 -1
- package/packages/core/dist/learning/types.d.ts +2 -2
- package/packages/core/dist/notifications/channels.d.ts +37 -0
- package/packages/core/dist/notifications/channels.d.ts.map +1 -0
- package/packages/core/dist/notifications/channels.js +87 -0
- package/packages/core/dist/notifications/channels.js.map +1 -0
- package/packages/core/dist/notifications/index.d.ts +5 -0
- package/packages/core/dist/notifications/index.d.ts.map +1 -0
- package/packages/core/dist/notifications/index.js +5 -0
- package/packages/core/dist/notifications/index.js.map +1 -0
- package/packages/core/dist/notifications/notify.d.ts +35 -0
- package/packages/core/dist/notifications/notify.d.ts.map +1 -0
- package/packages/core/dist/notifications/notify.js +262 -0
- package/packages/core/dist/notifications/notify.js.map +1 -0
- package/packages/core/dist/notifications/store.d.ts +48 -0
- package/packages/core/dist/notifications/store.d.ts.map +1 -0
- package/packages/core/dist/notifications/store.js +207 -0
- package/packages/core/dist/notifications/store.js.map +1 -0
- package/packages/core/dist/notifications/types.d.ts +136 -0
- package/packages/core/dist/notifications/types.d.ts.map +1 -0
- package/packages/core/dist/notifications/types.js +5 -0
- package/packages/core/dist/notifications/types.js.map +1 -0
- package/packages/core/dist/owner.js +1 -1
- package/packages/core/dist/pages/__fixtures__/demo.js +1 -1
- package/packages/core/dist/pages.d.ts +4 -4
- package/packages/core/dist/pages.js +1 -1
- package/packages/core/dist/plugin/index.d.ts +2 -2
- 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/search.d.ts +1 -1
- package/packages/core/dist/plugin/search.js +1 -1
- package/packages/core/dist/plugin/url.js +1 -1
- package/packages/core/dist/plugin/uses.d.ts +2 -2
- package/packages/core/dist/plugin/uses.d.ts.map +1 -1
- package/packages/core/dist/plugin/uses.js +5 -1
- package/packages/core/dist/plugin/uses.js.map +1 -1
- package/packages/core/dist/plugin/version.d.ts +2 -2
- package/packages/core/dist/plugin/version.js +2 -2
- package/packages/core/dist/provider.d.ts +1 -1
- package/packages/core/dist/provider.js +1 -1
- package/packages/core/dist/queue/retry-policy.d.ts +1 -1
- package/packages/core/dist/queue/retry-policy.js +1 -1
- package/packages/core/dist/registry.d.ts.map +1 -1
- package/packages/core/dist/registry.js +4 -5
- package/packages/core/dist/registry.js.map +1 -1
- package/packages/core/dist/reminders/store.d.ts +1 -1
- package/packages/core/dist/reminders/store.js +1 -1
- package/packages/core/dist/reminders/types.d.ts +1 -1
- package/packages/core/dist/reminders/types.js +1 -1
- package/packages/core/dist/secrets/approval.d.ts +1 -1
- package/packages/core/dist/secrets/approval.js +1 -1
- package/packages/core/dist/secrets/destinations.d.ts +1 -1
- package/packages/core/dist/secrets/scrub.js +1 -1
- package/packages/core/dist/secrets/settings.js +1 -1
- package/packages/core/dist/secrets/store.d.ts +1 -1
- package/packages/core/dist/secrets/totp.js +1 -1
- package/packages/core/dist/secrets/use.d.ts +1 -1
- package/packages/core/dist/sentinels/types.d.ts +1 -1
- package/packages/core/dist/testing/index.d.ts +1 -1
- package/packages/core/dist/testing/index.js +1 -1
- package/packages/core/dist/time.d.ts +12 -0
- package/packages/core/dist/time.d.ts.map +1 -1
- package/packages/core/dist/time.js +46 -0
- package/packages/core/dist/time.js.map +1 -1
- package/packages/core/dist/tools.d.ts +10 -10
- package/packages/core/dist/vault/file.js +2 -2
- package/packages/core/dist/vault/keychain.js +1 -1
- package/packages/core/dist/vault/keychain.js.map +1 -1
- package/packages/core/dist/vault/resolve.d.ts +3 -3
- package/packages/core/dist/vault/resolve.js +3 -3
- package/packages/core/dist/vault/types.d.ts +1 -1
- package/packages/core/dist/vault/types.js +2 -2
- package/packages/core/migrations/003_owner_surfaces.sql +1 -1
- package/packages/core/migrations/005_artifacts.sql +1 -1
- package/packages/core/migrations/009_queue.sql +1 -2
- package/packages/core/migrations/010_actions.sql +1 -1
- package/packages/core/migrations/043_owner_notifications.sql +77 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalog.js +5 -6
- package/packages/gateway/dist/agents/catalog.js.map +1 -1
- package/packages/gateway/dist/agents/learned-skills.js +1 -1
- package/packages/gateway/dist/agents/learning-digest.d.ts +1 -1
- package/packages/gateway/dist/agents/learning-digest.js +1 -1
- package/packages/gateway/dist/agents/learning.d.ts +1 -1
- package/packages/gateway/dist/agents/learning.js +1 -1
- package/packages/gateway/dist/agents-cli.d.ts +25 -1
- package/packages/gateway/dist/agents-cli.d.ts.map +1 -1
- package/packages/gateway/dist/agents-cli.js +91 -27
- package/packages/gateway/dist/agents-cli.js.map +1 -1
- package/packages/gateway/dist/bootstrap.d.ts.map +1 -1
- package/packages/gateway/dist/bootstrap.js +10 -2
- package/packages/gateway/dist/bootstrap.js.map +1 -1
- package/packages/gateway/dist/channels/local-notification.d.ts +39 -0
- package/packages/gateway/dist/channels/local-notification.d.ts.map +1 -0
- package/packages/gateway/dist/channels/local-notification.js +154 -0
- package/packages/gateway/dist/channels/local-notification.js.map +1 -0
- package/packages/gateway/dist/chat/approvals.d.ts +3 -3
- package/packages/gateway/dist/chat/approvals.js +3 -3
- package/packages/gateway/dist/cli.d.ts +14 -0
- package/packages/gateway/dist/cli.d.ts.map +1 -1
- package/packages/gateway/dist/cli.js +208 -37
- package/packages/gateway/dist/cli.js.map +1 -1
- package/packages/gateway/dist/db-ready.d.ts +2 -1
- package/packages/gateway/dist/db-ready.d.ts.map +1 -1
- package/packages/gateway/dist/db-ready.js +3 -2
- package/packages/gateway/dist/db-ready.js.map +1 -1
- package/packages/gateway/dist/index.d.ts +4 -1
- package/packages/gateway/dist/index.d.ts.map +1 -1
- package/packages/gateway/dist/index.js +5 -1
- package/packages/gateway/dist/index.js.map +1 -1
- package/packages/gateway/dist/mcp/requests.d.ts +1 -1
- package/packages/gateway/dist/mcp/requests.js +1 -1
- package/packages/gateway/dist/missions/agent-run.d.ts.map +1 -1
- package/packages/gateway/dist/missions/agent-run.js +10 -1
- package/packages/gateway/dist/missions/agent-run.js.map +1 -1
- package/packages/gateway/dist/missions/execute.d.ts +16 -2
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +6 -1
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/goals-page.d.ts +1 -1
- package/packages/gateway/dist/missions/goals-page.js +1 -1
- package/packages/gateway/dist/missions/goals.d.ts +1 -1
- package/packages/gateway/dist/missions/goals.js +1 -1
- package/packages/gateway/dist/missions/watcher-mail.d.ts +1 -1
- package/packages/gateway/dist/missions/watcher-mail.js +1 -1
- package/packages/gateway/dist/missions-cli.d.ts +2 -0
- package/packages/gateway/dist/missions-cli.d.ts.map +1 -1
- package/packages/gateway/dist/missions-cli.js +53 -8
- package/packages/gateway/dist/missions-cli.js.map +1 -1
- package/packages/gateway/dist/owner-notify.d.ts +43 -0
- package/packages/gateway/dist/owner-notify.d.ts.map +1 -0
- package/packages/gateway/dist/owner-notify.js +87 -0
- package/packages/gateway/dist/owner-notify.js.map +1 -0
- package/packages/gateway/dist/owner-secrets.d.ts +3 -3
- package/packages/gateway/dist/owner-secrets.js +3 -3
- package/packages/gateway/dist/plugins/load.d.ts +1 -1
- package/packages/gateway/dist/plugins/load.js +1 -1
- package/packages/gateway/dist/plugins/scaffold.js +1 -1
- package/packages/gateway/dist/plugins/stage.d.ts +2 -2
- package/packages/gateway/dist/plugins/stage.js +1 -1
- package/packages/gateway/dist/plugins-cli.d.ts +3 -1
- package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/packages/gateway/dist/plugins-cli.js +11 -4
- package/packages/gateway/dist/plugins-cli.js.map +1 -1
- package/packages/gateway/dist/provider-accounts.js +1 -1
- package/packages/gateway/dist/provider-accounts.js.map +1 -1
- package/packages/gateway/dist/reminders-cli.d.ts +3 -1
- package/packages/gateway/dist/reminders-cli.d.ts.map +1 -1
- package/packages/gateway/dist/reminders-cli.js +21 -2
- package/packages/gateway/dist/reminders-cli.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts +2 -0
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +62 -15
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/telegram/approvals.d.ts +3 -3
- package/packages/gateway/dist/telegram/approvals.js +3 -3
- package/packages/gateway/dist/telegram/channel.d.ts +30 -0
- package/packages/gateway/dist/telegram/channel.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/channel.js +49 -0
- package/packages/gateway/dist/telegram/channel.js.map +1 -0
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +4 -1
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/web/config.js +3 -3
- package/packages/gateway/dist/web/http.d.ts +16 -3
- package/packages/gateway/dist/web/http.d.ts.map +1 -1
- package/packages/gateway/dist/web/http.js +39 -3
- package/packages/gateway/dist/web/http.js.map +1 -1
- package/packages/gateway/dist/web/notifications.d.ts +36 -0
- package/packages/gateway/dist/web/notifications.d.ts.map +1 -0
- package/packages/gateway/dist/web/notifications.js +63 -0
- package/packages/gateway/dist/web/notifications.js.map +1 -0
- package/packages/gateway/dist/web/onboarding.d.ts +1 -1
- package/packages/gateway/dist/web/onboarding.js +1 -1
- package/packages/gateway/dist/web/pages.js +1 -1
- package/packages/gateway/dist/web/read.js +3 -3
- package/packages/gateway/dist/web/secrets.d.ts +1 -1
- package/packages/gateway/dist/web/server.d.ts +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +37 -25
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/version.d.ts +1 -0
- package/packages/gateway/dist/web/version.d.ts.map +1 -1
- package/packages/gateway/dist/web/version.js +2 -1
- package/packages/gateway/dist/web/version.js.map +1 -1
- package/packages/gateway/dist/web/write.js +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/install/dist/environment.d.ts +29 -0
- package/packages/install/dist/environment.d.ts.map +1 -1
- package/packages/install/dist/environment.js +50 -1
- package/packages/install/dist/environment.js.map +1 -1
- package/packages/install/dist/launcher.d.ts +3 -1
- package/packages/install/dist/launcher.d.ts.map +1 -1
- package/packages/install/dist/launcher.js +93 -12
- package/packages/install/dist/launcher.js.map +1 -1
- package/packages/install/dist/upgrade.d.ts +16 -3
- package/packages/install/dist/upgrade.d.ts.map +1 -1
- package/packages/install/dist/upgrade.js +21 -7
- package/packages/install/dist/upgrade.js.map +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/anthropic.d.ts +35 -2
- package/packages/runtime/dist/anthropic.d.ts.map +1 -1
- package/packages/runtime/dist/anthropic.js +36 -12
- package/packages/runtime/dist/anthropic.js.map +1 -1
- package/packages/runtime/dist/delegate.js +1 -1
- package/packages/runtime/dist/loop.d.ts +13 -1
- package/packages/runtime/dist/loop.d.ts.map +1 -1
- package/packages/runtime/dist/loop.js +70 -3
- package/packages/runtime/dist/loop.js.map +1 -1
- package/packages/runtime/dist/openai.d.ts.map +1 -1
- package/packages/runtime/dist/openai.js +9 -6
- package/packages/runtime/dist/openai.js.map +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/artifacts/dist/index.d.ts +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/availability.d.ts +34 -8
- package/packages/tools/browser/dist/availability.d.ts.map +1 -1
- package/packages/tools/browser/dist/availability.js +44 -5
- package/packages/tools/browser/dist/availability.js.map +1 -1
- package/packages/tools/browser/dist/controller.d.ts +2 -2
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +7 -6
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/extension.d.ts +1 -1
- package/packages/tools/browser/dist/extension.js +1 -1
- package/packages/tools/browser/dist/host.d.ts +3 -1
- package/packages/tools/browser/dist/host.d.ts.map +1 -1
- package/packages/tools/browser/dist/host.js +5 -1
- package/packages/tools/browser/dist/host.js.map +1 -1
- package/packages/tools/browser/dist/index.d.ts +1 -1
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +1 -1
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/secrets.d.ts +2 -2
- package/packages/tools/browser/dist/service.d.ts +4 -4
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +1 -1
- package/packages/tools/browser/dist/types.d.ts +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/email/dist/attachments/safety.d.ts +1 -1
- package/packages/tools/email/dist/attachments/safety.js +1 -1
- package/packages/tools/email/dist/channel.d.ts +43 -0
- package/packages/tools/email/dist/channel.d.ts.map +1 -0
- package/packages/tools/email/dist/channel.js +99 -0
- package/packages/tools/email/dist/channel.js.map +1 -0
- package/packages/tools/email/dist/credentials.d.ts +1 -1
- package/packages/tools/email/dist/dates.d.ts +1 -1
- package/packages/tools/email/dist/dates.js +1 -1
- package/packages/tools/email/dist/drafts.d.ts +2 -2
- package/packages/tools/email/dist/drafts.js +1 -1
- package/packages/tools/email/dist/index.d.ts +1 -0
- package/packages/tools/email/dist/index.d.ts.map +1 -1
- package/packages/tools/email/dist/index.js +13 -6
- package/packages/tools/email/dist/index.js.map +1 -1
- package/packages/tools/email/dist/mail.d.ts +4 -4
- package/packages/tools/email/dist/mail.js +4 -4
- package/packages/tools/email/dist/pages/accounts.d.ts +2 -2
- package/packages/tools/email/dist/pages/descriptors.js +7 -7
- package/packages/tools/email/dist/pages/descriptors.js.map +1 -1
- package/packages/tools/email/dist/pages/drafts-tools.d.ts +1 -1
- package/packages/tools/email/dist/pages/index.d.ts +1 -1
- package/packages/tools/email/dist/pages/policies-tools.d.ts +2 -2
- package/packages/tools/email/dist/pages/policies-tools.js +1 -1
- package/packages/tools/email/dist/pages/queries.d.ts +2 -2
- package/packages/tools/email/dist/pages/queries.d.ts.map +1 -1
- package/packages/tools/email/dist/pages/queries.js +3 -3
- package/packages/tools/email/dist/pages/queries.js.map +1 -1
- package/packages/tools/email/dist/phrases.d.ts +2 -2
- package/packages/tools/email/dist/phrases.js +2 -2
- package/packages/tools/email/dist/policies/gate.js +2 -2
- package/packages/tools/email/dist/policies/learn.d.ts +3 -3
- package/packages/tools/email/dist/policies/learn.js +1 -1
- package/packages/tools/email/dist/policies/learned.d.ts +1 -1
- package/packages/tools/email/dist/ports.d.ts +4 -4
- package/packages/tools/email/dist/ports.js +1 -1
- package/packages/tools/email/dist/rows.d.ts +1 -1
- package/packages/tools/email/dist/rows.js +1 -1
- package/packages/tools/email/dist/search.js +2 -2
- package/packages/tools/email/dist/sentinels/date-stated.d.ts +1 -1
- package/packages/tools/email/dist/sentinels/index.d.ts +1 -1
- package/packages/tools/email/dist/sentinels/index.js +1 -1
- package/packages/tools/email/dist/sentinels/index.js.map +1 -1
- package/packages/tools/email/dist/sentinels/promised-reply.d.ts +1 -1
- package/packages/tools/email/dist/sentinels/receipt-or-bill.d.ts +1 -1
- package/packages/tools/email/dist/sentinels/suspicious-sender.d.ts +1 -1
- package/packages/tools/email/dist/sentinels/unanswered-by-them.d.ts +1 -1
- package/packages/tools/email/dist/sentinels/waiting-on-me.d.ts +2 -2
- package/packages/tools/email/dist/sentinels/waiting-on-me.d.ts.map +1 -1
- package/packages/tools/email/dist/sentinels/waiting-on-me.js +1 -1
- package/packages/tools/email/dist/sources/inbox-poll.js +5 -5
- package/packages/tools/email/dist/sources/inbox-poll.js.map +1 -1
- package/packages/tools/email/dist/sources/retention.js +1 -1
- package/packages/tools/email/dist/sources/retention.js.map +1 -1
- package/packages/tools/email/dist/suspicions-store.d.ts +1 -1
- package/packages/tools/email/dist/tools/attachments.d.ts +1 -1
- package/packages/tools/email/dist/tools/attachments.js +1 -1
- package/packages/tools/email/dist/tools/drafts.d.ts +1 -1
- package/packages/tools/email/dist/tools/drafts.js +3 -3
- package/packages/tools/email/dist/tools/drafts.js.map +1 -1
- package/packages/tools/email/dist/tools/policies.d.ts +1 -1
- package/packages/tools/email/dist/tools/send.d.ts +1 -1
- package/packages/tools/email/dist/tools/send.js +4 -4
- package/packages/tools/email/dist/tools/send.js.map +1 -1
- package/packages/tools/email/dist/tools/settings.d.ts +1 -1
- package/packages/tools/email/dist/tools/triage.js +2 -2
- package/packages/tools/email/dist/watchers.d.ts +1 -1
- package/packages/tools/email/dist/watchers.js +1 -1
- package/packages/tools/email/dist/watchers.js.map +1 -1
- package/packages/tools/email/migrations/001_email.sql +3 -2
- package/packages/tools/email/package.json +2 -1
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/index.js +1 -1
- package/packages/tools/memory/migrations/001_memory.sql +1 -1
- package/packages/tools/web/dist/.tsbuildinfo +1 -1
- package/packages/tools/web/dist/guard.d.ts +1 -1
- package/packages/tools/web/dist/guard.js +1 -1
- package/packages/web/dist/assets/dm-mono-latin-400-normal--0xN8mdc.woff +0 -0
- package/packages/web/dist/assets/dm-mono-latin-400-normal-4GdczIuU.woff2 +0 -0
- package/packages/web/dist/assets/dm-mono-latin-500-normal-CN8Miw6E.woff +0 -0
- package/packages/web/dist/assets/dm-mono-latin-500-normal-DRMDZjhP.woff2 +0 -0
- package/packages/web/dist/assets/dm-mono-latin-ext-400-normal-1aZr6b2b.woff +0 -0
- package/packages/web/dist/assets/dm-mono-latin-ext-400-normal-C2zvOubV.woff2 +0 -0
- package/packages/web/dist/assets/dm-mono-latin-ext-500-normal-BtRyHRi6.woff2 +0 -0
- package/packages/web/dist/assets/dm-mono-latin-ext-500-normal-Dw3M13d8.woff +0 -0
- package/packages/web/dist/assets/dm-sans-latin-ext-standard-italic-DNX9AbKj.woff2 +0 -0
- package/packages/web/dist/assets/dm-sans-latin-ext-standard-normal-oos9povj.woff2 +0 -0
- package/packages/web/dist/assets/dm-sans-latin-standard-italic-C8i6y2Ft.woff2 +0 -0
- package/packages/web/dist/assets/dm-sans-latin-standard-normal-Bf69Tn_J.woff2 +0 -0
- package/packages/web/dist/assets/index-BRkIoT-q.js +123 -0
- package/packages/web/dist/assets/index-DCn0vN58.css +1 -0
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/assets/index-CxaF2koC.js +0 -122
- package/packages/web/dist/assets/index-DEho_xyR.css +0 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Queryable } from '../owner.js';
|
|
2
|
+
import { type NotificationSettings, type OwnerNotification } from './types.js';
|
|
3
|
+
/** "Present" is active on some surface within this long. */
|
|
4
|
+
export declare const PRESENCE_WINDOW_MS: number;
|
|
5
|
+
/** When the day's held items go out when the owner has not said. */
|
|
6
|
+
export declare const DEFAULT_END_OF_DAY = "18:00";
|
|
7
|
+
export declare const DEFAULT_NOTIFICATION_SETTINGS: NotificationSettings;
|
|
8
|
+
export declare const NOTIFICATION_COLUMNS: string;
|
|
9
|
+
export declare function toNotification(row: Record<string, any>): OwnerNotification;
|
|
10
|
+
/** The newest first; at most 100. */
|
|
11
|
+
export declare function listNotifications(db: Queryable, opts?: {
|
|
12
|
+
limit?: number;
|
|
13
|
+
}): Promise<OwnerNotification[]>;
|
|
14
|
+
/** One row, or null. */
|
|
15
|
+
export declare function getNotification(db: Queryable, id: string): Promise<OwnerNotification | null>;
|
|
16
|
+
/** The `digest` rows written since `since`, oldest first: what the recap may read. */
|
|
17
|
+
export declare function listDigestNotifications(db: Queryable, since: Date): Promise<OwnerNotification[]>;
|
|
18
|
+
/**
|
|
19
|
+
* The owner saw it: the dashboard drew it, or they opened its link. The first
|
|
20
|
+
* time counts; a row seen before it escalated never escalates. False when
|
|
21
|
+
* there is no such row.
|
|
22
|
+
*/
|
|
23
|
+
export declare function markSeen(db: Queryable, id: string, now?: Date): Promise<boolean>;
|
|
24
|
+
/** The owner did what it asked. Acted implies seen. */
|
|
25
|
+
export declare function markActed(db: Queryable, id: string, now?: Date): Promise<boolean>;
|
|
26
|
+
/** Every row about this approval is acted on: the owner decided it, wherever. */
|
|
27
|
+
export declare function markActedForAction(db: Queryable, actionId: string, now?: Date): Promise<number>;
|
|
28
|
+
/** A surface says the owner is there (`active`) or has left it (`away`). */
|
|
29
|
+
export declare function presenceTouch(db: Queryable, surface: string, now?: Date, state?: 'active' | 'away'): Promise<void>;
|
|
30
|
+
/** The surfaces the owner is active on now: within two minutes, and not away since. */
|
|
31
|
+
export declare function presentSurfaces(db: Queryable, now?: Date): Promise<string[]>;
|
|
32
|
+
/** Is the owner active anywhere? Advisory: it picks where a message goes first, never whether. */
|
|
33
|
+
export declare function ownerPresent(db: Queryable, now?: Date): Promise<boolean>;
|
|
34
|
+
export declare function readNotificationSettings(db: Queryable): Promise<NotificationSettings>;
|
|
35
|
+
/**
|
|
36
|
+
* Check a whole settings value the page sent. Returns the settings to store,
|
|
37
|
+
* or the sentence that says what is wrong.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseNotificationSettings(input: unknown): {
|
|
40
|
+
ok: true;
|
|
41
|
+
settings: NotificationSettings;
|
|
42
|
+
} | {
|
|
43
|
+
ok: false;
|
|
44
|
+
message: string;
|
|
45
|
+
};
|
|
46
|
+
/** Replace the settings, whole. */
|
|
47
|
+
export declare function writeNotificationSettings(db: Queryable, settings: NotificationSettings): Promise<void>;
|
|
48
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/notifications/store.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAEpB,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,eAAO,MAAM,6BAA6B,EAAE,oBAM3C,CAAC;AAKF,eAAO,MAAM,oBAAoB,QAE+C,CAAC;AAEjF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB,CAwB1E;AAMD,qCAAqC;AACrC,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAOlH;AAED,wBAAwB;AACxB,wBAAsB,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAIlG;AAED,sFAAsF;AACtF,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAOtG;AAID;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlG;AAED,uDAAuD;AACvD,wBAAsB,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CASnG;AAED,iFAAiF;AACjF,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CASjH;AAMD,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,IAAiB,EACtB,KAAK,GAAE,QAAQ,GAAG,MAAiB,GAClC,OAAO,CAAC,IAAI,CAAC,CAcf;AAED,uFAAuF;AACvF,wBAAsB,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9F;AAED,kGAAkG;AAClG,wBAAsB,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAE1F;AAMD,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqB3F;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqC/E;AAED,mCAAmC;AACnC,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5G"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { LOCAL_TIME } from '../time.js';
|
|
2
|
+
import { ALWAYS_REACH, NOTIFICATION_KINDS, } from './types.js';
|
|
3
|
+
/** "Present" is active on some surface within this long. */
|
|
4
|
+
export const PRESENCE_WINDOW_MS = 2 * 60_000;
|
|
5
|
+
/** When the day's held items go out when the owner has not said. */
|
|
6
|
+
export const DEFAULT_END_OF_DAY = '18:00';
|
|
7
|
+
export const DEFAULT_NOTIFICATION_SETTINGS = {
|
|
8
|
+
defaultChannel: null,
|
|
9
|
+
perKind: {},
|
|
10
|
+
quietStart: null,
|
|
11
|
+
quietEnd: null,
|
|
12
|
+
endOfDay: DEFAULT_END_OF_DAY,
|
|
13
|
+
};
|
|
14
|
+
const iso = (v) => v === null || v === undefined ? null : v instanceof Date ? v.toISOString() : String(v);
|
|
15
|
+
export const NOTIFICATION_COLUMNS = 'id, kind, urgency, title, text, link, offers, dedupe_key, agent_id, plugin_id, action_id, state, due_at, ' +
|
|
16
|
+
'channel, fired_count, lowered, created_at, sent_at, seen_at, acted_at, error';
|
|
17
|
+
export function toNotification(row) {
|
|
18
|
+
return {
|
|
19
|
+
id: String(row.id),
|
|
20
|
+
kind: row.kind,
|
|
21
|
+
urgency: row.urgency,
|
|
22
|
+
title: row.title,
|
|
23
|
+
text: row.text ?? null,
|
|
24
|
+
link: row.link ?? null,
|
|
25
|
+
offers: Array.isArray(row.offers) ? row.offers : [],
|
|
26
|
+
dedupeKey: row.dedupe_key ?? null,
|
|
27
|
+
agentId: row.agent_id ?? null,
|
|
28
|
+
pluginId: row.plugin_id ?? null,
|
|
29
|
+
actionId: row.action_id === null || row.action_id === undefined ? null : String(row.action_id),
|
|
30
|
+
state: row.state,
|
|
31
|
+
dueAt: iso(row.due_at),
|
|
32
|
+
channel: row.channel ?? null,
|
|
33
|
+
firedCount: Number(row.fired_count ?? 1),
|
|
34
|
+
lowered: row.lowered === true,
|
|
35
|
+
createdAt: iso(row.created_at),
|
|
36
|
+
sentAt: iso(row.sent_at),
|
|
37
|
+
seenAt: iso(row.seen_at),
|
|
38
|
+
actedAt: iso(row.acted_at),
|
|
39
|
+
error: row.error ?? null,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/* ------------------------------------------------------------------ *
|
|
43
|
+
* Reads and marks
|
|
44
|
+
* ------------------------------------------------------------------ */
|
|
45
|
+
/** The newest first; at most 100. */
|
|
46
|
+
export async function listNotifications(db, opts = {}) {
|
|
47
|
+
const limit = Math.max(1, Math.min(100, Math.floor(opts.limit ?? 20) || 20));
|
|
48
|
+
const { rows } = await db.query(`select ${NOTIFICATION_COLUMNS} from core.owner_notifications order by created_at desc, id limit $1`, [limit]);
|
|
49
|
+
return rows.map(toNotification);
|
|
50
|
+
}
|
|
51
|
+
/** One row, or null. */
|
|
52
|
+
export async function getNotification(db, id) {
|
|
53
|
+
if (!UUID.test(id))
|
|
54
|
+
return null;
|
|
55
|
+
const { rows } = await db.query(`select ${NOTIFICATION_COLUMNS} from core.owner_notifications where id = $1`, [id]);
|
|
56
|
+
return rows[0] ? toNotification(rows[0]) : null;
|
|
57
|
+
}
|
|
58
|
+
/** The `digest` rows written since `since`, oldest first: what the recap may read. */
|
|
59
|
+
export async function listDigestNotifications(db, since) {
|
|
60
|
+
const { rows } = await db.query(`select ${NOTIFICATION_COLUMNS} from core.owner_notifications
|
|
61
|
+
where urgency = 'digest' and created_at >= $1 order by created_at, id`, [since]);
|
|
62
|
+
return rows.map(toNotification);
|
|
63
|
+
}
|
|
64
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
65
|
+
/**
|
|
66
|
+
* The owner saw it: the dashboard drew it, or they opened its link. The first
|
|
67
|
+
* time counts; a row seen before it escalated never escalates. False when
|
|
68
|
+
* there is no such row.
|
|
69
|
+
*/
|
|
70
|
+
export async function markSeen(db, id, now = new Date()) {
|
|
71
|
+
if (!UUID.test(id))
|
|
72
|
+
return false;
|
|
73
|
+
const { rows } = await db.query(`update core.owner_notifications set seen_at = coalesce(seen_at, $2), updated_at = $2
|
|
74
|
+
where id = $1 returning id`, [id, now]);
|
|
75
|
+
return rows.length > 0;
|
|
76
|
+
}
|
|
77
|
+
/** The owner did what it asked. Acted implies seen. */
|
|
78
|
+
export async function markActed(db, id, now = new Date()) {
|
|
79
|
+
if (!UUID.test(id))
|
|
80
|
+
return false;
|
|
81
|
+
const { rows } = await db.query(`update core.owner_notifications
|
|
82
|
+
set acted_at = coalesce(acted_at, $2), seen_at = coalesce(seen_at, $2), updated_at = $2
|
|
83
|
+
where id = $1 returning id`, [id, now]);
|
|
84
|
+
return rows.length > 0;
|
|
85
|
+
}
|
|
86
|
+
/** Every row about this approval is acted on: the owner decided it, wherever. */
|
|
87
|
+
export async function markActedForAction(db, actionId, now = new Date()) {
|
|
88
|
+
if (!UUID.test(actionId))
|
|
89
|
+
return 0;
|
|
90
|
+
const { rows } = await db.query(`update core.owner_notifications
|
|
91
|
+
set acted_at = coalesce(acted_at, $2), seen_at = coalesce(seen_at, $2), updated_at = $2
|
|
92
|
+
where action_id = $1 and acted_at is null returning id`, [actionId, now]);
|
|
93
|
+
return rows.length;
|
|
94
|
+
}
|
|
95
|
+
/* ------------------------------------------------------------------ *
|
|
96
|
+
* Presence
|
|
97
|
+
* ------------------------------------------------------------------ */
|
|
98
|
+
/** A surface says the owner is there (`active`) or has left it (`away`). */
|
|
99
|
+
export async function presenceTouch(db, surface, now = new Date(), state = 'active') {
|
|
100
|
+
if (state === 'active') {
|
|
101
|
+
await db.query(`insert into core.owner_presence (surface, last_active_at, away_at, updated_at) values ($1, $2, null, $2)
|
|
102
|
+
on conflict (surface) do update set last_active_at = excluded.last_active_at, away_at = null, updated_at = $2`, [surface, now]);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
await db.query(`insert into core.owner_presence (surface, last_active_at, away_at, updated_at) values ($1, $2, $2, $2)
|
|
106
|
+
on conflict (surface) do update set away_at = $2, updated_at = $2`, [surface, now]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** The surfaces the owner is active on now: within two minutes, and not away since. */
|
|
110
|
+
export async function presentSurfaces(db, now = new Date()) {
|
|
111
|
+
const { rows } = await db.query(`select surface from core.owner_presence
|
|
112
|
+
where last_active_at > $1 and (away_at is null or away_at < last_active_at)
|
|
113
|
+
order by surface`, [new Date(now.getTime() - PRESENCE_WINDOW_MS)]);
|
|
114
|
+
return rows.map((r) => String(r.surface));
|
|
115
|
+
}
|
|
116
|
+
/** Is the owner active anywhere? Advisory: it picks where a message goes first, never whether. */
|
|
117
|
+
export async function ownerPresent(db, now = new Date()) {
|
|
118
|
+
return (await presentSurfaces(db, now)).length > 0;
|
|
119
|
+
}
|
|
120
|
+
/* ------------------------------------------------------------------ *
|
|
121
|
+
* Settings
|
|
122
|
+
* ------------------------------------------------------------------ */
|
|
123
|
+
export async function readNotificationSettings(db) {
|
|
124
|
+
const { rows } = await db.query(`select default_channel, per_kind, quiet_start, quiet_end, end_of_day from core.notification_settings where id`);
|
|
125
|
+
const row = rows[0];
|
|
126
|
+
if (!row)
|
|
127
|
+
return { ...DEFAULT_NOTIFICATION_SETTINGS, perKind: {} };
|
|
128
|
+
const perKind = {};
|
|
129
|
+
if (row.per_kind && typeof row.per_kind === 'object') {
|
|
130
|
+
for (const [k, v] of Object.entries(row.per_kind)) {
|
|
131
|
+
if (NOTIFICATION_KINDS.includes(k) && typeof v === 'string' && v !== '') {
|
|
132
|
+
perKind[k] = v;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
defaultChannel: row.default_channel ?? null,
|
|
138
|
+
perKind,
|
|
139
|
+
quietStart: row.quiet_start ?? null,
|
|
140
|
+
quietEnd: row.quiet_end ?? null,
|
|
141
|
+
endOfDay: row.end_of_day ?? DEFAULT_END_OF_DAY,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check a whole settings value the page sent. Returns the settings to store,
|
|
146
|
+
* or the sentence that says what is wrong.
|
|
147
|
+
*/
|
|
148
|
+
export function parseNotificationSettings(input) {
|
|
149
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
150
|
+
return { ok: false, message: 'Settings must be an object.' };
|
|
151
|
+
const o = input;
|
|
152
|
+
const optionalTime = (v, name) => {
|
|
153
|
+
if (v === undefined || v === null || v === '')
|
|
154
|
+
return null;
|
|
155
|
+
if (typeof v !== 'string' || !LOCAL_TIME.test(v.trim()))
|
|
156
|
+
return new Error(`${name} must be a time like 22:00.`);
|
|
157
|
+
return v.trim();
|
|
158
|
+
};
|
|
159
|
+
const defaultChannel = o.defaultChannel === undefined || o.defaultChannel === null || o.defaultChannel === ''
|
|
160
|
+
? null
|
|
161
|
+
: typeof o.defaultChannel === 'string' ? o.defaultChannel.trim() : undefined;
|
|
162
|
+
if (defaultChannel === undefined)
|
|
163
|
+
return { ok: false, message: 'defaultChannel must be a channel or empty.' };
|
|
164
|
+
const perKind = {};
|
|
165
|
+
if (o.perKind !== undefined && o.perKind !== null) {
|
|
166
|
+
if (typeof o.perKind !== 'object' || Array.isArray(o.perKind))
|
|
167
|
+
return { ok: false, message: 'perKind must be an object.' };
|
|
168
|
+
for (const [k, v] of Object.entries(o.perKind)) {
|
|
169
|
+
if (!NOTIFICATION_KINDS.includes(k))
|
|
170
|
+
return { ok: false, message: `${k} is not a kind of notification.` };
|
|
171
|
+
if (v === null || v === '' || v === 'default')
|
|
172
|
+
continue;
|
|
173
|
+
if (typeof v !== 'string')
|
|
174
|
+
return { ok: false, message: `perKind.${k} must be a channel, "default" or "off".` };
|
|
175
|
+
if (v === 'off' && ALWAYS_REACH.has(k)) {
|
|
176
|
+
return { ok: false, message: 'Approvals and questions cannot be turned off.' };
|
|
177
|
+
}
|
|
178
|
+
perKind[k] = v;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const quietStart = optionalTime(o.quietStart, 'Quiet hours start');
|
|
182
|
+
if (quietStart instanceof Error)
|
|
183
|
+
return { ok: false, message: quietStart.message };
|
|
184
|
+
const quietEnd = optionalTime(o.quietEnd, 'Quiet hours end');
|
|
185
|
+
if (quietEnd instanceof Error)
|
|
186
|
+
return { ok: false, message: quietEnd.message };
|
|
187
|
+
if ((quietStart === null) !== (quietEnd === null))
|
|
188
|
+
return { ok: false, message: 'Quiet hours need both a start and an end.' };
|
|
189
|
+
if (quietStart !== null && quietStart === quietEnd)
|
|
190
|
+
return { ok: false, message: 'Quiet hours cannot start and end at the same time.' };
|
|
191
|
+
const endOfDay = optionalTime(o.endOfDay, 'The end of the day');
|
|
192
|
+
if (endOfDay instanceof Error)
|
|
193
|
+
return { ok: false, message: endOfDay.message };
|
|
194
|
+
return {
|
|
195
|
+
ok: true,
|
|
196
|
+
settings: { defaultChannel, perKind, quietStart, quietEnd, endOfDay: endOfDay ?? DEFAULT_END_OF_DAY },
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/** Replace the settings, whole. */
|
|
200
|
+
export async function writeNotificationSettings(db, settings) {
|
|
201
|
+
await db.query(`insert into core.notification_settings (id, default_channel, per_kind, quiet_start, quiet_end, end_of_day, updated_at)
|
|
202
|
+
values (true, $1, $2::jsonb, $3, $4, $5, now())
|
|
203
|
+
on conflict (id) do update set default_channel = excluded.default_channel, per_kind = excluded.per_kind,
|
|
204
|
+
quiet_start = excluded.quiet_start, quiet_end = excluded.quiet_end, end_of_day = excluded.end_of_day,
|
|
205
|
+
updated_at = now()`, [settings.defaultChannel, JSON.stringify(settings.perKind), settings.quietStart, settings.quietEnd, settings.endOfDay]);
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/notifications/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reaching the owner: the message, the record, the channel (docs/notifications.md).
|
|
3
|
+
*
|
|
4
|
+
* A surface is where the owner talks to buddi; a channel is how buddi reaches
|
|
5
|
+
* them when they are not looking. Core owns "reach the owner"; a channel only
|
|
6
|
+
* carries. Types only.
|
|
7
|
+
*/
|
|
8
|
+
import type { Offer } from '../offers/types.js';
|
|
9
|
+
export declare const NOTIFICATION_KINDS: readonly ["approval", "question", "watcher", "reminder", "failure", "recap", "plugin"];
|
|
10
|
+
export type NotificationKind = (typeof NOTIFICATION_KINDS)[number];
|
|
11
|
+
export declare const NOTIFICATION_URGENCIES: readonly ["now", "today", "digest"];
|
|
12
|
+
export type NotificationUrgency = (typeof NOTIFICATION_URGENCIES)[number];
|
|
13
|
+
/** Kinds the owner asked for by starting the run: never quiet, never off. */
|
|
14
|
+
export declare const ALWAYS_REACH: ReadonlySet<NotificationKind>;
|
|
15
|
+
/** The one call's argument. */
|
|
16
|
+
export interface OwnerMessage {
|
|
17
|
+
kind: NotificationKind;
|
|
18
|
+
urgency: NotificationUrgency;
|
|
19
|
+
/** One line: the whole message on a small channel. */
|
|
20
|
+
title: string;
|
|
21
|
+
/** A few lines, markdown-light. */
|
|
22
|
+
text?: string;
|
|
23
|
+
/** A dashboard place: `#/chat/…`, `#/settings/…`. */
|
|
24
|
+
link?: {
|
|
25
|
+
route: string;
|
|
26
|
+
};
|
|
27
|
+
/** Offers a report already stored; a channel that has buttons draws them. */
|
|
28
|
+
offers?: readonly Offer[];
|
|
29
|
+
/** "This thing, again": an unsent row with the same key is updated, not duplicated. */
|
|
30
|
+
dedupeKey?: string;
|
|
31
|
+
agentId?: string;
|
|
32
|
+
/** Stamped by the host for a plugin's call; a plugin never sets it. */
|
|
33
|
+
pluginId?: string;
|
|
34
|
+
/** Core only: the approval this message asks about, drawn as a card where a channel can. */
|
|
35
|
+
actionId?: string;
|
|
36
|
+
}
|
|
37
|
+
/** Where a row is in its life. See migration 043. */
|
|
38
|
+
export type NotificationState = 'shown' | 'held' | 'stored' | 'sending' | 'sent' | 'failed';
|
|
39
|
+
/** One row of `core.owner_notifications`. */
|
|
40
|
+
export interface OwnerNotification {
|
|
41
|
+
id: string;
|
|
42
|
+
kind: NotificationKind;
|
|
43
|
+
urgency: NotificationUrgency;
|
|
44
|
+
title: string;
|
|
45
|
+
text: string | null;
|
|
46
|
+
link: string | null;
|
|
47
|
+
offers: Offer[];
|
|
48
|
+
dedupeKey: string | null;
|
|
49
|
+
agentId: string | null;
|
|
50
|
+
pluginId: string | null;
|
|
51
|
+
actionId: string | null;
|
|
52
|
+
state: NotificationState;
|
|
53
|
+
dueAt: string | null;
|
|
54
|
+
channel: string | null;
|
|
55
|
+
firedCount: number;
|
|
56
|
+
lowered: boolean;
|
|
57
|
+
createdAt: string;
|
|
58
|
+
sentAt: string | null;
|
|
59
|
+
seenAt: string | null;
|
|
60
|
+
actedAt: string | null;
|
|
61
|
+
error: string | null;
|
|
62
|
+
}
|
|
63
|
+
/** What a channel is handed: the message as stored, with its row's id. */
|
|
64
|
+
export interface DeliverableMessage extends OwnerMessage {
|
|
65
|
+
/** The row's id; `today:<date>` for the end-of-day message, which is many rows. */
|
|
66
|
+
id: string;
|
|
67
|
+
}
|
|
68
|
+
/** A way to reach the owner, registered by whoever owns the transport. */
|
|
69
|
+
export interface OwnerChannel {
|
|
70
|
+
/** `telegram.chat`, `local.notification`, `email.self`, `<plugin>.<what>`. Never `dashboard`. */
|
|
71
|
+
kind: string;
|
|
72
|
+
/**
|
|
73
|
+
* What Settings shows. Null, or a promise of null, when the channel has
|
|
74
|
+
* nothing to carry a message through now (a plugin's with no account): it
|
|
75
|
+
* is then neither listed nor picked.
|
|
76
|
+
*/
|
|
77
|
+
describe(): ChannelDescription | null | Promise<ChannelDescription | null>;
|
|
78
|
+
can: {
|
|
79
|
+
offers: boolean;
|
|
80
|
+
attachments: boolean;
|
|
81
|
+
markdown: boolean;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Which channel is the default when the owner picked none: the lowest
|
|
85
|
+
* first, then the order they were registered. Absent is 100.
|
|
86
|
+
*/
|
|
87
|
+
priority?: number;
|
|
88
|
+
/**
|
|
89
|
+
* `{ id }` once the transport took it. `'refused'`, or `{ refused }` with a
|
|
90
|
+
* sentence saying why, when it did not: the reason is what the row's
|
|
91
|
+
* `error` says.
|
|
92
|
+
*/
|
|
93
|
+
deliver(message: DeliverableMessage): Promise<ChannelAnswer>;
|
|
94
|
+
}
|
|
95
|
+
/** A channel as Settings names it: "Telegram, @your_bot". */
|
|
96
|
+
export interface ChannelDescription {
|
|
97
|
+
label: string;
|
|
98
|
+
where?: string;
|
|
99
|
+
}
|
|
100
|
+
/** What a channel's `deliver` answers. */
|
|
101
|
+
export type ChannelAnswer = {
|
|
102
|
+
id: string;
|
|
103
|
+
} | 'refused' | {
|
|
104
|
+
refused: string;
|
|
105
|
+
};
|
|
106
|
+
/** The Notifications page's values, defaults filled in. */
|
|
107
|
+
export interface NotificationSettings {
|
|
108
|
+
/** A channel kind, or null for the first one registered. */
|
|
109
|
+
defaultChannel: string | null;
|
|
110
|
+
/** kind → a channel kind, or `off`. Approvals and questions are never off. */
|
|
111
|
+
perKind: Partial<Record<NotificationKind, string>>;
|
|
112
|
+
/** `HH:MM`, the owner's clock; both or neither. */
|
|
113
|
+
quietStart: string | null;
|
|
114
|
+
quietEnd: string | null;
|
|
115
|
+
/** `HH:MM`; when the day's held items go out. */
|
|
116
|
+
endOfDay: string;
|
|
117
|
+
}
|
|
118
|
+
/** What one call did. */
|
|
119
|
+
export interface NotifyResult {
|
|
120
|
+
id: string;
|
|
121
|
+
state: NotificationState;
|
|
122
|
+
/** The channel kind it went to, `dashboard` when shown there, else null. */
|
|
123
|
+
channel: string | null;
|
|
124
|
+
error: string | null;
|
|
125
|
+
/** An unsent row with the same key took it. */
|
|
126
|
+
deduped: boolean;
|
|
127
|
+
/** The rate rule lowered it from `now` to `today`. */
|
|
128
|
+
lowered: boolean;
|
|
129
|
+
}
|
|
130
|
+
export interface NotifyDeps {
|
|
131
|
+
now?: () => Date;
|
|
132
|
+
/** The zone when the owner profile names none. Defaults to `BUDDI_TZ`, else New York. */
|
|
133
|
+
timezone?: string;
|
|
134
|
+
log?: (line: string) => void;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const NOTIFICATION_KINDS = ['approval', 'question', 'watcher', 'reminder', 'failure', 'recap', 'plugin'];
|
|
2
|
+
export const NOTIFICATION_URGENCIES = ['now', 'today', 'digest'];
|
|
3
|
+
/** Kinds the owner asked for by starting the run: never quiet, never off. */
|
|
4
|
+
export const ALWAYS_REACH = new Set(['approval', 'question']);
|
|
5
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAGzH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAG1E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAkC,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The synthetic plugin the page engine is tested against.
|
|
3
3
|
*
|
|
4
|
-
* `docs/
|
|
4
|
+
* `docs/plugin-pages.md` §7 item 1: the proof that the engine is generic
|
|
5
5
|
* is a plugin that is not email using every component once. It ships two pages
|
|
6
6
|
* — a rail place and a settings tab — a query per read and a tool per write,
|
|
7
7
|
* and nothing behind them but constants, so the same fixture serves core's
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plugin pages — a plugin's screens, as data.
|
|
3
3
|
*
|
|
4
|
-
* `docs/
|
|
4
|
+
* `docs/plugin-pages.md`. A plugin already tells the dashboard how to
|
|
5
5
|
* *draw a tool result* (`views.ts`); this tells it how to draw a whole screen:
|
|
6
6
|
* a rail entry, or a settings tab, made of a small fixed set of generic
|
|
7
7
|
* components. The rules are the ones views already follow, and they are the
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* The component set is sized by what email and finance need and does not grow
|
|
30
30
|
* to fit one plugin's wish. A plugin that needs free layout, custom styling or
|
|
31
31
|
* client-side logic serves its own app through the developer proxy
|
|
32
|
-
* (`docs/
|
|
32
|
+
* (`docs/developer.md`).
|
|
33
33
|
*/
|
|
34
34
|
import type { Pool } from 'pg';
|
|
35
35
|
import { z, type ZodTypeAny } from 'zod';
|
|
@@ -147,7 +147,7 @@ export type ArgRef = ValueRef | {
|
|
|
147
147
|
* open a chat the owner already has in their rail.
|
|
148
148
|
*
|
|
149
149
|
* `{ proposals: true }` is the second, as narrow: the owner's Proposals inbox
|
|
150
|
-
* (docs/
|
|
150
|
+
* (docs/learning.md), filtered to *this* plugin's rules. A plugin that
|
|
151
151
|
* proposes policies through core has its proposals there, not on its own
|
|
152
152
|
* page, and the only useful thing its page can say about them is where they
|
|
153
153
|
* are. It names no plugin: the dashboard fills in the one drawing the page.
|
|
@@ -757,7 +757,7 @@ export declare const PAGE_POOL_ACQUIRE_MS = 5000;
|
|
|
757
757
|
* Two things it does **not** cover, and they are honest limits rather than
|
|
758
758
|
* bugs: a superuser-ish role can still call `pg_read_file` or
|
|
759
759
|
* `pg_terminate_backend`, neither of which writes a row. The answer to those
|
|
760
|
-
* is a Postgres role without the grant — see `docs/
|
|
760
|
+
* is a Postgres role without the grant — see `docs/plugin-pages.md` §8.
|
|
761
761
|
*
|
|
762
762
|
* The wrapper holds the client, takes one per statement and always gives it
|
|
763
763
|
* back; `connect()` throws, so a query never sees one and cannot open a
|
|
@@ -814,7 +814,7 @@ async function connectWithin(pool, ms) {
|
|
|
814
814
|
* Two things it does **not** cover, and they are honest limits rather than
|
|
815
815
|
* bugs: a superuser-ish role can still call `pg_read_file` or
|
|
816
816
|
* `pg_terminate_backend`, neither of which writes a row. The answer to those
|
|
817
|
-
* is a Postgres role without the grant — see `docs/
|
|
817
|
+
* is a Postgres role without the grant — see `docs/plugin-pages.md` §8.
|
|
818
818
|
*
|
|
819
819
|
* The wrapper holds the client, takes one per statement and always gives it
|
|
820
820
|
* back; `connect()` throws, so a query never sees one and cannot open a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@buddi/core/plugin`: what a plugin imports from core
|
|
3
|
-
* (docs/
|
|
3
|
+
* (docs/plugin-host-api.md §3).
|
|
4
4
|
*
|
|
5
5
|
* The contract's types, and the pure helpers a plugin needs beside `ctx.buddi`
|
|
6
6
|
* — a date in the owner's zone, a hash, a page's file answer, a URL check.
|
|
@@ -36,5 +36,5 @@ export type { SurfaceProfile } from '../surfaces.js';
|
|
|
36
36
|
export type { ArtifactKind, ArtifactSource } from '../artifacts/store.js';
|
|
37
37
|
export type { ToolPermission } from '../actions/permissions.js';
|
|
38
38
|
export type { MisfirePolicy } from '../scheduler/types.js';
|
|
39
|
-
export type { AccountsArea, ApprovalsArea, BuddiHost, ClockArea, DbArea, DbResult, DbTransaction, DirArea, EnqueueRunInput, FileRow, FilesArea, HttpArea, HttpRequest, HttpResponse, MemoryArea, MemoryNote, OwnerArea, PagesArea, ProposalsArea, RegisterHost, ScheduleArea, SecretBinding, SecretDeliveryContext, SecretDestination, SecretListing, SecretRule, SecretUseOutcome, SecretUseResult, SecretsArea, } from '../host/types.js';
|
|
39
|
+
export type { AccountsArea, ApprovalsArea, BuddiHost, ChannelsArea, ClockArea, DbArea, DbResult, DbTransaction, DirArea, EnqueueRunInput, FileRow, FilesArea, HttpArea, HttpRequest, HttpResponse, MemoryArea, MemoryNote, OwnerArea, PluginChannel, PluginChannelMessage, PluginOwnerMessage, PagesArea, ProposalsArea, RegisterHost, ScheduleArea, SecretBinding, SecretDeliveryContext, SecretDestination, SecretListing, SecretRule, SecretUseOutcome, SecretUseResult, SecretsArea, } from '../host/types.js';
|
|
40
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,cAAc,EACd,SAAS,EACT,SAAS,EACT,QAAQ,EACR,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAGnB,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC9F,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,IAAI,EACJ,WAAW,EACX,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,OAAO,EACP,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjF,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClG,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,QAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC5G,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,aAAa,EACb,OAAO,EACP,eAAe,EACf,OAAO,EACP,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `@buddi/core/plugin`: what a plugin imports from core
|
|
3
|
-
* (docs/
|
|
3
|
+
* (docs/plugin-host-api.md §3).
|
|
4
4
|
*
|
|
5
5
|
* The contract's types, and the pure helpers a plugin needs beside `ctx.buddi`
|
|
6
6
|
* — a date in the owner's zone, a hash, a page's file answer, a URL check.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Who searches the web for an agent: the name of the owner's override and its
|
|
3
3
|
* parser, and what one server-side search looks like when the runtime reports
|
|
4
|
-
* it. Moved here from `@buddi/runtime` (docs/
|
|
4
|
+
* it. Moved here from `@buddi/runtime` (docs/plugin-host-api.md §3): the
|
|
5
5
|
* runtime reads the override before a request is built, the web plugin reads
|
|
6
6
|
* it to pick its backend and records the searches, and both now read it from
|
|
7
7
|
* one place. Pure: names, a parser and types.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Who searches the web for an agent: the name of the owner's override and its
|
|
3
3
|
* parser, and what one server-side search looks like when the runtime reports
|
|
4
|
-
* it. Moved here from `@buddi/runtime` (docs/
|
|
4
|
+
* it. Moved here from `@buddi/runtime` (docs/plugin-host-api.md §3): the
|
|
5
5
|
* runtime reads the override before a request is built, the web plugin reads
|
|
6
6
|
* it to pick its backend and records the searches, and both now read it from
|
|
7
7
|
* one place. Pure: names, a parser and types.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The address rules for reaching the web: what a URL may name before a socket
|
|
3
3
|
* exists.
|
|
4
4
|
*
|
|
5
|
-
* Moved here from `@buddi/tool-web`'s `guard.ts` (docs/
|
|
5
|
+
* Moved here from `@buddi/tool-web`'s `guard.ts` (docs/plugin-host-api.md
|
|
6
6
|
* §3) so a plugin can check a URL without importing another plugin: the browser
|
|
7
7
|
* plugin was the first. Pure — a URL in, a verdict out, nothing resolved. The
|
|
8
8
|
* half that resolves, `guardedLookup`, does I/O and lives with the `http` area
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What a plugin declares it reaches in buddi beyond itself: the areas of
|
|
3
|
-
* `ctx.buddi` that are not always present (docs/
|
|
3
|
+
* `ctx.buddi` that are not always present (docs/plugin-host-api.md §5).
|
|
4
4
|
*
|
|
5
5
|
* Declared twice, on purpose. The manifest's `uses` is what `ctx.buddi` is
|
|
6
6
|
* built from; `package.json`'s `buddi.uses` is what the install card reads,
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Pure: names, the owner's words for each, and the comparisons.
|
|
12
12
|
*/
|
|
13
13
|
/** Every area a plugin may declare. `files:library` is `files`, over the whole library. */
|
|
14
|
-
export declare const PLUGIN_USES: readonly ["http", "accounts", "files", "files:library", "memory", "proposals", "schedule", "secrets"];
|
|
14
|
+
export declare const PLUGIN_USES: readonly ["http", "accounts", "files", "files:library", "memory", "proposals", "schedule", "secrets", "owner:notify", "owner:channel"];
|
|
15
15
|
export type PluginUse = (typeof PLUGIN_USES)[number];
|
|
16
16
|
/**
|
|
17
17
|
* The line the owner reads on the install card for each area, in the spec's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uses.d.ts","sourceRoot":"","sources":["../../src/plugin/uses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,2FAA2F;AAC3F,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"uses.d.ts","sourceRoot":"","sources":["../../src/plugin/uses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,2FAA2F;AAC3F,eAAO,MAAM,WAAW,wIAWd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAWhE,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAiBlE;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,KAAK,EAAE,SAAS,SAAS,EAAE,GAC1B;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,OAAO,EAAE,SAAS,EAAE,CAAA;CAAE,CAK9C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,SAAS,EAAE,EAC9B,GAAG,EAAE,SAAS,SAAS,EAAE,GACxB,MAAM,GAAG,SAAS,CAQpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What a plugin declares it reaches in buddi beyond itself: the areas of
|
|
3
|
-
* `ctx.buddi` that are not always present (docs/
|
|
3
|
+
* `ctx.buddi` that are not always present (docs/plugin-host-api.md §5).
|
|
4
4
|
*
|
|
5
5
|
* Declared twice, on purpose. The manifest's `uses` is what `ctx.buddi` is
|
|
6
6
|
* built from; `package.json`'s `buddi.uses` is what the install card reads,
|
|
@@ -20,6 +20,8 @@ export const PLUGIN_USES = [
|
|
|
20
20
|
'proposals',
|
|
21
21
|
'schedule',
|
|
22
22
|
'secrets',
|
|
23
|
+
'owner:notify',
|
|
24
|
+
'owner:channel',
|
|
23
25
|
];
|
|
24
26
|
/**
|
|
25
27
|
* The line the owner reads on the install card for each area, in the spec's
|
|
@@ -35,6 +37,8 @@ export const PLUGIN_USE_WORDS = {
|
|
|
35
37
|
proposals: 'proposes rules',
|
|
36
38
|
schedule: 'starts agent runs by itself',
|
|
37
39
|
secrets: 'fills secrets you bind to it',
|
|
40
|
+
'owner:notify': 'can send you messages when you are away',
|
|
41
|
+
'owner:channel': 'adds a way for buddi to reach you',
|
|
38
42
|
};
|
|
39
43
|
export function isPluginUse(value) {
|
|
40
44
|
return typeof value === 'string' && PLUGIN_USES.includes(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uses.js","sourceRoot":"","sources":["../../src/plugin/uses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,2FAA2F;AAC3F,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,UAAU;IACV,OAAO;IACP,eAAe;IACf,QAAQ;IACR,WAAW;IACX,UAAU;IACV,SAAS;
|
|
1
|
+
{"version":3,"file":"uses.js","sourceRoot":"","sources":["../../src/plugin/uses.ts"],"names":[],"mappings":"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"}
|