@pi-chamber/web 0.3.0 → 0.3.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 (50) hide show
  1. package/dist/assets/{CommitSection-BpbMC0et.js → CommitSection-C336377Z.js} +1 -1
  2. package/dist/assets/{DiagramEditor-dFTMKHuO.js → DiagramEditor-gHLCXHtr.js} +1 -1
  3. package/dist/assets/{DiagramView-DVw_8Px1.js → DiagramView-DlHzRRBc.js} +1 -1
  4. package/dist/assets/{DiffView-CkoY1oAM.js → DiffView-5wHwK-lg.js} +1 -1
  5. package/dist/assets/{FilesView-C0hyg2pa.js → FilesView-5bswI3JZ.js} +1 -1
  6. package/dist/assets/{GitView-D36hpDsb.js → GitView-BfykGpGh.js} +3 -3
  7. package/dist/assets/{JsonTreeView-BF8S-bPN.js → JsonTreeView-HVwQS7qG.js} +1 -1
  8. package/dist/assets/{MarkdownRendererImpl-BVNChdig.js → MarkdownRendererImpl-kjd4e0N8.js} +1 -1
  9. package/dist/assets/{PatchDiff-B--OaNB1.js → PatchDiff-Dlm4RU8n.js} +1 -1
  10. package/dist/assets/{PierreDiffViewer-0Qkp9ICt.js → PierreDiffViewer-St32rXlD.js} +1 -1
  11. package/dist/assets/{SessionSwitcherDropdown-cFWgy1td.js → SessionSwitcherDropdown-D5bWfZNA.js} +92 -92
  12. package/dist/assets/{SettingsView-D3ZZyjU3.js → SettingsView-FGe5TEQq.js} +3 -3
  13. package/dist/assets/{SettingsWindow-BuJCvYoR.js → SettingsWindow-Ck_uhTnx.js} +1 -1
  14. package/dist/assets/{ToolOutputDialog-Bi9BoEe7.js → ToolOutputDialog-BCONUv3r.js} +5 -5
  15. package/dist/assets/{ToolPartDiffPreview-DGX7N4zr.js → ToolPartDiffPreview-BdVuk2kc.js} +1 -1
  16. package/dist/assets/{VirtualizedFileDiff-CxraYoDZ.js → VirtualizedFileDiff-BsAZM0jo.js} +1 -1
  17. package/dist/assets/{collapsible-d4-HChej.js → collapsible-Wnmq-13H.js} +1 -1
  18. package/dist/assets/{computeVirtualFileMetrics-BuD14qFL.js → computeVirtualFileMetrics-skbyL2Az.js} +2 -2
  19. package/dist/assets/{contextFileOpenGuard-DirV-hCs.js → contextFileOpenGuard-BsxQITMZ.js} +1 -1
  20. package/dist/assets/{index-DEYblXCW.js → index-8TL2HlaR.js} +4 -4
  21. package/dist/assets/{index-BWmmf5yJ.js → index-Bfp6eYap.js} +1 -1
  22. package/dist/assets/{index-DLKBsLKY.css → index-riABQmQ_.css} +1 -1
  23. package/dist/assets/{isDiffPlainText-LoMmNzmX.js → isDiffPlainText-dZkfk3yG.js} +1 -1
  24. package/dist/assets/{isFilePlainText-3Hj9i02t.js → isFilePlainText-UL_tMQZx.js} +1 -1
  25. package/dist/assets/{main-BsszlAdQ.js → main-CHQfoyRP.js} +2 -2
  26. package/dist/assets/{main-CUvZIN16.js → main-DbnYXZeK.js} +4 -4
  27. package/dist/assets/{markdownCore-sGxk8jrc.js → markdownCore-qX3mJFkL.js} +2 -2
  28. package/dist/assets/{miniChat-C6SDQL4G.js → miniChat-3QtCNwHl.js} +2 -2
  29. package/dist/assets/{mobile-DBW3XDmZ.js → mobile-B_CyfRAX.js} +2 -2
  30. package/dist/assets/{renderElectronMiniChatApp-B1_fTdN-.js → renderElectronMiniChatApp-OToslrv-.js} +1 -1
  31. package/dist/assets/{renderMobileApp-CFxZc_1a.js → renderMobileApp-BD_wep_I.js} +4 -4
  32. package/dist/assets/{runtimeSurface-9aJdtQbh.js → runtimeSurface-CkdOpqo7.js} +1 -1
  33. package/dist/assets/{useInlineCommentController-Cl--s6vE.js → useInlineCommentController-DVif5Fr8.js} +2 -2
  34. package/dist/assets/{usePanelSlide-D5ffPTGM.js → usePanelSlide-C_PJmPXW.js} +2 -2
  35. package/dist/assets/{useWindowTitle-C-AZD713.js → useWindowTitle-BZVlLMCy.js} +1 -1
  36. package/dist/assets/{vendor-codemirror-language-data-HC9JT4I3.js → vendor-codemirror-language-data-C-924Z4o.js} +2 -2
  37. package/dist/assets/{vendor-sonner-dWA7qvjr.js → vendor-sonner-CW8w438f.js} +1 -1
  38. package/dist/assets/{web-components-skJ_VpnT.js → web-components-BG-6PEN4.js} +4 -4
  39. package/dist/index.html +4 -4
  40. package/dist/mini-chat.html +3 -3
  41. package/dist/mobile.html +3 -3
  42. package/package.json +1 -1
  43. package/server/lib/pi/routes.js +20 -2
  44. package/server/lib/pi/routes.test.js +14 -6
  45. package/server/lib/pi/session-daemon/DOCUMENTATION.md +4 -3
  46. package/server/lib/pi/session-daemon/message-entry-aliases.js +100 -0
  47. package/server/lib/pi/session-daemon/session-daemon.js +66 -38
  48. package/server/lib/pi/session-daemon/session-daemon.test.js +289 -6
  49. package/server/lib/pi/session-daemon/supervisor.js +20 -1
  50. package/server/lib/pi/session-daemon/supervisor.test.js +43 -0
@@ -194,6 +194,49 @@ describe('Pi session daemon supervisor', () => {
194
194
  expect(windowsSupervisor.paths.endpoint).toMatch(/^\\\\\.\\pipe\\pichamber-pi-session-daemon-[0-9a-f]{16}$/);
195
195
  });
196
196
 
197
+ it('bounds an unresponsive Windows daemon probe by the supervisor operation timeout', async () => {
198
+ const root = await mkdtemp(join(tmpdir(), 'pichamber-pi-supervisor-hung-win-'));
199
+ const dataDir = join(root, 'data');
200
+ const piDataDir = join(dataDir, 'pi');
201
+ await mkdir(piDataDir, { recursive: true });
202
+ const daemonPid = 7_331;
203
+ const processLike = {
204
+ pid: 4_242,
205
+ execPath: process.execPath,
206
+ versions: { electron: '41.2.1' },
207
+ kill(pid, signal) {
208
+ if (pid === daemonPid && signal === 0) return;
209
+ const error = new Error('ESRCH');
210
+ error.code = 'ESRCH';
211
+ throw error;
212
+ },
213
+ };
214
+ const probeTimeoutMs = 20;
215
+ const windowsSupervisor = createPiSessionDaemonSupervisor({
216
+ env: { PICHAMBER_DATA_DIR: dataDir },
217
+ cwd: root,
218
+ dataDir,
219
+ platform: 'win32',
220
+ processLike,
221
+ startupTimeoutMs: probeTimeoutMs,
222
+ request: () => new Promise(() => {}),
223
+ });
224
+ await writeFile(windowsSupervisor.paths.credentialFile, `${'a'.repeat(64)}\n`);
225
+ await writeFile(windowsSupervisor.paths.stateFile, JSON.stringify({
226
+ protocolVersion: 1,
227
+ pid: daemonPid,
228
+ endpoint: windowsSupervisor.paths.endpoint,
229
+ startedAt: new Date().toISOString(),
230
+ }));
231
+
232
+ const startedAt = Date.now();
233
+ await expect(windowsSupervisor.health()).resolves.toMatchObject({
234
+ state: 'unavailable',
235
+ error: { code: 'DAEMON_UNAVAILABLE' },
236
+ });
237
+ expect(Date.now() - startedAt).toBeLessThan(probeTimeoutMs * 5);
238
+ });
239
+
197
240
  it('recovers from a leftover empty daemon lock instead of failing as unavailable', async () => {
198
241
  const root = await mkdtemp(join(tmpdir(), 'pichamber-pi-supervisor-empty-lock-'));
199
242
  const cwd = join(root, 'project');