@jmfederico/pi-web 1.202610.4 → 1.202610.6

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.
Files changed (106) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/client/assets/classic-CyM97Akm.css +54 -0
  3. package/dist/client/assets/graphite-DquaqFXU.css +54 -0
  4. package/dist/client/assets/index-BAYF7oXL.js +4394 -0
  5. package/dist/client/assets/paper-CB1oLuRr.css +54 -0
  6. package/dist/client/assets/pi-web-dark-D_KtbM95.css +54 -0
  7. package/dist/client/assets/pi-web-light-DSNLMIBI.css +54 -0
  8. package/dist/client/index.html +2 -2
  9. package/dist/config.js +56 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/pi-packages/captains-log/dist/browser/index.js +13 -17
  12. package/dist/pi-packages/captains-log/dist/browser/panel.js +7 -11
  13. package/dist/pi-packages/relays/pi-web-plugin.js +21 -1
  14. package/dist/pi-packages/relays/relaysPanelElement.js +36 -32
  15. package/dist/pi-packages/workflows/browser/pi-web-plugin.js +35 -27
  16. package/dist/pi-packages/workflows/browser/worktreeDialog.js +156 -0
  17. package/dist/pi-packages/workflows/package.json +1 -0
  18. package/dist/pi-packages/workflows/prompts/worktree.md +11 -2
  19. package/dist/pi-packages/workflows/server-plugin.js +579 -0
  20. package/dist/pi-packages/workflows/vite.config.mjs +17 -0
  21. package/dist/pi-web-plugins/code-highlight/browser/pi-web-plugin.js +22 -0
  22. package/dist/pi-web-plugins/code-highlight/package.json +13 -0
  23. package/dist/pi-web-plugins/files/browser/pi-web-plugin.js +119 -162
  24. package/dist/pi-web-plugins/git/browser/git-panel.js +61 -46
  25. package/dist/pi-web-plugins/git/browser/pi-web-plugin.js +25 -3
  26. package/dist/pi-web-plugins/git/git-backend.js +13 -1
  27. package/dist/pi-web-plugins/git/server-plugin.js +8 -1
  28. package/dist/pi-web-plugins/mermaid/browser/pi-web-plugin.js +8 -3
  29. package/dist/pi-web-plugins/terminal/browser/pi-web-plugin.js +50 -29
  30. package/dist/pi-web-plugins/updates/pi-web-plugin.js +11 -11
  31. package/dist/pi-web-plugins/workspace-tasks/pi-web-plugin.js +21 -1
  32. package/dist/pi-web-plugins/workspace-tasks/tasksPanelElement.js +35 -19
  33. package/dist/piWebUpdate.js +32 -9
  34. package/dist/piWebUpdate.js.map +1 -1
  35. package/dist/plugin-api.d.ts +174 -45
  36. package/dist/server/browserMessageProjection.js +1 -1
  37. package/dist/server/browserMessageProjection.js.map +1 -1
  38. package/dist/server/configRoutes.js +7 -1
  39. package/dist/server/configRoutes.js.map +1 -1
  40. package/dist/server/machines/machineProxyRoutes.js +3 -2
  41. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  42. package/dist/server/piWebPluginService.js +7 -1
  43. package/dist/server/piWebPluginService.js.map +1 -1
  44. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js +1 -1
  45. package/dist/server/plugins/pluginBackendChannelProxyAdmission.js.map +1 -1
  46. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js +31 -38
  47. package/dist/server/plugins/pluginBackendChannelProxyRoutes.js.map +1 -1
  48. package/dist/server/plugins/pluginBackendProxyRoutes.js +38 -45
  49. package/dist/server/plugins/pluginBackendProxyRoutes.js.map +1 -1
  50. package/dist/server/plugins/pluginBackendRegistry.js +58 -34
  51. package/dist/server/plugins/pluginBackendRegistry.js.map +1 -1
  52. package/dist/server/plugins/serverPluginCatalogCapability.js +106 -0
  53. package/dist/server/plugins/serverPluginCatalogCapability.js.map +1 -0
  54. package/dist/server/plugins/serverPluginRuntime.js +21 -8
  55. package/dist/server/plugins/serverPluginRuntime.js.map +1 -1
  56. package/dist/server/sessiond/pluginBackendChannelRoutes.js +24 -14
  57. package/dist/server/sessiond/pluginBackendChannelRoutes.js.map +1 -1
  58. package/dist/server/sessiond/pluginBackendRoutes.js +51 -47
  59. package/dist/server/sessiond/pluginBackendRoutes.js.map +1 -1
  60. package/dist/server/sessiond/pluginCatalogRoutes.js +37 -0
  61. package/dist/server/sessiond/pluginCatalogRoutes.js.map +1 -0
  62. package/dist/server/sessiond/sessionProxyRoutes.js +17 -0
  63. package/dist/server/sessiond/sessionProxyRoutes.js.map +1 -1
  64. package/dist/server/sessiond/sessionServiceDependencies.js +1 -0
  65. package/dist/server/sessiond/sessionServiceDependencies.js.map +1 -1
  66. package/dist/server/sessiond.js +24 -4
  67. package/dist/server/sessiond.js.map +1 -1
  68. package/dist/server/sessions/authRoutes.js +1 -0
  69. package/dist/server/sessions/authRoutes.js.map +1 -1
  70. package/dist/server/sessions/authService.js +13 -0
  71. package/dist/server/sessions/authService.js.map +1 -1
  72. package/dist/server/sessions/builtinExtensionFactories.js +15 -1
  73. package/dist/server/sessions/builtinExtensionFactories.js.map +1 -1
  74. package/dist/server/sessions/companionBackend.js +286 -0
  75. package/dist/server/sessions/companionBackend.js.map +1 -0
  76. package/dist/server/sessions/mcpAuthFlowService.js +237 -0
  77. package/dist/server/sessions/mcpAuthFlowService.js.map +1 -0
  78. package/dist/server/sessions/mcpAuthRoutes.js +76 -0
  79. package/dist/server/sessions/mcpAuthRoutes.js.map +1 -0
  80. package/dist/server/sessions/messageHistoryTarget.js +18 -1
  81. package/dist/server/sessions/messageHistoryTarget.js.map +1 -1
  82. package/dist/server/sessions/piSessionEventConnections.js +5 -2
  83. package/dist/server/sessions/piSessionEventConnections.js.map +1 -1
  84. package/dist/server/sessions/piSessionService.js +279 -22
  85. package/dist/server/sessions/piSessionService.js.map +1 -1
  86. package/dist/server/sessions/sessionCommandService.js +3 -17
  87. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  88. package/dist/server/sessions/sessionNameGenerator.js +4 -4
  89. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  90. package/dist/server-plugin-api.d.ts +65 -15
  91. package/dist/server-plugin-api.js +25 -0
  92. package/dist/server-plugin-api.js.map +1 -1
  93. package/dist/shared/apiTypes.js.map +1 -1
  94. package/dist/shared/federatedRoutes.js +17 -5
  95. package/dist/shared/federatedRoutes.js.map +1 -1
  96. package/dist/shared/pluginApiTypes.d.ts +53 -0
  97. package/dist/shared/pluginBackendProtocol.js +56 -1
  98. package/dist/shared/pluginBackendProtocol.js.map +1 -1
  99. package/dist/shared/pluginCatalogTypes.d.ts +49 -0
  100. package/dist/shared/pluginCatalogTypes.js +156 -0
  101. package/dist/shared/pluginCatalogTypes.js.map +1 -0
  102. package/docs/config.md +68 -2
  103. package/docs/plugins.md +382 -20
  104. package/examples/session-bridge-plugin/src/browser/index.ts +1 -1
  105. package/package.json +7 -12
  106. package/dist/client/assets/index-BAl5IbYx.js +0 -4429
@@ -28,8 +28,8 @@ function renderComponent(html, component) {
28
28
  function renderCommandActions(html, terminal, label, command) {
29
29
  return html `
30
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>`}
31
+ <button type="button" class="ui-button ui-button--action ui-button--compact" @click=${() => { void navigator.clipboard.writeText(command); }}>Copy</button>
32
+ ${terminal === undefined ? null : html `<button type="button" class="ui-button ui-button--action ui-button--compact ui-button--primary" @click=${() => { runCommandInTerminal(terminal, label, command); }}>Run</button>`}
33
33
  </span>
34
34
  `;
35
35
  }
@@ -97,7 +97,7 @@ function renderUpdatesPanel(html, terminal, state) {
97
97
  const status = statusFor(state) ?? fallbackDockerStatus(runtimeHint);
98
98
  if (status === undefined) {
99
99
  return html `
100
- <section class="toolbar"><strong>Updates</strong></section>
100
+ <section class="ui-toolbar"><strong class="ui-toolbar-title">Updates</strong></section>
101
101
  <section class="viewer"><p class="muted">Checking PI WEB update status…</p></section>
102
102
  `;
103
103
  }
@@ -106,6 +106,7 @@ function renderUpdatesPanel(html, terminal, state) {
106
106
  const additional = additionalCommands(status, recommended);
107
107
  return html `
108
108
  <style>
109
+ .updates-toolbar { flex: 0 0 auto; padding-inline: 12px; border-bottom: 1px solid var(--pi-border-muted); }
109
110
  .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; }
110
111
  .viewer.updates-status section { flex: 0 0 auto; min-width: 0; display: grid; gap: 8px; }
111
112
  .updates-message { display: grid; gap: 5px; border: 1px solid var(--pi-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
@@ -114,21 +115,20 @@ function renderUpdatesPanel(html, terminal, state) {
114
115
  .updates-message-title { display: flex; gap: 8px; align-items: baseline; }
115
116
  .updates-message-title span { color: var(--pi-muted); font-size: 12px; text-transform: uppercase; }
116
117
  .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; }
117
- .updates-version-row small { grid-column: 1 / -1; color: var(--pi-muted); }
118
- .updates-command { min-width: 0; display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
118
+ .updates-version-row small { grid-column: 1 / -1; color: var(--pi-muted); overflow-wrap: anywhere; }
119
+ .updates-command { min-width: 0; display: grid; grid-template-columns: 150px minmax(0, 1fr) auto; gap: 8px; align-items: center; }
119
120
  .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; }
120
121
  .updates-command-actions { display: inline-flex; gap: 6px; }
121
- .updates-command-actions button.primary { border-color: var(--pi-accent-border); color: var(--pi-text-bright); }
122
122
  .updates-recommended { border: 1px solid var(--pi-accent-border); border-radius: 8px; padding: 10px; background: var(--pi-surface); }
123
123
  .updates-recommended > strong { color: var(--pi-text-bright); }
124
124
  .updates-recommended .updates-message { border: none; background: none; padding: 0; }
125
- .updates-meta { display: grid; gap: 2px; color: var(--pi-muted); font-size: 12px; }
126
- @media (max-width: 520px) {
127
- .updates-command { grid-template-columns: minmax(0, 1fr) auto; }
128
- .updates-command > span { grid-column: 1 / -1; }
125
+ .updates-meta { display: grid; gap: 2px; color: var(--pi-muted); font-size: 12px; overflow-wrap: anywhere; }
126
+ @container (max-width: 520px) {
127
+ .updates-command { grid-template-columns: minmax(0, 1fr); }
128
+ .updates-command-actions { justify-self: start; }
129
129
  }
130
130
  </style>
131
- <section class="toolbar"><strong>Updates</strong>${messages.length > 0 ? html `<span class="stale">${String(messages.length)}</span>` : null}</section>
131
+ <section class="ui-toolbar updates-toolbar"><strong class="ui-toolbar-title">Updates</strong>${messages.length > 0 ? html `<span class="stale">${String(messages.length)}</span>` : null}</section>
132
132
  <section class="viewer updates-status">
133
133
  ${recommended === undefined
134
134
  ? renderNotices(html, messages)
@@ -1,12 +1,32 @@
1
1
  // Generated from pi-web-plugins/workspace-tasks/pi-web-plugin.ts. Do not edit directly.
2
2
  import { TASKS_CONFIG_PATH } from "./config.js";
3
3
  import { defineTasksPanelElement, tasksPanelBadge } from "./tasksPanelElement.js";
4
+ const stylesheetIntegrationCapability = {
5
+ pluginId: "pi-web", id: "stylesheet-integration", version: 1,
6
+ parse(value) {
7
+ if (!isStylesheetIntegration(value)) {
8
+ throw new Error("Stylesheet integration capability v1 requires registerRoot and createController");
9
+ }
10
+ return value;
11
+ },
12
+ };
13
+ function isStylesheetIntegration(value) {
14
+ return typeof value === "object" && value !== null
15
+ && "registerRoot" in value && typeof value.registerRoot === "function"
16
+ && "createController" in value && typeof value.createController === "function"
17
+ && "subscribe" in value && typeof value.subscribe === "function";
18
+ }
4
19
  const plugin = {
5
20
  apiVersion: 4,
6
21
  name: "Workspace Tasks",
22
+ requires: [stylesheetIntegrationCapability],
7
23
  activate: ({ runtimePluginId, html, svg }) => {
8
24
  defineTasksPanelElement();
25
+ let stylesheetIntegration;
9
26
  return {
27
+ start({ capabilities }) {
28
+ stylesheetIntegration = capabilities.resolve(stylesheetIntegrationCapability);
29
+ },
10
30
  contributions: {
11
31
  actions: [
12
32
  {
@@ -38,7 +58,7 @@ const plugin = {
38
58
  `,
39
59
  order: 40,
40
60
  badge: (context) => tasksPanelBadge(context),
41
- render: (context) => html `<pi-web-workspace-tasks-panel .context=${context}></pi-web-workspace-tasks-panel>`,
61
+ render: (context) => html `<pi-web-workspace-tasks-panel .stylesheetIntegration=${stylesheetIntegration} .context=${context}></pi-web-workspace-tasks-panel>`,
42
62
  },
43
63
  ],
44
64
  },
@@ -13,17 +13,36 @@ export function tasksPanelBadge(context) {
13
13
  const state = getCachedWorkspaceConfig(context);
14
14
  return state?.kind === "unavailable" ? "!" : undefined;
15
15
  }
16
- class PiWebTasksPanel extends HTMLElement {
16
+ export class PiWebTasksPanel extends HTMLElement {
17
+ integration;
18
+ releaseStyles;
19
+ set stylesheetIntegration(value) {
20
+ if (value === this.integration)
21
+ return;
22
+ this.releaseStyles?.();
23
+ this.releaseStyles = undefined;
24
+ this.integration = value;
25
+ if (this.isConnected)
26
+ this.releaseStyles = value?.registerRoot(this.root, { sharedUi: true });
27
+ }
17
28
  contextValue;
18
29
  runningTaskId;
19
30
  status;
20
31
  root;
32
+ localStyle = document.createElement("style");
21
33
  onConfigChanged = () => {
22
34
  this.render();
23
35
  };
24
36
  constructor() {
25
37
  super();
26
38
  this.root = this.attachShadow({ mode: "open" });
39
+ this.localStyle.textContent = taskStyles();
40
+ this.root.append(this.localStyle);
41
+ }
42
+ setContent(markup) {
43
+ const template = document.createElement("template");
44
+ template.innerHTML = markup;
45
+ this.root.replaceChildren(this.localStyle, template.content);
27
46
  }
28
47
  set context(value) {
29
48
  const previousKey = this.contextValue === undefined ? undefined : cacheKeyForContext(this.contextValue);
@@ -38,33 +57,35 @@ class PiWebTasksPanel extends HTMLElement {
38
57
  this.render();
39
58
  }
40
59
  connectedCallback() {
60
+ this.releaseStyles ??= this.integration?.registerRoot(this.root, { sharedUi: true });
41
61
  window.addEventListener(configChangedEvent, this.onConfigChanged);
42
62
  this.render();
43
63
  }
44
64
  disconnectedCallback() {
65
+ this.releaseStyles?.();
66
+ this.releaseStyles = undefined;
45
67
  window.removeEventListener(configChangedEvent, this.onConfigChanged);
46
68
  }
47
69
  render() {
48
70
  const context = this.contextValue;
49
71
  if (context === undefined) {
50
- this.root.innerHTML = `${taskStyles()}<section class="empty">Select a workspace.</section>`;
72
+ this.setContent(`<section class="empty">Select a workspace.</section>`);
51
73
  return;
52
74
  }
53
75
  const state = getOrLoadWorkspaceConfig(context);
54
- this.root.innerHTML = `
55
- ${taskStyles()}
56
- <section class="toolbar">
57
- <strong>Workspace Tasks</strong>
58
- <span class="toolbar-tasks">
59
- <button class="secondary" data-refresh-config ${state.kind === "loading" ? "disabled" : ""}>Refresh</button>
60
- <button class="secondary" data-open-terminal>Open Terminal</button>
76
+ this.setContent(`
77
+ <section class="ui-toolbar toolbar">
78
+ <strong class="ui-toolbar-title toolbar-title">Workspace Tasks</strong>
79
+ <span class="ui-toolbar-group">
80
+ <button type="button" class="ui-button" data-refresh-config ${state.kind === "loading" ? "disabled" : ""}>Refresh</button>
81
+ <button type="button" class="ui-button" data-open-terminal>Open Terminal</button>
61
82
  </span>
62
83
  </section>
63
84
  ${this.renderStatus()}
64
85
  <section class="viewer tasks-viewer">
65
86
  ${this.renderConfigState(state)}
66
87
  </section>
67
- `;
88
+ `);
68
89
  this.root.querySelector("button[data-refresh-config]")?.addEventListener("click", () => {
69
90
  void this.refreshConfig(context);
70
91
  });
@@ -236,7 +257,7 @@ function renderTask(task, runningTaskId) {
236
257
  ${description}
237
258
  <code>${escapeHtml(task.command)}</code>
238
259
  </div>
239
- <button data-task-id="${escapeAttr(task.id)}" ${disabled ? "disabled" : ""}>${running ? "Dispatching…" : "Run"}</button>
260
+ <button type="button" class="ui-button ui-button--primary" data-task-id="${escapeAttr(task.id)}" ${disabled ? "disabled" : ""}>${running ? "Dispatching…" : "Run"}</button>
240
261
  </article>
241
262
  `;
242
263
  }
@@ -247,10 +268,9 @@ function taskFromConfigState(state, taskId) {
247
268
  }
248
269
  function taskStyles() {
249
270
  return `
250
- <style>
251
271
  :host { display: contents; }
252
- .toolbar { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--pi-border-muted); }
253
- .toolbar-tasks { display: inline-flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
272
+ .toolbar { border-bottom: 1px solid var(--pi-border-muted); }
273
+ .toolbar-title { padding-inline: 10px; }
254
274
  .viewer { box-sizing: border-box; min-height: 0; overflow: auto; padding: 12px; }
255
275
  .tasks-viewer { display: grid; align-content: start; gap: 12px; }
256
276
  .tasks { display: grid; gap: 14px; }
@@ -259,12 +279,9 @@ function taskStyles() {
259
279
  .task-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; border: 1px solid var(--pi-border); border-radius: 10px; background: var(--pi-surface); padding: 12px; }
260
280
  .task-copy { display: grid; min-width: 0; gap: 5px; }
261
281
  .task-copy span, .muted { color: var(--pi-muted); }
262
- code, pre { border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); color: var(--pi-text-secondary); font: 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
282
+ code, pre { border: 1px solid var(--pi-border-muted); border-radius: 6px; background: var(--pi-bg); color: var(--pi-text-secondary); font: 12px var(--pi-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace); }
263
283
  code { overflow: auto; padding: 5px 7px; white-space: nowrap; }
264
284
  pre { margin: 8px 0 0; overflow: auto; padding: 8px; white-space: pre-wrap; }
265
- button { border: 1px solid var(--pi-accent-border); border-radius: 7px; background: var(--pi-accent); color: var(--pi-bg); cursor: pointer; padding: 6px 10px; font: inherit; }
266
- button.secondary { border-color: var(--pi-border); background: var(--pi-surface); color: var(--pi-text); }
267
- button:disabled { cursor: wait; opacity: 0.65; }
268
285
  .empty-state { border: 1px dashed var(--pi-border-muted); border-radius: 8px; color: var(--pi-muted); padding: 12px; }
269
286
  .empty-state p { margin: 6px 0 0; }
270
287
  .panel-status { margin: 12px 12px 0; }
@@ -277,7 +294,6 @@ function taskStyles() {
277
294
  .task-card { grid-template-columns: 1fr; }
278
295
  .task-card button { justify-self: start; }
279
296
  }
280
- </style>
281
297
  `;
282
298
  }
283
299
  function escapeHtml(value) {
@@ -1,5 +1,5 @@
1
1
  import { execFile, spawn } from "node:child_process";
2
- import { mkdir, realpath, rm, writeFile } from "node:fs/promises";
2
+ import { mkdir, readFile, realpath, rm, writeFile } from "node:fs/promises";
3
3
  import { existsSync } from "node:fs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { homedir, userInfo } from "node:os";
@@ -15,7 +15,7 @@ import { nativeServiceManagerRefs } from "./nativeServices/servicePlan.js";
15
15
  const PACKAGE_NAME = "@jmfederico/pi-web";
16
16
  const UPDATE_HANDOFF_LABEL_PREFIX = "com.pi-web.update";
17
17
  const WARNING = "Updating PI WEB will restart services and interrupt active sessions and terminals, including this terminal.";
18
- const HELP = "Usage: pi-web update [--yes]\nWithout --yes, an interactive confirmation is required. Nested Linux updates use a detached systemd user service. Nested macOS updates use a detached launchd user agent.";
18
+ const HELP = "Usage: pi-web update [--yes] [--force]\n--force reinstalls an npm-global installation even when already current. Without --yes, an interactive confirmation is required. Nested Linux updates use a detached systemd user service. Nested macOS updates use a detached launchd user agent.";
19
19
  function defaultDependencies() {
20
20
  return {
21
21
  env: { ...process.env },
@@ -29,6 +29,7 @@ function defaultDependencies() {
29
29
  mkdir: (path) => mkdir(path, { recursive: true }).then(() => undefined),
30
30
  writeFile: (path, contents) => writeFile(path, contents, { encoding: "utf8", mode: 0o600 }),
31
31
  removeFile: (path) => rm(path, { force: true }),
32
+ readFile: (path) => readFile(path, "utf8"),
32
33
  // Use this installation's Pi, not an unrelated (or older) `pi` on PATH.
33
34
  piCliPath: fileURLToPath(new URL("./cli.js", import.meta.resolve("@earendil-works/pi-coding-agent"))),
34
35
  interactive: isatty(0) && isatty(1),
@@ -72,11 +73,12 @@ function defaultDependencies() {
72
73
  }
73
74
  /** CLI arguments exclude `update`. Throws on invalid/unsafe requests and failed commands. */
74
75
  export async function runPiWebUpdate(args, injected) {
75
- const valid = args.length === 0 || (args.length === 1 && ["--yes", "--help", "-h"].includes(args[0] ?? ""));
76
+ const help = args.length === 1 && ["--help", "-h"].includes(args[0] ?? "");
77
+ const valid = help || (new Set(args).size === args.length && args.every((arg) => ["--yes", "--force"].includes(arg)));
76
78
  if (!valid)
77
79
  throw new Error(`Invalid update arguments. ${HELP}`);
78
80
  const deps = injected ?? defaultDependencies();
79
- if (args[0] === "--help" || args[0] === "-h") {
81
+ if (help) {
80
82
  deps.log(HELP);
81
83
  return;
82
84
  }
@@ -124,7 +126,27 @@ export async function runPiWebUpdate(args, injected) {
124
126
  || await deps.realpath(join(root, PACKAGE_NAME)) !== await deps.realpath(installation.path)) {
125
127
  throw new Error("Global npm target does not match this installation; nothing changed.");
126
128
  }
127
- update = command("npm", ["install", "--global", "--prefix", resolve(prefix), `${PACKAGE_NAME}@latest`, "--allow-scripts=node-pty"]);
129
+ let latestVersion;
130
+ try {
131
+ const version = JSON.parse(await deps.capture(command("npm", ["view", "--global", "--prefix", resolve(prefix), `${PACKAGE_NAME}@latest`, "version", "--json"])));
132
+ if (typeof version !== "string" || !/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(version)) {
133
+ throw new Error("npm did not return a package version");
134
+ }
135
+ latestVersion = version;
136
+ }
137
+ catch (error) {
138
+ throw new Error("Cannot determine the latest PI WEB npm version; no install or restart was run.", { cause: error });
139
+ }
140
+ const installed = JSON.parse(await deps.readFile(join(installation.path, "package.json")));
141
+ if (typeof installed !== "object" || installed === null || !("version" in installed) || typeof installed.version !== "string") {
142
+ throw new Error("Cannot determine the installed PI WEB version; nothing changed.");
143
+ }
144
+ if (installed.version === latestVersion && !args.includes("--force")) {
145
+ deps.log(`PI WEB is already up to date (${latestVersion}). Nothing changed. Use --force to reinstall.`);
146
+ return;
147
+ }
148
+ // Install the release we checked, even if the registry tag moves during confirmation.
149
+ update = command("npm", ["install", "--global", "--prefix", resolve(prefix), `${PACKAGE_NAME}@${latestVersion}`, "--allow-scripts=node-pty"]);
128
150
  }
129
151
  else {
130
152
  if (installation.scope !== "user" || installation.source === undefined || installation.source === "" || !/^(npm:|git:|https?:\/\/|ssh:\/\/)/.test(installation.source)) {
@@ -158,7 +180,7 @@ export async function runPiWebUpdate(args, injected) {
158
180
  restart = command("systemd-run", [...dispatchArgs, `--unit=${restartUnit}`, "--", restart.executable, ...restart.args]);
159
181
  }
160
182
  else if (nested && deps.platform === "darwin") {
161
- launchdHandoff = createLaunchdUpdateHandoff(deps, installation);
183
+ launchdHandoff = createLaunchdUpdateHandoff(deps, installation, args.includes("--force"));
162
184
  }
163
185
  }
164
186
  deps.log(`Update target: ${installation.kind}${installation.path === undefined ? "" : ` at ${JSON.stringify(installation.path)}`}`);
@@ -175,7 +197,7 @@ export async function runPiWebUpdate(args, injected) {
175
197
  deps.log("The Docker installer owns the update and service restart.");
176
198
  }
177
199
  deps.log(WARNING);
178
- if (args[0] !== "--yes") {
200
+ if (!args.includes("--yes")) {
179
201
  if (!deps.interactive)
180
202
  throw new Error("Noninteractive update requires explicit --yes consent. Nothing changed.");
181
203
  if (!await deps.confirm("Proceed with the update and restart?")) {
@@ -238,7 +260,7 @@ async function planLocalCheckoutUpdate(deps, path) {
238
260
  build: { executable: "npm", args: ["--prefix", path, "run", "build"], env: { ...deps.env } },
239
261
  };
240
262
  }
241
- function createLaunchdUpdateHandoff(deps, installation) {
263
+ function createLaunchdUpdateHandoff(deps, installation, force) {
242
264
  if (installation.path === undefined || !isAbsolute(installation.path)) {
243
265
  throw new Error("Cannot safely locate this PI WEB installation for a launchd handoff; nothing changed.");
244
266
  }
@@ -266,6 +288,7 @@ function createLaunchdUpdateHandoff(deps, installation) {
266
288
  environment,
267
289
  plist: renderLaunchdUpdatePlist({
268
290
  label,
291
+ force,
269
292
  nodeExecutable: deps.nodeExecutable,
270
293
  cliPath: join(installation.path, "dist", "cli.js"),
271
294
  workingDirectory: deps.cwd,
@@ -331,7 +354,7 @@ function launchdHandoffEnvironment(source) {
331
354
  return environment;
332
355
  }
333
356
  function renderLaunchdUpdatePlist(input) {
334
- const programArguments = [input.nodeExecutable, input.cliPath, "update", "--yes"];
357
+ const programArguments = [input.nodeExecutable, input.cliPath, "update", "--yes", ...(input.force ? ["--force"] : [])];
335
358
  const environmentEntries = Object.keys(input.environment)
336
359
  .sort()
337
360
  .map((key) => ` <key>${xmlEscape(key)}</key>\n <string>${xmlEscape(input.environment[key] ?? "")}</string>\n`)
@@ -1 +1 @@
1
- {"version":3,"file":"piWebUpdate.js","sourceRoot":"","sources":["../src/piWebUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"piWebUpdate.js","sourceRoot":"","sources":["../src/piWebUpdate.ts"],"names":[],"mappings":"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"}