wind-agent-cli 1.37.2 → 1.38.0
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 +17 -2
- package/dist/api-docs.html +901 -901
- package/dist/assets/{CodeEditor-B2Wf7Fg0.js → CodeEditor-FvgsnJ7J.js} +6 -6
- package/dist/assets/FileTree-NLULrBDi.js +1 -0
- package/dist/assets/GitPanel-51KUBbEW.js +4 -0
- package/dist/assets/{MarkdownPreview-C0tqYnVu.js → MarkdownPreview-PEEWVWeS.js} +17 -27
- package/dist/assets/Shell-BEx66cW_.js +76 -0
- package/dist/assets/Shell-DrlLKa8f.css +1 -0
- package/dist/assets/StandaloneShell-BkuUCPZP.js +1 -0
- package/dist/assets/TaskMasterPanel-DfQG80SF.js +2 -0
- package/dist/assets/abnfDiagram-N423BO3Z-Cc0ul87U.js +1 -0
- package/dist/assets/arc-BAuugHw_.js +1 -0
- package/dist/assets/architectureDiagram-T3A2C74G-DA3G7QZD.js +36 -0
- package/dist/assets/{blockDiagram-VBNYF7ZC-DpaEf3mv.js → blockDiagram-VBNYF7ZC-tJ12IJs3.js} +4 -4
- package/dist/assets/c4Diagram-5PPSVZJV-5BTMCXL4.js +10 -0
- package/dist/assets/channel-BGDgNNQz.js +1 -0
- package/dist/assets/{chunk-2GRJ4B5K-DoSdNo8u.js → chunk-2GRJ4B5K-BPaI06Ou.js} +1 -1
- package/dist/assets/{chunk-2Q5K7J3B-CE7I3uMn.js → chunk-2Q5K7J3B-HV4zmsEe.js} +1 -1
- package/dist/assets/chunk-5RXB4S5H-BAwutJoU.js +231 -0
- package/dist/assets/{chunk-5VM5RSS4-B55XgqHZ.js → chunk-5VM5RSS4-B9QAJPrv.js} +1 -1
- package/dist/assets/{chunk-6Q2QTUOP-BS1KpefW.js → chunk-6Q2QTUOP-BOIW8bzI.js} +1 -1
- package/dist/assets/chunk-GF5L2VYU-DD13o00-.js +206 -0
- package/dist/assets/{chunk-JWPE2WC7-DOtkNhMm.js → chunk-JWPE2WC7-CFBm23VK.js} +1 -1
- package/dist/assets/{chunk-KBJHAD2P-BXLjviqM.js → chunk-KBJHAD2P-C0i0v8Op.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-C50fjNNz.js → chunk-RYQCIY6F-DfeK0taV.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-QBYqCkb7.js → chunk-XXDRQBXY-BKWvf-QE.js} +1 -1
- package/dist/assets/classDiagram-JCYQIIEL-C2SNM4oy.js +1 -0
- package/dist/assets/classDiagram-v2-OCEON4UE-C2SNM4oy.js +1 -0
- package/dist/assets/cose-bilkent-JH36ORCC-CBE8oM7L.js +1 -0
- package/dist/assets/{cynefin-VYW2F7L2-DnJa_OlQ.js → cynefin-VYW2F7L2-DziGp35A.js} +11 -23
- package/dist/assets/cynefinDiagram-MW4NZA55-CNvtHl39.js +62 -0
- package/dist/assets/cytoscape.esm-yzknjiTM.js +321 -0
- package/dist/assets/dagre-VZM6K2ZE-Bz9lsU7m.js +4 -0
- package/dist/assets/{diagram-7IWD3JNH-pFzs9HEu.js → diagram-7IWD3JNH-CV7D3VSd.js} +5 -5
- package/dist/assets/{diagram-B4RE2ZJO-CcehQC7x.js → diagram-B4RE2ZJO-Dj4EjDNC.js} +2 -2
- package/dist/assets/diagram-LBJQPF4R-wJ6FHvf-.js +24 -0
- package/dist/assets/diagram-Q27KOJAE-DMFYMhOB.js +24 -0
- package/dist/assets/diagram-UB23O5K3-DeBSbWAI.js +41 -0
- package/dist/assets/ebnfDiagram-BXEA7PRR-2NnJSGhT.js +1 -0
- package/dist/assets/erDiagram-JOGREHBK-DrSlg8hr.js +85 -0
- package/dist/assets/feature-chat-CvOCyaLe.js +88 -0
- package/dist/assets/feature-workspace-CAB6bgPy.js +39 -0
- package/dist/assets/{flowDiagram-UKHOOZJN-CJV8fQPR.js → flowDiagram-UKHOOZJN-C0pejU6W.js} +4 -4
- package/dist/assets/ganttDiagram-PKOTCBZU-BM0VCUUz.js +292 -0
- package/dist/assets/gitGraphDiagram-DS77QQ5N-SbLG0c5_.js +106 -0
- package/dist/assets/graph-DOmOIIwC.js +1 -0
- package/dist/assets/{index-GFhXZyl2.js → index-BflGfU1C.js} +3 -3
- package/dist/assets/index-Btkf0_rU.js +1 -0
- package/dist/assets/index-Cr5MbHuj.css +1 -0
- package/dist/assets/index-Gqazqfs3.js +1 -0
- package/dist/assets/index-nyrkoQK6.js +35 -0
- package/dist/assets/infoDiagram-6WML65LV-Cf5DSa66.js +2 -0
- package/dist/assets/ishikawaDiagram-WSZJBQD7-DwyFutKy.js +70 -0
- package/dist/assets/journeyDiagram-NVQOT4AX-Df0FRhLo.js +139 -0
- package/dist/assets/{kanban-definition-27J2QSJJ-B3iL0ztJ.js → kanban-definition-27J2QSJJ-HmpbjrZz.js} +6 -6
- package/dist/assets/{layout-D6BstSzF.js → layout-D-LzfAck.js} +1 -1
- package/dist/assets/{linear-Cwe9dEKA.js → linear-DOM01LBe.js} +1 -1
- package/dist/assets/map-DxJ2ADlA.js +1 -0
- package/dist/assets/mermaid.core-C2Ma-_S6.js +306 -0
- package/dist/assets/{mindmap-definition-FAOFIHXS-BgfBYMzr.js → mindmap-definition-FAOFIHXS-B4GOIn76.js} +4 -4
- package/dist/assets/pegDiagram-VL7TDLO6-BHur7aH2.js +1 -0
- package/dist/assets/{pieDiagram-7S7Q4E2Y-DeSrxc4I.js → pieDiagram-7S7Q4E2Y-Cw0UELLV.js} +2 -2
- package/dist/assets/quadrantDiagram-CIZ2JOQS-CB2BrX3g.js +7 -0
- package/dist/assets/railroadDiagram-AXF67PYL-DPYZYmLX.js +1 -0
- package/dist/assets/requirementDiagram-LRYGKXZP-DSX4IJ1n.js +84 -0
- package/dist/assets/sankeyDiagram-W5VNT64P-TenC3ZQo.js +40 -0
- package/dist/assets/sequenceDiagram-SI44F4Z6-DltGsf3F.js +162 -0
- package/dist/assets/sizeCapture-X5ZJPWSS-D7llwbJZ.js +1 -0
- package/dist/assets/stateDiagram-OKZ733FA-C-hAvbnY.js +1 -0
- package/dist/assets/stateDiagram-v2-UEYNNEHI-DaYSFcRQ.js +1 -0
- package/dist/assets/swimlanes-SLNWSIFB-DWD30fv6.js +2 -0
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-LTkF2T6t.js +8 -0
- package/dist/assets/timeline-definition-Z64GVDOM-quWmimSE.js +120 -0
- package/dist/assets/vendor-data-DsEZeNPr.js +4 -0
- package/dist/assets/vendor-i18n-B6HjLCnN.js +1 -0
- package/dist/assets/vendor-markdown-DkITEES2.js +298 -0
- package/dist/assets/vendor-react-C2GTiUCy.js +10 -0
- package/dist/assets/vendor-ui-CAUHSABu.js +49 -0
- package/dist/assets/vennDiagram-T6HMQDX7-aUQcm8h5.js +34 -0
- package/dist/assets/{wardleyDiagram-T6FBY63Y-BNCpsFZV.js → wardleyDiagram-T6FBY63Y-BZ0bwsFQ.js} +2 -2
- package/dist/assets/workbox-window.prod.es5-BBnX5xw4.js +2 -0
- package/dist/assets/xychartDiagram-ELKLHX3M-DOVzAq63.js +7 -0
- package/dist/clear-cache.html +85 -85
- package/dist/convert-icons.md +52 -52
- package/dist/favicon.png +0 -0
- 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.png +0 -0
- package/dist/icons/icon-128x128.svg +11 -11
- package/dist/icons/icon-144x144.png +0 -0
- package/dist/icons/icon-144x144.svg +11 -11
- package/dist/icons/icon-152x152.png +0 -0
- package/dist/icons/icon-152x152.svg +11 -11
- package/dist/icons/icon-180x180.png +0 -0
- package/dist/icons/icon-192x192.png +0 -0
- package/dist/icons/icon-192x192.svg +11 -11
- package/dist/icons/icon-384x384.png +0 -0
- package/dist/icons/icon-384x384.svg +11 -11
- package/dist/icons/icon-512x512.png +0 -0
- package/dist/icons/icon-512x512.svg +11 -11
- package/dist/icons/icon-72x72.png +0 -0
- package/dist/icons/icon-72x72.svg +11 -11
- package/dist/icons/icon-96x96.png +0 -0
- package/dist/icons/icon-96x96.svg +11 -11
- package/dist/icons/icon-maskable-192x192.png +0 -0
- package/dist/icons/icon-maskable-512x512.png +0 -0
- package/dist/icons/icon-template.svg +11 -11
- package/dist/icons/new-icon.png +0 -0
- package/dist/index.html +48 -58
- package/dist/logo-128.png +0 -0
- package/dist/logo-256.png +0 -0
- package/dist/logo.svg +17 -17
- package/dist/manifest.webmanifest +1 -0
- package/dist/push-sw.js +48 -0
- package/dist/screenshots/setup-screen-mobile.png +0 -0
- package/dist/screenshots/setup-screen.png +0 -0
- package/dist/sw.js +1 -124
- package/dist/workbox-ae5c0bb2.js +1 -0
- package/dist-server/server/index.js +1 -1
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/load-env.js +4 -2
- package/dist-server/server/load-env.js.map +1 -1
- package/dist-server/server/modules/agent/agent.routes.js +1 -1
- package/dist-server/server/modules/agent/agent.routes.js.map +1 -1
- package/dist-server/server/modules/browser-use/browser-use.service.js +1 -1
- package/dist-server/server/modules/browser-use/browser-use.service.js.map +1 -1
- package/dist-server/server/modules/cli/cli.service.js +37 -37
- package/dist-server/server/modules/cli/cli.service.js.map +1 -1
- package/dist-server/server/modules/cli/sandbox.service.js +43 -43
- package/dist-server/server/modules/cli/sandbox.service.js.map +1 -1
- package/dist-server/server/modules/cli/tests/cli-environment-bootstrap.test.js +74 -74
- package/dist-server/server/modules/commands/commands.routes.js +25 -25
- package/dist-server/server/modules/commands/commands.routes.js.map +1 -1
- package/dist-server/server/modules/commands/tests/commands.test.js +1 -1
- package/dist-server/server/modules/commands/tests/commands.test.js.map +1 -1
- package/dist-server/server/modules/database/connection.js +1 -1
- package/dist-server/server/modules/database/connection.js.map +1 -1
- 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 +93 -93
- package/dist-server/server/modules/database/schema.js +177 -177
- package/dist-server/server/modules/database/tests/projects.db.integration.test.js +3 -2
- package/dist-server/server/modules/database/tests/projects.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js +6 -6
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +4 -3
- package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -1
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +2 -1
- package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
- package/dist-server/server/modules/git/git.routes.js +17 -17
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js +1 -1
- package/dist-server/server/modules/notifications/services/notification-orchestrator.service.js.map +1 -1
- package/dist-server/server/modules/notifications/vapid-keys.service.js +1 -1
- package/dist-server/server/modules/notifications/vapid-keys.service.js.map +1 -1
- package/dist-server/server/modules/projects/tests/project-management.service.test.js +2 -1
- package/dist-server/server/modules/projects/tests/project-management.service.test.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js +2 -2
- package/dist-server/server/modules/providers/list/codex/codex-app-server.client.js.map +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +1 -1
- package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/cursor/cursor-session-synchronizer.provider.js.map +1 -1
- package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +13 -13
- 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/services/sessions.service.js +1 -1
- package/dist-server/server/modules/providers/tests/claude-auth.test.js +8 -0
- package/dist-server/server/modules/providers/tests/claude-auth.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js +1 -1
- package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/mcp.test.js +3 -3
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +98 -98
- package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
- package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +18 -18
- package/dist-server/server/modules/providers/tests/provider.routes.test.js +1 -1
- package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -1
- package/dist-server/server/modules/system/system.service.js +1 -1
- package/dist-server/server/modules/system/system.service.js.map +1 -1
- package/dist-server/server/modules/system/tests/system.service.test.js +1 -1
- package/dist-server/server/modules/system/tests/system.service.test.js.map +1 -1
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js +423 -422
- package/dist-server/server/modules/taskmaster/taskmaster.routes.js.map +1 -1
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js +1 -1
- package/dist-server/server/modules/websocket/services/shell-websocket.service.js.map +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-list.service.js +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-open.service.js +1 -1
- package/dist-server/server/modules/worktrees/services/worktree-remove.service.js +1 -1
- 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 +262 -247
- package/public/api-docs.html +901 -901
- package/scripts/build-client.mjs +30 -0
- package/scripts/fix-node-pty.js +67 -67
- package/scripts/generate-pwa-icons.ps1 +33 -0
- 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/scripts/verify-pwa-build.mjs +37 -0
- package/server/index.ts +399 -399
- package/server/load-env.ts +49 -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 +587 -587
- package/server/modules/commands/index.ts +2 -2
- package/server/modules/commands/tests/commands.test.ts +110 -110
- package/server/modules/database/connection.ts +144 -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 +73 -72
- package/server/modules/database/tests/provider-models.db.integration.test.ts +125 -125
- package/server/modules/database/tests/sessions-provider-mapping.test.ts +110 -109
- package/server/modules/database/tests/sessions.db.integration.test.ts +117 -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 +118 -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-app-server.client.ts +2 -2
- 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 +158 -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 +157 -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 +1483 -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 +503 -503
- 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 +1228 -1228
- package/server/shared/utils.ts +1161 -1161
- package/server/tsconfig.json +40 -40
- package/shared/networkHosts.js +22 -22
- package/dist/assets/FileTree-N2IkkHlv.js +0 -127
- package/dist/assets/GitPanel-DZCeuFZ2.js +0 -29
- package/dist/assets/PluginTabContent-Bnuf-fb8.js +0 -1
- package/dist/assets/Shell-BfFnMZ-f.js +0 -81
- package/dist/assets/Shell-qxJ8_QYu.css +0 -32
- package/dist/assets/StandaloneShell-QmyYwNAl.js +0 -1
- package/dist/assets/TaskMasterPanel-fMsmvN9L.js +0 -32
- package/dist/assets/abnfDiagram-N423BO3Z-DjPU7HLs.js +0 -1
- package/dist/assets/arc-Pdq6Tvr3.js +0 -1
- package/dist/assets/architectureDiagram-T3A2C74G-D0JnT0Vh.js +0 -36
- package/dist/assets/c4Diagram-5PPSVZJV-MpqlPGFi.js +0 -10
- package/dist/assets/channel-Bm0ZLE4z.js +0 -1
- package/dist/assets/chunk-5RXB4S5H-B4UQ8snD.js +0 -231
- package/dist/assets/chunk-GF5L2VYU-DkEPedJP.js +0 -206
- package/dist/assets/classDiagram-JCYQIIEL-DqEOcNxw.js +0 -1
- package/dist/assets/classDiagram-v2-OCEON4UE-DqEOcNxw.js +0 -1
- package/dist/assets/code-xml-VK1YfShP.js +0 -6
- package/dist/assets/cose-bilkent-JH36ORCC-DrVTo1Nh.js +0 -1
- package/dist/assets/cynefinDiagram-MW4NZA55-CCxBjw9E.js +0 -62
- package/dist/assets/cytoscape.esm-C10L9Icf.js +0 -331
- package/dist/assets/dagre-VZM6K2ZE-C_GvE4lu.js +0 -4
- package/dist/assets/diagram-LBJQPF4R-hfKcrrxe.js +0 -24
- package/dist/assets/diagram-Q27KOJAE-C1semJfK.js +0 -24
- package/dist/assets/diagram-UB23O5K3-57hvXQXO.js +0 -41
- package/dist/assets/ebnfDiagram-BXEA7PRR-9KIAlAVw.js +0 -1
- package/dist/assets/erDiagram-JOGREHBK-B7OzJ767.js +0 -85
- package/dist/assets/ganttDiagram-PKOTCBZU-CbMNWWQu.js +0 -292
- package/dist/assets/gitGraphDiagram-DS77QQ5N-I_vZ5waO.js +0 -106
- package/dist/assets/graph-Cx-EqisW.js +0 -1
- package/dist/assets/index-DFnVoqpx.js +0 -1174
- package/dist/assets/index-DlSeAkw_.js +0 -11
- package/dist/assets/index-ZHwIojzi.js +0 -1
- package/dist/assets/index-t1w8KNxn.css +0 -1
- package/dist/assets/infoDiagram-6WML65LV-Dh20Tsbq.js +0 -2
- package/dist/assets/ishikawaDiagram-WSZJBQD7-DH2Sm3ko.js +0 -70
- package/dist/assets/journeyDiagram-NVQOT4AX-BNFQqlVu.js +0 -139
- package/dist/assets/map-CV9uif0g.js +0 -1
- package/dist/assets/mermaid.core-BYRQSshi.js +0 -312
- package/dist/assets/pegDiagram-VL7TDLO6-CNYpECr8.js +0 -1
- package/dist/assets/quadrantDiagram-CIZ2JOQS-BXVVQsa6.js +0 -7
- package/dist/assets/railroadDiagram-AXF67PYL-JTroIW8F.js +0 -1
- package/dist/assets/requirementDiagram-LRYGKXZP-C1Z_inLz.js +0 -84
- package/dist/assets/sankeyDiagram-W5VNT64P-DCJgKFUk.js +0 -40
- package/dist/assets/sequenceDiagram-SI44F4Z6-D8Wrx5Vc.js +0 -162
- package/dist/assets/sizeCapture-X5ZJPWSS-CXqD68vD.js +0 -1
- package/dist/assets/stateDiagram-OKZ733FA-CF0Ekqjo.js +0 -1
- package/dist/assets/stateDiagram-v2-UEYNNEHI-DARLpEFJ.js +0 -1
- package/dist/assets/swimlanes-SLNWSIFB-DVIax_k4.js +0 -2
- package/dist/assets/swimlanesDiagram-ULZ7WXOC-CrgDgaY8.js +0 -8
- package/dist/assets/timeline-definition-Z64GVDOM-DSqk3ApG.js +0 -120
- package/dist/assets/vendor-react-whEHfigN.js +0 -59
- package/dist/assets/vennDiagram-T6HMQDX7-DNbTqyG5.js +0 -34
- package/dist/assets/xychartDiagram-ELKLHX3M-XsVZphHr.js +0 -7
- package/dist/manifest.json +0 -61
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { build, createLogger } from 'vite';
|
|
2
|
+
|
|
3
|
+
const logger = createLogger('info');
|
|
4
|
+
const warnings = [];
|
|
5
|
+
const seenWarnings = new Set();
|
|
6
|
+
const originalWarn = logger.warn.bind(logger);
|
|
7
|
+
const originalWarnOnce = logger.warnOnce.bind(logger);
|
|
8
|
+
|
|
9
|
+
const recordWarning = (message) => {
|
|
10
|
+
if (!seenWarnings.has(message)) {
|
|
11
|
+
seenWarnings.add(message);
|
|
12
|
+
warnings.push(message);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
logger.warn = (message, options) => {
|
|
17
|
+
recordWarning(message);
|
|
18
|
+
originalWarn(message, options);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
logger.warnOnce = (message, options) => {
|
|
22
|
+
recordWarning(message);
|
|
23
|
+
originalWarnOnce(message, options);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
await build({ customLogger: logger });
|
|
27
|
+
|
|
28
|
+
if (warnings.length > 0) {
|
|
29
|
+
throw new Error('Client build emitted ' + warnings.length + ' warning(s).');
|
|
30
|
+
}
|
package/scripts/fix-node-pty.js
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Fix node-pty spawn-helper permissions on macOS
|
|
4
|
-
*
|
|
5
|
-
* This script fixes a known issue with node-pty where the spawn-helper
|
|
6
|
-
* binary is shipped without execute permissions, causing "posix_spawnp failed" errors.
|
|
7
|
-
*
|
|
8
|
-
* @see https://github.com/microsoft/node-pty/issues/850
|
|
9
|
-
* @module scripts/fix-node-pty
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { promises as fs } from 'fs';
|
|
13
|
-
import path from 'path';
|
|
14
|
-
import { fileURLToPath } from 'url';
|
|
15
|
-
|
|
16
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
-
const __dirname = path.dirname(__filename);
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Fixes the spawn-helper binary permissions for node-pty on macOS.
|
|
21
|
-
*
|
|
22
|
-
* The node-pty package ships the spawn-helper binary without execute permissions
|
|
23
|
-
* (644 instead of 755), which causes "posix_spawnp failed" errors when trying
|
|
24
|
-
* to spawn terminal processes.
|
|
25
|
-
*
|
|
26
|
-
* This function:
|
|
27
|
-
* 1. Checks if running on macOS (darwin)
|
|
28
|
-
* 2. Locates spawn-helper binaries for both arm64 and x64 architectures
|
|
29
|
-
* 3. Sets execute permissions (755) on each binary found
|
|
30
|
-
*
|
|
31
|
-
* @async
|
|
32
|
-
* @function fixSpawnHelper
|
|
33
|
-
* @returns {Promise<void>} Resolves when permissions are fixed or skipped
|
|
34
|
-
* @example
|
|
35
|
-
* // Run as postinstall script
|
|
36
|
-
* await fixSpawnHelper();
|
|
37
|
-
*/
|
|
38
|
-
async function fixSpawnHelper() {
|
|
39
|
-
const nodeModulesPath = path.join(__dirname, '..', 'node_modules', 'node-pty', 'prebuilds');
|
|
40
|
-
|
|
41
|
-
// Only run on macOS
|
|
42
|
-
if (process.platform !== 'darwin') {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const darwinDirs = ['darwin-arm64', 'darwin-x64'];
|
|
47
|
-
|
|
48
|
-
for (const dir of darwinDirs) {
|
|
49
|
-
const spawnHelperPath = path.join(nodeModulesPath, dir, 'spawn-helper');
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
// Check if file exists
|
|
53
|
-
await fs.access(spawnHelperPath);
|
|
54
|
-
|
|
55
|
-
// Make it executable (755)
|
|
56
|
-
await fs.chmod(spawnHelperPath, 0o755);
|
|
57
|
-
console.log(`[postinstall] Fixed permissions for ${spawnHelperPath}`);
|
|
58
|
-
} catch (err) {
|
|
59
|
-
// File doesn't exist or other error - ignore
|
|
60
|
-
if (err.code !== 'ENOENT') {
|
|
61
|
-
console.warn(`[postinstall] Warning: Could not fix ${spawnHelperPath}: ${err.message}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
fixSpawnHelper().catch(console.error);
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Fix node-pty spawn-helper permissions on macOS
|
|
4
|
+
*
|
|
5
|
+
* This script fixes a known issue with node-pty where the spawn-helper
|
|
6
|
+
* binary is shipped without execute permissions, causing "posix_spawnp failed" errors.
|
|
7
|
+
*
|
|
8
|
+
* @see https://github.com/microsoft/node-pty/issues/850
|
|
9
|
+
* @module scripts/fix-node-pty
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { promises as fs } from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = path.dirname(__filename);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Fixes the spawn-helper binary permissions for node-pty on macOS.
|
|
21
|
+
*
|
|
22
|
+
* The node-pty package ships the spawn-helper binary without execute permissions
|
|
23
|
+
* (644 instead of 755), which causes "posix_spawnp failed" errors when trying
|
|
24
|
+
* to spawn terminal processes.
|
|
25
|
+
*
|
|
26
|
+
* This function:
|
|
27
|
+
* 1. Checks if running on macOS (darwin)
|
|
28
|
+
* 2. Locates spawn-helper binaries for both arm64 and x64 architectures
|
|
29
|
+
* 3. Sets execute permissions (755) on each binary found
|
|
30
|
+
*
|
|
31
|
+
* @async
|
|
32
|
+
* @function fixSpawnHelper
|
|
33
|
+
* @returns {Promise<void>} Resolves when permissions are fixed or skipped
|
|
34
|
+
* @example
|
|
35
|
+
* // Run as postinstall script
|
|
36
|
+
* await fixSpawnHelper();
|
|
37
|
+
*/
|
|
38
|
+
async function fixSpawnHelper() {
|
|
39
|
+
const nodeModulesPath = path.join(__dirname, '..', 'node_modules', 'node-pty', 'prebuilds');
|
|
40
|
+
|
|
41
|
+
// Only run on macOS
|
|
42
|
+
if (process.platform !== 'darwin') {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const darwinDirs = ['darwin-arm64', 'darwin-x64'];
|
|
47
|
+
|
|
48
|
+
for (const dir of darwinDirs) {
|
|
49
|
+
const spawnHelperPath = path.join(nodeModulesPath, dir, 'spawn-helper');
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
// Check if file exists
|
|
53
|
+
await fs.access(spawnHelperPath);
|
|
54
|
+
|
|
55
|
+
// Make it executable (755)
|
|
56
|
+
await fs.chmod(spawnHelperPath, 0o755);
|
|
57
|
+
console.log(`[postinstall] Fixed permissions for ${spawnHelperPath}`);
|
|
58
|
+
} catch (err) {
|
|
59
|
+
// File doesn't exist or other error - ignore
|
|
60
|
+
if (err.code !== 'ENOENT') {
|
|
61
|
+
console.warn(`[postinstall] Warning: Could not fix ${spawnHelperPath}: ${err.message}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
fixSpawnHelper().catch(console.error);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
param(
|
|
2
|
+
[string]$Source = "public/icons/new-icon.png"
|
|
3
|
+
)
|
|
4
|
+
|
|
5
|
+
$ErrorActionPreference = "Stop"
|
|
6
|
+
$sizes = @(72, 96, 128, 144, 152, 180, 192, 384, 512)
|
|
7
|
+
|
|
8
|
+
foreach ($size in $sizes) {
|
|
9
|
+
ffmpeg -hide_banner -loglevel error -y -i $Source `
|
|
10
|
+
-vf "scale=${size}:${size}:flags=lanczos,format=rgba" `
|
|
11
|
+
-frames:v 1 "public/icons/icon-${size}x${size}.png"
|
|
12
|
+
if ($LASTEXITCODE -ne 0) { throw "ffmpeg failed to generate ${size}x${size} icon" }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
foreach ($size in @(192, 512)) {
|
|
16
|
+
ffmpeg -hide_banner -loglevel error -y `
|
|
17
|
+
-f lavfi -i "color=c=0x111111:s=${size}x${size}" -i $Source `
|
|
18
|
+
-filter_complex "[1:v]scale=${size}:${size}:flags=lanczos,format=rgba[fg];[0:v][fg]overlay=0:0:format=auto,format=rgb24[out]" `
|
|
19
|
+
-map "[out]" -frames:v 1 "public/icons/icon-maskable-${size}x${size}.png"
|
|
20
|
+
if ($LASTEXITCODE -ne 0) { throw "ffmpeg failed to generate ${size}x${size} maskable icon" }
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
foreach ($asset in @(
|
|
24
|
+
@{ Size = 32; Path = "public/favicon.png" },
|
|
25
|
+
@{ Size = 128; Path = "public/logo-128.png" },
|
|
26
|
+
@{ Size = 256; Path = "public/logo-256.png" }
|
|
27
|
+
)) {
|
|
28
|
+
$size = $asset.Size
|
|
29
|
+
ffmpeg -hide_banner -loglevel error -y -i $Source `
|
|
30
|
+
-vf "scale=${size}:${size}:flags=lanczos,format=rgba" `
|
|
31
|
+
-frames:v 1 $asset.Path
|
|
32
|
+
if ($LASTEXITCODE -ne 0) { throw "ffmpeg failed to generate $($asset.Path)" }
|
|
33
|
+
}
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// The server build stages into dist-server.next and this script promotes it
|
|
3
|
-
// into place. The live dist-server must never be deleted before the new build
|
|
4
|
-
// is complete: an interrupted build would otherwise leave the installation
|
|
5
|
-
// without a server entrypoint, crash-looping on MODULE_NOT_FOUND at every
|
|
6
|
-
// start until someone rebuilds it by hand.
|
|
7
|
-
import fs from 'node:fs';
|
|
8
|
-
|
|
9
|
-
const NEXT = 'dist-server.next';
|
|
10
|
-
const LIVE = 'dist-server';
|
|
11
|
-
const OLD = 'dist-server.old';
|
|
12
|
-
const ENTRY = 'server/index.js';
|
|
13
|
-
|
|
14
|
-
const mode = process.argv[2] ?? 'promote';
|
|
15
|
-
|
|
16
|
-
if (mode === 'recover') {
|
|
17
|
-
// Ran before every server start: if a promotion was interrupted between the
|
|
18
|
-
// two renames, put the previous build back so the server can boot.
|
|
19
|
-
if (!fs.existsSync(`${LIVE}/${ENTRY}`) && fs.existsSync(`${OLD}/${ENTRY}`)) {
|
|
20
|
-
console.error('promote-dist-server: restoring previous dist-server after an interrupted promotion.');
|
|
21
|
-
fs.rmSync(LIVE, { recursive: true, force: true });
|
|
22
|
-
fs.renameSync(OLD, LIVE);
|
|
23
|
-
}
|
|
24
|
-
process.exit(0);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (mode !== 'promote') {
|
|
28
|
-
console.error(`promote-dist-server: unknown mode "${mode}" (expected "promote" or "recover").`);
|
|
29
|
-
process.exit(64);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (!fs.existsSync(`${NEXT}/${ENTRY}`)) {
|
|
33
|
-
console.error(`promote-dist-server: ${NEXT}/${ENTRY} is missing; leaving the current ${LIVE} untouched.`);
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
fs.rmSync(OLD, { recursive: true, force: true });
|
|
38
|
-
if (fs.existsSync(LIVE)) {
|
|
39
|
-
fs.renameSync(LIVE, OLD);
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
fs.renameSync(NEXT, LIVE);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
// Put the previous build back before failing so the installation still boots.
|
|
45
|
-
if (fs.existsSync(OLD) && !fs.existsSync(LIVE)) {
|
|
46
|
-
fs.renameSync(OLD, LIVE);
|
|
47
|
-
}
|
|
48
|
-
throw error;
|
|
49
|
-
}
|
|
50
|
-
fs.rmSync(OLD, { recursive: true, force: true });
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The server build stages into dist-server.next and this script promotes it
|
|
3
|
+
// into place. The live dist-server must never be deleted before the new build
|
|
4
|
+
// is complete: an interrupted build would otherwise leave the installation
|
|
5
|
+
// without a server entrypoint, crash-looping on MODULE_NOT_FOUND at every
|
|
6
|
+
// start until someone rebuilds it by hand.
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
|
|
9
|
+
const NEXT = 'dist-server.next';
|
|
10
|
+
const LIVE = 'dist-server';
|
|
11
|
+
const OLD = 'dist-server.old';
|
|
12
|
+
const ENTRY = 'server/index.js';
|
|
13
|
+
|
|
14
|
+
const mode = process.argv[2] ?? 'promote';
|
|
15
|
+
|
|
16
|
+
if (mode === 'recover') {
|
|
17
|
+
// Ran before every server start: if a promotion was interrupted between the
|
|
18
|
+
// two renames, put the previous build back so the server can boot.
|
|
19
|
+
if (!fs.existsSync(`${LIVE}/${ENTRY}`) && fs.existsSync(`${OLD}/${ENTRY}`)) {
|
|
20
|
+
console.error('promote-dist-server: restoring previous dist-server after an interrupted promotion.');
|
|
21
|
+
fs.rmSync(LIVE, { recursive: true, force: true });
|
|
22
|
+
fs.renameSync(OLD, LIVE);
|
|
23
|
+
}
|
|
24
|
+
process.exit(0);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (mode !== 'promote') {
|
|
28
|
+
console.error(`promote-dist-server: unknown mode "${mode}" (expected "promote" or "recover").`);
|
|
29
|
+
process.exit(64);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!fs.existsSync(`${NEXT}/${ENTRY}`)) {
|
|
33
|
+
console.error(`promote-dist-server: ${NEXT}/${ENTRY} is missing; leaving the current ${LIVE} untouched.`);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
fs.rmSync(OLD, { recursive: true, force: true });
|
|
38
|
+
if (fs.existsSync(LIVE)) {
|
|
39
|
+
fs.renameSync(LIVE, OLD);
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
fs.renameSync(NEXT, LIVE);
|
|
43
|
+
} catch (error) {
|
|
44
|
+
// Put the previous build back before failing so the installation still boots.
|
|
45
|
+
if (fs.existsSync(OLD) && !fs.existsSync(LIVE)) {
|
|
46
|
+
fs.renameSync(OLD, LIVE);
|
|
47
|
+
}
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
fs.rmSync(OLD, { recursive: true, force: true });
|
|
@@ -1,176 +1,176 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import crypto from 'node:crypto';
|
|
3
|
-
import { createReadStream, readFileSync } from 'node:fs';
|
|
4
|
-
import fs from 'node:fs/promises';
|
|
5
|
-
import path from 'node:path';
|
|
6
|
-
import { spawn } from 'node:child_process';
|
|
7
|
-
import { fileURLToPath } from 'node:url';
|
|
8
|
-
|
|
9
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
-
const rootDir = path.resolve(__dirname, '..', '..');
|
|
11
|
-
const packageJson = JSON.parse(
|
|
12
|
-
await fs.readFile(path.join(rootDir, 'package.json'), 'utf8'),
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
function getElectronVersion() {
|
|
16
|
-
try {
|
|
17
|
-
return JSON.parse(
|
|
18
|
-
readFileSync(path.join(rootDir, 'node_modules', 'electron', 'package.json'), 'utf8'),
|
|
19
|
-
).version;
|
|
20
|
-
} catch {
|
|
21
|
-
try {
|
|
22
|
-
return JSON.parse(
|
|
23
|
-
readFileSync(path.join(rootDir, 'package-lock.json'), 'utf8'),
|
|
24
|
-
).packages['node_modules/electron'].version;
|
|
25
|
-
} catch {
|
|
26
|
-
throw new Error('Could not resolve an exact Electron version for server native rebuild.');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function mapArch(arch = process.arch) {
|
|
32
|
-
return arch === 'arm64' ? 'arm64' : 'x64';
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function mapPlatform(platform = process.platform) {
|
|
36
|
-
if (platform === 'darwin') return 'mac';
|
|
37
|
-
if (platform === 'win32') return 'win';
|
|
38
|
-
return 'linux';
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function run(command, args, options = {}) {
|
|
42
|
-
return new Promise((resolve, reject) => {
|
|
43
|
-
const child = spawn(command, args, {
|
|
44
|
-
stdio: 'inherit',
|
|
45
|
-
shell: process.platform === 'win32',
|
|
46
|
-
...options,
|
|
47
|
-
});
|
|
48
|
-
child.once('error', reject);
|
|
49
|
-
child.once('exit', (code) => {
|
|
50
|
-
if (code === 0) resolve();
|
|
51
|
-
else reject(new Error(`${command} ${args.join(' ')} exited with code ${code}`));
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async function pathExists(filePath) {
|
|
57
|
-
try {
|
|
58
|
-
await fs.access(filePath);
|
|
59
|
-
return true;
|
|
60
|
-
} catch {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
async function copyRequired(stageDir, relativePath) {
|
|
66
|
-
const from = path.join(rootDir, relativePath);
|
|
67
|
-
if (!(await pathExists(from))) {
|
|
68
|
-
throw new Error(`Required server bundle input is missing: ${relativePath}`);
|
|
69
|
-
}
|
|
70
|
-
await fs.cp(from, path.join(stageDir, relativePath), { recursive: true });
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async function copyIfExists(stageDir, relativePath) {
|
|
74
|
-
const from = path.join(rootDir, relativePath);
|
|
75
|
-
if (!(await pathExists(from))) return;
|
|
76
|
-
await fs.cp(from, path.join(stageDir, relativePath), { recursive: true });
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
async function writeServerPackageJson(stageDir) {
|
|
80
|
-
const stagedPackageJson = {
|
|
81
|
-
...packageJson,
|
|
82
|
-
scripts: {
|
|
83
|
-
...(packageJson.scripts || {}),
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
// The bundle stage is not a git checkout with dev dependencies, so lifecycle
|
|
87
|
-
// scripts such as Husky prepare must not run there. Dependency install scripts
|
|
88
|
-
// still run; native modules need them before the Electron ABI rebuild below.
|
|
89
|
-
delete stagedPackageJson.scripts.postinstall;
|
|
90
|
-
delete stagedPackageJson.scripts.prepare;
|
|
91
|
-
delete stagedPackageJson.scripts.prepublishOnly;
|
|
92
|
-
await fs.writeFile(
|
|
93
|
-
path.join(stageDir, 'package.json'),
|
|
94
|
-
`${JSON.stringify(stagedPackageJson, null, 2)}\n`,
|
|
95
|
-
'utf8',
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function sha256(filePath) {
|
|
100
|
-
return new Promise((resolve, reject) => {
|
|
101
|
-
const hash = crypto.createHash('sha256');
|
|
102
|
-
const stream = createReadStream(filePath);
|
|
103
|
-
stream.on('data', (chunk) => hash.update(chunk));
|
|
104
|
-
stream.on('end', () => resolve(hash.digest('hex')));
|
|
105
|
-
stream.on('error', reject);
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const platform = mapPlatform(process.env.CLOUDCLI_BUNDLE_PLATFORM || process.platform);
|
|
110
|
-
const arch = mapArch(process.env.CLOUDCLI_BUNDLE_ARCH || process.arch);
|
|
111
|
-
const version = packageJson.version;
|
|
112
|
-
const bundleName = `cloudcli-local-server-${version}-${platform}-${arch}.tar.gz`;
|
|
113
|
-
const bundleRoot = path.join(rootDir, 'release', 'local-server');
|
|
114
|
-
const stageDir = path.join(bundleRoot, `.stage-${version}-${platform}-${arch}`);
|
|
115
|
-
const archivePath = path.join(bundleRoot, bundleName);
|
|
116
|
-
|
|
117
|
-
await fs.rm(stageDir, { recursive: true, force: true });
|
|
118
|
-
await fs.mkdir(stageDir, { recursive: true });
|
|
119
|
-
await fs.mkdir(bundleRoot, { recursive: true });
|
|
120
|
-
|
|
121
|
-
await copyRequired(stageDir, 'dist');
|
|
122
|
-
await copyRequired(stageDir, 'dist-server');
|
|
123
|
-
await copyRequired(stageDir, 'public');
|
|
124
|
-
await copyRequired(stageDir, 'shared');
|
|
125
|
-
await copyRequired(stageDir, 'package-lock.json');
|
|
126
|
-
await copyIfExists(stageDir, 'scripts/fix-node-pty.js');
|
|
127
|
-
await writeServerPackageJson(stageDir);
|
|
128
|
-
|
|
129
|
-
console.log('Installing production server dependencies into bundle stage...');
|
|
130
|
-
await run('npm', ['ci', '--omit=dev'], {
|
|
131
|
-
cwd: stageDir,
|
|
132
|
-
env: {
|
|
133
|
-
...process.env,
|
|
134
|
-
npm_config_audit: 'false',
|
|
135
|
-
npm_config_fund: 'false',
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
const electronVersion = getElectronVersion();
|
|
140
|
-
const electronRebuild = process.platform === 'win32'
|
|
141
|
-
? path.join(rootDir, 'node_modules', '.bin', 'electron-rebuild.cmd')
|
|
142
|
-
: path.join(rootDir, 'node_modules', '.bin', 'electron-rebuild');
|
|
143
|
-
console.log(`Rebuilding native server dependencies for Electron ${electronVersion} (${arch})...`);
|
|
144
|
-
await run(electronRebuild, ['--version', electronVersion, '--module-dir', stageDir, '--arch', arch, '--force'], {
|
|
145
|
-
cwd: rootDir,
|
|
146
|
-
env: {
|
|
147
|
-
...process.env,
|
|
148
|
-
npm_config_audit: 'false',
|
|
149
|
-
npm_config_fund: 'false',
|
|
150
|
-
},
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
if (await pathExists(path.join(stageDir, 'scripts', 'fix-node-pty.js'))) {
|
|
154
|
-
await run(process.execPath, ['scripts/fix-node-pty.js'], { cwd: stageDir });
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
await fs.writeFile(
|
|
158
|
-
path.join(stageDir, '.installed.json'),
|
|
159
|
-
JSON.stringify({ version, platform, arch, builtAt: new Date().toISOString() }, null, 2),
|
|
160
|
-
'utf8',
|
|
161
|
-
);
|
|
162
|
-
|
|
163
|
-
await fs.rm(archivePath, { force: true });
|
|
164
|
-
const tarArgs = process.platform === 'win32'
|
|
165
|
-
? ['-czf', archivePath, '-C', stageDir, '.']
|
|
166
|
-
: ['-czf', archivePath, '-C', stageDir, '.'];
|
|
167
|
-
await run('tar', tarArgs);
|
|
168
|
-
|
|
169
|
-
const digest = await sha256(archivePath);
|
|
170
|
-
const checksumPath = `${archivePath}.sha256`;
|
|
171
|
-
await fs.writeFile(checksumPath, `${digest} ${bundleName}\n`, 'utf8');
|
|
172
|
-
await fs.rm(stageDir, { recursive: true, force: true });
|
|
173
|
-
|
|
174
|
-
const size = (await fs.stat(archivePath)).size / 1024 / 1024;
|
|
175
|
-
console.log(`Wrote ${path.relative(rootDir, archivePath)} (${size.toFixed(1)} MB)`);
|
|
176
|
-
console.log(`Wrote ${path.relative(rootDir, checksumPath)}`);
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import crypto from 'node:crypto';
|
|
3
|
+
import { createReadStream, readFileSync } from 'node:fs';
|
|
4
|
+
import fs from 'node:fs/promises';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
|
|
9
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const rootDir = path.resolve(__dirname, '..', '..');
|
|
11
|
+
const packageJson = JSON.parse(
|
|
12
|
+
await fs.readFile(path.join(rootDir, 'package.json'), 'utf8'),
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
function getElectronVersion() {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(
|
|
18
|
+
readFileSync(path.join(rootDir, 'node_modules', 'electron', 'package.json'), 'utf8'),
|
|
19
|
+
).version;
|
|
20
|
+
} catch {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(
|
|
23
|
+
readFileSync(path.join(rootDir, 'package-lock.json'), 'utf8'),
|
|
24
|
+
).packages['node_modules/electron'].version;
|
|
25
|
+
} catch {
|
|
26
|
+
throw new Error('Could not resolve an exact Electron version for server native rebuild.');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function mapArch(arch = process.arch) {
|
|
32
|
+
return arch === 'arm64' ? 'arm64' : 'x64';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function mapPlatform(platform = process.platform) {
|
|
36
|
+
if (platform === 'darwin') return 'mac';
|
|
37
|
+
if (platform === 'win32') return 'win';
|
|
38
|
+
return 'linux';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function run(command, args, options = {}) {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const child = spawn(command, args, {
|
|
44
|
+
stdio: 'inherit',
|
|
45
|
+
shell: process.platform === 'win32',
|
|
46
|
+
...options,
|
|
47
|
+
});
|
|
48
|
+
child.once('error', reject);
|
|
49
|
+
child.once('exit', (code) => {
|
|
50
|
+
if (code === 0) resolve();
|
|
51
|
+
else reject(new Error(`${command} ${args.join(' ')} exited with code ${code}`));
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async function pathExists(filePath) {
|
|
57
|
+
try {
|
|
58
|
+
await fs.access(filePath);
|
|
59
|
+
return true;
|
|
60
|
+
} catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function copyRequired(stageDir, relativePath) {
|
|
66
|
+
const from = path.join(rootDir, relativePath);
|
|
67
|
+
if (!(await pathExists(from))) {
|
|
68
|
+
throw new Error(`Required server bundle input is missing: ${relativePath}`);
|
|
69
|
+
}
|
|
70
|
+
await fs.cp(from, path.join(stageDir, relativePath), { recursive: true });
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function copyIfExists(stageDir, relativePath) {
|
|
74
|
+
const from = path.join(rootDir, relativePath);
|
|
75
|
+
if (!(await pathExists(from))) return;
|
|
76
|
+
await fs.cp(from, path.join(stageDir, relativePath), { recursive: true });
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async function writeServerPackageJson(stageDir) {
|
|
80
|
+
const stagedPackageJson = {
|
|
81
|
+
...packageJson,
|
|
82
|
+
scripts: {
|
|
83
|
+
...(packageJson.scripts || {}),
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
// The bundle stage is not a git checkout with dev dependencies, so lifecycle
|
|
87
|
+
// scripts such as Husky prepare must not run there. Dependency install scripts
|
|
88
|
+
// still run; native modules need them before the Electron ABI rebuild below.
|
|
89
|
+
delete stagedPackageJson.scripts.postinstall;
|
|
90
|
+
delete stagedPackageJson.scripts.prepare;
|
|
91
|
+
delete stagedPackageJson.scripts.prepublishOnly;
|
|
92
|
+
await fs.writeFile(
|
|
93
|
+
path.join(stageDir, 'package.json'),
|
|
94
|
+
`${JSON.stringify(stagedPackageJson, null, 2)}\n`,
|
|
95
|
+
'utf8',
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function sha256(filePath) {
|
|
100
|
+
return new Promise((resolve, reject) => {
|
|
101
|
+
const hash = crypto.createHash('sha256');
|
|
102
|
+
const stream = createReadStream(filePath);
|
|
103
|
+
stream.on('data', (chunk) => hash.update(chunk));
|
|
104
|
+
stream.on('end', () => resolve(hash.digest('hex')));
|
|
105
|
+
stream.on('error', reject);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const platform = mapPlatform(process.env.CLOUDCLI_BUNDLE_PLATFORM || process.platform);
|
|
110
|
+
const arch = mapArch(process.env.CLOUDCLI_BUNDLE_ARCH || process.arch);
|
|
111
|
+
const version = packageJson.version;
|
|
112
|
+
const bundleName = `cloudcli-local-server-${version}-${platform}-${arch}.tar.gz`;
|
|
113
|
+
const bundleRoot = path.join(rootDir, 'release', 'local-server');
|
|
114
|
+
const stageDir = path.join(bundleRoot, `.stage-${version}-${platform}-${arch}`);
|
|
115
|
+
const archivePath = path.join(bundleRoot, bundleName);
|
|
116
|
+
|
|
117
|
+
await fs.rm(stageDir, { recursive: true, force: true });
|
|
118
|
+
await fs.mkdir(stageDir, { recursive: true });
|
|
119
|
+
await fs.mkdir(bundleRoot, { recursive: true });
|
|
120
|
+
|
|
121
|
+
await copyRequired(stageDir, 'dist');
|
|
122
|
+
await copyRequired(stageDir, 'dist-server');
|
|
123
|
+
await copyRequired(stageDir, 'public');
|
|
124
|
+
await copyRequired(stageDir, 'shared');
|
|
125
|
+
await copyRequired(stageDir, 'package-lock.json');
|
|
126
|
+
await copyIfExists(stageDir, 'scripts/fix-node-pty.js');
|
|
127
|
+
await writeServerPackageJson(stageDir);
|
|
128
|
+
|
|
129
|
+
console.log('Installing production server dependencies into bundle stage...');
|
|
130
|
+
await run('npm', ['ci', '--omit=dev'], {
|
|
131
|
+
cwd: stageDir,
|
|
132
|
+
env: {
|
|
133
|
+
...process.env,
|
|
134
|
+
npm_config_audit: 'false',
|
|
135
|
+
npm_config_fund: 'false',
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const electronVersion = getElectronVersion();
|
|
140
|
+
const electronRebuild = process.platform === 'win32'
|
|
141
|
+
? path.join(rootDir, 'node_modules', '.bin', 'electron-rebuild.cmd')
|
|
142
|
+
: path.join(rootDir, 'node_modules', '.bin', 'electron-rebuild');
|
|
143
|
+
console.log(`Rebuilding native server dependencies for Electron ${electronVersion} (${arch})...`);
|
|
144
|
+
await run(electronRebuild, ['--version', electronVersion, '--module-dir', stageDir, '--arch', arch, '--force'], {
|
|
145
|
+
cwd: rootDir,
|
|
146
|
+
env: {
|
|
147
|
+
...process.env,
|
|
148
|
+
npm_config_audit: 'false',
|
|
149
|
+
npm_config_fund: 'false',
|
|
150
|
+
},
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
if (await pathExists(path.join(stageDir, 'scripts', 'fix-node-pty.js'))) {
|
|
154
|
+
await run(process.execPath, ['scripts/fix-node-pty.js'], { cwd: stageDir });
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
await fs.writeFile(
|
|
158
|
+
path.join(stageDir, '.installed.json'),
|
|
159
|
+
JSON.stringify({ version, platform, arch, builtAt: new Date().toISOString() }, null, 2),
|
|
160
|
+
'utf8',
|
|
161
|
+
);
|
|
162
|
+
|
|
163
|
+
await fs.rm(archivePath, { force: true });
|
|
164
|
+
const tarArgs = process.platform === 'win32'
|
|
165
|
+
? ['-czf', archivePath, '-C', stageDir, '.']
|
|
166
|
+
: ['-czf', archivePath, '-C', stageDir, '.'];
|
|
167
|
+
await run('tar', tarArgs);
|
|
168
|
+
|
|
169
|
+
const digest = await sha256(archivePath);
|
|
170
|
+
const checksumPath = `${archivePath}.sha256`;
|
|
171
|
+
await fs.writeFile(checksumPath, `${digest} ${bundleName}\n`, 'utf8');
|
|
172
|
+
await fs.rm(stageDir, { recursive: true, force: true });
|
|
173
|
+
|
|
174
|
+
const size = (await fs.stat(archivePath)).size / 1024 / 1024;
|
|
175
|
+
console.log(`Wrote ${path.relative(rootDir, archivePath)} (${size.toFixed(1)} MB)`);
|
|
176
|
+
console.log(`Wrote ${path.relative(rootDir, checksumPath)}`);
|