happy-imou-cloud 2.1.39 → 2.1.40
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/{BaseReasoningProcessor-BUTolvO5.cjs → BaseReasoningProcessor-C8w4XM-x.cjs} +2 -2
- package/dist/{BaseReasoningProcessor-Cbp6sIDm.mjs → BaseReasoningProcessor-e-2bxjFB.mjs} +2 -2
- package/dist/{ProviderSelectionHandler-B22eXuym.cjs → ProviderSelectionHandler-CCSEAoQk.cjs} +2 -2
- package/dist/{ProviderSelectionHandler-DrSgStLw.mjs → ProviderSelectionHandler-DI3-RSW_.mjs} +2 -2
- package/dist/{api-wcqkneTg.mjs → api-BEKN9moW.mjs} +61 -2
- package/dist/{api-BoeZDGwx.cjs → api-Ixv6TLYP.cjs} +61 -1
- package/dist/{command-CkYq_KwA.cjs → command-DycfJnzn.cjs} +2 -2
- package/dist/{command-DcgK0y3F.mjs → command-bEdScxsw.mjs} +2 -2
- package/dist/{index-B9mt95QV.mjs → index-CNIT6feF.mjs} +7 -7
- package/dist/{index-Cgor8CE7.cjs → index-Mvx4hucr.cjs} +10 -10
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/lib.cjs +1 -1
- package/dist/lib.d.cts +19 -4
- package/dist/lib.d.mts +19 -4
- package/dist/lib.mjs +1 -1
- package/dist/{registerKillSessionHandler-Buc97BEh.mjs → registerKillSessionHandler--KMYjyvz.mjs} +2 -2
- package/dist/{registerKillSessionHandler-DtXhn2Cd.cjs → registerKillSessionHandler-CqjocTSr.cjs} +2 -2
- package/dist/{runClaude-CwXQwmgw.cjs → runClaude-DFdTqEU8.cjs} +59 -5
- package/dist/{runClaude-BYKNCDEU.mjs → runClaude-V1hBSsrL.mjs} +59 -5
- package/dist/{runCodex-BkB_YKhV.cjs → runCodex-BMafN7eI.cjs} +34 -8
- package/dist/{runCodex-DqAddhDE.mjs → runCodex-goHWKOd0.mjs} +34 -8
- package/dist/{runGemini-3jkfOtlr.mjs → runGemini-BDorYx-I.mjs} +65 -7
- package/dist/{runGemini-B4uXPrue.cjs → runGemini-CQBCnzbz.cjs} +65 -7
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var node_crypto = require('node:crypto');
|
|
4
|
-
var persistence = require('./api-
|
|
4
|
+
var persistence = require('./api-Ixv6TLYP.cjs');
|
|
5
5
|
require('cross-spawn');
|
|
6
6
|
require('@agentclientprotocol/sdk');
|
|
7
|
-
var index = require('./index-
|
|
7
|
+
var index = require('./index-Mvx4hucr.cjs');
|
|
8
8
|
require('ps-list');
|
|
9
9
|
require('fs');
|
|
10
10
|
require('path');
|
|
@@ -25,9 +25,9 @@ require('tweetnacl');
|
|
|
25
25
|
require('open');
|
|
26
26
|
var React = require('react');
|
|
27
27
|
var ink = require('ink');
|
|
28
|
-
var ProviderSelectionHandler = require('./ProviderSelectionHandler-
|
|
28
|
+
var ProviderSelectionHandler = require('./ProviderSelectionHandler-CCSEAoQk.cjs');
|
|
29
29
|
var types = require('./types-DVk3crez.cjs');
|
|
30
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
30
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-CqjocTSr.cjs');
|
|
31
31
|
require('socket.io-client');
|
|
32
32
|
require('expo-server-sdk');
|
|
33
33
|
var node_util = require('node:util');
|
|
@@ -1000,6 +1000,7 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1000
1000
|
let currentModeHash = null;
|
|
1001
1001
|
let pending = null;
|
|
1002
1002
|
let accumulatedResponse = "";
|
|
1003
|
+
let currentAssistantStreamStartLength = 0;
|
|
1003
1004
|
let accumulatedThinking = "";
|
|
1004
1005
|
let isResponseInProgress = false;
|
|
1005
1006
|
let taskStartedSent = false;
|
|
@@ -1008,6 +1009,8 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1008
1009
|
let shouldInjectHistoryOnNextSession = false;
|
|
1009
1010
|
let unexpectedRuntimeStopRecovery = null;
|
|
1010
1011
|
let readyAlreadySent = false;
|
|
1012
|
+
let currentHappyOrgTurn = null;
|
|
1013
|
+
const assistantMessageStream = new persistence.AssistantMessageStream();
|
|
1011
1014
|
const permissionHandler = new ClaudeAcpPermissionHandler(session.client);
|
|
1012
1015
|
const selectionHandler = new ProviderSelectionHandler.ProviderSelectionHandler(session.client, "Claude");
|
|
1013
1016
|
const conversationHistory = new registerKillSessionHandler.ConversationHistory({
|
|
@@ -1059,13 +1062,35 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1059
1062
|
};
|
|
1060
1063
|
const resetTurnState = () => {
|
|
1061
1064
|
accumulatedResponse = "";
|
|
1065
|
+
currentAssistantStreamStartLength = 0;
|
|
1062
1066
|
accumulatedThinking = "";
|
|
1063
1067
|
isResponseInProgress = false;
|
|
1064
1068
|
taskStartedSent = false;
|
|
1065
1069
|
currentAssistantMessageId = null;
|
|
1066
1070
|
currentThinkingMessageId = null;
|
|
1071
|
+
currentHappyOrgTurn = null;
|
|
1072
|
+
assistantMessageStream.reset();
|
|
1067
1073
|
session.onThinkingChange(false);
|
|
1068
1074
|
};
|
|
1075
|
+
const emitAssistantMessageDelta = (text) => {
|
|
1076
|
+
if (currentHappyOrgTurn) {
|
|
1077
|
+
return false;
|
|
1078
|
+
}
|
|
1079
|
+
if (!text.trim()) {
|
|
1080
|
+
return false;
|
|
1081
|
+
}
|
|
1082
|
+
if (!assistantMessageStream.hasActive()) {
|
|
1083
|
+
currentAssistantStreamStartLength = accumulatedResponse.length - text.length;
|
|
1084
|
+
}
|
|
1085
|
+
const stream = assistantMessageStream.delta();
|
|
1086
|
+
session.client.sendAgentMessage("claude", {
|
|
1087
|
+
type: "message",
|
|
1088
|
+
message: text,
|
|
1089
|
+
id: stream.messageId,
|
|
1090
|
+
...stream
|
|
1091
|
+
});
|
|
1092
|
+
return true;
|
|
1093
|
+
};
|
|
1069
1094
|
const emitPendingThinkingMessage = () => {
|
|
1070
1095
|
const thinking = accumulatedThinking.trim();
|
|
1071
1096
|
if (!thinking) {
|
|
@@ -1083,15 +1108,19 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1083
1108
|
if (!finalMessage) {
|
|
1084
1109
|
accumulatedResponse = "";
|
|
1085
1110
|
isResponseInProgress = false;
|
|
1111
|
+
assistantMessageStream.reset();
|
|
1086
1112
|
return;
|
|
1087
1113
|
}
|
|
1088
1114
|
if (currentAssistantMessageId) {
|
|
1089
1115
|
messageBuffer.updateMessage(currentAssistantMessageId, finalMessage, { mode: "replace" });
|
|
1090
1116
|
}
|
|
1091
1117
|
conversationHistory.addAssistantMessage(finalMessage);
|
|
1118
|
+
const hadActiveStream = assistantMessageStream.hasActive();
|
|
1119
|
+
const stream = hadActiveStream ? assistantMessageStream.commit() : null;
|
|
1092
1120
|
session.client.sendAgentMessage("claude", {
|
|
1093
1121
|
type: "message",
|
|
1094
|
-
message: finalMessage
|
|
1122
|
+
message: hadActiveStream ? finalMessage.slice(currentAssistantStreamStartLength) : finalMessage,
|
|
1123
|
+
...stream ? { id: stream.messageId, ...stream } : {}
|
|
1095
1124
|
});
|
|
1096
1125
|
session.client.sendClaudeSessionMessage({
|
|
1097
1126
|
type: "assistant",
|
|
@@ -1109,8 +1138,29 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1109
1138
|
}
|
|
1110
1139
|
});
|
|
1111
1140
|
accumulatedResponse = "";
|
|
1141
|
+
currentAssistantStreamStartLength = 0;
|
|
1112
1142
|
isResponseInProgress = false;
|
|
1113
1143
|
};
|
|
1144
|
+
const commitActiveAssistantMessageStream = () => {
|
|
1145
|
+
if (!assistantMessageStream.hasActive()) {
|
|
1146
|
+
return false;
|
|
1147
|
+
}
|
|
1148
|
+
const finalMessage = accumulatedResponse.trim();
|
|
1149
|
+
if (!finalMessage) {
|
|
1150
|
+
assistantMessageStream.reset();
|
|
1151
|
+
currentAssistantStreamStartLength = accumulatedResponse.length;
|
|
1152
|
+
return false;
|
|
1153
|
+
}
|
|
1154
|
+
const stream = assistantMessageStream.commit();
|
|
1155
|
+
session.client.sendAgentMessage("claude", {
|
|
1156
|
+
type: "message",
|
|
1157
|
+
message: finalMessage.slice(currentAssistantStreamStartLength),
|
|
1158
|
+
id: stream.messageId,
|
|
1159
|
+
...stream
|
|
1160
|
+
});
|
|
1161
|
+
currentAssistantStreamStartLength = accumulatedResponse.length;
|
|
1162
|
+
return true;
|
|
1163
|
+
};
|
|
1114
1164
|
const disposeRuntimeHandle = async () => {
|
|
1115
1165
|
if (!runtimeHandle) {
|
|
1116
1166
|
return;
|
|
@@ -1188,6 +1238,7 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1188
1238
|
}
|
|
1189
1239
|
}
|
|
1190
1240
|
accumulatedResponse += text;
|
|
1241
|
+
emitAssistantMessageDelta(text);
|
|
1191
1242
|
return;
|
|
1192
1243
|
}
|
|
1193
1244
|
case "status": {
|
|
@@ -1220,6 +1271,7 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1220
1271
|
return;
|
|
1221
1272
|
}
|
|
1222
1273
|
case "tool-call": {
|
|
1274
|
+
commitActiveAssistantMessageStream();
|
|
1223
1275
|
emitPendingThinkingMessage();
|
|
1224
1276
|
const toolArgs = index.truncateDisplayMessage(msg.args, 100);
|
|
1225
1277
|
messageBuffer.addMessage(
|
|
@@ -1330,6 +1382,7 @@ ${systemPrompt}` : systemPrompt,
|
|
|
1330
1382
|
const abortActiveTurn = async () => {
|
|
1331
1383
|
const activeController = rotateAbortController();
|
|
1332
1384
|
activeController.abort();
|
|
1385
|
+
assistantMessageStream.reset();
|
|
1333
1386
|
session.onThinkingChange(false);
|
|
1334
1387
|
if (runtimeHandle) {
|
|
1335
1388
|
await runtimeHandle.cancel().catch((error) => {
|
|
@@ -1443,6 +1496,7 @@ ${systemPrompt}` : systemPrompt,
|
|
|
1443
1496
|
let turnStatus = "task_complete";
|
|
1444
1497
|
try {
|
|
1445
1498
|
turnInFlight = true;
|
|
1499
|
+
currentHappyOrgTurn = message.mode.happyOrg ?? null;
|
|
1446
1500
|
const activeRuntimeHandle = runtimeHandle ?? await createRuntimeHandle(message.mode);
|
|
1447
1501
|
let promptToSend = message.message;
|
|
1448
1502
|
if (shouldInjectHistoryOnNextSession && conversationHistory.hasHistory()) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { l as logger,
|
|
2
|
+
import { l as logger, j as backoff, k as delay, d as AssistantMessageStream, m as AsyncLock, c as configuration, s as startOfflineReconnection, b as connectionState, A as ApiClient, i as isAuthenticationRequiredError } from './api-BEKN9moW.mjs';
|
|
3
3
|
import 'cross-spawn';
|
|
4
4
|
import '@agentclientprotocol/sdk';
|
|
5
|
-
import { n as getProjectPath, F as Future, o as claudeLocal, E as ExitCodeError, q as trimIdent, u as createClaudeBackend, f as formatDisplayMessage, t as truncateDisplayMessage, w as claudeCheckSession, x as projectPath, y as mapToClaudeMode, P as PushableAsyncIterable, z as query, A as AbortError, e as stopCaffeinate, p as publishSessionRegistration, B as getEnvironmentInfo, a as createSessionMetadata, C as startCaffeinate, b as closeProviderSession } from './index-
|
|
5
|
+
import { n as getProjectPath, F as Future, o as claudeLocal, E as ExitCodeError, q as trimIdent, u as createClaudeBackend, f as formatDisplayMessage, t as truncateDisplayMessage, w as claudeCheckSession, x as projectPath, y as mapToClaudeMode, P as PushableAsyncIterable, z as query, A as AbortError, e as stopCaffeinate, p as publishSessionRegistration, B as getEnvironmentInfo, a as createSessionMetadata, C as startCaffeinate, b as closeProviderSession } from './index-CNIT6feF.mjs';
|
|
6
6
|
import 'ps-list';
|
|
7
7
|
import 'fs';
|
|
8
8
|
import 'path';
|
|
@@ -23,9 +23,9 @@ import 'tweetnacl';
|
|
|
23
23
|
import 'open';
|
|
24
24
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
25
25
|
import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
26
|
-
import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-
|
|
26
|
+
import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-DI3-RSW_.mjs';
|
|
27
27
|
import { R as RawJSONLinesSchema } from './types-CiliQpqS.mjs';
|
|
28
|
-
import { B as BasePermissionHandler, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, j as buildTurnResultPushNotification, k as buildReadyPushNotification, l as launchRuntimeHandleWithFactoryResult, o as renderTerminalOutputPreview, q as forwardAgentMessageToProviderSession, n as buildPermissionPushNotification, s as syncControlledByUserState, r as resolveHappyOrgQueuedTurn, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, h as hashObject, c as registerKillSessionHandler } from './registerKillSessionHandler
|
|
28
|
+
import { B as BasePermissionHandler, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, j as buildTurnResultPushNotification, k as buildReadyPushNotification, l as launchRuntimeHandleWithFactoryResult, o as renderTerminalOutputPreview, q as forwardAgentMessageToProviderSession, n as buildPermissionPushNotification, s as syncControlledByUserState, r as resolveHappyOrgQueuedTurn, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, h as hashObject, c as registerKillSessionHandler } from './registerKillSessionHandler--KMYjyvz.mjs';
|
|
29
29
|
import 'socket.io-client';
|
|
30
30
|
import 'expo-server-sdk';
|
|
31
31
|
import { isDeepStrictEqual } from 'node:util';
|
|
@@ -998,6 +998,7 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
998
998
|
let currentModeHash = null;
|
|
999
999
|
let pending = null;
|
|
1000
1000
|
let accumulatedResponse = "";
|
|
1001
|
+
let currentAssistantStreamStartLength = 0;
|
|
1001
1002
|
let accumulatedThinking = "";
|
|
1002
1003
|
let isResponseInProgress = false;
|
|
1003
1004
|
let taskStartedSent = false;
|
|
@@ -1006,6 +1007,8 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1006
1007
|
let shouldInjectHistoryOnNextSession = false;
|
|
1007
1008
|
let unexpectedRuntimeStopRecovery = null;
|
|
1008
1009
|
let readyAlreadySent = false;
|
|
1010
|
+
let currentHappyOrgTurn = null;
|
|
1011
|
+
const assistantMessageStream = new AssistantMessageStream();
|
|
1009
1012
|
const permissionHandler = new ClaudeAcpPermissionHandler(session.client);
|
|
1010
1013
|
const selectionHandler = new ProviderSelectionHandler(session.client, "Claude");
|
|
1011
1014
|
const conversationHistory = new ConversationHistory$1({
|
|
@@ -1057,13 +1060,35 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1057
1060
|
};
|
|
1058
1061
|
const resetTurnState = () => {
|
|
1059
1062
|
accumulatedResponse = "";
|
|
1063
|
+
currentAssistantStreamStartLength = 0;
|
|
1060
1064
|
accumulatedThinking = "";
|
|
1061
1065
|
isResponseInProgress = false;
|
|
1062
1066
|
taskStartedSent = false;
|
|
1063
1067
|
currentAssistantMessageId = null;
|
|
1064
1068
|
currentThinkingMessageId = null;
|
|
1069
|
+
currentHappyOrgTurn = null;
|
|
1070
|
+
assistantMessageStream.reset();
|
|
1065
1071
|
session.onThinkingChange(false);
|
|
1066
1072
|
};
|
|
1073
|
+
const emitAssistantMessageDelta = (text) => {
|
|
1074
|
+
if (currentHappyOrgTurn) {
|
|
1075
|
+
return false;
|
|
1076
|
+
}
|
|
1077
|
+
if (!text.trim()) {
|
|
1078
|
+
return false;
|
|
1079
|
+
}
|
|
1080
|
+
if (!assistantMessageStream.hasActive()) {
|
|
1081
|
+
currentAssistantStreamStartLength = accumulatedResponse.length - text.length;
|
|
1082
|
+
}
|
|
1083
|
+
const stream = assistantMessageStream.delta();
|
|
1084
|
+
session.client.sendAgentMessage("claude", {
|
|
1085
|
+
type: "message",
|
|
1086
|
+
message: text,
|
|
1087
|
+
id: stream.messageId,
|
|
1088
|
+
...stream
|
|
1089
|
+
});
|
|
1090
|
+
return true;
|
|
1091
|
+
};
|
|
1067
1092
|
const emitPendingThinkingMessage = () => {
|
|
1068
1093
|
const thinking = accumulatedThinking.trim();
|
|
1069
1094
|
if (!thinking) {
|
|
@@ -1081,15 +1106,19 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1081
1106
|
if (!finalMessage) {
|
|
1082
1107
|
accumulatedResponse = "";
|
|
1083
1108
|
isResponseInProgress = false;
|
|
1109
|
+
assistantMessageStream.reset();
|
|
1084
1110
|
return;
|
|
1085
1111
|
}
|
|
1086
1112
|
if (currentAssistantMessageId) {
|
|
1087
1113
|
messageBuffer.updateMessage(currentAssistantMessageId, finalMessage, { mode: "replace" });
|
|
1088
1114
|
}
|
|
1089
1115
|
conversationHistory.addAssistantMessage(finalMessage);
|
|
1116
|
+
const hadActiveStream = assistantMessageStream.hasActive();
|
|
1117
|
+
const stream = hadActiveStream ? assistantMessageStream.commit() : null;
|
|
1090
1118
|
session.client.sendAgentMessage("claude", {
|
|
1091
1119
|
type: "message",
|
|
1092
|
-
message: finalMessage
|
|
1120
|
+
message: hadActiveStream ? finalMessage.slice(currentAssistantStreamStartLength) : finalMessage,
|
|
1121
|
+
...stream ? { id: stream.messageId, ...stream } : {}
|
|
1093
1122
|
});
|
|
1094
1123
|
session.client.sendClaudeSessionMessage({
|
|
1095
1124
|
type: "assistant",
|
|
@@ -1107,8 +1136,29 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1107
1136
|
}
|
|
1108
1137
|
});
|
|
1109
1138
|
accumulatedResponse = "";
|
|
1139
|
+
currentAssistantStreamStartLength = 0;
|
|
1110
1140
|
isResponseInProgress = false;
|
|
1111
1141
|
};
|
|
1142
|
+
const commitActiveAssistantMessageStream = () => {
|
|
1143
|
+
if (!assistantMessageStream.hasActive()) {
|
|
1144
|
+
return false;
|
|
1145
|
+
}
|
|
1146
|
+
const finalMessage = accumulatedResponse.trim();
|
|
1147
|
+
if (!finalMessage) {
|
|
1148
|
+
assistantMessageStream.reset();
|
|
1149
|
+
currentAssistantStreamStartLength = accumulatedResponse.length;
|
|
1150
|
+
return false;
|
|
1151
|
+
}
|
|
1152
|
+
const stream = assistantMessageStream.commit();
|
|
1153
|
+
session.client.sendAgentMessage("claude", {
|
|
1154
|
+
type: "message",
|
|
1155
|
+
message: finalMessage.slice(currentAssistantStreamStartLength),
|
|
1156
|
+
id: stream.messageId,
|
|
1157
|
+
...stream
|
|
1158
|
+
});
|
|
1159
|
+
currentAssistantStreamStartLength = accumulatedResponse.length;
|
|
1160
|
+
return true;
|
|
1161
|
+
};
|
|
1112
1162
|
const disposeRuntimeHandle = async () => {
|
|
1113
1163
|
if (!runtimeHandle) {
|
|
1114
1164
|
return;
|
|
@@ -1186,6 +1236,7 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1186
1236
|
}
|
|
1187
1237
|
}
|
|
1188
1238
|
accumulatedResponse += text;
|
|
1239
|
+
emitAssistantMessageDelta(text);
|
|
1189
1240
|
return;
|
|
1190
1241
|
}
|
|
1191
1242
|
case "status": {
|
|
@@ -1218,6 +1269,7 @@ async function claudeAcpRemoteLauncher(session) {
|
|
|
1218
1269
|
return;
|
|
1219
1270
|
}
|
|
1220
1271
|
case "tool-call": {
|
|
1272
|
+
commitActiveAssistantMessageStream();
|
|
1221
1273
|
emitPendingThinkingMessage();
|
|
1222
1274
|
const toolArgs = truncateDisplayMessage(msg.args, 100);
|
|
1223
1275
|
messageBuffer.addMessage(
|
|
@@ -1328,6 +1380,7 @@ ${systemPrompt}` : systemPrompt,
|
|
|
1328
1380
|
const abortActiveTurn = async () => {
|
|
1329
1381
|
const activeController = rotateAbortController();
|
|
1330
1382
|
activeController.abort();
|
|
1383
|
+
assistantMessageStream.reset();
|
|
1331
1384
|
session.onThinkingChange(false);
|
|
1332
1385
|
if (runtimeHandle) {
|
|
1333
1386
|
await runtimeHandle.cancel().catch((error) => {
|
|
@@ -1441,6 +1494,7 @@ ${systemPrompt}` : systemPrompt,
|
|
|
1441
1494
|
let turnStatus = "task_complete";
|
|
1442
1495
|
try {
|
|
1443
1496
|
turnInFlight = true;
|
|
1497
|
+
currentHappyOrgTurn = message.mode.happyOrg ?? null;
|
|
1444
1498
|
const activeRuntimeHandle = runtimeHandle ?? await createRuntimeHandle(message.mode);
|
|
1445
1499
|
let promptToSend = message.message;
|
|
1446
1500
|
if (shouldInjectHistoryOnNextSession && conversationHistory.hasHistory()) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var persistence = require('./api-
|
|
4
|
-
var registerKillSessionHandler = require('./registerKillSessionHandler-
|
|
5
|
-
var index = require('./index-
|
|
3
|
+
var persistence = require('./api-Ixv6TLYP.cjs');
|
|
4
|
+
var registerKillSessionHandler = require('./registerKillSessionHandler-CqjocTSr.cjs');
|
|
5
|
+
var index = require('./index-Mvx4hucr.cjs');
|
|
6
6
|
require('cross-spawn');
|
|
7
7
|
require('@agentclientprotocol/sdk');
|
|
8
8
|
var node_crypto = require('node:crypto');
|
|
@@ -26,8 +26,8 @@ require('tweetnacl');
|
|
|
26
26
|
require('open');
|
|
27
27
|
var React = require('react');
|
|
28
28
|
var ink = require('ink');
|
|
29
|
-
var ProviderSelectionHandler = require('./ProviderSelectionHandler-
|
|
30
|
-
var BaseReasoningProcessor = require('./BaseReasoningProcessor-
|
|
29
|
+
var ProviderSelectionHandler = require('./ProviderSelectionHandler-CCSEAoQk.cjs');
|
|
30
|
+
var BaseReasoningProcessor = require('./BaseReasoningProcessor-C8w4XM-x.cjs');
|
|
31
31
|
require('zod');
|
|
32
32
|
require('socket.io-client');
|
|
33
33
|
require('expo-server-sdk');
|
|
@@ -708,6 +708,7 @@ async function codexRemoteLauncher(session) {
|
|
|
708
708
|
let readyAlreadySent = false;
|
|
709
709
|
let accumulatedResponse = "";
|
|
710
710
|
let emittedResponseLength = 0;
|
|
711
|
+
let currentAssistantStreamStartLength = 0;
|
|
711
712
|
let isResponseInProgress = false;
|
|
712
713
|
let taskStartedSent = false;
|
|
713
714
|
let shouldInjectHistoryOnNextSession = false;
|
|
@@ -717,6 +718,7 @@ async function codexRemoteLauncher(session) {
|
|
|
717
718
|
let currentThinkingMessageId = null;
|
|
718
719
|
let currentHappyOrgTurn = null;
|
|
719
720
|
let unexpectedRuntimeStopRecovery = null;
|
|
721
|
+
const assistantMessageStream = new persistence.AssistantMessageStream();
|
|
720
722
|
const permissionHandler = new CodexPermissionHandler(session.client);
|
|
721
723
|
const selectionHandler = new CodexSelectionHandler(session.client);
|
|
722
724
|
const conversationHistory = new registerKillSessionHandler.ConversationHistory({ maxMessages: 20, maxCharacters: 5e4 });
|
|
@@ -752,18 +754,21 @@ async function codexRemoteLauncher(session) {
|
|
|
752
754
|
reasoningProcessor.abort();
|
|
753
755
|
accumulatedResponse = "";
|
|
754
756
|
emittedResponseLength = 0;
|
|
757
|
+
currentAssistantStreamStartLength = 0;
|
|
755
758
|
isResponseInProgress = false;
|
|
756
759
|
taskStartedSent = false;
|
|
757
760
|
shouldCommitAccumulatedResponse = false;
|
|
758
761
|
currentAssistantMessageId = null;
|
|
759
762
|
currentThinkingMessageId = null;
|
|
760
763
|
currentHappyOrgTurn = null;
|
|
764
|
+
assistantMessageStream.reset();
|
|
761
765
|
session.onThinkingChange(false);
|
|
762
766
|
};
|
|
763
767
|
const abortActiveTurn = () => {
|
|
764
768
|
const activeController = rotateAbortController();
|
|
765
769
|
activeController.abort();
|
|
766
770
|
reasoningProcessor.abort();
|
|
771
|
+
assistantMessageStream.reset();
|
|
767
772
|
session.onThinkingChange(false);
|
|
768
773
|
if (runtimeHandle) {
|
|
769
774
|
void runtimeHandle.cancel().catch((error) => {
|
|
@@ -796,6 +801,7 @@ async function codexRemoteLauncher(session) {
|
|
|
796
801
|
message,
|
|
797
802
|
id: node_crypto.randomUUID()
|
|
798
803
|
});
|
|
804
|
+
assistantMessageStream.reset();
|
|
799
805
|
};
|
|
800
806
|
const emitTurnReport = (report) => {
|
|
801
807
|
session.runtimeSession.sendCodexMessage({
|
|
@@ -867,18 +873,37 @@ async function codexRemoteLauncher(session) {
|
|
|
867
873
|
if (currentHappyOrgTurn && !opts?.force) {
|
|
868
874
|
return false;
|
|
869
875
|
}
|
|
870
|
-
const
|
|
876
|
+
const hadActiveStream = assistantMessageStream.hasActive();
|
|
877
|
+
if (!opts?.force && !hadActiveStream) {
|
|
878
|
+
currentAssistantStreamStartLength = emittedResponseLength;
|
|
879
|
+
}
|
|
880
|
+
const nextMessage = opts?.force && hadActiveStream ? accumulatedResponse.slice(currentAssistantStreamStartLength) : opts?.force ? accumulatedResponse : accumulatedResponse.slice(emittedResponseLength);
|
|
871
881
|
if (!nextMessage.trim()) {
|
|
882
|
+
if (opts?.force) {
|
|
883
|
+
assistantMessageStream.reset();
|
|
884
|
+
currentAssistantStreamStartLength = emittedResponseLength;
|
|
885
|
+
}
|
|
872
886
|
return false;
|
|
873
887
|
}
|
|
888
|
+
const stream = opts?.force ? assistantMessageStream.commit() : assistantMessageStream.delta();
|
|
874
889
|
session.runtimeSession.sendCodexMessage({
|
|
875
890
|
type: "message",
|
|
876
891
|
message: nextMessage,
|
|
877
|
-
id:
|
|
892
|
+
id: stream.messageId,
|
|
893
|
+
...stream
|
|
878
894
|
});
|
|
879
895
|
emittedResponseLength = accumulatedResponse.length;
|
|
896
|
+
if (opts?.force) {
|
|
897
|
+
currentAssistantStreamStartLength = emittedResponseLength;
|
|
898
|
+
}
|
|
880
899
|
return true;
|
|
881
900
|
};
|
|
901
|
+
const commitActiveAssistantMessageStream = () => {
|
|
902
|
+
if (!assistantMessageStream.hasActive()) {
|
|
903
|
+
return false;
|
|
904
|
+
}
|
|
905
|
+
return emitPendingAssistantMessageDelta({ force: true });
|
|
906
|
+
};
|
|
882
907
|
const setupRuntimeMessageHandler = (activeRuntimeHandle) => {
|
|
883
908
|
const forwardAgentMessage = (agentMessage) => {
|
|
884
909
|
registerKillSessionHandler.forwardAgentMessageToProviderSession(agentMessage, {
|
|
@@ -909,6 +934,7 @@ async function codexRemoteLauncher(session) {
|
|
|
909
934
|
}
|
|
910
935
|
}
|
|
911
936
|
accumulatedResponse += text;
|
|
937
|
+
emitPendingAssistantMessageDelta();
|
|
912
938
|
return;
|
|
913
939
|
}
|
|
914
940
|
case "status": {
|
|
@@ -942,7 +968,7 @@ async function codexRemoteLauncher(session) {
|
|
|
942
968
|
return;
|
|
943
969
|
}
|
|
944
970
|
case "tool-call": {
|
|
945
|
-
|
|
971
|
+
commitActiveAssistantMessageStream();
|
|
946
972
|
const toolArgs = hasRenderableToolPayload(msg.args) ? index.truncateDisplayMessage(msg.args, 100) : "";
|
|
947
973
|
messageBuffer.addMessage(
|
|
948
974
|
`Executing: ${msg.toolName}${toolArgs ? ` ${toolArgs}` : ""}`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { p as preserveSessionRuntimeMetadata, l as logger, b as connectionState, A as ApiClient } from './api-
|
|
2
|
-
import { B as BasePermissionHandler, h as hashObject, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, j as buildTurnResultPushNotification, c as registerKillSessionHandler, k as buildReadyPushNotification, l as launchRuntimeHandleWithFactoryResult, m as extractPermissionRequestPushContext, n as buildPermissionPushNotification, o as renderTerminalOutputPreview, p as inferToolResultError, q as forwardAgentMessageToProviderSession, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, r as resolveHappyOrgQueuedTurn, s as syncControlledByUserState } from './registerKillSessionHandler
|
|
3
|
-
import { f as formatDisplayMessage, v as validateCodexAcpSpawn, h as createCodexBackend, t as truncateDisplayMessage, b as closeProviderSession, e as stopCaffeinate, i as readManagedSessionTag, j as resolveManagedSessionTag } from './index-
|
|
1
|
+
import { p as preserveSessionRuntimeMetadata, l as logger, d as AssistantMessageStream, b as connectionState, A as ApiClient } from './api-BEKN9moW.mjs';
|
|
2
|
+
import { B as BasePermissionHandler, h as hashObject, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, j as buildTurnResultPushNotification, c as registerKillSessionHandler, k as buildReadyPushNotification, l as launchRuntimeHandleWithFactoryResult, m as extractPermissionRequestPushContext, n as buildPermissionPushNotification, o as renderTerminalOutputPreview, p as inferToolResultError, q as forwardAgentMessageToProviderSession, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, r as resolveHappyOrgQueuedTurn, s as syncControlledByUserState } from './registerKillSessionHandler--KMYjyvz.mjs';
|
|
3
|
+
import { f as formatDisplayMessage, v as validateCodexAcpSpawn, h as createCodexBackend, t as truncateDisplayMessage, b as closeProviderSession, e as stopCaffeinate, i as readManagedSessionTag, j as resolveManagedSessionTag } from './index-CNIT6feF.mjs';
|
|
4
4
|
import 'cross-spawn';
|
|
5
5
|
import '@agentclientprotocol/sdk';
|
|
6
6
|
import { randomUUID } from 'node:crypto';
|
|
@@ -24,8 +24,8 @@ import 'tweetnacl';
|
|
|
24
24
|
import 'open';
|
|
25
25
|
import React, { useState, useRef, useEffect, useCallback } from 'react';
|
|
26
26
|
import { useStdout, useInput, Box, Text, render } from 'ink';
|
|
27
|
-
import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-
|
|
28
|
-
import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-
|
|
27
|
+
import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-DI3-RSW_.mjs';
|
|
28
|
+
import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-e-2bxjFB.mjs';
|
|
29
29
|
import 'zod';
|
|
30
30
|
import 'socket.io-client';
|
|
31
31
|
import 'expo-server-sdk';
|
|
@@ -706,6 +706,7 @@ async function codexRemoteLauncher(session) {
|
|
|
706
706
|
let readyAlreadySent = false;
|
|
707
707
|
let accumulatedResponse = "";
|
|
708
708
|
let emittedResponseLength = 0;
|
|
709
|
+
let currentAssistantStreamStartLength = 0;
|
|
709
710
|
let isResponseInProgress = false;
|
|
710
711
|
let taskStartedSent = false;
|
|
711
712
|
let shouldInjectHistoryOnNextSession = false;
|
|
@@ -715,6 +716,7 @@ async function codexRemoteLauncher(session) {
|
|
|
715
716
|
let currentThinkingMessageId = null;
|
|
716
717
|
let currentHappyOrgTurn = null;
|
|
717
718
|
let unexpectedRuntimeStopRecovery = null;
|
|
719
|
+
const assistantMessageStream = new AssistantMessageStream();
|
|
718
720
|
const permissionHandler = new CodexPermissionHandler(session.client);
|
|
719
721
|
const selectionHandler = new CodexSelectionHandler(session.client);
|
|
720
722
|
const conversationHistory = new ConversationHistory$1({ maxMessages: 20, maxCharacters: 5e4 });
|
|
@@ -750,18 +752,21 @@ async function codexRemoteLauncher(session) {
|
|
|
750
752
|
reasoningProcessor.abort();
|
|
751
753
|
accumulatedResponse = "";
|
|
752
754
|
emittedResponseLength = 0;
|
|
755
|
+
currentAssistantStreamStartLength = 0;
|
|
753
756
|
isResponseInProgress = false;
|
|
754
757
|
taskStartedSent = false;
|
|
755
758
|
shouldCommitAccumulatedResponse = false;
|
|
756
759
|
currentAssistantMessageId = null;
|
|
757
760
|
currentThinkingMessageId = null;
|
|
758
761
|
currentHappyOrgTurn = null;
|
|
762
|
+
assistantMessageStream.reset();
|
|
759
763
|
session.onThinkingChange(false);
|
|
760
764
|
};
|
|
761
765
|
const abortActiveTurn = () => {
|
|
762
766
|
const activeController = rotateAbortController();
|
|
763
767
|
activeController.abort();
|
|
764
768
|
reasoningProcessor.abort();
|
|
769
|
+
assistantMessageStream.reset();
|
|
765
770
|
session.onThinkingChange(false);
|
|
766
771
|
if (runtimeHandle) {
|
|
767
772
|
void runtimeHandle.cancel().catch((error) => {
|
|
@@ -794,6 +799,7 @@ async function codexRemoteLauncher(session) {
|
|
|
794
799
|
message,
|
|
795
800
|
id: randomUUID()
|
|
796
801
|
});
|
|
802
|
+
assistantMessageStream.reset();
|
|
797
803
|
};
|
|
798
804
|
const emitTurnReport = (report) => {
|
|
799
805
|
session.runtimeSession.sendCodexMessage({
|
|
@@ -865,18 +871,37 @@ async function codexRemoteLauncher(session) {
|
|
|
865
871
|
if (currentHappyOrgTurn && !opts?.force) {
|
|
866
872
|
return false;
|
|
867
873
|
}
|
|
868
|
-
const
|
|
874
|
+
const hadActiveStream = assistantMessageStream.hasActive();
|
|
875
|
+
if (!opts?.force && !hadActiveStream) {
|
|
876
|
+
currentAssistantStreamStartLength = emittedResponseLength;
|
|
877
|
+
}
|
|
878
|
+
const nextMessage = opts?.force && hadActiveStream ? accumulatedResponse.slice(currentAssistantStreamStartLength) : opts?.force ? accumulatedResponse : accumulatedResponse.slice(emittedResponseLength);
|
|
869
879
|
if (!nextMessage.trim()) {
|
|
880
|
+
if (opts?.force) {
|
|
881
|
+
assistantMessageStream.reset();
|
|
882
|
+
currentAssistantStreamStartLength = emittedResponseLength;
|
|
883
|
+
}
|
|
870
884
|
return false;
|
|
871
885
|
}
|
|
886
|
+
const stream = opts?.force ? assistantMessageStream.commit() : assistantMessageStream.delta();
|
|
872
887
|
session.runtimeSession.sendCodexMessage({
|
|
873
888
|
type: "message",
|
|
874
889
|
message: nextMessage,
|
|
875
|
-
id:
|
|
890
|
+
id: stream.messageId,
|
|
891
|
+
...stream
|
|
876
892
|
});
|
|
877
893
|
emittedResponseLength = accumulatedResponse.length;
|
|
894
|
+
if (opts?.force) {
|
|
895
|
+
currentAssistantStreamStartLength = emittedResponseLength;
|
|
896
|
+
}
|
|
878
897
|
return true;
|
|
879
898
|
};
|
|
899
|
+
const commitActiveAssistantMessageStream = () => {
|
|
900
|
+
if (!assistantMessageStream.hasActive()) {
|
|
901
|
+
return false;
|
|
902
|
+
}
|
|
903
|
+
return emitPendingAssistantMessageDelta({ force: true });
|
|
904
|
+
};
|
|
880
905
|
const setupRuntimeMessageHandler = (activeRuntimeHandle) => {
|
|
881
906
|
const forwardAgentMessage = (agentMessage) => {
|
|
882
907
|
forwardAgentMessageToProviderSession(agentMessage, {
|
|
@@ -907,6 +932,7 @@ async function codexRemoteLauncher(session) {
|
|
|
907
932
|
}
|
|
908
933
|
}
|
|
909
934
|
accumulatedResponse += text;
|
|
935
|
+
emitPendingAssistantMessageDelta();
|
|
910
936
|
return;
|
|
911
937
|
}
|
|
912
938
|
case "status": {
|
|
@@ -940,7 +966,7 @@ async function codexRemoteLauncher(session) {
|
|
|
940
966
|
return;
|
|
941
967
|
}
|
|
942
968
|
case "tool-call": {
|
|
943
|
-
|
|
969
|
+
commitActiveAssistantMessageStream();
|
|
944
970
|
const toolArgs = hasRenderableToolPayload(msg.args) ? truncateDisplayMessage(msg.args, 100) : "";
|
|
945
971
|
messageBuffer.addMessage(
|
|
946
972
|
`Executing: ${msg.toolName}${toolArgs ? ` ${toolArgs}` : ""}`,
|