botmux 2.86.0 → 2.88.0
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.en.md +27 -0
- package/README.md +27 -0
- package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
- package/dist/adapters/backend/herdr-backend.js +12 -1
- package/dist/adapters/backend/herdr-backend.js.map +1 -1
- package/dist/adapters/backend/liveness-gate.d.ts +38 -0
- package/dist/adapters/backend/liveness-gate.d.ts.map +1 -0
- package/dist/adapters/backend/liveness-gate.js +53 -0
- package/dist/adapters/backend/liveness-gate.js.map +1 -0
- package/dist/adapters/backend/pty-backend.d.ts.map +1 -1
- package/dist/adapters/backend/pty-backend.js +4 -1
- package/dist/adapters/backend/pty-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-backend.d.ts +22 -1
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +124 -36
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +20 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +86 -20
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +9 -0
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +1 -1
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.d.ts +13 -0
- package/dist/adapters/backend/zellij-observe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-observe-backend.js +51 -12
- package/dist/adapters/backend/zellij-observe-backend.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +8 -5
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/shared-hints.d.ts +2 -1
- package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
- package/dist/adapters/cli/shared-hints.js +25 -3
- package/dist/adapters/cli/shared-hints.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +4 -0
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +6 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +23 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +9 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +368 -16
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +7 -5
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +210 -5
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/dashboard-rows.d.ts +3 -0
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +4 -1
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/core/maintenance.d.ts +18 -0
- package/dist/core/maintenance.d.ts.map +1 -1
- package/dist/core/maintenance.js +58 -30
- package/dist/core/maintenance.js.map +1 -1
- package/dist/core/per-bot-env.d.ts +38 -0
- package/dist/core/per-bot-env.d.ts.map +1 -0
- package/dist/core/per-bot-env.js +79 -0
- package/dist/core/per-bot-env.js.map +1 -0
- package/dist/core/session-activity.d.ts +1 -0
- package/dist/core/session-activity.d.ts.map +1 -1
- package/dist/core/session-activity.js +7 -4
- package/dist/core/session-activity.js.map +1 -1
- package/dist/core/session-create.d.ts +62 -0
- package/dist/core/session-create.d.ts.map +1 -0
- package/dist/core/session-create.js +131 -0
- package/dist/core/session-create.js.map +1 -0
- package/dist/core/session-manager.d.ts +43 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +306 -8
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/skills/discovery.d.ts +7 -0
- package/dist/core/skills/discovery.d.ts.map +1 -1
- package/dist/core/skills/discovery.js +51 -0
- package/dist/core/skills/discovery.js.map +1 -1
- package/dist/core/trigger-session.d.ts.map +1 -1
- package/dist/core/trigger-session.js +5 -2
- package/dist/core/trigger-session.js.map +1 -1
- package/dist/core/update-check.d.ts +67 -0
- package/dist/core/update-check.d.ts.map +1 -0
- package/dist/core/update-check.js +159 -0
- package/dist/core/update-check.js.map +1 -0
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +82 -4
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +40 -11
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +2 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +2 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/session-cleanup.d.ts +30 -0
- package/dist/dashboard/session-cleanup.d.ts.map +1 -0
- package/dist/dashboard/session-cleanup.js +47 -0
- package/dist/dashboard/session-cleanup.js.map +1 -0
- package/dist/dashboard/skill-install-request.d.ts +10 -0
- package/dist/dashboard/skill-install-request.d.ts.map +1 -1
- package/dist/dashboard/skill-install-request.js +17 -0
- package/dist/dashboard/skill-install-request.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +29 -1
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +82 -6
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +312 -2
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/insights.d.ts.map +1 -1
- package/dist/dashboard/web/insights.js +355 -30
- package/dist/dashboard/web/insights.js.map +1 -1
- package/dist/dashboard/web/sessions.d.ts +2 -0
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +457 -30
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings.d.ts.map +1 -1
- package/dist/dashboard/web/settings.js +289 -0
- package/dist/dashboard/web/settings.js.map +1 -1
- package/dist/dashboard/web/skills.d.ts.map +1 -1
- package/dist/dashboard/web/skills.js +183 -10
- package/dist/dashboard/web/skills.js.map +1 -1
- package/dist/dashboard/web/whiteboards.d.ts +2 -0
- package/dist/dashboard/web/whiteboards.d.ts.map +1 -0
- package/dist/dashboard/web/whiteboards.js +267 -0
- package/dist/dashboard/web/whiteboards.js.map +1 -0
- package/dist/dashboard-web/app.js +879 -591
- package/dist/dashboard-web/index.html +1 -0
- package/dist/dashboard-web/style.css +528 -8
- package/dist/dashboard.js +472 -5
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +6 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +12 -0
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +21 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +21 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts +4 -5
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +113 -11
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +3 -2
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +174 -14
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +19 -5
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/grant-pending.d.ts.map +1 -1
- package/dist/im/lark/grant-pending.js +9 -2
- package/dist/im/lark/grant-pending.js.map +1 -1
- package/dist/index-daemon.js +5 -0
- package/dist/index-daemon.js.map +1 -1
- package/dist/platform/bind.d.ts +2 -0
- package/dist/platform/bind.d.ts.map +1 -0
- package/dist/platform/bind.js +91 -0
- package/dist/platform/bind.js.map +1 -0
- package/dist/platform/binding.d.ts +22 -0
- package/dist/platform/binding.d.ts.map +1 -0
- package/dist/platform/binding.js +33 -0
- package/dist/platform/binding.js.map +1 -0
- package/dist/platform/tunnel-client.d.ts +15 -0
- package/dist/platform/tunnel-client.d.ts.map +1 -0
- package/dist/platform/tunnel-client.js +193 -0
- package/dist/platform/tunnel-client.js.map +1 -0
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +20 -0
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/git-worktree.d.ts +10 -0
- package/dist/services/git-worktree.d.ts.map +1 -1
- package/dist/services/git-worktree.js +71 -26
- package/dist/services/git-worktree.js.map +1 -1
- package/dist/services/grant-prefs-store.d.ts +3 -0
- package/dist/services/grant-prefs-store.d.ts.map +1 -1
- package/dist/services/grant-prefs-store.js +17 -2
- package/dist/services/grant-prefs-store.js.map +1 -1
- package/dist/services/insight/claude-span-reader.d.ts.map +1 -1
- package/dist/services/insight/claude-span-reader.js +18 -2
- package/dist/services/insight/claude-span-reader.js.map +1 -1
- package/dist/services/insight/codex-span-reader.d.ts.map +1 -1
- package/dist/services/insight/codex-span-reader.js +17 -1
- package/dist/services/insight/codex-span-reader.js.map +1 -1
- package/dist/services/insight/report.d.ts.map +1 -1
- package/dist/services/insight/report.js +48 -6
- package/dist/services/insight/report.js.map +1 -1
- package/dist/services/insight/types.d.ts +9 -0
- package/dist/services/insight/types.d.ts.map +1 -1
- package/dist/services/insight/types.js.map +1 -1
- package/dist/services/resumable-session-discovery.d.ts.map +1 -1
- package/dist/services/resumable-session-discovery.js +21 -4
- package/dist/services/resumable-session-discovery.js.map +1 -1
- package/dist/services/skill-registry-store.d.ts +1 -0
- package/dist/services/skill-registry-store.d.ts.map +1 -1
- package/dist/services/skill-registry-store.js +32 -0
- package/dist/services/skill-registry-store.js.map +1 -1
- package/dist/services/whiteboard-store.d.ts +67 -0
- package/dist/services/whiteboard-store.d.ts.map +1 -0
- package/dist/services/whiteboard-store.js +450 -0
- package/dist/services/whiteboard-store.js.map +1 -0
- package/dist/services/worktree-slug-ai.d.ts.map +1 -1
- package/dist/services/worktree-slug-ai.js +3 -1
- package/dist/services/worktree-slug-ai.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts +8 -0
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +9 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +118 -0
- package/dist/skills/definitions.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/crash-log.d.ts +22 -0
- package/dist/utils/crash-log.d.ts.map +1 -0
- package/dist/utils/crash-log.js +37 -0
- package/dist/utils/crash-log.js.map +1 -0
- package/dist/utils/input-gate.d.ts +10 -0
- package/dist/utils/input-gate.d.ts.map +1 -1
- package/dist/utils/input-gate.js +7 -0
- package/dist/utils/input-gate.js.map +1 -1
- package/dist/utils/install-diagnostics.d.ts +52 -0
- package/dist/utils/install-diagnostics.d.ts.map +1 -0
- package/dist/utils/install-diagnostics.js +155 -0
- package/dist/utils/install-diagnostics.js.map +1 -0
- package/dist/utils/install-info.d.ts +4 -0
- package/dist/utils/install-info.d.ts.map +1 -1
- package/dist/utils/install-info.js +6 -0
- package/dist/utils/install-info.js.map +1 -1
- package/dist/utils/stdio-epipe-guard.d.ts +39 -0
- package/dist/utils/stdio-epipe-guard.d.ts.map +1 -0
- package/dist/utils/stdio-epipe-guard.js +67 -0
- package/dist/utils/stdio-epipe-guard.js.map +1 -0
- package/dist/worker.js +222 -26
- package/dist/worker.js.map +1 -1
- package/dist/workflows/daemon-spawn.d.ts +2 -0
- package/dist/workflows/daemon-spawn.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import type { CliId } from '../../adapters/cli/types.js';
|
|
1
2
|
import type { SkillPackage } from './types.js';
|
|
3
|
+
export interface NativeCliSkillGroup {
|
|
4
|
+
cliId: CliId;
|
|
5
|
+
rootDir: string;
|
|
6
|
+
skills: SkillPackage[];
|
|
7
|
+
}
|
|
8
|
+
export declare function discoverNativeCliSkillGroups(cliIds: readonly CliId[]): NativeCliSkillGroup[];
|
|
2
9
|
export declare function discoverProjectSkills(workingDir: string): SkillPackage[];
|
|
3
10
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AA+BD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAyB5F;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAgBxE"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { existsSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
2
3
|
import { join } from 'node:path';
|
|
4
|
+
import { createCliAdapterSync } from '../../adapters/cli/registry.js';
|
|
3
5
|
import { loadSkillPackage } from './package.js';
|
|
6
|
+
function expandHome(path) {
|
|
7
|
+
if (path === '~')
|
|
8
|
+
return homedir();
|
|
9
|
+
if (path.startsWith('~/'))
|
|
10
|
+
return join(homedir(), path.slice(2));
|
|
11
|
+
return path;
|
|
12
|
+
}
|
|
4
13
|
function listSkillDirs(root) {
|
|
5
14
|
if (!existsSync(root))
|
|
6
15
|
return [];
|
|
@@ -13,6 +22,48 @@ function listSkillDirs(root) {
|
|
|
13
22
|
return [];
|
|
14
23
|
}
|
|
15
24
|
}
|
|
25
|
+
function discoverSkillRoot(root) {
|
|
26
|
+
const out = [];
|
|
27
|
+
for (const dir of listSkillDirs(root)) {
|
|
28
|
+
try {
|
|
29
|
+
out.push(loadSkillPackage(dir, { source: { type: 'user', root: dir } }));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// A broken user-local skill should not break dashboard rendering.
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return out.sort((a, b) => a.name.localeCompare(b.name));
|
|
36
|
+
}
|
|
37
|
+
export function discoverNativeCliSkillGroups(cliIds) {
|
|
38
|
+
const out = [];
|
|
39
|
+
const seen = new Set();
|
|
40
|
+
for (const cliId of [...new Set(cliIds)]) {
|
|
41
|
+
let adapter;
|
|
42
|
+
try {
|
|
43
|
+
adapter = createCliAdapterSync(cliId);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const roots = [];
|
|
49
|
+
if (adapter.claudeDataDir)
|
|
50
|
+
roots.push(join(expandHome(adapter.claudeDataDir), 'skills'));
|
|
51
|
+
if (adapter.skillsDir)
|
|
52
|
+
roots.push(expandHome(adapter.skillsDir));
|
|
53
|
+
for (const root of roots) {
|
|
54
|
+
// Dedup by ROOT globally (not per cliId): several adapters share a skills
|
|
55
|
+
// directory — coco/traex both use ~/.trae/skills, mtr/opencode both use
|
|
56
|
+
// ~/.config/opencode/skills — so a shared root would otherwise show up as
|
|
57
|
+
// two tabs listing byte-identical skills (and let the same dir be picked
|
|
58
|
+
// twice across tabs). First CLI to claim a root owns its tab.
|
|
59
|
+
if (seen.has(root))
|
|
60
|
+
continue;
|
|
61
|
+
seen.add(root);
|
|
62
|
+
out.push({ cliId, rootDir: root, skills: discoverSkillRoot(root) });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
16
67
|
export function discoverProjectSkills(workingDir) {
|
|
17
68
|
const roots = [
|
|
18
69
|
join(workingDir, '.agents', 'skills'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-session.d.ts","sourceRoot":"","sources":["../../src/core/trigger-session.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC5C;AAOD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA8BxF;AAqBD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"trigger-session.d.ts","sourceRoot":"","sources":["../../src/core/trigger-session.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEpF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC5C;AAOD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA8BxF;AAqBD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,eAAe,CAAC,CAqI1B"}
|
|
@@ -6,7 +6,7 @@ import { getBot } from '../bot-registry.js';
|
|
|
6
6
|
import { getChatMode, sendMessage } from '../im/lark/client.js';
|
|
7
7
|
import { localeForBot, t } from '../i18n/index.js';
|
|
8
8
|
import { validateWorkingDir } from './working-dir.js';
|
|
9
|
-
import { buildFollowUpContent, buildNewTopicPrompt, getAvailableBots, rememberLastCliInput } from './session-manager.js';
|
|
9
|
+
import { buildFollowUpContent, buildNewTopicPrompt, ensureSessionWhiteboard, getAvailableBots, rememberLastCliInput } from './session-manager.js';
|
|
10
10
|
import { markSessionActivity } from './session-activity.js';
|
|
11
11
|
import { forkWorker, getCurrentCliVersion } from './worker-pool.js';
|
|
12
12
|
import * as messageQueue from '../services/message-queue.js';
|
|
@@ -88,12 +88,14 @@ export async function triggerSessionTurn(req, deps) {
|
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
if (ds?.worker && !ds.worker.killed) {
|
|
91
|
+
ensureSessionWhiteboard(ds);
|
|
91
92
|
const content = buildFollowUpContent(prompt, ds.session.sessionId, {
|
|
92
93
|
isAdoptMode: false,
|
|
93
94
|
cliId: ds.session.cliId,
|
|
94
95
|
locale: localeForBot(larkAppId),
|
|
95
96
|
larkAppId,
|
|
96
97
|
chatId,
|
|
98
|
+
whiteboardId: ds.session.whiteboardId,
|
|
97
99
|
});
|
|
98
100
|
markSessionActivity(ds);
|
|
99
101
|
rememberLastCliInput(ds, prompt, content);
|
|
@@ -127,7 +129,6 @@ export async function triggerSessionTurn(req, deps) {
|
|
|
127
129
|
session.cliId = bot.config.cliId;
|
|
128
130
|
sessionStore.updateSession(session);
|
|
129
131
|
messageQueue.ensureQueue(anchor);
|
|
130
|
-
const promptInput = buildNewTopicPrompt(prompt, session.sessionId, bot.config.cliId, bot.config.cliPathOverride, undefined, undefined, await getAvailableBots(larkAppId, chatId), undefined, { name: bot.botName, openId: bot.botOpenId }, localeForBot(larkAppId), undefined, { larkAppId, chatId });
|
|
131
132
|
const newDs = {
|
|
132
133
|
session,
|
|
133
134
|
worker: null,
|
|
@@ -143,6 +144,8 @@ export async function triggerSessionTurn(req, deps) {
|
|
|
143
144
|
hasHistory: false,
|
|
144
145
|
workingDir: wd.workingDir,
|
|
145
146
|
};
|
|
147
|
+
ensureSessionWhiteboard(newDs);
|
|
148
|
+
const promptInput = buildNewTopicPrompt(prompt, session.sessionId, bot.config.cliId, bot.config.cliPathOverride, undefined, undefined, await getAvailableBots(larkAppId, chatId), undefined, { name: bot.botName, openId: bot.botOpenId }, localeForBot(larkAppId), undefined, { larkAppId, chatId, whiteboardId: newDs.session.whiteboardId });
|
|
146
149
|
deps.activeSessions.set(sessionKey(anchor, larkAppId), newDs);
|
|
147
150
|
rememberLastCliInput(newDs, prompt, promptInput);
|
|
148
151
|
forkWorker(newDs, promptInput);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-session.js","sourceRoot":"","sources":["../../src/core/trigger-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,WAAW,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger-session.js","sourceRoot":"","sources":["../../src/core/trigger-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface ReleaseNote {
|
|
2
|
+
/** Semver without leading 'v' (e.g. "2.85.1"). */
|
|
3
|
+
version: string;
|
|
4
|
+
/** Release display name / title (GitHub `name`), falls back to the tag. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Markdown release body (the CI-published changelog). */
|
|
7
|
+
body: string;
|
|
8
|
+
/** Canonical release URL. */
|
|
9
|
+
url: string;
|
|
10
|
+
/** ISO publish timestamp, or null. */
|
|
11
|
+
publishedAt: string | null;
|
|
12
|
+
}
|
|
13
|
+
export interface ParsedVersion {
|
|
14
|
+
major: number;
|
|
15
|
+
minor: number;
|
|
16
|
+
patch: number;
|
|
17
|
+
/** Pre-release identifiers ([] for a stable release). */
|
|
18
|
+
pre: string[];
|
|
19
|
+
}
|
|
20
|
+
/** Parse "X.Y.Z" / "vX.Y.Z" / "X.Y.Z-canary.1". null on anything else. */
|
|
21
|
+
export declare function parseVersion(raw: string): ParsedVersion | null;
|
|
22
|
+
/** A stable (non-prerelease) semver string. */
|
|
23
|
+
export declare function isStableVersion(raw: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Semver precedence: -1 if a<b, 0 if equal, 1 if a>b. An unparseable version
|
|
26
|
+
* sorts smallest (so garbage never masquerades as "newer"). A stable release
|
|
27
|
+
* outranks a pre-release of the same X.Y.Z, and pre-release identifiers compare
|
|
28
|
+
* per semver §11 (numeric < numeric numerically, alphanumeric lexically,
|
|
29
|
+
* numeric < alphanumeric, a longer set of identifiers > a shorter prefix).
|
|
30
|
+
*/
|
|
31
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
32
|
+
/** Is `latest` strictly newer than `current`? */
|
|
33
|
+
export declare function isNewerVersion(latest: string, current: string): boolean;
|
|
34
|
+
export interface FetchOpts {
|
|
35
|
+
timeoutMs?: number;
|
|
36
|
+
fetchImpl?: typeof fetch;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The npm `latest` dist-tag version — the authoritative target of
|
|
40
|
+
* `npm install -g botmux@latest`. null on any failure (offline, non-200,
|
|
41
|
+
* malformed body, or a version string we can't parse).
|
|
42
|
+
*/
|
|
43
|
+
export declare function fetchLatestVersion(opts?: FetchOpts): Promise<string | null>;
|
|
44
|
+
export interface ChangelogResult {
|
|
45
|
+
/** false when the GitHub fetch failed (offline / rate-limited / malformed) —
|
|
46
|
+
* the caller shows a "view on GitHub" fallback instead of "no releases". */
|
|
47
|
+
ok: boolean;
|
|
48
|
+
/** true on HTTP 403 — GitHub's unauthenticated API is 60 req/h per IP, easily
|
|
49
|
+
* exhausted behind shared NAT. Lets the UI explain the failure precisely. */
|
|
50
|
+
rateLimited?: boolean;
|
|
51
|
+
releases: ReleaseNote[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Stable GitHub releases strictly newer than `current`, newest first, capped at
|
|
55
|
+
* `max`. Pre-releases (canary/beta/rc) are excluded — the card mirrors exactly
|
|
56
|
+
* what `@latest` would install. Returns `{ ok:false }` on any failure so the UI
|
|
57
|
+
* distinguishes "couldn't load" from a genuinely empty (already-latest) list.
|
|
58
|
+
*/
|
|
59
|
+
export declare function fetchReleasesSince(current: string, opts?: FetchOpts & {
|
|
60
|
+
max?: number;
|
|
61
|
+
}): Promise<ChangelogResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Pure: filter the raw GitHub releases array to published, stable notes strictly
|
|
64
|
+
* newer than `current`, newest first, capped at `max`. Exported for tests.
|
|
65
|
+
*/
|
|
66
|
+
export declare function selectReleasesSince(raw: unknown[], current: string, max?: number): ReleaseNote[];
|
|
67
|
+
//# sourceMappingURL=update-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../../src/core/update-check.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAU9D;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2B5D;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvE;AAQD,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAajF;AAED,MAAM,WAAW,eAAe;IAC9B;iFAC6E;IAC7E,EAAE,EAAE,OAAO,CAAC;IACZ;kFAC8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,SAAS,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAClC,OAAO,CAAC,eAAe,CAAC,CAc1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,WAAW,EAAE,CAoB5F"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Update check: query the published "latest" botmux version and the GitHub
|
|
3
|
+
* release notes accumulated since the running version. Powers the Settings
|
|
4
|
+
* "version & update" card (manual update flow) — see dashboard.ts /api/update/*.
|
|
5
|
+
*
|
|
6
|
+
* Every network call is best-effort: timeout-bounded and returns null / [] on
|
|
7
|
+
* failure (offline, rate-limited, registry hiccup) so the card degrades to
|
|
8
|
+
* "couldn't check" rather than erroring. The version math is pure (unit tested).
|
|
9
|
+
*/
|
|
10
|
+
import { GITHUB_REPO } from './restart-report.js';
|
|
11
|
+
/** Parse "X.Y.Z" / "vX.Y.Z" / "X.Y.Z-canary.1". null on anything else. */
|
|
12
|
+
export function parseVersion(raw) {
|
|
13
|
+
if (typeof raw !== 'string')
|
|
14
|
+
return null;
|
|
15
|
+
const m = raw.trim().replace(/^v/i, '').match(/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/);
|
|
16
|
+
if (!m)
|
|
17
|
+
return null;
|
|
18
|
+
return {
|
|
19
|
+
major: Number(m[1]),
|
|
20
|
+
minor: Number(m[2]),
|
|
21
|
+
patch: Number(m[3]),
|
|
22
|
+
pre: m[4] ? m[4].split('.') : [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** A stable (non-prerelease) semver string. */
|
|
26
|
+
export function isStableVersion(raw) {
|
|
27
|
+
const v = parseVersion(raw);
|
|
28
|
+
return !!v && v.pre.length === 0;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Semver precedence: -1 if a<b, 0 if equal, 1 if a>b. An unparseable version
|
|
32
|
+
* sorts smallest (so garbage never masquerades as "newer"). A stable release
|
|
33
|
+
* outranks a pre-release of the same X.Y.Z, and pre-release identifiers compare
|
|
34
|
+
* per semver §11 (numeric < numeric numerically, alphanumeric lexically,
|
|
35
|
+
* numeric < alphanumeric, a longer set of identifiers > a shorter prefix).
|
|
36
|
+
*/
|
|
37
|
+
export function compareVersions(a, b) {
|
|
38
|
+
const pa = parseVersion(a);
|
|
39
|
+
const pb = parseVersion(b);
|
|
40
|
+
if (!pa && !pb)
|
|
41
|
+
return 0;
|
|
42
|
+
if (!pa)
|
|
43
|
+
return -1;
|
|
44
|
+
if (!pb)
|
|
45
|
+
return 1;
|
|
46
|
+
for (const k of ['major', 'minor', 'patch']) {
|
|
47
|
+
if (pa[k] !== pb[k])
|
|
48
|
+
return pa[k] < pb[k] ? -1 : 1;
|
|
49
|
+
}
|
|
50
|
+
// Equal core. A release with no pre-release ranks above one that has it.
|
|
51
|
+
if (pa.pre.length === 0 && pb.pre.length === 0)
|
|
52
|
+
return 0;
|
|
53
|
+
if (pa.pre.length === 0)
|
|
54
|
+
return 1;
|
|
55
|
+
if (pb.pre.length === 0)
|
|
56
|
+
return -1;
|
|
57
|
+
const n = Math.max(pa.pre.length, pb.pre.length);
|
|
58
|
+
for (let i = 0; i < n; i++) {
|
|
59
|
+
const x = pa.pre[i];
|
|
60
|
+
const y = pb.pre[i];
|
|
61
|
+
if (x === undefined)
|
|
62
|
+
return -1; // shorter identifier set is smaller
|
|
63
|
+
if (y === undefined)
|
|
64
|
+
return 1;
|
|
65
|
+
if (x === y)
|
|
66
|
+
continue;
|
|
67
|
+
const xn = /^\d+$/.test(x);
|
|
68
|
+
const yn = /^\d+$/.test(y);
|
|
69
|
+
if (xn && yn)
|
|
70
|
+
return Number(x) < Number(y) ? -1 : 1;
|
|
71
|
+
if (xn !== yn)
|
|
72
|
+
return xn ? -1 : 1; // numeric identifiers rank below alphanumeric
|
|
73
|
+
return x < y ? -1 : 1;
|
|
74
|
+
}
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
/** Is `latest` strictly newer than `current`? */
|
|
78
|
+
export function isNewerVersion(latest, current) {
|
|
79
|
+
return compareVersions(latest, current) > 0;
|
|
80
|
+
}
|
|
81
|
+
function vtag(v) {
|
|
82
|
+
return v.startsWith('v') ? v : `v${v}`;
|
|
83
|
+
}
|
|
84
|
+
const REGISTRY_LATEST_URL = 'https://registry.npmjs.org/botmux/latest';
|
|
85
|
+
/**
|
|
86
|
+
* The npm `latest` dist-tag version — the authoritative target of
|
|
87
|
+
* `npm install -g botmux@latest`. null on any failure (offline, non-200,
|
|
88
|
+
* malformed body, or a version string we can't parse).
|
|
89
|
+
*/
|
|
90
|
+
export async function fetchLatestVersion(opts) {
|
|
91
|
+
const fetchImpl = opts?.fetchImpl ?? fetch;
|
|
92
|
+
try {
|
|
93
|
+
const res = await fetchImpl(REGISTRY_LATEST_URL, {
|
|
94
|
+
headers: { Accept: 'application/json', 'User-Agent': 'botmux' },
|
|
95
|
+
signal: AbortSignal.timeout(opts?.timeoutMs ?? 8_000),
|
|
96
|
+
});
|
|
97
|
+
if (!res.ok)
|
|
98
|
+
return null;
|
|
99
|
+
const body = await res.json();
|
|
100
|
+
return typeof body?.version === 'string' && parseVersion(body.version) ? body.version : null;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Stable GitHub releases strictly newer than `current`, newest first, capped at
|
|
108
|
+
* `max`. Pre-releases (canary/beta/rc) are excluded — the card mirrors exactly
|
|
109
|
+
* what `@latest` would install. Returns `{ ok:false }` on any failure so the UI
|
|
110
|
+
* distinguishes "couldn't load" from a genuinely empty (already-latest) list.
|
|
111
|
+
*/
|
|
112
|
+
export async function fetchReleasesSince(current, opts) {
|
|
113
|
+
const fetchImpl = opts?.fetchImpl ?? fetch;
|
|
114
|
+
try {
|
|
115
|
+
const res = await fetchImpl(`https://api.github.com/repos/${GITHUB_REPO}/releases?per_page=100`, {
|
|
116
|
+
headers: { Accept: 'application/vnd.github+json', 'User-Agent': 'botmux' },
|
|
117
|
+
signal: AbortSignal.timeout(opts?.timeoutMs ?? 8_000),
|
|
118
|
+
});
|
|
119
|
+
if (!res.ok)
|
|
120
|
+
return { ok: false, rateLimited: res.status === 403, releases: [] };
|
|
121
|
+
const raw = await res.json();
|
|
122
|
+
if (!Array.isArray(raw))
|
|
123
|
+
return { ok: false, releases: [] };
|
|
124
|
+
return { ok: true, releases: selectReleasesSince(raw, current, opts?.max ?? 30) };
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return { ok: false, releases: [] };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Pure: filter the raw GitHub releases array to published, stable notes strictly
|
|
132
|
+
* newer than `current`, newest first, capped at `max`. Exported for tests.
|
|
133
|
+
*/
|
|
134
|
+
export function selectReleasesSince(raw, current, max = 30) {
|
|
135
|
+
const notes = [];
|
|
136
|
+
for (const item of raw) {
|
|
137
|
+
const r = item;
|
|
138
|
+
if (!r || typeof r !== 'object')
|
|
139
|
+
continue;
|
|
140
|
+
if (r.draft === true || r.prerelease === true)
|
|
141
|
+
continue;
|
|
142
|
+
const tag = typeof r.tag_name === 'string' ? r.tag_name : '';
|
|
143
|
+
const version = tag.replace(/^v/i, '');
|
|
144
|
+
if (!isStableVersion(version))
|
|
145
|
+
continue;
|
|
146
|
+
if (compareVersions(version, current) <= 0)
|
|
147
|
+
continue;
|
|
148
|
+
notes.push({
|
|
149
|
+
version,
|
|
150
|
+
name: typeof r.name === 'string' && r.name.trim() ? r.name : tag,
|
|
151
|
+
body: typeof r.body === 'string' ? r.body : '',
|
|
152
|
+
url: typeof r.html_url === 'string' ? r.html_url : `https://github.com/${GITHUB_REPO}/releases/tag/${vtag(version)}`,
|
|
153
|
+
publishedAt: typeof r.published_at === 'string' ? r.published_at : null,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
notes.sort((a, b) => compareVersions(b.version, a.version));
|
|
157
|
+
return notes.slice(0, max);
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/core/update-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
|
package/dist/core/worker-pool.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { fork, execSync } from 'node:child_process';
|
|
6
6
|
import { join, dirname } from 'node:path';
|
|
7
7
|
import { homedir } from 'node:os';
|
|
8
|
-
import { readFileSync, readdirSync, mkdirSync, existsSync, realpathSync } from 'node:fs';
|
|
8
|
+
import { readFileSync, readdirSync, mkdirSync, existsSync, realpathSync, unlinkSync } from 'node:fs';
|
|
9
9
|
import { atomicWriteFileSync } from '../utils/atomic-write.js';
|
|
10
10
|
import { fileURLToPath } from 'node:url';
|
|
11
11
|
import { ensureSkills, ensureAskSkill, ensurePluginSkills, removeGlobalBotmuxSkills } from '../skills/installer.js';
|
|
@@ -944,6 +944,7 @@ export function killWorker(ds) {
|
|
|
944
944
|
function destroyOrphanedBackingSession(ds) {
|
|
945
945
|
if (ds.initConfig?.adoptMode || ds.adoptedFrom)
|
|
946
946
|
return;
|
|
947
|
+
reclaimParkedCrashDiagnostic(ds);
|
|
947
948
|
const backendType = getSessionPersistentBackendType(ds);
|
|
948
949
|
if (!backendType)
|
|
949
950
|
return;
|
|
@@ -955,6 +956,26 @@ function destroyOrphanedBackingSession(ds) {
|
|
|
955
956
|
logger.warn(`[${tag(ds)}] killWorker: failed to destroy orphaned ${backendType} backing session: ${err}`);
|
|
956
957
|
}
|
|
957
958
|
}
|
|
959
|
+
/**
|
|
960
|
+
* Reclaim a session's parked crash-diagnostic shell (`bmx-diag-<sid>`) and its
|
|
961
|
+
* captured `.ansi` file. The worker normally tears these down itself (killCli /
|
|
962
|
+
* suspend / next-message retry), but it CAN'T when it is hard-killed
|
|
963
|
+
* (OOM/SIGKILL) while parked — then the daemon must do it, on the next refork
|
|
964
|
+
* (forkWorker) or on close (destroyOrphanedBackingSession). Both ops are no-ops
|
|
965
|
+
* when absent, so this is safe to call unconditionally for tmux sessions.
|
|
966
|
+
*/
|
|
967
|
+
function reclaimParkedCrashDiagnostic(ds) {
|
|
968
|
+
if (getSessionPersistentBackendType(ds) !== 'tmux')
|
|
969
|
+
return;
|
|
970
|
+
try {
|
|
971
|
+
TmuxBackend.killSession(TmuxBackend.diagnosticSessionName(ds.session.sessionId));
|
|
972
|
+
}
|
|
973
|
+
catch { /* benign */ }
|
|
974
|
+
try {
|
|
975
|
+
unlinkSync(join(config.session.dataDir, 'crash-diagnostics', `${ds.session.sessionId}.ansi`));
|
|
976
|
+
}
|
|
977
|
+
catch { /* absent — benign */ }
|
|
978
|
+
}
|
|
958
979
|
export function suspendWorker(ds, reason = 'suspended_idle') {
|
|
959
980
|
if (!ds.worker || ds.worker.killed)
|
|
960
981
|
return false;
|
|
@@ -1348,6 +1369,14 @@ export function forkWorker(ds, prompt, resume = false) {
|
|
|
1348
1369
|
const cb = requireCallbacks();
|
|
1349
1370
|
const bot = getBot(ds.larkAppId);
|
|
1350
1371
|
const botCfg = bot.config;
|
|
1372
|
+
// 不变式:一旦真正起 CLI,会话就不再是「待办池(queued)」parked 态。无论由哪条
|
|
1373
|
+
// 路径触发(激活按钮 / 拖到进行中 / 群里来消息抢先起会话),都在此清掉 queued
|
|
1374
|
+
// 标记并落盘——否则重启后会被当 parked 恢复成 hasHistory:false 而丢掉真历史。
|
|
1375
|
+
if (ds.session.queued) {
|
|
1376
|
+
ds.session.queued = false;
|
|
1377
|
+
ds.session.queuedPrompt = undefined;
|
|
1378
|
+
sessionStore.updateSession(ds.session);
|
|
1379
|
+
}
|
|
1351
1380
|
// worker.js lives in the same directory as daemon.js (src/)
|
|
1352
1381
|
const workerPath = join(__dirname, '..', 'worker.js');
|
|
1353
1382
|
const t = tag(ds);
|
|
@@ -1406,6 +1435,12 @@ export function forkWorker(ds, prompt, resume = false) {
|
|
|
1406
1435
|
ds.session.suspendedColdResume = undefined;
|
|
1407
1436
|
sessionStore.updateSession(ds.session);
|
|
1408
1437
|
}
|
|
1438
|
+
// Re-establishing a worker also reclaims any crash-diagnostic shell a prior
|
|
1439
|
+
// worker left parked but couldn't clean (hard-killed while parked, daemon
|
|
1440
|
+
// still alive → next message reforks here). The fresh CLI spawns under the
|
|
1441
|
+
// real bmx-<sid>; without this, bmx-diag-<sid> + its .ansi file would leak.
|
|
1442
|
+
if (!ds.initConfig?.adoptMode && !ds.adoptedFrom)
|
|
1443
|
+
reclaimParkedCrashDiagnostic(ds);
|
|
1409
1444
|
ensureCliEnv(botCfg.cliId, botCfg.cliPathOverride);
|
|
1410
1445
|
// Claude Code blocks on the interactive folder-trust dialog the first time
|
|
1411
1446
|
// it runs in an untrusted workingDir; pre-accept it so the spawn doesn't hang.
|
|
@@ -1500,6 +1535,10 @@ export function forkWorker(ds, prompt, resume = false) {
|
|
|
1500
1535
|
// settings like `/effort ultracode` are re-established. Adopt sessions are
|
|
1501
1536
|
// observed, not driven — forkAdoptWorker intentionally omits this.
|
|
1502
1537
|
startupCommands: botCfg.startupCommands,
|
|
1538
|
+
// Per-bot env (bots.json `env`) — injected into the CLI process only (e.g.
|
|
1539
|
+
// ANTHROPIC_BASE_URL/AUTH_TOKEN for a GLM/3rd-party bot). Adopt sessions are
|
|
1540
|
+
// observed, not driven, so forkAdoptWorker intentionally omits it.
|
|
1541
|
+
env: botCfg.env,
|
|
1503
1542
|
// Use the decision recorded on the session (above), NOT the live bot flag, so
|
|
1504
1543
|
// historical sessions never get retroactively sandboxed on restart.
|
|
1505
1544
|
sandbox: ds.session.sandbox === true,
|
|
@@ -1723,6 +1762,17 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
1723
1762
|
}
|
|
1724
1763
|
case 'prompt_ready': {
|
|
1725
1764
|
logger.info(`[${t}] ${getCliDisplayName(effectiveCliId)} is ready for input`);
|
|
1765
|
+
// A live prompt means a (re)spawn reached a working CLI — clear the lazy
|
|
1766
|
+
// cold-resume marker set when we parked a crash diagnostic shell. The
|
|
1767
|
+
// common retry path respawns IN-PLACE (worker.ts case 'message'), not via
|
|
1768
|
+
// forkWorker, so without this the stale marker survives in the store and a
|
|
1769
|
+
// LATER genuine zombie (bmx-<sid> actually gone) would be kept active by
|
|
1770
|
+
// restore instead of being closed. If retry never reaches a prompt the
|
|
1771
|
+
// marker persists, preserving the cross-daemon-restart lazy-retry intent.
|
|
1772
|
+
if (ds.session.suspendedColdResume) {
|
|
1773
|
+
ds.session.suspendedColdResume = undefined;
|
|
1774
|
+
sessionStore.updateSession(ds.session);
|
|
1775
|
+
}
|
|
1726
1776
|
if (ds.pendingRawInput && ds.worker && !ds.worker.killed) {
|
|
1727
1777
|
const rawInput = ds.pendingRawInput;
|
|
1728
1778
|
ds.pendingRawInput = undefined;
|
|
@@ -1972,6 +2022,7 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
1972
2022
|
restartCounts.set(key, rc);
|
|
1973
2023
|
if (rc.count > 3) {
|
|
1974
2024
|
logger.warn(`[${t}] ${getCliDisplayName(effectiveCliId)} crashed ${rc.count} times in 1 min, not auto-restarting`);
|
|
2025
|
+
const keepDiagnosticWorker = !!msg.canParkDiagnostic && !!ds.worker && !ds.worker.killed;
|
|
1975
2026
|
// Freeze the last streaming card so it doesn't stay at "working" forever
|
|
1976
2027
|
if (ds.streamCardId && ds.workerPort) {
|
|
1977
2028
|
const readUrl = buildTerminalUrl(ds);
|
|
@@ -1979,11 +2030,38 @@ function setupWorkerHandlers(ds, worker) {
|
|
|
1979
2030
|
const frozenCard = buildStreamingCard(ds.session.sessionId, sessionAnchorId(ds), readUrl, turnTitle, ds.lastScreenContent ?? '', 'idle', effectiveCliId, ds.displayMode ?? 'hidden', ds.streamCardNonce, ds.currentImageKey, isAdopt, showTakeover, loc, undefined, writableTerminalLinkFor(ds));
|
|
1980
2031
|
scheduleCardPatch(ds, frozenCard);
|
|
1981
2032
|
}
|
|
1982
|
-
|
|
1983
|
-
|
|
2033
|
+
if (keepDiagnosticWorker) {
|
|
2034
|
+
// Ask the worker to park a lightweight tmux diagnostic shell under
|
|
2035
|
+
// bmx-diag-<sid> NOW (deferred from its exit so transient restarts
|
|
2036
|
+
// don't pay for it). Keep its web server alive so the existing
|
|
2037
|
+
// terminal URL can show the startup failure; the next user message
|
|
2038
|
+
// tells that same worker to destroy the diagnostic shell and retry.
|
|
2039
|
+
ds.worker.send({ type: 'park_diagnostic' });
|
|
2040
|
+
restartCounts.delete(key);
|
|
2041
|
+
ds.lastScreenStatus = 'idle';
|
|
2042
|
+
// Survive a daemon restart: mark this as a lazy cold-resume so
|
|
2043
|
+
// restore keeps the session active (re-spawns the CLI on the next
|
|
2044
|
+
// message) instead of zombie-closing it when the real bmx-<sid> is
|
|
2045
|
+
// found missing. ds.hasHistory is already true (set at the top of
|
|
2046
|
+
// claude_exit); forkWorker clears suspendedColdResume on re-spawn.
|
|
2047
|
+
ds.session.suspendedColdResume = true;
|
|
2048
|
+
sessionStore.updateSession(ds.session);
|
|
2049
|
+
}
|
|
2050
|
+
else {
|
|
2051
|
+
// Non-tmux or failed diagnostic parking: keep the historical
|
|
2052
|
+
// cleanup path so we do not leave an unusable worker around.
|
|
2053
|
+
killWorker(ds);
|
|
2054
|
+
}
|
|
1984
2055
|
const cliName = getCliDisplayName(effectiveCliId);
|
|
2056
|
+
const parts = [tr('worker.crash_loop_stopped', { cliName, count: rc.count }, loc)];
|
|
2057
|
+
if (keepDiagnosticWorker) {
|
|
2058
|
+
parts.push(tr('worker.crash_diagnostic_terminal', undefined, loc));
|
|
2059
|
+
}
|
|
2060
|
+
if (msg.logTail?.trim()) {
|
|
2061
|
+
parts.push(`${tr('worker.crash_recent_output', undefined, loc)}\n${msg.logTail.trim()}`);
|
|
2062
|
+
}
|
|
1985
2063
|
try {
|
|
1986
|
-
await scopedReply(
|
|
2064
|
+
await scopedReply(parts.join('\n\n'), 'text', undefined);
|
|
1987
2065
|
}
|
|
1988
2066
|
catch (replyErr) {
|
|
1989
2067
|
if (replyErr instanceof MessageWithdrawnError) {
|