aicodeman 1.33.0 → 1.33.2
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/README.md +4 -0
- package/README.zh-CN.md +4 -0
- package/dist/config/cli-registry/schema.d.ts +1 -0
- package/dist/config/cli-registry/schema.d.ts.map +1 -1
- package/dist/config/cli-registry/schema.js +6 -0
- package/dist/config/cli-registry/schema.js.map +1 -1
- package/dist/config/cli-registry/stock.d.ts.map +1 -1
- package/dist/config/cli-registry/stock.js +20 -1
- package/dist/config/cli-registry/stock.js.map +1 -1
- package/dist/config/cli-registry/types.d.ts +13 -0
- package/dist/config/cli-registry/types.d.ts.map +1 -1
- package/dist/config/server-timing.d.ts +7 -0
- package/dist/config/server-timing.d.ts.map +1 -1
- package/dist/config/server-timing.js +7 -0
- package/dist/config/server-timing.js.map +1 -1
- package/dist/cron/cron-service.d.ts +20 -0
- package/dist/cron/cron-service.d.ts.map +1 -1
- package/dist/cron/cron-service.js +31 -10
- package/dist/cron/cron-service.js.map +1 -1
- package/dist/docker-hosts.d.ts +11 -0
- package/dist/docker-hosts.d.ts.map +1 -1
- package/dist/docker-hosts.js +30 -2
- package/dist/docker-hosts.js.map +1 -1
- package/dist/mux-interface.d.ts +7 -0
- package/dist/mux-interface.d.ts.map +1 -1
- package/dist/pane-exit-sweep.d.ts +77 -0
- package/dist/pane-exit-sweep.d.ts.map +1 -0
- package/dist/pane-exit-sweep.js +46 -0
- package/dist/pane-exit-sweep.js.map +1 -0
- package/dist/reboot-restore.d.ts +17 -14
- package/dist/reboot-restore.d.ts.map +1 -1
- package/dist/reboot-restore.js +25 -13
- package/dist/reboot-restore.js.map +1 -1
- package/dist/session-activity.d.ts +29 -0
- package/dist/session-activity.d.ts.map +1 -1
- package/dist/session-activity.js +56 -0
- package/dist/session-activity.js.map +1 -1
- package/dist/session.d.ts +57 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +98 -2
- package/dist/session.js.map +1 -1
- package/dist/tmux-manager.d.ts +10 -0
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +13 -1
- package/dist/tmux-manager.js.map +1 -1
- package/dist/types/session.d.ts +7 -6
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/session.js.map +1 -1
- package/dist/web/paste-image-gc.d.ts +36 -0
- package/dist/web/paste-image-gc.d.ts.map +1 -1
- package/dist/web/paste-image-gc.js +57 -1
- package/dist/web/paste-image-gc.js.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/{app.3ea688d2.js → app.91131d2c.js} +10 -10
- package/dist/web/public/app.91131d2c.js.br +0 -0
- package/dist/web/public/app.91131d2c.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.dee9dcc7.js → constants.cc927eb8.js} +48 -0
- package/dist/web/public/constants.cc927eb8.js.br +0 -0
- package/dist/web/public/constants.cc927eb8.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js +11 -5
- package/dist/web/public/home-sessions.js.br +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/host-wake-ui.js.gz +0 -0
- package/dist/web/public/i18n.f094d01f.js +1 -0
- package/dist/web/public/i18n.f094d01f.js.br +0 -0
- package/dist/web/public/i18n.f094d01f.js.gz +0 -0
- package/dist/web/public/image-input.a216cf9e.js.gz +0 -0
- package/dist/web/public/index.html +15 -9
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.c1e7c7b7.js.gz +0 -0
- package/dist/web/public/mobile-handlers.23a85db1.js.gz +0 -0
- package/dist/web/public/mobile-overview.js +40 -5
- package/dist/web/public/mobile-overview.js.br +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.1aa4952d.css +1 -0
- package/dist/web/public/mobile.1aa4952d.css.br +0 -0
- package/dist/web/public/mobile.1aa4952d.css.gz +0 -0
- package/dist/web/public/notification-manager.50bb87d8.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/panels-ui.67646701.js.gz +0 -0
- package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/reboot-restore-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/{session-ui.acc0aa26.js → session-ui.7575a231.js} +39 -38
- package/dist/web/public/session-ui.7575a231.js.br +0 -0
- package/dist/web/public/session-ui.7575a231.js.gz +0 -0
- package/dist/web/public/settings-ui.c68e7f59.js.gz +0 -0
- package/dist/web/public/styles.3fe3312d.css +1 -0
- package/dist/web/public/styles.3fe3312d.css.br +0 -0
- package/dist/web/public/styles.3fe3312d.css.gz +0 -0
- package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
- package/dist/web/public/sw.js +2 -2
- package/dist/web/public/sw.js.br +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.dcdc5772.js.gz +0 -0
- package/dist/web/public/terminal-keycode229-recovery.fb91b25b.js.gz +0 -0
- package/dist/web/public/terminal-split.js.gz +0 -0
- package/dist/web/public/{terminal-ui.baf7c9c6.js → terminal-ui.d5223c0e.js} +2 -2
- package/dist/web/public/terminal-ui.d5223c0e.js.br +0 -0
- package/dist/web/public/terminal-ui.d5223c0e.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.c4b51eb6.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/route-helpers.d.ts +16 -0
- package/dist/web/route-helpers.d.ts.map +1 -1
- package/dist/web/route-helpers.js +19 -0
- package/dist/web/route-helpers.js.map +1 -1
- package/dist/web/routes/cli-registry-routes.d.ts +3 -1
- package/dist/web/routes/cli-registry-routes.d.ts.map +1 -1
- package/dist/web/routes/cli-registry-routes.js +10 -1
- package/dist/web/routes/cli-registry-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +21 -2
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/webview-routes.d.ts.map +1 -1
- package/dist/web/routes/webview-routes.js +15 -3
- package/dist/web/routes/webview-routes.js.map +1 -1
- package/dist/web/routes/ws-routes.d.ts.map +1 -1
- package/dist/web/routes/ws-routes.js +9 -1
- package/dist/web/routes/ws-routes.js.map +1 -1
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +5 -1
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts +37 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +107 -3
- package/dist/web/server.js.map +1 -1
- package/dist/web/sse-events.d.ts +4 -2
- package/dist/web/sse-events.d.ts.map +1 -1
- package/dist/web/sse-events.js +4 -2
- package/dist/web/sse-events.js.map +1 -1
- package/dist/web/webview-sse.d.ts +4 -0
- package/dist/web/webview-sse.d.ts.map +1 -0
- package/dist/web/webview-sse.js +4 -0
- package/dist/web/webview-sse.js.map +1 -0
- package/package.json +2 -1
- package/scripts/postinstall.js +16 -4
- package/dist/web/public/app.3ea688d2.js.br +0 -0
- package/dist/web/public/app.3ea688d2.js.gz +0 -0
- package/dist/web/public/constants.dee9dcc7.js.br +0 -0
- package/dist/web/public/constants.dee9dcc7.js.gz +0 -0
- package/dist/web/public/i18n.600dab6c.js +0 -1
- package/dist/web/public/i18n.600dab6c.js.br +0 -0
- package/dist/web/public/i18n.600dab6c.js.gz +0 -0
- package/dist/web/public/mobile.eeadfbbe.css +0 -1
- package/dist/web/public/mobile.eeadfbbe.css.br +0 -0
- package/dist/web/public/mobile.eeadfbbe.css.gz +0 -0
- package/dist/web/public/session-ui.acc0aa26.js.br +0 -0
- package/dist/web/public/session-ui.acc0aa26.js.gz +0 -0
- package/dist/web/public/styles.340f073e.css +0 -1
- package/dist/web/public/styles.340f073e.css.br +0 -0
- package/dist/web/public/styles.340f073e.css.gz +0 -0
- package/dist/web/public/terminal-ui.baf7c9c6.js.br +0 -0
- package/dist/web/public/terminal-ui.baf7c9c6.js.gz +0 -0
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
* image dir.
|
|
13
13
|
*/
|
|
14
14
|
import fs from 'node:fs/promises';
|
|
15
|
-
import {
|
|
15
|
+
import { realpathSync } from 'node:fs';
|
|
16
|
+
import { join, resolve } from 'node:path';
|
|
16
17
|
const MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
|
|
17
18
|
const SWEEP_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
|
|
18
19
|
const INITIAL_DELAY_MS = 30 * 1000; // 30s after startup
|
|
@@ -50,6 +51,61 @@ export async function sweepPasteImagesOnce(ctx, now = Date.now()) {
|
|
|
50
51
|
}
|
|
51
52
|
return { scanned, deleted };
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* The path two sessions must share to share a paste-image dir: the canonical
|
|
56
|
+
* path when it can be resolved, so a sibling that reaches the same directory
|
|
57
|
+
* through a symlink matches, and the normalised path otherwise (a directory
|
|
58
|
+
* that no longer exists has nothing left to protect).
|
|
59
|
+
*/
|
|
60
|
+
function canonicalDir(dir) {
|
|
61
|
+
try {
|
|
62
|
+
return realpathSync(dir);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return resolve(dir);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Does another live session still use this working directory's paste-image
|
|
70
|
+
* dir? Deleting a session removes `{workingDir}/.claude-images` recursively,
|
|
71
|
+
* and several sessions routinely share one case directory, so without this
|
|
72
|
+
* check closing one session deletes the pasted images a sibling in the same
|
|
73
|
+
* case still refers to.
|
|
74
|
+
*
|
|
75
|
+
* Two kinds of sibling count as live:
|
|
76
|
+
*
|
|
77
|
+
* - a session in the server's map, unless it is itself being killed;
|
|
78
|
+
* - a persisted record whose status is not `stopped`. That covers a session
|
|
79
|
+
* detached with `killMux=false`, which leaves the server's map while its
|
|
80
|
+
* tmux pane keeps running, and a session whose detach is still in progress.
|
|
81
|
+
*
|
|
82
|
+
* A session being KILLED does not count. Without that exemption, killing two
|
|
83
|
+
* sessions of one case concurrently (a bulk delete, or the exited-agent sweep
|
|
84
|
+
* closing two panes on one tick) would have each defer to the other, and
|
|
85
|
+
* neither would remove the dir.
|
|
86
|
+
*
|
|
87
|
+
* Erring toward "in use" only costs a missed deletion, which the periodic
|
|
88
|
+
* sweep above ages out. A pinned record whose tmux session is gone keeps its
|
|
89
|
+
* status through boot pruning, so it holds the dir this way until unpinned.
|
|
90
|
+
*/
|
|
91
|
+
export function pasteImageDirInUseByOtherSession(input) {
|
|
92
|
+
const target = canonicalDir(input.workingDir);
|
|
93
|
+
const matches = (user) => user.id !== input.closingId &&
|
|
94
|
+
!input.killing.has(user.id) &&
|
|
95
|
+
!!user.workingDir &&
|
|
96
|
+
canonicalDir(user.workingDir) === target;
|
|
97
|
+
for (const user of input.live) {
|
|
98
|
+
if (matches(user))
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
for (const user of input.persisted) {
|
|
102
|
+
if (user.status === 'stopped')
|
|
103
|
+
continue;
|
|
104
|
+
if (matches(user))
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
53
109
|
export function startPasteImageGc(ctx) {
|
|
54
110
|
const initial = setTimeout(() => {
|
|
55
111
|
void sweepPasteImagesOnce(ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paste-image-gc.js","sourceRoot":"","sources":["../../src/web/paste-image-gc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"paste-image-gc.js","sourceRoot":"","sources":["../../src/web/paste-image-gc.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|