crewly 1.8.7 → 1.8.9
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/backend/backend/src/constants.d.ts +12 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +12 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +17 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +8 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +15 -7
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +7 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +69 -12
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +122 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js +252 -17
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts +37 -3
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js +140 -23
- package/dist/backend/backend/src/services/browser/browser-relay-adapter.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +75 -0
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js +164 -12
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +12 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +12 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/cli/src/index.js +0 -0
- package/package.json +1 -1
- package/config/constants.d.ts.map +0 -1
- package/config/index.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +0 -169
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +0 -1779
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +0 -513
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +0 -1568
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts +0 -86
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js +0 -147
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +0 -68
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +0 -131
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts +0 -130
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js +0 -263
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +0 -74
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +0 -140
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +0 -29
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +0 -279
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +0 -340
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +0 -1176
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +0 -79
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +0 -145
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts +0 -79
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js +0 -218
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +0 -16
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js +0 -16
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +0 -135
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +0 -185
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +0 -141
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +0 -310
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts +0 -91
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js +0 -143
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts +0 -103
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js +0 -256
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +0 -143
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +0 -264
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +0 -13
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +0 -91
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +0 -135
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +0 -1937
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +0 -1
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts +0 -429
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js +0 -852
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +0 -171
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +0 -725
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +0 -1
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts +0 -118
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js +0 -326
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js.map +0 -1
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +0 -74
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +0 -154
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +0 -1
- package/dist/backend/backend/src/types/auto-assign.types.d.ts +0 -271
- package/dist/backend/backend/src/types/auto-assign.types.d.ts.map +0 -1
- package/dist/backend/backend/src/types/auto-assign.types.js +0 -136
- package/dist/backend/backend/src/types/auto-assign.types.js.map +0 -1
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts +0 -111
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +0 -1
- package/dist/backend/backend/src/utils/esm-require.utils.js +0 -124
- package/dist/backend/backend/src/utils/esm-require.utils.js.map +0 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +0 -220
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +0 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js +0 -37
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts +0 -56
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js +0 -91
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts +0 -159
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js +0 -304
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts +0 -115
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js +0 -215
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js.map +0 -1
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts +0 -78
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts.map +0 -1
- package/dist/cli/backend/src/services/memory/embedding-provider.js +0 -179
- package/dist/cli/backend/src/services/memory/embedding-provider.js.map +0 -1
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts +0 -331
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/memory/vector-store.service.js +0 -814
- package/dist/cli/backend/src/services/memory/vector-store.service.js.map +0 -1
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts +0 -171
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/project/task-tracking.service.js +0 -725
- package/dist/cli/backend/src/services/project/task-tracking.service.js.map +0 -1
- package/dist/cli/backend/src/types/auto-assign.types.d.ts +0 -271
- package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +0 -1
- package/dist/cli/backend/src/types/auto-assign.types.js +0 -136
- package/dist/cli/backend/src/types/auto-assign.types.js.map +0 -1
|
@@ -11,11 +11,37 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module services/browser/browser-proxy.service
|
|
13
13
|
*/
|
|
14
|
+
import { EventEmitter } from 'events';
|
|
14
15
|
import WebSocket from 'ws';
|
|
15
16
|
import { LoggerService } from '../core/logger.service.js';
|
|
16
17
|
import { BROWSER_BRIDGE_CONSTANTS, BROWSER_PROXY_CONSTANTS } from '../../constants.js';
|
|
17
18
|
/** Default relay WebSocket URL. */
|
|
18
19
|
const DEFAULT_RELAY_URL = 'wss://api.crewlyai.com/relay';
|
|
20
|
+
/**
|
|
21
|
+
* Decode the `sub` (account id) claim from a JWT WITHOUT verifying the
|
|
22
|
+
* signature — used only to derive a stable load-balancer stickiness key
|
|
23
|
+
* (`?rk=`), never for any auth decision. Stable across token refreshes
|
|
24
|
+
* (the `sub` doesn't change when the token rotates), which is exactly what
|
|
25
|
+
* the sticky-by-account routing needs.
|
|
26
|
+
*
|
|
27
|
+
* @param token - a JWT (relay-signed access token), or null
|
|
28
|
+
* @returns the `sub` string, or null if absent/unparseable
|
|
29
|
+
*/
|
|
30
|
+
export function decodeJwtSub(token) {
|
|
31
|
+
if (!token)
|
|
32
|
+
return null;
|
|
33
|
+
try {
|
|
34
|
+
const payload = token.split('.')[1];
|
|
35
|
+
if (!payload)
|
|
36
|
+
return null;
|
|
37
|
+
const json = Buffer.from(payload.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString('utf8');
|
|
38
|
+
const sub = JSON.parse(json).sub;
|
|
39
|
+
return typeof sub === 'string' && sub.length > 0 ? sub : null;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
19
45
|
/** Heartbeat interval to keep the relay connection alive (ms). */
|
|
20
46
|
const HEARTBEAT_INTERVAL_MS = 25_000;
|
|
21
47
|
/** Reconnect delay after disconnection (ms). */
|
|
@@ -77,8 +103,53 @@ export class BrowserProxyService {
|
|
|
77
103
|
reconnectAttempts = 0;
|
|
78
104
|
/** Callback to resolve a fresh token on reconnect (avoids stale JWT) */
|
|
79
105
|
tokenResolver = null;
|
|
106
|
+
/**
|
|
107
|
+
* Stable device identity tag attached to register frames for OBSERVABILITY
|
|
108
|
+
* only (so the relay/UI can render "drivable from: macbookpro.lan"). Never
|
|
109
|
+
* used for routing — DEVICE-OBSERVABILITY-NOT-ROUTING invariant. Loaded
|
|
110
|
+
* lazily from DeviceIdentityService on first connect; falls back to a
|
|
111
|
+
* synthesized id if identity lookup fails.
|
|
112
|
+
*/
|
|
113
|
+
deviceId = null;
|
|
114
|
+
/**
|
|
115
|
+
* Heartbeat-ack watchdog timer. Armed when a `heartbeat` is sent and cleared
|
|
116
|
+
* when the matching `heartbeat_ack` arrives. If it fires (no ack within
|
|
117
|
+
* {@link BROWSER_PROXY_CONSTANTS.HEARTBEAT_ACK_DEADLINE_MS}) the relay socket
|
|
118
|
+
* is treated as dead/half-open and the proxy reconnects proactively rather
|
|
119
|
+
* than riding the socket until the relay's 180s 4002 eviction. LIVENESS
|
|
120
|
+
* invariant — see the long-term browser-relay fix design.
|
|
121
|
+
*/
|
|
122
|
+
heartbeatAckTimer = null;
|
|
123
|
+
/**
|
|
124
|
+
* Event bus for browser-instance lifecycle. Subscribers (currently the
|
|
125
|
+
* BrowserRelayAdapter) listen here for `instance_connected` and
|
|
126
|
+
* `instance_disconnected` so they can mirror the proxy's instances Map
|
|
127
|
+
* without re-implementing the relay listener.
|
|
128
|
+
*
|
|
129
|
+
* Why this exists (2026-05-23): the adapter previously listened to
|
|
130
|
+
* CloudSyncService device events to learn about extensions, but Sync
|
|
131
|
+
* only tracks orchestrators — never browser-role devices. As a result
|
|
132
|
+
* BrowserBridge.getStatus() reported `relayDeviceId: null` even when the
|
|
133
|
+
* proxy was actively talking to a paired extension, and agent dispatch
|
|
134
|
+
* via the bridge silently failed. Routing through this emitter lets the
|
|
135
|
+
* adapter learn from the proxy's direct relay channel (the canonical
|
|
136
|
+
* source of truth for browser presence) instead of from Sync.
|
|
137
|
+
*
|
|
138
|
+
* Events:
|
|
139
|
+
* - `instance_connected({ instanceId, instanceName, sessionId? })`
|
|
140
|
+
* - `instance_disconnected({ instanceId, instanceName? })`
|
|
141
|
+
*
|
|
142
|
+
* Both events fire from `handleBrowserEvent` and from `handleBrowserList`
|
|
143
|
+
* diff (in case the relay drops a `browser_event` push and only resends
|
|
144
|
+
* the full list).
|
|
145
|
+
*/
|
|
146
|
+
events = new EventEmitter();
|
|
80
147
|
constructor() {
|
|
81
148
|
this.logger = LoggerService.getInstance().createComponentLogger('BrowserProxy');
|
|
149
|
+
// Avoid noisy `MaxListenersExceededWarning` under aggressive reconnect /
|
|
150
|
+
// adapter rebind cycles. Realistic subscriber count is 1–2 (adapter +
|
|
151
|
+
// possible future telemetry); 20 is comfortable headroom.
|
|
152
|
+
this.events.setMaxListeners(20);
|
|
82
153
|
}
|
|
83
154
|
/**
|
|
84
155
|
* Get the singleton instance.
|
|
@@ -109,6 +180,48 @@ export class BrowserProxyService {
|
|
|
109
180
|
setTokenResolver(resolver) {
|
|
110
181
|
this.tokenResolver = resolver;
|
|
111
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Build the relay register frame for role 'agent'.
|
|
185
|
+
*
|
|
186
|
+
* Attaches the stable {@link deviceId} for observability (so the relay and
|
|
187
|
+
* UI can show which device a backend is reachable from) and a `pairingCode`
|
|
188
|
+
* derived from the deviceId rather than a throwaway `Date.now()` value, so
|
|
189
|
+
* the same backend presents a consistent identity across re-registers.
|
|
190
|
+
*
|
|
191
|
+
* @returns The register message object to send to the relay
|
|
192
|
+
*/
|
|
193
|
+
buildRegisterFrame() {
|
|
194
|
+
const pairingCode = this.deviceId
|
|
195
|
+
? `backend-proxy-${this.deviceId}`
|
|
196
|
+
: `backend-proxy-${Date.now()}`;
|
|
197
|
+
return {
|
|
198
|
+
type: 'register',
|
|
199
|
+
role: 'agent',
|
|
200
|
+
pairingCode,
|
|
201
|
+
token: this.authToken,
|
|
202
|
+
// OBSERVABILITY ONLY — never consulted for routing (the relay scopes by
|
|
203
|
+
// userId). See DEVICE-OBSERVABILITY-NOT-ROUTING invariant.
|
|
204
|
+
...(this.deviceId ? { deviceId: this.deviceId } : {}),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Lazily resolve and cache the stable device id from DeviceIdentityService.
|
|
209
|
+
* Best-effort: on failure leaves {@link deviceId} null and register frames
|
|
210
|
+
* simply omit the observability tag (backward compatible).
|
|
211
|
+
*/
|
|
212
|
+
async ensureDeviceId() {
|
|
213
|
+
if (this.deviceId)
|
|
214
|
+
return;
|
|
215
|
+
try {
|
|
216
|
+
const { DeviceIdentityService } = await import('../cloud/device-identity.service.js');
|
|
217
|
+
this.deviceId = await DeviceIdentityService.getInstance().getDeviceId();
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
this.logger.debug('Could not resolve deviceId for relay register (non-fatal)', {
|
|
221
|
+
error: err instanceof Error ? err.message : String(err),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
112
225
|
/**
|
|
113
226
|
* Called externally when the auth token has been refreshed (e.g., by CloudClientService).
|
|
114
227
|
* Updates the stored token so the next heartbeat/reconnect uses the fresh one.
|
|
@@ -134,12 +247,7 @@ export class BrowserProxyService {
|
|
|
134
247
|
// The relay should respond with a new 'registered' message without dropping
|
|
135
248
|
// the existing session, but if it does close, handleDisconnect will auto-reconnect.
|
|
136
249
|
if (this.state === 'connected' && this.ws?.readyState === WebSocket.OPEN) {
|
|
137
|
-
this.sendRaw(
|
|
138
|
-
type: 'register',
|
|
139
|
-
role: 'agent',
|
|
140
|
-
pairingCode: `backend-proxy-${Date.now()}`,
|
|
141
|
-
token: this.authToken,
|
|
142
|
-
});
|
|
250
|
+
this.sendRaw(this.buildRegisterFrame());
|
|
143
251
|
return;
|
|
144
252
|
}
|
|
145
253
|
// If disconnected and auto-reconnect is enabled but no reconnect is pending,
|
|
@@ -160,6 +268,30 @@ export class BrowserProxyService {
|
|
|
160
268
|
* @param token - JWT auth token for relay registration
|
|
161
269
|
* @param relayUrl - Optional relay URL override
|
|
162
270
|
*/
|
|
271
|
+
/**
|
|
272
|
+
* Append the account-stickiness key (`?rk=<userId>`) to the relay URL.
|
|
273
|
+
*
|
|
274
|
+
* The cloud relay runs as 2+ nodes behind an nginx `hash $arg_rk consistent`
|
|
275
|
+
* upstream. browserRegistry is per-process in-memory (no cross-node sharing),
|
|
276
|
+
* so a backend agent and its account's browser MUST land on the SAME node to
|
|
277
|
+
* pair. We pin by account: derive the userId from the relay JWT's `sub` claim
|
|
278
|
+
* (stable across token refreshes — unlike the rotating token itself) and pass
|
|
279
|
+
* it as `?rk=`. The Chrome extension passes the SAME key, so both pin to one
|
|
280
|
+
* node. If the token can't be decoded, we omit `rk` (nginx hashes empty → all
|
|
281
|
+
* keyless clients co-locate, still consistent). The `ws` lib strips the query
|
|
282
|
+
* before matching path '/relay', so this is transparent to the relay server.
|
|
283
|
+
*
|
|
284
|
+
* @param baseUrl - the relay wss URL (e.g. wss://api.crewlyai.com/relay)
|
|
285
|
+
* @param token - the relay-signed JWT whose `sub` is the account id
|
|
286
|
+
* @returns the URL with `?rk=<sub>` appended when derivable, else baseUrl
|
|
287
|
+
*/
|
|
288
|
+
buildStickyRelayUrl(baseUrl, token) {
|
|
289
|
+
const rk = decodeJwtSub(token);
|
|
290
|
+
if (!rk)
|
|
291
|
+
return baseUrl;
|
|
292
|
+
const sep = baseUrl.includes('?') ? '&' : '?';
|
|
293
|
+
return `${baseUrl}${sep}rk=${encodeURIComponent(rk)}`;
|
|
294
|
+
}
|
|
163
295
|
connect(token, relayUrl) {
|
|
164
296
|
if (this.state !== 'disconnected') {
|
|
165
297
|
this.logger.warn('Already connected or connecting to relay');
|
|
@@ -186,15 +318,16 @@ export class BrowserProxyService {
|
|
|
186
318
|
}
|
|
187
319
|
this.ws = null;
|
|
188
320
|
}
|
|
189
|
-
this.ws = new WebSocket(this.relayUrl);
|
|
321
|
+
this.ws = new WebSocket(this.buildStickyRelayUrl(this.relayUrl, this.authToken));
|
|
190
322
|
this.ws.on('open', () => {
|
|
191
323
|
this.logger.info('Relay WebSocket connected, registering as agent');
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
324
|
+
// Register synchronously so liveness/registration is not delayed by the
|
|
325
|
+
// (async) device-identity lookup. The deviceId observability tag is
|
|
326
|
+
// included if already cached; otherwise the frame omits it (backward
|
|
327
|
+
// compatible) and a background ensureDeviceId() primes it so subsequent
|
|
328
|
+
// re-registers (token refresh / reconnect) carry the tag.
|
|
329
|
+
this.sendRaw(this.buildRegisterFrame());
|
|
330
|
+
void this.ensureDeviceId();
|
|
198
331
|
});
|
|
199
332
|
this.ws.on('message', (data) => {
|
|
200
333
|
this.handleMessage(typeof data === 'string' ? data : data.toString('utf8'));
|
|
@@ -249,6 +382,17 @@ export class BrowserProxyService {
|
|
|
249
382
|
getInstances() {
|
|
250
383
|
return Array.from(this.instances.values());
|
|
251
384
|
}
|
|
385
|
+
/**
|
|
386
|
+
* Get this backend's stable device id, when resolved.
|
|
387
|
+
*
|
|
388
|
+
* Observability only — surfaced in /api/browser/status so the UI can show
|
|
389
|
+
* which device a browser is "drivable from". Never a routing input.
|
|
390
|
+
*
|
|
391
|
+
* @returns The device id, or null if not yet resolved
|
|
392
|
+
*/
|
|
393
|
+
getDeviceId() {
|
|
394
|
+
return this.deviceId;
|
|
395
|
+
}
|
|
252
396
|
/**
|
|
253
397
|
* Send a browser command to a specific instance (or the only connected one).
|
|
254
398
|
*
|
|
@@ -438,7 +582,9 @@ export class BrowserProxyService {
|
|
|
438
582
|
break;
|
|
439
583
|
}
|
|
440
584
|
case 'heartbeat_ack':
|
|
441
|
-
// Heartbeat acknowledged — connection is healthy
|
|
585
|
+
// Heartbeat acknowledged — connection is healthy. Clear the watchdog
|
|
586
|
+
// so it does not fire a false reconnect. (LIVENESS invariant.)
|
|
587
|
+
this.clearHeartbeatAckWatchdog();
|
|
442
588
|
break;
|
|
443
589
|
case 'error':
|
|
444
590
|
this.handleRelayError(msg);
|
|
@@ -507,6 +653,12 @@ export class BrowserProxyService {
|
|
|
507
653
|
*/
|
|
508
654
|
handleBrowserList(instances) {
|
|
509
655
|
const now = new Date().toISOString();
|
|
656
|
+
// Capture the prior snapshot so we can compute connect/disconnect deltas
|
|
657
|
+
// for the event emitter — needed because relay sometimes resends the full
|
|
658
|
+
// list instead of (or in addition to) browser_event push messages, and
|
|
659
|
+
// subscribers like BrowserRelayAdapter need to see those transitions.
|
|
660
|
+
const previousIds = new Set(this.instances.keys());
|
|
661
|
+
const previousInfo = new Map(this.instances);
|
|
510
662
|
this.instances.clear();
|
|
511
663
|
for (const inst of instances) {
|
|
512
664
|
this.instances.set(inst.instanceId, {
|
|
@@ -514,6 +666,27 @@ export class BrowserProxyService {
|
|
|
514
666
|
lastSeenAt: inst.lastSeenAt || now,
|
|
515
667
|
});
|
|
516
668
|
}
|
|
669
|
+
// Emit add/remove transitions so the BrowserRelayAdapter (and any future
|
|
670
|
+
// subscribers) can mirror the proxy's view without re-implementing the
|
|
671
|
+
// relay listener. Same source of truth, single channel.
|
|
672
|
+
for (const inst of this.instances.values()) {
|
|
673
|
+
if (!previousIds.has(inst.instanceId)) {
|
|
674
|
+
this.events.emit('instance_connected', {
|
|
675
|
+
instanceId: inst.instanceId,
|
|
676
|
+
instanceName: inst.instanceName,
|
|
677
|
+
sessionId: inst.sessionId,
|
|
678
|
+
});
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
for (const oldId of previousIds) {
|
|
682
|
+
if (!this.instances.has(oldId)) {
|
|
683
|
+
const prev = previousInfo.get(oldId);
|
|
684
|
+
this.events.emit('instance_disconnected', {
|
|
685
|
+
instanceId: oldId,
|
|
686
|
+
instanceName: prev?.instanceName,
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
}
|
|
517
690
|
// Dedup pass: for each fingerprint group with >1 entries, keep the
|
|
518
691
|
// freshest by lastSeenAt and let dedupByFingerprint delete the rest.
|
|
519
692
|
const fingerprintGroups = new Map();
|
|
@@ -571,15 +744,19 @@ export class BrowserProxyService {
|
|
|
571
744
|
const deviceFingerprint = typeof rawFingerprint === 'string' && rawFingerprint.length > 0
|
|
572
745
|
? rawFingerprint
|
|
573
746
|
: undefined;
|
|
747
|
+
const rawDeviceId = msg.deviceId;
|
|
748
|
+
const deviceId = typeof rawDeviceId === 'string' && rawDeviceId.length > 0 ? rawDeviceId : undefined;
|
|
574
749
|
const now = new Date().toISOString();
|
|
575
750
|
switch (event) {
|
|
576
751
|
case 'connected': {
|
|
752
|
+
const isNew = !this.instances.has(instanceId);
|
|
577
753
|
const incoming = {
|
|
578
754
|
instanceId,
|
|
579
755
|
instanceName,
|
|
580
756
|
sessionId: '', // Will be populated by next list_browsers
|
|
581
757
|
lastSeenAt: now,
|
|
582
758
|
deviceFingerprint,
|
|
759
|
+
deviceId,
|
|
583
760
|
};
|
|
584
761
|
this.instances.set(instanceId, incoming);
|
|
585
762
|
this.dedupByFingerprint(incoming);
|
|
@@ -588,14 +765,25 @@ export class BrowserProxyService {
|
|
|
588
765
|
instanceName,
|
|
589
766
|
hasFingerprint: deviceFingerprint !== undefined,
|
|
590
767
|
});
|
|
768
|
+
if (isNew) {
|
|
769
|
+
this.events.emit('instance_connected', {
|
|
770
|
+
instanceId,
|
|
771
|
+
instanceName,
|
|
772
|
+
sessionId: '',
|
|
773
|
+
});
|
|
774
|
+
}
|
|
591
775
|
// Refresh full list to get sessionId
|
|
592
776
|
this.sendRaw({ type: 'list_browsers' });
|
|
593
777
|
break;
|
|
594
778
|
}
|
|
595
|
-
case 'disconnected':
|
|
596
|
-
this.instances.delete(instanceId);
|
|
779
|
+
case 'disconnected': {
|
|
780
|
+
const existed = this.instances.delete(instanceId);
|
|
597
781
|
this.logger.info('Browser instance disconnected', { instanceId, instanceName });
|
|
782
|
+
if (existed) {
|
|
783
|
+
this.events.emit('instance_disconnected', { instanceId, instanceName });
|
|
784
|
+
}
|
|
598
785
|
break;
|
|
786
|
+
}
|
|
599
787
|
case 'updated': {
|
|
600
788
|
// Update name and lastSeenAt
|
|
601
789
|
const existing = this.instances.get(instanceId);
|
|
@@ -672,6 +860,11 @@ export class BrowserProxyService {
|
|
|
672
860
|
return;
|
|
673
861
|
}
|
|
674
862
|
this.sendRaw({ type: 'heartbeat' });
|
|
863
|
+
// Arm the ack watchdog: the relay must reply with heartbeat_ack within
|
|
864
|
+
// HEARTBEAT_ACK_DEADLINE_MS or we treat the socket as half-open and
|
|
865
|
+
// reconnect proactively (instead of riding it until the relay's 180s
|
|
866
|
+
// 4002 eviction, which produced the observed ~3min churn loop).
|
|
867
|
+
this.armHeartbeatAckWatchdog();
|
|
675
868
|
this.heartbeatTickCounter += 1;
|
|
676
869
|
if (this.heartbeatTickCounter % BROWSER_PROXY_CONSTANTS.LIST_REFRESH_EVERY_N_HEARTBEATS
|
|
677
870
|
=== 0) {
|
|
@@ -686,13 +879,47 @@ export class BrowserProxyService {
|
|
|
686
879
|
}, HEARTBEAT_INTERVAL_MS);
|
|
687
880
|
}
|
|
688
881
|
/**
|
|
689
|
-
* Stop heartbeat interval.
|
|
882
|
+
* Stop heartbeat interval and disarm the ack watchdog.
|
|
690
883
|
*/
|
|
691
884
|
stopHeartbeat() {
|
|
692
885
|
if (this.heartbeatTimer) {
|
|
693
886
|
clearInterval(this.heartbeatTimer);
|
|
694
887
|
this.heartbeatTimer = null;
|
|
695
888
|
}
|
|
889
|
+
this.clearHeartbeatAckWatchdog();
|
|
890
|
+
}
|
|
891
|
+
/**
|
|
892
|
+
* Arm the heartbeat-ack watchdog if it is not already armed.
|
|
893
|
+
*
|
|
894
|
+
* Crucially, this does NOT reset an already-running watchdog: the deadline
|
|
895
|
+
* is anchored to the FIRST un-acked heartbeat. If it reset on every
|
|
896
|
+
* heartbeat send, a half-open socket (where sends silently succeed into the
|
|
897
|
+
* void) would keep pushing the deadline forward and the watchdog would never
|
|
898
|
+
* fire — re-opening the exact half-open-socket churn this guards against.
|
|
899
|
+
* A received `heartbeat_ack` clears the watchdog, after which the next
|
|
900
|
+
* heartbeat re-arms it fresh.
|
|
901
|
+
*/
|
|
902
|
+
armHeartbeatAckWatchdog() {
|
|
903
|
+
if (this.heartbeatAckTimer)
|
|
904
|
+
return;
|
|
905
|
+
this.heartbeatAckTimer = setTimeout(() => {
|
|
906
|
+
this.heartbeatAckTimer = null;
|
|
907
|
+
this.logger.warn('No heartbeat_ack within deadline — relay socket presumed half-open, reconnecting', { deadlineMs: BROWSER_PROXY_CONSTANTS.HEARTBEAT_ACK_DEADLINE_MS });
|
|
908
|
+
this.stopHeartbeat();
|
|
909
|
+
this.handleDisconnect();
|
|
910
|
+
}, BROWSER_PROXY_CONSTANTS.HEARTBEAT_ACK_DEADLINE_MS);
|
|
911
|
+
if (this.heartbeatAckTimer.unref)
|
|
912
|
+
this.heartbeatAckTimer.unref();
|
|
913
|
+
}
|
|
914
|
+
/**
|
|
915
|
+
* Clear the heartbeat-ack watchdog timer if armed. Safe to call when no
|
|
916
|
+
* timer is running (null guard).
|
|
917
|
+
*/
|
|
918
|
+
clearHeartbeatAckWatchdog() {
|
|
919
|
+
if (this.heartbeatAckTimer) {
|
|
920
|
+
clearTimeout(this.heartbeatAckTimer);
|
|
921
|
+
this.heartbeatAckTimer = null;
|
|
922
|
+
}
|
|
696
923
|
}
|
|
697
924
|
/**
|
|
698
925
|
* Start the wall-clock TTL sweep timer.
|
|
@@ -721,6 +948,10 @@ export class BrowserProxyService {
|
|
|
721
948
|
// Bad timestamp — treat as stale to drain garbage rather than keep
|
|
722
949
|
// a row we cannot reason about.
|
|
723
950
|
this.instances.delete(instanceId);
|
|
951
|
+
this.events.emit('instance_disconnected', {
|
|
952
|
+
instanceId,
|
|
953
|
+
instanceName: info.instanceName,
|
|
954
|
+
});
|
|
724
955
|
this.logger.info('Purged browser instance with unparseable lastSeenAt', {
|
|
725
956
|
instanceId,
|
|
726
957
|
instanceName: info.instanceName,
|
|
@@ -730,6 +961,10 @@ export class BrowserProxyService {
|
|
|
730
961
|
}
|
|
731
962
|
if (now - lastSeenMs > BROWSER_PROXY_CONSTANTS.STALE_PURGE_THRESHOLD_MS) {
|
|
732
963
|
this.instances.delete(instanceId);
|
|
964
|
+
this.events.emit('instance_disconnected', {
|
|
965
|
+
instanceId,
|
|
966
|
+
instanceName: info.instanceName,
|
|
967
|
+
});
|
|
733
968
|
this.logger.info('Purged stale browser instance', {
|
|
734
969
|
instanceId,
|
|
735
970
|
instanceName: info.instanceName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-proxy.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-proxy.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-proxy.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-proxy.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,18 @@ export declare class BrowserRelayAdapter {
|
|
|
50
50
|
private boundDeviceOnlineHandler;
|
|
51
51
|
private boundDeviceOfflineHandler;
|
|
52
52
|
private boundDevicesUpdatedHandler;
|
|
53
|
+
/**
|
|
54
|
+
* Bound handlers for the BrowserProxy event channel — the primary
|
|
55
|
+
* signal source after 2026-05-23. The Sync handlers above remain wired
|
|
56
|
+
* as a belt-and-suspenders fallback for legacy code paths that still
|
|
57
|
+
* push browser devices through Sync, but in current production those
|
|
58
|
+
* events never fire (CloudSyncService only tracks orchestrator-role
|
|
59
|
+
* devices). The proxy listens directly to the Cloud relay's browser_list
|
|
60
|
+
* / browser_event channel, which is the canonical source of truth for
|
|
61
|
+
* extension presence.
|
|
62
|
+
*/
|
|
63
|
+
private boundProxyConnectedHandler;
|
|
64
|
+
private boundProxyDisconnectedHandler;
|
|
53
65
|
private constructor();
|
|
54
66
|
/**
|
|
55
67
|
* Get the singleton instance.
|
|
@@ -75,10 +87,18 @@ export declare class BrowserRelayAdapter {
|
|
|
75
87
|
*/
|
|
76
88
|
getExtensionDeviceId(): string | null;
|
|
77
89
|
/**
|
|
78
|
-
* Whether the relay adapter
|
|
79
|
-
*
|
|
90
|
+
* Whether the relay adapter has a known extension target via the
|
|
91
|
+
* BrowserProxy event channel.
|
|
92
|
+
*
|
|
93
|
+
* Single liveness definition (2026-05-28 browser-relay fix): availability is
|
|
94
|
+
* derived from the BrowserProxy — the canonical source of truth for browser
|
|
95
|
+
* presence on the Cloud relay — NOT from the CloudSyncService state. The
|
|
96
|
+
* former CloudSync `getState() === 'syncing'` gate was dead in production
|
|
97
|
+
* (Sync only tracks orchestrator-role devices, never browser-role), so it
|
|
98
|
+
* reported a liveness that disagreed with `proxy.isAvailable()`. Collapsing
|
|
99
|
+
* to the proxy removes that disagreement (REGISTRY-TRUTH invariant).
|
|
80
100
|
*
|
|
81
|
-
* @returns True if
|
|
101
|
+
* @returns True if the proxy reports a drivable browser and we have a target
|
|
82
102
|
*/
|
|
83
103
|
isAvailable(): boolean;
|
|
84
104
|
/**
|
|
@@ -113,6 +133,20 @@ export declare class BrowserRelayAdapter {
|
|
|
113
133
|
* Also scans the current device list on startup for already-online extensions.
|
|
114
134
|
*/
|
|
115
135
|
startAutoDiscovery(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Handle `instance_connected` from BrowserProxy — adopt as the relay
|
|
138
|
+
* target if we don't already have one (or if the existing one is gone).
|
|
139
|
+
*
|
|
140
|
+
* @param evt - Connected instance info
|
|
141
|
+
*/
|
|
142
|
+
private onProxyInstanceConnected;
|
|
143
|
+
/**
|
|
144
|
+
* Handle `instance_disconnected` from BrowserProxy — clear the relay
|
|
145
|
+
* target only if it matches the disconnecting instance.
|
|
146
|
+
*
|
|
147
|
+
* @param evt - Disconnected instance info
|
|
148
|
+
*/
|
|
149
|
+
private onProxyInstanceDisconnected;
|
|
116
150
|
/**
|
|
117
151
|
* Stop listening for device events.
|
|
118
152
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-relay-adapter.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-relay-adapter.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAkB,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAkB1F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,cAAc,CAAK;IAC3B,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAuB;IAChD,iDAAiD;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,2CAA2C;IAC3C,OAAO,CAAC,wBAAwB,CAA+C;IAC/E,OAAO,CAAC,yBAAyB,CAA+C;IAChF,OAAO,CAAC,0BAA0B,CAAkD;
|
|
1
|
+
{"version":3,"file":"browser-relay-adapter.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/browser-relay-adapter.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAkB,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAkB1F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,cAAc,CAAK;IAC3B,2EAA2E;IAC3E,OAAO,CAAC,iBAAiB,CAAuB;IAChD,iDAAiD;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,2CAA2C;IAC3C,OAAO,CAAC,wBAAwB,CAA+C;IAC/E,OAAO,CAAC,yBAAyB,CAA+C;IAChF,OAAO,CAAC,0BAA0B,CAAkD;IACpF;;;;;;;;;OASG;IACH,OAAO,CAAC,0BAA0B,CAElB;IAChB,OAAO,CAAC,6BAA6B,CAErB;IAEhB,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,mBAAmB;IAOzC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAO5B;;;;;OAKG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK5C;;;;OAIG;IACH,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,OAAO;IAgBtB;;;;;;;;;OASG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,GAAE,MAAoD,EAC/D,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC;IAkClC;;;;;OAKG;IACH,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAsB3D;;;;OAIG;IACH,eAAe,IAAI,MAAM;IAQzB;;;;;;OAMG;IACH,kBAAkB,IAAI,IAAI;IA+E1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAahC;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IASnC;;OAEG;IACH,iBAAiB,IAAI,IAAI;IA8CzB;;;;OAIG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,IAAI,IAAI;CAShB"}
|