@withbuddi/buddi 0.1.0-pre.22 → 0.1.0-pre.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +20 -1
- 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 +1 -0
- package/node_modules/@buddi/cli/dist/doctor-probes.js.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.d.ts +2 -0
- package/node_modules/@buddi/cli/dist/doctor.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/doctor.js +7 -0
- package/node_modules/@buddi/cli/dist/doctor.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts +37 -2
- package/node_modules/@buddi/core/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/agents/catalog.js +49 -11
- package/node_modules/@buddi/core/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/core/dist/home.d.ts +30 -1
- package/node_modules/@buddi/core/dist/home.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/home.js +1 -1
- 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 +37 -3
- package/node_modules/@buddi/core/dist/host/build.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/http.d.ts +32 -0
- package/node_modules/@buddi/core/dist/host/http.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/host/http.js +102 -2
- package/node_modules/@buddi/core/dist/host/http.js.map +1 -1
- package/node_modules/@buddi/core/dist/host/types.d.ts +8 -0
- 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/announce.d.ts +1 -1
- package/node_modules/@buddi/core/dist/notifications/focus.d.ts +42 -0
- package/node_modules/@buddi/core/dist/notifications/focus.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/focus.js +150 -0
- package/node_modules/@buddi/core/dist/notifications/focus.js.map +1 -0
- package/node_modules/@buddi/core/dist/notifications/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/notifications/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/index.js +1 -0
- package/node_modules/@buddi/core/dist/notifications/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/notify.d.ts +66 -7
- package/node_modules/@buddi/core/dist/notifications/notify.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/notify.js +123 -38
- package/node_modules/@buddi/core/dist/notifications/notify.js.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/store.d.ts +6 -4
- package/node_modules/@buddi/core/dist/notifications/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/store.js +24 -23
- package/node_modules/@buddi/core/dist/notifications/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/types.d.ts +46 -3
- package/node_modules/@buddi/core/dist/notifications/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/notifications/types.js +12 -0
- package/node_modules/@buddi/core/dist/notifications/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/pages.d.ts +186 -6
- package/node_modules/@buddi/core/dist/pages.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/pages.js +232 -13
- package/node_modules/@buddi/core/dist/pages.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/author.d.ts +42 -0
- package/node_modules/@buddi/core/dist/plugin/author.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/plugin/author.js +77 -0
- package/node_modules/@buddi/core/dist/plugin/author.js.map +1 -0
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +7 -3
- package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.js +3 -0
- 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.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.js +1 -1
- package/node_modules/@buddi/core/dist/plugin/version.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugins/record.d.ts +8 -0
- package/node_modules/@buddi/core/dist/plugins/record.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugins/record.js +17 -0
- package/node_modules/@buddi/core/dist/plugins/record.js.map +1 -1
- package/node_modules/@buddi/core/dist/plugins/types.d.ts +7 -0
- package/node_modules/@buddi/core/dist/plugins/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugins/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/registry.d.ts +2 -0
- package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/registry.js +15 -4
- package/node_modules/@buddi/core/dist/registry.js.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/materialize.js +1 -1
- package/node_modules/@buddi/core/dist/scheduler/missions.d.ts +10 -0
- package/node_modules/@buddi/core/dist/scheduler/missions.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/missions.js +29 -1
- package/node_modules/@buddi/core/dist/scheduler/missions.js.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/types.d.ts +7 -0
- package/node_modules/@buddi/core/dist/scheduler/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/types.js +1 -0
- package/node_modules/@buddi/core/dist/scheduler/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +8 -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/dist/views.d.ts +178 -3
- package/node_modules/@buddi/core/dist/views.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/views.js +56 -1
- package/node_modules/@buddi/core/dist/views.js.map +1 -1
- package/node_modules/@buddi/core/migrations/051_notification_focus.sql +20 -0
- package/node_modules/@buddi/core/migrations/052_mission_paused_reason.sql +6 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts +6 -0
- package/node_modules/@buddi/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js +17 -1
- package/node_modules/@buddi/gateway/dist/agents/catalog.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/starter-team.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/agents/starter-team.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/agents/starter-team.js +8 -3
- package/node_modules/@buddi/gateway/dist/agents/starter-team.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions-cli.js +6 -3
- package/node_modules/@buddi/gateway/dist/missions-cli.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 +9 -2
- package/node_modules/@buddi/gateway/dist/plugins/approve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/index.d.ts +1 -0
- package/node_modules/@buddi/gateway/dist/plugins/index.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/index.js +1 -0
- package/node_modules/@buddi/gateway/dist/plugins/index.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/load.d.ts +5 -0
- package/node_modules/@buddi/gateway/dist/plugins/load.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/load.js +10 -1
- package/node_modules/@buddi/gateway/dist/plugins/load.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/provenance.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/provenance.js +10 -3
- package/node_modules/@buddi/gateway/dist/plugins/provenance.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/scaffold.d.ts +8 -0
- package/node_modules/@buddi/gateway/dist/plugins/scaffold.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/scaffold.js +46 -7
- package/node_modules/@buddi/gateway/dist/plugins/scaffold.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts +6 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.js +3 -1
- package/node_modules/@buddi/gateway/dist/plugins/stage.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins/toggle.d.ts +21 -0
- package/node_modules/@buddi/gateway/dist/plugins/toggle.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/plugins/toggle.js +86 -0
- package/node_modules/@buddi/gateway/dist/plugins/toggle.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts +19 -3
- package/node_modules/@buddi/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/plugins-cli.js +79 -9
- package/node_modules/@buddi/gateway/dist/plugins-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +3 -3
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/speech-cli.d.ts +13 -0
- package/node_modules/@buddi/gateway/dist/speech-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/speech-cli.js +40 -1
- package/node_modules/@buddi/gateway/dist/speech-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/focus.d.ts +27 -0
- package/node_modules/@buddi/gateway/dist/telegram/focus.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/focus.js +72 -0
- package/node_modules/@buddi/gateway/dist/telegram/focus.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.js +1 -0
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +24 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/agent-offers.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/agent-offers.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/notifications.d.ts +8 -1
- package/node_modules/@buddi/gateway/dist/web/notifications.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/notifications.js +23 -1
- package/node_modules/@buddi/gateway/dist/web/notifications.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 +42 -4
- package/node_modules/@buddi/gateway/dist/web/plugins.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/profile.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/web/profile.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/profile.js +2 -1
- package/node_modules/@buddi/gateway/dist/web/profile.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/rail.d.ts +33 -0
- package/node_modules/@buddi/gateway/dist/web/rail.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/rail.js +45 -0
- package/node_modules/@buddi/gateway/dist/web/rail.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +46 -0
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.js +78 -2
- package/node_modules/@buddi/gateway/dist/web/read.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 +36 -6
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/src/agents/starter/planner/agent.md +2 -2
- package/node_modules/@buddi/gateway/src/agents/starter/planner/skills/writing-the-morning-brief.md +18 -11
- package/node_modules/@buddi/install/dist/.tsbuildinfo +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-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/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +20 -1
- 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 +1 -0
- package/packages/cli/dist/doctor-probes.js.map +1 -1
- package/packages/cli/dist/doctor.d.ts +2 -0
- package/packages/cli/dist/doctor.d.ts.map +1 -1
- package/packages/cli/dist/doctor.js +7 -0
- package/packages/cli/dist/doctor.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/agents/catalog.d.ts +37 -2
- package/packages/core/dist/agents/catalog.d.ts.map +1 -1
- package/packages/core/dist/agents/catalog.js +49 -11
- package/packages/core/dist/agents/catalog.js.map +1 -1
- package/packages/core/dist/home.d.ts +30 -1
- package/packages/core/dist/home.d.ts.map +1 -1
- package/packages/core/dist/home.js +1 -1
- 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 +37 -3
- package/packages/core/dist/host/build.js.map +1 -1
- package/packages/core/dist/host/http.d.ts +32 -0
- package/packages/core/dist/host/http.d.ts.map +1 -1
- package/packages/core/dist/host/http.js +102 -2
- package/packages/core/dist/host/http.js.map +1 -1
- package/packages/core/dist/host/types.d.ts +8 -0
- 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/announce.d.ts +1 -1
- package/packages/core/dist/notifications/focus.d.ts +42 -0
- package/packages/core/dist/notifications/focus.d.ts.map +1 -0
- package/packages/core/dist/notifications/focus.js +150 -0
- package/packages/core/dist/notifications/focus.js.map +1 -0
- package/packages/core/dist/notifications/index.d.ts +1 -0
- package/packages/core/dist/notifications/index.d.ts.map +1 -1
- package/packages/core/dist/notifications/index.js +1 -0
- package/packages/core/dist/notifications/index.js.map +1 -1
- package/packages/core/dist/notifications/notify.d.ts +66 -7
- package/packages/core/dist/notifications/notify.d.ts.map +1 -1
- package/packages/core/dist/notifications/notify.js +123 -38
- package/packages/core/dist/notifications/notify.js.map +1 -1
- package/packages/core/dist/notifications/store.d.ts +6 -4
- package/packages/core/dist/notifications/store.d.ts.map +1 -1
- package/packages/core/dist/notifications/store.js +24 -23
- package/packages/core/dist/notifications/store.js.map +1 -1
- package/packages/core/dist/notifications/types.d.ts +46 -3
- package/packages/core/dist/notifications/types.d.ts.map +1 -1
- package/packages/core/dist/notifications/types.js +12 -0
- package/packages/core/dist/notifications/types.js.map +1 -1
- package/packages/core/dist/pages.d.ts +186 -6
- package/packages/core/dist/pages.d.ts.map +1 -1
- package/packages/core/dist/pages.js +232 -13
- package/packages/core/dist/pages.js.map +1 -1
- package/packages/core/dist/plugin/author.d.ts +42 -0
- package/packages/core/dist/plugin/author.d.ts.map +1 -0
- package/packages/core/dist/plugin/author.js +77 -0
- package/packages/core/dist/plugin/author.js.map +1 -0
- package/packages/core/dist/plugin/index.d.ts +7 -3
- package/packages/core/dist/plugin/index.d.ts.map +1 -1
- package/packages/core/dist/plugin/index.js +3 -0
- 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.d.ts.map +1 -1
- package/packages/core/dist/plugin/version.js +1 -1
- package/packages/core/dist/plugin/version.js.map +1 -1
- package/packages/core/dist/plugins/record.d.ts +8 -0
- package/packages/core/dist/plugins/record.d.ts.map +1 -1
- package/packages/core/dist/plugins/record.js +17 -0
- package/packages/core/dist/plugins/record.js.map +1 -1
- package/packages/core/dist/plugins/types.d.ts +7 -0
- package/packages/core/dist/plugins/types.d.ts.map +1 -1
- package/packages/core/dist/plugins/types.js.map +1 -1
- package/packages/core/dist/registry.d.ts +2 -0
- package/packages/core/dist/registry.d.ts.map +1 -1
- package/packages/core/dist/registry.js +15 -4
- package/packages/core/dist/registry.js.map +1 -1
- package/packages/core/dist/scheduler/materialize.js +1 -1
- package/packages/core/dist/scheduler/missions.d.ts +10 -0
- package/packages/core/dist/scheduler/missions.d.ts.map +1 -1
- package/packages/core/dist/scheduler/missions.js +29 -1
- package/packages/core/dist/scheduler/missions.js.map +1 -1
- package/packages/core/dist/scheduler/types.d.ts +7 -0
- package/packages/core/dist/scheduler/types.d.ts.map +1 -1
- package/packages/core/dist/scheduler/types.js +1 -0
- package/packages/core/dist/scheduler/types.js.map +1 -1
- package/packages/core/dist/tools.d.ts +8 -0
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/core/dist/views.d.ts +178 -3
- package/packages/core/dist/views.d.ts.map +1 -1
- package/packages/core/dist/views.js +56 -1
- package/packages/core/dist/views.js.map +1 -1
- package/packages/core/migrations/051_notification_focus.sql +20 -0
- package/packages/core/migrations/052_mission_paused_reason.sql +6 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/agents/catalog.d.ts +6 -0
- package/packages/gateway/dist/agents/catalog.d.ts.map +1 -1
- package/packages/gateway/dist/agents/catalog.js +17 -1
- package/packages/gateway/dist/agents/catalog.js.map +1 -1
- package/packages/gateway/dist/agents/starter-team.d.ts +2 -0
- package/packages/gateway/dist/agents/starter-team.d.ts.map +1 -1
- package/packages/gateway/dist/agents/starter-team.js +8 -3
- package/packages/gateway/dist/agents/starter-team.js.map +1 -1
- package/packages/gateway/dist/missions-cli.d.ts.map +1 -1
- package/packages/gateway/dist/missions-cli.js +6 -3
- package/packages/gateway/dist/missions-cli.js.map +1 -1
- package/packages/gateway/dist/plugins/approve.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/approve.js +9 -2
- package/packages/gateway/dist/plugins/approve.js.map +1 -1
- package/packages/gateway/dist/plugins/index.d.ts +1 -0
- package/packages/gateway/dist/plugins/index.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/index.js +1 -0
- package/packages/gateway/dist/plugins/index.js.map +1 -1
- package/packages/gateway/dist/plugins/load.d.ts +5 -0
- package/packages/gateway/dist/plugins/load.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/load.js +10 -1
- package/packages/gateway/dist/plugins/load.js.map +1 -1
- package/packages/gateway/dist/plugins/provenance.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/provenance.js +10 -3
- package/packages/gateway/dist/plugins/provenance.js.map +1 -1
- package/packages/gateway/dist/plugins/scaffold.d.ts +8 -0
- package/packages/gateway/dist/plugins/scaffold.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/scaffold.js +46 -7
- package/packages/gateway/dist/plugins/scaffold.js.map +1 -1
- package/packages/gateway/dist/plugins/stage.d.ts +6 -1
- package/packages/gateway/dist/plugins/stage.d.ts.map +1 -1
- package/packages/gateway/dist/plugins/stage.js +3 -1
- package/packages/gateway/dist/plugins/stage.js.map +1 -1
- package/packages/gateway/dist/plugins/toggle.d.ts +21 -0
- package/packages/gateway/dist/plugins/toggle.d.ts.map +1 -0
- package/packages/gateway/dist/plugins/toggle.js +86 -0
- package/packages/gateway/dist/plugins/toggle.js.map +1 -0
- package/packages/gateway/dist/plugins-cli.d.ts +19 -3
- package/packages/gateway/dist/plugins-cli.d.ts.map +1 -1
- package/packages/gateway/dist/plugins-cli.js +79 -9
- package/packages/gateway/dist/plugins-cli.js.map +1 -1
- package/packages/gateway/dist/serve.js +3 -3
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/speech-cli.d.ts +13 -0
- package/packages/gateway/dist/speech-cli.d.ts.map +1 -1
- package/packages/gateway/dist/speech-cli.js +40 -1
- package/packages/gateway/dist/speech-cli.js.map +1 -1
- package/packages/gateway/dist/telegram/focus.d.ts +27 -0
- package/packages/gateway/dist/telegram/focus.d.ts.map +1 -0
- package/packages/gateway/dist/telegram/focus.js +72 -0
- package/packages/gateway/dist/telegram/focus.js.map +1 -0
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +1 -0
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/surface.d.ts +2 -0
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +24 -1
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/web/agent-offers.js +1 -1
- package/packages/gateway/dist/web/agent-offers.js.map +1 -1
- package/packages/gateway/dist/web/notifications.d.ts +8 -1
- package/packages/gateway/dist/web/notifications.d.ts.map +1 -1
- package/packages/gateway/dist/web/notifications.js +23 -1
- package/packages/gateway/dist/web/notifications.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 +42 -4
- package/packages/gateway/dist/web/plugins.js.map +1 -1
- package/packages/gateway/dist/web/profile.d.ts +2 -0
- package/packages/gateway/dist/web/profile.d.ts.map +1 -1
- package/packages/gateway/dist/web/profile.js +2 -1
- package/packages/gateway/dist/web/profile.js.map +1 -1
- package/packages/gateway/dist/web/rail.d.ts +33 -0
- package/packages/gateway/dist/web/rail.d.ts.map +1 -0
- package/packages/gateway/dist/web/rail.js +45 -0
- package/packages/gateway/dist/web/rail.js.map +1 -0
- package/packages/gateway/dist/web/read.d.ts +46 -0
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/read.js +78 -2
- package/packages/gateway/dist/web/read.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +36 -6
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/src/agents/starter/planner/agent.md +2 -2
- package/packages/gateway/src/agents/starter/planner/skills/writing-the-morning-brief.md +18 -11
- package/packages/install/dist/.tsbuildinfo +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/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-4hpqlMjL.css +1 -0
- package/packages/web/dist/assets/index-B8crjABB.js +125 -0
- package/packages/web/dist/assets/{lottie_light-BCNsQpt8.js → lottie_light-e1djomjW.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/sw.js +8 -1
- package/packages/web/dist/assets/index-CBEdA2dN.js +0 -125
- package/packages/web/dist/assets/index-Ddp9egOQ.css +0 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus modes: what is sent and what waits (docs/notifications.md, "Focus").
|
|
3
|
+
*
|
|
4
|
+
* Pure: which focus is on at an instant (a manual one wins over a schedule
|
|
5
|
+
* while it lasts), which kinds it holds, when a duration ends, and the
|
|
6
|
+
* checks for what the owner sends. Holding, releasing and the one message at
|
|
7
|
+
* the end live in `notify.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import { LOCAL_TIME, localDateString, localMinutesOfDay, minutesOfLocalTime, nextLocalTime } from '../time.js';
|
|
10
|
+
import { ALWAYS_REACH, FOCUS_MODES, NOTIFICATION_KINDS, WEEKDAYS, } from './types.js';
|
|
11
|
+
/** How the owner reads a mode. */
|
|
12
|
+
export const FOCUS_LABELS = {
|
|
13
|
+
normal: 'Normal',
|
|
14
|
+
'urgent-only': 'Urgent only',
|
|
15
|
+
'do-not-disturb': 'Do not disturb',
|
|
16
|
+
};
|
|
17
|
+
/** The `now` kinds Urgent only still lets through, beside approvals and questions. */
|
|
18
|
+
export const URGENT_KINDS = new Set(['watcher', 'failure']);
|
|
19
|
+
/** "Until tomorrow morning": the next time the owner's clock reads this. */
|
|
20
|
+
export const FOCUS_MORNING = '08:00';
|
|
21
|
+
/** Does this mode hold a message of this kind and urgency for the end of the focus? */
|
|
22
|
+
export function focusHolds(mode, kind, urgency) {
|
|
23
|
+
if (mode === 'normal' || urgency !== 'now' || ALWAYS_REACH.has(kind))
|
|
24
|
+
return false;
|
|
25
|
+
if (mode === 'urgent-only')
|
|
26
|
+
return !URGENT_KINDS.has(kind);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
/** Every kind this mode holds when it is `now`. */
|
|
30
|
+
export function heldKinds(mode) {
|
|
31
|
+
return NOTIFICATION_KINDS.filter((kind) => focusHolds(mode, kind, 'now'));
|
|
32
|
+
}
|
|
33
|
+
const STRENGTH = { normal: 0, 'urgent-only': 1, 'do-not-disturb': 2 };
|
|
34
|
+
/** The owner's weekday at `at`, `days` back. */
|
|
35
|
+
export function localWeekday(at, timezone, daysBack = 0) {
|
|
36
|
+
const [y, m, d] = localDateString(at, timezone).split('-').map(Number);
|
|
37
|
+
const js = new Date(Date.UTC(y, m - 1, d - daysBack)).getUTCDay();
|
|
38
|
+
return WEEKDAYS[(js + 6) % 7];
|
|
39
|
+
}
|
|
40
|
+
/** The schedule on at `now`, the strongest when two are, with the instant it ends. */
|
|
41
|
+
export function scheduledFocus(schedules, now, timezone) {
|
|
42
|
+
const at = localMinutesOfDay(now, timezone);
|
|
43
|
+
const today = localWeekday(now, timezone);
|
|
44
|
+
const yesterday = localWeekday(now, timezone, 1);
|
|
45
|
+
let best = null;
|
|
46
|
+
for (const s of schedules) {
|
|
47
|
+
const from = minutesOfLocalTime(s.from);
|
|
48
|
+
const to = minutesOfLocalTime(s.to);
|
|
49
|
+
const on = from < to
|
|
50
|
+
? s.days.includes(today) && at >= from && at < to
|
|
51
|
+
: (s.days.includes(today) && at >= from) || (s.days.includes(yesterday) && at < to);
|
|
52
|
+
if (!on)
|
|
53
|
+
continue;
|
|
54
|
+
const until = nextLocalTime(now, timezone, s.to);
|
|
55
|
+
if (!best || STRENGTH[s.mode] > STRENGTH[best.mode] || (s.mode === best.mode && until > best.until)) {
|
|
56
|
+
best = { mode: s.mode, until };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return best ? { mode: best.mode, until: best.until.toISOString(), startedAt: null, by: 'schedule' } : null;
|
|
60
|
+
}
|
|
61
|
+
/** Is the manual focus still in force at `now`? */
|
|
62
|
+
export function manualFocusLasts(focus, now) {
|
|
63
|
+
return focus !== null && (focus.until === null || Date.parse(focus.until) > now.getTime());
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The focus in force at `now`: the manual one while it lasts (a manual
|
|
67
|
+
* `normal` is "turned off" over a schedule, until that schedule ends), else
|
|
68
|
+
* the strongest schedule on, else none.
|
|
69
|
+
*/
|
|
70
|
+
export function activeFocus(settings, now, timezone) {
|
|
71
|
+
if (manualFocusLasts(settings.focus, now)) {
|
|
72
|
+
const f = settings.focus;
|
|
73
|
+
if (f.mode === 'normal')
|
|
74
|
+
return null;
|
|
75
|
+
return { mode: f.mode, until: f.until, startedAt: f.startedAt, by: f.by };
|
|
76
|
+
}
|
|
77
|
+
return scheduledFocus(settings.schedules, now, timezone);
|
|
78
|
+
}
|
|
79
|
+
/** When a focus picked at `now` for `duration` ends; null for "until I turn it off"; undefined when it is not a duration. */
|
|
80
|
+
export function focusEnd(duration, now, timezone) {
|
|
81
|
+
const d = duration.trim().toLowerCase();
|
|
82
|
+
if (d === 'indefinite' || d === 'off' || d === '')
|
|
83
|
+
return null;
|
|
84
|
+
if (d === 'tomorrow')
|
|
85
|
+
return nextLocalTime(now, timezone, FOCUS_MORNING);
|
|
86
|
+
const hours = /^(\d{1,2})h$/.exec(d);
|
|
87
|
+
if (hours) {
|
|
88
|
+
const n = Number(hours[1]);
|
|
89
|
+
if (n >= 1 && n <= 24)
|
|
90
|
+
return new Date(now.getTime() + n * 3_600_000);
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
/** Quiet hours, as the first schedule: Do not disturb on every day. */
|
|
95
|
+
export function schedulesFromQuietHours(start, end) {
|
|
96
|
+
if (!start || !end || start === end)
|
|
97
|
+
return [];
|
|
98
|
+
return [{ mode: 'do-not-disturb', days: [...WEEKDAYS], from: start, to: end }];
|
|
99
|
+
}
|
|
100
|
+
/** Check the schedules the page sent; the list to store, or the sentence that says what is wrong. */
|
|
101
|
+
export function parseFocusSchedules(input) {
|
|
102
|
+
if (input === undefined || input === null)
|
|
103
|
+
return { ok: true, schedules: [] };
|
|
104
|
+
if (!Array.isArray(input))
|
|
105
|
+
return { ok: false, message: 'schedules must be a list.' };
|
|
106
|
+
const out = [];
|
|
107
|
+
for (const [i, raw] of input.entries()) {
|
|
108
|
+
const n = i + 1;
|
|
109
|
+
if (!raw || typeof raw !== 'object')
|
|
110
|
+
return { ok: false, message: `Schedule ${n} must be an object.` };
|
|
111
|
+
const o = raw;
|
|
112
|
+
if (o.mode !== 'urgent-only' && o.mode !== 'do-not-disturb') {
|
|
113
|
+
return { ok: false, message: `Schedule ${n} must be Do not disturb or Urgent only.` };
|
|
114
|
+
}
|
|
115
|
+
if (!Array.isArray(o.days) || o.days.length === 0 || !o.days.every((d) => WEEKDAYS.includes(d))) {
|
|
116
|
+
return { ok: false, message: `Schedule ${n} needs at least one day.` };
|
|
117
|
+
}
|
|
118
|
+
const from = typeof o.from === 'string' ? o.from.trim() : '';
|
|
119
|
+
const to = typeof o.to === 'string' ? o.to.trim() : '';
|
|
120
|
+
if (!LOCAL_TIME.test(from) || !LOCAL_TIME.test(to))
|
|
121
|
+
return { ok: false, message: `Schedule ${n} needs times like 22:00.` };
|
|
122
|
+
if (from === to)
|
|
123
|
+
return { ok: false, message: `Schedule ${n} cannot start and end at the same time.` };
|
|
124
|
+
const days = WEEKDAYS.filter((d) => o.days.includes(d));
|
|
125
|
+
out.push({ mode: o.mode, days, from, to });
|
|
126
|
+
}
|
|
127
|
+
return { ok: true, schedules: out };
|
|
128
|
+
}
|
|
129
|
+
/** A stored focus value, or null when it is not one. */
|
|
130
|
+
export function toFocusSetting(value) {
|
|
131
|
+
if (!value || typeof value !== 'object')
|
|
132
|
+
return null;
|
|
133
|
+
const o = value;
|
|
134
|
+
if (!FOCUS_MODES.includes(o.mode))
|
|
135
|
+
return null;
|
|
136
|
+
if (o.until !== null && typeof o.until !== 'string')
|
|
137
|
+
return null;
|
|
138
|
+
if (typeof o.startedAt !== 'string')
|
|
139
|
+
return null;
|
|
140
|
+
const by = o.by === 'telegram' || o.by === 'schedule' ? o.by : 'dashboard';
|
|
141
|
+
return { mode: o.mode, until: o.until ?? null, startedAt: o.startedAt, by };
|
|
142
|
+
}
|
|
143
|
+
/** Stored schedules, or null when the column was never written. */
|
|
144
|
+
export function toFocusSchedules(value) {
|
|
145
|
+
if (value === null || value === undefined)
|
|
146
|
+
return null;
|
|
147
|
+
const parsed = parseFocusSchedules(value);
|
|
148
|
+
return parsed.ok ? parsed.schedules : [];
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=focus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus.js","sourceRoot":"","sources":["../../src/notifications/focus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Queryable } from '../owner.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { type FocusDuration } from './focus.js';
|
|
3
|
+
import { type FocusMode, type FocusSetting, type FocusState, type NotificationSettings, type NotifyDeps, type NotifyResult, type OwnerMessage } from './types.js';
|
|
3
4
|
/** A `now` message shown on the dashboard goes to the channel after this long unseen. */
|
|
4
5
|
export declare const ESCALATE_AFTER_MS: number;
|
|
5
6
|
/** The rate rule: more than this many fires of one key in an hour lowers `now` to `today`. */
|
|
@@ -8,8 +9,30 @@ export declare const RATE_LIMIT_PER_HOUR = 3;
|
|
|
8
9
|
export declare const LOWERED_SENTENCE = "This came up more than three times in an hour, so it waits for the end of the day.";
|
|
9
10
|
/** The surface whose presence means "shown on the dashboard". */
|
|
10
11
|
export declare const DASHBOARD_SURFACE = "web";
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
type Route = {
|
|
13
|
+
state: 'shown';
|
|
14
|
+
dueAt: Date;
|
|
15
|
+
channel: 'dashboard';
|
|
16
|
+
} | {
|
|
17
|
+
state: 'held';
|
|
18
|
+
dueAt: Date | null;
|
|
19
|
+
heldFor?: FocusMode;
|
|
20
|
+
} | {
|
|
21
|
+
state: 'stored';
|
|
22
|
+
} | {
|
|
23
|
+
state: 'deliver';
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Where a message goes, before any channel is asked. Exported for the
|
|
27
|
+
* routing table's tests; `notifyOwner` is the one caller.
|
|
28
|
+
*/
|
|
29
|
+
export declare function route(message: Pick<OwnerMessage, 'kind' | 'urgency'>, ctx: {
|
|
30
|
+
now: Date;
|
|
31
|
+
timezone: string;
|
|
32
|
+
settings: NotificationSettings;
|
|
33
|
+
onDashboard: boolean;
|
|
34
|
+
focus: FocusState | null;
|
|
35
|
+
}): Route;
|
|
13
36
|
/**
|
|
14
37
|
* Tell the owner something. Writes the row, routes it, and never throws for
|
|
15
38
|
* a channel's sake: a message with nowhere to go is a row with `error`.
|
|
@@ -20,16 +43,52 @@ export declare function notifyOwner(db: Queryable, deps: NotifyDeps, message: Ow
|
|
|
20
43
|
export interface NotificationsTickResult {
|
|
21
44
|
escalated: number;
|
|
22
45
|
endOfDay: number;
|
|
46
|
+
/** Rows told in the one message at the end of a focus. */
|
|
47
|
+
focusEnded: number;
|
|
23
48
|
failed: number;
|
|
24
49
|
}
|
|
25
50
|
/**
|
|
26
51
|
* The later half of routing: runs on the gateway's 60-second loop.
|
|
27
52
|
*
|
|
28
|
-
* 1.
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
53
|
+
* 1. Focus: a `now` row that falls due while a focus holds its kind waits
|
|
54
|
+
* for the end of the focus; when the focus ends, what waited goes out as
|
|
55
|
+
* one message (`settleFocus`).
|
|
56
|
+
* 2. Escalation: a `now` row shown on the dashboard and not seen goes to its
|
|
57
|
+
* channel.
|
|
32
58
|
* 3. End of the day: every held `today` row goes out as one message.
|
|
33
59
|
*/
|
|
34
60
|
export declare function notificationsTick(db: Queryable, deps: NotifyDeps, now?: Date): Promise<NotificationsTickResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Keep held rows in step with the focus in force, and say what waited when
|
|
63
|
+
* it ends.
|
|
64
|
+
*
|
|
65
|
+
* While a focus is on, a `now` row of a kind it holds that falls due on the
|
|
66
|
+
* dashboard unseen is held too, and every row it holds is dated to its end
|
|
67
|
+
* (a longer or shorter focus moves them all). Rows held by a focus that no
|
|
68
|
+
* longer holds them (it ended, was turned off, or became Urgent only) go out
|
|
69
|
+
* as one message on the owner's channel, "While you were in Do not disturb:
|
|
70
|
+
* 4 things.", one line each, and are marked sent in it; nothing held,
|
|
71
|
+
* nothing said. Rows the owner already dealt with are left out.
|
|
72
|
+
*/
|
|
73
|
+
export declare function settleFocus(db: Queryable, settings: NotificationSettings, timezone: string, now: Date): Promise<{
|
|
74
|
+
told: number;
|
|
75
|
+
failed: number;
|
|
76
|
+
}>;
|
|
77
|
+
/** "While you were in Do not disturb: 4 things." */
|
|
78
|
+
export declare function focusSummaryTitle(mode: FocusMode, count: number): string;
|
|
79
|
+
/** The focus in force now, for the owner menu and /focus; null when none is. */
|
|
80
|
+
export declare function readFocusState(db: Queryable, deps?: NotifyDeps): Promise<FocusState | null>;
|
|
81
|
+
/**
|
|
82
|
+
* Switch the manual focus: a mode for a duration (`1h`, `3h`, `tomorrow`,
|
|
83
|
+
* `indefinite`), or `normal` to turn it off. Turning off while a schedule is
|
|
84
|
+
* on keeps it off until that schedule ends: a manual choice wins while it
|
|
85
|
+
* lasts. Held rows are settled at once, so turning off says what waited now,
|
|
86
|
+
* not at the next tick. Throws for a mode or duration that is not one.
|
|
87
|
+
*/
|
|
88
|
+
export declare function setFocus(db: Queryable, deps: NotifyDeps, input: {
|
|
89
|
+
mode: FocusMode;
|
|
90
|
+
duration?: FocusDuration;
|
|
91
|
+
by: FocusSetting['by'];
|
|
92
|
+
}): Promise<FocusState | null>;
|
|
93
|
+
export {};
|
|
35
94
|
//# sourceMappingURL=notify.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/notifications/notify.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/notifications/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,21 +6,22 @@
|
|
|
6
6
|
*
|
|
7
7
|
* now the owner is on the dashboard → shown there; if nobody has seen it
|
|
8
8
|
* in ten minutes, the default channel anyway. Away → the default
|
|
9
|
-
* channel at once.
|
|
10
|
-
* approvals and questions.
|
|
9
|
+
* channel at once. A focus (focus.ts) holds what its mode holds
|
|
10
|
+
* until it ends; approvals and questions always go.
|
|
11
11
|
* today held until the end of the owner's day, then one message for all.
|
|
12
12
|
* digest stored; the recap reads it.
|
|
13
13
|
*
|
|
14
|
-
* `notificationsTick` does the later half: escalations, the end of
|
|
15
|
-
*
|
|
14
|
+
* `notificationsTick` does the later half: escalations, the end of a focus
|
|
15
|
+
* (one message for what waited), the end of the day. Every transition is one UPDATE guarded by the
|
|
16
16
|
* state it leaves, so two ticks never send one row twice.
|
|
17
17
|
*/
|
|
18
18
|
import { getOwnerProfile } from '../onboarding/store.js';
|
|
19
19
|
import { scrubText } from '../secrets/scrub.js';
|
|
20
|
-
import { isKnownTimezone, localDateString,
|
|
20
|
+
import { isKnownTimezone, localDateString, nextLocalTime, timezoneFromEnv } from '../time.js';
|
|
21
21
|
import { channelFor, deliverTo } from './channels.js';
|
|
22
|
+
import { activeFocus, FOCUS_LABELS, focusEnd, focusHolds, heldKinds, scheduledFocus } from './focus.js';
|
|
22
23
|
import { notificationTopic, sameTopic, TOPIC_WINDOW_MS } from './topic.js';
|
|
23
|
-
import { NOTIFICATION_COLUMNS, presentSurfaces, readNotificationSettings, toNotification, } from './store.js';
|
|
24
|
+
import { NOTIFICATION_COLUMNS, presentSurfaces, readNotificationSettings, toNotification, writeFocus, } from './store.js';
|
|
24
25
|
import { ALWAYS_REACH, NOTIFICATION_KINDS, NOTIFICATION_URGENCIES, } from './types.js';
|
|
25
26
|
/** A `now` message shown on the dashboard goes to the channel after this long unseen. */
|
|
26
27
|
export const ESCALATE_AFTER_MS = 10 * 60_000;
|
|
@@ -41,17 +42,11 @@ async function ownerTimezone(db, deps) {
|
|
|
41
42
|
}
|
|
42
43
|
return deps.timezone ?? timezoneFromEnv();
|
|
43
44
|
}
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const end = minutesOfLocalTime(settings.quietEnd);
|
|
50
|
-
const at = localMinutesOfDay(now, timezone);
|
|
51
|
-
const quiet = start < end ? at >= start && at < end : at >= start || at < end;
|
|
52
|
-
return quiet ? nextLocalTime(now, timezone, settings.quietEnd) : null;
|
|
53
|
-
}
|
|
54
|
-
function route(message, ctx) {
|
|
45
|
+
/**
|
|
46
|
+
* Where a message goes, before any channel is asked. Exported for the
|
|
47
|
+
* routing table's tests; `notifyOwner` is the one caller.
|
|
48
|
+
*/
|
|
49
|
+
export function route(message, ctx) {
|
|
55
50
|
const always = ALWAYS_REACH.has(message.kind);
|
|
56
51
|
if (!always && ctx.settings.perKind[message.kind] === 'off')
|
|
57
52
|
return { state: 'stored' };
|
|
@@ -63,9 +58,9 @@ function route(message, ctx) {
|
|
|
63
58
|
if (ctx.onDashboard) {
|
|
64
59
|
return { state: 'shown', dueAt: new Date(ctx.now.getTime() + ESCALATE_AFTER_MS), channel: 'dashboard' };
|
|
65
60
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
if (ctx.focus && focusHolds(ctx.focus.mode, message.kind, message.urgency)) {
|
|
62
|
+
return { state: 'held', dueAt: ctx.focus.until ? new Date(ctx.focus.until) : null, heldFor: ctx.focus.mode };
|
|
63
|
+
}
|
|
69
64
|
return { state: 'deliver' };
|
|
70
65
|
}
|
|
71
66
|
function checkMessage(message) {
|
|
@@ -161,7 +156,8 @@ export async function notifyOwner(db, deps, message) {
|
|
|
161
156
|
}
|
|
162
157
|
const title = lowered ? `${baseTitle} ${LOWERED_SENTENCE}` : baseTitle;
|
|
163
158
|
const onDashboard = (await presentSurfaces(db, now)).includes(DASHBOARD_SURFACE);
|
|
164
|
-
|
|
159
|
+
const focus = activeFocus(settings, now, timezone);
|
|
160
|
+
let next = route({ kind: message.kind, urgency }, { now, timezone, settings, onDashboard, focus });
|
|
165
161
|
// A repeat shown on the dashboard keeps the clock it started, unless the
|
|
166
162
|
// owner had already seen the earlier one: then the new content is unseen.
|
|
167
163
|
if (next.state === 'shown' && existing?.state === 'shown' && existing.seenAt === null && existing.dueAt) {
|
|
@@ -170,16 +166,18 @@ export async function notifyOwner(db, deps, message) {
|
|
|
170
166
|
const state = next.state === 'deliver' ? 'sending' : next.state;
|
|
171
167
|
const dueAt = 'dueAt' in next ? next.dueAt : null;
|
|
172
168
|
const channel = next.state === 'shown' ? 'dashboard' : null;
|
|
169
|
+
const heldFor = next.state === 'held' ? next.heldFor ?? null : null;
|
|
173
170
|
const offers = JSON.stringify(message.offers ?? []);
|
|
174
171
|
let row;
|
|
175
172
|
if (existing) {
|
|
176
173
|
const { rows } = await db.query(`update core.owner_notifications
|
|
177
174
|
set urgency = $2, title = $3, text = $4, link = $5, offers = $6::jsonb, agent_id = coalesce($7, agent_id),
|
|
178
175
|
topic = coalesce($15, topic), plugin_id = coalesce($8, plugin_id), action_id = coalesce($9::uuid, action_id), state = $10, due_at = $11,
|
|
179
|
-
channel = $12, fired_count = fired_count + 1, lowered = $13, seen_at = null, error = null, updated_at = $14
|
|
176
|
+
channel = $12, fired_count = fired_count + 1, lowered = $13, seen_at = null, error = null, updated_at = $14,
|
|
177
|
+
held_for = $16
|
|
180
178
|
where id = $1 and sent_at is null and state in ('shown', 'held', 'stored', 'failed')
|
|
181
179
|
returning ${NOTIFICATION_COLUMNS}`, [existing.id, urgency, title, text, message.link?.route ?? null, offers, message.agentId ?? null,
|
|
182
|
-
message.pluginId ?? null, message.actionId ?? null, state, dueAt, channel, lowered, now, topic]);
|
|
180
|
+
message.pluginId ?? null, message.actionId ?? null, state, dueAt, channel, lowered, now, topic, heldFor]);
|
|
183
181
|
if (rows[0])
|
|
184
182
|
row = toNotification(rows[0]);
|
|
185
183
|
else
|
|
@@ -188,10 +186,10 @@ export async function notifyOwner(db, deps, message) {
|
|
|
188
186
|
if (!existing) {
|
|
189
187
|
const { rows } = await db.query(`insert into core.owner_notifications
|
|
190
188
|
(kind, urgency, title, text, link, offers, dedupe_key, agent_id, plugin_id, action_id, state, due_at, channel,
|
|
191
|
-
lowered, created_at, updated_at, topic)
|
|
192
|
-
values ($1, $2, $3, $4, $5, $6::jsonb, $7, $8, $9, $10::uuid, $11, $12, $13, $14, $15, $15, $16)
|
|
189
|
+
lowered, created_at, updated_at, topic, held_for)
|
|
190
|
+
values ($1, $2, $3, $4, $5, $6::jsonb, $7, $8, $9, $10::uuid, $11, $12, $13, $14, $15, $15, $16, $17)
|
|
193
191
|
returning ${NOTIFICATION_COLUMNS}`, [message.kind, urgency, title, text, message.link?.route ?? null, offers, dedupeKey, message.agentId ?? null,
|
|
194
|
-
message.pluginId ?? null, message.actionId ?? null, state, dueAt, channel, lowered, now, topic]);
|
|
192
|
+
message.pluginId ?? null, message.actionId ?? null, state, dueAt, channel, lowered, now, topic, heldFor]);
|
|
195
193
|
row = toNotification(rows[0]);
|
|
196
194
|
}
|
|
197
195
|
row = row;
|
|
@@ -243,25 +241,24 @@ async function foldIntoTopic(db, message, now) {
|
|
|
243
241
|
/**
|
|
244
242
|
* The later half of routing: runs on the gateway's 60-second loop.
|
|
245
243
|
*
|
|
246
|
-
* 1.
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
244
|
+
* 1. Focus: a `now` row that falls due while a focus holds its kind waits
|
|
245
|
+
* for the end of the focus; when the focus ends, what waited goes out as
|
|
246
|
+
* one message (`settleFocus`).
|
|
247
|
+
* 2. Escalation: a `now` row shown on the dashboard and not seen goes to its
|
|
248
|
+
* channel.
|
|
250
249
|
* 3. End of the day: every held `today` row goes out as one message.
|
|
251
250
|
*/
|
|
252
251
|
export async function notificationsTick(db, deps, now = deps.now?.() ?? new Date()) {
|
|
253
252
|
const timezone = await ownerTimezone(db, deps);
|
|
254
253
|
const settings = await readNotificationSettings(db);
|
|
255
|
-
const outcome = { escalated: 0, endOfDay: 0, failed: 0 };
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
and ((state = 'shown' and seen_at is null) or state = 'held')`, [now, quiet]);
|
|
261
|
-
}
|
|
254
|
+
const outcome = { escalated: 0, endOfDay: 0, focusEnded: 0, failed: 0 };
|
|
255
|
+
const settled = await settleFocus(db, settings, timezone, now);
|
|
256
|
+
outcome.focusEnded = settled.told;
|
|
257
|
+
outcome.failed += settled.failed;
|
|
258
|
+
// A row held by a focus waits for `settleFocus`, never for its own `due_at`.
|
|
262
259
|
const { rows: claimed } = await db.query(`update core.owner_notifications set state = 'sending', updated_at = $1
|
|
263
260
|
where urgency = 'now' and due_at <= $1 and acted_at is null
|
|
264
|
-
and ((state = 'shown' and seen_at is null) or state = 'held')
|
|
261
|
+
and ((state = 'shown' and seen_at is null) or (state = 'held' and held_for is null))
|
|
265
262
|
returning ${NOTIFICATION_COLUMNS}`, [now]);
|
|
266
263
|
for (const raw of claimed) {
|
|
267
264
|
const sent = await sendClaimed(db, toNotification(raw), settings, now);
|
|
@@ -302,4 +299,92 @@ export async function notificationsTick(db, deps, now = deps.now?.() ?? new Date
|
|
|
302
299
|
}
|
|
303
300
|
return outcome;
|
|
304
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Keep held rows in step with the focus in force, and say what waited when
|
|
304
|
+
* it ends.
|
|
305
|
+
*
|
|
306
|
+
* While a focus is on, a `now` row of a kind it holds that falls due on the
|
|
307
|
+
* dashboard unseen is held too, and every row it holds is dated to its end
|
|
308
|
+
* (a longer or shorter focus moves them all). Rows held by a focus that no
|
|
309
|
+
* longer holds them (it ended, was turned off, or became Urgent only) go out
|
|
310
|
+
* as one message on the owner's channel, "While you were in Do not disturb:
|
|
311
|
+
* 4 things.", one line each, and are marked sent in it; nothing held,
|
|
312
|
+
* nothing said. Rows the owner already dealt with are left out.
|
|
313
|
+
*/
|
|
314
|
+
export async function settleFocus(db, settings, timezone, now) {
|
|
315
|
+
const focus = activeFocus(settings, now, timezone);
|
|
316
|
+
const holding = focus ? heldKinds(focus.mode) : [];
|
|
317
|
+
if (focus && holding.length > 0) {
|
|
318
|
+
await db.query(`update core.owner_notifications set state = 'held', due_at = $2, held_for = $3, updated_at = $1
|
|
319
|
+
where urgency = 'now' and acted_at is null and kind = any($4::text[])
|
|
320
|
+
and ((state = 'shown' and seen_at is null and due_at <= $1) or (state = 'held' and held_for is not null))`, [now, focus.until, focus.mode, holding]);
|
|
321
|
+
}
|
|
322
|
+
await db.query(`update core.owner_notifications set state = 'stored', updated_at = $1
|
|
323
|
+
where state = 'held' and held_for is not null and acted_at is not null and not (kind = any($2::text[]))`, [now, holding]);
|
|
324
|
+
const { rows: claimed } = await db.query(`update core.owner_notifications set state = 'sending', updated_at = $1
|
|
325
|
+
where state = 'held' and held_for is not null and acted_at is null and not (kind = any($2::text[]))
|
|
326
|
+
returning ${NOTIFICATION_COLUMNS}`, [now, holding]);
|
|
327
|
+
if (claimed.length === 0)
|
|
328
|
+
return { told: 0, failed: 0 };
|
|
329
|
+
const rows = claimed.map(toNotification).sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
330
|
+
const mode = rows.some((r) => r.heldFor === 'do-not-disturb') ? 'do-not-disturb' : 'urgent-only';
|
|
331
|
+
const message = {
|
|
332
|
+
id: `focus:${now.toISOString()}`,
|
|
333
|
+
kind: 'recap',
|
|
334
|
+
urgency: 'now',
|
|
335
|
+
title: focusSummaryTitle(mode, rows.length),
|
|
336
|
+
text: rows.map((r) => `- ${r.agentId ?? r.pluginId ?? 'buddi'}: ${r.title}`).join('\n'),
|
|
337
|
+
parts: rows.map(toDeliverable),
|
|
338
|
+
};
|
|
339
|
+
const kind = await channelFor(settings);
|
|
340
|
+
const answer = kind === null || kind === 'off' ? { ok: false, error: 'no channel' } : await deliverTo(kind, message);
|
|
341
|
+
const ids = rows.map((r) => r.id);
|
|
342
|
+
if (answer.ok) {
|
|
343
|
+
await db.query(`update core.owner_notifications set state = 'sent', channel = $2, sent_at = $3, error = null, updated_at = $3
|
|
344
|
+
where id = any($1::uuid[]) and state = 'sending'`, [ids, kind, now]);
|
|
345
|
+
return { told: rows.length, failed: 0 };
|
|
346
|
+
}
|
|
347
|
+
await db.query(`update core.owner_notifications set state = 'failed', channel = $2, error = $3, updated_at = $4
|
|
348
|
+
where id = any($1::uuid[]) and state = 'sending'`, [ids, kind === 'off' ? null : kind, answer.error, now]);
|
|
349
|
+
return { told: 0, failed: rows.length };
|
|
350
|
+
}
|
|
351
|
+
/** "While you were in Do not disturb: 4 things." */
|
|
352
|
+
export function focusSummaryTitle(mode, count) {
|
|
353
|
+
return `While you were in ${FOCUS_LABELS[mode]}: ${count} ${count === 1 ? 'thing' : 'things'}.`;
|
|
354
|
+
}
|
|
355
|
+
/** The focus in force now, for the owner menu and /focus; null when none is. */
|
|
356
|
+
export async function readFocusState(db, deps = {}) {
|
|
357
|
+
const now = deps.now?.() ?? new Date();
|
|
358
|
+
return activeFocus(await readNotificationSettings(db), now, await ownerTimezone(db, deps));
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Switch the manual focus: a mode for a duration (`1h`, `3h`, `tomorrow`,
|
|
362
|
+
* `indefinite`), or `normal` to turn it off. Turning off while a schedule is
|
|
363
|
+
* on keeps it off until that schedule ends: a manual choice wins while it
|
|
364
|
+
* lasts. Held rows are settled at once, so turning off says what waited now,
|
|
365
|
+
* not at the next tick. Throws for a mode or duration that is not one.
|
|
366
|
+
*/
|
|
367
|
+
export async function setFocus(db, deps, input) {
|
|
368
|
+
const now = deps.now?.() ?? new Date();
|
|
369
|
+
const timezone = await ownerTimezone(db, deps);
|
|
370
|
+
const settings = await readNotificationSettings(db);
|
|
371
|
+
let focus;
|
|
372
|
+
if (input.mode === 'normal') {
|
|
373
|
+
const scheduled = scheduledFocus(settings.schedules, now, timezone);
|
|
374
|
+
focus = scheduled ? { mode: 'normal', until: scheduled.until, startedAt: now.toISOString(), by: input.by } : null;
|
|
375
|
+
}
|
|
376
|
+
else if (input.mode === 'urgent-only' || input.mode === 'do-not-disturb') {
|
|
377
|
+
const end = focusEnd(input.duration ?? 'indefinite', now, timezone);
|
|
378
|
+
if (end === undefined)
|
|
379
|
+
throw new Error(`"${String(input.duration)}" is not a duration (1h, 3h, tomorrow or indefinite)`);
|
|
380
|
+
focus = { mode: input.mode, until: end?.toISOString() ?? null, startedAt: now.toISOString(), by: input.by };
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
throw new Error(`"${String(input.mode)}" is not a focus mode`);
|
|
384
|
+
}
|
|
385
|
+
await writeFocus(db, focus);
|
|
386
|
+
const next = { ...settings, focus };
|
|
387
|
+
await settleFocus(db, next, timezone, now);
|
|
388
|
+
return activeFocus(next, now, timezone);
|
|
389
|
+
}
|
|
305
390
|
//# sourceMappingURL=notify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/notifications/notify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,GAQvB,MAAM,YAAY,CAAC;AAEpB,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,MAAM,CAAC;AAE7C,8FAA8F;AAC9F,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,oEAAoE;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,oFAAoF,CAAC;AAErH,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC,KAAK,UAAU,aAAa,CAAC,EAAa,EAAE,IAAgB;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;AAC5C,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,UAAU,CAAC,QAA8B,EAAE,GAAS,EAAE,QAAgB;IACpF,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC;IAC9E,OAAO,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAQD,SAAS,KAAK,CACZ,OAA+C,EAC/C,GAA0F;IAE1F,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACxF,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7D,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC1G,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9E,IAAI,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAClD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,OAAqB;IACzC,IAAI,CAAE,kBAAwC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAE,sBAA4C,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACtH,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAsB;IAC3C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CACxB,EAAa,EACb,GAAsB,EACtB,QAA8B,EAC9B,GAAS;IAET,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,KAAK,CACZ,2GAA2G,EAC3G,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CACd,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACxH,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,KAAK,CACZ;4CACsC,EACtC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CACpB,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,EAAE,CAAC,KAAK,CACZ;0CACsC,EACtC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACnC,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAa,EAAE,IAAgB,EAAE,OAAqB;IACtF,YAAY,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IAEpD,8EAA8E;IAC9E,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1E,4EAA4E;IAC5E,IAAI,QAAQ,GAA6B,IAAI,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B,UAAU,oBAAoB;;yCAEK,EACnC,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAC5B;kDAC4C,EAC5C,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CACjD,CAAC;QACF,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,yEAAyE;IACzE,oEAAoE;IACpE,uEAAuE;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;IACtH,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QACtG,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;IAC5B,CAAC;IAED,4DAA4D;IAC5D,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC9B,IAAI,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,KAAK,CAAC;IACzC,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,KAAK,GAAG,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAC9F,OAAO,GAAG,OAAO,CAAC;QAClB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,MAAM,WAAW,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACjF,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC5F,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,QAAQ,EAAE,KAAK,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxG,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,KAAK,GAAsB,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACnF,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAEpD,IAAI,GAAsB,CAAC;IAC3B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B;;;;;oBAKc,oBAAoB,EAAE,EACpC,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAC9F,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAClG,CAAC;QACF,IAAI,IAAI,CAAC,CAAC,CAAC;YAAE,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;YACtC,QAAQ,GAAG,IAAI,CAAC,CAAC,wEAAwE;IAChG,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B;;;;mBAIa,oBAAoB,EAAE,EACnC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAC1G,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAClG,CAAC;QACF,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,GAAG,GAAG,GAAI,CAAC;IAEX,MAAM,MAAM,GAAiB;QAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,QAAQ,KAAK,IAAI;QAC1B,OAAO;KACR,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,aAAa,CAC1B,EAAa,EACb,OAAoH,EACpH,GAAS;IAET,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B,UAAU,oBAAoB;;;wCAGM,EACpC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAC/D,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAChH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IAC7H,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CACtC;;;;;;kBAMc,oBAAoB,EAAE,EACpC,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,oEAAoE;IAClG,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AACvH,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAa,EAAE,IAAgB,EAAE,MAAY,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE;IAC7G,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAA4B,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAElF,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,CAAC,KAAK,CACZ;;wEAEkE,EAClE,CAAC,GAAG,EAAE,KAAK,CAAC,CACb,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CACtC;;;kBAGc,oBAAoB,EAAE,EACpC,CAAC,GAAG,CAAC,CACN,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,uEAAuE;IACvE,MAAM,EAAE,CAAC,KAAK,CACZ;0EACsE,EACtE,CAAC,GAAG,CAAC,CACN,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CACpC;;kBAEc,oBAAoB,EAAE,EACpC,CAAC,GAAG,CAAC,CACN,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,OAAO,GAAuB;YAClC,EAAE,EAAE,SAAS,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE;YAC7C,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,UAAU,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GAAG;YACzE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACvF,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;SAC/B,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9H,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,EAAE,CAAC,KAAK,CACZ;2DACmD,EACnD,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CACjB,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,CAAC,KAAK,CACZ;2DACmD,EACnD,CAAC,GAAG,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CACvD,CAAC;YACF,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../src/notifications/notify.ts"],"names":[],"mappings":"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"}
|