@tom2012/cc-web 2026.5.24-a → 2026.5.24-c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/backend/dist/__tests__/browser-chrome-e2e.test.d.ts +2 -0
- package/backend/dist/__tests__/browser-chrome-e2e.test.d.ts.map +1 -0
- package/backend/dist/__tests__/browser-chrome-e2e.test.js +121 -0
- package/backend/dist/__tests__/browser-chrome-e2e.test.js.map +1 -0
- package/backend/dist/__tests__/browser-chrome.test.d.ts +2 -0
- package/backend/dist/__tests__/browser-chrome.test.d.ts.map +1 -0
- package/backend/dist/__tests__/browser-chrome.test.js +169 -0
- package/backend/dist/__tests__/browser-chrome.test.js.map +1 -0
- package/backend/dist/__tests__/browser-proxy.test.js +81 -47
- package/backend/dist/__tests__/browser-proxy.test.js.map +1 -1
- package/backend/dist/browser-chrome/input-forwarder.d.ts +32 -0
- package/backend/dist/browser-chrome/input-forwarder.d.ts.map +1 -0
- package/backend/dist/browser-chrome/input-forwarder.js +92 -0
- package/backend/dist/browser-chrome/input-forwarder.js.map +1 -0
- package/backend/dist/browser-chrome/screencast.d.ts +21 -0
- package/backend/dist/browser-chrome/screencast.d.ts.map +1 -0
- package/backend/dist/browser-chrome/screencast.js +78 -0
- package/backend/dist/browser-chrome/screencast.js.map +1 -0
- package/backend/dist/browser-chrome/session-manager.d.ts +38 -0
- package/backend/dist/browser-chrome/session-manager.d.ts.map +1 -0
- package/backend/dist/browser-chrome/session-manager.js +175 -0
- package/backend/dist/browser-chrome/session-manager.js.map +1 -0
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +53 -0
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/routes/browser-chrome.d.ts +4 -0
- package/backend/dist/routes/browser-chrome.d.ts.map +1 -0
- package/backend/dist/routes/browser-chrome.js +106 -0
- package/backend/dist/routes/browser-chrome.js.map +1 -0
- package/backend/dist/routes/browser-proxy.d.ts +16 -4
- package/backend/dist/routes/browser-proxy.d.ts.map +1 -1
- package/backend/dist/routes/browser-proxy.js +78 -41
- package/backend/dist/routes/browser-proxy.js.map +1 -1
- package/backend/package-lock.json +45 -0
- package/backend/package.json +1 -0
- package/frontend/dist/assets/{ChatOverlay-W-pSFHsV.js → ChatOverlay-DWnJouqf.js} +1 -1
- package/frontend/dist/assets/{GraphPreview-CcuxUzQH.js → GraphPreview-BhYiu0BC.js} +1 -1
- package/frontend/dist/assets/{MobilePage-DEBO3i1o.js → MobilePage-CpwaYT93.js} +3 -3
- package/frontend/dist/assets/{OfficePreview-DY-ew_ex.js → OfficePreview-AIsCrFJN.js} +2 -2
- package/frontend/dist/assets/{PdfPreview-Bl0MS_5m.js → PdfPreview-BOf3iH2G.js} +1 -1
- package/frontend/dist/assets/{ProjectPage-tcwSSEFX.js → ProjectPage-BLDngPUN.js} +5 -5
- package/frontend/dist/assets/SettingsPage-898duvMO.js +13 -0
- package/frontend/dist/assets/{SkillHubPage-hH5XcB57.js → SkillHubPage-Cf3oFMk3.js} +1 -1
- package/frontend/dist/assets/{chevron-down-B3q2CU-d.js → chevron-down-CWdHpHQs.js} +1 -1
- package/frontend/dist/assets/{index-CZOz50el.js → index-DoKF15jh.js} +1 -1
- package/frontend/dist/assets/{index-nYsy3LMF.js → index-DtlKk29C.js} +2 -2
- package/frontend/dist/assets/{index-DsYny3RQ.js → index-DzV3STk-.js} +1 -1
- package/frontend/dist/assets/{jszip.min-9o6zKk8v.js → jszip.min-BiyTb6vp.js} +1 -1
- package/frontend/dist/assets/{search-B9B3Cq4V.js → search-DAr7qjB5.js} +1 -1
- package/frontend/dist/assets/select-IaWIRuom.js +13 -0
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/frontend/dist/assets/SettingsPage-DU649aEa.js +0 -13
- package/frontend/dist/assets/select-BOLkADQv.js +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-proxy.test.js","sourceRoot":"","sources":["../../src/__tests__/browser-proxy.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-proxy.test.js","sourceRoot":"","sources":["../../src/__tests__/browser-proxy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Session } from './session-manager';
|
|
2
|
+
export type InputMsg = {
|
|
3
|
+
type: 'click';
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
button?: string;
|
|
7
|
+
modifiers?: string[];
|
|
8
|
+
} | {
|
|
9
|
+
type: 'mousemove';
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'scroll';
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
deltaX: number;
|
|
17
|
+
deltaY: number;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'key';
|
|
20
|
+
action: 'down' | 'up' | 'press';
|
|
21
|
+
key: string;
|
|
22
|
+
modifiers?: string[];
|
|
23
|
+
} | {
|
|
24
|
+
type: 'type';
|
|
25
|
+
text: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'resize';
|
|
28
|
+
w: number;
|
|
29
|
+
h: number;
|
|
30
|
+
};
|
|
31
|
+
export declare function handleInput(session: Session, msg: InputMsg): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=input-forwarder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-forwarder.d.ts","sourceRoot":"","sources":["../../src/browser-chrome/input-forwarder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgB7C,wBAAsB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleInput = handleInput;
|
|
4
|
+
const logger_1 = require("../logger");
|
|
5
|
+
const log = (0, logger_1.modLogger)('browser-chrome:input');
|
|
6
|
+
// Whitelist of modifier names accepted from the client. Anything else is
|
|
7
|
+
// silently dropped — defends against bogus values being passed straight
|
|
8
|
+
// to playwright's keyboard API.
|
|
9
|
+
const VALID_MODIFIERS = ['Shift', 'Control', 'Alt', 'Meta'];
|
|
10
|
+
const VALID_BUTTONS = ['left', 'right', 'middle'];
|
|
11
|
+
function clamp(n, min, max) {
|
|
12
|
+
if (!Number.isFinite(n))
|
|
13
|
+
return min;
|
|
14
|
+
return Math.max(min, Math.min(max, Math.round(n)));
|
|
15
|
+
}
|
|
16
|
+
function sanitizeModifiers(arr) {
|
|
17
|
+
if (!Array.isArray(arr))
|
|
18
|
+
return [];
|
|
19
|
+
return arr.filter((m) => VALID_MODIFIERS.includes(m));
|
|
20
|
+
}
|
|
21
|
+
function sanitizeButton(b) {
|
|
22
|
+
return VALID_BUTTONS.includes(b ?? '') ? b : 'left';
|
|
23
|
+
}
|
|
24
|
+
async function handleInput(session, msg) {
|
|
25
|
+
session.lastActivityAt = Date.now();
|
|
26
|
+
switch (msg.type) {
|
|
27
|
+
case 'click': {
|
|
28
|
+
const x = clamp(msg.x, 0, session.viewport.w);
|
|
29
|
+
const y = clamp(msg.y, 0, session.viewport.h);
|
|
30
|
+
const mods = sanitizeModifiers(msg.modifiers);
|
|
31
|
+
for (const m of mods)
|
|
32
|
+
await session.page.keyboard.down(m);
|
|
33
|
+
try {
|
|
34
|
+
await session.page.mouse.click(x, y, { button: sanitizeButton(msg.button) });
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
for (const m of [...mods].reverse())
|
|
38
|
+
await session.page.keyboard.up(m).catch(() => { });
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case 'mousemove': {
|
|
43
|
+
const x = clamp(msg.x, 0, session.viewport.w);
|
|
44
|
+
const y = clamp(msg.y, 0, session.viewport.h);
|
|
45
|
+
await session.page.mouse.move(x, y);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case 'scroll': {
|
|
49
|
+
const x = clamp(msg.x, 0, session.viewport.w);
|
|
50
|
+
const y = clamp(msg.y, 0, session.viewport.h);
|
|
51
|
+
await session.page.mouse.move(x, y);
|
|
52
|
+
await session.page.mouse.wheel(clamp(msg.deltaX, -10000, 10000), clamp(msg.deltaY, -10000, 10000));
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case 'key': {
|
|
56
|
+
if (typeof msg.key !== 'string' || msg.key.length === 0 || msg.key.length > 32)
|
|
57
|
+
return;
|
|
58
|
+
const mods = sanitizeModifiers(msg.modifiers);
|
|
59
|
+
// Hold modifiers, perform key action, release modifiers (in reverse).
|
|
60
|
+
for (const m of mods)
|
|
61
|
+
await session.page.keyboard.down(m);
|
|
62
|
+
try {
|
|
63
|
+
if (msg.action === 'down')
|
|
64
|
+
await session.page.keyboard.down(msg.key);
|
|
65
|
+
else if (msg.action === 'up')
|
|
66
|
+
await session.page.keyboard.up(msg.key);
|
|
67
|
+
else
|
|
68
|
+
await session.page.keyboard.press(msg.key);
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
for (const m of [...mods].reverse())
|
|
72
|
+
await session.page.keyboard.up(m).catch(() => { });
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'type': {
|
|
77
|
+
if (typeof msg.text !== 'string' || msg.text.length === 0 || msg.text.length > 1000)
|
|
78
|
+
return;
|
|
79
|
+
await session.page.keyboard.type(msg.text);
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case 'resize': {
|
|
83
|
+
const w = clamp(msg.w, 200, 3840);
|
|
84
|
+
const h = clamp(msg.h, 200, 2160);
|
|
85
|
+
await session.page.setViewportSize({ width: w, height: h });
|
|
86
|
+
session.viewport = { w, h };
|
|
87
|
+
log.info({ sid: session.sid, w, h }, 'viewport resized');
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=input-forwarder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-forwarder.js","sourceRoot":"","sources":["../../src/browser-chrome/input-forwarder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type WebSocket from 'ws';
|
|
2
|
+
import type { Session } from './session-manager';
|
|
3
|
+
export interface ScreencastConfig {
|
|
4
|
+
format: 'jpeg' | 'png';
|
|
5
|
+
quality: number;
|
|
6
|
+
maxWidth: number;
|
|
7
|
+
maxHeight: number;
|
|
8
|
+
everyNthFrame: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Start CDP screencast on the given session, forwarding base64 frames to the
|
|
12
|
+
* WebSocket as JSON messages. Returns a stopper that detaches the listener
|
|
13
|
+
* and stops the upstream screencast.
|
|
14
|
+
*
|
|
15
|
+
* Backpressure: if ws.bufferedAmount exceeds the ceiling we skip sending the
|
|
16
|
+
* frame to the client BUT still ack to chromium so it keeps producing.
|
|
17
|
+
* Dropping the frame is preferable to letting daemon memory balloon when
|
|
18
|
+
* a slow client falls behind.
|
|
19
|
+
*/
|
|
20
|
+
export declare function startScreencast(session: Session, ws: WebSocket, cfg?: Partial<ScreencastConfig>): Promise<() => Promise<void>>;
|
|
21
|
+
//# sourceMappingURL=screencast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screencast.d.ts","sourceRoot":"","sources":["../../src/browser-chrome/screencast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAmBD;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,SAAS,EACb,GAAG,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAClC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAqD9B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startScreencast = startScreencast;
|
|
4
|
+
const logger_1 = require("../logger");
|
|
5
|
+
const log = (0, logger_1.modLogger)('browser-chrome:screencast');
|
|
6
|
+
const DEFAULT = {
|
|
7
|
+
format: 'jpeg',
|
|
8
|
+
quality: 70,
|
|
9
|
+
maxWidth: 1280,
|
|
10
|
+
maxHeight: 800,
|
|
11
|
+
// 30fps source / 3 → ~10fps. Research/PoC confirm sweet spot.
|
|
12
|
+
everyNthFrame: 3,
|
|
13
|
+
};
|
|
14
|
+
const WS_BUFFER_CEILING_BYTES = 4 * 1024 * 1024;
|
|
15
|
+
/**
|
|
16
|
+
* Start CDP screencast on the given session, forwarding base64 frames to the
|
|
17
|
+
* WebSocket as JSON messages. Returns a stopper that detaches the listener
|
|
18
|
+
* and stops the upstream screencast.
|
|
19
|
+
*
|
|
20
|
+
* Backpressure: if ws.bufferedAmount exceeds the ceiling we skip sending the
|
|
21
|
+
* frame to the client BUT still ack to chromium so it keeps producing.
|
|
22
|
+
* Dropping the frame is preferable to letting daemon memory balloon when
|
|
23
|
+
* a slow client falls behind.
|
|
24
|
+
*/
|
|
25
|
+
async function startScreencast(session, ws, cfg = {}) {
|
|
26
|
+
const config = { ...DEFAULT, ...cfg };
|
|
27
|
+
const onFrame = async (params) => {
|
|
28
|
+
if (ws.readyState !== 1 /* OPEN */)
|
|
29
|
+
return;
|
|
30
|
+
const dropForBackpressure = ws.bufferedAmount > WS_BUFFER_CEILING_BYTES;
|
|
31
|
+
if (!dropForBackpressure) {
|
|
32
|
+
try {
|
|
33
|
+
ws.send(JSON.stringify({
|
|
34
|
+
type: 'frame',
|
|
35
|
+
data: params.data,
|
|
36
|
+
format: config.format,
|
|
37
|
+
ts: Date.now(),
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
log.warn({ err, sid: session.sid }, 'frame send failed');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
log.warn({ sid: session.sid, buf: ws.bufferedAmount }, 'WS backlog, dropping frame');
|
|
46
|
+
}
|
|
47
|
+
// Always ack upstream — not acking would stall chromium for ALL clients
|
|
48
|
+
// sharing the page (we're single-client per page, but still hygienic).
|
|
49
|
+
try {
|
|
50
|
+
await session.cdp.send('Page.screencastFrameAck', { sessionId: params.sessionId });
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
// CDP may already be detached during teardown — not an error.
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
session.cdp.on('Page.screencastFrame', onFrame);
|
|
57
|
+
await session.cdp.send('Page.startScreencast', {
|
|
58
|
+
format: config.format,
|
|
59
|
+
quality: config.quality,
|
|
60
|
+
maxWidth: config.maxWidth,
|
|
61
|
+
maxHeight: config.maxHeight,
|
|
62
|
+
everyNthFrame: config.everyNthFrame,
|
|
63
|
+
});
|
|
64
|
+
log.info({ sid: session.sid, config }, 'screencast started');
|
|
65
|
+
let stopped = false;
|
|
66
|
+
return async () => {
|
|
67
|
+
if (stopped)
|
|
68
|
+
return;
|
|
69
|
+
stopped = true;
|
|
70
|
+
session.cdp.off('Page.screencastFrame', onFrame);
|
|
71
|
+
try {
|
|
72
|
+
await session.cdp.send('Page.stopScreencast');
|
|
73
|
+
}
|
|
74
|
+
catch { /* session may already be dead */ }
|
|
75
|
+
log.info({ sid: session.sid }, 'screencast stopped');
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=screencast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screencast.js","sourceRoot":"","sources":["../../src/browser-chrome/screencast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type Browser, type BrowserContext, type Page, type CDPSession } from 'playwright';
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
export interface Session {
|
|
4
|
+
sid: string;
|
|
5
|
+
username: string;
|
|
6
|
+
browser: Browser;
|
|
7
|
+
context: BrowserContext;
|
|
8
|
+
page: Page;
|
|
9
|
+
cdp: CDPSession;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
lastActivityAt: number;
|
|
12
|
+
viewport: {
|
|
13
|
+
w: number;
|
|
14
|
+
h: number;
|
|
15
|
+
};
|
|
16
|
+
url: string;
|
|
17
|
+
}
|
|
18
|
+
declare class SessionManager extends EventEmitter {
|
|
19
|
+
private sessions;
|
|
20
|
+
private idleTimer;
|
|
21
|
+
private started;
|
|
22
|
+
start(): void;
|
|
23
|
+
/** Return existing session for this user (reuse) or create a new one. */
|
|
24
|
+
getOrCreate(username: string): Promise<Session>;
|
|
25
|
+
get(sid: string, username: string): Session | null;
|
|
26
|
+
destroy(sid: string): Promise<void>;
|
|
27
|
+
destroyAll(): Promise<void>;
|
|
28
|
+
size(): number;
|
|
29
|
+
private sweepIdle;
|
|
30
|
+
}
|
|
31
|
+
export declare const browserChromeSessions: SessionManager;
|
|
32
|
+
export declare function mintSessionToken(sid: string, username: string): string;
|
|
33
|
+
export declare function verifySessionToken(token: string): {
|
|
34
|
+
sid: string;
|
|
35
|
+
username: string;
|
|
36
|
+
} | null;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/browser-chrome/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAOtC,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,UAAU,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;CACb;AAMD,cAAM,cAAe,SAAQ,YAAY;IACvC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAS;IAExB,KAAK,IAAI,IAAI;IAMb,yEAAyE;IACnE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiDrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAQ5C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,SAAS;CASlB;AAED,eAAO,MAAM,qBAAqB,gBAAuB,CAAC;AAO1D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAU1F"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.browserChromeSessions = void 0;
|
|
37
|
+
exports.mintSessionToken = mintSessionToken;
|
|
38
|
+
exports.verifySessionToken = verifySessionToken;
|
|
39
|
+
const playwright_1 = require("playwright");
|
|
40
|
+
const uuid_1 = require("uuid");
|
|
41
|
+
const events_1 = require("events");
|
|
42
|
+
const jwt = __importStar(require("jsonwebtoken"));
|
|
43
|
+
const config_1 = require("../config");
|
|
44
|
+
const logger_1 = require("../logger");
|
|
45
|
+
const log = (0, logger_1.modLogger)('browser-chrome');
|
|
46
|
+
const MAX_SESSIONS = 3;
|
|
47
|
+
const IDLE_TIMEOUT_MS = 5 * 60 * 1000;
|
|
48
|
+
const DEFAULT_VIEWPORT = { w: 1280, h: 800 };
|
|
49
|
+
class SessionManager extends events_1.EventEmitter {
|
|
50
|
+
constructor() {
|
|
51
|
+
super(...arguments);
|
|
52
|
+
this.sessions = new Map();
|
|
53
|
+
this.idleTimer = null;
|
|
54
|
+
this.started = false;
|
|
55
|
+
}
|
|
56
|
+
start() {
|
|
57
|
+
if (this.started)
|
|
58
|
+
return;
|
|
59
|
+
this.started = true;
|
|
60
|
+
this.idleTimer = setInterval(() => this.sweepIdle(), 30 * 1000);
|
|
61
|
+
}
|
|
62
|
+
/** Return existing session for this user (reuse) or create a new one. */
|
|
63
|
+
async getOrCreate(username) {
|
|
64
|
+
this.start();
|
|
65
|
+
for (const s of this.sessions.values()) {
|
|
66
|
+
if (s.username === username) {
|
|
67
|
+
s.lastActivityAt = Date.now();
|
|
68
|
+
return s;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (this.sessions.size >= MAX_SESSIONS) {
|
|
72
|
+
throw new Error(`Max ${MAX_SESSIONS} browser sessions reached`);
|
|
73
|
+
}
|
|
74
|
+
const sid = (0, uuid_1.v4)();
|
|
75
|
+
let browser;
|
|
76
|
+
try {
|
|
77
|
+
browser = await playwright_1.chromium.launch({
|
|
78
|
+
headless: true,
|
|
79
|
+
args: ['--disable-dev-shm-usage', '--no-sandbox', '--disable-gpu'],
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
log.error({ err }, 'chromium launch failed — is `npx playwright install chromium` done?');
|
|
84
|
+
throw new Error('Chromium not available — run: npx playwright install chromium');
|
|
85
|
+
}
|
|
86
|
+
const context = await browser.newContext({
|
|
87
|
+
viewport: { width: DEFAULT_VIEWPORT.w, height: DEFAULT_VIEWPORT.h },
|
|
88
|
+
userAgent: 'ccweb-browser-chrome/1.0',
|
|
89
|
+
});
|
|
90
|
+
const page = await context.newPage();
|
|
91
|
+
const cdp = await context.newCDPSession(page);
|
|
92
|
+
const session = {
|
|
93
|
+
sid, username, browser, context, page, cdp,
|
|
94
|
+
createdAt: Date.now(),
|
|
95
|
+
lastActivityAt: Date.now(),
|
|
96
|
+
viewport: { ...DEFAULT_VIEWPORT },
|
|
97
|
+
url: 'about:blank',
|
|
98
|
+
};
|
|
99
|
+
this.sessions.set(sid, session);
|
|
100
|
+
log.info({ sid, username, count: this.sessions.size }, 'session created');
|
|
101
|
+
// Auto-destroy if browser dies underneath us (chromium crash).
|
|
102
|
+
browser.once('disconnected', () => {
|
|
103
|
+
log.warn({ sid }, 'browser disconnected unexpectedly');
|
|
104
|
+
this.sessions.delete(sid);
|
|
105
|
+
});
|
|
106
|
+
return session;
|
|
107
|
+
}
|
|
108
|
+
get(sid, username) {
|
|
109
|
+
const s = this.sessions.get(sid);
|
|
110
|
+
if (!s)
|
|
111
|
+
return null;
|
|
112
|
+
if (s.username !== username)
|
|
113
|
+
return null;
|
|
114
|
+
s.lastActivityAt = Date.now();
|
|
115
|
+
return s;
|
|
116
|
+
}
|
|
117
|
+
async destroy(sid) {
|
|
118
|
+
const s = this.sessions.get(sid);
|
|
119
|
+
if (!s)
|
|
120
|
+
return;
|
|
121
|
+
this.sessions.delete(sid);
|
|
122
|
+
try {
|
|
123
|
+
await s.cdp.detach().catch(() => { });
|
|
124
|
+
await s.browser.close();
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
log.warn({ err, sid }, 'browser close failed');
|
|
128
|
+
}
|
|
129
|
+
log.info({ sid, count: this.sessions.size }, 'session destroyed');
|
|
130
|
+
}
|
|
131
|
+
async destroyAll() {
|
|
132
|
+
const sids = Array.from(this.sessions.keys());
|
|
133
|
+
await Promise.all(sids.map(sid => this.destroy(sid)));
|
|
134
|
+
if (this.idleTimer)
|
|
135
|
+
clearInterval(this.idleTimer);
|
|
136
|
+
this.idleTimer = null;
|
|
137
|
+
this.started = false;
|
|
138
|
+
}
|
|
139
|
+
size() {
|
|
140
|
+
return this.sessions.size;
|
|
141
|
+
}
|
|
142
|
+
sweepIdle() {
|
|
143
|
+
const now = Date.now();
|
|
144
|
+
for (const [sid, s] of this.sessions) {
|
|
145
|
+
if (now - s.lastActivityAt > IDLE_TIMEOUT_MS) {
|
|
146
|
+
log.info({ sid, idleMs: now - s.lastActivityAt }, 'idle timeout');
|
|
147
|
+
this.destroy(sid).catch(err => log.warn({ err, sid }, 'idle destroy failed'));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.browserChromeSessions = new SessionManager();
|
|
153
|
+
// ── JWT helpers for WS auth ────────────────────────────────────────────────
|
|
154
|
+
// HTTP endpoints use Bearer admin (via requireBearerAdmin); WS upgrade can't
|
|
155
|
+
// carry headers reliably across browsers / proxies, so we issue a short-lived
|
|
156
|
+
// JWT bound to {sid, username} returned by POST /_session.
|
|
157
|
+
function mintSessionToken(sid, username) {
|
|
158
|
+
const config = (0, config_1.getConfig)();
|
|
159
|
+
return jwt.sign({ sid, username, typ: 'browser-chrome' }, config.jwtSecret, { expiresIn: '1h' });
|
|
160
|
+
}
|
|
161
|
+
function verifySessionToken(token) {
|
|
162
|
+
try {
|
|
163
|
+
const config = (0, config_1.getConfig)();
|
|
164
|
+
const decoded = jwt.verify(token, config.jwtSecret);
|
|
165
|
+
if (decoded.typ !== 'browser-chrome')
|
|
166
|
+
return null;
|
|
167
|
+
if (typeof decoded.sid !== 'string' || typeof decoded.username !== 'string')
|
|
168
|
+
return null;
|
|
169
|
+
return { sid: decoded.sid, username: decoded.username };
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/browser-chrome/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4FA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAk3BtB,eAAe,GAAG,CAAC"}
|
package/backend/dist/index.js
CHANGED
|
@@ -82,6 +82,10 @@ const plugins_1 = __importDefault(require("./routes/plugins"));
|
|
|
82
82
|
const plugin_bridge_1 = __importDefault(require("./routes/plugin-bridge"));
|
|
83
83
|
const sync_1 = __importDefault(require("./routes/sync"));
|
|
84
84
|
const browser_proxy_1 = __importDefault(require("./routes/browser-proxy"));
|
|
85
|
+
const browser_chrome_1 = __importDefault(require("./routes/browser-chrome"));
|
|
86
|
+
const session_manager_2 = require("./browser-chrome/session-manager");
|
|
87
|
+
const screencast_1 = require("./browser-chrome/screencast");
|
|
88
|
+
const input_forwarder_1 = require("./browser-chrome/input-forwarder");
|
|
85
89
|
const sync_scheduler_1 = require("./sync-scheduler");
|
|
86
90
|
const chat_backup_1 = require("./chat-backup");
|
|
87
91
|
const sync_service_1 = require("./sync-service");
|
|
@@ -229,6 +233,9 @@ app.use('/api/sync', auth_1.authMiddleware, sync_1.default);
|
|
|
229
233
|
// auth (explicit Bearer admin for /_session, cookie for proxy GETs) so
|
|
230
234
|
// localhost auto-auth cannot blind-trigger SSRF via CSRF.
|
|
231
235
|
app.use('/api/browser-proxy', browser_proxy_1.default);
|
|
236
|
+
// Same pattern: browser-chrome.ts uses requireBearerAdmin internally so
|
|
237
|
+
// localhost auto-auth cannot CSRF chromium session creation.
|
|
238
|
+
app.use('/api/browser-chrome', browser_chrome_1.default);
|
|
232
239
|
// Serve plugin SDK: /plugin-sdk/ccweb-plugin-sdk.js
|
|
233
240
|
app.use('/plugin-sdk', express_1.default.static(path.join(__dirname, '../../plugin-sdk')));
|
|
234
241
|
// Serve plugin frontend files: /plugins/:id/* → ~/.ccweb/plugins/:id/frontend/*
|
|
@@ -645,6 +652,49 @@ wss.on('connection', (ws, req) => {
|
|
|
645
652
|
});
|
|
646
653
|
return;
|
|
647
654
|
}
|
|
655
|
+
// ── Browser-chrome WebSocket (/ws/browser-chrome/:sid?token=...) ──────────
|
|
656
|
+
const bcMatch = parsedUrl.pathname?.match(/^\/ws\/browser-chrome\/([a-f0-9-]+)$/);
|
|
657
|
+
if (bcMatch) {
|
|
658
|
+
const sid = bcMatch[1];
|
|
659
|
+
const token = parsedUrl.searchParams.get('token');
|
|
660
|
+
const claim = token ? (0, session_manager_2.verifySessionToken)(token) : null;
|
|
661
|
+
if (!claim || claim.sid !== sid) {
|
|
662
|
+
ws.close(1008, 'Invalid token');
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
const session = session_manager_2.browserChromeSessions.get(sid, claim.username);
|
|
666
|
+
if (!session) {
|
|
667
|
+
ws.close(1008, 'Session not found');
|
|
668
|
+
return;
|
|
669
|
+
}
|
|
670
|
+
let stop = null;
|
|
671
|
+
(0, screencast_1.startScreencast)(session, ws).then(s => { stop = s; }).catch(err => {
|
|
672
|
+
log.warn({ err, sid }, 'screencast start failed');
|
|
673
|
+
try {
|
|
674
|
+
ws.close(1011, 'Screencast start failed');
|
|
675
|
+
}
|
|
676
|
+
catch { }
|
|
677
|
+
});
|
|
678
|
+
ws.on('message', (raw) => {
|
|
679
|
+
let msg;
|
|
680
|
+
try {
|
|
681
|
+
msg = JSON.parse(raw.toString());
|
|
682
|
+
}
|
|
683
|
+
catch {
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
(0, input_forwarder_1.handleInput)(session, msg).catch(err => {
|
|
687
|
+
log.warn({ err, sid, type: msg.type }, 'input handle failed');
|
|
688
|
+
});
|
|
689
|
+
});
|
|
690
|
+
ws.on('close', () => {
|
|
691
|
+
if (stop)
|
|
692
|
+
stop().catch(() => { });
|
|
693
|
+
// Do NOT destroy the session on WS close — let the user reconnect
|
|
694
|
+
// quickly. Idle sweep in SessionManager will reap after 5 min.
|
|
695
|
+
});
|
|
696
|
+
return;
|
|
697
|
+
}
|
|
648
698
|
// ── Project WebSocket (/ws/projects/:id) ───────────────────────────────────
|
|
649
699
|
const match = parsedUrl.pathname?.match(/^\/ws\/projects\/([a-zA-Z0-9_-]+)$/);
|
|
650
700
|
if (!match) {
|
|
@@ -949,6 +999,9 @@ function shutdown() {
|
|
|
949
999
|
}
|
|
950
1000
|
// Close WebSocket connections
|
|
951
1001
|
wss.clients.forEach((ws) => ws.close(1001, 'Server shutting down'));
|
|
1002
|
+
// Kill all headless chromium instances — daemon-side babysitter; without
|
|
1003
|
+
// this, child chrome processes survive daemon SIGTERM (zombie processes).
|
|
1004
|
+
session_manager_2.browserChromeSessions.destroyAll().catch((err) => log.warn({ err }, 'browser-chrome destroyAll failed'));
|
|
952
1005
|
server.close(async () => {
|
|
953
1006
|
log.info('shutdown closed');
|
|
954
1007
|
await (0, logger_1.flushLogger)();
|