happy-imou-cloud 2.1.39 → 2.1.41

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 (25) hide show
  1. package/dist/{BaseReasoningProcessor-BUTolvO5.cjs → BaseReasoningProcessor-DAPsauUX.cjs} +2 -2
  2. package/dist/{BaseReasoningProcessor-Cbp6sIDm.mjs → BaseReasoningProcessor-Dica2zdX.mjs} +2 -2
  3. package/dist/{ProviderSelectionHandler-B22eXuym.cjs → ProviderSelectionHandler-4nuTd8AP.cjs} +2 -2
  4. package/dist/{ProviderSelectionHandler-DrSgStLw.mjs → ProviderSelectionHandler-CmeZ92yO.mjs} +2 -2
  5. package/dist/{api-BoeZDGwx.cjs → api-C_Tnx4UG.cjs} +131 -5
  6. package/dist/{api-wcqkneTg.mjs → api-CwNEbJBM.mjs} +131 -6
  7. package/dist/{command-CkYq_KwA.cjs → command-C3RwwPVD.cjs} +2 -2
  8. package/dist/{command-DcgK0y3F.mjs → command-D0FxDynx.mjs} +2 -2
  9. package/dist/{index-B9mt95QV.mjs → index-D5m2Duxd.mjs} +7 -7
  10. package/dist/{index-Cgor8CE7.cjs → index-Dh0qGrEd.cjs} +10 -10
  11. package/dist/index.cjs +2 -2
  12. package/dist/index.mjs +2 -2
  13. package/dist/lib.cjs +1 -1
  14. package/dist/lib.d.cts +195 -40
  15. package/dist/lib.d.mts +195 -40
  16. package/dist/lib.mjs +1 -1
  17. package/dist/{registerKillSessionHandler-Buc97BEh.mjs → registerKillSessionHandler-6JloVYkb.mjs} +132 -7
  18. package/dist/{registerKillSessionHandler-DtXhn2Cd.cjs → registerKillSessionHandler-Bkh8uLhC.cjs} +132 -7
  19. package/dist/{runClaude-BYKNCDEU.mjs → runClaude-Bng_IsE7.mjs} +59 -5
  20. package/dist/{runClaude-CwXQwmgw.cjs → runClaude-mIFO7YxF.cjs} +59 -5
  21. package/dist/{runCodex-DqAddhDE.mjs → runCodex-DAc6flez.mjs} +34 -8
  22. package/dist/{runCodex-BkB_YKhV.cjs → runCodex-cNuxGshy.cjs} +34 -8
  23. package/dist/{runGemini-3jkfOtlr.mjs → runGemini-DdXj8ltI.mjs} +65 -7
  24. package/dist/{runGemini-B4uXPrue.cjs → runGemini-DsRFV8WN.cjs} +65 -7
  25. package/package.json +1 -1
@@ -3,10 +3,10 @@
3
3
  var ink = require('ink');
4
4
  var React = require('react');
5
5
  var node_crypto = require('node:crypto');
6
- var persistence = require('./api-BoeZDGwx.cjs');
7
- var registerKillSessionHandler = require('./registerKillSessionHandler-DtXhn2Cd.cjs');
8
- var index = require('./index-Cgor8CE7.cjs');
9
- var BaseReasoningProcessor = require('./BaseReasoningProcessor-BUTolvO5.cjs');
6
+ var persistence = require('./api-C_Tnx4UG.cjs');
7
+ var registerKillSessionHandler = require('./registerKillSessionHandler-Bkh8uLhC.cjs');
8
+ var index = require('./index-Dh0qGrEd.cjs');
9
+ var BaseReasoningProcessor = require('./BaseReasoningProcessor-DAPsauUX.cjs');
10
10
  require('cross-spawn');
11
11
  require('@agentclientprotocol/sdk');
12
12
  require('ps-list');
@@ -692,6 +692,7 @@ async function runGemini(opts) {
692
692
  let currentModeHash = null;
693
693
  let unexpectedRuntimeStopRecovery = null;
694
694
  let readyAlreadySent = false;
695
+ let currentHappyOrgTurn = null;
695
696
  async function handleAbort() {
696
697
  persistence.logger.debug("[Gemini] Abort requested - stopping current task");
697
698
  if (!turnAbortedSent) {
@@ -703,6 +704,7 @@ async function runGemini(opts) {
703
704
  }
704
705
  reasoningProcessor.abort();
705
706
  diffProcessor.reset();
707
+ assistantMessageStream.reset();
706
708
  try {
707
709
  abortController.abort();
708
710
  messageQueue.reset();
@@ -842,20 +844,72 @@ async function runGemini(opts) {
842
844
  });
843
845
  };
844
846
  let accumulatedResponse = "";
847
+ let currentAssistantStreamStartLength = 0;
845
848
  let isResponseInProgress = false;
846
849
  let hadToolCallInTurn = false;
847
850
  let taskStartedSent = false;
851
+ const assistantMessageStream = new persistence.AssistantMessageStream();
848
852
  const resetTurnState = () => {
849
853
  reasoningProcessor.abort();
850
854
  diffProcessor.reset();
851
855
  accumulatedResponse = "";
856
+ currentAssistantStreamStartLength = 0;
852
857
  isResponseInProgress = false;
853
858
  hadToolCallInTurn = false;
854
859
  taskStartedSent = false;
855
860
  turnAbortedSent = false;
861
+ currentHappyOrgTurn = null;
862
+ assistantMessageStream.reset();
856
863
  thinking = false;
857
864
  session.keepAlive(thinking, "remote");
858
865
  };
866
+ const emitAssistantMessageDelta = (text) => {
867
+ if (currentHappyOrgTurn) {
868
+ return false;
869
+ }
870
+ if (!text.trim()) {
871
+ return false;
872
+ }
873
+ if (!assistantMessageStream.hasActive()) {
874
+ currentAssistantStreamStartLength = accumulatedResponse.length - text.length;
875
+ }
876
+ const stream = assistantMessageStream.delta();
877
+ session.sendAgentMessage("gemini", {
878
+ type: "message",
879
+ message: text,
880
+ id: stream.messageId,
881
+ ...stream
882
+ });
883
+ return true;
884
+ };
885
+ const buildAssistantMessageCommit = (message) => {
886
+ if (!assistantMessageStream.hasActive()) {
887
+ return {
888
+ type: "message",
889
+ message,
890
+ id: node_crypto.randomUUID()
891
+ };
892
+ }
893
+ const stream = assistantMessageStream.commit();
894
+ return {
895
+ type: "message",
896
+ message: message.slice(currentAssistantStreamStartLength),
897
+ id: stream.messageId,
898
+ ...stream
899
+ };
900
+ };
901
+ const commitActiveAssistantMessageStream = () => {
902
+ if (!assistantMessageStream.hasActive()) {
903
+ return false;
904
+ }
905
+ const messagePayload = buildAssistantMessageCommit(accumulatedResponse);
906
+ if (!messagePayload.message.trim()) {
907
+ return false;
908
+ }
909
+ session.sendAgentMessage("gemini", messagePayload);
910
+ currentAssistantStreamStartLength = accumulatedResponse.length;
911
+ return true;
912
+ };
859
913
  const disposeRuntimeHandle = async () => {
860
914
  if (!runtimeHandle) {
861
915
  return;
@@ -923,6 +977,7 @@ async function runGemini(opts) {
923
977
  persistence.logger.debug(`[gemini] Updated response, chunk length: ${msg.textDelta.length}, total accumulated: ${accumulatedResponse.length + msg.textDelta.length}`);
924
978
  }
925
979
  accumulatedResponse += msg.textDelta;
980
+ emitAssistantMessageDelta(msg.textDelta);
926
981
  }
927
982
  break;
928
983
  case "status":
@@ -979,9 +1034,11 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
979
1034
  type: "message",
980
1035
  message: `Error: ${errorMessage}`
981
1036
  });
1037
+ assistantMessageStream.reset();
982
1038
  }
983
1039
  break;
984
1040
  case "tool-call":
1041
+ commitActiveAssistantMessageStream();
985
1042
  hadToolCallInTurn = true;
986
1043
  const toolArgs = msg.args ? JSON.stringify(msg.args).substring(0, 100) : "";
987
1044
  const isInvestigationTool = msg.toolName === "codebase_investigator" || typeof msg.toolName === "string" && msg.toolName.includes("investigator");
@@ -1206,10 +1263,12 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
1206
1263
  throw new Error("Gemini runtime session not started");
1207
1264
  }
1208
1265
  accumulatedResponse = "";
1266
+ currentAssistantStreamStartLength = 0;
1209
1267
  isResponseInProgress = false;
1210
1268
  hadToolCallInTurn = false;
1211
1269
  taskStartedSent = false;
1212
1270
  turnAbortedSent = false;
1271
+ currentHappyOrgTurn = message.mode.happyOrg ?? null;
1213
1272
  let promptToSend = message.message;
1214
1273
  if (shouldInjectHistoryOnNextSession && conversationHistory.hasHistory()) {
1215
1274
  const historyContext = conversationHistory.getContextForNewSession();
@@ -1361,11 +1420,10 @@ Guide: https://goo.gle/gemini-cli-auth-docs#workspace-gca`;
1361
1420
  persistence.logger.debug(`[gemini] Warning: Incomplete options block detected`);
1362
1421
  }
1363
1422
  const messagePayload = {
1364
- type: "message",
1365
- message: finalMessageText,
1366
- id: node_crypto.randomUUID(),
1423
+ ...buildAssistantMessageCommit(finalMessageText),
1367
1424
  ...options.length > 0 && { options }
1368
1425
  };
1426
+ currentAssistantStreamStartLength = accumulatedResponse.length;
1369
1427
  persistence.logger.debug(`[gemini] Sending complete message to mobile (length: ${finalMessageText.length}): ${finalMessageText.substring(0, 100)}...`);
1370
1428
  session.sendAgentMessage("gemini", messagePayload);
1371
1429
  if (!shouldExit) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-imou-cloud",
3
- "version": "2.1.39",
3
+ "version": "2.1.41",
4
4
  "description": "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI",
5
5
  "author": "long.zhu",
6
6
  "license": "MIT",