botmux 2.2.6 → 2.3.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 (126) hide show
  1. package/README.en.md +63 -13
  2. package/README.md +52 -14
  3. package/dist/adapters/cli/aiden.d.ts.map +1 -1
  4. package/dist/adapters/cli/aiden.js +0 -40
  5. package/dist/adapters/cli/aiden.js.map +1 -1
  6. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  7. package/dist/adapters/cli/claude-code.js +27 -63
  8. package/dist/adapters/cli/claude-code.js.map +1 -1
  9. package/dist/adapters/cli/coco.d.ts.map +1 -1
  10. package/dist/adapters/cli/coco.js +0 -33
  11. package/dist/adapters/cli/coco.js.map +1 -1
  12. package/dist/adapters/cli/codex.d.ts.map +1 -1
  13. package/dist/adapters/cli/codex.js +0 -27
  14. package/dist/adapters/cli/codex.js.map +1 -1
  15. package/dist/adapters/cli/gemini.d.ts.map +1 -1
  16. package/dist/adapters/cli/gemini.js +1 -29
  17. package/dist/adapters/cli/gemini.js.map +1 -1
  18. package/dist/adapters/cli/opencode.d.ts.map +1 -1
  19. package/dist/adapters/cli/opencode.js +1 -44
  20. package/dist/adapters/cli/opencode.js.map +1 -1
  21. package/dist/adapters/cli/types.d.ts +15 -8
  22. package/dist/adapters/cli/types.d.ts.map +1 -1
  23. package/dist/cli.js +737 -16
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts +16 -0
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +30 -0
  28. package/dist/config.js.map +1 -1
  29. package/dist/core/command-handler.d.ts.map +1 -1
  30. package/dist/core/command-handler.js +8 -4
  31. package/dist/core/command-handler.js.map +1 -1
  32. package/dist/core/scheduler.d.ts +38 -16
  33. package/dist/core/scheduler.d.ts.map +1 -1
  34. package/dist/core/scheduler.js +335 -149
  35. package/dist/core/scheduler.js.map +1 -1
  36. package/dist/core/session-manager.d.ts +13 -2
  37. package/dist/core/session-manager.d.ts.map +1 -1
  38. package/dist/core/session-manager.js +128 -25
  39. package/dist/core/session-manager.js.map +1 -1
  40. package/dist/core/types.d.ts +26 -4
  41. package/dist/core/types.d.ts.map +1 -1
  42. package/dist/core/types.js +6 -0
  43. package/dist/core/types.js.map +1 -1
  44. package/dist/core/worker-pool.d.ts +15 -3
  45. package/dist/core/worker-pool.d.ts.map +1 -1
  46. package/dist/core/worker-pool.js +233 -31
  47. package/dist/core/worker-pool.js.map +1 -1
  48. package/dist/daemon.d.ts.map +1 -1
  49. package/dist/daemon.js +71 -18
  50. package/dist/daemon.js.map +1 -1
  51. package/dist/im/lark/card-builder.d.ts +29 -1
  52. package/dist/im/lark/card-builder.d.ts.map +1 -1
  53. package/dist/im/lark/card-builder.js +266 -56
  54. package/dist/im/lark/card-builder.js.map +1 -1
  55. package/dist/im/lark/card-handler.d.ts +1 -0
  56. package/dist/im/lark/card-handler.d.ts.map +1 -1
  57. package/dist/im/lark/card-handler.js +200 -40
  58. package/dist/im/lark/card-handler.js.map +1 -1
  59. package/dist/im/lark/client.d.ts.map +1 -1
  60. package/dist/im/lark/client.js +4 -3
  61. package/dist/im/lark/client.js.map +1 -1
  62. package/dist/im/lark/message-parser.d.ts.map +1 -1
  63. package/dist/im/lark/message-parser.js +44 -6
  64. package/dist/im/lark/message-parser.js.map +1 -1
  65. package/dist/services/schedule-store.d.ts +20 -3
  66. package/dist/services/schedule-store.d.ts.map +1 -1
  67. package/dist/services/schedule-store.js +140 -16
  68. package/dist/services/schedule-store.js.map +1 -1
  69. package/dist/skills/definitions.d.ts +17 -0
  70. package/dist/skills/definitions.d.ts.map +1 -0
  71. package/dist/skills/definitions.js +254 -0
  72. package/dist/skills/definitions.js.map +1 -0
  73. package/dist/skills/installer.d.ts +9 -0
  74. package/dist/skills/installer.d.ts.map +1 -0
  75. package/dist/skills/installer.js +42 -0
  76. package/dist/skills/installer.js.map +1 -0
  77. package/dist/types.d.ts +80 -7
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/types.js +1 -5
  80. package/dist/types.js.map +1 -1
  81. package/dist/utils/lark-upload.d.ts +2 -0
  82. package/dist/utils/lark-upload.d.ts.map +1 -0
  83. package/dist/utils/lark-upload.js +27 -0
  84. package/dist/utils/lark-upload.js.map +1 -0
  85. package/dist/utils/screen-analyzer.d.ts +67 -0
  86. package/dist/utils/screen-analyzer.d.ts.map +1 -0
  87. package/dist/utils/screen-analyzer.js +256 -0
  88. package/dist/utils/screen-analyzer.js.map +1 -0
  89. package/dist/utils/screenshot-renderer.d.ts +11 -0
  90. package/dist/utils/screenshot-renderer.d.ts.map +1 -0
  91. package/dist/utils/screenshot-renderer.js +225 -0
  92. package/dist/utils/screenshot-renderer.js.map +1 -0
  93. package/dist/utils/terminal-renderer.d.ts +33 -0
  94. package/dist/utils/terminal-renderer.d.ts.map +1 -1
  95. package/dist/utils/terminal-renderer.js +34 -1
  96. package/dist/utils/terminal-renderer.js.map +1 -1
  97. package/dist/utils/user-token.d.ts.map +1 -1
  98. package/dist/utils/user-token.js +7 -11
  99. package/dist/utils/user-token.js.map +1 -1
  100. package/dist/worker.js +286 -15
  101. package/dist/worker.js.map +1 -1
  102. package/package.json +2 -5
  103. package/dist/index.d.ts +0 -3
  104. package/dist/index.d.ts.map +0 -1
  105. package/dist/index.js +0 -16
  106. package/dist/index.js.map +0 -1
  107. package/dist/server.d.ts +0 -3
  108. package/dist/server.d.ts.map +0 -1
  109. package/dist/server.js +0 -115
  110. package/dist/server.js.map +0 -1
  111. package/dist/tools/get-thread-messages.d.ts +0 -26
  112. package/dist/tools/get-thread-messages.d.ts.map +0 -1
  113. package/dist/tools/get-thread-messages.js +0 -35
  114. package/dist/tools/get-thread-messages.js.map +0 -1
  115. package/dist/tools/index.d.ts +0 -9
  116. package/dist/tools/index.d.ts.map +0 -1
  117. package/dist/tools/index.js +0 -10
  118. package/dist/tools/index.js.map +0 -1
  119. package/dist/tools/list-bots.d.ts +0 -40
  120. package/dist/tools/list-bots.d.ts.map +0 -1
  121. package/dist/tools/list-bots.js +0 -74
  122. package/dist/tools/list-bots.js.map +0 -1
  123. package/dist/tools/send-to-thread.d.ts +0 -46
  124. package/dist/tools/send-to-thread.d.ts.map +0 -1
  125. package/dist/tools/send-to-thread.js +0 -242
  126. package/dist/tools/send-to-thread.js.map +0 -1
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Renders an xterm-headless buffer to a PNG buffer using @napi-rs/canvas.
3
+ * ANSI 256-color palette + RGB true color, bold weight, inverse, default fg/bg.
4
+ * Tokyo Night theme (matches src/worker.ts web terminal).
5
+ */
6
+ import { createCanvas, GlobalFonts } from '@napi-rs/canvas';
7
+ import { existsSync } from 'node:fs';
8
+ import { dirname, join } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ // ─── Font registration ──────────────────────────────────────────────────────
11
+ // @napi-rs/canvas does NOT auto-discover system fonts on Linux; we must
12
+ // explicitly register a path. We build an ordered fallback chain so missing
13
+ // glyphs in the primary font (e.g. emoji, dingbats) get picked up by a later
14
+ // font in the chain (skia walks the family list per glyph).
15
+ const fontFamilyChain = [];
16
+ let fontInitialized = false;
17
+ function tryRegister(path, alias) {
18
+ if (!existsSync(path))
19
+ return false;
20
+ try {
21
+ GlobalFonts.registerFromPath(path, alias);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ function ensureFontRegistered() {
29
+ if (fontInitialized)
30
+ return;
31
+ fontInitialized = true;
32
+ // 1. Project-bundled font(s) under assets/fonts/ — drop a TTF here to override defaults.
33
+ const projectFontDir = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'assets', 'fonts');
34
+ for (const fname of ['BotmuxMono-Regular.ttf', 'BotmuxMono.ttf', 'BotmuxMono-Regular.otf']) {
35
+ if (tryRegister(join(projectFontDir, fname), 'BotmuxMono')) {
36
+ tryRegister(join(projectFontDir, 'BotmuxMono-Bold.ttf'), 'BotmuxMono');
37
+ fontFamilyChain.push('BotmuxMono');
38
+ break;
39
+ }
40
+ }
41
+ // 2. CJK monospace — primary for Latin + Han glyphs.
42
+ const cjkRegular = [
43
+ '/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc',
44
+ '/usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc',
45
+ '/usr/share/fonts/google-noto-cjk/NotoSansCJK-Regular.ttc',
46
+ '/usr/share/fonts/opentype/noto/NotoSansMonoCJK-Regular.ttc',
47
+ ];
48
+ const cjkBold = [
49
+ '/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc',
50
+ '/usr/share/fonts/noto-cjk/NotoSansCJK-Bold.ttc',
51
+ '/usr/share/fonts/google-noto-cjk/NotoSansCJK-Bold.ttc',
52
+ '/usr/share/fonts/opentype/noto/NotoSansMonoCJK-Bold.ttc',
53
+ ];
54
+ for (const p of cjkRegular) {
55
+ if (tryRegister(p)) {
56
+ for (const bp of cjkBold)
57
+ if (tryRegister(bp))
58
+ break;
59
+ fontFamilyChain.push('Noto Sans Mono CJK SC');
60
+ break;
61
+ }
62
+ }
63
+ // 3. Latin monospace — DejaVu/Liberation cover dingbats (❯, ✓, etc.) and
64
+ // most box-drawing/geometric symbols not in CJK font.
65
+ const latinCandidates = [
66
+ ['/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf', 'DejaVu Sans Mono'],
67
+ ['/usr/share/fonts/dejavu/DejaVuSansMono.ttf', 'DejaVu Sans Mono'],
68
+ ['/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf', 'Liberation Mono'],
69
+ ['/usr/share/fonts/liberation/LiberationMono-Regular.ttf', 'Liberation Mono'],
70
+ ];
71
+ for (const [p, name] of latinCandidates) {
72
+ if (tryRegister(p)) {
73
+ // Best-effort bold companion
74
+ tryRegister(p.replace(/Regular\.ttf$/, 'Bold.ttf'));
75
+ tryRegister(p.replace(/SansMono\.ttf$/, 'SansMono-Bold.ttf'));
76
+ fontFamilyChain.push(name);
77
+ break;
78
+ }
79
+ }
80
+ // 4. Color emoji — Noto Color Emoji on Linux, Apple Color Emoji on macOS.
81
+ // skia handles CBDT/CBLC + COLR/CPAL color formats.
82
+ const emojiCandidates = [
83
+ ['/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf', 'Noto Color Emoji'],
84
+ ['/usr/share/fonts/noto/NotoColorEmoji.ttf', 'Noto Color Emoji'],
85
+ ['/usr/share/fonts/google-noto-emoji/NotoColorEmoji.ttf', 'Noto Color Emoji'],
86
+ ['/Library/Fonts/Apple Color Emoji.ttc', 'Apple Color Emoji'],
87
+ ['/System/Library/Fonts/Apple Color Emoji.ttc', 'Apple Color Emoji'],
88
+ ];
89
+ for (const [p, name] of emojiCandidates) {
90
+ if (tryRegister(p)) {
91
+ fontFamilyChain.push(name);
92
+ break;
93
+ }
94
+ }
95
+ if (fontFamilyChain.length === 0)
96
+ fontFamilyChain.push('monospace');
97
+ }
98
+ function fontSpec(bold) {
99
+ const families = fontFamilyChain.map(f => `"${f}"`).join(', ');
100
+ return `${bold ? 'bold ' : ''}${FONT_SIZE}px ${families}, monospace`;
101
+ }
102
+ /** Detect whether the leading codepoint is an emoji/symbol pictograph that
103
+ * uses bitmap glyph metrics — these need vertical centering, not top-align. */
104
+ function isPictograph(ch) {
105
+ if (!ch)
106
+ return false;
107
+ const cp = ch.codePointAt(0) ?? 0;
108
+ return ((cp >= 0x1F300 && cp <= 0x1FAFF) || // emoji + extended pictographs
109
+ (cp >= 0x1F900 && cp <= 0x1F9FF) || // supplemental symbols
110
+ (cp >= 0x1F1E6 && cp <= 0x1F1FF) || // regional indicators (flags)
111
+ (cp >= 0x2600 && cp <= 0x27BF) || // misc symbols + dingbats (✓✗★⚠ etc.)
112
+ cp === 0x231A || cp === 0x231B || // ⌚ ⌛
113
+ cp === 0x23E9 || cp === 0x23EA || cp === 0x23EB || cp === 0x23EC ||
114
+ cp === 0x23F0 || cp === 0x23F3 || // ⏰ ⏳
115
+ cp === 0x25FD || cp === 0x25FE || // ◽ ◾
116
+ cp === 0x2B50 || cp === 0x2B55 || // ⭐ ⭕
117
+ cp === 0x303D || cp === 0x3297 || cp === 0x3299);
118
+ }
119
+ const BG = '#1a1b26';
120
+ const FG = '#a9b1d6';
121
+ const ANSI16 = [
122
+ '#15161e', '#f7768e', '#9ece6a', '#e0af68', '#7aa2f7', '#bb9af7', '#7dcfff', '#a9b1d6',
123
+ '#414868', '#ff7a93', '#b9f27c', '#ff9e64', '#7da6ff', '#bb9af7', '#0db9d7', '#c0caf5',
124
+ ];
125
+ const PALETTE_256 = (() => {
126
+ const p = [...ANSI16];
127
+ const ramp = [0, 95, 135, 175, 215, 255];
128
+ for (let r = 0; r < 6; r++) {
129
+ for (let g = 0; g < 6; g++) {
130
+ for (let b = 0; b < 6; b++) {
131
+ p.push(`#${ramp[r].toString(16).padStart(2, '0')}${ramp[g].toString(16).padStart(2, '0')}${ramp[b].toString(16).padStart(2, '0')}`);
132
+ }
133
+ }
134
+ }
135
+ for (let i = 0; i < 24; i++) {
136
+ const v = (8 + i * 10).toString(16).padStart(2, '0');
137
+ p.push(`#${v}${v}${v}`);
138
+ }
139
+ return p;
140
+ })();
141
+ const FONT_SIZE = 14;
142
+ const CELL_W = 8.4;
143
+ const CELL_H = 18;
144
+ const PADDING = 8;
145
+ function colorOf(cell, isBg) {
146
+ const isDefault = isBg ? cell.isBgDefault() : cell.isFgDefault();
147
+ if (isDefault)
148
+ return null;
149
+ const isRGB = isBg ? cell.isBgRGB() : cell.isFgRGB();
150
+ const isPalette = isBg ? cell.isBgPalette() : cell.isFgPalette();
151
+ const v = isBg ? cell.getBgColor() : cell.getFgColor();
152
+ if (isRGB)
153
+ return `#${v.toString(16).padStart(6, '0')}`;
154
+ if (isPalette)
155
+ return PALETTE_256[v] ?? null;
156
+ return null;
157
+ }
158
+ /** Capture a section of the terminal buffer to a PNG buffer. */
159
+ export function captureToPng(terminal, opts) {
160
+ ensureFontRegistered();
161
+ const { cols, rows, startY } = opts;
162
+ const buffer = terminal.buffer.active;
163
+ const W = Math.ceil(PADDING * 2 + cols * CELL_W);
164
+ const H = PADDING * 2 + rows * CELL_H;
165
+ const canvas = createCanvas(W, H);
166
+ const ctx = canvas.getContext('2d');
167
+ ctx.fillStyle = BG;
168
+ ctx.fillRect(0, 0, W, H);
169
+ ctx.textBaseline = 'top';
170
+ ctx.font = fontSpec(false);
171
+ let currentBold = false;
172
+ for (let row = 0; row < rows; row++) {
173
+ const line = buffer.getLine(startY + row);
174
+ if (!line)
175
+ continue;
176
+ let col = 0;
177
+ while (col < cols) {
178
+ const cell = line.getCell(col);
179
+ if (!cell) {
180
+ col++;
181
+ continue;
182
+ }
183
+ const w = cell.getWidth();
184
+ if (w === 0) {
185
+ col++;
186
+ continue;
187
+ }
188
+ const ch = cell.getChars();
189
+ const x = PADDING + col * CELL_W;
190
+ const y = PADDING + row * CELL_H;
191
+ let fg = colorOf(cell, false) ?? FG;
192
+ let bg = colorOf(cell, true);
193
+ if (cell.isInverse()) {
194
+ const tmp = bg ?? BG;
195
+ bg = fg;
196
+ fg = tmp;
197
+ }
198
+ if (bg) {
199
+ ctx.fillStyle = bg;
200
+ ctx.fillRect(x, y, CELL_W * w, CELL_H);
201
+ }
202
+ if (ch && ch !== ' ') {
203
+ const bold = !!cell.isBold();
204
+ if (bold !== currentBold) {
205
+ currentBold = bold;
206
+ ctx.font = fontSpec(bold);
207
+ }
208
+ ctx.fillStyle = fg;
209
+ // Pictographs (emoji + dingbats) use bitmap metrics that don't align with
210
+ // text top-baseline — center them vertically in the cell instead.
211
+ if (isPictograph(ch)) {
212
+ ctx.textBaseline = 'middle';
213
+ ctx.fillText(ch, x, y + CELL_H / 2);
214
+ ctx.textBaseline = 'top';
215
+ }
216
+ else {
217
+ ctx.fillText(ch, x, y + 2);
218
+ }
219
+ }
220
+ col += w;
221
+ }
222
+ }
223
+ return canvas.toBuffer('image/png');
224
+ }
225
+ //# sourceMappingURL=screenshot-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-renderer.js","sourceRoot":"","sources":["../../src/utils/screenshot-renderer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,25 @@
1
+ /**
2
+ * Headless terminal renderer: feeds PTY data into an xterm-headless instance
3
+ * and periodically snapshots the rendered screen for Feishu card updates.
4
+ *
5
+ * Filters out TUI chrome and preamble (logo, version, prompt echo, system
6
+ * instructions) so only the CLI's actual work output appears in the card.
7
+ *
8
+ * Supports two rendering styles:
9
+ * - CLI-style (Claude Code, Aiden): output appends to scrollback. Baseline
10
+ * tracking isolates current-turn content. Phase 1 (OUTPUT_MARKER_RE) gates
11
+ * content detection.
12
+ * - TUI-style (CoCo, Codex): cursor-positioned full-screen UI. Content can
13
+ * be overwritten when the TUI redraws (e.g. response → idle prompt).
14
+ * Viewport fallback + peak retention ensure response content is captured.
15
+ *
16
+ * Timer overlay avoidance: The PTY is intentionally wider than normal so that
17
+ * right-aligned TUI overlays (elapsed time, timeout counters) are rendered
18
+ * far to the right. Snapshots only read the first `contentCols` columns,
19
+ * cleanly excluding the overlay area — no fragile regex stripping needed.
20
+ */
21
+ import xtermHeadless from '@xterm/headless';
22
+ declare const Terminal: typeof xtermHeadless.Terminal;
1
23
  export declare class TerminalRenderer {
2
24
  private terminal;
3
25
  private lastHash;
@@ -48,7 +70,18 @@ export declare class TerminalRenderer {
48
70
  * Used for TUI viewport fallback where output markers differ.
49
71
  */
50
72
  private extractContent;
73
+ /**
74
+ * Raw viewport snapshot — no filtering, no phase gating, no chrome removal.
75
+ * Used by ScreenAnalyzer which needs the full screen including ❯ cursor lines.
76
+ */
77
+ rawSnapshot(): string;
51
78
  resize(cols: number, rows: number): void;
79
+ /** Expose the underlying xterm-headless instance for screenshot rendering. */
80
+ get xterm(): InstanceType<typeof Terminal>;
81
+ /** Resolve a startY (absolute line) given a viewport offset (lines from bottom).
82
+ * offsetLines=0 means current viewport top, positive scrolls toward older content. */
83
+ startYFromOffset(offsetLines: number, displayRows: number): number;
52
84
  dispose(): void;
53
85
  }
86
+ export {};
54
87
  //# sourceMappingURL=terminal-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAmFA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAM;IACtB,yDAAyD;IACzD,OAAO,CAAC,aAAa,CAAK;IAC1B,6EAA6E;IAC7E,OAAO,CAAC,WAAW,CAAM;IACzB;;;2DAGuD;IACvD,OAAO,CAAC,gBAAgB,CAAS;IACjC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB,CAAQ;gBAEpB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAItC,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWzB;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAOnB;;;;;;;;;OASG;IACH,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IA4DjD;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2CtB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"terminal-renderer.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,QAAA,MAAQ,QAAQ,+BAAkB,CAAC;AA8DnC,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,QAAQ,CAAM;IACtB,yDAAyD;IACzD,OAAO,CAAC,aAAa,CAAK;IAC1B,6EAA6E;IAC7E,OAAO,CAAC,WAAW,CAAM;IACzB;;;2DAGuD;IACvD,OAAO,CAAC,gBAAgB,CAAS;IACjC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB,CAAQ;gBAEpB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAItC,mDAAmD;IACnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWzB;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAOnB;;;;;;;;;OASG;IACH,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IA4DjD;;;;OAIG;IACH,OAAO,CAAC,cAAc;IA2CtB;;;OAGG;IACH,WAAW,IAAI,MAAM;IAsBrB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,8EAA8E;IAC9E,IAAI,KAAK,IAAI,YAAY,CAAC,OAAO,QAAQ,CAAC,CAA0B;IAEpE;2FACuF;IACvF,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAOlE,OAAO,IAAI,IAAI;CAGhB"}
@@ -58,7 +58,7 @@ function shouldSkipLine(line) {
58
58
  }
59
59
  /** CLI output markers — lines starting with these indicate real work output.
60
60
  * Includes CoCo spinner chars (❇❋✢) alongside Claude Code's markers. */
61
- const OUTPUT_MARKER_RE = /^[●·⎿✓⚠★☐☑⏵✽✻❇❋✢]|^\s+⎿/;
61
+ const OUTPUT_MARKER_RE = /^\s*[●·⎿✓⚠★☐☑⏵✽✻❇❋✢]/;
62
62
  /**
63
63
  * How many columns to read from each line for the Feishu card snapshot.
64
64
  * Content beyond this is ignored — this is where TUI overlays (timer, timeout)
@@ -221,9 +221,42 @@ export class TerminalRenderer {
221
221
  }
222
222
  return filtered.join('\n');
223
223
  }
224
+ /**
225
+ * Raw viewport snapshot — no filtering, no phase gating, no chrome removal.
226
+ * Used by ScreenAnalyzer which needs the full screen including ❯ cursor lines.
227
+ */
228
+ rawSnapshot() {
229
+ const buffer = this.terminal.buffer.active;
230
+ const baseY = buffer.baseY;
231
+ const rows = this.terminal.rows;
232
+ const readCols = Math.min(SNAPSHOT_COLS, this.terminal.cols);
233
+ const endY = baseY + rows;
234
+ const lines = [];
235
+ for (let y = baseY; y < endY; y++) {
236
+ const line = buffer.getLine(y);
237
+ if (!line)
238
+ continue;
239
+ lines.push(cleanBoxDrawing(line.translateToString(true, 0, readCols)));
240
+ }
241
+ // Trim trailing blank lines only
242
+ while (lines.length > 0 && BLANK_RE.test(lines[lines.length - 1])) {
243
+ lines.pop();
244
+ }
245
+ return lines.join('\n');
246
+ }
224
247
  resize(cols, rows) {
225
248
  this.terminal.resize(cols, rows);
226
249
  }
250
+ /** Expose the underlying xterm-headless instance for screenshot rendering. */
251
+ get xterm() { return this.terminal; }
252
+ /** Resolve a startY (absolute line) given a viewport offset (lines from bottom).
253
+ * offsetLines=0 means current viewport top, positive scrolls toward older content. */
254
+ startYFromOffset(offsetLines, displayRows) {
255
+ const buffer = this.terminal.buffer.active;
256
+ const baseY = buffer.baseY;
257
+ const target = baseY - Math.max(0, offsetLines);
258
+ return Math.max(0, target);
259
+ }
227
260
  dispose() {
228
261
  this.terminal.dispose();
229
262
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-renderer.js","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,gFAAgF;AAChF,qEAAqE;AACrE,qEAAqE;AAErE,gFAAgF;AAChF,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI;SACR,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC;SACnC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,EAAE,CAAC;AACf,CAAC;AAED,gFAAgF;AAEhF,kFAAkF;AAClF,MAAM,cAAc,GAAG,WAAW,CAAC;AAEnC,+CAA+C;AAC/C,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC;8CAC8C;AAC9C,MAAM,aAAa,GAAG,gGAAgG,CAAC;AAEvH;mEACmE;AACnE,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAElC,sCAAsC;AACtC,MAAM,UAAU,GAAG,6FAA6F,CAAC;AAEjH,8EAA8E;AAC9E,MAAM,cAAc,GAAG,gJAAgJ,CAAC;AAExK,+BAA+B;AAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,CACL,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED;yEACyE;AACzE,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,OAAO,gBAAgB;IACnB,QAAQ,CAAgC;IACxC,QAAQ,GAAG,EAAE,CAAC;IACtB,yDAAyD;IACjD,aAAa,GAAG,CAAC,CAAC;IAC1B,6EAA6E;IACrE,WAAW,GAAG,EAAE,CAAC;IACzB;;;2DAGuD;IAC/C,gBAAgB,GAAG,KAAK,CAAC;IACjC;;;;;;;OAOG;IACK,gBAAgB,GAAG,IAAI,CAAC;IAEhC,YAAY,IAAY,EAAE,IAAY;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,IAAY;QAChB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,qEAAqE;YACrE,uEAAuE;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;YACnD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ;QACN,kEAAkE;QAClE,+CAA+C;QAC/C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE3B,0EAA0E;QAC1E,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;QAE/B,qFAAqF;QACrF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,2EAA2E;QAC3E,0EAA0E;QAC1E,EAAE;QACF,0EAA0E;QAC1E,8EAA8E;QAC9E,gFAAgF;QAChF,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,YAAY,EAAE,CAAC;gBACjB,8DAA8D;gBAC9D,uEAAuE;gBACvE,uEAAuE;gBACvE,iEAAiE;gBACjE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,wEAAwE;gBACxE,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC/C,8DAA8D;oBAC9D,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC7B,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;oBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,8BAA8B;QAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,MAAc,EAAE,UAAmB;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;QAE1B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,WAAW,GAAG,UAAU,CAAC;QAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,oDAAoD;gBACpD,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChC,WAAW,GAAG,IAAI,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,8CAA8C;YAC9C,IAAI,cAAc,CAAC,IAAI,CAAC;gBAAE,SAAS;YACnC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,wCAAwC;QACxC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,IAAY;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO;QACL,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"terminal-renderer.js","sourceRoot":"","sources":["../../src/utils/terminal-renderer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-token.d.ts","sourceRoot":"","sources":["../../src/utils/user-token.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAmGD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB/F;AAWD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA6BpG;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2D3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAgBvC"}
1
+ {"version":3,"file":"user-token.d.ts","sourceRoot":"","sources":["../../src/utils/user-token.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AA+FD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB/F;AAYD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA6BpG;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2D3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAgBvC"}
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * User Access Token — self-contained OAuth token management for botmux.
3
3
  *
4
- * Token storage priority (read):
4
+ * Token storage:
5
5
  * 1. FEISHU_USER_ACCESS_TOKEN env var
6
- * 2. ~/.botmux/data/user-token.json (botmux's own)
7
- * 3. ~/.feishu-cli/token.json (feishu-cli compatibility)
6
+ * 2. ~/.botmux/data/user-token.json
8
7
  *
9
8
  * OAuth login via /login command writes to botmux's own token file.
10
9
  * Auto-refreshes expired access_token using refresh_token.
@@ -16,7 +15,6 @@ import { randomBytes } from 'node:crypto';
16
15
  import { logger } from './logger.js';
17
16
  // ─── Token paths ──────────────────────────────────────────────────────────────
18
17
  const BOTMUX_TOKEN_PATH = join(homedir(), '.botmux', 'data', 'user-token.json');
19
- const FEISHU_CLI_TOKEN_PATH = join(homedir(), '.feishu-cli', 'token.json');
20
18
  const BUFFER_MS = 60_000; // 60s safety margin before expiry
21
19
  const pendingLogins = new Map(); // keyed by state
22
20
  // ─── Token I/O ────────────────────────────────────────────────────────────────
@@ -39,14 +37,11 @@ function isValid(isoDate) {
39
37
  return false;
40
38
  return Date.now() + BUFFER_MS < new Date(isoDate).getTime();
41
39
  }
42
- /** Load token from botmux's own file, then feishu-cli as fallback. */
40
+ /** Load token from botmux's own file. */
43
41
  function loadToken() {
44
- const own = loadTokenFromPath(BOTMUX_TOKEN_PATH);
45
- if (own)
46
- return { token: own, source: 'botmux' };
47
- const cli = loadTokenFromPath(FEISHU_CLI_TOKEN_PATH);
48
- if (cli)
49
- return { token: cli, source: 'feishu-cli' };
42
+ const token = loadTokenFromPath(BOTMUX_TOKEN_PATH);
43
+ if (token)
44
+ return { token, source: 'botmux' };
50
45
  return null;
51
46
  }
52
47
  // ─── Token refresh ────────────────────────────────────────────────────────────
@@ -124,6 +119,7 @@ const DEFAULT_PORT = 9768;
124
119
  const DEFAULT_SCOPES = [
125
120
  'im:message:readonly',
126
121
  'im:resource',
122
+ 'offline_access',
127
123
  ].join(' ');
128
124
  /**
129
125
  * Generate an OAuth authorization URL. Returns the URL and stores pending state.
@@ -1 +1 @@
1
- {"version":3,"file":"user-token.js","sourceRoot":"","sources":["../../src/utils/user-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-token.js","sourceRoot":"","sources":["../../src/utils/user-token.ts"],"names":[],"mappings":"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"}