botmux 2.82.3 → 2.84.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.
Files changed (110) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  4. package/dist/adapters/cli/claude-code.js +2 -42
  5. package/dist/adapters/cli/claude-code.js.map +1 -1
  6. package/dist/adapters/cli/mir.d.ts +4 -0
  7. package/dist/adapters/cli/mir.d.ts.map +1 -0
  8. package/dist/adapters/cli/mir.js +81 -0
  9. package/dist/adapters/cli/mir.js.map +1 -0
  10. package/dist/adapters/cli/registry.d.ts +2 -1
  11. package/dist/adapters/cli/registry.d.ts.map +1 -1
  12. package/dist/adapters/cli/registry.js +3 -1
  13. package/dist/adapters/cli/registry.js.map +1 -1
  14. package/dist/adapters/cli/shared-hints.d.ts +17 -0
  15. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  16. package/dist/adapters/cli/shared-hints.js +56 -0
  17. package/dist/adapters/cli/shared-hints.js.map +1 -1
  18. package/dist/adapters/cli/types.d.ts +1 -1
  19. package/dist/adapters/cli/types.d.ts.map +1 -1
  20. package/dist/autostart.d.ts.map +1 -1
  21. package/dist/autostart.js +161 -2
  22. package/dist/autostart.js.map +1 -1
  23. package/dist/cli/pm2-command.d.ts +1 -0
  24. package/dist/cli/pm2-command.d.ts.map +1 -1
  25. package/dist/cli/pm2-command.js +12 -0
  26. package/dist/cli/pm2-command.js.map +1 -1
  27. package/dist/cli.d.ts.map +1 -1
  28. package/dist/cli.js +55 -38
  29. package/dist/cli.js.map +1 -1
  30. package/dist/core/botmux-wrapper.d.ts +23 -0
  31. package/dist/core/botmux-wrapper.d.ts.map +1 -0
  32. package/dist/core/botmux-wrapper.js +39 -0
  33. package/dist/core/botmux-wrapper.js.map +1 -0
  34. package/dist/core/command-handler.d.ts.map +1 -1
  35. package/dist/core/command-handler.js +12 -4
  36. package/dist/core/command-handler.js.map +1 -1
  37. package/dist/core/dashboard-ipc-server.d.ts +1 -0
  38. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  39. package/dist/core/dashboard-ipc-server.js +4 -0
  40. package/dist/core/dashboard-ipc-server.js.map +1 -1
  41. package/dist/core/scheduler.d.ts +25 -1
  42. package/dist/core/scheduler.d.ts.map +1 -1
  43. package/dist/core/scheduler.js +43 -0
  44. package/dist/core/scheduler.js.map +1 -1
  45. package/dist/core/session-manager.d.ts.map +1 -1
  46. package/dist/core/session-manager.js +13 -2
  47. package/dist/core/session-manager.js.map +1 -1
  48. package/dist/core/worker-pool.d.ts.map +1 -1
  49. package/dist/core/worker-pool.js +20 -8
  50. package/dist/core/worker-pool.js.map +1 -1
  51. package/dist/daemon.d.ts.map +1 -1
  52. package/dist/daemon.js +17 -13
  53. package/dist/daemon.js.map +1 -1
  54. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  55. package/dist/dashboard/web/i18n.js +12 -0
  56. package/dist/dashboard/web/i18n.js.map +1 -1
  57. package/dist/dashboard/web/schedules.d.ts.map +1 -1
  58. package/dist/dashboard/web/schedules.js +6 -2
  59. package/dist/dashboard/web/schedules.js.map +1 -1
  60. package/dist/dashboard/web/workflows.js +1 -1
  61. package/dist/dashboard/web/workflows.js.map +1 -1
  62. package/dist/dashboard-web/app.js +227 -225
  63. package/dist/dashboard.js +9 -6
  64. package/dist/dashboard.js.map +1 -1
  65. package/dist/i18n/en.d.ts.map +1 -1
  66. package/dist/i18n/en.js +2 -0
  67. package/dist/i18n/en.js.map +1 -1
  68. package/dist/i18n/zh.d.ts.map +1 -1
  69. package/dist/i18n/zh.js +2 -0
  70. package/dist/i18n/zh.js.map +1 -1
  71. package/dist/im/lark/card-builder.d.ts.map +1 -1
  72. package/dist/im/lark/card-builder.js +1 -0
  73. package/dist/im/lark/card-builder.js.map +1 -1
  74. package/dist/mir-local-runtime.d.ts +20 -0
  75. package/dist/mir-local-runtime.d.ts.map +1 -0
  76. package/dist/mir-local-runtime.js +168 -0
  77. package/dist/mir-local-runtime.js.map +1 -0
  78. package/dist/mir-runner.d.ts +3 -0
  79. package/dist/mir-runner.d.ts.map +1 -0
  80. package/dist/mir-runner.js +482 -0
  81. package/dist/mir-runner.js.map +1 -0
  82. package/dist/services/schedule-store.d.ts +2 -2
  83. package/dist/services/schedule-store.d.ts.map +1 -1
  84. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  85. package/dist/setup/bot-config-editor.js +2 -0
  86. package/dist/setup/bot-config-editor.js.map +1 -1
  87. package/dist/setup/cli-selection.d.ts.map +1 -1
  88. package/dist/setup/cli-selection.js +74 -6
  89. package/dist/setup/cli-selection.js.map +1 -1
  90. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  91. package/dist/setup/ensure-tmux.js +20 -3
  92. package/dist/setup/ensure-tmux.js.map +1 -1
  93. package/dist/skills/definitions.d.ts.map +1 -1
  94. package/dist/skills/definitions.js +2 -1
  95. package/dist/skills/definitions.js.map +1 -1
  96. package/dist/types.d.ts +6 -2
  97. package/dist/types.d.ts.map +1 -1
  98. package/dist/worker.js +49 -31
  99. package/dist/worker.js.map +1 -1
  100. package/dist/workflows/attempt-resume.d.ts.map +1 -1
  101. package/dist/workflows/attempt-resume.js +3 -2
  102. package/dist/workflows/attempt-resume.js.map +1 -1
  103. package/dist/workflows/daemon-spawn.d.ts.map +1 -1
  104. package/dist/workflows/daemon-spawn.js +1 -0
  105. package/dist/workflows/daemon-spawn.js.map +1 -1
  106. package/dist/workflows/hostExecutors/botmux-schedule.d.ts +1 -1
  107. package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -1
  108. package/dist/workflows/hostExecutors/botmux-schedule.js +1 -1
  109. package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -1
  110. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Prepend the wrapper bin dir to a PATH string using the platform-correct
3
+ * separator (':' on POSIX, ';' on Windows). Hardcoding ':' silently breaks the
4
+ * inherited PATH on Windows, so route every PATH prepend through here.
5
+ */
6
+ export declare function prependBotmuxBin(binDir: string, currentPath: string | undefined, delim?: string): string;
7
+ export interface BotmuxWrapperFile {
8
+ /** Filename within ~/.botmux/bin. */
9
+ name: string;
10
+ content: string;
11
+ /** chmod mode (ignored on Windows). */
12
+ mode: number;
13
+ }
14
+ /**
15
+ * The wrapper files to materialize in ~/.botmux/bin. Always a POSIX `sh`
16
+ * wrapper (used by macOS/Linux and Git Bash/WSL); on Windows additionally a
17
+ * `botmux.cmd` so native shells (cmd.exe / PowerShell) resolve `botmux` —
18
+ * without it `botmux send` from a Windows-native CLI session fails. The `.cmd`
19
+ * pins the daemon's current Node binary so it never depends on a PATH-resolved
20
+ * `node`. Both wrappers point at THIS daemon's dist/cli.js.
21
+ */
22
+ export declare function botmuxWrapperFiles(cliScript: string, nodePath: string, platform?: NodeJS.Platform): BotmuxWrapperFile[];
23
+ //# sourceMappingURL=botmux-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botmux-wrapper.d.ts","sourceRoot":"","sources":["../../src/core/botmux-wrapper.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,KAAK,GAAE,MAAkB,GACxB,MAAM,CAER;AAED,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,iBAAiB,EAAE,CAYrB"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Helpers for the `~/.botmux/bin` wrapper that lets CLI sessions call
3
+ * `botmux send` / `botmux schedule` without a global npm install.
4
+ *
5
+ * Split out from worker-pool / attempt-resume / daemon so the
6
+ * platform-sensitive bits (PATH delimiter, Windows `.cmd` wrapper) live in one
7
+ * pure, unit-tested place instead of being duplicated as inline string concat.
8
+ */
9
+ import { delimiter } from 'node:path';
10
+ /**
11
+ * Prepend the wrapper bin dir to a PATH string using the platform-correct
12
+ * separator (':' on POSIX, ';' on Windows). Hardcoding ':' silently breaks the
13
+ * inherited PATH on Windows, so route every PATH prepend through here.
14
+ */
15
+ export function prependBotmuxBin(binDir, currentPath, delim = delimiter) {
16
+ return `${binDir}${delim}${currentPath ?? ''}`;
17
+ }
18
+ /**
19
+ * The wrapper files to materialize in ~/.botmux/bin. Always a POSIX `sh`
20
+ * wrapper (used by macOS/Linux and Git Bash/WSL); on Windows additionally a
21
+ * `botmux.cmd` so native shells (cmd.exe / PowerShell) resolve `botmux` —
22
+ * without it `botmux send` from a Windows-native CLI session fails. The `.cmd`
23
+ * pins the daemon's current Node binary so it never depends on a PATH-resolved
24
+ * `node`. Both wrappers point at THIS daemon's dist/cli.js.
25
+ */
26
+ export function botmuxWrapperFiles(cliScript, nodePath, platform = process.platform) {
27
+ const files = [
28
+ { name: 'botmux', content: `#!/bin/sh\nexec node "${cliScript}" "$@"\n`, mode: 0o755 },
29
+ ];
30
+ if (platform === 'win32') {
31
+ files.push({
32
+ name: 'botmux.cmd',
33
+ content: `@echo off\r\n"${nodePath}" "${cliScript}" %*\r\n`,
34
+ mode: 0o755,
35
+ });
36
+ }
37
+ return files;
38
+ }
39
+ //# sourceMappingURL=botmux-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"botmux-wrapper.js","sourceRoot":"","sources":["../../src/core/botmux-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,WAA+B,EAC/B,QAAgB,SAAS;IAEzB,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,IAAI,EAAE,EAAE,CAAC;AACjD,CAAC;AAUD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,QAAgB,EAChB,WAA4B,OAAO,CAAC,QAAQ;IAE5C,MAAM,KAAK,GAAwB;QACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,SAAS,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;KACvF,CAAC;IACF,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,iBAAiB,QAAQ,MAAM,SAAS,UAAU;YAC3D,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
@@ -464,28 +464,36 @@ async function handleScheduleCommand(args, rootId, chatId, deps, larkAppId) {
464
464
  const ds = larkAppId ? activeSessions.get(sessionKey(rootId, larkAppId)) : undefined;
465
465
  const workingDir = ds?.workingDir ?? (ds?.larkAppId ? getBot(ds.larkAppId).config.workingDir ?? '~' : getAllBots()[0]?.config.workingDir ?? '~');
466
466
  const taskScope = ds?.scope === 'chat' ? 'chat' : 'thread';
467
+ // "新话题" keyword → every fire opens a brand-new topic in a fresh session.
468
+ const { deliver, prompt: schedPrompt } = scheduler.extractDeliveryMode(parsed.prompt);
469
+ const schedName = deliver === 'new-topic'
470
+ ? (schedPrompt.length > 20 ? schedPrompt.slice(0, 20) + '...' : schedPrompt)
471
+ : parsed.name;
467
472
  const task = scheduler.addTask({
468
- name: parsed.name,
473
+ name: schedName,
469
474
  schedule: trimmed,
470
475
  parsed: parsed.parsed,
471
- prompt: parsed.prompt,
476
+ prompt: schedPrompt,
472
477
  workingDir,
473
478
  chatId,
474
479
  rootMessageId: taskScope === 'thread' ? rootId : undefined,
475
480
  scope: taskScope,
476
481
  chatType: ds?.chatType === 'p2p' ? 'p2p' : 'topic_group',
477
482
  larkAppId,
483
+ deliver,
478
484
  });
479
485
  const next = scheduler.getNextRun(task.id);
480
486
  const nextStr = next ? next.toLocaleString(timeLocale, { timeZone }) : 'N/A';
481
- await sessionReply(rootId, t('schedule.created', {
487
+ const createdMsg = t('schedule.created', {
482
488
  id: task.id,
483
489
  name: task.name,
484
490
  rule: parsed.parsed.display,
485
491
  prompt: task.prompt,
486
492
  dir: expandHome(workingDir),
487
493
  next: nextStr,
488
- }, loc));
494
+ }, loc);
495
+ const deliverNote = deliver === 'new-topic' ? '\n' + t('schedule.deliver_new_topic', undefined, loc) : '';
496
+ await sessionReply(rootId, createdMsg + deliverNote);
489
497
  return;
490
498
  }
491
499
  // Unrecognized format