@wishee-ai/openclaw-connector 1.0.2 → 1.0.3

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/connector.js CHANGED
@@ -12,6 +12,7 @@
12
12
  import WebSocket from "ws";
13
13
  import { loadOrCreateBinding, markBound, showBindingQR } from "./binding.js";
14
14
  import { fetchTaskResult } from "./task-result.js";
15
+ import { RunCorrelator, isCompletionLifecycleEnd } from "./task-correlation.js";
15
16
  // ── State ──────────────────────────────────────────────────────
16
17
  let ws = null;
17
18
  let closed = false;
@@ -21,6 +22,12 @@ let unsubAgentEvents = null;
21
22
  let unsubTranscript = null;
22
23
  let bindingState = null;
23
24
  let pluginApi = null;
25
+ /**
26
+ * Maps a sessionKey to the runId the bridge originally dispatched. A
27
+ * `sessions_yield` ends the dispatched run and the real answer resumes under a
28
+ * new runId on the SAME session, so we report the result under the original.
29
+ */
30
+ const correlator = new RunCorrelator();
24
31
  // ── Public API ─────────────────────────────────────────────────
25
32
  export async function startConnector(api, ctx) {
26
33
  pluginApi = api;
@@ -33,11 +40,15 @@ export async function startConnector(api, ctx) {
33
40
  }
34
41
  // Subscribe to agent events
35
42
  unsubAgentEvents = api.runtime.events.onAgentEvent((evt) => {
43
+ // A resumed turn (after sessions_yield) runs under a NEW runId on the same
44
+ // session; remap it back to the originally dispatched runId so the bridge
45
+ // can tie the result to the task it started.
46
+ const outboundRunId = correlator.resolve(evt.sessionKey, evt.runId);
36
47
  sendEvent({
37
48
  type: "event",
38
49
  event: "agent",
39
50
  payload: {
40
- runId: evt.runId,
51
+ runId: outboundRunId,
41
52
  stream: evt.stream,
42
53
  data: evt.data,
43
54
  ts: evt.ts,
@@ -45,12 +56,13 @@ export async function startConnector(api, ctx) {
45
56
  sessionKey: evt.sessionKey,
46
57
  },
47
58
  });
48
- // On lifecycle end, fetch task result after a short delay
49
- if (evt.stream === "lifecycle" && evt.data?.phase === "end") {
59
+ // Fetch the task result only on a genuine completion. A yielded lifecycle
60
+ // end is a pause while a sub-agent runs — not a result.
61
+ if (isCompletionLifecycleEnd(evt.stream, evt.data)) {
50
62
  const sessionKey = evt.sessionKey;
51
63
  if (sessionKey) {
52
64
  setTimeout(() => {
53
- void fetchAndSendTaskResult(evt.runId, sessionKey, ctx.logger);
65
+ void fetchAndSendTaskResult(outboundRunId, sessionKey, ctx.logger);
54
66
  }, 500);
55
67
  }
56
68
  }
@@ -172,12 +184,16 @@ async function handleRpcRequest(req, logger) {
172
184
  switch (method) {
173
185
  case "chat.send": {
174
186
  const p = params;
175
- result = await subagent.run({
187
+ const runResult = await subagent.run({
176
188
  sessionKey: p.sessionKey,
177
189
  message: p.message,
178
190
  deliver: p.deliver,
179
191
  idempotencyKey: p.idempotencyKey,
180
192
  });
193
+ // Remember which runId belongs to this session so a later resumed turn
194
+ // (different runId, same session) is reported under this one.
195
+ correlator.remember(p.sessionKey, runResult.runId);
196
+ result = runResult;
181
197
  break;
182
198
  }
183
199
  case "chat.history": {
@@ -243,10 +259,14 @@ async function fetchAndSendTaskResult(runId, sessionKey, logger) {
243
259
  const subagent = pluginApi?.runtime.subagent;
244
260
  if (!subagent)
245
261
  return;
262
+ // `runId` here is already the originally dispatched runId (resolved by the
263
+ // caller), so the task-result frame is reported under the task the bridge started.
246
264
  const frame = await fetchTaskResult(subagent, runId, sessionKey, logger);
247
265
  if (frame) {
248
266
  sendEvent(frame);
249
267
  logger.info(`[connector] Sent task-result for runId=${runId}`);
268
+ // The task is delivered; drop the mapping so the next dispatch starts clean.
269
+ correlator.forget(sessionKey);
250
270
  }
251
271
  }
252
272
  //# sourceMappingURL=connector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector.js","sourceRoot":"","sources":["../src/connector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Correlation helpers for the yield→resume task lifecycle.
3
+ *
4
+ * When the bridge dispatches a task via chat.send, the OpenClaw run adopts the
5
+ * idempotencyKey as its runId. If the orchestrator calls `sessions_yield`, that
6
+ * run ENDS (with `data.yielded === true`) and the real answer arrives later
7
+ * under a brand-new runId generated by the wake path. The only field stable
8
+ * across that boundary is the `sessionKey`, so we map sessionKey → the original
9
+ * dispatched runId and report the eventual result under it.
10
+ */
11
+ export class RunCorrelator {
12
+ bySession = new Map();
13
+ /** Record the runId the bridge dispatched for a session. */
14
+ remember(sessionKey, runId) {
15
+ this.bySession.set(sessionKey, runId);
16
+ }
17
+ /** Map an event's session back to the original dispatched runId, else fall back. */
18
+ resolve(sessionKey, fallbackRunId) {
19
+ if (sessionKey && this.bySession.has(sessionKey)) {
20
+ return this.bySession.get(sessionKey);
21
+ }
22
+ return fallbackRunId;
23
+ }
24
+ forget(sessionKey) {
25
+ this.bySession.delete(sessionKey);
26
+ }
27
+ }
28
+ /**
29
+ * A lifecycle "end" only means the task is DONE when it is not a yield.
30
+ * A yielded end is a pause while a spawned sub-agent runs — the real answer
31
+ * comes in a later resumed turn — so it must not trigger result delivery.
32
+ */
33
+ export function isCompletionLifecycleEnd(stream, data) {
34
+ if (stream !== "lifecycle" || !data) {
35
+ return false;
36
+ }
37
+ return data.phase === "end" && data.yielded !== true;
38
+ }
39
+ //# sourceMappingURL=task-correlation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-correlation.js","sourceRoot":"","sources":["../src/task-correlation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,OAAO,aAAa;IAChB,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,4DAA4D;IAC5D,QAAQ,CAAC,UAAkB,EAAE,KAAa;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,oFAAoF;IACpF,OAAO,CAAC,UAA8B,EAAE,aAAqB;QAC3D,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;QACzC,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,UAAkB;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA0B,EAC1B,IAAyC;IAEzC,IAAI,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;AACvD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wishee-ai/openclaw-connector",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "description": "Connect OpenClaw to the WISHEE bridge via reverse WebSocket",
6
6
  "main": "dist/index.js",
@@ -17,6 +17,7 @@
17
17
  "clean": "rm -rf dist",
18
18
  "prebuild": "npm run clean",
19
19
  "build": "tsc",
20
+ "test": "vitest run",
20
21
  "prepublishOnly": "npm run build"
21
22
  },
22
23
  "license": "MIT",
@@ -27,15 +28,16 @@
27
28
  "bridge"
28
29
  ],
29
30
  "dependencies": {
30
- "ws": "^8.18.0",
31
- "qrcode-terminal": "^0.12.0"
31
+ "qrcode-terminal": "^0.12.0",
32
+ "ws": "^8.18.0"
32
33
  },
33
34
  "devDependencies": {
34
- "openclaw": "^2026.6.10",
35
- "@types/ws": "^8.5.0",
36
- "@types/qrcode-terminal": "^0.12.0",
37
35
  "@types/node": "^22.0.0",
38
- "typescript": "^5.7.0"
36
+ "@types/qrcode-terminal": "^0.12.0",
37
+ "@types/ws": "^8.5.0",
38
+ "openclaw": "^2026.6.10",
39
+ "typescript": "^5.7.0",
40
+ "vitest": "^4.1.9"
39
41
  },
40
42
  "peerDependencies": {
41
43
  "openclaw": ">=2026.3.0"