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.
- package/dist/server/cli.js +44 -12
- package/package.json +1 -1
package/dist/server/cli.js
CHANGED
|
@@ -2738,7 +2738,8 @@ var CodexInteractiveRunner = class {
|
|
|
2738
2738
|
sessionName: input.options?.sessionName,
|
|
2739
2739
|
cwd: input.cwd,
|
|
2740
2740
|
status: "idle",
|
|
2741
|
-
|
|
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.
|
|
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.
|
|
2852
|
-
|
|
2853
|
-
|
|
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
|
-
|
|
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
|