wind-agent-cli 1.37.2 → 1.37.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +718 -718
- package/README.md +1 -1
- package/dist/api-docs.html +901 -901
- package/dist/assets/{CodeEditor-B2Wf7Fg0.js → CodeEditor-BqmxpZ_D.js} +1 -1
- package/dist/assets/{FileTree-N2IkkHlv.js → FileTree-DLE7Ioai.js} +1 -1
- package/dist/assets/{GitPanel-DZCeuFZ2.js → GitPanel-f8RMRa8D.js} +1 -1
- package/dist/assets/{MarkdownPreview-C0tqYnVu.js → MarkdownPreview-93h_1tJa.js} +1 -1
- package/dist/assets/{PluginTabContent-Bnuf-fb8.js → PluginTabContent-DU1jjkXP.js} +1 -1
- package/dist/assets/{Shell-BfFnMZ-f.js → Shell-CN_2MRIM.js} +1 -1
- package/dist/assets/{StandaloneShell-QmyYwNAl.js → StandaloneShell-D0avS8UE.js} +1 -1
- package/dist/assets/{TaskMasterPanel-fMsmvN9L.js → TaskMasterPanel-Cpf1Q5Ph.js} +3 -3
- package/dist/assets/{abnfDiagram-N423BO3Z-DjPU7HLs.js → abnfDiagram-N423BO3Z-p3aJIm4T.js} +1 -1
- package/dist/assets/{arc-Pdq6Tvr3.js → arc-CTeud6Fl.js} +1 -1
- package/dist/assets/{architectureDiagram-T3A2C74G-D0JnT0Vh.js → architectureDiagram-T3A2C74G-CG7kRCJU.js} +1 -1
- package/dist/assets/{blockDiagram-VBNYF7ZC-DpaEf3mv.js → blockDiagram-VBNYF7ZC-oSjQ1SgE.js} +1 -1
- package/dist/assets/{c4Diagram-5PPSVZJV-MpqlPGFi.js → c4Diagram-5PPSVZJV-RkzF0DJV.js} +1 -1
- package/dist/assets/channel-BfQbarn9.js +1 -0
- package/dist/assets/{chunk-2GRJ4B5K-DoSdNo8u.js → chunk-2GRJ4B5K-B07uZ07O.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-CE7I3uMn.js → chunk-2Q5K7J3B-DNSfO7xS.js} +1 -1
- package/dist/assets/{chunk-5RXB4S5H-B4UQ8snD.js → chunk-5RXB4S5H-BTeYcgyb.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-B55XgqHZ.js → chunk-5VM5RSS4-B7vZV0zC.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-BS1KpefW.js → chunk-6Q2QTUOP-DuS_xUGG.js} +1 -1
- package/dist/assets/{chunk-GF5L2VYU-DkEPedJP.js → chunk-GF5L2VYU-CKLZ3iVD.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-DOtkNhMm.js → chunk-JWPE2WC7-DD2hcXvs.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-BXLjviqM.js → chunk-KBJHAD2P-Cz-l38qp.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-C50fjNNz.js → chunk-RYQCIY6F-DGFIU1YM.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-QBYqCkb7.js → chunk-XXDRQBXY-CmfzoYFl.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-Bpfe3kq7.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-Bpfe3kq7.js +1 -0
- package/dist/assets/{code-xml-VK1YfShP.js → code-xml-CLpHzEOP.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-DrVTo1Nh.js → cose-bilkent-JH36ORCC-DlFcLXCB.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-DnJa_OlQ.js → cynefin-VYW2F7L2-P1HecReO.js} +1 -1
- package/dist/assets/{cynefinDiagram-MW4NZA55-CCxBjw9E.js → cynefinDiagram-MW4NZA55-COgduz5P.js} +1 -1
- package/dist/assets/{dagre-VZM6K2ZE-C_GvE4lu.js → dagre-VZM6K2ZE-Bbb-siGp.js} +1 -1
- package/dist/assets/{diagram-7IWD3JNH-pFzs9HEu.js → diagram-7IWD3JNH-9CWGFMYR.js} +1 -1
- package/dist/assets/{diagram-B4RE2ZJO-CcehQC7x.js → diagram-B4RE2ZJO-TWK59T6V.js} +1 -1
- package/dist/assets/{diagram-LBJQPF4R-hfKcrrxe.js → diagram-LBJQPF4R-ErMC9yaa.js} +1 -1
- package/dist/assets/{diagram-Q27KOJAE-C1semJfK.js → diagram-Q27KOJAE-Dt_-C7hV.js} +1 -1
- package/dist/assets/{diagram-UB23O5K3-57hvXQXO.js → diagram-UB23O5K3-BJ1DnRAF.js} +1 -1
- package/dist/assets/{ebnfDiagram-BXEA7PRR-9KIAlAVw.js → ebnfDiagram-BXEA7PRR-CE1YaQ9s.js} +1 -1
- package/dist/assets/{erDiagram-JOGREHBK-B7OzJ767.js → erDiagram-JOGREHBK-Bqk7N9aY.js} +1 -1
- package/dist/assets/{flowDiagram-UKHOOZJN-CJV8fQPR.js → flowDiagram-UKHOOZJN-DEr2II5V.js} +1 -1
- package/dist/assets/{ganttDiagram-PKOTCBZU-CbMNWWQu.js → ganttDiagram-PKOTCBZU-CWYAUeYN.js} +1 -1
- package/dist/assets/{gitGraphDiagram-DS77QQ5N-I_vZ5waO.js → gitGraphDiagram-DS77QQ5N-tdEcEIM6.js} +1 -1
- package/dist/assets/{index-ZHwIojzi.js → index-B-sTfSZq.js} +1 -1
- package/dist/assets/{index-GFhXZyl2.js → index-BSe3UiFA.js} +1 -1
- package/dist/assets/{index-DFnVoqpx.js → index-B_FDMWar.js} +5 -5
- package/dist/assets/{index-DlSeAkw_.js → index-CWJtg2pR.js} +1 -1
- package/dist/assets/{infoDiagram-6WML65LV-Dh20Tsbq.js → infoDiagram-6WML65LV-A3IqRUnO.js} +1 -1
- package/dist/assets/{ishikawaDiagram-WSZJBQD7-DH2Sm3ko.js → ishikawaDiagram-WSZJBQD7-B2uL6bkK.js} +1 -1
- package/dist/assets/{journeyDiagram-NVQOT4AX-BNFQqlVu.js → journeyDiagram-NVQOT4AX-D9JB-hRW.js} +1 -1
- package/dist/assets/{kanban-definition-27J2QSJJ-B3iL0ztJ.js → kanban-definition-27J2QSJJ-DmlgiV7K.js} +1 -1
- package/dist/assets/{linear-Cwe9dEKA.js → linear-Ct_eoJQk.js} +1 -1
- package/dist/assets/{mermaid.core-BYRQSshi.js → mermaid.core-CQ698HNn.js} +5 -5
- package/dist/assets/{mindmap-definition-FAOFIHXS-BgfBYMzr.js → mindmap-definition-FAOFIHXS-DGtMgQhf.js} +1 -1
- package/dist/assets/{pegDiagram-VL7TDLO6-CNYpECr8.js → pegDiagram-VL7TDLO6-CO6vP4n9.js} +1 -1
- package/dist/assets/{pieDiagram-7S7Q4E2Y-DeSrxc4I.js → pieDiagram-7S7Q4E2Y-DMkt_Zfr.js} +1 -1
- package/dist/assets/{quadrantDiagram-CIZ2JOQS-BXVVQsa6.js → quadrantDiagram-CIZ2JOQS-DgNxRz6t.js} +1 -1
- package/dist/assets/{railroadDiagram-AXF67PYL-JTroIW8F.js → railroadDiagram-AXF67PYL-DKz9UqA9.js} +1 -1
- package/dist/assets/{requirementDiagram-LRYGKXZP-C1Z_inLz.js → requirementDiagram-LRYGKXZP-L84XyGgV.js} +1 -1
- package/dist/assets/{sankeyDiagram-W5VNT64P-DCJgKFUk.js → sankeyDiagram-W5VNT64P-CQqWbJ3j.js} +1 -1
- package/dist/assets/{sequenceDiagram-SI44F4Z6-D8Wrx5Vc.js → sequenceDiagram-SI44F4Z6--tnzS2tb.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-CXqD68vD.js → sizeCapture-X5ZJPWSS-DujwEOtm.js} +1 -1
- package/dist/assets/{stateDiagram-OKZ733FA-CF0Ekqjo.js → stateDiagram-OKZ733FA-BK3TcZY2.js} +1 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-_medyomK.js +1 -0
- package/dist/assets/{swimlanes-SLNWSIFB-DVIax_k4.js → swimlanes-SLNWSIFB-naX-Uv1B.js} +2 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-DstIv3TC.js +8 -0
- package/dist/assets/{timeline-definition-Z64GVDOM-DSqk3ApG.js → timeline-definition-Z64GVDOM-C-vP_ddU.js} +1 -1
- package/dist/assets/{vennDiagram-T6HMQDX7-DNbTqyG5.js → vennDiagram-T6HMQDX7-DN-I7o-7.js} +1 -1
- package/dist/assets/{wardleyDiagram-T6FBY63Y-BNCpsFZV.js → wardleyDiagram-T6FBY63Y-Db9dsaXv.js} +1 -1
- package/dist/assets/{xychartDiagram-ELKLHX3M-XsVZphHr.js → xychartDiagram-ELKLHX3M-DE6OxW_p.js} +1 -1
- package/dist/clear-cache.html +85 -85
- package/dist/convert-icons.md +52 -52
- package/dist/favicon.svg +8 -8
- package/dist/generate-icons.js +48 -48
- package/dist/icons/codex-white.svg +3 -3
- package/dist/icons/codex.svg +3 -3
- package/dist/icons/cursor-white.svg +11 -11
- package/dist/icons/icon-128x128.svg +11 -11
- package/dist/icons/icon-144x144.svg +11 -11
- package/dist/icons/icon-152x152.svg +11 -11
- package/dist/icons/icon-192x192.svg +11 -11
- package/dist/icons/icon-384x384.svg +11 -11
- package/dist/icons/icon-512x512.svg +11 -11
- package/dist/icons/icon-72x72.svg +11 -11
- package/dist/icons/icon-96x96.svg +11 -11
- package/dist/icons/icon-template.svg +11 -11
- package/dist/index.html +56 -56
- package/dist/logo.svg +17 -17
- package/dist/manifest.json +60 -60
- package/dist/sw.js +124 -124
- package/dist-server/server/modules/cli/cli.service.js +36 -36
- package/dist-server/server/modules/cli/sandbox.service.js +38 -38
- package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js +74 -74
- package/dist-server/server/modules/commands/commands.routes.js +24 -24
- package/dist-server/server/modules/database/migrations.js +190 -190
- package/dist-server/server/modules/database/repositories/api-keys.js +3 -3
- package/dist-server/server/modules/database/repositories/github-tokens.js +2 -2
- package/dist-server/server/modules/database/repositories/notification-channel-endpoints.js +28 -28
- package/dist-server/server/modules/database/repositories/notification-preferences.js +4 -4
- package/dist-server/server/modules/database/repositories/projects.db.js +61 -61
- package/dist-server/server/modules/database/repositories/provider-models.js +35 -35
- package/dist-server/server/modules/database/repositories/push-subscriptions.js +5 -5
- package/dist-server/server/modules/database/repositories/scan-state.db.js +5 -5
- package/dist-server/server/modules/database/repositories/sessions.db.js +92 -92
- package/dist-server/server/modules/database/schema.js +177 -177
- package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js +6 -6
- package/dist-server/server/modules/git/git.routes.js +17 -17
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +12 -12
- package/dist-server/server/modules/providers/list/opencode/opencode-runtime.provider.js +9 -9
- package/dist-server/server/modules/providers/list/opencode/opencode-runtime.provider.test.js +17 -17
- package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +25 -25
- package/dist-server/server/modules/providers/list/opencode/opencode-sessions.provider.js +27 -27
- package/dist-server/server/modules/providers/services/provider-token-usage.service.js +9 -9
- package/dist-server/server/modules/providers/tests/mcp.test.js +3 -3
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +96 -96
- package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +18 -18
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js +419 -419
- package/electron/cloud.js +260 -260
- package/electron/desktopNotifications.js +378 -378
- package/electron/desktopWindow.js +766 -766
- package/electron/launcher/index.html +14 -14
- package/electron/launcher/launcher.css +801 -801
- package/electron/launcher/launcher.js +687 -687
- package/electron/localServer.js +549 -549
- package/electron/main.js +944 -944
- package/electron/preload.cjs +60 -60
- package/electron/scripts/generate-macos-icon.js +62 -62
- package/electron/serverInstaller.js +277 -277
- package/electron/tabs.js +87 -87
- package/electron/viewHost.js +331 -331
- package/package.json +250 -247
- package/public/api-docs.html +901 -901
- package/scripts/fix-node-pty.js +67 -67
- package/scripts/promote-dist-server.mjs +50 -50
- package/scripts/release/build-server-bundle.js +176 -176
- package/scripts/release/prepare-desktop-app.js +152 -152
- package/server/index.ts +399 -399
- package/server/load-env.ts +47 -47
- package/server/modules/agent/agent.module.ts +52 -52
- package/server/modules/agent/agent.routes.ts +1287 -1287
- package/server/modules/agent/index.ts +2 -2
- package/server/modules/agent/tests/agent.routes.test.ts +205 -205
- package/server/modules/assets/assets.routes.ts +150 -150
- package/server/modules/assets/index.ts +3 -3
- package/server/modules/assets/services/image-assets.service.ts +127 -127
- package/server/modules/assets/tests/image-assets.service.test.ts +74 -74
- package/server/modules/auth/auth.middleware.ts +163 -163
- package/server/modules/auth/auth.module.ts +38 -38
- package/server/modules/auth/auth.routes.ts +57 -57
- package/server/modules/auth/auth.service.ts +155 -155
- package/server/modules/auth/index.ts +9 -9
- package/server/modules/auth/tests/auth.service.test.ts +95 -95
- package/server/modules/browser-use/browser-use-mcp.routes.ts +120 -120
- package/server/modules/browser-use/browser-use-mcp.ts +386 -386
- package/server/modules/browser-use/browser-use-runtime.ts +10 -10
- package/server/modules/browser-use/browser-use.routes.ts +96 -96
- package/server/modules/browser-use/browser-use.service.ts +836 -836
- package/server/modules/browser-use/index.ts +11 -11
- package/server/modules/browser-use/tests/browser-use.service.test.ts +10 -10
- package/server/modules/cli/cli.module.ts +93 -93
- package/server/modules/cli/cli.service.ts +248 -248
- package/server/modules/cli/cli.ts +19 -19
- package/server/modules/cli/index.ts +2 -2
- package/server/modules/cli/sandbox.service.ts +398 -398
- package/server/modules/cli/tests/cli-environment-bootstrap.test.ts +186 -186
- package/server/modules/cli/tests/cli.service.test.ts +86 -86
- package/server/modules/cli/tests/sandbox.service.test.ts +58 -58
- package/server/modules/commands/commands.module.ts +22 -22
- package/server/modules/commands/commands.routes.ts +586 -586
- package/server/modules/commands/index.ts +2 -2
- package/server/modules/commands/tests/commands.test.ts +109 -109
- package/server/modules/database/connection.ts +143 -143
- package/server/modules/database/index.ts +17 -17
- package/server/modules/database/init-db.ts +17 -17
- package/server/modules/database/migrations.ts +515 -515
- package/server/modules/database/repositories/api-keys.ts +119 -119
- package/server/modules/database/repositories/app-config.ts +53 -53
- package/server/modules/database/repositories/credentials.ts +106 -106
- package/server/modules/database/repositories/github-tokens.ts +100 -100
- package/server/modules/database/repositories/notification-channel-endpoints.ts +153 -153
- package/server/modules/database/repositories/notification-preferences.ts +117 -117
- package/server/modules/database/repositories/projects.db.ts +196 -196
- package/server/modules/database/repositories/provider-models.ts +168 -168
- package/server/modules/database/repositories/push-subscriptions.ts +80 -80
- package/server/modules/database/repositories/scan-state.db.ts +42 -42
- package/server/modules/database/repositories/sessions.db.ts +524 -524
- package/server/modules/database/repositories/users.ts +140 -140
- package/server/modules/database/repositories/vapid-keys.ts +57 -57
- package/server/modules/database/schema.ts +210 -210
- package/server/modules/database/tests/projects.db.integration.test.ts +72 -72
- package/server/modules/database/tests/provider-models.db.integration.test.ts +125 -125
- package/server/modules/database/tests/sessions-provider-mapping.test.ts +109 -109
- package/server/modules/database/tests/sessions.db.integration.test.ts +116 -116
- package/server/modules/file-tree/file-tree.module.ts +116 -116
- package/server/modules/file-tree/file-tree.routes.ts +258 -258
- package/server/modules/file-tree/file-tree.service.ts +675 -675
- package/server/modules/file-tree/index.ts +2 -2
- package/server/modules/file-tree/tests/file-tree.routes.test.ts +157 -157
- package/server/modules/file-tree/tests/file-tree.service.test.ts +371 -371
- package/server/modules/git/git-branch.service.ts +43 -43
- package/server/modules/git/git-parsing.service.ts +66 -66
- package/server/modules/git/git.module.ts +22 -22
- package/server/modules/git/git.routes.ts +1596 -1596
- package/server/modules/git/index.ts +2 -2
- package/server/modules/git/tests/git-branch.service.test.ts +60 -60
- package/server/modules/git/tests/git-init.routes.test.ts +132 -132
- package/server/modules/git/tests/git.test.ts +106 -106
- package/server/modules/notifications/index.ts +24 -24
- package/server/modules/notifications/notifications.routes.ts +127 -127
- package/server/modules/notifications/services/desktop-notification-clients.service.ts +124 -124
- package/server/modules/notifications/services/notification-orchestrator.service.js +310 -310
- package/server/modules/notifications/tests/notification-orchestrator.integration.test.ts +55 -55
- package/server/modules/notifications/vapid-keys.service.ts +38 -38
- package/server/modules/notifications/websocket/desktop-notifications-websocket.service.ts +109 -109
- package/server/modules/plugins/index.ts +9 -9
- package/server/modules/plugins/plugin-process.service.ts +217 -217
- package/server/modules/plugins/plugin-registry.service.ts +459 -459
- package/server/modules/plugins/plugins.module.ts +33 -33
- package/server/modules/plugins/plugins.routes.ts +66 -66
- package/server/modules/plugins/plugins.service.ts +147 -147
- package/server/modules/plugins/tests/plugins.service.test.ts +32 -32
- package/server/modules/projects/index.ts +11 -11
- package/server/modules/projects/projects.routes.ts +273 -273
- package/server/modules/projects/services/project-clone.service.ts +323 -323
- package/server/modules/projects/services/project-delete.service.ts +90 -90
- package/server/modules/projects/services/project-management.service.ts +144 -144
- package/server/modules/projects/services/project-star.service.ts +78 -78
- package/server/modules/projects/services/projects-has-taskmaster.service.ts +248 -248
- package/server/modules/projects/services/projects-with-sessions-fetch.service.ts +314 -314
- package/server/modules/projects/tests/project-clone.service.test.ts +183 -183
- package/server/modules/projects/tests/project-management.service.test.ts +117 -117
- package/server/modules/projects/tests/project-star.service.test.ts +123 -123
- package/server/modules/projects/tests/projects-has-taskmaster.service.test.ts +105 -105
- package/server/modules/providers/README.md +380 -380
- package/server/modules/providers/index.ts +10 -10
- package/server/modules/providers/list/claude/claude-auth.provider.ts +160 -160
- package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
- package/server/modules/providers/list/claude/claude-models.provider.ts +294 -294
- package/server/modules/providers/list/claude/claude-runtime.provider.js +1068 -1068
- package/server/modules/providers/list/claude/claude-session-synchronizer.provider.ts +203 -203
- package/server/modules/providers/list/claude/claude-sessions.provider.ts +684 -684
- package/server/modules/providers/list/claude/claude-skills.provider.ts +265 -265
- package/server/modules/providers/list/claude/claude.provider.ts +30 -30
- package/server/modules/providers/list/codex/codex-auth.provider.ts +100 -100
- package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
- package/server/modules/providers/list/codex/codex-models.provider.ts +123 -123
- package/server/modules/providers/list/codex/codex-runtime.provider.js +533 -533
- package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +203 -203
- package/server/modules/providers/list/codex/codex-sessions.provider.ts +938 -938
- package/server/modules/providers/list/codex/codex-skills.provider.ts +73 -73
- package/server/modules/providers/list/codex/codex.provider.ts +28 -28
- package/server/modules/providers/list/cursor/cursor-auth.provider.ts +143 -143
- package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
- package/server/modules/providers/list/cursor/cursor-models.provider.ts +119 -119
- package/server/modules/providers/list/cursor/cursor-runtime.provider.js +385 -385
- package/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.ts +159 -159
- package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +654 -654
- package/server/modules/providers/list/cursor/cursor-skills.provider.ts +39 -39
- package/server/modules/providers/list/cursor/cursor.provider.ts +30 -30
- package/server/modules/providers/list/opencode/opencode-auth.provider.ts +110 -110
- package/server/modules/providers/list/opencode/opencode-mcp.provider.ts +228 -228
- package/server/modules/providers/list/opencode/opencode-models.provider.ts +203 -203
- package/server/modules/providers/list/opencode/opencode-runtime.provider.js +434 -434
- package/server/modules/providers/list/opencode/opencode-runtime.provider.test.js +261 -261
- package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +179 -179
- package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +500 -500
- package/server/modules/providers/list/opencode/opencode-skills.provider.ts +78 -78
- package/server/modules/providers/list/opencode/opencode.provider.ts +30 -30
- package/server/modules/providers/provider.registry.ts +36 -36
- package/server/modules/providers/provider.routes.ts +877 -877
- package/server/modules/providers/services/mcp.service.ts +109 -109
- package/server/modules/providers/services/provider-auth.service.ts +26 -26
- package/server/modules/providers/services/provider-capabilities.service.ts +97 -97
- package/server/modules/providers/services/provider-models.service.ts +401 -401
- package/server/modules/providers/services/provider-runtime.service.ts +108 -108
- package/server/modules/providers/services/provider-token-usage.service.ts +357 -357
- package/server/modules/providers/services/session-conversations-search.service.ts +1321 -1321
- package/server/modules/providers/services/session-synchronizer.service.ts +74 -74
- package/server/modules/providers/services/sessions-watcher.service.ts +247 -247
- package/server/modules/providers/services/sessions.service.ts +471 -471
- package/server/modules/providers/services/skills.service.ts +39 -39
- package/server/modules/providers/shared/base/abstract.provider.ts +32 -32
- package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
- package/server/modules/providers/shared/skills/skills.provider.ts +287 -287
- package/server/modules/providers/tests/claude-auth.test.ts +150 -150
- package/server/modules/providers/tests/claude-sessions.test.ts +61 -61
- package/server/modules/providers/tests/codex-sessions.test.ts +231 -231
- package/server/modules/providers/tests/mcp.test.ts +349 -349
- package/server/modules/providers/tests/opencode-models.test.ts +41 -41
- package/server/modules/providers/tests/opencode-sessions.test.ts +522 -522
- package/server/modules/providers/tests/provider-attachment-history.test.ts +247 -247
- package/server/modules/providers/tests/provider-models.service.test.ts +353 -353
- package/server/modules/providers/tests/provider-runtime.service.test.ts +138 -138
- package/server/modules/providers/tests/provider-token-usage.service.test.ts +186 -186
- package/server/modules/providers/tests/provider.routes.test.ts +244 -244
- package/server/modules/providers/tests/sessions-details.test.ts +73 -73
- package/server/modules/providers/tests/sessions.service.test.ts +127 -127
- package/server/modules/providers/tests/skills.test.ts +692 -692
- package/server/modules/settings/index.ts +2 -2
- package/server/modules/settings/settings.module.ts +50 -50
- package/server/modules/settings/settings.routes.ts +51 -51
- package/server/modules/settings/settings.service.ts +186 -186
- package/server/modules/settings/tests/settings.service.test.ts +54 -54
- package/server/modules/system/index.ts +2 -2
- package/server/modules/system/system.module.ts +62 -62
- package/server/modules/system/system.routes.ts +21 -21
- package/server/modules/system/system.service.ts +76 -76
- package/server/modules/system/tests/system.service.test.ts +118 -118
- package/server/modules/taskmaster/index.ts +2 -2
- package/server/modules/taskmaster/taskmaster.module.ts +24 -24
- package/server/modules/taskmaster/taskmaster.routes.ts +1482 -1482
- package/server/modules/taskmaster/taskmaster.service.ts +132 -132
- package/server/modules/taskmaster/tests/taskmaster.routes.test.ts +144 -144
- package/server/modules/taskmaster/tests/taskmaster.service.test.ts +97 -97
- package/server/modules/user/index.ts +2 -2
- package/server/modules/user/tests/user.service.test.ts +61 -61
- package/server/modules/user/user.module.ts +58 -58
- package/server/modules/user/user.routes.ts +50 -50
- package/server/modules/user/user.service.ts +85 -85
- package/server/modules/voice/index.ts +2 -2
- package/server/modules/voice/tests/voice.service.test.ts +98 -98
- package/server/modules/voice/voice.module.ts +47 -47
- package/server/modules/voice/voice.routes.ts +113 -113
- package/server/modules/voice/voice.service.ts +192 -192
- package/server/modules/websocket/README.md +273 -273
- package/server/modules/websocket/index.ts +3 -3
- package/server/modules/websocket/services/chat-run-registry.service.ts +343 -343
- package/server/modules/websocket/services/chat-session-writer.service.ts +145 -145
- package/server/modules/websocket/services/chat-websocket.service.ts +425 -425
- package/server/modules/websocket/services/plugin-websocket-proxy.service.ts +65 -65
- package/server/modules/websocket/services/shell-websocket.service.ts +502 -502
- package/server/modules/websocket/services/websocket-auth.service.ts +59 -59
- package/server/modules/websocket/services/websocket-server.service.ts +124 -124
- package/server/modules/websocket/services/websocket-state.service.ts +16 -16
- package/server/modules/websocket/services/websocket-writer.service.ts +38 -38
- package/server/modules/websocket/tests/chat-attachment-filter.test.ts +59 -59
- package/server/modules/websocket/tests/chat-run-registry.test.ts +282 -282
- package/server/modules/websocket/tests/shell-websocket.service.test.ts +100 -100
- package/server/modules/websocket/tests/websocket-heartbeat.service.test.ts +78 -78
- package/server/modules/worktrees/index.ts +2 -2
- package/server/modules/worktrees/services/worktree-create-and-open.service.ts +53 -53
- package/server/modules/worktrees/services/worktree-create.service.ts +104 -104
- package/server/modules/worktrees/services/worktree-git.service.ts +207 -207
- package/server/modules/worktrees/services/worktree-list.service.ts +143 -143
- package/server/modules/worktrees/services/worktree-merge.service.ts +157 -157
- package/server/modules/worktrees/services/worktree-open.service.ts +85 -85
- package/server/modules/worktrees/services/worktree-remove.service.ts +88 -88
- package/server/modules/worktrees/tests/worktree-create-and-open.service.test.ts +68 -68
- package/server/modules/worktrees/tests/worktree-create.service.test.ts +142 -142
- package/server/modules/worktrees/tests/worktree-git.service.test.ts +84 -84
- package/server/modules/worktrees/tests/worktree-list.service.test.ts +45 -45
- package/server/modules/worktrees/tests/worktree-merge.service.test.ts +213 -213
- package/server/modules/worktrees/tests/worktree-open.service.test.ts +122 -122
- package/server/modules/worktrees/tests/worktree-remove.service.test.ts +227 -227
- package/server/modules/worktrees/tests/worktrees.routes.test.ts +199 -199
- package/server/modules/worktrees/worktrees.module.ts +113 -113
- package/server/modules/worktrees/worktrees.routes.ts +116 -116
- package/server/shared/claude-cli-path.ts +139 -139
- package/server/shared/frontmatter.ts +18 -18
- package/server/shared/image-attachments.ts +435 -435
- package/server/shared/interfaces.ts +179 -179
- package/server/shared/tests/claude-cli-path.test.ts +61 -61
- package/server/shared/tests/image-attachments.test.ts +353 -353
- package/server/shared/tests/slice-tail-page.test.ts +42 -42
- package/server/shared/types.ts +1226 -1226
- package/server/shared/utils.ts +1161 -1161
- package/server/tsconfig.json +40 -40
- package/shared/networkHosts.js +22 -22
- package/dist/assets/channel-Bm0ZLE4z.js +0 -1
- package/dist/assets/classDiagram-JCYQIIEL-DqEOcNxw.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-DqEOcNxw.js +0 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-DARLpEFJ.js +0 -1
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-CrgDgaY8.js +0 -8
|
@@ -27,8 +27,8 @@ export const githubTokensDb = {
|
|
|
27
27
|
getGithubTokenById(userId, tokenId) {
|
|
28
28
|
const db = getConnection();
|
|
29
29
|
const row = db
|
|
30
|
-
.prepare(`SELECT *
|
|
31
|
-
FROM user_credentials
|
|
30
|
+
.prepare(`SELECT *
|
|
31
|
+
FROM user_credentials
|
|
32
32
|
WHERE id = ? AND user_id = ? AND credential_type = ? AND is_active = 1`)
|
|
33
33
|
.get(tokenId, userId, GITHUB_TOKEN_TYPE);
|
|
34
34
|
if (!row)
|
|
@@ -36,57 +36,57 @@ export const notificationChannelEndpointsDb = {
|
|
|
36
36
|
throw new Error('endpointId is required');
|
|
37
37
|
const enabled = input.enabled === false ? 0 : 1;
|
|
38
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,
|
|
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
55
|
updated_at = CURRENT_TIMESTAMP`).run(input.userId, channel, endpointId, normalizeNullableText(input.label), serializeMetadata(input.metadata), enabled);
|
|
56
56
|
return notificationChannelEndpointsDb.getEndpoint(input.userId, channel, endpointId);
|
|
57
57
|
},
|
|
58
58
|
getEndpoint(userId, channel, endpointId) {
|
|
59
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
|
|
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
62
|
WHERE user_id = ? AND channel = ? AND endpoint_id = ?`).get(userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
63
63
|
return row || null;
|
|
64
64
|
},
|
|
65
65
|
getEndpoints(userId, channel) {
|
|
66
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 = ?
|
|
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
70
|
ORDER BY last_seen_at DESC`).all(userId, normalizeRequiredText(channel));
|
|
71
71
|
},
|
|
72
72
|
getEnabledEndpoints(userId, channel) {
|
|
73
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
|
|
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
77
|
ORDER BY last_seen_at DESC`).all(userId, normalizeRequiredText(channel));
|
|
78
78
|
},
|
|
79
79
|
setEndpointEnabled(userId, channel, endpointId, enabled) {
|
|
80
80
|
const db = getConnection();
|
|
81
|
-
const result = db.prepare(`UPDATE notification_channel_endpoints
|
|
82
|
-
SET enabled = ?, updated_at = CURRENT_TIMESTAMP
|
|
81
|
+
const result = db.prepare(`UPDATE notification_channel_endpoints
|
|
82
|
+
SET enabled = ?, updated_at = CURRENT_TIMESTAMP
|
|
83
83
|
WHERE user_id = ? AND channel = ? AND endpoint_id = ?`).run(enabled ? 1 : 0, userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
84
84
|
return result.changes > 0;
|
|
85
85
|
},
|
|
86
86
|
touchEndpoint(userId, channel, endpointId) {
|
|
87
87
|
const db = getConnection();
|
|
88
|
-
const result = db.prepare(`UPDATE notification_channel_endpoints
|
|
89
|
-
SET last_seen_at = CURRENT_TIMESTAMP
|
|
88
|
+
const result = db.prepare(`UPDATE notification_channel_endpoints
|
|
89
|
+
SET last_seen_at = CURRENT_TIMESTAMP
|
|
90
90
|
WHERE user_id = ? AND channel = ? AND endpoint_id = ?`).run(userId, normalizeRequiredText(channel), normalizeRequiredText(endpointId));
|
|
91
91
|
return result.changes > 0;
|
|
92
92
|
},
|
|
@@ -64,10 +64,10 @@ export const notificationPreferencesDb = {
|
|
|
64
64
|
updateNotificationPreferences(userId, preferences) {
|
|
65
65
|
const normalized = normalizeNotificationPreferences(preferences);
|
|
66
66
|
const db = getConnection();
|
|
67
|
-
db.prepare(`INSERT INTO user_notification_preferences (user_id, preferences_json, updated_at)
|
|
68
|
-
VALUES (?, ?, CURRENT_TIMESTAMP)
|
|
69
|
-
ON CONFLICT(user_id) DO UPDATE SET
|
|
70
|
-
preferences_json = excluded.preferences_json,
|
|
67
|
+
db.prepare(`INSERT INTO user_notification_preferences (user_id, preferences_json, updated_at)
|
|
68
|
+
VALUES (?, ?, CURRENT_TIMESTAMP)
|
|
69
|
+
ON CONFLICT(user_id) DO UPDATE SET
|
|
70
|
+
preferences_json = excluded.preferences_json,
|
|
71
71
|
updated_at = CURRENT_TIMESTAMP`).run(userId, JSON.stringify(normalized));
|
|
72
72
|
return normalized;
|
|
73
73
|
},
|
|
@@ -16,13 +16,13 @@ export const projectsDb = {
|
|
|
16
16
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
17
17
|
const normalizedProjectName = normalizeProjectDisplayName(normalizedProjectPath, customProjectName);
|
|
18
18
|
const attemptedId = randomUUID();
|
|
19
|
-
const row = db.prepare(`
|
|
20
|
-
INSERT INTO projects (project_id, project_path, custom_project_name, isArchived)
|
|
21
|
-
VALUES (?, ?, ?, 0)
|
|
22
|
-
ON CONFLICT(project_path) DO UPDATE SET
|
|
23
|
-
isArchived = 0
|
|
24
|
-
WHERE projects.isArchived = 1
|
|
25
|
-
RETURNING project_id, project_path, custom_project_name, isStarred, isArchived
|
|
19
|
+
const row = db.prepare(`
|
|
20
|
+
INSERT INTO projects (project_id, project_path, custom_project_name, isArchived)
|
|
21
|
+
VALUES (?, ?, ?, 0)
|
|
22
|
+
ON CONFLICT(project_path) DO UPDATE SET
|
|
23
|
+
isArchived = 0
|
|
24
|
+
WHERE projects.isArchived = 1
|
|
25
|
+
RETURNING project_id, project_path, custom_project_name, isStarred, isArchived
|
|
26
26
|
`).get(attemptedId, normalizedProjectPath, normalizedProjectName);
|
|
27
27
|
if (row) {
|
|
28
28
|
return {
|
|
@@ -39,19 +39,19 @@ export const projectsDb = {
|
|
|
39
39
|
getProjectPath(projectPath) {
|
|
40
40
|
const db = getConnection();
|
|
41
41
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
42
|
-
const row = db.prepare(`
|
|
43
|
-
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
44
|
-
FROM projects
|
|
45
|
-
WHERE project_path = ?
|
|
42
|
+
const row = db.prepare(`
|
|
43
|
+
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
44
|
+
FROM projects
|
|
45
|
+
WHERE project_path = ?
|
|
46
46
|
`).get(normalizedProjectPath);
|
|
47
47
|
return row ?? null;
|
|
48
48
|
},
|
|
49
49
|
getProjectById(projectId) {
|
|
50
50
|
const db = getConnection();
|
|
51
|
-
const row = db.prepare(`
|
|
52
|
-
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
53
|
-
FROM projects
|
|
54
|
-
WHERE project_id = ?
|
|
51
|
+
const row = db.prepare(`
|
|
52
|
+
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
53
|
+
FROM projects
|
|
54
|
+
WHERE project_id = ?
|
|
55
55
|
`).get(projectId);
|
|
56
56
|
return row ?? null;
|
|
57
57
|
},
|
|
@@ -65,19 +65,19 @@ export const projectsDb = {
|
|
|
65
65
|
*/
|
|
66
66
|
getProjectPathById(projectId) {
|
|
67
67
|
const db = getConnection();
|
|
68
|
-
const row = db.prepare(`
|
|
69
|
-
SELECT project_path
|
|
70
|
-
FROM projects
|
|
71
|
-
WHERE project_id = ?
|
|
68
|
+
const row = db.prepare(`
|
|
69
|
+
SELECT project_path
|
|
70
|
+
FROM projects
|
|
71
|
+
WHERE project_id = ?
|
|
72
72
|
`).get(projectId);
|
|
73
73
|
return row?.project_path ?? null;
|
|
74
74
|
},
|
|
75
75
|
getProjectPaths() {
|
|
76
76
|
const db = getConnection();
|
|
77
|
-
return db.prepare(`
|
|
78
|
-
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
79
|
-
FROM projects
|
|
80
|
-
WHERE isArchived = 0
|
|
77
|
+
return db.prepare(`
|
|
78
|
+
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
79
|
+
FROM projects
|
|
80
|
+
WHERE isArchived = 0
|
|
81
81
|
`).all();
|
|
82
82
|
},
|
|
83
83
|
/**
|
|
@@ -86,86 +86,86 @@ export const projectsDb = {
|
|
|
86
86
|
*/
|
|
87
87
|
getArchivedProjectPaths() {
|
|
88
88
|
const db = getConnection();
|
|
89
|
-
return db.prepare(`
|
|
90
|
-
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
91
|
-
FROM projects
|
|
92
|
-
WHERE isArchived = 1
|
|
89
|
+
return db.prepare(`
|
|
90
|
+
SELECT project_id, project_path, custom_project_name, isStarred, isArchived
|
|
91
|
+
FROM projects
|
|
92
|
+
WHERE isArchived = 1
|
|
93
93
|
`).all();
|
|
94
94
|
},
|
|
95
95
|
getCustomProjectName(projectPath) {
|
|
96
96
|
const db = getConnection();
|
|
97
97
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
98
|
-
const row = db.prepare(`
|
|
99
|
-
SELECT custom_project_name
|
|
100
|
-
FROM projects
|
|
101
|
-
WHERE project_path = ?
|
|
98
|
+
const row = db.prepare(`
|
|
99
|
+
SELECT custom_project_name
|
|
100
|
+
FROM projects
|
|
101
|
+
WHERE project_path = ?
|
|
102
102
|
`).get(normalizedProjectPath);
|
|
103
103
|
return row?.custom_project_name ?? null;
|
|
104
104
|
},
|
|
105
105
|
updateCustomProjectName(projectPath, customProjectName) {
|
|
106
106
|
const db = getConnection();
|
|
107
107
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
108
|
-
db.prepare(`
|
|
109
|
-
INSERT INTO projects (project_id, project_path, custom_project_name)
|
|
110
|
-
VALUES (?, ?, ?)
|
|
111
|
-
ON CONFLICT(project_path) DO UPDATE SET custom_project_name = excluded.custom_project_name
|
|
108
|
+
db.prepare(`
|
|
109
|
+
INSERT INTO projects (project_id, project_path, custom_project_name)
|
|
110
|
+
VALUES (?, ?, ?)
|
|
111
|
+
ON CONFLICT(project_path) DO UPDATE SET custom_project_name = excluded.custom_project_name
|
|
112
112
|
`).run(randomUUID(), normalizedProjectPath, customProjectName);
|
|
113
113
|
},
|
|
114
114
|
updateCustomProjectNameById(projectId, customProjectName) {
|
|
115
115
|
const db = getConnection();
|
|
116
|
-
db.prepare(`
|
|
117
|
-
UPDATE projects
|
|
118
|
-
SET custom_project_name = ?
|
|
119
|
-
WHERE project_id = ?
|
|
116
|
+
db.prepare(`
|
|
117
|
+
UPDATE projects
|
|
118
|
+
SET custom_project_name = ?
|
|
119
|
+
WHERE project_id = ?
|
|
120
120
|
`).run(customProjectName, projectId);
|
|
121
121
|
},
|
|
122
122
|
updateProjectIsStarred(projectPath, isStarred) {
|
|
123
123
|
const db = getConnection();
|
|
124
124
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
125
|
-
db.prepare(`
|
|
126
|
-
UPDATE projects
|
|
127
|
-
SET isStarred = ?
|
|
128
|
-
WHERE project_path = ?
|
|
125
|
+
db.prepare(`
|
|
126
|
+
UPDATE projects
|
|
127
|
+
SET isStarred = ?
|
|
128
|
+
WHERE project_path = ?
|
|
129
129
|
`).run(isStarred ? 1 : 0, normalizedProjectPath);
|
|
130
130
|
},
|
|
131
131
|
updateProjectIsStarredById(projectId, isStarred) {
|
|
132
132
|
const db = getConnection();
|
|
133
|
-
db.prepare(`
|
|
134
|
-
UPDATE projects
|
|
135
|
-
SET isStarred = ?
|
|
136
|
-
WHERE project_id = ?
|
|
133
|
+
db.prepare(`
|
|
134
|
+
UPDATE projects
|
|
135
|
+
SET isStarred = ?
|
|
136
|
+
WHERE project_id = ?
|
|
137
137
|
`).run(isStarred ? 1 : 0, projectId);
|
|
138
138
|
},
|
|
139
139
|
updateProjectIsArchived(projectPath, isArchived) {
|
|
140
140
|
const db = getConnection();
|
|
141
141
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
142
|
-
db.prepare(`
|
|
143
|
-
UPDATE projects
|
|
144
|
-
SET isArchived = ?
|
|
145
|
-
WHERE project_path = ?
|
|
142
|
+
db.prepare(`
|
|
143
|
+
UPDATE projects
|
|
144
|
+
SET isArchived = ?
|
|
145
|
+
WHERE project_path = ?
|
|
146
146
|
`).run(isArchived ? 1 : 0, normalizedProjectPath);
|
|
147
147
|
},
|
|
148
148
|
updateProjectIsArchivedById(projectId, isArchived) {
|
|
149
149
|
const db = getConnection();
|
|
150
|
-
db.prepare(`
|
|
151
|
-
UPDATE projects
|
|
152
|
-
SET isArchived = ?
|
|
153
|
-
WHERE project_id = ?
|
|
150
|
+
db.prepare(`
|
|
151
|
+
UPDATE projects
|
|
152
|
+
SET isArchived = ?
|
|
153
|
+
WHERE project_id = ?
|
|
154
154
|
`).run(isArchived ? 1 : 0, projectId);
|
|
155
155
|
},
|
|
156
156
|
deleteProjectPath(projectPath) {
|
|
157
157
|
const db = getConnection();
|
|
158
158
|
const normalizedProjectPath = normalizeProjectPath(projectPath);
|
|
159
|
-
db.prepare(`
|
|
160
|
-
DELETE FROM projects
|
|
161
|
-
WHERE project_path = ?
|
|
159
|
+
db.prepare(`
|
|
160
|
+
DELETE FROM projects
|
|
161
|
+
WHERE project_path = ?
|
|
162
162
|
`).run(normalizedProjectPath);
|
|
163
163
|
},
|
|
164
164
|
deleteProjectById(projectId) {
|
|
165
165
|
const db = getConnection();
|
|
166
|
-
db.prepare(`
|
|
167
|
-
DELETE FROM projects
|
|
168
|
-
WHERE project_id = ?
|
|
166
|
+
db.prepare(`
|
|
167
|
+
DELETE FROM projects
|
|
168
|
+
WHERE project_id = ?
|
|
169
169
|
`).run(projectId);
|
|
170
170
|
},
|
|
171
171
|
};
|
|
@@ -7,10 +7,10 @@ const toCustomProviderModelRecord = (row) => ({
|
|
|
7
7
|
sortOrder: row.sort_order,
|
|
8
8
|
});
|
|
9
9
|
const readCustomProviderModelRow = (provider, recordId) => {
|
|
10
|
-
const row = getConnection().prepare(`
|
|
11
|
-
SELECT id, provider, model_id, model_name, sort_order
|
|
12
|
-
FROM provider_models
|
|
13
|
-
WHERE provider = ? AND id = ?
|
|
10
|
+
const row = getConnection().prepare(`
|
|
11
|
+
SELECT id, provider, model_id, model_name, sort_order
|
|
12
|
+
FROM provider_models
|
|
13
|
+
WHERE provider = ? AND id = ?
|
|
14
14
|
`).get(provider, recordId);
|
|
15
15
|
return row ?? null;
|
|
16
16
|
};
|
|
@@ -24,11 +24,11 @@ const readCustomProviderModelRow = (provider, recordId) => {
|
|
|
24
24
|
*/
|
|
25
25
|
export const providerModelsDb = {
|
|
26
26
|
listCustomProviderModels(provider) {
|
|
27
|
-
const rows = getConnection().prepare(`
|
|
28
|
-
SELECT id, provider, model_id, model_name, sort_order
|
|
29
|
-
FROM provider_models
|
|
30
|
-
WHERE provider = ?
|
|
31
|
-
ORDER BY sort_order ASC, lower(model_name) ASC, id ASC
|
|
27
|
+
const rows = getConnection().prepare(`
|
|
28
|
+
SELECT id, provider, model_id, model_name, sort_order
|
|
29
|
+
FROM provider_models
|
|
30
|
+
WHERE provider = ?
|
|
31
|
+
ORDER BY sort_order ASC, lower(model_name) ASC, id ASC
|
|
32
32
|
`).all(provider);
|
|
33
33
|
return rows.map(toCustomProviderModelRecord);
|
|
34
34
|
},
|
|
@@ -37,23 +37,23 @@ export const providerModelsDb = {
|
|
|
37
37
|
return row ? toCustomProviderModelRecord(row) : null;
|
|
38
38
|
},
|
|
39
39
|
findCustomProviderModelByModelId(provider, modelId) {
|
|
40
|
-
const row = getConnection().prepare(`
|
|
41
|
-
SELECT id, provider, model_id, model_name, sort_order
|
|
42
|
-
FROM provider_models
|
|
43
|
-
WHERE provider = ? AND model_id = ?
|
|
40
|
+
const row = getConnection().prepare(`
|
|
41
|
+
SELECT id, provider, model_id, model_name, sort_order
|
|
42
|
+
FROM provider_models
|
|
43
|
+
WHERE provider = ? AND model_id = ?
|
|
44
44
|
`).get(provider, modelId);
|
|
45
45
|
return row ? toCustomProviderModelRecord(row) : null;
|
|
46
46
|
},
|
|
47
47
|
createCustomProviderModel(provider, input) {
|
|
48
48
|
const db = getConnection();
|
|
49
|
-
const nextOrder = db.prepare(`
|
|
50
|
-
SELECT COALESCE(MAX(sort_order), -1) + 1 AS next_order
|
|
51
|
-
FROM provider_models
|
|
52
|
-
WHERE provider = ?
|
|
49
|
+
const nextOrder = db.prepare(`
|
|
50
|
+
SELECT COALESCE(MAX(sort_order), -1) + 1 AS next_order
|
|
51
|
+
FROM provider_models
|
|
52
|
+
WHERE provider = ?
|
|
53
53
|
`).get(provider);
|
|
54
|
-
const result = db.prepare(`
|
|
55
|
-
INSERT INTO provider_models (provider, model_id, model_name, sort_order)
|
|
56
|
-
VALUES (?, ?, ?, ?)
|
|
54
|
+
const result = db.prepare(`
|
|
55
|
+
INSERT INTO provider_models (provider, model_id, model_name, sort_order)
|
|
56
|
+
VALUES (?, ?, ?, ?)
|
|
57
57
|
`).run(provider, input.id, input.model, nextOrder.next_order);
|
|
58
58
|
const row = readCustomProviderModelRow(provider, Number(result.lastInsertRowid));
|
|
59
59
|
if (!row) {
|
|
@@ -68,16 +68,16 @@ export const providerModelsDb = {
|
|
|
68
68
|
if (!previous) {
|
|
69
69
|
return null;
|
|
70
70
|
}
|
|
71
|
-
db.prepare(`
|
|
72
|
-
UPDATE provider_models
|
|
73
|
-
SET model_id = ?, model_name = ?, updated_at = CURRENT_TIMESTAMP
|
|
74
|
-
WHERE provider = ? AND id = ?
|
|
71
|
+
db.prepare(`
|
|
72
|
+
UPDATE provider_models
|
|
73
|
+
SET model_id = ?, model_name = ?, updated_at = CURRENT_TIMESTAMP
|
|
74
|
+
WHERE provider = ? AND id = ?
|
|
75
75
|
`).run(input.id, input.model, provider, recordId);
|
|
76
76
|
if (previous.model_id !== input.id) {
|
|
77
|
-
db.prepare(`
|
|
78
|
-
UPDATE sessions
|
|
79
|
-
SET model = ?, updated_at = CURRENT_TIMESTAMP
|
|
80
|
-
WHERE provider = ? AND model = ?
|
|
77
|
+
db.prepare(`
|
|
78
|
+
UPDATE sessions
|
|
79
|
+
SET model = ?, updated_at = CURRENT_TIMESTAMP
|
|
80
|
+
WHERE provider = ? AND model = ?
|
|
81
81
|
`).run(input.id, provider, previous.model_id);
|
|
82
82
|
}
|
|
83
83
|
return readCustomProviderModelRow(provider, recordId);
|
|
@@ -94,14 +94,14 @@ export const providerModelsDb = {
|
|
|
94
94
|
}
|
|
95
95
|
// The effort is cleared alongside the model because it was chosen for the
|
|
96
96
|
// deleted model; replaced sessions resume on the fallback model's default.
|
|
97
|
-
db.prepare(`
|
|
98
|
-
UPDATE sessions
|
|
99
|
-
SET model = ?, effort = NULL, updated_at = CURRENT_TIMESTAMP
|
|
100
|
-
WHERE provider = ? AND model = ?
|
|
97
|
+
db.prepare(`
|
|
98
|
+
UPDATE sessions
|
|
99
|
+
SET model = ?, effort = NULL, updated_at = CURRENT_TIMESTAMP
|
|
100
|
+
WHERE provider = ? AND model = ?
|
|
101
101
|
`).run(fallbackModelId, provider, row.model_id);
|
|
102
|
-
db.prepare(`
|
|
103
|
-
DELETE FROM provider_models
|
|
104
|
-
WHERE provider = ? AND id = ?
|
|
102
|
+
db.prepare(`
|
|
103
|
+
DELETE FROM provider_models
|
|
104
|
+
WHERE provider = ? AND id = ?
|
|
105
105
|
`).run(provider, recordId);
|
|
106
106
|
return row;
|
|
107
107
|
});
|
|
@@ -8,11 +8,11 @@ export const pushSubscriptionsDb = {
|
|
|
8
8
|
/** Upserts a push subscription endpoint for a user. */
|
|
9
9
|
createPushSubscription(userId, endpoint, keysP256dh, keysAuth) {
|
|
10
10
|
const db = getConnection();
|
|
11
|
-
db.prepare(`INSERT INTO push_subscriptions (user_id, endpoint, keys_p256dh, keys_auth)
|
|
12
|
-
VALUES (?, ?, ?, ?)
|
|
13
|
-
ON CONFLICT(endpoint) DO UPDATE SET
|
|
14
|
-
user_id = excluded.user_id,
|
|
15
|
-
keys_p256dh = excluded.keys_p256dh,
|
|
11
|
+
db.prepare(`INSERT INTO push_subscriptions (user_id, endpoint, keys_p256dh, keys_auth)
|
|
12
|
+
VALUES (?, ?, ?, ?)
|
|
13
|
+
ON CONFLICT(endpoint) DO UPDATE SET
|
|
14
|
+
user_id = excluded.user_id,
|
|
15
|
+
keys_p256dh = excluded.keys_p256dh,
|
|
16
16
|
keys_auth = excluded.keys_auth`).run(userId, endpoint, keysP256dh, keysAuth);
|
|
17
17
|
},
|
|
18
18
|
/** Returns all subscriptions for a user. */
|
|
@@ -20,11 +20,11 @@ export const scanStateDb = {
|
|
|
20
20
|
updateLastScannedAt(scannedAt = new Date()) {
|
|
21
21
|
const db = getConnection();
|
|
22
22
|
const sqliteTimestamp = scannedAt.toISOString().slice(0, 19).replace('T', ' ');
|
|
23
|
-
db.prepare(`
|
|
24
|
-
INSERT INTO scan_state (id, last_scanned_at)
|
|
25
|
-
VALUES (1, ?)
|
|
26
|
-
ON CONFLICT (id)
|
|
27
|
-
DO UPDATE SET last_scanned_at = excluded.last_scanned_at
|
|
23
|
+
db.prepare(`
|
|
24
|
+
INSERT INTO scan_state (id, last_scanned_at)
|
|
25
|
+
VALUES (1, ?)
|
|
26
|
+
ON CONFLICT (id)
|
|
27
|
+
DO UPDATE SET last_scanned_at = excluded.last_scanned_at
|
|
28
28
|
`).run(sqliteTimestamp);
|
|
29
29
|
}
|
|
30
30
|
};
|