claude-codex-wechat 0.1.12 → 0.1.13

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/server/cli.js +44 -12
  2. package/package.json +1 -1
@@ -2738,7 +2738,8 @@ var CodexInteractiveRunner = class {
2738
2738
  sessionName: input.options?.sessionName,
2739
2739
  cwd: input.cwd,
2740
2740
  status: "idle",
2741
- pendingMessages: []
2741
+ pendingEvents: [],
2742
+ turnClosed: false
2742
2743
  };
2743
2744
  this.sessions.set(input.bridgeSessionId, session);
2744
2745
  return session;
@@ -2747,8 +2748,10 @@ var CodexInteractiveRunner = class {
2747
2748
  const session = this.sessions.get(input.bridgeSessionId);
2748
2749
  if (!session) throw new Error(`codex_session_not_found:${input.bridgeSessionId}`);
2749
2750
  const client = await this.ensureClient(session);
2750
- session.pendingMessages = [];
2751
+ session.pendingEvents = [];
2752
+ session.activeMessage = void 0;
2751
2753
  session.activeTurnId = void 0;
2754
+ session.turnClosed = false;
2752
2755
  session.turnCompletedPromise = new Promise((resolve2) => {
2753
2756
  session.turnCompletedResolver = resolve2;
2754
2757
  });
@@ -2788,6 +2791,11 @@ var CodexInteractiveRunner = class {
2788
2791
  });
2789
2792
  const maybeTurnId = readTurnId(response);
2790
2793
  if (maybeTurnId) session.activeTurnId = maybeTurnId;
2794
+ for (; ; ) {
2795
+ const event = await this.takeNextEvent(session);
2796
+ if (!event) break;
2797
+ yield event;
2798
+ }
2791
2799
  await session.turnCompletedPromise;
2792
2800
  if (session.threadId) {
2793
2801
  await this.syncThreadForResume({
@@ -2796,11 +2804,6 @@ var CodexInteractiveRunner = class {
2796
2804
  cwd: session.cwd
2797
2805
  });
2798
2806
  }
2799
- for (const message of session.pendingMessages) {
2800
- if (!message.text) continue;
2801
- yield { type: "text_delta", text: message.text };
2802
- yield { type: "message_done" };
2803
- }
2804
2807
  yield {
2805
2808
  type: "session_state",
2806
2809
  state: {
@@ -2826,6 +2829,10 @@ var CodexInteractiveRunner = class {
2826
2829
  turnId: session.activeTurnId
2827
2830
  }).catch(() => void 0);
2828
2831
  }
2832
+ this.flushActiveMessage(session);
2833
+ session.turnClosed = true;
2834
+ session.eventResolver?.();
2835
+ session.eventResolver = void 0;
2829
2836
  session.turnCompletedResolver?.();
2830
2837
  session.turnCompletedResolver = void 0;
2831
2838
  }
@@ -2848,19 +2855,23 @@ var CodexInteractiveRunner = class {
2848
2855
  client.onNotification("item/agentMessage/delta", (params) => {
2849
2856
  const record = params;
2850
2857
  if (typeof record.delta !== "string" || !record.delta) return;
2851
- const itemId = readAgentMessageItemId(record) ?? `fallback-${session.pendingMessages.length}`;
2852
- const last = session.pendingMessages.at(-1);
2853
- if (last?.itemId === itemId) {
2854
- last.text += record.delta;
2858
+ const itemId = readAgentMessageItemId(record) ?? `fallback-${session.pendingEvents.length}`;
2859
+ if (session.activeMessage?.itemId === itemId) {
2860
+ session.activeMessage.text += record.delta;
2855
2861
  return;
2856
2862
  }
2857
- session.pendingMessages.push({ itemId, text: record.delta });
2863
+ this.flushActiveMessage(session);
2864
+ session.activeMessage = { itemId, text: record.delta };
2858
2865
  });
2859
2866
  client.onNotification("turn/started", (params) => {
2860
2867
  const turnId = readTurnId(params);
2861
2868
  if (turnId) session.activeTurnId = turnId;
2862
2869
  });
2863
2870
  client.onNotification("turn/completed", () => {
2871
+ this.flushActiveMessage(session);
2872
+ session.turnClosed = true;
2873
+ session.eventResolver?.();
2874
+ session.eventResolver = void 0;
2864
2875
  session.turnCompletedResolver?.();
2865
2876
  session.turnCompletedResolver = void 0;
2866
2877
  });
@@ -2873,6 +2884,27 @@ var CodexInteractiveRunner = class {
2873
2884
  session.client = client;
2874
2885
  return client;
2875
2886
  }
2887
+ flushActiveMessage(session) {
2888
+ if (!session.activeMessage?.text) return;
2889
+ this.enqueueEvent(session, { type: "text_delta", text: session.activeMessage.text });
2890
+ this.enqueueEvent(session, { type: "message_done" });
2891
+ session.activeMessage = void 0;
2892
+ }
2893
+ enqueueEvent(session, event) {
2894
+ session.pendingEvents.push(event);
2895
+ session.eventResolver?.();
2896
+ session.eventResolver = void 0;
2897
+ }
2898
+ async takeNextEvent(session) {
2899
+ for (; ; ) {
2900
+ const next = session.pendingEvents.shift();
2901
+ if (next) return next;
2902
+ if (session.turnClosed) return null;
2903
+ await new Promise((resolve2) => {
2904
+ session.eventResolver = resolve2;
2905
+ });
2906
+ }
2907
+ }
2876
2908
  };
2877
2909
 
2878
2910
  // src/providers/codex/codexProvider.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-codex-wechat",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "bin": {