@aiscene/aiserver 1.0.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/dist/api/callback.d.ts +7 -0
- package/dist/api/callback.d.ts.map +1 -0
- package/dist/api/callback.js +116 -0
- package/dist/api/callback.js.map +1 -0
- package/dist/api/device-api.d.ts +13 -0
- package/dist/api/device-api.d.ts.map +1 -0
- package/dist/api/device-api.js +98 -0
- package/dist/api/device-api.js.map +1 -0
- package/dist/api/task-api.d.ts +9 -0
- package/dist/api/task-api.d.ts.map +1 -0
- package/dist/api/task-api.js +47 -0
- package/dist/api/task-api.js.map +1 -0
- package/dist/config/cli.d.ts +30 -0
- package/dist/config/cli.d.ts.map +1 -0
- package/dist/config/cli.js +129 -0
- package/dist/config/cli.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +142 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +66 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +2 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/event-bus.d.ts +14 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +33 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/logger.d.ts +24 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +52 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/types.d.ts +134 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/debug/dump-manager.d.ts +10 -0
- package/dist/debug/dump-manager.d.ts.map +1 -0
- package/dist/debug/dump-manager.js +52 -0
- package/dist/debug/dump-manager.js.map +1 -0
- package/dist/debug/screencast.d.ts +11 -0
- package/dist/debug/screencast.d.ts.map +1 -0
- package/dist/debug/screencast.js +88 -0
- package/dist/debug/screencast.js.map +1 -0
- package/dist/debug/session-manager.d.ts +14 -0
- package/dist/debug/session-manager.d.ts.map +1 -0
- package/dist/debug/session-manager.js +76 -0
- package/dist/debug/session-manager.js.map +1 -0
- package/dist/debug/types.d.ts +76 -0
- package/dist/debug/types.d.ts.map +1 -0
- package/dist/debug/types.js +2 -0
- package/dist/debug/types.js.map +1 -0
- package/dist/debug/web-screencast.d.ts +60 -0
- package/dist/debug/web-screencast.d.ts.map +1 -0
- package/dist/debug/web-screencast.js +146 -0
- package/dist/debug/web-screencast.js.map +1 -0
- package/dist/debug/websocket-server.d.ts +27 -0
- package/dist/debug/websocket-server.d.ts.map +1 -0
- package/dist/debug/websocket-server.js +681 -0
- package/dist/debug/websocket-server.js.map +1 -0
- package/dist/device/detector.d.ts +10 -0
- package/dist/device/detector.d.ts.map +1 -0
- package/dist/device/detector.js +100 -0
- package/dist/device/detector.js.map +1 -0
- package/dist/device/heartbeat.d.ts +26 -0
- package/dist/device/heartbeat.d.ts.map +1 -0
- package/dist/device/heartbeat.js +225 -0
- package/dist/device/heartbeat.js.map +1 -0
- package/dist/device/status-manager.d.ts +15 -0
- package/dist/device/status-manager.d.ts.map +1 -0
- package/dist/device/status-manager.js +58 -0
- package/dist/device/status-manager.js.map +1 -0
- package/dist/device/types.d.ts +30 -0
- package/dist/device/types.d.ts.map +1 -0
- package/dist/device/types.js +2 -0
- package/dist/device/types.js.map +1 -0
- package/dist/executor/action-executor.d.ts +25 -0
- package/dist/executor/action-executor.d.ts.map +1 -0
- package/dist/executor/action-executor.js +261 -0
- package/dist/executor/action-executor.js.map +1 -0
- package/dist/executor/android-executor.d.ts +12 -0
- package/dist/executor/android-executor.d.ts.map +1 -0
- package/dist/executor/android-executor.js +127 -0
- package/dist/executor/android-executor.js.map +1 -0
- package/dist/executor/base.d.ts +20 -0
- package/dist/executor/base.d.ts.map +1 -0
- package/dist/executor/base.js +91 -0
- package/dist/executor/base.js.map +1 -0
- package/dist/executor/cli-executor.d.ts +12 -0
- package/dist/executor/cli-executor.d.ts.map +1 -0
- package/dist/executor/cli-executor.js +94 -0
- package/dist/executor/cli-executor.js.map +1 -0
- package/dist/executor/code-executor.d.ts +13 -0
- package/dist/executor/code-executor.d.ts.map +1 -0
- package/dist/executor/code-executor.js +52 -0
- package/dist/executor/code-executor.js.map +1 -0
- package/dist/executor/code-instrument.d.ts +12 -0
- package/dist/executor/code-instrument.d.ts.map +1 -0
- package/dist/executor/code-instrument.js +116 -0
- package/dist/executor/code-instrument.js.map +1 -0
- package/dist/executor/executor-factory.d.ts +7 -0
- package/dist/executor/executor-factory.d.ts.map +1 -0
- package/dist/executor/executor-factory.js +24 -0
- package/dist/executor/executor-factory.js.map +1 -0
- package/dist/executor/ios-executor.d.ts +10 -0
- package/dist/executor/ios-executor.d.ts.map +1 -0
- package/dist/executor/ios-executor.js +91 -0
- package/dist/executor/ios-executor.js.map +1 -0
- package/dist/executor/types.d.ts +14 -0
- package/dist/executor/types.d.ts.map +1 -0
- package/dist/executor/types.js +2 -0
- package/dist/executor/types.js.map +1 -0
- package/dist/executor/worker-entry.d.ts +2 -0
- package/dist/executor/worker-entry.d.ts.map +1 -0
- package/dist/executor/worker-entry.js +61 -0
- package/dist/executor/worker-entry.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +157 -0
- package/dist/index.js.map +1 -0
- package/dist/node/service.d.ts +21 -0
- package/dist/node/service.d.ts.map +1 -0
- package/dist/node/service.js +178 -0
- package/dist/node/service.js.map +1 -0
- package/dist/node/types.d.ts +45 -0
- package/dist/node/types.d.ts.map +1 -0
- package/dist/node/types.js +3 -0
- package/dist/node/types.js.map +1 -0
- package/dist/storage/database.d.ts +6 -0
- package/dist/storage/database.d.ts.map +1 -0
- package/dist/storage/database.js +154 -0
- package/dist/storage/database.js.map +1 -0
- package/dist/storage/repositories/debug-log-repo.d.ts +29 -0
- package/dist/storage/repositories/debug-log-repo.d.ts.map +1 -0
- package/dist/storage/repositories/debug-log-repo.js +90 -0
- package/dist/storage/repositories/debug-log-repo.js.map +1 -0
- package/dist/storage/repositories/device-repo.d.ts +12 -0
- package/dist/storage/repositories/device-repo.d.ts.map +1 -0
- package/dist/storage/repositories/device-repo.js +87 -0
- package/dist/storage/repositories/device-repo.js.map +1 -0
- package/dist/storage/repositories/execution-log-repo.d.ts +9 -0
- package/dist/storage/repositories/execution-log-repo.d.ts.map +1 -0
- package/dist/storage/repositories/execution-log-repo.js +49 -0
- package/dist/storage/repositories/execution-log-repo.js.map +1 -0
- package/dist/storage/repositories/task-repo.d.ts +13 -0
- package/dist/storage/repositories/task-repo.d.ts.map +1 -0
- package/dist/storage/repositories/task-repo.js +109 -0
- package/dist/storage/repositories/task-repo.js.map +1 -0
- package/dist/task/poller.d.ts +25 -0
- package/dist/task/poller.d.ts.map +1 -0
- package/dist/task/poller.js +153 -0
- package/dist/task/poller.js.map +1 -0
- package/dist/task/queue.d.ts +13 -0
- package/dist/task/queue.d.ts.map +1 -0
- package/dist/task/queue.js +38 -0
- package/dist/task/queue.js.map +1 -0
- package/dist/task/scheduler.d.ts +25 -0
- package/dist/task/scheduler.d.ts.map +1 -0
- package/dist/task/scheduler.js +274 -0
- package/dist/task/scheduler.js.map +1 -0
- package/dist/task/types.d.ts +31 -0
- package/dist/task/types.d.ts.map +1 -0
- package/dist/task/types.js +37 -0
- package/dist/task/types.js.map +1 -0
- package/dist/web/server.d.ts +14 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +478 -0
- package/dist/web/server.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export interface ServerConfig {
|
|
2
|
+
port: number;
|
|
3
|
+
webPort: number;
|
|
4
|
+
host: string;
|
|
5
|
+
}
|
|
6
|
+
export interface DeviceConfig {
|
|
7
|
+
heartbeatInterval: number;
|
|
8
|
+
offlineRetryCount: number;
|
|
9
|
+
offlineCallbackUrl: string;
|
|
10
|
+
}
|
|
11
|
+
export interface TaskConfig {
|
|
12
|
+
pollInterval: number;
|
|
13
|
+
apiUrl: string;
|
|
14
|
+
nodeId: string;
|
|
15
|
+
maxConcurrent: number;
|
|
16
|
+
timeout: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AIConfig {
|
|
19
|
+
baseUrl: string;
|
|
20
|
+
apiKey: string;
|
|
21
|
+
modelName: string;
|
|
22
|
+
useQwen3Vl: boolean;
|
|
23
|
+
insightModelName?: string;
|
|
24
|
+
insightModelApiKey?: string;
|
|
25
|
+
insightModelBaseUrl?: string;
|
|
26
|
+
insightModelFamily?: string;
|
|
27
|
+
insightModelTimeout?: number;
|
|
28
|
+
insightModelTemperature?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface StorageConfig {
|
|
31
|
+
dbPath: string;
|
|
32
|
+
}
|
|
33
|
+
export interface NodeConfig {
|
|
34
|
+
nodeId: string;
|
|
35
|
+
nodeName: string;
|
|
36
|
+
ipAddress: string;
|
|
37
|
+
port: number;
|
|
38
|
+
nodeType: string;
|
|
39
|
+
version: string;
|
|
40
|
+
environment: string;
|
|
41
|
+
maxConcurrentTasks: number;
|
|
42
|
+
weight: number;
|
|
43
|
+
supportedTags: string;
|
|
44
|
+
region: string;
|
|
45
|
+
description: string;
|
|
46
|
+
registerUrl: string;
|
|
47
|
+
heartbeatUrl: string;
|
|
48
|
+
heartbeatInterval: number;
|
|
49
|
+
configInfo?: Record<string, unknown>;
|
|
50
|
+
}
|
|
51
|
+
export interface CallbackConfig {
|
|
52
|
+
statusUpdateUrl: string;
|
|
53
|
+
reportUploadUrl: string;
|
|
54
|
+
deviceHeartbeatUrl: string;
|
|
55
|
+
deviceStatusUpdateUrl: string;
|
|
56
|
+
}
|
|
57
|
+
export interface AIServerConfig {
|
|
58
|
+
server: ServerConfig;
|
|
59
|
+
device: DeviceConfig;
|
|
60
|
+
task: TaskConfig;
|
|
61
|
+
ai: AIConfig;
|
|
62
|
+
storage: StorageConfig;
|
|
63
|
+
node: NodeConfig;
|
|
64
|
+
callback: CallbackConfig;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,QAAQ,CAAC;IACb,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
import type { EventType, EventPayload } from './types.js';
|
|
3
|
+
declare class EventBus extends EventEmitter<Record<string, EventPayload>> {
|
|
4
|
+
private static instance;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): EventBus;
|
|
7
|
+
emitEvent(type: EventType, source: string, data: unknown): void;
|
|
8
|
+
onEvent(type: EventType, handler: (payload: EventPayload) => void): void;
|
|
9
|
+
offEvent(type: EventType, handler: (payload: EventPayload) => void): void;
|
|
10
|
+
removeAll(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const eventBus: EventBus;
|
|
13
|
+
export { EventBus };
|
|
14
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1D,cAAM,QAAS,SAAQ,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAS/D,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAIxE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAIzE,SAAS,IAAI,IAAI;CAGlB;AAED,eAAO,MAAM,QAAQ,UAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import EventEmitter from 'eventemitter3';
|
|
2
|
+
class EventBus extends EventEmitter {
|
|
3
|
+
static instance;
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
}
|
|
7
|
+
static getInstance() {
|
|
8
|
+
if (!EventBus.instance) {
|
|
9
|
+
EventBus.instance = new EventBus();
|
|
10
|
+
}
|
|
11
|
+
return EventBus.instance;
|
|
12
|
+
}
|
|
13
|
+
emitEvent(type, source, data) {
|
|
14
|
+
const payload = {
|
|
15
|
+
timestamp: new Date().toISOString(),
|
|
16
|
+
source,
|
|
17
|
+
data,
|
|
18
|
+
};
|
|
19
|
+
this.emit(type, payload);
|
|
20
|
+
}
|
|
21
|
+
onEvent(type, handler) {
|
|
22
|
+
this.on(type, handler);
|
|
23
|
+
}
|
|
24
|
+
offEvent(type, handler) {
|
|
25
|
+
this.off(type, handler);
|
|
26
|
+
}
|
|
27
|
+
removeAll() {
|
|
28
|
+
this.removeAllListeners();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export const eventBus = EventBus.getInstance();
|
|
32
|
+
export { EventBus };
|
|
33
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAKzC,MAAM,QAAS,SAAQ,YAA0C;IACvD,MAAM,CAAC,QAAQ,CAAW;IAElC;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,IAAe,EAAE,MAAc,EAAE,IAAa;QACtD,MAAM,OAAO,GAAiB;YAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;YACN,IAAI;SACL,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,IAAe,EAAE,OAAwC;QAC/D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,IAAe,EAAE,OAAwC;QAChE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
declare class Logger {
|
|
2
|
+
private module;
|
|
3
|
+
constructor(module: string);
|
|
4
|
+
private log;
|
|
5
|
+
debug(message: string, meta?: {
|
|
6
|
+
taskId?: string;
|
|
7
|
+
sessionId?: string;
|
|
8
|
+
}): void;
|
|
9
|
+
info(message: string, meta?: {
|
|
10
|
+
taskId?: string;
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
}): void;
|
|
13
|
+
warn(message: string, meta?: {
|
|
14
|
+
taskId?: string;
|
|
15
|
+
sessionId?: string;
|
|
16
|
+
}): void;
|
|
17
|
+
error(message: string, meta?: {
|
|
18
|
+
taskId?: string;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
}): void;
|
|
21
|
+
}
|
|
22
|
+
export declare function createLogger(module: string): Logger;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAGA,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAI1B,OAAO,CAAC,GAAG;IAgCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI5E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI3E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI3E,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAG7E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { eventBus } from './event-bus.js';
|
|
2
|
+
class Logger {
|
|
3
|
+
module;
|
|
4
|
+
constructor(module) {
|
|
5
|
+
this.module = module;
|
|
6
|
+
}
|
|
7
|
+
log(level, message, meta) {
|
|
8
|
+
const timestamp = new Date().toISOString();
|
|
9
|
+
const prefix = `[${timestamp}] [${level.toUpperCase()}] [${this.module}]`;
|
|
10
|
+
const formattedMessage = `${prefix} ${message}`;
|
|
11
|
+
// Console output with colors
|
|
12
|
+
switch (level) {
|
|
13
|
+
case 'debug':
|
|
14
|
+
console.debug(formattedMessage);
|
|
15
|
+
break;
|
|
16
|
+
case 'info':
|
|
17
|
+
console.info(formattedMessage);
|
|
18
|
+
break;
|
|
19
|
+
case 'warn':
|
|
20
|
+
console.warn(formattedMessage);
|
|
21
|
+
break;
|
|
22
|
+
case 'error':
|
|
23
|
+
console.error(formattedMessage);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
// Emit to event bus for storage
|
|
27
|
+
const entry = {
|
|
28
|
+
taskId: meta?.taskId,
|
|
29
|
+
sessionId: meta?.sessionId,
|
|
30
|
+
level,
|
|
31
|
+
content: message,
|
|
32
|
+
createdAt: new Date(),
|
|
33
|
+
};
|
|
34
|
+
eventBus.emitEvent('task:log', this.module, entry);
|
|
35
|
+
}
|
|
36
|
+
debug(message, meta) {
|
|
37
|
+
this.log('debug', message, meta);
|
|
38
|
+
}
|
|
39
|
+
info(message, meta) {
|
|
40
|
+
this.log('info', message, meta);
|
|
41
|
+
}
|
|
42
|
+
warn(message, meta) {
|
|
43
|
+
this.log('warn', message, meta);
|
|
44
|
+
}
|
|
45
|
+
error(message, meta) {
|
|
46
|
+
this.log('error', message, meta);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function createLogger(module) {
|
|
50
|
+
return new Logger(module);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,MAAM;IACF,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAA8C;QAC1F,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC;QAC1E,MAAM,gBAAgB,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;QAEhD,6BAA6B;QAC7B,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAChC,MAAM;QACV,CAAC;QAED,gCAAgC;QAChC,MAAM,KAAK,GAAa;YACtB,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,SAAS,EAAE,IAAI,EAAE,SAAS;YAC1B,KAAK;YACL,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8C;QACnE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8C;QAClE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8C;QAClE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8C;QACnE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
export interface Device {
|
|
2
|
+
id?: number;
|
|
3
|
+
serialNumber: string;
|
|
4
|
+
model?: string;
|
|
5
|
+
brand?: string;
|
|
6
|
+
platform: 'android' | 'ios';
|
|
7
|
+
status: 'online' | 'offline';
|
|
8
|
+
lastHeartbeatAt?: Date;
|
|
9
|
+
createdAt?: Date;
|
|
10
|
+
updatedAt?: Date;
|
|
11
|
+
}
|
|
12
|
+
export type TaskType = 'cli' | 'android' | 'ios' | 'action' | 'code';
|
|
13
|
+
export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'stopped';
|
|
14
|
+
export interface AllocatedDevice {
|
|
15
|
+
id?: number;
|
|
16
|
+
deviceId: string;
|
|
17
|
+
deviceName?: string;
|
|
18
|
+
deviceModel?: string;
|
|
19
|
+
osType?: 'iOS' | 'Android';
|
|
20
|
+
osVersion?: string;
|
|
21
|
+
status?: number;
|
|
22
|
+
resolution?: string;
|
|
23
|
+
ipAddress?: string;
|
|
24
|
+
port?: number;
|
|
25
|
+
batteryLevel?: number;
|
|
26
|
+
isCharging?: boolean;
|
|
27
|
+
cpuUsage?: number;
|
|
28
|
+
memoryUsage?: number;
|
|
29
|
+
storageUsage?: number;
|
|
30
|
+
networkType?: string;
|
|
31
|
+
signalStrength?: number;
|
|
32
|
+
deviceTags?: string;
|
|
33
|
+
configInfo?: string;
|
|
34
|
+
lastHeartbeat?: string;
|
|
35
|
+
connectedAt?: string;
|
|
36
|
+
createdAt?: string;
|
|
37
|
+
updatedAt?: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
environment?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface Task {
|
|
42
|
+
id?: number;
|
|
43
|
+
taskId: string;
|
|
44
|
+
executionId?: string;
|
|
45
|
+
type: TaskType;
|
|
46
|
+
status: TaskStatus;
|
|
47
|
+
priority: number;
|
|
48
|
+
config?: string;
|
|
49
|
+
result?: string;
|
|
50
|
+
errorMessage?: string;
|
|
51
|
+
reportFilePath?: string;
|
|
52
|
+
device?: AllocatedDevice;
|
|
53
|
+
startedAt?: Date;
|
|
54
|
+
completedAt?: Date;
|
|
55
|
+
createdAt?: Date;
|
|
56
|
+
updatedAt?: Date;
|
|
57
|
+
}
|
|
58
|
+
export interface ExecuteConfig {
|
|
59
|
+
type: TaskType;
|
|
60
|
+
taskId?: string;
|
|
61
|
+
executionId?: string;
|
|
62
|
+
testName: string;
|
|
63
|
+
testUrl?: string;
|
|
64
|
+
requirement?: string;
|
|
65
|
+
url?: string;
|
|
66
|
+
mobileMode?: boolean;
|
|
67
|
+
cdpEnabled?: boolean;
|
|
68
|
+
cdpUrl?: string;
|
|
69
|
+
viewport?: {
|
|
70
|
+
width: number;
|
|
71
|
+
height: number;
|
|
72
|
+
userAgent?: string;
|
|
73
|
+
};
|
|
74
|
+
headless?: boolean;
|
|
75
|
+
reuseExistingBrowser?: boolean;
|
|
76
|
+
packageName?: string;
|
|
77
|
+
udid?: string;
|
|
78
|
+
bundleId?: string;
|
|
79
|
+
aiActionContext?: string;
|
|
80
|
+
waitTime?: number;
|
|
81
|
+
timeout?: number;
|
|
82
|
+
nodeId?: string;
|
|
83
|
+
startTime?: number;
|
|
84
|
+
actionType?: string;
|
|
85
|
+
locatePrompt?: string;
|
|
86
|
+
actionParams?: Record<string, unknown>;
|
|
87
|
+
naturalLanguage?: string;
|
|
88
|
+
modelConfig?: Record<string, unknown>;
|
|
89
|
+
code?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface ExecuteResult {
|
|
92
|
+
success: boolean;
|
|
93
|
+
reportFile?: string;
|
|
94
|
+
logFile?: string;
|
|
95
|
+
errorMessage?: string;
|
|
96
|
+
result?: unknown;
|
|
97
|
+
dump?: string;
|
|
98
|
+
reportHTML?: string;
|
|
99
|
+
}
|
|
100
|
+
export type DebugSessionStatus = 'idle' | 'running' | 'completed' | 'failed' | 'stopped';
|
|
101
|
+
export interface DebugSession {
|
|
102
|
+
sessionId: string;
|
|
103
|
+
deviceId?: string;
|
|
104
|
+
taskId?: string;
|
|
105
|
+
platform?: 'android' | 'ios' | 'web';
|
|
106
|
+
status: DebugSessionStatus;
|
|
107
|
+
logs: string[];
|
|
108
|
+
startTime: Date;
|
|
109
|
+
client?: unknown;
|
|
110
|
+
agent?: unknown;
|
|
111
|
+
webAgent?: unknown;
|
|
112
|
+
browser?: unknown;
|
|
113
|
+
context?: unknown;
|
|
114
|
+
page?: unknown;
|
|
115
|
+
screencastEnabled?: boolean;
|
|
116
|
+
dumpIntervalId?: NodeJS.Timeout;
|
|
117
|
+
process?: unknown;
|
|
118
|
+
}
|
|
119
|
+
export type EventType = 'task:started' | 'task:completed' | 'task:failed' | 'task:log' | 'device:online' | 'device:offline' | 'device:heartbeat' | 'node:registered' | 'node:command' | 'debug:session_created' | 'debug:log_output' | 'debug:action_dump' | 'debug:execution_line' | 'debug:action_result' | 'debug:completed' | 'debug:error' | 'executor:dump';
|
|
120
|
+
export interface EventPayload {
|
|
121
|
+
timestamp: string;
|
|
122
|
+
source: string;
|
|
123
|
+
data: unknown;
|
|
124
|
+
}
|
|
125
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
126
|
+
export interface LogEntry {
|
|
127
|
+
id?: number;
|
|
128
|
+
taskId?: string;
|
|
129
|
+
sessionId?: string;
|
|
130
|
+
level: LogLevel;
|
|
131
|
+
content: string;
|
|
132
|
+
createdAt?: Date;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,oEAAoE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
export declare class DumpManager {
|
|
3
|
+
private intervals;
|
|
4
|
+
startPeriodicDump(sessionId: string, ws: WebSocket, getDump: () => string | null, intervalMs?: number): void;
|
|
5
|
+
stopPeriodicDump(sessionId: string): void;
|
|
6
|
+
private sendDump;
|
|
7
|
+
stopAll(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare const dumpManager: DumpManager;
|
|
10
|
+
//# sourceMappingURL=dump-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dump-manager.d.ts","sourceRoot":"","sources":["../../src/debug/dump-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAIpC,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAA0C;IAE3D,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,MAAM,MAAM,GAAG,IAAI,EAC5B,UAAU,GAAE,MAAa,GACxB,IAAI;IAsBP,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IASzC,OAAO,CAAC,QAAQ;IAWhB,OAAO,IAAI,IAAI;CAOhB;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createLogger } from '../core/logger.js';
|
|
2
|
+
const logger = createLogger('DumpManager');
|
|
3
|
+
export class DumpManager {
|
|
4
|
+
intervals = new Map();
|
|
5
|
+
startPeriodicDump(sessionId, ws, getDump, intervalMs = 5000) {
|
|
6
|
+
// Send initial dump
|
|
7
|
+
const initialDump = getDump();
|
|
8
|
+
if (initialDump) {
|
|
9
|
+
this.sendDump(ws, sessionId, initialDump);
|
|
10
|
+
}
|
|
11
|
+
// Start periodic dump
|
|
12
|
+
const intervalId = setInterval(() => {
|
|
13
|
+
try {
|
|
14
|
+
const dump = getDump();
|
|
15
|
+
if (dump) {
|
|
16
|
+
this.sendDump(ws, sessionId, dump);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
logger.warn(`Periodic dump error for ${sessionId}: ${error.message}`);
|
|
21
|
+
}
|
|
22
|
+
}, intervalMs);
|
|
23
|
+
this.intervals.set(sessionId, intervalId);
|
|
24
|
+
}
|
|
25
|
+
stopPeriodicDump(sessionId) {
|
|
26
|
+
const intervalId = this.intervals.get(sessionId);
|
|
27
|
+
if (intervalId) {
|
|
28
|
+
clearInterval(intervalId);
|
|
29
|
+
this.intervals.delete(sessionId);
|
|
30
|
+
logger.debug(`Stopped periodic dump for session: ${sessionId}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
sendDump(ws, sessionId, dump) {
|
|
34
|
+
if (dump && dump.trim().length > 0 && ws.readyState === ws.OPEN) {
|
|
35
|
+
ws.send(JSON.stringify({
|
|
36
|
+
type: 'action_dump',
|
|
37
|
+
sessionId,
|
|
38
|
+
dump,
|
|
39
|
+
timestamp: new Date().toISOString(),
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
stopAll() {
|
|
44
|
+
for (const [sessionId, intervalId] of this.intervals) {
|
|
45
|
+
clearInterval(intervalId);
|
|
46
|
+
}
|
|
47
|
+
this.intervals.clear();
|
|
48
|
+
logger.info('All periodic dumps stopped');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export const dumpManager = new DumpManager();
|
|
52
|
+
//# sourceMappingURL=dump-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dump-manager.js","sourceRoot":"","sources":["../../src/debug/dump-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAE3C,MAAM,OAAO,WAAW;IACd,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3D,iBAAiB,CACf,SAAiB,EACjB,EAAa,EACb,OAA4B,EAC5B,aAAqB,IAAI;QAEzB,oBAAoB;QACpB,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;QAC9B,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC5C,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;gBACvB,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,gBAAgB,CAAC,SAAiB;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,aAAa,CAAC,UAAU,CAAC,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,EAAa,EAAE,SAAiB,EAAE,IAAY;QAC7D,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAChE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACrB,IAAI,EAAE,aAAa;gBACnB,SAAS;gBACT,IAAI;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACrD,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
export declare class ScreencastManager {
|
|
3
|
+
private sessions;
|
|
4
|
+
createSession(sessionId: string, ws: WebSocket, browser: unknown, context: unknown, page: unknown): Promise<void>;
|
|
5
|
+
addViewer(sessionId: string, ws: WebSocket): boolean;
|
|
6
|
+
hasSession(sessionId: string): boolean;
|
|
7
|
+
stopSession(sessionId: string): Promise<void>;
|
|
8
|
+
closeAll(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const screencastManager: ScreencastManager;
|
|
11
|
+
//# sourceMappingURL=screencast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screencast.d.ts","sourceRoot":"","sources":["../../src/debug/screencast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAcpC,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAA6C;IAEvD,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC;IAsChB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO;IAQpD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIhC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B7C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createLogger } from '../core/logger.js';
|
|
2
|
+
const logger = createLogger('ScreencastManager');
|
|
3
|
+
export class ScreencastManager {
|
|
4
|
+
sessions = new Map();
|
|
5
|
+
async createSession(sessionId, ws, browser, context, page) {
|
|
6
|
+
const session = {
|
|
7
|
+
sessionId,
|
|
8
|
+
viewers: new Set(),
|
|
9
|
+
browser,
|
|
10
|
+
context,
|
|
11
|
+
page,
|
|
12
|
+
};
|
|
13
|
+
this.sessions.set(sessionId, session);
|
|
14
|
+
try {
|
|
15
|
+
// Start CDP screencast
|
|
16
|
+
const cdpSession = await page?.context?.()?.newCDPSession?.(page);
|
|
17
|
+
if (cdpSession) {
|
|
18
|
+
session.cdpSession = cdpSession;
|
|
19
|
+
await cdpSession.send('Page.startScreencast', { format: 'jpeg', quality: 50, maxWidth: 1280, maxHeight: 720 });
|
|
20
|
+
cdpSession.on('Page.screencastFrame', async (event) => {
|
|
21
|
+
const frameData = Buffer.from(event.data, 'base64');
|
|
22
|
+
for (const viewer of session.viewers) {
|
|
23
|
+
if (viewer.readyState === viewer.OPEN) {
|
|
24
|
+
viewer.send(frameData);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
await cdpSession.send('Page.screencastFrameAck', { sessionId: event.sessionId });
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// ignore
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
logger.warn(`Failed to start screencast for ${sessionId}: ${error.message}`);
|
|
38
|
+
}
|
|
39
|
+
logger.info(`Screencast session created: ${sessionId}`);
|
|
40
|
+
}
|
|
41
|
+
addViewer(sessionId, ws) {
|
|
42
|
+
const session = this.sessions.get(sessionId);
|
|
43
|
+
if (!session)
|
|
44
|
+
return false;
|
|
45
|
+
session.viewers.add(ws);
|
|
46
|
+
ws.on('close', () => session.viewers.delete(ws));
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
hasSession(sessionId) {
|
|
50
|
+
return this.sessions.has(sessionId);
|
|
51
|
+
}
|
|
52
|
+
async stopSession(sessionId) {
|
|
53
|
+
const session = this.sessions.get(sessionId);
|
|
54
|
+
if (!session)
|
|
55
|
+
return;
|
|
56
|
+
if (session.frameInterval) {
|
|
57
|
+
clearInterval(session.frameInterval);
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
await session.cdpSession?.send?.('Page.stopScreencast');
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// ignore
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
await session.browser?.close?.();
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// ignore
|
|
70
|
+
}
|
|
71
|
+
// Close all viewers
|
|
72
|
+
for (const viewer of session.viewers) {
|
|
73
|
+
if (viewer.readyState === viewer.OPEN) {
|
|
74
|
+
viewer.close();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
this.sessions.delete(sessionId);
|
|
78
|
+
logger.info(`Screencast session stopped: ${sessionId}`);
|
|
79
|
+
}
|
|
80
|
+
async closeAll() {
|
|
81
|
+
for (const sessionId of Array.from(this.sessions.keys())) {
|
|
82
|
+
await this.stopSession(sessionId);
|
|
83
|
+
}
|
|
84
|
+
logger.info('All screencast sessions closed');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export const screencastManager = new ScreencastManager();
|
|
88
|
+
//# sourceMappingURL=screencast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screencast.js","sourceRoot":"","sources":["../../src/debug/screencast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAYjD,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE7D,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,EAAa,EACb,OAAgB,EAChB,OAAgB,EAChB,IAAa;QAEb,MAAM,OAAO,GAAsB;YACjC,SAAS;YACT,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,OAAO;YACP,OAAO;YACP,IAAI;SACL,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtC,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,UAAU,GAAG,MAAO,IAAY,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,IAAW,CAAC,CAAC;YAClF,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;gBAChC,MAAM,UAAU,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;gBAE/G,UAAU,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;oBACzD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACpD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBACrC,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;4BACtC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACzB,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,UAAU,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;oBACnF,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,kCAAkC,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE,EAAa;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC;YACH,MAAO,OAAO,CAAC,UAAkB,EAAE,IAAI,EAAE,CAAC,qBAAqB,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAO,OAAO,CAAC,OAAe,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,oBAAoB;QACpB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
import type { DebugSession, DebugSessionStatus } from '../core/types.js';
|
|
3
|
+
export declare class SessionManager {
|
|
4
|
+
private sessions;
|
|
5
|
+
create(sessionId: string, ws: WebSocket, deviceId?: string): DebugSession;
|
|
6
|
+
get(sessionId: string): DebugSession | undefined;
|
|
7
|
+
updateStatus(sessionId: string, status: DebugSessionStatus): void;
|
|
8
|
+
addLog(sessionId: string, content: string, type?: string): void;
|
|
9
|
+
remove(sessionId: string): void;
|
|
10
|
+
getAll(): DebugSession[];
|
|
11
|
+
findByClient(ws: WebSocket): string[];
|
|
12
|
+
}
|
|
13
|
+
export declare const sessionManager: SessionManager;
|
|
14
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/debug/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAGpC,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIzE,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAwC;IAExD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY;IA2BzE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIhD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAYjE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAqB,GAAG,IAAI;IAY7E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK/B,MAAM,IAAI,YAAY,EAAE;IAIxB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,EAAE;CAStC;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|