@walkhi/code-relax 0.1.0-beta.71 → 0.1.0-beta.78
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/bin/codex-remote.mjs +23 -5
- package/dist/build-platform.json +1 -1
- package/dist/src/code-browser.mjs +0 -1
- package/dist/src/desktop-launcher.mjs +15 -6
- package/dist/src/dots-chat-server.mjs +531 -498
- package/dist/src/dots-message-images.mjs +0 -1
- package/dist/src/dots-room-activity.mjs +25 -4
- package/dist/src/dots-room-client.mjs +163 -137
- package/dist/src/dots-task-catalog.mjs +4 -1
- package/dist/src/dots-task-files.mjs +2 -2
- package/dist/src/file-upload-session.mjs +13 -6
- package/dist/src/lan-socket-server.mjs +8 -5
- package/dist/src/managed-app-server.mjs +26 -1
- package/dist/src/message-upload-files.mjs +115 -109
- package/dist/src/runtime-discovery.mjs +25 -5
- package/dist/src/self-relay/connector.mjs +9 -6
- package/dist/src/self-relay/file-wire.mjs +63 -0
- package/dist/src/self-relay/server.mjs +47 -20
- package/dist/src/server.mjs +1981 -1969
- package/dist/src/shared-app-server.mjs +4 -3
- package/dist/src/workstation-downloads.mjs +120 -120
- package/package.json +4 -4
|
@@ -366,11 +366,29 @@ async function main() {
|
|
|
366
366
|
if (!await desktopHost.desktopReady()) throw new Error('安装期间 Codex 窗口已启动,但未确认连接到工作站内核。');
|
|
367
367
|
desktopRestarted = true;
|
|
368
368
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
369
|
+
// Kernel restart completion can precede the next execution-health sample.
|
|
370
|
+
// Observe readiness only: never repeat installation or restart the kernel here.
|
|
371
|
+
const readinessDeadline = Date.now() + 35_000;
|
|
372
|
+
const installationReady = () => bridge.running && bridge.managedAppServer?.state === 'ready'
|
|
373
|
+
&& bridge.execution?.ready === true
|
|
374
|
+
&& (preserveCodex || (!bridge.managedAppServer.updatePending && !bridge.managedAppServer.launcherRestartRequired));
|
|
375
|
+
do {
|
|
376
|
+
bridge = await service.status();
|
|
377
|
+
if (installationReady()) break;
|
|
378
|
+
if (Date.now() >= readinessDeadline) {
|
|
379
|
+
const diagnostic = {
|
|
380
|
+
observedAt: new Date().toISOString(), running: bridge.running,
|
|
381
|
+
kernelState: bridge.managedAppServer?.state, kernelError: bridge.managedAppServer?.error,
|
|
382
|
+
kernelVersion: bridge.managedAppServer?.version, kernelPid: bridge.managedAppServer?.pid,
|
|
383
|
+
updatePending: bridge.managedAppServer?.updatePending,
|
|
384
|
+
launcherRestartRequired: bridge.managedAppServer?.launcherRestartRequired,
|
|
385
|
+
execution: bridge.execution, restart: bridge.managedAppServer?.restart,
|
|
386
|
+
migration: managedAppServerMigration, preserveCodex,
|
|
387
|
+
};
|
|
388
|
+
throw new Error(`安装文件已更新,但等待 35 秒后 Codex 内核更新或完整控制仍未就绪,安装未完成。状态:${JSON.stringify(diagnostic)}`);
|
|
389
|
+
}
|
|
390
|
+
await delay(250);
|
|
391
|
+
} while (true);
|
|
374
392
|
installed.autostart = autostart;
|
|
375
393
|
installed.skill = skill;
|
|
376
394
|
installed.restarted = resumeAfterUpdate;
|
package/dist/build-platform.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"layout":"npm-platform-packages","version":"0.1.0-beta.
|
|
1
|
+
{"layout":"npm-platform-packages","version":"0.1.0-beta.78"}
|
|
@@ -65,7 +65,6 @@ export async function browseCode(rpc, operation, query) {
|
|
|
65
65
|
try {
|
|
66
66
|
const before = await handle.stat();
|
|
67
67
|
if (!before.isFile()) protocol.fail('请选择普通文件。', 415);
|
|
68
|
-
if (before.size > protocol.maxFileBytes) protocol.fail('文件超过预览上限(20 MiB)。', 413);
|
|
69
68
|
if (!before.size) protocol.fail('文件为空。', 415);
|
|
70
69
|
const revision = fileRevision(before);
|
|
71
70
|
const { offset, length } = fileRange(query, before.size, revision);
|
|
@@ -17,12 +17,21 @@ function desktopEnvironment(stateRoot, environment) {
|
|
|
17
17
|
|
|
18
18
|
// Opening the optional UI does not start, restart or supervise the kernel.
|
|
19
19
|
export async function startDesktop({ stateRoot, host, environment = process.env, restart = false }) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
let stage = 'inspect';
|
|
21
|
+
try {
|
|
22
|
+
const info = await host.inspect();
|
|
23
|
+
if (!info.desktop) throw new Error('未安装 Codex 桌面端。');
|
|
24
|
+
if (info.running && !restart) return { status: 'running', message: 'Codex 桌面端已启动。' };
|
|
25
|
+
if (info.running) { stage = 'close'; await host.closeDesktop(info.desktop); }
|
|
26
|
+
stage = 'activate';
|
|
27
|
+
await host.startDesktop(info.desktop, desktopEnvironment(stateRoot, environment));
|
|
28
|
+
return { status: 'accepted', message: restart ? '已提交 Codex 桌面端重启请求。' : '已提交 Codex 桌面端启动请求。' };
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error(JSON.stringify({ time: new Date().toISOString(), event: 'desktop-operation-failed', restart, stage,
|
|
31
|
+
message: error.message, code: error.code, stderr: error.stderr }));
|
|
32
|
+
throw new Error(stage === 'close' ? '桌面端关闭失败,请查看工作站诊断日志。'
|
|
33
|
+
: stage === 'activate' ? '桌面端启动失败,请查看工作站诊断日志。' : '无法检查桌面端,请查看工作站诊断日志。', { cause: error });
|
|
34
|
+
}
|
|
26
35
|
}
|
|
27
36
|
|
|
28
37
|
export async function launchDesktop({ stateRoot, host, environment = process.env, wait = delay, timeout = 30000, recoveryId, progress = () => {}, service = lifecycle({ stateRoot, host: serviceHost }) }) {
|