@aiscene/aiserver 1.4.5 → 1.4.6

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.
@@ -18,6 +18,14 @@ export declare class WebBrowserPool {
18
18
  private maxContextsPerBrowser;
19
19
  private initializing;
20
20
  constructor();
21
+ /** 从池中移除已断连的浏览器,防止在僵尸浏览器上调用 newContext */
22
+ private removeDeadBrowser;
23
+ /** 判断浏览器是否仍然存活 */
24
+ private isBrowserAlive;
25
+ /** 注册浏览器断连监听,自动从池中移除 */
26
+ private watchBrowser;
27
+ /** 清理池中已断连的浏览器 */
28
+ private purgeDeadBrowsers;
21
29
  private ensureInit;
22
30
  /**
23
31
  * 申请一个 BrowserContext(隔离的浏览器上下文);
@@ -1 +1 @@
1
- {"version":3,"file":"web-browser-pool.d.ts","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAa;IAC7B,4CAA4C;IAC5C,OAAO,CAAC,aAAa,CAA+B;IACpD,YAAY;IACZ,OAAO,CAAC,UAAU,CAAS;IAC3B,iCAAiC;IACjC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,YAAY,CAA8B;;YAOpC,UAAU;IA6BxB;;;OAGG;IACG,cAAc,CAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAkClE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"web-browser-pool.d.ts","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAa;IAC7B,4CAA4C;IAC5C,OAAO,CAAC,aAAa,CAA+B;IACpD,YAAY;IACZ,OAAO,CAAC,UAAU,CAAS;IAC3B,iCAAiC;IACjC,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,YAAY,CAA8B;;IAOlD,0CAA0C;IAC1C,OAAO,CAAC,iBAAiB;IASzB,kBAAkB;IAClB,OAAO,CAAC,cAAc;IAItB,wBAAwB;IACxB,OAAO,CAAC,YAAY;IAOpB,kBAAkB;IAClB,OAAO,CAAC,iBAAiB;YAeX,UAAU;IAiCxB;;;OAGG;IACG,cAAc,CAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAyDlE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -23,7 +23,44 @@ export class WebBrowserPool {
23
23
  this.targetSize = Number(process.env.WEB_BROWSER_POOL_SIZE) || 2;
24
24
  this.maxContextsPerBrowser = Number(process.env.WEB_BROWSER_POOL_MAX_CTX_PER_BROWSER) || 4;
25
25
  }
26
+ /** 从池中移除已断连的浏览器,防止在僵尸浏览器上调用 newContext */
27
+ removeDeadBrowser(b) {
28
+ const idx = this.browsers.indexOf(b);
29
+ if (idx !== -1) {
30
+ this.browsers.splice(idx, 1);
31
+ this.loadByBrowser.delete(b);
32
+ logger.info(`[WebBrowserPool] Removed dead browser from pool, remaining=${this.browsers.length}`);
33
+ }
34
+ }
35
+ /** 判断浏览器是否仍然存活 */
36
+ isBrowserAlive(b) {
37
+ return b && !b._closed && b.isConnected();
38
+ }
39
+ /** 注册浏览器断连监听,自动从池中移除 */
40
+ watchBrowser(b) {
41
+ b.on('disconnected', () => {
42
+ logger.warn(`[WebBrowserPool] Browser disconnected event received`);
43
+ this.removeDeadBrowser(b);
44
+ });
45
+ }
46
+ /** 清理池中已断连的浏览器 */
47
+ purgeDeadBrowsers() {
48
+ const before = this.browsers.length;
49
+ this.browsers = this.browsers.filter((b) => {
50
+ const alive = this.isBrowserAlive(b);
51
+ if (!alive) {
52
+ this.loadByBrowser.delete(b);
53
+ logger.warn(`[WebBrowserPool] Purged dead browser during acquireContext`);
54
+ }
55
+ return alive;
56
+ });
57
+ if (this.browsers.length < before) {
58
+ logger.info(`[WebBrowserPool] Purged ${before - this.browsers.length} dead browser(s), remaining=${this.browsers.length}`);
59
+ }
60
+ }
26
61
  async ensureInit() {
62
+ // 先清理已断连的僵尸浏览器
63
+ this.purgeDeadBrowsers();
27
64
  if (this.playwright && this.browsers.length >= this.targetSize)
28
65
  return;
29
66
  if (this.initializing) {
@@ -38,6 +75,7 @@ export class WebBrowserPool {
38
75
  while (this.browsers.length < this.targetSize) {
39
76
  try {
40
77
  const b = await this.playwright.chromium.launch({ headless: false });
78
+ this.watchBrowser(b);
41
79
  this.browsers.push(b);
42
80
  this.loadByBrowser.set(b, 0);
43
81
  logger.info(`[WebBrowserPool] Prewarmed browser, pool=${this.browsers.length}/${this.targetSize}`);
@@ -60,10 +98,15 @@ export class WebBrowserPool {
60
98
  */
61
99
  async acquireContext(contextOptions) {
62
100
  await this.ensureInit();
63
- // 选负载最低的浏览器;若都满了就再额外 launch 一个(不计入池,由 release 时关掉)
101
+ // 选负载最低且存活的浏览器;若都满了就再额外 launch 一个(不计入池,由 release 时关掉)
64
102
  let target = null;
65
103
  let minLoad = Infinity;
66
104
  for (const b of this.browsers) {
105
+ if (!this.isBrowserAlive(b)) {
106
+ // 跳过已断连的浏览器,并清理
107
+ this.removeDeadBrowser(b);
108
+ continue;
109
+ }
67
110
  const load = this.loadByBrowser.get(b) || 0;
68
111
  if (load < minLoad && load < this.maxContextsPerBrowser) {
69
112
  minLoad = load;
@@ -72,30 +115,55 @@ export class WebBrowserPool {
72
115
  }
73
116
  let isExtra = false;
74
117
  if (!target) {
75
- logger.info('[WebBrowserPool] Pool saturated, launching extra browser (will close on release)');
76
- target = await this.playwright.chromium.launch({ headless: false });
118
+ logger.info('[WebBrowserPool] Pool saturated or all dead, launching extra browser (will close on release)');
119
+ const b = await this.playwright.chromium.launch({ headless: false });
120
+ this.watchBrowser(b);
121
+ target = b;
77
122
  isExtra = true;
78
123
  }
79
124
  else {
80
125
  this.loadByBrowser.set(target, (this.loadByBrowser.get(target) || 0) + 1);
81
126
  }
82
- const context = await target.newContext(contextOptions);
83
- const release = async () => {
84
- try {
85
- await context.close();
86
- }
87
- catch { /* ignore */ }
88
- if (isExtra) {
127
+ try {
128
+ const context = await target.newContext(contextOptions);
129
+ const release = async () => {
89
130
  try {
90
- await target.close();
131
+ await context.close();
91
132
  }
92
133
  catch { /* ignore */ }
93
- }
94
- else {
95
- this.loadByBrowser.set(target, Math.max(0, (this.loadByBrowser.get(target) || 1) - 1));
96
- }
97
- };
98
- return { browser: target, context, release };
134
+ if (isExtra) {
135
+ try {
136
+ await target.close();
137
+ }
138
+ catch { /* ignore */ }
139
+ }
140
+ else {
141
+ this.loadByBrowser.set(target, Math.max(0, (this.loadByBrowser.get(target) || 1) - 1));
142
+ }
143
+ };
144
+ return { browser: target, context, release };
145
+ }
146
+ catch (e) {
147
+ // newContext 失败:浏览器可能已断连,清理后重试一次
148
+ logger.warn(`[WebBrowserPool] newContext failed: ${e.message}, retrying with fresh browser`);
149
+ this.removeDeadBrowser(target);
150
+ // 重新补池并重试
151
+ await this.ensureInit();
152
+ const freshBrowser = await this.playwright.chromium.launch({ headless: false });
153
+ this.watchBrowser(freshBrowser);
154
+ const freshContext = await freshBrowser.newContext(contextOptions);
155
+ const release = async () => {
156
+ try {
157
+ await freshContext.close();
158
+ }
159
+ catch { /* ignore */ }
160
+ try {
161
+ await freshBrowser.close();
162
+ }
163
+ catch { /* ignore */ }
164
+ };
165
+ return { browser: freshBrowser, context: freshContext, release };
166
+ }
99
167
  }
100
168
  async closeAll() {
101
169
  for (const b of this.browsers) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-browser-pool.js","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-browser-pool.js","sourceRoot":"","sources":["../../src/debug/web-browser-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IACjB,UAAU,GAAQ,IAAI,CAAC;IACvB,QAAQ,GAAU,EAAE,CAAC;IAC7B,4CAA4C;IACpC,aAAa,GAAqB,IAAI,GAAG,EAAE,CAAC;IACpD,YAAY;IACJ,UAAU,CAAS;IAC3B,iCAAiC;IACzB,qBAAqB,CAAS;IAC9B,YAAY,GAAyB,IAAI,CAAC;IAElD;QACE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;IAED,0CAA0C;IAClC,iBAAiB,CAAC,CAAM;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,8DAA8D,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED,kBAAkB;IACV,cAAc,CAAC,CAAM;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED,wBAAwB;IAChB,YAAY,CAAC,CAAM;QACzB,CAAC,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;YACpE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IACV,iBAAiB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,+BAA+B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,eAAe;QACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QACvE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9C,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;wBACrE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC7B,MAAM,CAAC,IAAI,CAAC,4CAA4C,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBACrG,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,IAAI,CAAC,2CAA4C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC/E,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,cAAuC;QAEvC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,sDAAsD;QACtD,IAAI,MAAM,GAAQ,IAAI,CAAC;QACvB,IAAI,OAAO,GAAG,QAAQ,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,gBAAgB;gBAChB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI,GAAG,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACxD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;YAC5G,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,GAAG,CAAC,CAAC;YACX,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACrD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC;wBAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzF,CAAC;YACH,CAAC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iCAAiC;YACjC,MAAM,CAAC,IAAI,CAAC,uCAAwC,CAAW,CAAC,OAAO,+BAA+B,CAAC,CAAC;YACxG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC/B,UAAU;YACV,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,IAAI,CAAC;oBAAC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBAAC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC5D,CAAC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACnE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiscene/aiserver",
3
- "version": "1.4.5",
3
+ "version": "1.4.6",
4
4
  "description": "AI automation server with device management, task scheduling, and debug capabilities",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",