claude-codex-wechat 0.1.11 → 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 +59 -7
- package/package.json +1 -1
package/dist/server/cli.js
CHANGED
|
@@ -2686,6 +2686,18 @@ var CodexAppServerClient = class {
|
|
|
2686
2686
|
};
|
|
2687
2687
|
|
|
2688
2688
|
// src/providers/codex/codexInteractiveRunner.ts
|
|
2689
|
+
function readAgentMessageItemId(value) {
|
|
2690
|
+
if (!value || typeof value !== "object") return void 0;
|
|
2691
|
+
const record = value;
|
|
2692
|
+
if (typeof record.itemId === "string" && record.itemId) return record.itemId;
|
|
2693
|
+
if (typeof record.id === "string" && record.id) return record.id;
|
|
2694
|
+
if (record.item && typeof record.item === "object") {
|
|
2695
|
+
const item = record.item;
|
|
2696
|
+
if (typeof item.id === "string" && item.id) return item.id;
|
|
2697
|
+
if (typeof item.itemId === "string" && item.itemId) return item.itemId;
|
|
2698
|
+
}
|
|
2699
|
+
return void 0;
|
|
2700
|
+
}
|
|
2689
2701
|
function readThreadId(value) {
|
|
2690
2702
|
if (!value || typeof value !== "object") return void 0;
|
|
2691
2703
|
const record = value;
|
|
@@ -2726,7 +2738,8 @@ var CodexInteractiveRunner = class {
|
|
|
2726
2738
|
sessionName: input.options?.sessionName,
|
|
2727
2739
|
cwd: input.cwd,
|
|
2728
2740
|
status: "idle",
|
|
2729
|
-
|
|
2741
|
+
pendingEvents: [],
|
|
2742
|
+
turnClosed: false
|
|
2730
2743
|
};
|
|
2731
2744
|
this.sessions.set(input.bridgeSessionId, session);
|
|
2732
2745
|
return session;
|
|
@@ -2735,8 +2748,10 @@ var CodexInteractiveRunner = class {
|
|
|
2735
2748
|
const session = this.sessions.get(input.bridgeSessionId);
|
|
2736
2749
|
if (!session) throw new Error(`codex_session_not_found:${input.bridgeSessionId}`);
|
|
2737
2750
|
const client = await this.ensureClient(session);
|
|
2738
|
-
session.
|
|
2751
|
+
session.pendingEvents = [];
|
|
2752
|
+
session.activeMessage = void 0;
|
|
2739
2753
|
session.activeTurnId = void 0;
|
|
2754
|
+
session.turnClosed = false;
|
|
2740
2755
|
session.turnCompletedPromise = new Promise((resolve2) => {
|
|
2741
2756
|
session.turnCompletedResolver = resolve2;
|
|
2742
2757
|
});
|
|
@@ -2776,6 +2791,11 @@ var CodexInteractiveRunner = class {
|
|
|
2776
2791
|
});
|
|
2777
2792
|
const maybeTurnId = readTurnId(response);
|
|
2778
2793
|
if (maybeTurnId) session.activeTurnId = maybeTurnId;
|
|
2794
|
+
for (; ; ) {
|
|
2795
|
+
const event = await this.takeNextEvent(session);
|
|
2796
|
+
if (!event) break;
|
|
2797
|
+
yield event;
|
|
2798
|
+
}
|
|
2779
2799
|
await session.turnCompletedPromise;
|
|
2780
2800
|
if (session.threadId) {
|
|
2781
2801
|
await this.syncThreadForResume({
|
|
@@ -2784,9 +2804,6 @@ var CodexInteractiveRunner = class {
|
|
|
2784
2804
|
cwd: session.cwd
|
|
2785
2805
|
});
|
|
2786
2806
|
}
|
|
2787
|
-
for (const text of session.pendingText) {
|
|
2788
|
-
yield { type: "text_delta", text };
|
|
2789
|
-
}
|
|
2790
2807
|
yield {
|
|
2791
2808
|
type: "session_state",
|
|
2792
2809
|
state: {
|
|
@@ -2797,7 +2814,6 @@ var CodexInteractiveRunner = class {
|
|
|
2797
2814
|
status: "idle"
|
|
2798
2815
|
}
|
|
2799
2816
|
};
|
|
2800
|
-
yield { type: "message_done" };
|
|
2801
2817
|
}
|
|
2802
2818
|
async stopSession(bridgeSessionId) {
|
|
2803
2819
|
const session = this.sessions.get(bridgeSessionId);
|
|
@@ -2813,6 +2829,10 @@ var CodexInteractiveRunner = class {
|
|
|
2813
2829
|
turnId: session.activeTurnId
|
|
2814
2830
|
}).catch(() => void 0);
|
|
2815
2831
|
}
|
|
2832
|
+
this.flushActiveMessage(session);
|
|
2833
|
+
session.turnClosed = true;
|
|
2834
|
+
session.eventResolver?.();
|
|
2835
|
+
session.eventResolver = void 0;
|
|
2816
2836
|
session.turnCompletedResolver?.();
|
|
2817
2837
|
session.turnCompletedResolver = void 0;
|
|
2818
2838
|
}
|
|
@@ -2834,13 +2854,24 @@ var CodexInteractiveRunner = class {
|
|
|
2834
2854
|
await client.initialize();
|
|
2835
2855
|
client.onNotification("item/agentMessage/delta", (params) => {
|
|
2836
2856
|
const record = params;
|
|
2837
|
-
if (typeof record.delta
|
|
2857
|
+
if (typeof record.delta !== "string" || !record.delta) return;
|
|
2858
|
+
const itemId = readAgentMessageItemId(record) ?? `fallback-${session.pendingEvents.length}`;
|
|
2859
|
+
if (session.activeMessage?.itemId === itemId) {
|
|
2860
|
+
session.activeMessage.text += record.delta;
|
|
2861
|
+
return;
|
|
2862
|
+
}
|
|
2863
|
+
this.flushActiveMessage(session);
|
|
2864
|
+
session.activeMessage = { itemId, text: record.delta };
|
|
2838
2865
|
});
|
|
2839
2866
|
client.onNotification("turn/started", (params) => {
|
|
2840
2867
|
const turnId = readTurnId(params);
|
|
2841
2868
|
if (turnId) session.activeTurnId = turnId;
|
|
2842
2869
|
});
|
|
2843
2870
|
client.onNotification("turn/completed", () => {
|
|
2871
|
+
this.flushActiveMessage(session);
|
|
2872
|
+
session.turnClosed = true;
|
|
2873
|
+
session.eventResolver?.();
|
|
2874
|
+
session.eventResolver = void 0;
|
|
2844
2875
|
session.turnCompletedResolver?.();
|
|
2845
2876
|
session.turnCompletedResolver = void 0;
|
|
2846
2877
|
});
|
|
@@ -2853,6 +2884,27 @@ var CodexInteractiveRunner = class {
|
|
|
2853
2884
|
session.client = client;
|
|
2854
2885
|
return client;
|
|
2855
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
|
+
}
|
|
2856
2908
|
};
|
|
2857
2909
|
|
|
2858
2910
|
// src/providers/codex/codexProvider.ts
|