@theruansilva/omp-web 2.0.1 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +83 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/assets/CodeViewer-B61IQaP0.js +4 -0
- package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/{TerminalPanel-Cb2CgFtQ.js → TerminalPanel-BcxMZQKk.js} +8 -8
- package/dist/client/assets/{UnifiedDiffViewer-Db5Yxwri.js → UnifiedDiffViewer-BnFQlZDg.js} +2 -2
- package/dist/client/assets/abnfDiagram-O67JEVCF-BCWHgm_-.js +1 -0
- package/dist/client/assets/arc-BUpZciy9.js +1 -0
- package/dist/client/assets/architectureDiagram-NJMV4G6O-CVWCwiqh.js +36 -0
- package/dist/client/assets/blockDiagram-BEXU5L5S-W5WSJa_J.js +140 -0
- package/dist/client/assets/c4Diagram-YGBWAQC7-BWpacECA.js +38 -0
- package/dist/client/assets/channel-ChkqWR3Z.js +1 -0
- package/dist/client/assets/chunk-2Q5K7J3B-D0TV4T28.js +1 -0
- package/dist/client/assets/chunk-3FUC2YCW-BlkJ2B9v.js +2 -0
- package/dist/client/assets/chunk-5VM5RSS4-LRh3HbZr.js +15 -0
- package/dist/client/assets/chunk-GTNCS2PH-CBiTovUf.js +88 -0
- package/dist/client/assets/chunk-GWA4HPMP-Dnu3R9yI.js +1 -0
- package/dist/client/assets/chunk-JWPE2WC7-C2yjQs6c.js +1 -0
- package/dist/client/assets/chunk-NETBCI7D-Dxos4L3P.js +1 -0
- package/dist/client/assets/chunk-WEXAMYUT-DrLvxPom.js +1 -0
- package/dist/client/assets/chunk-XXDRQBXY-Cub_nego.js +1 -0
- package/dist/client/assets/classDiagram-v2-NBCMYWYE-CIe2lhk7.js +217 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-DOGZoTZg.js +1 -0
- package/dist/client/assets/cynefin-OW5HDTMX-DXF0a63d.js +166 -0
- package/dist/client/assets/cynefinDiagram-VND7K2PF-C_Qmhc8V.js +62 -0
- package/dist/client/assets/cytoscape.esm-BB4DxJjf.js +321 -0
- package/dist/client/assets/dagre-6A5THRUB-CEhDrD4X.js +4 -0
- package/dist/client/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/client/assets/diagram-22UHCM2B-CgN81sDZ.js +200 -0
- package/dist/client/assets/diagram-3UASUU5V-Dk1gOSew.js +24 -0
- package/dist/client/assets/diagram-ATOU4E4O-C_tcqhr3.js +3 -0
- package/dist/client/assets/diagram-CDSNMT55-Dj-WM3vk.js +30 -0
- package/dist/client/assets/diagram-MLGK6HIB-CDowox_d.js +24 -0
- package/dist/client/assets/diagram-MPIPVDR6-CaThzNCZ.js +41 -0
- package/dist/client/assets/ebnfDiagram-ZINNZB2B-BZbLdwcz.js +1 -0
- package/dist/client/assets/elk-276RUBZZ-DGku1nk-.js +27 -0
- package/dist/client/assets/erDiagram-OPXOYQCR-D0nJ53i7.js +99 -0
- package/dist/client/assets/flowDiagram-KWPJA3E3-DeB8-O7Y.js +213 -0
- package/dist/client/assets/ganttDiagram-FUAMR5RP-CBcW8sXy.js +292 -0
- package/dist/client/assets/gitGraphDiagram-X574FWY7-CC-b8FLq.js +106 -0
- package/dist/client/assets/graph-D8UmR1vK.js +1 -0
- package/dist/client/assets/index-CyN73uMY.js +5664 -0
- package/dist/client/assets/{index-DGBYb2j9.css → index-DSGiUJZL.css} +1 -1
- package/dist/client/assets/infoDiagram-VRGFBTTK-DL3QMN01.js +2 -0
- package/dist/client/assets/init-Gi6I4Gst.js +1 -0
- package/dist/client/assets/ishikawaDiagram-OU5B5YK6-Brt56LtP.js +70 -0
- package/dist/client/assets/journeyDiagram-ZHPQQLJL-Df8VwbDr.js +139 -0
- package/dist/client/assets/kanban-definition-PNTS6WVX-cVbdWfVg.js +89 -0
- package/dist/client/assets/katex-HP8lGamR.js +257 -0
- package/dist/client/assets/linear-DugbH7BO.js +1 -0
- package/dist/client/assets/mindmap-definition-NLK3R4M7-BDqwqJMJ.js +96 -0
- package/dist/client/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/client/assets/pegDiagram-GJSIUBJH-w6CrSKt0.js +1 -0
- package/dist/client/assets/pieDiagram-5QR66LMP-D0utByOI.js +39 -0
- package/dist/client/assets/quadrantDiagram-O4NWA36T-DIAIplx2.js +7 -0
- package/dist/client/assets/railroadDiagram-XR7U4H2S-BX9P-jy7.js +1 -0
- package/dist/client/assets/requirementDiagram-PLB6GJNP-C55JlmRI.js +84 -0
- package/dist/client/assets/sankeyDiagram-IPEJSGJF-VeHnKI-a.js +40 -0
- package/dist/client/assets/sequenceDiagram-PO4LG4MO-CTUoXviF.js +169 -0
- package/dist/client/assets/sizeCapture-INFHLROL-DBKjJDUZ.js +1 -0
- package/dist/client/assets/stateDiagram-v2-GCMORJYK-DzonJh3D.js +291 -0
- package/dist/client/assets/swimlanes-2SLR337P-Cnsd5mvJ.js +1 -0
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-iyBCc4Xc.js +8 -0
- package/dist/client/assets/timeline-definition-EJHVYXUP-C9nhaxck.js +120 -0
- package/dist/client/assets/usecaseDiagram-POWQR4AR-jfXBWSzR.js +370 -0
- package/dist/client/assets/vendor-editor-core-D-5q2tVX.js +49 -0
- package/dist/client/assets/vendor-editor-languages-B6WRt0aC.js +26 -0
- package/dist/client/assets/vennDiagram-UO4OBE2U-BigR6haV.js +34 -0
- package/dist/client/assets/wardleyDiagram-VNRHLVJA-BXJexKTM.js +78 -0
- package/dist/client/assets/xychartDiagram-PMCCYNJV-HL5cuxsZ.js +7 -0
- package/dist/client/index.html +4 -4
- package/dist/config.js +11 -12
- package/dist/config.js.map +1 -1
- package/dist/omp-web-plugins/mcps/mcpsLogic.js +78 -0
- package/dist/omp-web-plugins/mcps/mcpsPanelElement.js +417 -0
- package/dist/omp-web-plugins/mcps/omp-web-plugin.js +45 -0
- package/dist/omp-web-plugins/mcps/package.json +9 -0
- package/dist/omp-web-plugins/mcps/types.js +2 -0
- package/dist/plugin-api.d.ts +1 -0
- package/dist/server/app.js +24 -1
- package/dist/server/app.js.map +1 -1
- package/dist/server/configRoutes.js +6 -0
- package/dist/server/configRoutes.js.map +1 -1
- package/dist/server/index.js +0 -0
- package/dist/server/machines/machineService.js +3 -0
- package/dist/server/machines/machineService.js.map +1 -1
- package/dist/server/mcpRoutes.js +73 -0
- package/dist/server/mcpRoutes.js.map +1 -0
- package/dist/server/push/PushNotificationService.js +16 -3
- package/dist/server/push/PushNotificationService.js.map +1 -1
- package/dist/server/security.js +172 -0
- package/dist/server/security.js.map +1 -0
- package/dist/server/sessiond/sessionProxyRoutes.js +11 -5
- package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
- package/dist/server/sessiond.js +28 -1
- package/dist/server/sessiond.js.map +1 -1
- package/dist/server/sessions/piAgentSession.js +2 -1
- package/dist/server/sessions/piAgentSession.js.map +1 -1
- package/dist/server/sessions/piSessionService.js +168 -16
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/schedulePrompt/scheduler.js +17 -13
- package/dist/server/sessions/schedulePrompt/scheduler.js.map +1 -1
- package/dist/server/sessions/schedulePrompt/tool.js +13 -1
- package/dist/server/sessions/schedulePrompt/tool.js.map +1 -1
- package/dist/server/sessions/sessionEventMapper.js +36 -2
- package/dist/server/sessions/sessionEventMapper.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +3 -0
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/dist/server/workspaceExplorerRoutes.js +16 -9
- package/dist/server/workspaceExplorerRoutes.js.map +1 -1
- package/dist/server/workspaces/fileContentService.js +9 -4
- package/dist/server/workspaces/fileContentService.js.map +1 -1
- package/dist/server/workspaces/imagePreviewService.js +63 -13
- package/dist/server/workspaces/imagePreviewService.js.map +1 -1
- package/dist/shared/apiTypes.d.ts +18 -1
- package/dist/shared/federatedRoutes.js +2 -0
- package/dist/shared/federatedRoutes.js.map +1 -1
- package/docs/config.md +16 -1
- package/package.json +5 -1
- package/dist/client/assets/CodeViewer-Mp4aTsTY.js +0 -4
- package/dist/client/assets/index-Df4Ex27j.js +0 -4427
- package/dist/client/assets/vendor-editor-core-D9EJm1dE.js +0 -10
- package/dist/client/assets/vendor-editor-languages-N6dcxgRO.js +0 -26
- package/dist/client-react/assets/index-BQ6zLLfz.js +0 -51
- package/dist/client-react/assets/index-Befs78HG.css +0 -1
- package/dist/client-react/index.html +0 -16
- package/dist/docker/piWebDockerCommandPlan.js +0 -211
- package/dist/docker/piWebDockerCommandPlan.js.map +0 -1
- package/dist/pi-web-plugins/info/package.json +0 -9
- package/dist/pi-web-plugins/info/pi-web-plugin.js +0 -51
- package/dist/pi-web-plugins/schedule-prompts/package.json +0 -9
- package/dist/pi-web-plugins/schedule-prompts/pi-web-plugin.js +0 -43
- package/dist/pi-web-plugins/schedule-prompts/schedulePromptsPanelElement.js +0 -226
- package/dist/pi-web-plugins/schedule-prompts/types.js +0 -2
- package/dist/pi-web-plugins/updates/package.json +0 -9
- package/dist/pi-web-plugins/updates/pi-web-plugin.js +0 -173
- package/dist/pi-web-plugins/updates/updatesLogic.js +0 -97
- package/dist/piWebVersionReport.js +0 -225
- package/dist/piWebVersionReport.js.map +0 -1
- package/dist/server/diagnostics/nodePtySpawnHelper.js +0 -130
- package/dist/server/diagnostics/nodePtySpawnHelper.js.map +0 -1
- package/dist/server/piWebPluginService.js +0 -283
- package/dist/server/piWebPluginService.js.map +0 -1
- package/dist/server/piWebStatus.js +0 -602
- package/dist/server/piWebStatus.js.map +0 -1
- package/dist/server/piWebStatusCache.js +0 -32
- package/dist/server/piWebStatusCache.js.map +0 -1
- package/dist/server/workspaces/projectPiWebConfig.js +0 -61
- package/dist/server/workspaces/projectPiWebConfig.js.map +0 -1
- package/dist/shared/piWebStatusParsing.js +0 -102
- package/dist/shared/piWebStatusParsing.js.map +0 -1
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
// Generated from pi-web-plugins/updates/pi-web-plugin.ts. Do not edit directly.
|
|
2
|
-
import { additionalCommands, fallbackDockerStatus, formatVersion, installationLabel, messageCount, recommendedCommand, shouldShowUpdatesPanel, statusFor } from "./updatesLogic.js";
|
|
3
|
-
function runCommandInTerminal(terminal, label, command) {
|
|
4
|
-
void terminal.runCommand({
|
|
5
|
-
title: label,
|
|
6
|
-
command,
|
|
7
|
-
open: true,
|
|
8
|
-
metadata: { "pi.plugin": "updates" },
|
|
9
|
-
}).catch((error) => {
|
|
10
|
-
console.error(`Updates plugin failed to run "${label}"`, error);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
function renderComponent(html, component) {
|
|
14
|
-
const status = !component.available
|
|
15
|
-
? "unavailable"
|
|
16
|
-
: component.stale
|
|
17
|
-
? "restart needed"
|
|
18
|
-
: "current";
|
|
19
|
-
return html `
|
|
20
|
-
<div class="updates-version-row">
|
|
21
|
-
<strong>${component.label}</strong>
|
|
22
|
-
<span>${status}</span>
|
|
23
|
-
<small>running ${formatVersion(component.runtimeVersion)} · installed ${formatVersion(component.installedVersion)}</small>
|
|
24
|
-
<small>${installationLabel(component.installation)}${component.installation?.path === undefined ? "" : ` · ${component.installation.path}`}</small>
|
|
25
|
-
</div>
|
|
26
|
-
`;
|
|
27
|
-
}
|
|
28
|
-
function renderCommandActions(html, terminal, label, command) {
|
|
29
|
-
return html `
|
|
30
|
-
<span class="updates-command-actions">
|
|
31
|
-
<button @click=${() => { void navigator.clipboard.writeText(command); }}>Copy</button>
|
|
32
|
-
${terminal === undefined ? null : html `<button class="primary" @click=${() => { runCommandInTerminal(terminal, label, command); }}>Run</button>`}
|
|
33
|
-
</span>
|
|
34
|
-
`;
|
|
35
|
-
}
|
|
36
|
-
function renderCommand(html, terminal, label, command) {
|
|
37
|
-
return html `
|
|
38
|
-
<div class="updates-command">
|
|
39
|
-
<span>${label}</span>
|
|
40
|
-
<code>${command}</code>
|
|
41
|
-
${renderCommandActions(html, terminal, label, command)}
|
|
42
|
-
</div>
|
|
43
|
-
`;
|
|
44
|
-
}
|
|
45
|
-
function updatesRuntimeHintFromModuleUrl(moduleUrl) {
|
|
46
|
-
try {
|
|
47
|
-
const dockerMode = new URL(moduleUrl).searchParams.get("piWebDockerMode");
|
|
48
|
-
return dockerMode === "runtime" || dockerMode === "dev" ? { dockerMode } : {};
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return {};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const runtimeHint = updatesRuntimeHintFromModuleUrl(import.meta.url);
|
|
55
|
-
function renderCommands(html, terminal, status) {
|
|
56
|
-
const recommended = recommendedCommand(status);
|
|
57
|
-
const additional = additionalCommands(status, recommended);
|
|
58
|
-
if (recommended === undefined && additional.length === 0)
|
|
59
|
-
return undefined;
|
|
60
|
-
return html `
|
|
61
|
-
${recommended === undefined ? null : html `
|
|
62
|
-
<section class="updates-recommended">
|
|
63
|
-
<strong>Recommended</strong>
|
|
64
|
-
<p class="muted">Run this one command to bring this installation fully up to date. Nothing else is required.</p>
|
|
65
|
-
${renderCommand(html, terminal, recommended.label, recommended.command)}
|
|
66
|
-
</section>
|
|
67
|
-
`}
|
|
68
|
-
${additional.length === 0 ? null : html `
|
|
69
|
-
<section>
|
|
70
|
-
<strong>${recommended === undefined ? "Suggested commands" : "Additional commands (optional)"}</strong>
|
|
71
|
-
${recommended === undefined ? null : html `<p class="muted">Only needed for finer control, such as restarting a single service.</p>`}
|
|
72
|
-
${additional.map((entry) => renderCommand(html, terminal, entry.label, entry.command))}
|
|
73
|
-
</section>
|
|
74
|
-
`}
|
|
75
|
-
`;
|
|
76
|
-
}
|
|
77
|
-
function renderUpdatesPanel(html, terminal, state) {
|
|
78
|
-
const status = statusFor(state) ?? fallbackDockerStatus(runtimeHint);
|
|
79
|
-
if (status === undefined) {
|
|
80
|
-
return html `
|
|
81
|
-
<section class="toolbar"><strong>Updates</strong></section>
|
|
82
|
-
<section class="viewer"><p class="muted">Checking PI WEB update status…</p></section>
|
|
83
|
-
`;
|
|
84
|
-
}
|
|
85
|
-
const messages = status.messages;
|
|
86
|
-
return html `
|
|
87
|
-
<style>
|
|
88
|
-
.viewer.updates-status { flex: 1 1 auto; min-height: 0; box-sizing: border-box; display: flex; flex-direction: column; gap: 14px; padding: 12px; overflow-y: auto; overflow-x: hidden; }
|
|
89
|
-
.viewer.updates-status section { flex: 0 0 auto; min-width: 0; display: grid; gap: 8px; }
|
|
90
|
-
.updates-message { display: grid; gap: 5px; border: 1px solid var(--pi-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
|
|
91
|
-
.updates-message.warning { border-color: var(--pi-warning-border); background: var(--pi-warning-surface); }
|
|
92
|
-
.updates-message.error { border-color: var(--pi-danger); }
|
|
93
|
-
.updates-message-title { display: flex; gap: 8px; align-items: baseline; }
|
|
94
|
-
.updates-message-title span { color: var(--pi-muted); font-size: 12px; text-transform: uppercase; }
|
|
95
|
-
.updates-version-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 10px; border-bottom: 1px solid var(--pi-border-muted); padding: 6px 0; }
|
|
96
|
-
.updates-version-row small { grid-column: 1 / -1; color: var(--pi-muted); }
|
|
97
|
-
.updates-command { min-width: 0; display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
|
|
98
|
-
.updates-command code { overflow: auto; border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); padding: 5px 7px; white-space: nowrap; }
|
|
99
|
-
.updates-command-inline { grid-template-columns: minmax(0, 1fr) auto; }
|
|
100
|
-
.updates-command-actions { display: inline-flex; gap: 6px; }
|
|
101
|
-
.updates-command-actions button.primary { border-color: var(--pi-accent-border); color: var(--pi-text-bright); }
|
|
102
|
-
.updates-recommended { border: 1px solid var(--pi-accent-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
|
|
103
|
-
.updates-recommended > strong { color: var(--pi-text-bright); }
|
|
104
|
-
.updates-meta { display: grid; gap: 2px; color: var(--pi-muted); font-size: 12px; }
|
|
105
|
-
@media (max-width: 520px) {
|
|
106
|
-
.updates-command { grid-template-columns: minmax(0, 1fr) auto; }
|
|
107
|
-
.updates-command > span { grid-column: 1 / -1; }
|
|
108
|
-
}
|
|
109
|
-
</style>
|
|
110
|
-
<section class="toolbar"><strong>Updates</strong>${messages.length > 0 ? html `<span class="stale">${String(messages.length)}</span>` : null}</section>
|
|
111
|
-
<section class="viewer updates-status">
|
|
112
|
-
<section>
|
|
113
|
-
${messages.length === 0 ? html `<p class="muted">No PI WEB update or restart messages.</p>` : messages.map((message) => html `
|
|
114
|
-
<article class=${`updates-message ${message.severity}`}>
|
|
115
|
-
<div class="updates-message-title"><strong>${message.title}</strong><span>${message.severity}</span></div>
|
|
116
|
-
<p>${message.body}</p>
|
|
117
|
-
${message.command === undefined ? null : html `
|
|
118
|
-
<div class="updates-command updates-command-inline">
|
|
119
|
-
<code>${message.command}</code>
|
|
120
|
-
${renderCommandActions(html, terminal, message.title, message.command)}
|
|
121
|
-
</div>
|
|
122
|
-
`}
|
|
123
|
-
</article>
|
|
124
|
-
`)}
|
|
125
|
-
</section>
|
|
126
|
-
|
|
127
|
-
<section>
|
|
128
|
-
<strong>Installed services</strong>
|
|
129
|
-
${renderComponent(html, status.components.web)}
|
|
130
|
-
${renderComponent(html, status.components.sessiond)}
|
|
131
|
-
</section>
|
|
132
|
-
|
|
133
|
-
${renderCommands(html, terminal, status)}
|
|
134
|
-
|
|
135
|
-
<section class="updates-meta">
|
|
136
|
-
<span>Generated ${status.generatedAt}</span>
|
|
137
|
-
${status.release.latestVersion === undefined ? null : html `<span>Latest npm release ${status.release.latestVersion}</span>`}
|
|
138
|
-
${status.release.skipped === true ? html `<span>Remote version check skipped.</span>` : null}
|
|
139
|
-
${status.release.error === undefined ? null : html `<span>Remote version check failed: ${status.release.error}</span>`}
|
|
140
|
-
</section>
|
|
141
|
-
</section>
|
|
142
|
-
`;
|
|
143
|
-
}
|
|
144
|
-
const plugin = {
|
|
145
|
-
apiVersion: 1,
|
|
146
|
-
name: "Updates",
|
|
147
|
-
activate: ({ html, svg }) => ({
|
|
148
|
-
contributions: {
|
|
149
|
-
workspacePanels: [
|
|
150
|
-
{
|
|
151
|
-
id: "workspace.updates",
|
|
152
|
-
title: "Updates",
|
|
153
|
-
icon: svg `
|
|
154
|
-
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
155
|
-
<path d="M20 6v5h-5"></path>
|
|
156
|
-
<path d="M4 18v-5h5"></path>
|
|
157
|
-
<path d="M18.4 9A7 7 0 0 0 6.1 6.7L4 8.8"></path>
|
|
158
|
-
<path d="M5.6 15A7 7 0 0 0 17.9 17.3L20 15.2"></path>
|
|
159
|
-
</svg>
|
|
160
|
-
`,
|
|
161
|
-
order: 100,
|
|
162
|
-
visible: (context) => shouldShowUpdatesPanel(context.state, runtimeHint),
|
|
163
|
-
badge: (context) => {
|
|
164
|
-
const count = messageCount(context.state);
|
|
165
|
-
return count > 0 ? count : undefined;
|
|
166
|
-
},
|
|
167
|
-
render: (context) => renderUpdatesPanel(html, context.terminal, context.state),
|
|
168
|
-
},
|
|
169
|
-
],
|
|
170
|
-
},
|
|
171
|
-
}),
|
|
172
|
-
};
|
|
173
|
-
export default plugin;
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
// Generated from pi-web-plugins/updates/updatesLogic.ts. Do not edit directly.
|
|
2
|
-
// The single command users should run when they do not want to think: if an
|
|
3
|
-
// update is available, `commands.update` already chains the update and a full
|
|
4
|
-
// restart; otherwise, when anything is stale, a full restart is enough.
|
|
5
|
-
export function recommendedCommand(status) {
|
|
6
|
-
const { commands, release, components } = status;
|
|
7
|
-
if (release.updateAvailable && typeof commands.update === "string" && commands.update !== "") {
|
|
8
|
-
return { label: "Update & restart everything", command: commands.update };
|
|
9
|
-
}
|
|
10
|
-
const restartNeeded = components.web.stale || components.sessiond.stale || !components.sessiond.available;
|
|
11
|
-
if (restartNeeded && typeof commands.restart === "string" && commands.restart !== "") {
|
|
12
|
-
return { label: "Restart everything", command: commands.restart };
|
|
13
|
-
}
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
export function additionalCommands(status, recommended) {
|
|
17
|
-
return [
|
|
18
|
-
["Update", status.commands.update],
|
|
19
|
-
["Restart all", status.commands.restart],
|
|
20
|
-
["Restart Web/UI", status.commands.restartWeb],
|
|
21
|
-
["Restart session daemon", status.commands.restartSessiond],
|
|
22
|
-
["Status", status.commands.status],
|
|
23
|
-
]
|
|
24
|
-
.filter((entry) => typeof entry[1] === "string" && entry[1] !== "")
|
|
25
|
-
.filter(([, command]) => command !== recommended?.command)
|
|
26
|
-
.map(([label, command]) => ({ label, command }));
|
|
27
|
-
}
|
|
28
|
-
export function messagesFor(state) {
|
|
29
|
-
return state?.piWebStatus?.messages ?? [];
|
|
30
|
-
}
|
|
31
|
-
export function statusFor(state) {
|
|
32
|
-
return state?.piWebStatus;
|
|
33
|
-
}
|
|
34
|
-
export function messageCount(state) {
|
|
35
|
-
return messagesFor(state).length;
|
|
36
|
-
}
|
|
37
|
-
export function isSelfManagedInstallation(installation) {
|
|
38
|
-
return installation === undefined || installation.kind === "local" || installation.kind === "docker" || installation.kind === "unknown";
|
|
39
|
-
}
|
|
40
|
-
export function shouldShowUpdatesPanel(state, hint = {}) {
|
|
41
|
-
const status = statusFor(state);
|
|
42
|
-
if (hint.dockerMode !== undefined)
|
|
43
|
-
return true;
|
|
44
|
-
if (messageCount(state) > 0)
|
|
45
|
-
return true;
|
|
46
|
-
if (status === undefined)
|
|
47
|
-
return false;
|
|
48
|
-
return isSelfManagedInstallation(status.components.web.installation)
|
|
49
|
-
|| isSelfManagedInstallation(status.components.sessiond.installation);
|
|
50
|
-
}
|
|
51
|
-
export function fallbackDockerStatus(hint, generatedAt = "federated status unavailable") {
|
|
52
|
-
if (hint.dockerMode === undefined)
|
|
53
|
-
return undefined;
|
|
54
|
-
const commandPrefix = hint.dockerMode === "dev" ? "pi-web-docker --dev" : "pi-web-docker";
|
|
55
|
-
const installation = { kind: "docker", dockerMode: hint.dockerMode };
|
|
56
|
-
return {
|
|
57
|
-
packageName: "@ProgmRuanSilva/omp-web",
|
|
58
|
-
generatedAt,
|
|
59
|
-
components: {
|
|
60
|
-
web: { component: "web", label: "Web/UI", stale: false, available: true, installation },
|
|
61
|
-
sessiond: { component: "sessiond", label: "Session daemon", stale: false, available: true, installation },
|
|
62
|
-
},
|
|
63
|
-
release: { packageName: "@ProgmRuanSilva/omp-web", updateAvailable: false, skipped: true },
|
|
64
|
-
commands: {
|
|
65
|
-
update: `${commandPrefix} update`,
|
|
66
|
-
restart: `${commandPrefix} restart`,
|
|
67
|
-
restartWeb: `${commandPrefix} restart-web`,
|
|
68
|
-
restartSessiond: `${commandPrefix} restart-sessiond`,
|
|
69
|
-
status: `${commandPrefix} status`,
|
|
70
|
-
},
|
|
71
|
-
messages: [{
|
|
72
|
-
id: "docker-status-compatibility",
|
|
73
|
-
severity: "info",
|
|
74
|
-
title: "Docker update commands available",
|
|
75
|
-
body: "This Updates plugin was loaded from a Docker PI WEB runtime, but the gateway has not provided Docker-aware status details yet. The Docker maintenance commands below are still available.",
|
|
76
|
-
}],
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
export function formatVersion(version) {
|
|
80
|
-
return version === undefined || version === "" ? "unknown" : version;
|
|
81
|
-
}
|
|
82
|
-
export function installationLabel(installation) {
|
|
83
|
-
if (installation === undefined)
|
|
84
|
-
return "installation unknown";
|
|
85
|
-
if (installation.kind === "pi-package") {
|
|
86
|
-
const scope = installation.scope === undefined ? "" : ` · ${installation.scope}`;
|
|
87
|
-
const source = installation.source ?? "Pi package";
|
|
88
|
-
return `${source}${scope}`;
|
|
89
|
-
}
|
|
90
|
-
if (installation.kind === "npm-global")
|
|
91
|
-
return "global npm package";
|
|
92
|
-
if (installation.kind === "local")
|
|
93
|
-
return "local checkout";
|
|
94
|
-
if (installation.kind === "docker")
|
|
95
|
-
return installation.dockerMode === "dev" ? "Docker development runtime" : "Docker runtime";
|
|
96
|
-
return "installation unknown";
|
|
97
|
-
}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { dirname, join } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { effectivePiWebConfig } from "./config.js";
|
|
5
|
-
import { SessionDaemonClient } from "./sessiond/sessionDaemonClient.js";
|
|
6
|
-
import { parsePiWebComponentStatus, parsePiWebVersionResponse } from "./shared/piWebStatusParsing.js";
|
|
7
|
-
const PI_WEB_PACKAGE_NAME = "@ProgmRuanSilva/omp-web";
|
|
8
|
-
const PI_WEB_VERSION_TIMEOUT_MS = 2000;
|
|
9
|
-
const PI_WEB_VERSION_ENDPOINT_PATH = "/api/pi-web/version";
|
|
10
|
-
const PI_WEB_STATUS_ENDPOINT_PATH = "/api/pi-web/status";
|
|
11
|
-
const DEFAULT_PACKAGE_VERSION = "0.0.0-dev";
|
|
12
|
-
export function packageVersion() {
|
|
13
|
-
return readPackageInfo()?.version ?? DEFAULT_PACKAGE_VERSION;
|
|
14
|
-
}
|
|
15
|
-
export async function printPiWebVersionReport() {
|
|
16
|
-
console.log("PI WEB version");
|
|
17
|
-
printInstalledPackageVersions();
|
|
18
|
-
printRunningVersionInfo(await collectRunningVersionInfo());
|
|
19
|
-
}
|
|
20
|
-
function packageRootPath() {
|
|
21
|
-
return dirname(dirname(fileURLToPath(import.meta.url)));
|
|
22
|
-
}
|
|
23
|
-
function packageJsonPath() {
|
|
24
|
-
return join(packageRootPath(), "package.json");
|
|
25
|
-
}
|
|
26
|
-
function readPackageInfo() {
|
|
27
|
-
const path = packageJsonPath();
|
|
28
|
-
try {
|
|
29
|
-
return parsePackageInfo(JSON.parse(readFileSync(path, "utf8")), path);
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function parsePackageInfo(value, path) {
|
|
36
|
-
if (!isRecord(value))
|
|
37
|
-
return undefined;
|
|
38
|
-
const name = value["name"];
|
|
39
|
-
const version = value["version"];
|
|
40
|
-
if (typeof name !== "string" || name === "" || typeof version !== "string" || version === "")
|
|
41
|
-
return undefined;
|
|
42
|
-
return { name, version, path };
|
|
43
|
-
}
|
|
44
|
-
function webVersionEndpoint() {
|
|
45
|
-
try {
|
|
46
|
-
const { config } = effectivePiWebConfig();
|
|
47
|
-
const host = httpClientHost(config.host);
|
|
48
|
-
const port = config.port ?? 8504;
|
|
49
|
-
return { endpoint: `http://${urlHost(host)}:${String(port)}${PI_WEB_VERSION_ENDPOINT_PATH}` };
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
return { error: `could not read PI WEB config: ${errorMessage(error)}` };
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function httpClientHost(configuredHost) {
|
|
56
|
-
const host = configuredHost === undefined || configuredHost === "" ? "127.0.0.1" : configuredHost;
|
|
57
|
-
if (host === "0.0.0.0" || host === "::" || host === "[::]")
|
|
58
|
-
return "127.0.0.1";
|
|
59
|
-
return host;
|
|
60
|
-
}
|
|
61
|
-
function urlHost(host) {
|
|
62
|
-
if (host.startsWith("[") || !host.includes(":"))
|
|
63
|
-
return host;
|
|
64
|
-
return `[${host}]`;
|
|
65
|
-
}
|
|
66
|
-
function statusEndpointFor(versionEndpoint) {
|
|
67
|
-
if (!versionEndpoint.endsWith(PI_WEB_VERSION_ENDPOINT_PATH))
|
|
68
|
-
return versionEndpoint;
|
|
69
|
-
return `${versionEndpoint.slice(0, -PI_WEB_VERSION_ENDPOINT_PATH.length)}${PI_WEB_STATUS_ENDPOINT_PATH}`;
|
|
70
|
-
}
|
|
71
|
-
async function fetchPiWebVersionResponse(endpoint) {
|
|
72
|
-
const response = await fetch(endpoint, {
|
|
73
|
-
headers: { accept: "application/json" },
|
|
74
|
-
signal: AbortSignal.timeout(PI_WEB_VERSION_TIMEOUT_MS),
|
|
75
|
-
});
|
|
76
|
-
if (!response.ok)
|
|
77
|
-
throw new Error(`HTTP ${String(response.status)}`);
|
|
78
|
-
const parsed = await response.json();
|
|
79
|
-
const status = parsePiWebVersionResponse(parsed);
|
|
80
|
-
if (status === undefined)
|
|
81
|
-
throw new Error("response did not include PI WEB version information");
|
|
82
|
-
return status;
|
|
83
|
-
}
|
|
84
|
-
async function collectRunningVersionInfo() {
|
|
85
|
-
const endpoint = webVersionEndpoint();
|
|
86
|
-
if (endpoint.endpoint !== undefined) {
|
|
87
|
-
try {
|
|
88
|
-
const status = await fetchPiWebVersionResponse(endpoint.endpoint);
|
|
89
|
-
return { generatedAt: status.generatedAt, web: status.components.web, sessiond: status.components.sessiond };
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
let webError = `${endpoint.endpoint}: ${errorMessage(error)}`;
|
|
93
|
-
const statusEndpoint = statusEndpointFor(endpoint.endpoint);
|
|
94
|
-
if (statusEndpoint !== endpoint.endpoint && isHttpNotFound(error)) {
|
|
95
|
-
try {
|
|
96
|
-
const status = await fetchPiWebVersionResponse(statusEndpoint);
|
|
97
|
-
return { generatedAt: status.generatedAt, web: status.components.web, sessiond: status.components.sessiond };
|
|
98
|
-
}
|
|
99
|
-
catch (statusError) {
|
|
100
|
-
webError = `${webError}; ${statusEndpoint}: ${errorMessage(statusError)}`;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return runningVersionInfoWithSessiondFallback({ webError });
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return runningVersionInfoWithSessiondFallback({ webError: endpoint.error ?? "web/API status endpoint unavailable" });
|
|
107
|
-
}
|
|
108
|
-
async function runningVersionInfoWithSessiondFallback(base) {
|
|
109
|
-
const sessiond = await collectRunningSessiondInfo();
|
|
110
|
-
return {
|
|
111
|
-
webError: base.webError,
|
|
112
|
-
...(sessiond.component === undefined ? {} : { sessiond: sessiond.component }),
|
|
113
|
-
...(sessiond.error === undefined ? {} : { sessiondError: sessiond.error }),
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
async function collectRunningSessiondInfo() {
|
|
117
|
-
try {
|
|
118
|
-
const response = await withTimeout(new SessionDaemonClient().request("GET", "/health"), PI_WEB_VERSION_TIMEOUT_MS, "session daemon health check timed out");
|
|
119
|
-
if (response.statusCode < 200 || response.statusCode >= 300)
|
|
120
|
-
throw new Error(`HTTP ${String(response.statusCode)}`);
|
|
121
|
-
const parsed = response.body === "" ? undefined : JSON.parse(response.body);
|
|
122
|
-
const version = isRecord(parsed) ? parsed["version"] : undefined;
|
|
123
|
-
const component = parsePiWebComponentStatus(version);
|
|
124
|
-
if (component === undefined)
|
|
125
|
-
throw new Error("health response did not include version information");
|
|
126
|
-
return { component };
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
return { error: errorMessage(error) };
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
async function withTimeout(promise, timeoutMs, timeoutMessage) {
|
|
133
|
-
let timeout;
|
|
134
|
-
try {
|
|
135
|
-
return await Promise.race([
|
|
136
|
-
promise,
|
|
137
|
-
new Promise((_, reject) => {
|
|
138
|
-
timeout = setTimeout(() => {
|
|
139
|
-
reject(new Error(timeoutMessage));
|
|
140
|
-
}, timeoutMs);
|
|
141
|
-
}),
|
|
142
|
-
]);
|
|
143
|
-
}
|
|
144
|
-
finally {
|
|
145
|
-
if (timeout !== undefined)
|
|
146
|
-
clearTimeout(timeout);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function isHttpNotFound(error) {
|
|
150
|
-
return error instanceof Error && error.message === "HTTP 404";
|
|
151
|
-
}
|
|
152
|
-
function printInstalledPackageVersions() {
|
|
153
|
-
const info = readPackageInfo();
|
|
154
|
-
console.log("Installed packages:");
|
|
155
|
-
if (info === undefined) {
|
|
156
|
-
console.log(`? ${PI_WEB_PACKAGE_NAME}: unknown`);
|
|
157
|
-
console.log(` missing package metadata: ${packageJsonPath()}`);
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
console.log(`✓ ${info.name}: ${info.version}`);
|
|
161
|
-
console.log(` ${info.path}`);
|
|
162
|
-
}
|
|
163
|
-
function printRunningVersionInfo(info) {
|
|
164
|
-
console.log("Running services:");
|
|
165
|
-
if (info.web === undefined)
|
|
166
|
-
printUnavailableComponent("Web/UI", info.webError);
|
|
167
|
-
else
|
|
168
|
-
printComponentVersion(info.web);
|
|
169
|
-
if (info.sessiond === undefined)
|
|
170
|
-
printUnavailableComponent("Session daemon", info.sessiondError);
|
|
171
|
-
else
|
|
172
|
-
printComponentVersion(info.sessiond);
|
|
173
|
-
if (info.generatedAt !== undefined)
|
|
174
|
-
console.log(` reported by web/API at ${info.generatedAt}`);
|
|
175
|
-
}
|
|
176
|
-
function printComponentVersion(component) {
|
|
177
|
-
const icon = component.available ? component.stale ? "!" : "✓" : "?";
|
|
178
|
-
const status = !component.available ? "unavailable" : component.stale ? "restart needed" : "current";
|
|
179
|
-
console.log(`${icon} ${component.label}: ${status}`);
|
|
180
|
-
if (component.available || component.runtimeVersion !== undefined || component.installedVersion !== undefined) {
|
|
181
|
-
console.log(` running: ${formatVersion(component.runtimeVersion)}; installed: ${formatVersion(component.installedVersion)}`);
|
|
182
|
-
}
|
|
183
|
-
const installation = installationLabel(component.installation);
|
|
184
|
-
if (installation !== undefined)
|
|
185
|
-
console.log(` installation: ${installation}`);
|
|
186
|
-
if (component.error !== undefined)
|
|
187
|
-
console.log(` ${component.error}`);
|
|
188
|
-
}
|
|
189
|
-
function printUnavailableComponent(label, error) {
|
|
190
|
-
console.log(`? ${label}: unavailable`);
|
|
191
|
-
if (error !== undefined && error !== "")
|
|
192
|
-
console.log(` ${error}`);
|
|
193
|
-
}
|
|
194
|
-
function installationLabel(installation) {
|
|
195
|
-
if (installation === undefined)
|
|
196
|
-
return undefined;
|
|
197
|
-
if (installation.kind === "pi-package") {
|
|
198
|
-
const source = installation.source ?? "Pi package";
|
|
199
|
-
const scope = installation.scope === undefined ? "" : ` · ${installation.scope}`;
|
|
200
|
-
const path = installation.path === undefined ? "" : ` · ${installation.path}`;
|
|
201
|
-
return `${source}${scope}${path}`;
|
|
202
|
-
}
|
|
203
|
-
if (installation.kind === "npm-global") {
|
|
204
|
-
const npmRoot = installation.npmRoot === undefined ? "" : ` · ${installation.npmRoot}`;
|
|
205
|
-
const path = installation.path === undefined ? "" : ` · ${installation.path}`;
|
|
206
|
-
return `global npm package${npmRoot}${path}`;
|
|
207
|
-
}
|
|
208
|
-
if (installation.kind === "local")
|
|
209
|
-
return installation.path === undefined ? "local checkout" : `local checkout · ${installation.path}`;
|
|
210
|
-
if (installation.kind === "docker") {
|
|
211
|
-
const mode = installation.dockerMode === "dev" ? "Docker development runtime" : "Docker runtime";
|
|
212
|
-
return installation.path === undefined ? mode : `${mode} · ${installation.path}`;
|
|
213
|
-
}
|
|
214
|
-
return installation.path === undefined ? "installation unknown" : `installation unknown · ${installation.path}`;
|
|
215
|
-
}
|
|
216
|
-
function formatVersion(version) {
|
|
217
|
-
return version === undefined || version === "" ? "unknown" : version;
|
|
218
|
-
}
|
|
219
|
-
function errorMessage(error) {
|
|
220
|
-
return error instanceof Error ? error.message : String(error);
|
|
221
|
-
}
|
|
222
|
-
function isRecord(value) {
|
|
223
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
224
|
-
}
|
|
225
|
-
//# sourceMappingURL=piWebVersionReport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"piWebVersionReport.js","sourceRoot":"","sources":["../src/piWebVersionReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { accessSync, constants, existsSync, statSync } from "node:fs";
|
|
2
|
-
import { createRequire } from "node:module";
|
|
3
|
-
import { dirname, join } from "node:path";
|
|
4
|
-
import { errorMessage } from "../utils.js";
|
|
5
|
-
export const OMP_WEB_SPAWN_HELPER_ISSUE_URL = "https://github.com/theruansilva/omp-web/issues/4";
|
|
6
|
-
export const NODE_PTY_SPAWN_HELPER_UPSTREAM_ISSUE_URL = "https://github.com/microsoft/node-pty/issues/850";
|
|
7
|
-
const doctorLabel = "node-pty macOS spawn-helper executable";
|
|
8
|
-
const requireFromHere = createRequire(import.meta.url);
|
|
9
|
-
export function checkNodePtyDarwinSpawnHelper(options = {}) {
|
|
10
|
-
const platform = options.platform ?? process.platform;
|
|
11
|
-
if (platform !== "darwin")
|
|
12
|
-
return { status: "skipped", reason: "not-macos" };
|
|
13
|
-
const arch = options.arch ?? process.arch;
|
|
14
|
-
let nodePtyPackageJsonPath;
|
|
15
|
-
try {
|
|
16
|
-
nodePtyPackageJsonPath = options.nodePtyPackageJsonPath ?? (options.resolveNodePtyPackageJson ?? resolveNodePtyPackageJson)();
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
return { status: "node-pty-not-found", message: errorMessage(error) };
|
|
20
|
-
}
|
|
21
|
-
const nodePtyRoot = dirname(nodePtyPackageJsonPath);
|
|
22
|
-
const nativeDir = findNodePtyNativeDir(nodePtyRoot, platform, arch);
|
|
23
|
-
if (nativeDir === undefined) {
|
|
24
|
-
return {
|
|
25
|
-
status: "native-module-not-found",
|
|
26
|
-
nodePtyRoot,
|
|
27
|
-
expectedHelperPath: join(nodePtyRoot, "prebuilds", `${platform}-${arch}`, "spawn-helper"),
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
const helperPath = join(nativeDir, "spawn-helper");
|
|
31
|
-
try {
|
|
32
|
-
if (!statSync(helperPath).isFile())
|
|
33
|
-
return { status: "spawn-helper-not-file", helperPath, nodePtyRoot };
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
if (isFileNotFoundError(error))
|
|
37
|
-
return { status: "spawn-helper-missing", helperPath, nodePtyRoot };
|
|
38
|
-
return { status: "spawn-helper-stat-error", helperPath, nodePtyRoot, message: errorMessage(error) };
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
accessSync(helperPath, constants.X_OK);
|
|
42
|
-
return { status: "ok", helperPath, nodePtyRoot };
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return { status: "spawn-helper-not-executable", helperPath, nodePtyRoot, fixCommand: chmodFixCommand(helperPath) };
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export function formatNodePtyDarwinSpawnHelperCheck(check) {
|
|
49
|
-
if (check.status === "skipped")
|
|
50
|
-
return { ok: true, lines: [] };
|
|
51
|
-
if (check.status === "ok") {
|
|
52
|
-
return {
|
|
53
|
-
ok: true,
|
|
54
|
-
lines: [`✓ ${doctorLabel}`, ` ${check.helperPath}`],
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
if (check.status === "spawn-helper-not-executable") {
|
|
58
|
-
return {
|
|
59
|
-
ok: false,
|
|
60
|
-
lines: [
|
|
61
|
-
`✗ ${doctorLabel}`,
|
|
62
|
-
` ${check.helperPath} exists but is not executable.`,
|
|
63
|
-
` Known upstream node-pty packaging issue: ${NODE_PTY_SPAWN_HELPER_UPSTREAM_ISSUE_URL}`,
|
|
64
|
-
` PI WEB tracking issue: ${OMP_WEB_SPAWN_HELPER_ISSUE_URL}`,
|
|
65
|
-
" Proposed workaround:",
|
|
66
|
-
` ${check.fixCommand}`,
|
|
67
|
-
" Then run `omp-web doctor` again and retry opening a terminal.",
|
|
68
|
-
],
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
return {
|
|
72
|
-
ok: false,
|
|
73
|
-
lines: [`✗ ${doctorLabel}`, ...failureDetails(check)],
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
function resolveNodePtyPackageJson() {
|
|
77
|
-
return requireFromHere.resolve("node-pty/package.json");
|
|
78
|
-
}
|
|
79
|
-
function findNodePtyNativeDir(nodePtyRoot, platform, arch) {
|
|
80
|
-
for (const dir of nodePtyNativeDirs(nodePtyRoot, platform, arch)) {
|
|
81
|
-
if (existsSync(join(dir, "pty.node")))
|
|
82
|
-
return dir;
|
|
83
|
-
}
|
|
84
|
-
return undefined;
|
|
85
|
-
}
|
|
86
|
-
function nodePtyNativeDirs(nodePtyRoot, platform, arch) {
|
|
87
|
-
const dirs = ["build/Release", "build/Debug", `prebuilds/${platform}-${arch}`];
|
|
88
|
-
return dirs.flatMap((dir) => [join(nodePtyRoot, dir), join(nodePtyRoot, "lib", dir)]);
|
|
89
|
-
}
|
|
90
|
-
function failureDetails(check) {
|
|
91
|
-
if (check.status === "node-pty-not-found") {
|
|
92
|
-
return [
|
|
93
|
-
` Could not resolve node-pty from PI WEB: ${check.message}`,
|
|
94
|
-
" Reinstall or update PI WEB, then run `omp-web doctor` again.",
|
|
95
|
-
];
|
|
96
|
-
}
|
|
97
|
-
if (check.status === "native-module-not-found") {
|
|
98
|
-
return [
|
|
99
|
-
` Could not find node-pty's native pty.node module under ${check.nodePtyRoot}.`,
|
|
100
|
-
` Expected macOS helper location: ${check.expectedHelperPath}`,
|
|
101
|
-
" Reinstall or update PI WEB, then run `omp-web doctor` again.",
|
|
102
|
-
];
|
|
103
|
-
}
|
|
104
|
-
if (check.status === "spawn-helper-missing") {
|
|
105
|
-
return [
|
|
106
|
-
` Expected helper is missing: ${check.helperPath}`,
|
|
107
|
-
" Reinstall or update PI WEB, then run `omp-web doctor` again.",
|
|
108
|
-
];
|
|
109
|
-
}
|
|
110
|
-
if (check.status === "spawn-helper-not-file") {
|
|
111
|
-
return [
|
|
112
|
-
` Expected helper is not a regular file: ${check.helperPath}`,
|
|
113
|
-
" Reinstall or update PI WEB, then run `omp-web doctor` again.",
|
|
114
|
-
];
|
|
115
|
-
}
|
|
116
|
-
return [
|
|
117
|
-
` Could not inspect ${check.helperPath}: ${check.message}`,
|
|
118
|
-
" Check the file permissions, then run `omp-web doctor` again.",
|
|
119
|
-
];
|
|
120
|
-
}
|
|
121
|
-
function chmodFixCommand(path) {
|
|
122
|
-
return `chmod +x ${shellSingleQuote(path)}`;
|
|
123
|
-
}
|
|
124
|
-
function shellSingleQuote(value) {
|
|
125
|
-
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
126
|
-
}
|
|
127
|
-
function isFileNotFoundError(error) {
|
|
128
|
-
return error instanceof Error && "code" in error && error.code === "ENOENT";
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=nodePtySpawnHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nodePtySpawnHelper.js","sourceRoot":"","sources":["../../../src/server/diagnostics/nodePtySpawnHelper.ts"],"names":[],"mappings":"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"}
|