codex-relay 1.4.12 → 1.4.14
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/src.js +45 -16
- package/package.json +1 -1
package/dist/src.js
CHANGED
|
@@ -182,6 +182,9 @@ var CodexAppServerClient = class {
|
|
|
182
182
|
get appServerMode() {
|
|
183
183
|
return this.activeMode;
|
|
184
184
|
}
|
|
185
|
+
isThreadSubscribed(threadId) {
|
|
186
|
+
return this.subscribedThreadIds.has(threadId);
|
|
187
|
+
}
|
|
185
188
|
initialize() {
|
|
186
189
|
return this.ensureInitialized();
|
|
187
190
|
}
|
|
@@ -3437,6 +3440,10 @@ async function startAppServerTurn(appServer, threadId, input) {
|
|
|
3437
3440
|
}
|
|
3438
3441
|
}
|
|
3439
3442
|
async function resumeAppServerThreadIfNeeded(appServer, threadId, input, runtime) {
|
|
3443
|
+
if (appServer.isThreadSubscribed?.(threadId) === false) {
|
|
3444
|
+
await resumeAppServerThread(appServer, threadId, input, runtime);
|
|
3445
|
+
return;
|
|
3446
|
+
}
|
|
3440
3447
|
if (typeof appServer.readThread !== "function") return;
|
|
3441
3448
|
let thread;
|
|
3442
3449
|
try {
|
|
@@ -3629,8 +3636,9 @@ async function streamRunningAppServerThread(input) {
|
|
|
3629
3636
|
observedTurnActivity = true;
|
|
3630
3637
|
const item = params?.item;
|
|
3631
3638
|
if (!item || typeof item !== "object") return;
|
|
3632
|
-
|
|
3639
|
+
let message = upsertAppServerItemMessage(input.messagesByThreadId, input.threadId, firstString(params, ["turnId"]) ?? activeTurnId, item);
|
|
3633
3640
|
if (!message) return;
|
|
3641
|
+
if (notification.method === "item/started") message = updateMessage(input.messagesByThreadId, input.threadId, message.id, { state: "streaming" });
|
|
3634
3642
|
const isAsyncAgentMessage = isAsyncAppServerAgentMessage(item);
|
|
3635
3643
|
if (isAsyncAgentMessage) asyncAgentMessageIds.add(message.id);
|
|
3636
3644
|
if (message.role !== "user" && !isAsyncAgentMessage) producedTurnOutput = true;
|
|
@@ -3649,14 +3657,22 @@ async function streamRunningAppServerThread(input) {
|
|
|
3649
3657
|
case "item/agentMessage/delta": {
|
|
3650
3658
|
observedTurnActivity = true;
|
|
3651
3659
|
const itemId = firstString(params, ["itemId"]);
|
|
3652
|
-
const delta =
|
|
3660
|
+
const delta = streamDelta(params);
|
|
3653
3661
|
if (!itemId || !delta) return;
|
|
3654
|
-
if (!input.messagesByThreadId.get(input.threadId)?.some((item) => item.id === itemId))
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3662
|
+
if (!input.messagesByThreadId.get(input.threadId)?.some((item) => item.id === itemId)) {
|
|
3663
|
+
const createdMessage = appendMessageWithId(input.messagesByThreadId, input.threadId, itemId, {
|
|
3664
|
+
role: "assistant",
|
|
3665
|
+
content: "",
|
|
3666
|
+
state: "streaming",
|
|
3667
|
+
turnId: firstString(params, ["turnId"]) ?? activeTurnId
|
|
3668
|
+
});
|
|
3669
|
+
threadSummary = updateThread(input.threads, input.messagesByThreadId, input.threadId, { state: "running" });
|
|
3670
|
+
sendSse(input.controller, input.encoder, input.secureSession, {
|
|
3671
|
+
type: "thread.message.created",
|
|
3672
|
+
thread: threadSummary,
|
|
3673
|
+
message: createdMessage
|
|
3674
|
+
});
|
|
3675
|
+
}
|
|
3660
3676
|
const isAsyncAgentMessage = asyncAgentMessageIds.has(itemId);
|
|
3661
3677
|
if (!isAsyncAgentMessage) {
|
|
3662
3678
|
assistantMessageId = itemId;
|
|
@@ -4150,8 +4166,9 @@ async function runAppServerPromptStreamed(input) {
|
|
|
4150
4166
|
return;
|
|
4151
4167
|
}
|
|
4152
4168
|
const turnId = firstString(params, ["turnId"]) ?? activeTurnId;
|
|
4153
|
-
|
|
4169
|
+
let message = upsertAppServerItemMessage(input.messagesByThreadId, activeThreadId, turnId, item);
|
|
4154
4170
|
if (!message) return;
|
|
4171
|
+
if (notification.method === "item/started") message = updateMessage(input.messagesByThreadId, activeThreadId, message.id, { state: "streaming" });
|
|
4155
4172
|
const isAsyncAgentMessage = isAsyncAppServerAgentMessage(item);
|
|
4156
4173
|
if (isAsyncAgentMessage) asyncAgentMessageIds.add(message.id);
|
|
4157
4174
|
if (message.role !== "user" && !isAsyncAgentMessage) producedTurnOutput = true;
|
|
@@ -4169,14 +4186,22 @@ async function runAppServerPromptStreamed(input) {
|
|
|
4169
4186
|
}
|
|
4170
4187
|
case "item/agentMessage/delta": {
|
|
4171
4188
|
const itemId = firstString(params, ["itemId"]);
|
|
4172
|
-
const delta =
|
|
4189
|
+
const delta = streamDelta(params);
|
|
4173
4190
|
if (!itemId || !delta) return;
|
|
4174
|
-
if (!input.messagesByThreadId.get(activeThreadId)?.some((item) => item.id === itemId))
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4191
|
+
if (!input.messagesByThreadId.get(activeThreadId)?.some((item) => item.id === itemId)) {
|
|
4192
|
+
const createdMessage = appendMessageWithId(input.messagesByThreadId, activeThreadId, itemId, {
|
|
4193
|
+
role: "assistant",
|
|
4194
|
+
content: "",
|
|
4195
|
+
state: "streaming",
|
|
4196
|
+
turnId: firstString(params, ["turnId"]) ?? activeTurnId
|
|
4197
|
+
});
|
|
4198
|
+
threadSummary = updateThread(input.threads, input.messagesByThreadId, activeThreadId, { state: "running" });
|
|
4199
|
+
sendSse(input.controller, input.encoder, input.secureSession, {
|
|
4200
|
+
type: "thread.message.created",
|
|
4201
|
+
thread: threadSummary,
|
|
4202
|
+
message: createdMessage
|
|
4203
|
+
});
|
|
4204
|
+
}
|
|
4180
4205
|
const isAsyncAgentMessage = asyncAgentMessageIds.has(itemId);
|
|
4181
4206
|
if (!isAsyncAgentMessage) assistantMessageId = itemId;
|
|
4182
4207
|
const patch = appendMessageDelta(input.messagesByThreadId, activeThreadId, itemId, delta);
|
|
@@ -6799,6 +6824,10 @@ function firstString(record, keys) {
|
|
|
6799
6824
|
if (typeof value === "string" && value.trim()) return value;
|
|
6800
6825
|
}
|
|
6801
6826
|
}
|
|
6827
|
+
function streamDelta(record) {
|
|
6828
|
+
const value = record?.delta;
|
|
6829
|
+
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
6830
|
+
}
|
|
6802
6831
|
function firstNumber(record, keys) {
|
|
6803
6832
|
for (const key of keys) {
|
|
6804
6833
|
const value = record?.[key];
|