botmux 2.75.0 → 2.75.1

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 (71) hide show
  1. package/dist/bot-registry.d.ts.map +1 -1
  2. package/dist/bot-registry.js +19 -5
  3. package/dist/bot-registry.js.map +1 -1
  4. package/dist/cli/pm2-command.d.ts +6 -0
  5. package/dist/cli/pm2-command.d.ts.map +1 -0
  6. package/dist/cli/pm2-command.js +7 -0
  7. package/dist/cli/pm2-command.js.map +1 -0
  8. package/dist/cli/stdin-encoding.d.ts +3 -0
  9. package/dist/cli/stdin-encoding.d.ts.map +1 -0
  10. package/dist/cli/stdin-encoding.js +19 -0
  11. package/dist/cli/stdin-encoding.js.map +1 -0
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +19 -4
  14. package/dist/cli.js.map +1 -1
  15. package/dist/core/maintenance.d.ts +18 -0
  16. package/dist/core/maintenance.d.ts.map +1 -1
  17. package/dist/core/maintenance.js +56 -4
  18. package/dist/core/maintenance.js.map +1 -1
  19. package/dist/dashboard/auth.d.ts.map +1 -1
  20. package/dist/dashboard/auth.js +2 -1
  21. package/dist/dashboard/auth.js.map +1 -1
  22. package/dist/dashboard/hd2d-assets.d.ts +20 -0
  23. package/dist/dashboard/hd2d-assets.d.ts.map +1 -0
  24. package/dist/dashboard/hd2d-assets.js +216 -0
  25. package/dist/dashboard/hd2d-assets.js.map +1 -0
  26. package/dist/dashboard/web/app.d.ts.map +1 -1
  27. package/dist/dashboard/web/app.js +3 -0
  28. package/dist/dashboard/web/app.js.map +1 -1
  29. package/dist/dashboard/web/office.d.ts +2 -0
  30. package/dist/dashboard/web/office.d.ts.map +1 -0
  31. package/dist/dashboard/web/office.js +140 -0
  32. package/dist/dashboard/web/office.js.map +1 -0
  33. package/dist/dashboard-web/app.js +327 -299
  34. package/dist/dashboard-web/game/index.apple-touch-icon.png +0 -0
  35. package/dist/dashboard-web/game/index.audio.position.worklet.js +66 -0
  36. package/dist/dashboard-web/game/index.audio.worklet.js +213 -0
  37. package/dist/dashboard-web/game/index.html +224 -0
  38. package/dist/dashboard-web/game/index.icon.png +0 -0
  39. package/dist/dashboard-web/game/index.js +909 -0
  40. package/dist/dashboard-web/game/index.png +0 -0
  41. package/dist/dashboard-web/index.html +1 -0
  42. package/dist/dashboard.js +74 -6
  43. package/dist/dashboard.js.map +1 -1
  44. package/dist/global-config.d.ts +5 -0
  45. package/dist/global-config.d.ts.map +1 -1
  46. package/dist/global-config.js +2 -0
  47. package/dist/global-config.js.map +1 -1
  48. package/dist/i18n/en.js +2 -2
  49. package/dist/i18n/en.js.map +1 -1
  50. package/dist/i18n/zh.js +2 -2
  51. package/dist/i18n/zh.js.map +1 -1
  52. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  53. package/dist/im/lark/event-dispatcher.js +66 -6
  54. package/dist/im/lark/event-dispatcher.js.map +1 -1
  55. package/dist/im/lark/reply-mode-command.d.ts.map +1 -1
  56. package/dist/im/lark/reply-mode-command.js +4 -1
  57. package/dist/im/lark/reply-mode-command.js.map +1 -1
  58. package/dist/services/bridge-rotation-policy.d.ts +40 -0
  59. package/dist/services/bridge-rotation-policy.d.ts.map +1 -1
  60. package/dist/services/bridge-rotation-policy.js +38 -0
  61. package/dist/services/bridge-rotation-policy.js.map +1 -1
  62. package/dist/services/chat-reply-mode-store.d.ts +1 -1
  63. package/dist/services/chat-reply-mode-store.d.ts.map +1 -1
  64. package/dist/services/chat-reply-mode-store.js +8 -9
  65. package/dist/services/chat-reply-mode-store.js.map +1 -1
  66. package/dist/skills/definitions.d.ts.map +1 -1
  67. package/dist/skills/definitions.js +17 -3
  68. package/dist/skills/definitions.js.map +1 -1
  69. package/dist/worker.js +23 -3
  70. package/dist/worker.js.map +1 -1
  71. package/package.json +2 -2
@@ -0,0 +1,140 @@
1
+ // HD2D office tab: lazily downloads the Godot web build (served from /game/)
2
+ // on demand. The ~74MB runtime binaries are NOT shipped in the npm package —
3
+ // they live as GitHub Release assets and are fetched + cached by the daemon
4
+ // (~/.botmux/cache/hd2d/) the first time the user clicks "load". Once cached,
5
+ // the game polls /api/sessions on the same origin and mirrors each session's
6
+ // screen status onto an office robot.
7
+ //
8
+ // The page escapes main's max-width/padding so the game fills the whole area
9
+ // right of the sidebar; styles are restored when the tab is left.
10
+ import { escapeHtml } from './ui.js';
11
+ // Fallback total used only when /api/game/status is unreachable (e.g. an
12
+ // unauthenticated viewer 401s) so the button still shows a sensible size.
13
+ const FALLBACK_TOTAL = 78_222_186;
14
+ export function renderOfficePage(host) {
15
+ const prev = {
16
+ maxWidth: host.style.maxWidth,
17
+ padding: host.style.padding,
18
+ flex: host.style.flex,
19
+ minHeight: host.style.minHeight,
20
+ display: host.style.display,
21
+ };
22
+ host.style.maxWidth = 'none';
23
+ host.style.padding = '0';
24
+ host.style.flex = '1 1 auto';
25
+ host.style.minHeight = '0';
26
+ host.style.display = 'flex';
27
+ let disposed = false;
28
+ let pollTimer;
29
+ let proxy = ''; // last-known configured proxy, prefilled into the input
30
+ const mb = (n) => (n / 1048576).toFixed(0);
31
+ function stopPoll() {
32
+ if (pollTimer) {
33
+ clearTimeout(pollTimer);
34
+ pollTimer = undefined;
35
+ }
36
+ }
37
+ function showIframe() {
38
+ stopPoll();
39
+ host.innerHTML = `
40
+ <iframe
41
+ src="/game/index.html"
42
+ title="HD2D Office"
43
+ style="flex:1;width:100%;min-height:0;border:none;display:block;background:#0b0d12;"
44
+ allow="autoplay"
45
+ ></iframe>`;
46
+ }
47
+ function showLoader(s) {
48
+ const total = s.total || FALLBACK_TOTAL;
49
+ const pct = total ? Math.min(100, Math.round((s.received / total) * 100)) : 0;
50
+ const downloading = s.state === 'downloading';
51
+ const err = s.state === 'error';
52
+ host.innerHTML = `
53
+ <div style="margin:auto;text-align:center;max-width:440px;padding:32px;color:var(--fg,#e6e6e6);">
54
+ <div style="font-size:18px;font-weight:600;margin-bottom:8px;">HD2D 办公室</div>
55
+ <div style="font-size:13px;opacity:.7;line-height:1.7;margin-bottom:20px;">
56
+ 把每个会话变成办公室里的一个机器人,实时映射屏幕状态。<br>
57
+ 首次进入需下载约 ${mb(total)} MB 游戏资源(仅一次,之后本地缓存)。
58
+ </div>
59
+ ${err ? `<div style="color:#e06c75;font-size:12px;margin-bottom:14px;">上次下载失败:${escapeHtml(s.error ?? '未知错误')}<br><span style="opacity:.7;">填代理后点重试</span></div>` : ''}
60
+ ${downloading ? `
61
+ <div style="background:rgba(127,127,127,.2);border-radius:6px;height:10px;overflow:hidden;margin-bottom:10px;">
62
+ <div style="height:100%;width:${pct}%;background:#4a9eff;transition:width .3s;"></div>
63
+ </div>
64
+ <div style="font-size:12px;opacity:.7;">下载中… ${mb(s.received)} / ${mb(total)} MB(${pct}%)</div>
65
+ ` : `
66
+ <input id="hd2d-proxy" type="text" value="${escapeHtml(proxy)}"
67
+ placeholder="HTTP 代理(可选,如 http://127.0.0.1:7890)"
68
+ style="width:100%;box-sizing:border-box;margin-bottom:12px;padding:8px 10px;border-radius:6px;border:1px solid rgba(127,127,127,.4);background:transparent;color:inherit;font-size:12px;" />
69
+ <div style="font-size:11px;opacity:.5;margin-bottom:14px;text-align:left;">连不上 GitHub 时填代理(仅用于下载本资源,会记住)。留空走直连/系统代理环境变量。</div>
70
+ <button id="hd2d-load" style="cursor:pointer;border:none;border-radius:8px;padding:10px 22px;font-size:14px;font-weight:600;background:#4a9eff;color:#fff;">
71
+ ${err ? '重试' : '加载办公室'}(约 ${mb(total)} MB)
72
+ </button>
73
+ `}
74
+ </div>`;
75
+ const btn = host.querySelector('#hd2d-load');
76
+ if (btn)
77
+ btn.onclick = () => {
78
+ const input = host.querySelector('#hd2d-proxy');
79
+ proxy = input?.value.trim() ?? '';
80
+ void startDownload();
81
+ };
82
+ }
83
+ function route(s) {
84
+ if (disposed)
85
+ return;
86
+ if (typeof s.proxy === 'string')
87
+ proxy = s.proxy;
88
+ if (s.state === 'ready') {
89
+ showIframe();
90
+ return;
91
+ }
92
+ showLoader(s);
93
+ if (s.state === 'downloading')
94
+ pollTimer = setTimeout(() => void poll(), 700);
95
+ }
96
+ async function startDownload() {
97
+ showLoader({ state: 'downloading', received: 0, total: FALLBACK_TOTAL });
98
+ try {
99
+ const r = await fetch('/api/game/download', {
100
+ method: 'POST',
101
+ headers: { 'content-type': 'application/json' },
102
+ body: JSON.stringify({ proxy }),
103
+ });
104
+ if (!r.ok)
105
+ throw new Error(`HTTP ${r.status}`);
106
+ route(await r.json());
107
+ }
108
+ catch (e) {
109
+ showLoader({ state: 'error', received: 0, total: FALLBACK_TOTAL, error: e instanceof Error ? e.message : String(e) });
110
+ }
111
+ }
112
+ async function poll() {
113
+ if (disposed)
114
+ return;
115
+ try {
116
+ const r = await fetch('/api/game/status');
117
+ if (!r.ok) {
118
+ showLoader({ state: 'absent', received: 0, total: FALLBACK_TOTAL });
119
+ return;
120
+ }
121
+ route(await r.json());
122
+ }
123
+ catch {
124
+ if (!disposed)
125
+ pollTimer = setTimeout(() => void poll(), 1500);
126
+ }
127
+ }
128
+ void poll(); // initial status probe → ready ? iframe : loader
129
+ return () => {
130
+ disposed = true;
131
+ stopPoll();
132
+ host.innerHTML = '';
133
+ host.style.maxWidth = prev.maxWidth;
134
+ host.style.padding = prev.padding;
135
+ host.style.flex = prev.flex;
136
+ host.style.minHeight = prev.minHeight;
137
+ host.style.display = prev.display;
138
+ };
139
+ }
140
+ //# sourceMappingURL=office.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"office.js","sourceRoot":"","sources":["../../../src/dashboard/web/office.ts"],"names":[],"mappings":"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"}