@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.
- package/dist/assets/{CommitSection-BpbMC0et.js → CommitSection-C336377Z.js} +1 -1
- package/dist/assets/{DiagramEditor-dFTMKHuO.js → DiagramEditor-gHLCXHtr.js} +1 -1
- package/dist/assets/{DiagramView-DVw_8Px1.js → DiagramView-DlHzRRBc.js} +1 -1
- package/dist/assets/{DiffView-CkoY1oAM.js → DiffView-5wHwK-lg.js} +1 -1
- package/dist/assets/{FilesView-C0hyg2pa.js → FilesView-5bswI3JZ.js} +1 -1
- package/dist/assets/{GitView-D36hpDsb.js → GitView-BfykGpGh.js} +3 -3
- package/dist/assets/{JsonTreeView-BF8S-bPN.js → JsonTreeView-HVwQS7qG.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-BVNChdig.js → MarkdownRendererImpl-kjd4e0N8.js} +1 -1
- package/dist/assets/{PatchDiff-B--OaNB1.js → PatchDiff-Dlm4RU8n.js} +1 -1
- package/dist/assets/{PierreDiffViewer-0Qkp9ICt.js → PierreDiffViewer-St32rXlD.js} +1 -1
- package/dist/assets/{SessionSwitcherDropdown-cFWgy1td.js → SessionSwitcherDropdown-D5bWfZNA.js} +92 -92
- package/dist/assets/{SettingsView-D3ZZyjU3.js → SettingsView-FGe5TEQq.js} +3 -3
- package/dist/assets/{SettingsWindow-BuJCvYoR.js → SettingsWindow-Ck_uhTnx.js} +1 -1
- package/dist/assets/{ToolOutputDialog-Bi9BoEe7.js → ToolOutputDialog-BCONUv3r.js} +5 -5
- package/dist/assets/{ToolPartDiffPreview-DGX7N4zr.js → ToolPartDiffPreview-BdVuk2kc.js} +1 -1
- package/dist/assets/{VirtualizedFileDiff-CxraYoDZ.js → VirtualizedFileDiff-BsAZM0jo.js} +1 -1
- package/dist/assets/{collapsible-d4-HChej.js → collapsible-Wnmq-13H.js} +1 -1
- package/dist/assets/{computeVirtualFileMetrics-BuD14qFL.js → computeVirtualFileMetrics-skbyL2Az.js} +2 -2
- package/dist/assets/{contextFileOpenGuard-DirV-hCs.js → contextFileOpenGuard-BsxQITMZ.js} +1 -1
- package/dist/assets/{index-DEYblXCW.js → index-8TL2HlaR.js} +4 -4
- package/dist/assets/{index-BWmmf5yJ.js → index-Bfp6eYap.js} +1 -1
- package/dist/assets/{index-DLKBsLKY.css → index-riABQmQ_.css} +1 -1
- package/dist/assets/{isDiffPlainText-LoMmNzmX.js → isDiffPlainText-dZkfk3yG.js} +1 -1
- package/dist/assets/{isFilePlainText-3Hj9i02t.js → isFilePlainText-UL_tMQZx.js} +1 -1
- package/dist/assets/{main-BsszlAdQ.js → main-CHQfoyRP.js} +2 -2
- package/dist/assets/{main-CUvZIN16.js → main-DbnYXZeK.js} +4 -4
- package/dist/assets/{markdownCore-sGxk8jrc.js → markdownCore-qX3mJFkL.js} +2 -2
- package/dist/assets/{miniChat-C6SDQL4G.js → miniChat-3QtCNwHl.js} +2 -2
- package/dist/assets/{mobile-DBW3XDmZ.js → mobile-B_CyfRAX.js} +2 -2
- package/dist/assets/{renderElectronMiniChatApp-B1_fTdN-.js → renderElectronMiniChatApp-OToslrv-.js} +1 -1
- package/dist/assets/{renderMobileApp-CFxZc_1a.js → renderMobileApp-BD_wep_I.js} +4 -4
- package/dist/assets/{runtimeSurface-9aJdtQbh.js → runtimeSurface-CkdOpqo7.js} +1 -1
- package/dist/assets/{useInlineCommentController-Cl--s6vE.js → useInlineCommentController-DVif5Fr8.js} +2 -2
- package/dist/assets/{usePanelSlide-D5ffPTGM.js → usePanelSlide-C_PJmPXW.js} +2 -2
- package/dist/assets/{useWindowTitle-C-AZD713.js → useWindowTitle-BZVlLMCy.js} +1 -1
- package/dist/assets/{vendor-codemirror-language-data-HC9JT4I3.js → vendor-codemirror-language-data-C-924Z4o.js} +2 -2
- package/dist/assets/{vendor-sonner-dWA7qvjr.js → vendor-sonner-CW8w438f.js} +1 -1
- package/dist/assets/{web-components-skJ_VpnT.js → web-components-BG-6PEN4.js} +4 -4
- package/dist/index.html +4 -4
- package/dist/mini-chat.html +3 -3
- package/dist/mobile.html +3 -3
- package/package.json +1 -1
- package/server/lib/pi/routes.js +20 -2
- package/server/lib/pi/routes.test.js +14 -6
- package/server/lib/pi/session-daemon/DOCUMENTATION.md +4 -3
- package/server/lib/pi/session-daemon/message-entry-aliases.js +100 -0
- package/server/lib/pi/session-daemon/session-daemon.js +66 -38
- package/server/lib/pi/session-daemon/session-daemon.test.js +289 -6
- package/server/lib/pi/session-daemon/supervisor.js +20 -1
- 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');
|