@openclawcity/openclawcity 1.0.3 → 1.0.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.
- package/dist/adapter.d.ts +2 -0
- package/dist/index.js +31 -13
- package/package.json +1 -1
package/dist/adapter.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare class OpenClawCityAdapter {
|
|
|
25
25
|
private pingInterval;
|
|
26
26
|
private reconnectTimer;
|
|
27
27
|
private pendingReject;
|
|
28
|
+
private doneResolve;
|
|
29
|
+
readonly done: Promise<void>;
|
|
28
30
|
private readonly gatewayUrl;
|
|
29
31
|
private readonly botId;
|
|
30
32
|
private readonly token;
|
package/dist/index.js
CHANGED
|
@@ -3753,6 +3753,9 @@ var OpenClawCityAdapter = class {
|
|
|
3753
3753
|
reconnectTimer = null;
|
|
3754
3754
|
// Used to reject the openSocket promise on pre-welcome errors
|
|
3755
3755
|
pendingReject = null;
|
|
3756
|
+
// Resolves when stop() is called — keeps startAccount promise pending
|
|
3757
|
+
doneResolve = null;
|
|
3758
|
+
done;
|
|
3756
3759
|
gatewayUrl;
|
|
3757
3760
|
botId;
|
|
3758
3761
|
token;
|
|
@@ -3776,6 +3779,9 @@ var OpenClawCityAdapter = class {
|
|
|
3776
3779
|
this.onError = opts.onError;
|
|
3777
3780
|
this.onStateChange = opts.onStateChange;
|
|
3778
3781
|
this.logger = opts.logger ?? {};
|
|
3782
|
+
this.done = new Promise((resolve) => {
|
|
3783
|
+
this.doneResolve = resolve;
|
|
3784
|
+
});
|
|
3779
3785
|
if (opts.signal) {
|
|
3780
3786
|
opts.signal.addEventListener("abort", () => this.stop(), { once: true });
|
|
3781
3787
|
}
|
|
@@ -3808,6 +3814,7 @@ var OpenClawCityAdapter = class {
|
|
|
3808
3814
|
}
|
|
3809
3815
|
this.closeSocket();
|
|
3810
3816
|
this.setState(ConnectionState.DISCONNECTED);
|
|
3817
|
+
this.doneResolve?.();
|
|
3811
3818
|
}
|
|
3812
3819
|
sendReply(reply) {
|
|
3813
3820
|
this.send(reply);
|
|
@@ -4114,7 +4121,9 @@ var occPlugin = {
|
|
|
4114
4121
|
startAccount: async (ctx) => {
|
|
4115
4122
|
const rt = getRuntime();
|
|
4116
4123
|
const { cfg, accountId, account, abortSignal, log } = ctx;
|
|
4124
|
+
log?.info?.(`[OCC] startAccount called for ${accountId}, abortSignal.aborted=${abortSignal.aborted}`);
|
|
4117
4125
|
ctx.setStatus({ accountId, running: true, connected: false, lastStartAt: Date.now() });
|
|
4126
|
+
log?.info?.(`[OCC] setStatus: running=true, connected=false`);
|
|
4118
4127
|
const adapter = new OpenClawCityAdapter({
|
|
4119
4128
|
config: account,
|
|
4120
4129
|
logger: log,
|
|
@@ -4218,7 +4227,7 @@ var occPlugin = {
|
|
|
4218
4227
|
},
|
|
4219
4228
|
onWelcome: (welcome) => {
|
|
4220
4229
|
const nearby = welcome.nearby_bots ?? welcome.nearby ?? [];
|
|
4221
|
-
log?.info?.(`Connected to OpenClawCity. Location: ${welcome.location?.zoneName ?? "unknown"}, Nearby: ${nearby.length} bots`);
|
|
4230
|
+
log?.info?.(`[OCC] Connected to OpenClawCity. Location: ${welcome.location?.zoneName ?? welcome.location?.zone_name ?? "unknown"}, Nearby: ${nearby.length} bots`);
|
|
4222
4231
|
ctx.setStatus({
|
|
4223
4232
|
accountId,
|
|
4224
4233
|
running: true,
|
|
@@ -4226,28 +4235,24 @@ var occPlugin = {
|
|
|
4226
4235
|
lastConnectedAt: Date.now(),
|
|
4227
4236
|
lastError: null
|
|
4228
4237
|
});
|
|
4238
|
+
log?.info?.(`[OCC] setStatus: running=true, connected=true`);
|
|
4229
4239
|
},
|
|
4230
4240
|
onError: (error) => {
|
|
4231
|
-
log?.error?.(`Server error: ${error.reason}`);
|
|
4241
|
+
log?.error?.(`[OCC] Server error: ${error.reason} \u2014 ${error.message ?? ""}`);
|
|
4232
4242
|
ctx.setStatus({
|
|
4233
4243
|
...ctx.getStatus(),
|
|
4234
4244
|
lastError: `${error.reason}: ${error.message ?? ""}`
|
|
4235
4245
|
});
|
|
4236
4246
|
},
|
|
4237
4247
|
onStateChange: (state) => {
|
|
4238
|
-
log?.
|
|
4239
|
-
if (state === "
|
|
4240
|
-
ctx.setStatus({
|
|
4241
|
-
...ctx.getStatus(),
|
|
4242
|
-
connected: false,
|
|
4243
|
-
lastDisconnect: { at: Date.now() }
|
|
4244
|
-
});
|
|
4245
|
-
} else if (state === "CONNECTED") {
|
|
4248
|
+
log?.info?.(`[OCC] Connection state changed: ${state}`);
|
|
4249
|
+
if (state === "CONNECTED") {
|
|
4246
4250
|
ctx.setStatus({
|
|
4247
4251
|
...ctx.getStatus(),
|
|
4248
4252
|
connected: true,
|
|
4249
4253
|
lastConnectedAt: Date.now()
|
|
4250
4254
|
});
|
|
4255
|
+
log?.info?.(`[OCC] setStatus: connected=true`);
|
|
4251
4256
|
}
|
|
4252
4257
|
}
|
|
4253
4258
|
});
|
|
@@ -4256,9 +4261,13 @@ var occPlugin = {
|
|
|
4256
4261
|
existing.stop();
|
|
4257
4262
|
}
|
|
4258
4263
|
adapters.set(accountId, adapter);
|
|
4264
|
+
log?.info?.(`[OCC] adapter.connect() starting...`);
|
|
4259
4265
|
await adapter.connect();
|
|
4260
|
-
|
|
4261
|
-
|
|
4266
|
+
log?.info?.(`[OCC] adapter.connect() resolved \u2014 connection established`);
|
|
4267
|
+
log?.info?.(`[OCC] Entering keep-alive promise (abortSignal.aborted=${abortSignal.aborted})`);
|
|
4268
|
+
return new Promise((resolve) => {
|
|
4269
|
+
const onAbort = () => {
|
|
4270
|
+
log?.info?.(`[OCC] Abort signal received \u2014 shutting down account ${accountId}`);
|
|
4262
4271
|
adapter.stop();
|
|
4263
4272
|
adapters.delete(accountId);
|
|
4264
4273
|
ctx.setStatus({
|
|
@@ -4267,8 +4276,17 @@ var occPlugin = {
|
|
|
4267
4276
|
connected: false,
|
|
4268
4277
|
lastStopAt: Date.now()
|
|
4269
4278
|
});
|
|
4279
|
+
log?.info?.(`[OCC] setStatus: running=false, connected=false \u2014 resolving keep-alive promise`);
|
|
4280
|
+
resolve();
|
|
4281
|
+
};
|
|
4282
|
+
if (abortSignal.aborted) {
|
|
4283
|
+
log?.warn?.(`[OCC] Abort signal was ALREADY aborted before keep-alive \u2014 resolving immediately`);
|
|
4284
|
+
onAbort();
|
|
4285
|
+
} else {
|
|
4286
|
+
log?.info?.(`[OCC] Keep-alive promise active \u2014 waiting for abort signal`);
|
|
4287
|
+
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
4270
4288
|
}
|
|
4271
|
-
};
|
|
4289
|
+
});
|
|
4272
4290
|
}
|
|
4273
4291
|
}
|
|
4274
4292
|
};
|