Push could only reach one mobile device per user (a token file), quiet hours did not exist, and the web app had no service worker, so a closed tab never heard about finished work. This lands the shared interfaces first so onboarding can build on them: - push_subscriptions (web push endpoints and Expo tokens, one row per device) and user_notification_settings (quiet hours as minutes in the profile time zone, nudges, a per-day nudge counter), with CHECK constraints. - NotificationSettingsSchema and web push contracts, notifications.settings.get/update and notifications.webPush.config/subscribe/unsubscribe (owner-scoped, https endpoints only). - getNotificationSettings/updateNotificationSettings plus the policy and nudge-cap helpers. - VAPID keys from VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEY or generated once and stored encrypted, and an SSRF-guarded web push sender built on the web-push package. - The web app links its manifest, registers a push-only service worker where supported (secure context, not the desktop app) and exposes webPushSupported/webPushEnabled/enableWebPush/ disableWebPush. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRtGG9ARfqqhma3t85Ro2u
59 lines
1.6 KiB
JSON
59 lines
1.6 KiB
JSON
{
|
|
"name": "@rakazo/adapters",
|
|
"version": "0.1.0",
|
|
"license": "Apache-2.0",
|
|
"type": "module",
|
|
"exports": {
|
|
".": "./src/index.ts"
|
|
},
|
|
"scripts": {
|
|
"check": "tsc --noEmit -p tsconfig.json",
|
|
"test": "vitest run --root ../.. packages/adapters/src"
|
|
},
|
|
"dependencies": {
|
|
"@asciidev/box-sdk": "0.0.34",
|
|
"@chat-adapter/slack": "4.40.0",
|
|
"@chat-adapter/state-memory": "4.40.0",
|
|
"@chat-adapter/telegram": "4.40.0",
|
|
"@chat-adapter/whatsapp": "4.40.0",
|
|
"@composio/core": "0.18.1",
|
|
"@daytona/sdk": "0.211.2",
|
|
"@e2b/desktop": "2.4.0",
|
|
"@earendil-works/pi-agent-core": "0.85.1",
|
|
"@earendil-works/pi-ai": "0.85.1",
|
|
"@modelcontextprotocol/sdk": "1.30.0",
|
|
"@mozilla/readability": "0.6.0",
|
|
"@observablehq/plot": "0.6.17",
|
|
"@rakazo/adapter-kit": "workspace:*",
|
|
"@rakazo/contracts": "workspace:*",
|
|
"@rakazo/core": "workspace:*",
|
|
"@rakazo/db": "workspace:*",
|
|
"@rakazo/logging": "workspace:*",
|
|
"chat": "4.40.0",
|
|
"chat-adapter-lark": "0.3.1",
|
|
"chat-adapter-sendblue": "0.2.0",
|
|
"d3-dsv": "3.0.1",
|
|
"graphile-worker": "0.17.3",
|
|
"jsdom": "30.0.1",
|
|
"koffi": "3.2.1",
|
|
"nodemailer": "10.0.3",
|
|
"pg": "8.23.0",
|
|
"sendblue": "3.16.1",
|
|
"sharp": "0.35.4",
|
|
"shell-quote": "1.10.0",
|
|
"undici": "8.10.2",
|
|
"web-push": "3.6.7",
|
|
"zod": "4.6.2"
|
|
},
|
|
"devDependencies": {
|
|
"@chat-adapter/tests": "4.40.0",
|
|
"@types/d3-dsv": "3.0.7",
|
|
"@types/jsdom": "30.0.0",
|
|
"@types/nodemailer": "8.0.1",
|
|
"@types/pg": "8.23.1",
|
|
"@types/web-push": "3.6.4",
|
|
"typescript": "7.0.2",
|
|
"vitest": "4.1.11"
|
|
}
|
|
}
|