@cloudcli-ai/cloudcli 1.34.0 → 1.35.1
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.de.md +9 -1
- package/README.ja.md +8 -0
- package/README.ko.md +9 -1
- package/README.md +23 -5
- package/README.ru.md +9 -1
- package/README.tr.md +8 -1
- package/README.zh-CN.md +9 -1
- package/README.zh-TW.md +9 -1
- package/dist/api-docs.html +36 -18
- package/dist/assets/index-BvX30NW5.css +32 -0
- package/dist/assets/index-D1IdCTT6.js +1418 -0
- package/dist/index.html +12 -4
- package/dist-server/server/browser-use-mcp.js +350 -0
- package/dist-server/server/browser-use-mcp.js.map +1 -0
- package/dist-server/server/claude-sdk.js +25 -5
- package/dist-server/server/claude-sdk.js.map +1 -1
- package/dist-server/server/cli.js +14 -6
- package/dist-server/server/cli.js.map +1 -1
- package/dist-server/server/cursor-cli.js +27 -11
- package/dist-server/server/cursor-cli.js.map +1 -1
- package/dist-server/server/gemini-cli.js +17 -2
- package/dist-server/server/gemini-cli.js.map +1 -1
- package/dist-server/server/index.js +136 -40
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/load-env.js +1 -1
- package/dist-server/server/load-env.js.map +1 -1
- package/dist-server/server/modules/browser-use/browser-use-mcp.routes.js +107 -0
- package/dist-server/server/modules/browser-use/browser-use-mcp.routes.js.map +1 -0
- package/dist-server/server/modules/browser-use/browser-use.routes.js +93 -0
- package/dist-server/server/modules/browser-use/browser-use.routes.js.map +1 -0
- package/dist-server/server/modules/browser-use/browser-use.service.js +688 -0
- package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -0
- package/dist-server/server/modules/browser-use/tests/browser-use.service.test.js +8 -0
- package/dist-server/server/modules/browser-use/tests/browser-use.service.test.js.map +1 -0
- package/dist-server/server/modules/database/index.js +1 -0
- package/dist-server/server/modules/database/index.js.map +1 -1
- package/dist-server/server/modules/database/migrations.js +23 -1
- package/dist-server/server/modules/database/migrations.js.map +1 -1
- package/dist-server/server/modules/database/repositories/notification-channel-endpoints.js +100 -0
- package/dist-server/server/modules/database/repositories/notification-channel-endpoints.js.map +1 -0
- package/dist-server/server/modules/database/repositories/notification-preferences.js +8 -0
- package/dist-server/server/modules/database/repositories/notification-preferences.js.map +1 -1
- package/dist-server/server/modules/database/repositories/sessions.db.js +173 -17
- package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
- package/dist-server/server/modules/database/schema.js +26 -0
- package/dist-server/server/modules/database/schema.js.map +1 -1
- package/dist-server/server/modules/database/tests/projects.db.integration.test.js.map +1 -0
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +78 -0
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -0
- package/dist-server/server/modules/database/{repositories → tests}/sessions.db.integration.test.js +10 -0
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -0
- package/dist-server/server/modules/notifications/index.js +4 -0
- package/dist-server/server/modules/notifications/index.js.map +1 -0
- package/dist-server/server/modules/notifications/notifications.routes.js +115 -0
- package/dist-server/server/modules/notifications/notifications.routes.js.map +1 -0
- package/dist-server/server/modules/notifications/services/desktop-notification-clients.service.js +97 -0
- package/dist-server/server/modules/notifications/services/desktop-notification-clients.service.js.map +1 -0
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +229 -0
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -0
- package/dist-server/server/modules/notifications/websocket/desktop-notifications-websocket.service.js +79 -0
- package/dist-server/server/modules/notifications/websocket/desktop-notifications-websocket.service.js.map +1 -0
- package/dist-server/server/modules/projects/services/project-management.service.js +0 -4
- package/dist-server/server/modules/projects/services/project-management.service.js.map +1 -1
- package/dist-server/server/modules/projects/services/projects-with-sessions-fetch.service.js +10 -38
- package/dist-server/server/modules/projects/services/projects-with-sessions-fetch.service.js.map +1 -1
- package/dist-server/server/modules/providers/index.js +1 -0
- package/dist-server/server/modules/providers/index.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js +24 -1
- package/dist-server/server/modules/providers/list/claude/claude-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +9 -12
- package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js +7 -0
- package/dist-server/server/modules/providers/list/claude/claude-skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +7 -3
- package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +3 -9
- package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-skills.provider.js +7 -0
- package/dist-server/server/modules/providers/list/codex/codex-skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js +13 -22
- package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-skills.provider.js +7 -0
- package/dist-server/server/modules/providers/list/cursor/cursor-skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/gemini/gemini-models.provider.js +5 -8
- package/dist-server/server/modules/providers/list/gemini/gemini-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js +6 -6
- package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/gemini/gemini-skills.provider.js +7 -0
- package/dist-server/server/modules/providers/list/gemini/gemini-skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +17 -3
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js +9 -10
- package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js.map +1 -1
- package/dist-server/server/modules/providers/provider.routes.js +123 -1
- package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
- package/dist-server/server/modules/providers/services/mcp.service.js +23 -0
- package/dist-server/server/modules/providers/services/mcp.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/provider-capabilities.service.js +65 -0
- package/dist-server/server/modules/providers/services/provider-capabilities.service.js.map +1 -0
- package/dist-server/server/modules/providers/services/provider-models.service.js +1 -1
- package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/sessions-watcher.service.js +62 -23
- package/dist-server/server/modules/providers/services/sessions-watcher.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/sessions.service.js +62 -4
- package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
- package/dist-server/server/modules/providers/services/skills.service.js +11 -0
- package/dist-server/server/modules/providers/services/skills.service.js.map +1 -1
- package/dist-server/server/modules/providers/shared/skills/skills.provider.js +163 -1
- package/dist-server/server/modules/providers/shared/skills/skills.provider.js.map +1 -1
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +45 -0
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/skills.test.js +160 -0
- package/dist-server/server/modules/providers/tests/skills.test.js.map +1 -1
- package/dist-server/server/modules/websocket/index.js +1 -0
- package/dist-server/server/modules/websocket/index.js.map +1 -1
- package/dist-server/server/modules/websocket/services/chat-run-registry.service.js +252 -0
- package/dist-server/server/modules/websocket/services/chat-run-registry.service.js.map +1 -0
- package/dist-server/server/modules/websocket/services/chat-session-writer.service.js +105 -0
- package/dist-server/server/modules/websocket/services/chat-session-writer.service.js.map +1 -0
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js +218 -156
- package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js +83 -31
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
- package/dist-server/server/modules/websocket/services/websocket-server.service.js +5 -0
- package/dist-server/server/modules/websocket/services/websocket-server.service.js.map +1 -1
- package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js +216 -0
- package/dist-server/server/modules/websocket/tests/chat-run-registry.test.js.map +1 -0
- package/dist-server/server/openai-codex.js +24 -14
- package/dist-server/server/openai-codex.js.map +1 -1
- package/dist-server/server/opencode-cli.js +21 -8
- package/dist-server/server/opencode-cli.js.map +1 -1
- package/dist-server/server/opencode-cli.test.js +19 -1
- package/dist-server/server/opencode-cli.test.js.map +1 -1
- package/dist-server/server/routes/settings.js +1 -1
- package/dist-server/server/routes/settings.js.map +1 -1
- package/dist-server/server/services/notification-orchestrator.js +1 -176
- package/dist-server/server/services/notification-orchestrator.js.map +1 -1
- package/dist-server/server/services/tests/notification-orchestrator.test.js +64 -0
- package/dist-server/server/services/tests/notification-orchestrator.test.js.map +1 -0
- package/dist-server/server/shared/{claude-cli-path.test.js → tests/claude-cli-path.test.js} +1 -1
- package/dist-server/server/shared/tests/claude-cli-path.test.js.map +1 -0
- package/dist-server/server/shared/tests/slice-tail-page.test.js +35 -0
- package/dist-server/server/shared/tests/slice-tail-page.test.js.map +1 -0
- package/dist-server/server/shared/utils.js +73 -1
- package/dist-server/server/shared/utils.js.map +1 -1
- package/dist-server/server/voice-proxy.js +226 -0
- package/dist-server/server/voice-proxy.js.map +1 -0
- package/electron/assets/logo-macos.icns +0 -0
- package/electron/assets/logo-macos.png +0 -0
- package/electron/assets/logo-windows.ico +0 -0
- package/electron/cloud.js +260 -0
- package/electron/desktopNotifications.js +378 -0
- package/electron/desktopWindow.js +766 -0
- package/electron/launcher/index.html +14 -0
- package/electron/launcher/launcher.css +801 -0
- package/electron/launcher/launcher.js +687 -0
- package/electron/localServer.js +550 -0
- package/electron/main.js +944 -0
- package/electron/preload.cjs +60 -0
- package/electron/scripts/generate-macos-icon.js +62 -0
- package/electron/serverInstaller.js +277 -0
- package/electron/tabs.js +87 -0
- package/electron/viewHost.js +331 -0
- package/package.json +79 -3
- package/public/api-docs.html +36 -18
- package/scripts/release/build-server-bundle.js +176 -0
- package/scripts/release/prepare-desktop-app.js +152 -0
- package/server/browser-use-mcp.ts +384 -0
- package/server/claude-sdk.js +27 -5
- package/server/cli.js +15 -6
- package/server/cursor-cli.js +27 -11
- package/server/gemini-cli.js +17 -2
- package/server/index.js +137 -47
- package/server/load-env.js +1 -1
- package/server/modules/browser-use/browser-use-mcp.routes.ts +120 -0
- package/server/modules/browser-use/browser-use.routes.ts +96 -0
- package/server/modules/browser-use/browser-use.service.ts +836 -0
- package/server/modules/browser-use/tests/browser-use.service.test.ts +10 -0
- package/server/modules/database/index.ts +1 -0
- package/server/modules/database/migrations.ts +25 -0
- package/server/modules/database/repositories/notification-channel-endpoints.ts +153 -0
- package/server/modules/database/repositories/notification-preferences.ts +12 -1
- package/server/modules/database/repositories/sessions.db.ts +227 -23
- package/server/modules/database/schema.ts +27 -0
- package/server/modules/database/tests/sessions-provider-mapping.test.ts +108 -0
- package/server/modules/database/{repositories → tests}/sessions.db.integration.test.ts +12 -0
- package/server/modules/notifications/index.ts +13 -0
- package/server/modules/notifications/notifications.routes.ts +127 -0
- package/server/modules/notifications/services/desktop-notification-clients.service.ts +124 -0
- package/server/modules/notifications/services/notification-orchestrator.service.js +288 -0
- package/server/modules/notifications/websocket/desktop-notifications-websocket.service.ts +109 -0
- package/server/modules/projects/services/project-management.service.ts +0 -8
- package/server/modules/projects/services/projects-with-sessions-fetch.service.ts +12 -53
- package/server/modules/providers/README.md +1 -1
- package/server/modules/providers/index.ts +1 -0
- package/server/modules/providers/list/claude/claude-session-synchronizer.provider.ts +26 -1
- package/server/modules/providers/list/claude/claude-sessions.provider.ts +9 -14
- package/server/modules/providers/list/claude/claude-skills.provider.ts +8 -0
- package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +7 -3
- package/server/modules/providers/list/codex/codex-sessions.provider.ts +3 -12
- package/server/modules/providers/list/codex/codex-skills.provider.ts +8 -0
- package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +13 -22
- package/server/modules/providers/list/cursor/cursor-skills.provider.ts +8 -0
- package/server/modules/providers/list/gemini/gemini-models.provider.ts +5 -8
- package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +6 -6
- package/server/modules/providers/list/gemini/gemini-skills.provider.ts +8 -0
- package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +18 -4
- package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +9 -12
- package/server/modules/providers/provider.routes.ts +167 -1
- package/server/modules/providers/services/mcp.service.ts +26 -0
- package/server/modules/providers/services/provider-capabilities.service.ts +91 -0
- package/server/modules/providers/services/provider-models.service.ts +1 -1
- package/server/modules/providers/services/sessions-watcher.service.ts +71 -25
- package/server/modules/providers/services/sessions.service.ts +79 -4
- package/server/modules/providers/services/skills.service.ts +25 -1
- package/server/modules/providers/shared/skills/skills.provider.ts +223 -0
- package/server/modules/providers/tests/opencode-sessions.test.ts +49 -0
- package/server/modules/providers/tests/skills.test.ts +212 -0
- package/server/modules/websocket/README.md +33 -27
- package/server/modules/websocket/index.ts +1 -0
- package/server/modules/websocket/services/chat-run-registry.service.ts +327 -0
- package/server/modules/websocket/services/chat-session-writer.service.ts +145 -0
- package/server/modules/websocket/services/chat-websocket.service.ts +292 -207
- package/server/modules/websocket/services/shell-websocket.service.ts +108 -32
- package/server/modules/websocket/services/websocket-server.service.ts +6 -0
- package/server/modules/websocket/tests/chat-run-registry.test.ts +244 -0
- package/server/openai-codex.js +24 -14
- package/server/opencode-cli.js +21 -8
- package/server/opencode-cli.test.js +20 -1
- package/server/routes/settings.js +6 -1
- package/server/services/notification-orchestrator.js +3 -224
- package/server/services/tests/notification-orchestrator.test.js +80 -0
- package/server/shared/interfaces.ts +15 -0
- package/server/shared/tests/slice-tail-page.test.ts +42 -0
- package/server/shared/types.ts +84 -1
- package/server/shared/utils.ts +95 -1
- package/server/voice-proxy.js +224 -0
- package/dist/assets/index-73Xw3i9v.css +0 -32
- package/dist/assets/index-BIHaviaA.js +0 -1361
- package/dist/modelConstants.js +0 -854
- package/dist-server/server/modules/database/repositories/projects.db.integration.test.js.map +0 -1
- package/dist-server/server/modules/database/repositories/sessions.db.integration.test.js.map +0 -1
- package/dist-server/server/shared/claude-cli-path.test.js.map +0 -1
- package/public/modelConstants.js +0 -854
- /package/dist-server/server/modules/database/{repositories → tests}/projects.db.integration.test.js +0 -0
- /package/server/modules/database/{repositories → tests}/projects.db.integration.test.ts +0 -0
- /package/server/shared/{claude-cli-path.test.ts → tests/claude-cli-path.test.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-use.service.js","sourceRoot":"","sources":["../../../../server/modules/browser-use/browser-use.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { browserUseService } from '../../../modules/browser-use/browser-use.service.js';
|
|
4
|
+
test('browser monitor list starts empty without agent sessions', async () => {
|
|
5
|
+
const sessions = await browserUseService.listSessions();
|
|
6
|
+
assert.deepEqual(sessions, []);
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=browser-use.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-use.service.test.js","sourceRoot":"","sources":["../../../../../server/modules/browser-use/tests/browser-use.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;IAC1E,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC;IAExD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ export { apiKeysDb } from '../../modules/database/repositories/api-keys.js';
|
|
|
4
4
|
export { appConfigDb } from '../../modules/database/repositories/app-config.js';
|
|
5
5
|
export { credentialsDb } from '../../modules/database/repositories/credentials.js';
|
|
6
6
|
export { githubTokensDb } from '../../modules/database/repositories/github-tokens.js';
|
|
7
|
+
export { notificationChannelEndpointsDb } from '../../modules/database/repositories/notification-channel-endpoints.js';
|
|
7
8
|
export { notificationPreferencesDb } from '../../modules/database/repositories/notification-preferences.js';
|
|
8
9
|
export { projectsDb } from '../../modules/database/repositories/projects.db.js';
|
|
9
10
|
export { pushSubscriptionsDb } from '../../modules/database/repositories/push-subscriptions.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/modules/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/modules/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mEAAmE,CAAC;AACnH,OAAO,EAAE,yBAAyB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APP_CONFIG_TABLE_SCHEMA_SQL, LAST_SCANNED_AT_SQL, PROJECTS_TABLE_SCHEMA_SQL, PUSH_SUBSCRIPTIONS_TABLE_SCHEMA_SQL, SESSIONS_TABLE_SCHEMA_SQL, USER_NOTIFICATION_PREFERENCES_TABLE_SCHEMA_SQL, VAPID_KEYS_TABLE_SCHEMA_SQL, } from '../../modules/database/schema.js';
|
|
1
|
+
import { APP_CONFIG_TABLE_SCHEMA_SQL, LAST_SCANNED_AT_SQL, NOTIFICATION_CHANNEL_ENDPOINTS_TABLE_SCHEMA_SQL, PROJECTS_TABLE_SCHEMA_SQL, PUSH_SUBSCRIPTIONS_TABLE_SCHEMA_SQL, SESSIONS_TABLE_SCHEMA_SQL, USER_NOTIFICATION_PREFERENCES_TABLE_SCHEMA_SQL, VAPID_KEYS_TABLE_SCHEMA_SQL, } from '../../modules/database/schema.js';
|
|
2
2
|
const SQLITE_UUID_SQL = `
|
|
3
3
|
lower(hex(randomblob(4))) || '-' ||
|
|
4
4
|
lower(hex(randomblob(2))) || '-' ||
|
|
@@ -323,6 +323,23 @@ const rebuildSessionsTableWithProjectSchema = (db) => {
|
|
|
323
323
|
db.exec('PRAGMA foreign_keys = ON');
|
|
324
324
|
}
|
|
325
325
|
};
|
|
326
|
+
/**
|
|
327
|
+
* Adds the `provider_session_id` mapping column used by the session gateway.
|
|
328
|
+
*
|
|
329
|
+
* Rows that existed before this migration were always keyed directly by the
|
|
330
|
+
* provider-native session id, so backfilling `provider_session_id` with
|
|
331
|
+
* `session_id` keeps every legacy row resolvable through the new mapping.
|
|
332
|
+
*/
|
|
333
|
+
const addProviderSessionIdMapping = (db) => {
|
|
334
|
+
const sessionsTableInfo = getTableInfo(db, 'sessions');
|
|
335
|
+
const columnNames = sessionsTableInfo.map((column) => column.name);
|
|
336
|
+
addColumnToTableIfNotExists(db, 'sessions', columnNames, 'provider_session_id', 'TEXT');
|
|
337
|
+
db.exec(`
|
|
338
|
+
UPDATE sessions
|
|
339
|
+
SET provider_session_id = session_id
|
|
340
|
+
WHERE provider_session_id IS NULL
|
|
341
|
+
`);
|
|
342
|
+
};
|
|
326
343
|
const ensureProjectsForSessionPaths = (db) => {
|
|
327
344
|
if (!tableExists(db, 'sessions')) {
|
|
328
345
|
return;
|
|
@@ -352,13 +369,18 @@ export const runMigrations = (db) => {
|
|
|
352
369
|
db.exec(VAPID_KEYS_TABLE_SCHEMA_SQL);
|
|
353
370
|
db.exec(PUSH_SUBSCRIPTIONS_TABLE_SCHEMA_SQL);
|
|
354
371
|
db.exec('CREATE INDEX IF NOT EXISTS idx_push_subscriptions_user_id ON push_subscriptions(user_id)');
|
|
372
|
+
db.exec(NOTIFICATION_CHANNEL_ENDPOINTS_TABLE_SCHEMA_SQL);
|
|
373
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_notification_channel_endpoints_user_channel ON notification_channel_endpoints(user_id, channel)');
|
|
374
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_notification_channel_endpoints_enabled ON notification_channel_endpoints(enabled)');
|
|
355
375
|
db.exec(PROJECTS_TABLE_SCHEMA_SQL);
|
|
356
376
|
rebuildProjectsTableWithPrimaryKeySchema(db);
|
|
357
377
|
migrateLegacyWorkspaceTableIntoProjects(db);
|
|
358
378
|
rebuildSessionsTableWithProjectSchema(db);
|
|
359
379
|
migrateLegacySessionNames(db);
|
|
380
|
+
addProviderSessionIdMapping(db);
|
|
360
381
|
ensureProjectsForSessionPaths(db);
|
|
361
382
|
db.exec('CREATE INDEX IF NOT EXISTS idx_session_ids_lookup ON sessions(session_id)');
|
|
383
|
+
db.exec('CREATE INDEX IF NOT EXISTS idx_sessions_provider_session_id ON sessions(provider_session_id)');
|
|
362
384
|
db.exec('CREATE INDEX IF NOT EXISTS idx_sessions_project_path ON sessions(project_path)');
|
|
363
385
|
db.exec('CREATE INDEX IF NOT EXISTS idx_sessions_is_archived ON sessions(isArchived)');
|
|
364
386
|
db.exec('CREATE INDEX IF NOT EXISTS idx_projects_is_starred ON projects(isStarred)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../../server/modules/database/migrations.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,yBAAyB,EACzB,mCAAmC,EACnC,yBAAyB,EACzB,8CAA8C,EAC9C,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,eAAe,GAAG;;;;;;CAMvB,CAAC;AAOF,MAAM,2BAA2B,GAAG,CAClC,EAAY,EACZ,SAAiB,EACjB,WAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,EAAE;IACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,cAAc,SAAS,QAAQ,CAAC,CAAC;QACpF,EAAE,CAAC,IAAI,CAAC,eAAe,SAAS,eAAe,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,EAAY,EAAE,SAAiB,EAAW,EAAE,CAC/D,OAAO,CACL,EAAE;KACC,OAAO,CAAC,kEAAkE,CAAC;KAC3E,GAAG,CAAC,SAAS,CAAC,CAClB,CAAC;AAEJ,MAAM,YAAY,GAAG,CAAC,EAAY,EAAE,SAAiB,EAAkB,EAAE,CACvE,EAAE,CAAC,OAAO,CAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC,GAAG,EAAoB,CAAC;AAExE,MAAM,yBAAyB,GAAG,CAAC,EAAY,EAAQ,EAAE;IACvD,MAAM,0BAA0B,GAAG,WAAW,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAErD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;KAeP,CAAC,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAC3E,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,uCAAuC,GAAG,CAAC,EAAY,EAAQ,EAAE;IACrE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEnC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,0BAA0B,CAAC,EAAE,CAAC;QACjD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,EAAE,CAAC,IAAI,CAAC;;;;;eAKK,eAAe;;;;;;;;;;;;GAY3B,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,wCAAwC,GAAG,CAAC,EAAY,EAAQ,EAAE;IACtE,MAAM,gBAAgB,GAAG,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,IAAI,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,CAC5D,CAAC;IAEF,IAAI,sBAAsB,EAAE,CAAC;QAC3B,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QACrG,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAC3F,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAC5F,EAAE,CAAC,IAAI,CAAC;;yBAEa,eAAe;;KAEnC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;IAE9F,MAAM,qBAAqB,GAAG,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;QAChE,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACtC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,MAAM,CAAC;IAEb,MAAM,2BAA2B,GAAG,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC7E,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC7C,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,MAAM,CAAC;IAEb,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC;IAE/F,MAAM,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC;IAElG,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5D,CAAC,CAAC;;gBAEU,eAAe;;WAEpB;QACP,CAAC,CAAC,eAAe,CAAC;IAEpB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC9C,EAAE,CAAC,IAAI,CAAC;;;;;;;;KAQP,CAAC,CAAC;QACH,EAAE,CAAC,IAAI,CAAC;;;YAGA,qBAAqB;YACrB,2BAA2B;YAC3B,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB;;;gBAGf,qBAAqB,yBAAyB,qBAAqB;;;;;;;;;;;;;;;;;;mBAkBhE,eAAe;;;;;;;;;;;;;;;;;;;;;;;KAuB7B,CAAC,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/B,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACxD,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,cAAc,EAAE,CAAC;QACxB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,MAAM,cAAc,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,qCAAqC,GAAG,CAAC,EAAY,EAAQ,EAAE;IACnE,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,iBAAiB;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;SACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;SAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhC,MAAM,aAAa,GACjB,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC9B,iBAAiB,CAAC,CAAC,CAAC,KAAK,YAAY;QACrC,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEpC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/E,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;QAC5F,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACnF,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QACnF,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACpE,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QACpF,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;IAEpF,MAAM,qBAAqB,GAAG,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;QAChE,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACtC,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,MAAM,CAAC;IAEb,MAAM,kBAAkB,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzD,CAAC,CAAC,8BAA8B;QAChC,CAAC,CAAC,UAAU,CAAC;IAEf,MAAM,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC9D,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,MAAM,CAAC;IAEX,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5D,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,MAAM,CAAC;IAEX,MAAM,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7D,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,GAAG,CAAC;IAER,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5D,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,mBAAmB,CAAC;IAExB,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5D,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,mBAAmB,CAAC;IAExB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC9C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;KAeP,CAAC,CAAC;QACH,EAAE,CAAC,IAAI,CAAC;;;;YAIA,kBAAkB;YAClB,oBAAoB;YACpB,qBAAqB;YACrB,mBAAmB;YACnB,oBAAoB;YACpB,mBAAmB;YACnB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0C1B,CAAC,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/B,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACxD,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,cAAc,EAAE,CAAC;QACxB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,MAAM,cAAc,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,EAAY,EAAQ,EAAE;IAC3D,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,EAAE,CAAC,IAAI,CAAC;;;QAGF,eAAe;;;;;;;;GAQpB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAY,EAAE,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAwB,CAAC;QAC1F,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpE,2BAA2B,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9E,2BAA2B,CAAC,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/E,2BAA2B,CACzB,EAAE,EACF,OAAO,EACP,eAAe,EACf,0BAA0B,EAC1B,mBAAmB,CACpB,CAAC;QAEF,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACrC,EAAE,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACxD,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACrC,EAAE,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC7C,EAAE,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../../../server/modules/database/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { getConnection } from '../../../modules/database/connection.js';
|
|
2
|
+
function normalizeRequiredText(value) {
|
|
3
|
+
if (typeof value !== 'string')
|
|
4
|
+
return '';
|
|
5
|
+
return value.trim();
|
|
6
|
+
}
|
|
7
|
+
function normalizeNullableText(value) {
|
|
8
|
+
if (typeof value !== 'string')
|
|
9
|
+
return null;
|
|
10
|
+
const normalized = value.trim();
|
|
11
|
+
return normalized || null;
|
|
12
|
+
}
|
|
13
|
+
function serializeMetadata(metadata) {
|
|
14
|
+
if (!metadata || typeof metadata !== 'object')
|
|
15
|
+
return null;
|
|
16
|
+
return JSON.stringify(metadata);
|
|
17
|
+
}
|
|
18
|
+
function parseMetadata(metadataJson) {
|
|
19
|
+
if (!metadataJson)
|
|
20
|
+
return {};
|
|
21
|
+
try {
|
|
22
|
+
const parsed = JSON.parse(metadataJson);
|
|
23
|
+
return parsed && typeof parsed === 'object' ? parsed : {};
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const notificationChannelEndpointsDb = {
|
|
30
|
+
upsertEndpoint(input) {
|
|
31
|
+
const channel = normalizeRequiredText(input.channel);
|
|
32
|
+
const endpointId = normalizeRequiredText(input.endpointId);
|
|
33
|
+
if (!channel)
|
|
34
|
+
throw new Error('channel is required');
|
|
35
|
+
if (!endpointId)
|
|
36
|
+
throw new Error('endpointId is required');
|
|
37
|
+
const enabled = input.enabled === false ? 0 : 1;
|
|
38
|
+
const db = getConnection();
|
|
39
|
+
db.prepare(`INSERT INTO notification_channel_endpoints (
|
|
40
|
+
user_id,
|
|
41
|
+
channel,
|
|
42
|
+
endpoint_id,
|
|
43
|
+
label,
|
|
44
|
+
metadata_json,
|
|
45
|
+
enabled,
|
|
46
|
+
last_seen_at,
|
|
47
|
+
updated_at
|
|
48
|
+
)
|
|
49
|
+
VALUES (?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
50
|
+
ON CONFLICT(user_id, channel, endpoint_id) DO UPDATE SET
|
|
51
|
+
label = excluded.label,
|
|
52
|
+
metadata_json = excluded.metadata_json,
|
|
53
|
+
enabled = excluded.enabled,
|
|
54
|
+
last_seen_at = CURRENT_TIMESTAMP,
|
|
55
|
+
updated_at = CURRENT_TIMESTAMP`).run(input.userId, channel, endpointId, normalizeNullableText(input.label), serializeMetadata(input.metadata), enabled);
|
|
56
|
+
return notificationChannelEndpointsDb.getEndpoint(input.userId, channel, endpointId);
|
|
57
|
+
},
|
|
58
|
+
getEndpoint(userId, channel, endpointId) {
|
|
59
|
+
const db = getConnection();
|
|
60
|
+
const row = db.prepare(`SELECT id, user_id, channel, endpoint_id, label, metadata_json, enabled, last_seen_at, created_at, updated_at
|
|
61
|
+
FROM notification_channel_endpoints
|
|
62
|
+
WHERE user_id = ? AND channel = ? AND endpoint_id = ?`).get(userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
63
|
+
return row || null;
|
|
64
|
+
},
|
|
65
|
+
getEndpoints(userId, channel) {
|
|
66
|
+
const db = getConnection();
|
|
67
|
+
return db.prepare(`SELECT id, user_id, channel, endpoint_id, label, metadata_json, enabled, last_seen_at, created_at, updated_at
|
|
68
|
+
FROM notification_channel_endpoints
|
|
69
|
+
WHERE user_id = ? AND channel = ?
|
|
70
|
+
ORDER BY last_seen_at DESC`).all(userId, normalizeRequiredText(channel));
|
|
71
|
+
},
|
|
72
|
+
getEnabledEndpoints(userId, channel) {
|
|
73
|
+
const db = getConnection();
|
|
74
|
+
return db.prepare(`SELECT id, user_id, channel, endpoint_id, label, metadata_json, enabled, last_seen_at, created_at, updated_at
|
|
75
|
+
FROM notification_channel_endpoints
|
|
76
|
+
WHERE user_id = ? AND channel = ? AND enabled = 1
|
|
77
|
+
ORDER BY last_seen_at DESC`).all(userId, normalizeRequiredText(channel));
|
|
78
|
+
},
|
|
79
|
+
setEndpointEnabled(userId, channel, endpointId, enabled) {
|
|
80
|
+
const db = getConnection();
|
|
81
|
+
const result = db.prepare(`UPDATE notification_channel_endpoints
|
|
82
|
+
SET enabled = ?, updated_at = CURRENT_TIMESTAMP
|
|
83
|
+
WHERE user_id = ? AND channel = ? AND endpoint_id = ?`).run(enabled ? 1 : 0, userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
84
|
+
return result.changes > 0;
|
|
85
|
+
},
|
|
86
|
+
touchEndpoint(userId, channel, endpointId) {
|
|
87
|
+
const db = getConnection();
|
|
88
|
+
const result = db.prepare(`UPDATE notification_channel_endpoints
|
|
89
|
+
SET last_seen_at = CURRENT_TIMESTAMP
|
|
90
|
+
WHERE user_id = ? AND channel = ? AND endpoint_id = ?`).run(userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
91
|
+
return result.changes > 0;
|
|
92
|
+
},
|
|
93
|
+
removeEndpoint(userId, channel, endpointId) {
|
|
94
|
+
const db = getConnection();
|
|
95
|
+
const result = db.prepare('DELETE FROM notification_channel_endpoints WHERE user_id = ? AND channel = ? AND endpoint_id = ?').run(userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
96
|
+
return result.changes > 0;
|
|
97
|
+
},
|
|
98
|
+
parseMetadata,
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=notification-channel-endpoints.js.map
|
package/dist-server/server/modules/database/repositories/notification-channel-endpoints.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification-channel-endpoints.js","sourceRoot":"","sources":["../../../../../server/modules/database/repositories/notification-channel-endpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const DEFAULT_NOTIFICATION_PREFERENCES = {
|
|
|
8
8
|
channels: {
|
|
9
9
|
inApp: false,
|
|
10
10
|
webPush: false,
|
|
11
|
+
desktop: false,
|
|
11
12
|
sound: true,
|
|
12
13
|
},
|
|
13
14
|
events: {
|
|
@@ -18,10 +19,17 @@ const DEFAULT_NOTIFICATION_PREFERENCES = {
|
|
|
18
19
|
};
|
|
19
20
|
function normalizeNotificationPreferences(value) {
|
|
20
21
|
const source = value && typeof value === 'object' ? value : {};
|
|
22
|
+
const sourceChannels = source.channels && typeof source.channels === 'object'
|
|
23
|
+
? source.channels
|
|
24
|
+
: {};
|
|
25
|
+
const extraChannels = Object.fromEntries(Object.entries(sourceChannels)
|
|
26
|
+
.filter(([key, channelValue]) => !['inApp', 'webPush', 'desktop', 'sound'].includes(key) && typeof channelValue === 'boolean'));
|
|
21
27
|
return {
|
|
22
28
|
channels: {
|
|
29
|
+
...extraChannels,
|
|
23
30
|
inApp: source.channels?.inApp === true,
|
|
24
31
|
webPush: source.channels?.webPush === true,
|
|
32
|
+
desktop: source.channels?.desktop === true,
|
|
25
33
|
sound: source.channels?.sound !== false,
|
|
26
34
|
},
|
|
27
35
|
events: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-preferences.js","sourceRoot":"","sources":["../../../../../server/modules/database/repositories/notification-preferences.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"notification-preferences.js","sourceRoot":"","sources":["../../../../../server/modules/database/repositories/notification-preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,50 @@
|
|
|
1
1
|
import { getConnection } from '../../../modules/database/connection.js';
|
|
2
2
|
import { projectsDb } from '../../../modules/database/repositories/projects.db.js';
|
|
3
3
|
import { normalizeProjectPath } from '../../../shared/utils.js';
|
|
4
|
+
const SESSION_ROW_COLUMNS = 'session_id, provider, provider_session_id, project_path, jsonl_path, custom_name, isArchived, created_at, updated_at';
|
|
5
|
+
const SQLITE_UTC_TIMESTAMP_REGEX = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/;
|
|
4
6
|
function normalizeTimestamp(value) {
|
|
5
7
|
if (!value)
|
|
6
8
|
return null;
|
|
7
|
-
|
|
9
|
+
// SQLite CURRENT_TIMESTAMP is stored as UTC without a timezone suffix.
|
|
10
|
+
// Normalize it here so every session reader returns canonical ISO strings
|
|
11
|
+
// and the sidebar never interprets fresh rows as local-time "hours old".
|
|
12
|
+
const normalizedValue = SQLITE_UTC_TIMESTAMP_REGEX.test(value)
|
|
13
|
+
? `${value.replace(' ', 'T')}Z`
|
|
14
|
+
: value;
|
|
15
|
+
const parsed = new Date(normalizedValue);
|
|
8
16
|
if (Number.isNaN(parsed.getTime())) {
|
|
9
17
|
return null;
|
|
10
18
|
}
|
|
11
19
|
return parsed.toISOString();
|
|
12
20
|
}
|
|
21
|
+
function normalizeSessionRow(row) {
|
|
22
|
+
if (!row) {
|
|
23
|
+
return row;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
...row,
|
|
27
|
+
created_at: normalizeTimestamp(row.created_at) ?? row.created_at,
|
|
28
|
+
updated_at: normalizeTimestamp(row.updated_at) ?? row.updated_at,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function normalizeSessionRows(rows) {
|
|
32
|
+
return rows.map((row) => normalizeSessionRow(row));
|
|
33
|
+
}
|
|
13
34
|
function normalizeProjectPathForProvider(provider, projectPath) {
|
|
14
35
|
void provider;
|
|
15
36
|
return normalizeProjectPath(projectPath);
|
|
16
37
|
}
|
|
17
38
|
export const sessionsDb = {
|
|
18
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Upserts one session row discovered on disk by a provider synchronizer.
|
|
41
|
+
*
|
|
42
|
+
* The given id is the provider-native session id. Rows are keyed by
|
|
43
|
+
* `provider_session_id` so a session that was first created by the app
|
|
44
|
+
* (with an app-allocated `session_id`) is updated in place once its
|
|
45
|
+
* transcript shows up on disk, instead of producing a duplicate row.
|
|
46
|
+
*/
|
|
47
|
+
createSession(providerSessionId, provider, projectPath, customName, createdAt, updatedAt, jsonlPath) {
|
|
19
48
|
const db = getConnection();
|
|
20
49
|
const createdAtValue = normalizeTimestamp(createdAt);
|
|
21
50
|
const updatedAtValue = normalizeTimestamp(updatedAt);
|
|
@@ -23,17 +52,88 @@ export const sessionsDb = {
|
|
|
23
52
|
// First, ensure the project path is recorded in the projects table,
|
|
24
53
|
// since it's a foreign key in the sessions table.
|
|
25
54
|
projectsDb.createProjectPath(normalizedProjectPath);
|
|
26
|
-
|
|
27
|
-
|
|
55
|
+
const existing = db
|
|
56
|
+
.prepare(`SELECT session_id FROM sessions
|
|
57
|
+
WHERE provider_session_id = ? AND provider = ?
|
|
58
|
+
LIMIT 1`)
|
|
59
|
+
.get(providerSessionId, provider);
|
|
60
|
+
if (existing) {
|
|
61
|
+
db.prepare(`UPDATE sessions SET
|
|
62
|
+
provider = ?,
|
|
63
|
+
updated_at = COALESCE(?, CURRENT_TIMESTAMP),
|
|
64
|
+
project_path = ?,
|
|
65
|
+
jsonl_path = ?,
|
|
66
|
+
isArchived = 0,
|
|
67
|
+
custom_name = COALESCE(?, custom_name)
|
|
68
|
+
WHERE session_id = ?`).run(provider, updatedAtValue, normalizedProjectPath, jsonlPath ?? null, customName ?? null, existing.session_id);
|
|
69
|
+
return existing.session_id;
|
|
70
|
+
}
|
|
71
|
+
// Sessions created outside the app (directly via the provider CLI) are
|
|
72
|
+
// keyed by the provider-native id for both columns. The ON CONFLICT path
|
|
73
|
+
// covers legacy rows that predate the provider_session_id mapping.
|
|
74
|
+
db.prepare(`INSERT INTO sessions (session_id, provider, provider_session_id, custom_name, project_path, jsonl_path, isArchived, created_at, updated_at)
|
|
75
|
+
VALUES (?, ?, ?, ?, ?, ?, 0, COALESCE(?, CURRENT_TIMESTAMP), COALESCE(?, CURRENT_TIMESTAMP))
|
|
28
76
|
ON CONFLICT(session_id) DO UPDATE SET
|
|
29
77
|
provider = excluded.provider,
|
|
78
|
+
provider_session_id = excluded.provider_session_id,
|
|
30
79
|
updated_at = excluded.updated_at,
|
|
31
80
|
project_path = excluded.project_path,
|
|
32
81
|
jsonl_path = excluded.jsonl_path,
|
|
33
82
|
isArchived = 0,
|
|
34
|
-
custom_name = COALESCE(excluded.custom_name, sessions.custom_name)`).run(
|
|
83
|
+
custom_name = COALESCE(excluded.custom_name, sessions.custom_name)`).run(providerSessionId, provider, providerSessionId, customName ?? null, normalizedProjectPath, jsonlPath ?? null, createdAtValue, updatedAtValue);
|
|
84
|
+
return providerSessionId;
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* Inserts one app-allocated session row before any provider run happens.
|
|
88
|
+
*
|
|
89
|
+
* The session gateway uses this when the frontend starts a brand-new chat:
|
|
90
|
+
* `session_id` is the stable app-facing id, while `provider_session_id`
|
|
91
|
+
* stays NULL until the provider runtime announces its own id and
|
|
92
|
+
* `assignProviderSessionId` records the mapping.
|
|
93
|
+
*/
|
|
94
|
+
createAppSession(sessionId, provider, projectPath) {
|
|
95
|
+
const db = getConnection();
|
|
96
|
+
const normalizedProjectPath = normalizeProjectPathForProvider(provider, projectPath);
|
|
97
|
+
projectsDb.createProjectPath(normalizedProjectPath);
|
|
98
|
+
db.prepare(`INSERT INTO sessions (session_id, provider, provider_session_id, custom_name, project_path, jsonl_path, isArchived, created_at, updated_at)
|
|
99
|
+
VALUES (?, ?, NULL, NULL, ?, NULL, 0, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)`).run(sessionId, provider, normalizedProjectPath);
|
|
35
100
|
return sessionId;
|
|
36
101
|
},
|
|
102
|
+
/**
|
|
103
|
+
* Records the provider-native session id for one app-allocated session.
|
|
104
|
+
*
|
|
105
|
+
* If the filesystem watcher indexed the provider transcript before this
|
|
106
|
+
* mapping was recorded (a duplicate row keyed by the provider id exists),
|
|
107
|
+
* the duplicate is merged into the app row: its transcript path and name
|
|
108
|
+
* are adopted and the duplicate row is removed. Runs in a transaction so
|
|
109
|
+
* the sidebar can never observe both rows at once.
|
|
110
|
+
*/
|
|
111
|
+
assignProviderSessionId(sessionId, providerSessionId) {
|
|
112
|
+
const db = getConnection();
|
|
113
|
+
const merge = db.transaction(() => {
|
|
114
|
+
const duplicate = db
|
|
115
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS} FROM sessions
|
|
116
|
+
WHERE (session_id = ? OR provider_session_id = ?)
|
|
117
|
+
AND session_id <> ?
|
|
118
|
+
LIMIT 1`)
|
|
119
|
+
.get(providerSessionId, providerSessionId, sessionId);
|
|
120
|
+
if (duplicate) {
|
|
121
|
+
db.prepare('DELETE FROM sessions WHERE session_id = ?').run(duplicate.session_id);
|
|
122
|
+
db.prepare(`UPDATE sessions SET
|
|
123
|
+
provider_session_id = ?,
|
|
124
|
+
jsonl_path = COALESCE(jsonl_path, ?),
|
|
125
|
+
custom_name = COALESCE(custom_name, ?),
|
|
126
|
+
updated_at = CURRENT_TIMESTAMP
|
|
127
|
+
WHERE session_id = ?`).run(providerSessionId, duplicate.jsonl_path, duplicate.custom_name, sessionId);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
db.prepare(`UPDATE sessions SET
|
|
131
|
+
provider_session_id = ?,
|
|
132
|
+
updated_at = CURRENT_TIMESTAMP
|
|
133
|
+
WHERE session_id = ?`).run(providerSessionId, sessionId);
|
|
134
|
+
});
|
|
135
|
+
merge();
|
|
136
|
+
},
|
|
37
137
|
updateSessionCustomName(sessionId, customName) {
|
|
38
138
|
const db = getConnection();
|
|
39
139
|
db.prepare(`UPDATE sessions
|
|
@@ -43,21 +143,73 @@ export const sessionsDb = {
|
|
|
43
143
|
getSessionById(sessionId) {
|
|
44
144
|
const db = getConnection();
|
|
45
145
|
const row = db
|
|
46
|
-
.prepare(`SELECT
|
|
146
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
47
147
|
FROM sessions
|
|
48
148
|
WHERE session_id = ?
|
|
49
149
|
ORDER BY updated_at DESC
|
|
50
150
|
LIMIT 1`)
|
|
51
151
|
.get(sessionId);
|
|
52
|
-
return row ?? null;
|
|
152
|
+
return normalizeSessionRow(row) ?? null;
|
|
153
|
+
},
|
|
154
|
+
/**
|
|
155
|
+
* Resolves one session row through the provider-native id.
|
|
156
|
+
*
|
|
157
|
+
* The filesystem watcher only knows provider ids (they come from transcript
|
|
158
|
+
* file names), so it uses this lookup to translate disk artifacts back to
|
|
159
|
+
* the app-facing session row before broadcasting sidebar updates.
|
|
160
|
+
*/
|
|
161
|
+
getSessionByProviderSessionId(providerSessionId) {
|
|
162
|
+
const db = getConnection();
|
|
163
|
+
const row = db
|
|
164
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
165
|
+
FROM sessions
|
|
166
|
+
WHERE provider_session_id = ?
|
|
167
|
+
ORDER BY updated_at DESC
|
|
168
|
+
LIMIT 1`)
|
|
169
|
+
.get(providerSessionId);
|
|
170
|
+
return normalizeSessionRow(row) ?? null;
|
|
171
|
+
},
|
|
172
|
+
/**
|
|
173
|
+
* Finds the newest app-created session for a project that is still waiting
|
|
174
|
+
* for its provider-native id to be recorded.
|
|
175
|
+
*
|
|
176
|
+
* Primary intention: OpenCode can expose a new session in its shared
|
|
177
|
+
* `opencode.db` before the websocket runtime reports that same provider id
|
|
178
|
+
* back to our app. At that moment the sidebar already has an optimistic
|
|
179
|
+
* app-owned session row, but the watcher only knows the provider-native id.
|
|
180
|
+
*
|
|
181
|
+
* Without this lookup, the synchronizer would insert a second row keyed by
|
|
182
|
+
* the provider id, then `assignProviderSessionId()` would merge it a moment
|
|
183
|
+
* later. That eventually self-heals, but on slow networks the user can still
|
|
184
|
+
* briefly see two sidebar sessions for the same conversation.
|
|
185
|
+
*
|
|
186
|
+
* This helper lets the synchronizer claim the pending app row first, so the
|
|
187
|
+
* provider id is attached before any watcher-created row exists. The result
|
|
188
|
+
* is simpler than frontend dedupe and keeps the race resolved at the source.
|
|
189
|
+
*/
|
|
190
|
+
findLatestPendingAppSession(provider, projectPath) {
|
|
191
|
+
const db = getConnection();
|
|
192
|
+
const normalizedProjectPath = normalizeProjectPathForProvider(provider, projectPath);
|
|
193
|
+
const row = db
|
|
194
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
195
|
+
FROM sessions
|
|
196
|
+
WHERE provider = ?
|
|
197
|
+
AND project_path = ?
|
|
198
|
+
AND provider_session_id IS NULL
|
|
199
|
+
AND isArchived = 0
|
|
200
|
+
ORDER BY datetime(COALESCE(updated_at, created_at)) DESC, session_id DESC
|
|
201
|
+
LIMIT 1`)
|
|
202
|
+
.get(provider, normalizedProjectPath);
|
|
203
|
+
return normalizeSessionRow(row) ?? null;
|
|
53
204
|
},
|
|
54
205
|
getAllSessions() {
|
|
55
206
|
const db = getConnection();
|
|
56
|
-
|
|
57
|
-
.prepare(`SELECT
|
|
207
|
+
const rows = db
|
|
208
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
58
209
|
FROM sessions
|
|
59
210
|
WHERE isArchived = 0`)
|
|
60
211
|
.all();
|
|
212
|
+
return normalizeSessionRows(rows);
|
|
61
213
|
},
|
|
62
214
|
/**
|
|
63
215
|
* Archived rows are intentionally queried separately so the caller can render
|
|
@@ -65,22 +217,24 @@ export const sessionsDb = {
|
|
|
65
217
|
*/
|
|
66
218
|
getArchivedSessions() {
|
|
67
219
|
const db = getConnection();
|
|
68
|
-
|
|
69
|
-
.prepare(`SELECT
|
|
220
|
+
const rows = db
|
|
221
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
70
222
|
FROM sessions
|
|
71
223
|
WHERE isArchived = 1
|
|
72
224
|
ORDER BY datetime(COALESCE(updated_at, created_at)) DESC, session_id DESC`)
|
|
73
225
|
.all();
|
|
226
|
+
return normalizeSessionRows(rows);
|
|
74
227
|
},
|
|
75
228
|
getSessionsByProjectPath(projectPath) {
|
|
76
229
|
const db = getConnection();
|
|
77
230
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
78
|
-
|
|
79
|
-
.prepare(`SELECT
|
|
231
|
+
const rows = db
|
|
232
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
80
233
|
FROM sessions
|
|
81
234
|
WHERE project_path = ?
|
|
82
235
|
AND isArchived = 0`)
|
|
83
236
|
.all(normalizedProjectPath);
|
|
237
|
+
return normalizeSessionRows(rows);
|
|
84
238
|
},
|
|
85
239
|
/**
|
|
86
240
|
* Permanent project deletion must see every session row for the path,
|
|
@@ -89,23 +243,25 @@ export const sessionsDb = {
|
|
|
89
243
|
getSessionsByProjectPathIncludingArchived(projectPath) {
|
|
90
244
|
const db = getConnection();
|
|
91
245
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
92
|
-
|
|
93
|
-
.prepare(`SELECT
|
|
246
|
+
const rows = db
|
|
247
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
94
248
|
FROM sessions
|
|
95
249
|
WHERE project_path = ?`)
|
|
96
250
|
.all(normalizedProjectPath);
|
|
251
|
+
return normalizeSessionRows(rows);
|
|
97
252
|
},
|
|
98
253
|
getSessionsByProjectPathPage(projectPath, limit, offset) {
|
|
99
254
|
const db = getConnection();
|
|
100
255
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
101
|
-
|
|
102
|
-
.prepare(`SELECT
|
|
256
|
+
const rows = db
|
|
257
|
+
.prepare(`SELECT ${SESSION_ROW_COLUMNS}
|
|
103
258
|
FROM sessions
|
|
104
259
|
WHERE project_path = ?
|
|
105
260
|
AND isArchived = 0
|
|
106
261
|
ORDER BY datetime(COALESCE(updated_at, created_at)) DESC, session_id DESC
|
|
107
262
|
LIMIT ? OFFSET ?`)
|
|
108
263
|
.all(normalizedProjectPath, limit, offset);
|
|
264
|
+
return normalizeSessionRows(rows);
|
|
109
265
|
},
|
|
110
266
|
countSessionsByProjectPath(projectPath) {
|
|
111
267
|
const db = getConnection();
|