@jmfederico/pi-web 1.202606.7 → 1.202607.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.
Files changed (135) hide show
  1. package/README.md +14 -5
  2. package/dist/cli.js +291 -320
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/assets/CodeViewer-uASb28Y1.js +4 -0
  5. package/dist/client/assets/TerminalPanel-DfTmykFw.js +187 -0
  6. package/dist/client/assets/UnifiedDiffViewer-laQN1x7P.js +39 -0
  7. package/dist/client/assets/index-Dhapi0oR.js +3093 -0
  8. package/dist/client/assets/vendor-editor-core-vUi74DnD.js +12 -0
  9. package/dist/client/assets/vendor-editor-languages-DoaXUodB.js +46 -0
  10. package/dist/client/assets/vendor-editor-legacy-CYBnW6ZU.js +1 -0
  11. package/dist/client/assets/vendor-terminal-BrP-ENHg.css +1 -0
  12. package/dist/client/assets/vendor-terminal-D8k4UKM2.js +35 -0
  13. package/dist/client/index.html +9 -6
  14. package/dist/client/manifest.webmanifest +4 -4
  15. package/dist/config.js +144 -2
  16. package/dist/config.js.map +1 -1
  17. package/dist/docker/piWebDockerCommandPlan.js +211 -0
  18. package/dist/docker/piWebDockerCommandPlan.js.map +1 -0
  19. package/dist/nativeServices/serviceDoctor.js +480 -0
  20. package/dist/nativeServices/serviceDoctor.js.map +1 -0
  21. package/dist/nativeServices/serviceInstall.js +35 -0
  22. package/dist/nativeServices/serviceInstall.js.map +1 -0
  23. package/dist/nativeServices/servicePlan.js +358 -0
  24. package/dist/nativeServices/servicePlan.js.map +1 -0
  25. package/dist/nativeServices/serviceProbe.js +447 -0
  26. package/dist/nativeServices/serviceProbe.js.map +1 -0
  27. package/dist/nativeServices/serviceRendering.js +122 -0
  28. package/dist/nativeServices/serviceRendering.js.map +1 -0
  29. package/dist/pi-web-plugins/updates/pi-web-plugin.js +27 -5
  30. package/dist/pi-web-plugins/updates/updatesLogic.js +37 -5
  31. package/dist/piWebVersionReport.js +4 -0
  32. package/dist/piWebVersionReport.js.map +1 -1
  33. package/dist/plugin-api.d.ts +3 -1
  34. package/dist/server/activeAgentProfileProvider.js +25 -0
  35. package/dist/server/activeAgentProfileProvider.js.map +1 -0
  36. package/dist/server/app.js +69 -13
  37. package/dist/server/app.js.map +1 -1
  38. package/dist/server/browserMessageProjection.js +56 -0
  39. package/dist/server/browserMessageProjection.js.map +1 -0
  40. package/dist/server/configRoutes.js +147 -6
  41. package/dist/server/configRoutes.js.map +1 -1
  42. package/dist/server/machines/machineClient.js +19 -9
  43. package/dist/server/machines/machineClient.js.map +1 -1
  44. package/dist/server/machines/machinePluginProxyRoutes.js +7 -4
  45. package/dist/server/machines/machinePluginProxyRoutes.js.map +1 -1
  46. package/dist/server/machines/machineProxyRoutes.js +76 -11
  47. package/dist/server/machines/machineProxyRoutes.js.map +1 -1
  48. package/dist/server/machines/machineRoutes.js +1 -1
  49. package/dist/server/machines/machineRoutes.js.map +1 -1
  50. package/dist/server/machines/machineService.js +6 -28
  51. package/dist/server/machines/machineService.js.map +1 -1
  52. package/dist/server/piPackageRoutes.js +91 -0
  53. package/dist/server/piPackageRoutes.js.map +1 -0
  54. package/dist/server/piPackageService.js +101 -0
  55. package/dist/server/piPackageService.js.map +1 -0
  56. package/dist/server/piWebPluginService.js +91 -20
  57. package/dist/server/piWebPluginService.js.map +1 -1
  58. package/dist/server/piWebReleaseLookupCache.js +37 -0
  59. package/dist/server/piWebReleaseLookupCache.js.map +1 -0
  60. package/dist/server/piWebStatus.js +90 -37
  61. package/dist/server/piWebStatus.js.map +1 -1
  62. package/dist/server/piWebStatusCache.js +19 -6
  63. package/dist/server/piWebStatusCache.js.map +1 -1
  64. package/dist/server/realtime/sessionEventHub.js +34 -7
  65. package/dist/server/realtime/sessionEventHub.js.map +1 -1
  66. package/dist/server/sessiond/sessionDaemonStartup.js +49 -0
  67. package/dist/server/sessiond/sessionDaemonStartup.js.map +1 -0
  68. package/dist/server/sessiond.js +88 -62
  69. package/dist/server/sessiond.js.map +1 -1
  70. package/dist/server/sessions/authProviderOptions.js +30 -32
  71. package/dist/server/sessions/authProviderOptions.js.map +1 -1
  72. package/dist/server/sessions/authRoutes.js +14 -4
  73. package/dist/server/sessions/authRoutes.js.map +1 -1
  74. package/dist/server/sessions/authService.js +89 -29
  75. package/dist/server/sessions/authService.js.map +1 -1
  76. package/dist/server/sessions/builtinCommands.js +1 -1
  77. package/dist/server/sessions/builtinCommands.js.map +1 -1
  78. package/dist/server/sessions/oauthLoginFlowService.js +176 -53
  79. package/dist/server/sessions/oauthLoginFlowService.js.map +1 -1
  80. package/dist/server/sessions/piSessionManagerGateway.js +22 -21
  81. package/dist/server/sessions/piSessionManagerGateway.js.map +1 -1
  82. package/dist/server/sessions/piSessionService.js +715 -127
  83. package/dist/server/sessions/piSessionService.js.map +1 -1
  84. package/dist/server/sessions/sessionArchiveMigration.js +590 -0
  85. package/dist/server/sessions/sessionArchiveMigration.js.map +1 -0
  86. package/dist/server/sessions/sessionArchiveStore.js +58 -26
  87. package/dist/server/sessions/sessionArchiveStore.js.map +1 -1
  88. package/dist/server/sessions/sessionCommandService.js +16 -0
  89. package/dist/server/sessions/sessionCommandService.js.map +1 -1
  90. package/dist/server/sessions/sessionNameGenerator.js +27 -44
  91. package/dist/server/sessions/sessionNameGenerator.js.map +1 -1
  92. package/dist/server/sessions/sessionRoutes.js +65 -3
  93. package/dist/server/sessions/sessionRoutes.js.map +1 -1
  94. package/dist/server/sessions/sessionService.js +2 -0
  95. package/dist/server/sessions/sessionService.js.map +1 -0
  96. package/dist/server/sessions/spawnSessionTool.js +9 -4
  97. package/dist/server/sessions/spawnSessionTool.js.map +1 -1
  98. package/dist/server/sessions/spawnSubsessionTool.js +79 -32
  99. package/dist/server/sessions/spawnSubsessionTool.js.map +1 -1
  100. package/dist/server/terminals/terminalService.js +10 -4
  101. package/dist/server/terminals/terminalService.js.map +1 -1
  102. package/dist/server/workspaces/fileSuggestions.js +7 -3
  103. package/dist/server/workspaces/fileSuggestions.js.map +1 -1
  104. package/dist/sessiond/activeAgentProfile.js +31 -0
  105. package/dist/sessiond/activeAgentProfile.js.map +1 -0
  106. package/dist/sessiond/sessionDaemonClient.js +38 -0
  107. package/dist/sessiond/sessionDaemonClient.js.map +1 -1
  108. package/dist/shared/activeAgentProfile.js +76 -0
  109. package/dist/shared/activeAgentProfile.js.map +1 -0
  110. package/dist/shared/activity.js +0 -15
  111. package/dist/shared/activity.js.map +1 -1
  112. package/dist/shared/apiTypes.d.ts +160 -3
  113. package/dist/shared/apiTypes.js +6 -0
  114. package/dist/shared/apiTypes.js.map +1 -1
  115. package/dist/shared/capabilities.js +33 -2
  116. package/dist/shared/capabilities.js.map +1 -1
  117. package/dist/shared/federatedRoutes.js +14 -0
  118. package/dist/shared/federatedRoutes.js.map +1 -1
  119. package/dist/shared/piWebStatusParsing.js +26 -8
  120. package/dist/shared/piWebStatusParsing.js.map +1 -1
  121. package/dist/shared/thinkingLevels.d.ts +1 -1
  122. package/dist/shared/thinkingLevels.js +1 -1
  123. package/dist/shared/thinkingLevels.js.map +1 -1
  124. package/docs/config.md +75 -19
  125. package/docs/plugins.md +46 -18
  126. package/package.json +36 -32
  127. package/dist/client/assets/CodeViewer-CQU9mJ74.js +0 -4
  128. package/dist/client/assets/TerminalPanel-DtfVBsqI.js +0 -126
  129. package/dist/client/assets/UnifiedDiffViewer-BZQQK99S.js +0 -34
  130. package/dist/client/assets/index-CbE7df66.js +0 -2742
  131. package/dist/client/assets/vendor-editor-core-C7aWiQy0.js +0 -12
  132. package/dist/client/assets/vendor-editor-languages-EW34FfVy.js +0 -26
  133. package/dist/client/assets/vendor-editor-legacy-B4QLsWF8.js +0 -1
  134. package/dist/client/assets/vendor-terminal-DDGTF8rc.css +0 -1
  135. package/dist/client/assets/vendor-terminal-DjQ08hXu.js +0 -16
@@ -5,14 +5,16 @@ import { promisify } from "node:util";
5
5
  import { homedir } from "node:os";
6
6
  import { dirname, join, relative, resolve, sep } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
- import { DefaultPackageManager, getAgentDir, SettingsManager } from "@earendil-works/pi-coding-agent";
8
+ import { DefaultPackageManager, SettingsManager } from "@earendil-works/pi-coding-agent";
9
9
  import { effectivePiWebCapabilities, WEB_RUNTIME_CAPABILITIES } from "../shared/capabilities.js";
10
+ import { piWebDockerCommand } from "../docker/piWebDockerCommandPlan.js";
10
11
  import { parsePiWebComponentStatus, parsePiWebRuntimeComponent } from "../shared/piWebStatusParsing.js";
11
12
  import { SessionDaemonClient } from "../sessiond/sessionDaemonClient.js";
13
+ import { isHostAbsoluteAgentDir, isPiCompanionCommand, isSafeAgentCommandForHost, PI_CODING_AGENT_DIR_ENV } from "../config.js";
14
+ import { createPiWebReleaseLookupCache } from "./piWebReleaseLookupCache.js";
12
15
  const PI_WEB_PACKAGE_NAME = "@jmfederico/pi-web";
13
16
  const PI_WEB_NPM_SOURCE = `npm:${PI_WEB_PACKAGE_NAME}`;
14
17
  const DEFAULT_VERSION = "0.0.0-dev";
15
- const LATEST_RELEASE_CACHE_MS = 6 * 60 * 60 * 1000;
16
18
  const VERSION_CHECK_TIMEOUT_MS = 5000;
17
19
  const execFileAsync = promisify(execFile);
18
20
  const serviceRefs = {
@@ -40,7 +42,7 @@ const startServiceOrder = ["sessiond", "web", "uiDev"];
40
42
  // terminal (owned by sessiond), restarting sessiond kills the command, so any
41
43
  // services listed after it would never be restarted.
42
44
  const restartServiceOrder = ["web", "uiDev", "sessiond"];
43
- let latestReleaseCache;
45
+ const latestReleaseLookupCache = createPiWebReleaseLookupCache(fetchLatestNpmVersion);
44
46
  const runtimePackageInfo = readPackageInfoSync();
45
47
  export function getPiWebRuntimeComponent(component, capabilities = []) {
46
48
  return {
@@ -61,10 +63,10 @@ export async function getPiWebRuntime(daemon = new SessionDaemonClient()) {
61
63
  capabilities: effectivePiWebCapabilities({ web, sessiond }),
62
64
  };
63
65
  }
64
- export async function getPiWebComponentStatus(component) {
66
+ export async function getPiWebComponentStatus(component, options = {}) {
65
67
  const [installed, installation] = await Promise.all([
66
68
  readInstalledPackageInfo(),
67
- detectPiWebInstallation(),
69
+ detectPiWebInstallation(options.activeAgentProfile?.dir),
68
70
  ]);
69
71
  const runtimeVersion = runtimePackageInfo?.version ?? DEFAULT_VERSION;
70
72
  const installedVersion = installed?.version;
@@ -78,10 +80,10 @@ export async function getPiWebComponentStatus(component) {
78
80
  installation,
79
81
  };
80
82
  }
81
- export async function getPiWebVersionStatus(daemon = new SessionDaemonClient()) {
83
+ export async function getPiWebVersionStatus(daemon = new SessionDaemonClient(), options = {}) {
82
84
  const [web, sessiond] = await Promise.all([
83
- getPiWebComponentStatus("web"),
84
- getSessiondComponentStatus(daemon),
85
+ getPiWebComponentStatus("web", options),
86
+ getSessiondComponentStatus(daemon, options),
85
87
  ]);
86
88
  return {
87
89
  packageName: PI_WEB_PACKAGE_NAME,
@@ -89,12 +91,12 @@ export async function getPiWebVersionStatus(daemon = new SessionDaemonClient())
89
91
  components: { web, sessiond },
90
92
  };
91
93
  }
92
- export async function getPiWebStatus(daemon = new SessionDaemonClient()) {
93
- const versionStatus = await getPiWebVersionStatus(daemon);
94
+ export async function getPiWebStatus(daemon = new SessionDaemonClient(), options = {}) {
95
+ const versionStatus = await getPiWebVersionStatus(daemon, options);
94
96
  const { web, sessiond } = versionStatus.components;
95
- const release = await getLatestReleaseStatus(web.installedVersion ?? web.runtimeVersion ?? DEFAULT_VERSION);
97
+ const release = await getLatestReleaseStatus(web.installedVersion ?? web.runtimeVersion ?? DEFAULT_VERSION, options.forceReleaseCheck === true);
96
98
  const components = { web, sessiond };
97
- const commands = await commandsFor(components);
99
+ const commands = await commandsFor(components, { activeAgentProfile: options.activeAgentProfile, hasCommand: options.hasCommand ?? hasCommand });
98
100
  const messages = buildMessages(components, release, commands);
99
101
  return {
100
102
  ...versionStatus,
@@ -153,20 +155,64 @@ function parsePackageInfo(value, path) {
153
155
  return undefined;
154
156
  return { name, version, path };
155
157
  }
156
- async function detectPiWebInstallation() {
158
+ async function detectPiWebInstallation(agentDir) {
159
+ const docker = detectDockerInstallation();
160
+ if (docker !== undefined)
161
+ return docker;
157
162
  const root = packageRootPath();
158
163
  const realRoot = await realPathOrSelf(root);
159
- const piPackage = await detectPiPackageInstallation(realRoot, root);
160
- if (piPackage !== undefined)
161
- return piPackage;
164
+ if (agentDir !== undefined) {
165
+ const piPackage = await detectPiPackageInstallation(realRoot, root, agentDir);
166
+ if (piPackage !== undefined)
167
+ return piPackage;
168
+ }
162
169
  const npmGlobal = await detectNpmGlobalInstallation(realRoot, root);
163
170
  if (npmGlobal !== undefined)
164
171
  return npmGlobal;
165
172
  return { kind: "local", path: root };
166
173
  }
167
- async function detectPiPackageInstallation(realRoot, displayPath) {
174
+ function detectDockerInstallation() {
175
+ if (!isTruthyEnv("PI_WEB_DOCKER_RUNTIME"))
176
+ return undefined;
177
+ const dockerMode = dockerModeFromEnv(process.env["PI_WEB_DOCKER_MODE"]) ?? inferredDockerModeFromRoots();
178
+ const path = dockerRootPathFromEnv(dockerMode);
179
+ return {
180
+ kind: "docker",
181
+ ...(path === undefined ? {} : { path }),
182
+ ...(dockerMode === undefined ? {} : { dockerMode }),
183
+ };
184
+ }
185
+ function dockerModeFromEnv(value) {
186
+ return value === "runtime" || value === "dev" ? value : undefined;
187
+ }
188
+ function inferredDockerModeFromRoots() {
189
+ if (firstNonEmptyEnv("PI_WEB_DOCKER_DEV_REPO_ROOT") !== undefined)
190
+ return "dev";
191
+ if (firstNonEmptyEnv("PI_WEB_DOCKER_INSTALL_DIR") !== undefined)
192
+ return "runtime";
193
+ return undefined;
194
+ }
195
+ function dockerRootPathFromEnv(mode) {
196
+ if (mode === "dev")
197
+ return firstNonEmptyEnv("PI_WEB_DOCKER_DEV_REPO_ROOT", "PI_WEB_DOCKER_INSTALL_DIR");
198
+ if (mode === "runtime")
199
+ return firstNonEmptyEnv("PI_WEB_DOCKER_INSTALL_DIR", "PI_WEB_DOCKER_DEV_REPO_ROOT");
200
+ return firstNonEmptyEnv("PI_WEB_DOCKER_INSTALL_DIR", "PI_WEB_DOCKER_DEV_REPO_ROOT");
201
+ }
202
+ function firstNonEmptyEnv(...keys) {
203
+ for (const key of keys) {
204
+ const value = process.env[key];
205
+ if (value !== undefined && value !== "")
206
+ return value;
207
+ }
208
+ return undefined;
209
+ }
210
+ function isTruthyEnv(key) {
211
+ const value = process.env[key];
212
+ return value !== undefined && value !== "" && value !== "0" && value.toLowerCase() !== "false";
213
+ }
214
+ async function detectPiPackageInstallation(realRoot, displayPath, agentDir) {
168
215
  try {
169
- const agentDir = getAgentDir();
170
216
  const packageManager = new DefaultPackageManager({
171
217
  cwd: process.cwd(),
172
218
  agentDir,
@@ -235,7 +281,7 @@ async function getSessiondRuntimeComponent(daemon) {
235
281
  return unavailableSessiondRuntime(error instanceof Error ? error.message : String(error));
236
282
  }
237
283
  }
238
- async function getSessiondComponentStatus(daemon) {
284
+ async function getSessiondComponentStatus(daemon, options = {}) {
239
285
  try {
240
286
  const upstream = await daemon.request("GET", "/runtime");
241
287
  if (upstream.statusCode < 200 || upstream.statusCode >= 300) {
@@ -248,7 +294,7 @@ async function getSessiondComponentStatus(daemon) {
248
294
  const runtime = parsePiWebRuntimeComponent(parsed);
249
295
  if (runtime?.available !== true)
250
296
  return await legacySessiondComponentStatus(daemon) ?? unavailableSessiond(runtime?.error ?? "runtime response did not include valid runtime information");
251
- const status = await getPiWebComponentStatus("sessiond");
297
+ const status = await getPiWebComponentStatus("sessiond", options);
252
298
  return { ...status, ...(runtime.runtimeVersion === undefined ? {} : { runtimeVersion: runtime.runtimeVersion }), available: true };
253
299
  }
254
300
  catch (error) {
@@ -299,21 +345,12 @@ function unavailableSessiond(error) {
299
345
  error,
300
346
  };
301
347
  }
302
- async function getLatestReleaseStatus(currentVersion) {
348
+ async function getLatestReleaseStatus(currentVersion, force) {
303
349
  const checkedAtMs = Date.now();
304
350
  if (skipVersionCheck()) {
305
351
  return { packageName: PI_WEB_PACKAGE_NAME, updateAvailable: false, checkedAt: new Date(checkedAtMs).toISOString(), skipped: true };
306
352
  }
307
- if (latestReleaseCache !== undefined && checkedAtMs - latestReleaseCache.checkedAtMs < LATEST_RELEASE_CACHE_MS) {
308
- return releaseStatusFromCache(latestReleaseCache, currentVersion);
309
- }
310
- try {
311
- latestReleaseCache = { checkedAtMs, latestVersion: await fetchLatestNpmVersion(currentVersion) };
312
- }
313
- catch (error) {
314
- latestReleaseCache = { checkedAtMs, error: error instanceof Error ? error.message : String(error) };
315
- }
316
- return releaseStatusFromCache(latestReleaseCache, currentVersion);
353
+ return releaseStatusFromCache(await latestReleaseLookupCache.get(currentVersion, { force }), currentVersion);
317
354
  }
318
355
  function releaseStatusFromCache(cache, currentVersion) {
319
356
  return {
@@ -340,8 +377,10 @@ async function fetchLatestNpmVersion(currentVersion) {
340
377
  throw new Error("npm registry response did not include a version");
341
378
  return version;
342
379
  }
343
- async function commandsFor(components) {
380
+ async function commandsFor(components, options) {
344
381
  const installation = preferredInstallation(components);
382
+ if (installation?.kind === "docker")
383
+ return dockerCommands(installation);
345
384
  const [serviceCommands, cliCommands] = await Promise.all([
346
385
  nativeServiceCommands(),
347
386
  piWebCliCommands(installation),
@@ -350,7 +389,7 @@ async function commandsFor(components) {
350
389
  const restartWeb = serviceCommands.restartWeb ?? cliCommands.restart;
351
390
  const restartSessiond = serviceCommands.restartSessiond ?? cliCommands.restart;
352
391
  const status = serviceCommands.status ?? cliCommands.status;
353
- const update = await updateCommandFor(installation, restart);
392
+ const update = await updateCommandFor(installation, restart, options);
354
393
  return {
355
394
  ...(update === undefined ? {} : { update }),
356
395
  ...(restart === undefined ? {} : { restart }),
@@ -362,10 +401,21 @@ async function commandsFor(components) {
362
401
  function preferredInstallation(components) {
363
402
  const web = components.web.installation;
364
403
  const sessiond = components.sessiond.installation;
404
+ if (web?.kind === "docker" || sessiond?.kind === "docker")
405
+ return web?.kind === "docker" ? web : sessiond;
365
406
  if (web?.kind === "local" || sessiond?.kind === "local")
366
407
  return web?.kind === "local" ? web : sessiond;
367
408
  return web ?? sessiond;
368
409
  }
410
+ function dockerCommands(installation) {
411
+ return {
412
+ update: piWebDockerCommand(installation.dockerMode, "update"),
413
+ restart: piWebDockerCommand(installation.dockerMode, "restart"),
414
+ restartWeb: piWebDockerCommand(installation.dockerMode, "restart-web"),
415
+ restartSessiond: piWebDockerCommand(installation.dockerMode, "restart-sessiond"),
416
+ status: piWebDockerCommand(installation.dockerMode, "status"),
417
+ };
418
+ }
369
419
  async function piWebCliCommands(installation) {
370
420
  if (installation?.kind !== "npm-global" || !(await hasCommand("pi-web")))
371
421
  return {};
@@ -376,13 +426,16 @@ function restartCommandFor(installation, serviceCommands, cliCommands) {
376
426
  return serviceCommands.restart ?? cliCommands.restart;
377
427
  return cliCommands.restart ?? serviceCommands.restart;
378
428
  }
379
- async function updateCommandFor(installation, restartCommand) {
429
+ export async function updateCommandFor(installation, restartCommand, options) {
380
430
  if (restartCommand === undefined)
381
431
  return undefined;
382
432
  if (installation?.kind === "pi-package") {
383
- if (!(await hasCommand("pi")))
433
+ const profile = options.activeAgentProfile;
434
+ if (profile === undefined || !isSafeAgentCommandForHost(profile.command) || !isHostAbsoluteAgentDir(profile.dir) || !isPiCompanionCommand(profile.command))
435
+ return undefined;
436
+ if (!(await options.hasCommand(profile.command)))
384
437
  return undefined;
385
- return `pi update ${installation.source ?? PI_WEB_NPM_SOURCE} && ${restartCommand}`;
438
+ return `${PI_CODING_AGENT_DIR_ENV}=${shellQuote(profile.dir)} ${shellQuote(profile.command)} update ${shellQuote(installation.source ?? PI_WEB_NPM_SOURCE)} && ${restartCommand}`;
386
439
  }
387
440
  if (installation?.kind === "local" && installation.path !== undefined) {
388
441
  if (!(await hasCommand("npm")) || !(await isGitCheckoutWithUpstream(installation.path)))
@@ -458,7 +511,7 @@ async function isGitCheckoutWithUpstream(path) {
458
511
  && await commandSucceeds("git", ["-C", path, "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]);
459
512
  }
460
513
  function hasCommand(command) {
461
- return commandSucceeds("/usr/bin/env", ["sh", "-c", `command -v ${command}`]);
514
+ return commandSucceeds("/usr/bin/env", ["sh", "-c", `command -v ${shellQuote(command)}`]);
462
515
  }
463
516
  async function commandSucceeds(command, args) {
464
517
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"piWebStatus.js","sourceRoot":"","sources":["../../src/server/piWebStatus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"piWebStatus.js","sourceRoot":"","sources":["../../src/server/piWebStatus.ts"],"names":[],"mappings":"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"}
@@ -4,17 +4,25 @@ export function createPiWebStatusCache(load, options = {}) {
4
4
  const now = options.now ?? Date.now;
5
5
  let cached;
6
6
  let pending;
7
- const refresh = () => {
8
- pending ??= Promise.resolve()
9
- .then(load)
7
+ let loadSequence = 0;
8
+ const refresh = (refreshOptions = {}) => {
9
+ const force = refreshOptions.force === true;
10
+ if (pending !== undefined && (!force || pending.force))
11
+ return pending.promise;
12
+ const sequence = ++loadSequence;
13
+ const promise = Promise.resolve()
14
+ .then(() => load({ force }))
10
15
  .then((status) => {
11
- cached = { status, expiresAt: now() + ttlMs };
16
+ if (sequence === loadSequence)
17
+ cached = { status, expiresAt: now() + ttlMs };
12
18
  return status;
13
19
  })
14
20
  .finally(() => {
15
- pending = undefined;
21
+ if (pending?.sequence === sequence)
22
+ pending = undefined;
16
23
  });
17
- return pending;
24
+ pending = { promise, force, sequence };
25
+ return promise;
18
26
  };
19
27
  return {
20
28
  async get() {
@@ -27,6 +35,11 @@ export function createPiWebStatusCache(load, options = {}) {
27
35
  return refresh();
28
36
  },
29
37
  refresh,
38
+ invalidate() {
39
+ cached = undefined;
40
+ loadSequence += 1;
41
+ pending = undefined;
42
+ },
30
43
  };
31
44
  }
32
45
  //# sourceMappingURL=piWebStatusCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"piWebStatusCache.js","sourceRoot":"","sources":["../../src/server/piWebStatusCache.ts"],"names":[],"mappings":"AAEA,MAAM,kCAAkC,GAAG,MAAM,CAAC;AAalD,MAAM,UAAU,sBAAsB,CAAC,IAAwC,EAAE,UAAmC,EAAE;IACpH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kCAAkC,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,IAAI,MAAsE,CAAC;IAC3E,IAAI,OAAiD,CAAC;IAEtD,MAAM,OAAO,GAAG,GAAiC,EAAE;QACjD,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;aAC1B,IAAI,CAAC,IAAI,CAAC;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC,CAAC,CAAC;QACL,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,GAAG;YACP,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;oBAAE,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnD,KAAK,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC,MAAM,CAAC;YACvB,CAAC;YACD,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"piWebStatusCache.js","sourceRoot":"","sources":["../../src/server/piWebStatusCache.ts"],"names":[],"mappings":"AAEA,MAAM,kCAAkC,GAAG,MAAM,CAAC;AAsBlD,MAAM,UAAU,sBAAsB,CAAC,IAA4E,EAAE,UAAmC,EAAE;IACxJ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kCAAkC,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,IAAI,MAAsE,CAAC;IAC3E,IAAI,OAAgG,CAAC;IACrG,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,MAAM,OAAO,GAAG,CAAC,iBAAiD,EAAE,EAAgC,EAAE;QACpG,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC;QAE/E,MAAM,QAAQ,GAAG,EAAE,YAAY,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;aAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aAC3B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,IAAI,QAAQ,KAAK,YAAY;gBAAE,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;YAC7E,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,OAAO,EAAE,QAAQ,KAAK,QAAQ;gBAAE,OAAO,GAAG,SAAS,CAAC;QAC1D,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,GAAG;YACP,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;oBAAE,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnD,KAAK,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC,MAAM,CAAC;YACvB,CAAC;YACD,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;QACD,OAAO;QACP,UAAU;YACR,MAAM,GAAG,SAAS,CAAC;YACnB,YAAY,IAAI,CAAC,CAAC;YAClB,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,7 +1,9 @@
1
+ import { projectBrowserSessionEvent } from "../browserMessageProjection.js";
1
2
  export class SessionEventHub {
2
3
  constructor() {
3
4
  this.socketsBySession = new Map();
4
5
  this.globalSockets = new Set();
6
+ this.seqBySession = new Map();
5
7
  }
6
8
  add(sessionId, socket) {
7
9
  let sockets = this.socketsBySession.get(sessionId);
@@ -19,20 +21,45 @@ export class SessionEventHub {
19
21
  socket.on("close", () => this.globalSockets.delete(socket));
20
22
  }
21
23
  publish(sessionId, event) {
22
- const payload = JSON.stringify(event);
23
- for (const socket of this.socketsBySession.get(sessionId) ?? []) {
24
- if (socket.readyState === socket.OPEN)
25
- socket.send(payload);
26
- }
24
+ const seq = (this.seqBySession.get(sessionId) ?? 0) + 1;
25
+ this.seqBySession.set(sessionId, seq);
26
+ const payload = JSON.stringify({ ...projectBrowserSessionEvent(event), seq });
27
+ this.sendToSockets(this.socketsBySession.get(sessionId), payload);
28
+ }
29
+ /**
30
+ * Last per-session sequence number stamped by {@link publish} (0 before any
31
+ * event). Callers building a join-time stream snapshot read this as the
32
+ * watermark: buffered live events with `seq <= currentSeq` are already
33
+ * reflected in the snapshot's partial and must be dropped by the client.
34
+ */
35
+ currentSeq(sessionId) {
36
+ return this.seqBySession.get(sessionId) ?? 0;
27
37
  }
28
38
  publishGlobal(event) {
29
39
  this.publishRealtime(event);
30
40
  }
31
41
  publishRealtime(event) {
32
42
  const payload = JSON.stringify(event);
33
- for (const socket of this.globalSockets) {
34
- if (socket.readyState === socket.OPEN)
43
+ this.sendToSockets(this.globalSockets, payload);
44
+ }
45
+ sendToSockets(sockets, payload) {
46
+ if (sockets === undefined)
47
+ return;
48
+ for (const socket of sockets) {
49
+ if (socket.readyState !== socket.OPEN)
50
+ continue;
51
+ try {
35
52
  socket.send(payload);
53
+ }
54
+ catch {
55
+ sockets.delete(socket);
56
+ try {
57
+ socket.terminate();
58
+ }
59
+ catch {
60
+ // Removal is authoritative; cleanup failure must not block healthy sockets.
61
+ }
62
+ }
36
63
  }
37
64
  }
38
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sessionEventHub.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventHub.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,eAAe;IAA5B;QACmB,qBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC1D,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAoC7D,CAAC;IAlCC,GAAG,CAAC,SAAiB,EAAE,MAAsB;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAsB;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,KAAqB;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,aAAa,CAAC,KAAyB;QACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,KAAoB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"sessionEventHub.js","sourceRoot":"","sources":["../../../src/server/realtime/sessionEventHub.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAU5E,MAAM,OAAO,eAAe;IAA5B;QACmB,qBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC1D,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC1C,iBAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IA6D5D,CAAC;IA3DC,GAAG,CAAC,SAAiB,EAAE,MAAsB;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,MAAsB;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,KAAqB;QAC9C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,KAAyB;QACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,KAAoB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAEO,aAAa,CAAC,OAAwC,EAAE,OAAe;QAC7E,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI;gBAAE,SAAS;YAChD,IAAI,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,CAAC;gBAAC,MAAM,CAAC;oBACP,4EAA4E;gBAC9E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ import { migrateLegacySessionArchive, } from "../sessions/sessionArchiveMigration.js";
2
+ /**
3
+ * Keeps archive migration ahead of every archive-state consumer in sessiond.
4
+ * A failed eligible migration stops startup so runtime writes cannot make a
5
+ * clean retry ambiguous; mutation-free eligibility skips still start normally.
6
+ */
7
+ export async function runSessionDaemonStartup(steps) {
8
+ const result = await (steps.migrateArchive ?? migrateLegacySessionArchive)();
9
+ reportMigrationResult(result, steps.logger);
10
+ if (result.status === "failed") {
11
+ throw new Error(`Legacy session archive migration failed during ${result.phase}; session daemon startup stopped`, { cause: result.error });
12
+ }
13
+ const runtime = await steps.createRuntime();
14
+ steps.registerRoutes(runtime);
15
+ await steps.listen(runtime);
16
+ return runtime;
17
+ }
18
+ function reportMigrationResult(result, logger) {
19
+ if (result.status === "skipped") {
20
+ if (result.reason === "inspection-failed") {
21
+ logger.warn({ err: result.error, reason: result.reason }, "could not inspect legacy session archive migration eligibility; continuing session daemon startup without migration");
22
+ }
23
+ else {
24
+ logger.debug({ reason: result.reason }, "legacy session archive migration is not eligible; continuing session daemon startup");
25
+ }
26
+ return;
27
+ }
28
+ if (result.status === "failed") {
29
+ logger.error({
30
+ err: result.error,
31
+ phase: result.phase,
32
+ rollbackErrorCount: result.rollbackErrors.length,
33
+ rollbackErrors: result.rollbackErrors,
34
+ }, result.rollbackErrors.length === 0
35
+ ? "legacy session archive migration failed before commit; stopping session daemon startup"
36
+ : "legacy session archive migration failed before commit and rollback was incomplete; stopping session daemon startup");
37
+ return;
38
+ }
39
+ if (result.cleanup === "incomplete") {
40
+ logger.warn({
41
+ archiveFileCount: result.archiveFileCount,
42
+ cleanupErrorCount: result.cleanupErrors.length,
43
+ cleanupErrors: result.cleanupErrors,
44
+ }, "legacy session archive migration committed but cleanup was incomplete; continuing with the migrated destination archive");
45
+ return;
46
+ }
47
+ logger.info({ archiveFileCount: result.archiveFileCount }, "migrated legacy session archive to the configured PI_WEB_DATA_DIR");
48
+ }
49
+ //# sourceMappingURL=sessionDaemonStartup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionDaemonStartup.js","sourceRoot":"","sources":["../../../src/server/sessiond/sessionDaemonStartup.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,GAE5B,MAAM,wCAAwC,CAAC;AAiBhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAyC;IAEzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,2BAA2B,CAAC,EAAE,CAAC;IAC7E,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,kDAAkD,MAAM,CAAC,KAAK,kCAAkC,EAChG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;IAC5C,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAA2C,EAC3C,MAAkC;IAElC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAC5C,qHAAqH,CACtH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CACV,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACzB,qFAAqF,CACtF,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CACV;YACE,GAAG,EAAE,MAAM,CAAC,KAAK;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM;YAChD,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,EACD,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;YAChC,CAAC,CAAC,wFAAwF;YAC1F,CAAC,CAAC,oHAAoH,CACzH,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT;YACE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,iBAAiB,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM;YAC9C,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,EACD,yHAAyH,CAC1H,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CACT,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAC7C,mEAAmE,CACpE,CAAC;AACJ,CAAC"}