@buda-ai/connector 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +27 -16
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -1081,6 +1081,7 @@ var BASE_CONNECTOR_CAPABILITIES = [
1081
1081
  "git"
1082
1082
  ];
1083
1083
  var browserAvailabilityWarningLogged = false;
1084
+ var getBrowserAvailabilityWarning = (browserAvailability) => browserAvailability.available ? null : `${browserAvailability.error} Browser automation is disabled, but shell, filesystem, Git, and coding capabilities remain available.`;
1084
1085
  var getAdvertisedCapabilities = (browserAvailability = resolveBrowserAvailability(), deviceToken) => [
1085
1086
  ...BASE_CONNECTOR_CAPABILITIES,
1086
1087
  ...browserAvailability.available ? ["browser"] : [],
@@ -1089,9 +1090,10 @@ var getAdvertisedCapabilities = (browserAvailability = resolveBrowserAvailabilit
1089
1090
  async function buildPayload(config, extra) {
1090
1091
  const bundle = await readBundledManifest();
1091
1092
  const browserAvailability = resolveBrowserAvailability();
1092
- if (!browserAvailability.available && !browserAvailabilityWarningLogged) {
1093
+ const browserWarning = getBrowserAvailabilityWarning(browserAvailability);
1094
+ if (browserWarning && !browserAvailabilityWarningLogged) {
1093
1095
  browserAvailabilityWarningLogged = true;
1094
- await writeLog("warn", browserAvailability.error);
1096
+ await writeLog("warn", browserWarning);
1095
1097
  }
1096
1098
  return {
1097
1099
  connectorId: config.connectorId,
@@ -2113,6 +2115,7 @@ var isAlreadyExists3 = (error) => error instanceof Error && "code" in error && e
2113
2115
  // src/relay.ts
2114
2116
  var RELAY_PING_INTERVAL_MS = 2e4;
2115
2117
  var RELAY_PONG_TIMEOUT_MS = 1e4;
2118
+ var RELAY_HANDSHAKE_TIMEOUT_MS = 1e4;
2116
2119
  var RELAY_RECONNECT_MAX_MS = 3e4;
2117
2120
  var RELAY_RECONNECT_JITTER = 0.2;
2118
2121
  var RELAY_FAST_RECONNECT_MS = 500;
@@ -2120,6 +2123,22 @@ var CONNECTOR_SOCKET_REPLACED_CLOSE_CODE = 4001;
2120
2123
  var CONNECTOR_SOCKET_REVOKED_CLOSE_CODE = 4003;
2121
2124
  var shouldReconnectConnectorRelay = (closeCode) => closeCode !== CONNECTOR_SOCKET_REPLACED_CLOSE_CODE && closeCode !== CONNECTOR_SOCKET_REVOKED_CLOSE_CODE;
2122
2125
  var getConnectorRelayReconnectBaseDelay = (hadOpenConnection, backoffMs) => hadOpenConnection ? RELAY_FAST_RECONNECT_MS : backoffMs;
2126
+ var formatConnectorRelayError = (error, depth = 0) => {
2127
+ if (depth >= 3) return String(error);
2128
+ const details = [String(error)];
2129
+ if (error && typeof error === "object") {
2130
+ const candidate = error;
2131
+ if (candidate.cause !== void 0) {
2132
+ details.push(`cause=${formatConnectorRelayError(candidate.cause, depth + 1)}`);
2133
+ }
2134
+ if (Array.isArray(candidate.errors) && candidate.errors.length > 0) {
2135
+ details.push(
2136
+ `errors=[${candidate.errors.map((nestedError) => formatConnectorRelayError(nestedError, depth + 1)).join(", ")}]`
2137
+ );
2138
+ }
2139
+ }
2140
+ return [...new Set(details.filter(Boolean))].join(" ") || "Unknown relay error";
2141
+ };
2123
2142
  function startConnectorRelay(config, bunnyDaemon, relayProtocol, workspaceRegistry, launchConfig) {
2124
2143
  let socket = null;
2125
2144
  let reconnectTimer = null;
@@ -2161,10 +2180,7 @@ function startConnectorRelay(config, bunnyDaemon, relayProtocol, workspaceRegist
2161
2180
  try {
2162
2181
  connect();
2163
2182
  } catch (error) {
2164
- void writeLog(
2165
- "warn",
2166
- `relay reconnect threw: ${error instanceof Error ? error.message : error}`
2167
- );
2183
+ void writeLog("warn", `relay reconnect threw: ${formatConnectorRelayError(error)}`);
2168
2184
  scheduleReconnect("connect-throw");
2169
2185
  }
2170
2186
  }, delay);
@@ -2180,7 +2196,8 @@ function startConnectorRelay(config, bunnyDaemon, relayProtocol, workspaceRegist
2180
2196
  headers["X-Buda-Connector-Id"] = config.connectorId;
2181
2197
  if (config.deviceToken) headers["X-Buda-Connector-Device-Token"] = config.deviceToken;
2182
2198
  const ws = new WebSocket(relayUrl, {
2183
- headers: Object.keys(headers).length > 0 ? headers : void 0
2199
+ headers: Object.keys(headers).length > 0 ? headers : void 0,
2200
+ handshakeTimeout: RELAY_HANDSHAKE_TIMEOUT_MS
2184
2201
  });
2185
2202
  socket = ws;
2186
2203
  const inflight = /* @__PURE__ */ new Map();
@@ -2201,10 +2218,7 @@ function startConnectorRelay(config, bunnyDaemon, relayProtocol, workspaceRegist
2201
2218
  try {
2202
2219
  ws.ping();
2203
2220
  } catch (error) {
2204
- void writeLog(
2205
- "warn",
2206
- `relay ping failed: ${error instanceof Error ? error.message : error}`
2207
- );
2221
+ void writeLog("warn", `relay ping failed: ${formatConnectorRelayError(error)}`);
2208
2222
  ws.terminate();
2209
2223
  return;
2210
2224
  }
@@ -2247,7 +2261,7 @@ function startConnectorRelay(config, bunnyDaemon, relayProtocol, workspaceRegist
2247
2261
  scheduleReconnect("close");
2248
2262
  });
2249
2263
  ws.on("error", (error) => {
2250
- void writeLog("warn", `relay error: ${error instanceof Error ? error.message : error}`);
2264
+ void writeLog("warn", `relay error: ${formatConnectorRelayError(error)}`);
2251
2265
  detach();
2252
2266
  scheduleReconnect("error");
2253
2267
  });
@@ -2255,10 +2269,7 @@ function startConnectorRelay(config, bunnyDaemon, relayProtocol, workspaceRegist
2255
2269
  try {
2256
2270
  connect();
2257
2271
  } catch (error) {
2258
- void writeLog(
2259
- "warn",
2260
- `relay initial connect threw: ${error instanceof Error ? error.message : error}`
2261
- );
2272
+ void writeLog("warn", `relay initial connect threw: ${formatConnectorRelayError(error)}`);
2262
2273
  scheduleReconnect("connect-throw");
2263
2274
  }
2264
2275
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buda-ai/connector",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "publishConfig": {