happy-imou-cloud 2.1.19 → 2.1.20

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-CuB78Igh.cjs → BaseReasoningProcessor-BrPfiZf4.cjs} +2 -2
  2. package/dist/{BaseReasoningProcessor-Dtna0CRw.mjs → BaseReasoningProcessor-CQ59YfWV.mjs} +2 -2
  3. package/dist/{ProviderSelectionHandler-SWCNmor4.cjs → ProviderSelectionHandler-B8EGoc4L.cjs} +2 -2
  4. package/dist/{ProviderSelectionHandler-DJSSjBOW.mjs → ProviderSelectionHandler-D9WDj0pS.mjs} +2 -2
  5. package/dist/{api-ljzPqsrQ.cjs → api-BtjmMYKf.cjs} +27 -9
  6. package/dist/{api-LMpXb-Ju.mjs → api-CtjWkGWV.mjs} +27 -9
  7. package/dist/{command-wiV8CFFG.mjs → command-BV2wo6tq.mjs} +2 -2
  8. package/dist/{command-C4nFEFfU.cjs → command-D9Xa72wn.cjs} +2 -2
  9. package/dist/{index-SnNF4vVI.cjs → index-WIr2Wt9U.cjs} +15 -11
  10. package/dist/{index-CYRsGHXJ.mjs → index-hL-ID2fR.mjs} +12 -8
  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 +3 -0
  15. package/dist/lib.d.mts +3 -0
  16. package/dist/lib.mjs +1 -1
  17. package/dist/{registerKillSessionHandler-C4IlzmJl.cjs → registerKillSessionHandler-D0EYq7uF.cjs} +2 -2
  18. package/dist/{registerKillSessionHandler-BD-ChYZJ.mjs → registerKillSessionHandler-D9JiuWdb.mjs} +2 -2
  19. package/dist/{runClaude-DrWj6fju.mjs → runClaude-BQ3EPwaa.mjs} +4 -4
  20. package/dist/{runClaude-khz1woP5.cjs → runClaude-CAelse1X.cjs} +4 -4
  21. package/dist/{runCodex-CfQgQ4gD.mjs → runCodex-4njIyif-.mjs} +5 -5
  22. package/dist/{runCodex-Vb_tfdTK.cjs → runCodex-ofeVc4Nl.cjs} +5 -5
  23. package/dist/{runGemini-MIoPtN_R.cjs → runGemini-ChlLWNak.cjs} +4 -4
  24. package/dist/{runGemini-BOdeej1A.mjs → runGemini-ClDpc5hl.mjs} +4 -4
  25. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-SnNF4vVI.cjs');
4
- var persistence = require('./api-ljzPqsrQ.cjs');
3
+ var index = require('./index-WIr2Wt9U.cjs');
4
+ var persistence = require('./api-BtjmMYKf.cjs');
5
5
  var node_events = require('node:events');
6
6
  var node_crypto = require('node:crypto');
7
7
 
@@ -1,5 +1,5 @@
1
- import { a as createSessionMetadata, p as publishSessionRegistration } from './index-CYRsGHXJ.mjs';
2
- import { s as startOfflineReconnection, c as configuration, i as isAuthenticationRequiredError, l as logger } from './api-LMpXb-Ju.mjs';
1
+ import { a as createSessionMetadata, p as publishSessionRegistration } from './index-hL-ID2fR.mjs';
2
+ import { s as startOfflineReconnection, c as configuration, i as isAuthenticationRequiredError, l as logger } from './api-CtjWkGWV.mjs';
3
3
  import { EventEmitter } from 'node:events';
4
4
  import { randomUUID } from 'node:crypto';
5
5
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./api-ljzPqsrQ.cjs');
4
- var registerKillSessionHandler = require('./registerKillSessionHandler-C4IlzmJl.cjs');
3
+ var persistence = require('./api-BtjmMYKf.cjs');
4
+ var registerKillSessionHandler = require('./registerKillSessionHandler-D0EYq7uF.cjs');
5
5
 
6
6
  async function runModeLoop(opts) {
7
7
  let currentMode = opts.startingMode;
@@ -1,5 +1,5 @@
1
- import { l as logger } from './api-LMpXb-Ju.mjs';
2
- import { g as getPendingInteractionTimeoutMs, I as INTERACTION_SUPERSEDED_ERROR, a as INTERACTION_TIMED_OUT_ERROR } from './registerKillSessionHandler-BD-ChYZJ.mjs';
1
+ import { l as logger } from './api-CtjWkGWV.mjs';
2
+ import { g as getPendingInteractionTimeoutMs, I as INTERACTION_SUPERSEDED_ERROR, a as INTERACTION_TIMED_OUT_ERROR } from './registerKillSessionHandler-D9JiuWdb.mjs';
3
3
 
4
4
  async function runModeLoop(opts) {
5
5
  let currentMode = opts.startingMode;
@@ -38,7 +38,7 @@ function _interopNamespaceDefault(e) {
38
38
  var z__namespace = /*#__PURE__*/_interopNamespaceDefault(z);
39
39
 
40
40
  var name = "happy-imou-cloud";
41
- var version = "2.1.19";
41
+ var version = "2.1.20";
42
42
  var description = "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI";
43
43
  var author = "long.zhu";
44
44
  var license = "MIT";
@@ -2605,6 +2605,7 @@ class ApiSessionClient extends node_events.EventEmitter {
2605
2605
  protocolV3SocketCapabilities = null;
2606
2606
  protocolV3SessionSyncWaitTimer = null;
2607
2607
  committedSessionWriteAckMode;
2608
+ pendingBackgroundTasks = /* @__PURE__ */ new Set();
2608
2609
  pendingHappyOrgDispatchBusinessAcks = /* @__PURE__ */ new Set();
2609
2610
  recordedHappyOrgDispatchBusinessAcks = /* @__PURE__ */ new Set();
2610
2611
  pendingHappyOrgTaskTurnReports = /* @__PURE__ */ new Set();
@@ -3010,7 +3011,7 @@ class ApiSessionClient extends node_events.EventEmitter {
3010
3011
  * @param handler - Handler function that returns the updated metadata
3011
3012
  */
3012
3013
  updateMetadata(handler) {
3013
- void this.metadataLock.inLock(async () => {
3014
+ this.trackPendingBackgroundTask(this.metadataLock.inLock(async () => {
3014
3015
  await backoff(async () => {
3015
3016
  let updated = this.mergeRuntimeMetadata(handler(this.metadata));
3016
3017
  const sessionIndex = buildSessionRuntimeIndex(updated);
@@ -3039,7 +3040,7 @@ class ApiSessionClient extends node_events.EventEmitter {
3039
3040
  });
3040
3041
  }).catch((error) => {
3041
3042
  logger.debug("[API] Metadata update failed unexpectedly", error);
3042
- });
3043
+ }));
3043
3044
  }
3044
3045
  /**
3045
3046
  * Update session agent state
@@ -3047,7 +3048,7 @@ class ApiSessionClient extends node_events.EventEmitter {
3047
3048
  */
3048
3049
  updateAgentState(handler) {
3049
3050
  logger.debugLargeJson("Updating agent state", this.agentState);
3050
- void this.agentStateLock.inLock(async () => {
3051
+ this.trackPendingBackgroundTask(this.agentStateLock.inLock(async () => {
3051
3052
  await backoff(async () => {
3052
3053
  let updated = handler(this.agentState || {});
3053
3054
  const answer = await this.socket.emitWithAck("update-state", { sid: this.sessionId, expectedVersion: this.agentStateVersion, agentState: updated ? encodeBase64(encrypt(this.encryptionKey, this.encryptionVariant, updated)) : null });
@@ -3067,7 +3068,7 @@ class ApiSessionClient extends node_events.EventEmitter {
3067
3068
  });
3068
3069
  }).catch((error) => {
3069
3070
  logger.debug("[API] Agent state update failed unexpectedly", error);
3070
- });
3071
+ }));
3071
3072
  }
3072
3073
  /**
3073
3074
  * Wait for socket buffer to flush
@@ -3077,6 +3078,7 @@ class ApiSessionClient extends node_events.EventEmitter {
3077
3078
  return;
3078
3079
  }
3079
3080
  await this.waitForReliableSessionMessagesToDrain();
3081
+ await this.waitForPendingBackgroundTasksToDrain();
3080
3082
  if (!this.socket.connected) {
3081
3083
  return;
3082
3084
  }
@@ -3090,11 +3092,27 @@ class ApiSessionClient extends node_events.EventEmitter {
3090
3092
  });
3091
3093
  }
3092
3094
  async close() {
3095
+ if (this.socket.connected) {
3096
+ await this.waitForPendingBackgroundTasksToDrain();
3097
+ }
3093
3098
  logger.debug("[API] socket.close() called");
3094
3099
  this.clearReconnectAfterServerDisconnectTimer();
3095
3100
  this.invalidateProtocolV3SessionSync();
3096
3101
  this.socket.close();
3097
3102
  }
3103
+ trackPendingBackgroundTask(task) {
3104
+ let trackedTask;
3105
+ trackedTask = task.finally(() => {
3106
+ this.pendingBackgroundTasks.delete(trackedTask);
3107
+ });
3108
+ this.pendingBackgroundTasks.add(trackedTask);
3109
+ return trackedTask;
3110
+ }
3111
+ async waitForPendingBackgroundTasksToDrain() {
3112
+ while (this.pendingBackgroundTasks.size > 0) {
3113
+ await Promise.allSettled(Array.from(this.pendingBackgroundTasks));
3114
+ }
3115
+ }
3098
3116
  handleSocketUpdate(data) {
3099
3117
  if (!data.body) {
3100
3118
  logger.debug("[SOCKET] [UPDATE] [ERROR] No body in update!");
@@ -3176,9 +3194,9 @@ class ApiSessionClient extends node_events.EventEmitter {
3176
3194
  return;
3177
3195
  }
3178
3196
  this.pendingHappyOrgDispatchBusinessAcks.add(ackKey);
3179
- void this.submitHappyOrgDispatchBusinessAck(candidate).finally(() => {
3197
+ this.trackPendingBackgroundTask(this.submitHappyOrgDispatchBusinessAck(candidate).finally(() => {
3180
3198
  this.pendingHappyOrgDispatchBusinessAcks.delete(ackKey);
3181
- });
3199
+ }));
3182
3200
  }
3183
3201
  resolveHappyOrgDispatchBusinessAckCandidate(message) {
3184
3202
  const taskContext = message.meta?.happyOrg?.taskContext ?? this.metadata?.happyOrg?.taskContext;
@@ -3208,9 +3226,9 @@ class ApiSessionClient extends node_events.EventEmitter {
3208
3226
  return;
3209
3227
  }
3210
3228
  this.pendingHappyOrgTaskTurnReports.add(submissionKey);
3211
- void this.submitHappyOrgTaskTurnReport(message.report, submissionKey).finally(() => {
3229
+ this.trackPendingBackgroundTask(this.submitHappyOrgTaskTurnReport(message.report, submissionKey).finally(() => {
3212
3230
  this.pendingHappyOrgTaskTurnReports.delete(submissionKey);
3213
- });
3231
+ }));
3214
3232
  }
3215
3233
  async ensureHappyOrgControlCredentials() {
3216
3234
  if (this.credentials.signing) {
@@ -18,7 +18,7 @@ import { unlink, readFile, mkdir, open, stat, writeFile, rename } from 'node:fs/
18
18
  import { Expo } from 'expo-server-sdk';
19
19
 
20
20
  var name = "happy-imou-cloud";
21
- var version = "2.1.19";
21
+ var version = "2.1.20";
22
22
  var description = "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI";
23
23
  var author = "long.zhu";
24
24
  var license = "MIT";
@@ -2585,6 +2585,7 @@ class ApiSessionClient extends EventEmitter {
2585
2585
  protocolV3SocketCapabilities = null;
2586
2586
  protocolV3SessionSyncWaitTimer = null;
2587
2587
  committedSessionWriteAckMode;
2588
+ pendingBackgroundTasks = /* @__PURE__ */ new Set();
2588
2589
  pendingHappyOrgDispatchBusinessAcks = /* @__PURE__ */ new Set();
2589
2590
  recordedHappyOrgDispatchBusinessAcks = /* @__PURE__ */ new Set();
2590
2591
  pendingHappyOrgTaskTurnReports = /* @__PURE__ */ new Set();
@@ -2990,7 +2991,7 @@ class ApiSessionClient extends EventEmitter {
2990
2991
  * @param handler - Handler function that returns the updated metadata
2991
2992
  */
2992
2993
  updateMetadata(handler) {
2993
- void this.metadataLock.inLock(async () => {
2994
+ this.trackPendingBackgroundTask(this.metadataLock.inLock(async () => {
2994
2995
  await backoff(async () => {
2995
2996
  let updated = this.mergeRuntimeMetadata(handler(this.metadata));
2996
2997
  const sessionIndex = buildSessionRuntimeIndex(updated);
@@ -3019,7 +3020,7 @@ class ApiSessionClient extends EventEmitter {
3019
3020
  });
3020
3021
  }).catch((error) => {
3021
3022
  logger.debug("[API] Metadata update failed unexpectedly", error);
3022
- });
3023
+ }));
3023
3024
  }
3024
3025
  /**
3025
3026
  * Update session agent state
@@ -3027,7 +3028,7 @@ class ApiSessionClient extends EventEmitter {
3027
3028
  */
3028
3029
  updateAgentState(handler) {
3029
3030
  logger.debugLargeJson("Updating agent state", this.agentState);
3030
- void this.agentStateLock.inLock(async () => {
3031
+ this.trackPendingBackgroundTask(this.agentStateLock.inLock(async () => {
3031
3032
  await backoff(async () => {
3032
3033
  let updated = handler(this.agentState || {});
3033
3034
  const answer = await this.socket.emitWithAck("update-state", { sid: this.sessionId, expectedVersion: this.agentStateVersion, agentState: updated ? encodeBase64(encrypt(this.encryptionKey, this.encryptionVariant, updated)) : null });
@@ -3047,7 +3048,7 @@ class ApiSessionClient extends EventEmitter {
3047
3048
  });
3048
3049
  }).catch((error) => {
3049
3050
  logger.debug("[API] Agent state update failed unexpectedly", error);
3050
- });
3051
+ }));
3051
3052
  }
3052
3053
  /**
3053
3054
  * Wait for socket buffer to flush
@@ -3057,6 +3058,7 @@ class ApiSessionClient extends EventEmitter {
3057
3058
  return;
3058
3059
  }
3059
3060
  await this.waitForReliableSessionMessagesToDrain();
3061
+ await this.waitForPendingBackgroundTasksToDrain();
3060
3062
  if (!this.socket.connected) {
3061
3063
  return;
3062
3064
  }
@@ -3070,11 +3072,27 @@ class ApiSessionClient extends EventEmitter {
3070
3072
  });
3071
3073
  }
3072
3074
  async close() {
3075
+ if (this.socket.connected) {
3076
+ await this.waitForPendingBackgroundTasksToDrain();
3077
+ }
3073
3078
  logger.debug("[API] socket.close() called");
3074
3079
  this.clearReconnectAfterServerDisconnectTimer();
3075
3080
  this.invalidateProtocolV3SessionSync();
3076
3081
  this.socket.close();
3077
3082
  }
3083
+ trackPendingBackgroundTask(task) {
3084
+ let trackedTask;
3085
+ trackedTask = task.finally(() => {
3086
+ this.pendingBackgroundTasks.delete(trackedTask);
3087
+ });
3088
+ this.pendingBackgroundTasks.add(trackedTask);
3089
+ return trackedTask;
3090
+ }
3091
+ async waitForPendingBackgroundTasksToDrain() {
3092
+ while (this.pendingBackgroundTasks.size > 0) {
3093
+ await Promise.allSettled(Array.from(this.pendingBackgroundTasks));
3094
+ }
3095
+ }
3078
3096
  handleSocketUpdate(data) {
3079
3097
  if (!data.body) {
3080
3098
  logger.debug("[SOCKET] [UPDATE] [ERROR] No body in update!");
@@ -3156,9 +3174,9 @@ class ApiSessionClient extends EventEmitter {
3156
3174
  return;
3157
3175
  }
3158
3176
  this.pendingHappyOrgDispatchBusinessAcks.add(ackKey);
3159
- void this.submitHappyOrgDispatchBusinessAck(candidate).finally(() => {
3177
+ this.trackPendingBackgroundTask(this.submitHappyOrgDispatchBusinessAck(candidate).finally(() => {
3160
3178
  this.pendingHappyOrgDispatchBusinessAcks.delete(ackKey);
3161
- });
3179
+ }));
3162
3180
  }
3163
3181
  resolveHappyOrgDispatchBusinessAckCandidate(message) {
3164
3182
  const taskContext = message.meta?.happyOrg?.taskContext ?? this.metadata?.happyOrg?.taskContext;
@@ -3188,9 +3206,9 @@ class ApiSessionClient extends EventEmitter {
3188
3206
  return;
3189
3207
  }
3190
3208
  this.pendingHappyOrgTaskTurnReports.add(submissionKey);
3191
- void this.submitHappyOrgTaskTurnReport(message.report, submissionKey).finally(() => {
3209
+ this.trackPendingBackgroundTask(this.submitHappyOrgTaskTurnReport(message.report, submissionKey).finally(() => {
3192
3210
  this.pendingHappyOrgTaskTurnReports.delete(submissionKey);
3193
- });
3211
+ }));
3194
3212
  }
3195
3213
  async ensureHappyOrgControlCredentials() {
3196
3214
  if (this.credentials.signing) {
@@ -1,6 +1,6 @@
1
- import { c as createDefaultRuntimeShell } from './index-CYRsGHXJ.mjs';
1
+ import { c as createDefaultRuntimeShell } from './index-hL-ID2fR.mjs';
2
2
  import 'chalk';
3
- import './api-LMpXb-Ju.mjs';
3
+ import './api-CtjWkGWV.mjs';
4
4
  import 'axios';
5
5
  import 'fs';
6
6
  import 'node:fs';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-SnNF4vVI.cjs');
3
+ var index = require('./index-WIr2Wt9U.cjs');
4
4
  require('chalk');
5
- require('./api-ljzPqsrQ.cjs');
5
+ require('./api-BtjmMYKf.cjs');
6
6
  require('axios');
7
7
  require('fs');
8
8
  require('node:fs');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var persistence = require('./api-ljzPqsrQ.cjs');
4
+ var persistence = require('./api-BtjmMYKf.cjs');
5
5
  var z = require('zod');
6
6
  var fs$2 = require('fs/promises');
7
7
  var os$1 = require('os');
@@ -71,7 +71,7 @@ async function openBrowser(url) {
71
71
  }
72
72
  }
73
73
 
74
- const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-SnNF4vVI.cjs', document.baseURI).href)));
74
+ const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-WIr2Wt9U.cjs', document.baseURI).href)));
75
75
  const QRCode = require$1("qrcode-terminal/vendor/QRCode");
76
76
  const QRErrorCorrectLevel = require$1("qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel");
77
77
  const pendingTempFiles = /* @__PURE__ */ new Set();
@@ -636,7 +636,7 @@ function setupCleanupHandlers() {
636
636
  });
637
637
  }
638
638
 
639
- const __dirname$2 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-SnNF4vVI.cjs', document.baseURI).href))));
639
+ const __dirname$2 = path$1.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-WIr2Wt9U.cjs', document.baseURI).href))));
640
640
  function projectPath() {
641
641
  const path = path$1.resolve(__dirname$2, "..");
642
642
  return path;
@@ -9097,7 +9097,7 @@ class AbortError extends Error {
9097
9097
  }
9098
9098
  }
9099
9099
 
9100
- const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-SnNF4vVI.cjs', document.baseURI).href)));
9100
+ const __filename$1 = node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index-WIr2Wt9U.cjs', document.baseURI).href)));
9101
9101
  const __dirname$1 = path.join(__filename$1, "..");
9102
9102
  function getGlobalClaudeVersion() {
9103
9103
  try {
@@ -10415,11 +10415,15 @@ var launch = /*#__PURE__*/Object.freeze({
10415
10415
 
10416
10416
  const unifiedProviderExecutors = {
10417
10417
  claude: async (opts) => {
10418
- const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-khz1woP5.cjs'); });
10419
- await runClaude(opts.credentials, opts.claudeOptions ?? {});
10418
+ const claudeOptions = opts.claudeOptions ?? {};
10419
+ const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-CAelse1X.cjs'); });
10420
+ await runClaude(opts.credentials, {
10421
+ ...claudeOptions,
10422
+ startingMode: claudeOptions.startingMode ?? (claudeOptions.startedBy === "daemon" ? "remote" : void 0)
10423
+ });
10420
10424
  },
10421
10425
  codex: async (opts) => {
10422
- const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-Vb_tfdTK.cjs'); });
10426
+ const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-ofeVc4Nl.cjs'); });
10423
10427
  await runCodex({
10424
10428
  credentials: opts.credentials,
10425
10429
  startedBy: opts.startedBy,
@@ -10428,7 +10432,7 @@ const unifiedProviderExecutors = {
10428
10432
  });
10429
10433
  },
10430
10434
  gemini: async (opts) => {
10431
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-MIoPtN_R.cjs'); });
10435
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-ChlLWNak.cjs'); });
10432
10436
  await runGemini({
10433
10437
  credentials: opts.credentials,
10434
10438
  startedBy: opts.startedBy
@@ -10511,7 +10515,7 @@ function shouldRunMainClaudeFlow(opts) {
10511
10515
  return;
10512
10516
  } else if (subcommand === "runtime") {
10513
10517
  if (args[1] === "providers") {
10514
- const { renderRuntimeProviders } = await Promise.resolve().then(function () { return require('./command-C4nFEFfU.cjs'); });
10518
+ const { renderRuntimeProviders } = await Promise.resolve().then(function () { return require('./command-D9Xa72wn.cjs'); });
10515
10519
  console.log(renderRuntimeProviders());
10516
10520
  return;
10517
10521
  }
@@ -10700,8 +10704,8 @@ function shouldRunMainClaudeFlow(opts) {
10700
10704
  const projectId = args[3];
10701
10705
  try {
10702
10706
  const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return config; });
10703
- const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./api-ljzPqsrQ.cjs'); }).then(function (n) { return n.persistence; });
10704
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./api-ljzPqsrQ.cjs'); }).then(function (n) { return n.api; });
10707
+ const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./api-BtjmMYKf.cjs'); }).then(function (n) { return n.persistence; });
10708
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./api-BtjmMYKf.cjs'); }).then(function (n) { return n.api; });
10705
10709
  let userEmail = void 0;
10706
10710
  try {
10707
10711
  const credentials = await readCredentials2();
@@ -1,5 +1,5 @@
1
1
  import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
2
- import { l as logger, j as encodeBase64, c as configuration, k as readCredentials, m as ensureSigningCredentials, r as readSettings, u as updateSettings, n as encodeBase64Url, g as delay, o as buildClientHeaders, q as decodeBase64, w as writeCredentialsLegacy, t as writeCredentialsDataKey, v as readDaemonState, x as HAPPY_CLOUD_DAEMON_PORT, y as clearDaemonState, z as packageJson, B as acquireDaemonLock, C as writeDaemonState, A as ApiClient, D as releaseDaemonLock, E as validateProfileForAgent, F as getProfileEnvironmentVariables, G as clearCredentials, I as clearMachineId, J as HeadTailPreviewBuffer, K as getLatestDaemonLog } from './api-LMpXb-Ju.mjs';
2
+ import { l as logger, j as encodeBase64, c as configuration, k as readCredentials, m as ensureSigningCredentials, r as readSettings, u as updateSettings, n as encodeBase64Url, g as delay, o as buildClientHeaders, q as decodeBase64, w as writeCredentialsLegacy, t as writeCredentialsDataKey, v as readDaemonState, x as HAPPY_CLOUD_DAEMON_PORT, y as clearDaemonState, z as packageJson, B as acquireDaemonLock, C as writeDaemonState, A as ApiClient, D as releaseDaemonLock, E as validateProfileForAgent, F as getProfileEnvironmentVariables, G as clearCredentials, I as clearMachineId, J as HeadTailPreviewBuffer, K as getLatestDaemonLog } from './api-CtjWkGWV.mjs';
3
3
  import { z } from 'zod';
4
4
  import fs, { writeFile as writeFile$1, rename, unlink as unlink$1 } from 'fs/promises';
5
5
  import os$1, { homedir } from 'os';
@@ -10393,11 +10393,15 @@ var launch = /*#__PURE__*/Object.freeze({
10393
10393
 
10394
10394
  const unifiedProviderExecutors = {
10395
10395
  claude: async (opts) => {
10396
- const { runClaude } = await import('./runClaude-DrWj6fju.mjs');
10397
- await runClaude(opts.credentials, opts.claudeOptions ?? {});
10396
+ const claudeOptions = opts.claudeOptions ?? {};
10397
+ const { runClaude } = await import('./runClaude-BQ3EPwaa.mjs');
10398
+ await runClaude(opts.credentials, {
10399
+ ...claudeOptions,
10400
+ startingMode: claudeOptions.startingMode ?? (claudeOptions.startedBy === "daemon" ? "remote" : void 0)
10401
+ });
10398
10402
  },
10399
10403
  codex: async (opts) => {
10400
- const { runCodex } = await import('./runCodex-CfQgQ4gD.mjs');
10404
+ const { runCodex } = await import('./runCodex-4njIyif-.mjs');
10401
10405
  await runCodex({
10402
10406
  credentials: opts.credentials,
10403
10407
  startedBy: opts.startedBy,
@@ -10406,7 +10410,7 @@ const unifiedProviderExecutors = {
10406
10410
  });
10407
10411
  },
10408
10412
  gemini: async (opts) => {
10409
- const { runGemini } = await import('./runGemini-BOdeej1A.mjs');
10413
+ const { runGemini } = await import('./runGemini-ClDpc5hl.mjs');
10410
10414
  await runGemini({
10411
10415
  credentials: opts.credentials,
10412
10416
  startedBy: opts.startedBy
@@ -10489,7 +10493,7 @@ function shouldRunMainClaudeFlow(opts) {
10489
10493
  return;
10490
10494
  } else if (subcommand === "runtime") {
10491
10495
  if (args[1] === "providers") {
10492
- const { renderRuntimeProviders } = await import('./command-wiV8CFFG.mjs');
10496
+ const { renderRuntimeProviders } = await import('./command-BV2wo6tq.mjs');
10493
10497
  console.log(renderRuntimeProviders());
10494
10498
  return;
10495
10499
  }
@@ -10678,8 +10682,8 @@ function shouldRunMainClaudeFlow(opts) {
10678
10682
  const projectId = args[3];
10679
10683
  try {
10680
10684
  const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return config; });
10681
- const { readCredentials: readCredentials2 } = await import('./api-LMpXb-Ju.mjs').then(function (n) { return n.L; });
10682
- const { ApiClient: ApiClient2 } = await import('./api-LMpXb-Ju.mjs').then(function (n) { return n.M; });
10685
+ const { readCredentials: readCredentials2 } = await import('./api-CtjWkGWV.mjs').then(function (n) { return n.L; });
10686
+ const { ApiClient: ApiClient2 } = await import('./api-CtjWkGWV.mjs').then(function (n) { return n.M; });
10683
10687
  let userEmail = void 0;
10684
10688
  try {
10685
10689
  const credentials = await readCredentials2();
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./api-ljzPqsrQ.cjs');
4
+ require('./api-BtjmMYKf.cjs');
5
5
  require('zod');
6
- require('./index-SnNF4vVI.cjs');
6
+ require('./index-WIr2Wt9U.cjs');
7
7
  require('node:child_process');
8
8
  require('node:fs');
9
9
  require('cross-spawn');
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import 'chalk';
2
- import './api-LMpXb-Ju.mjs';
2
+ import './api-CtjWkGWV.mjs';
3
3
  import 'zod';
4
- import './index-CYRsGHXJ.mjs';
4
+ import './index-hL-ID2fR.mjs';
5
5
  import 'node:child_process';
6
6
  import 'node:fs';
7
7
  import 'cross-spawn';
package/dist/lib.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./api-ljzPqsrQ.cjs');
3
+ var persistence = require('./api-BtjmMYKf.cjs');
4
4
  var types = require('./types-DVk3crez.cjs');
5
5
  require('axios');
6
6
  require('chalk');
package/dist/lib.d.cts CHANGED
@@ -2349,6 +2349,7 @@ declare class ApiSessionClient extends EventEmitter {
2349
2349
  private protocolV3SocketCapabilities;
2350
2350
  private protocolV3SessionSyncWaitTimer;
2351
2351
  private committedSessionWriteAckMode;
2352
+ private pendingBackgroundTasks;
2352
2353
  private pendingHappyOrgDispatchBusinessAcks;
2353
2354
  private recordedHappyOrgDispatchBusinessAcks;
2354
2355
  private pendingHappyOrgTaskTurnReports;
@@ -2416,6 +2417,8 @@ declare class ApiSessionClient extends EventEmitter {
2416
2417
  */
2417
2418
  flush(): Promise<void>;
2418
2419
  close(): Promise<void>;
2420
+ private trackPendingBackgroundTask;
2421
+ private waitForPendingBackgroundTasksToDrain;
2419
2422
  private handleSocketUpdate;
2420
2423
  private dispatchEncryptedSessionMessage;
2421
2424
  private maybeAutoAcknowledgeHappyOrgDispatch;
package/dist/lib.d.mts CHANGED
@@ -2349,6 +2349,7 @@ declare class ApiSessionClient extends EventEmitter {
2349
2349
  private protocolV3SocketCapabilities;
2350
2350
  private protocolV3SessionSyncWaitTimer;
2351
2351
  private committedSessionWriteAckMode;
2352
+ private pendingBackgroundTasks;
2352
2353
  private pendingHappyOrgDispatchBusinessAcks;
2353
2354
  private recordedHappyOrgDispatchBusinessAcks;
2354
2355
  private pendingHappyOrgTaskTurnReports;
@@ -2416,6 +2417,8 @@ declare class ApiSessionClient extends EventEmitter {
2416
2417
  */
2417
2418
  flush(): Promise<void>;
2418
2419
  close(): Promise<void>;
2420
+ private trackPendingBackgroundTask;
2421
+ private waitForPendingBackgroundTasksToDrain;
2419
2422
  private handleSocketUpdate;
2420
2423
  private dispatchEncryptedSessionMessage;
2421
2424
  private maybeAutoAcknowledgeHappyOrgDispatch;
package/dist/lib.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ApiClient, a as ApiSessionClient, c as configuration, l as logger } from './api-LMpXb-Ju.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, c as configuration, l as logger } from './api-CtjWkGWV.mjs';
2
2
  export { R as RawJSONLinesSchema } from './types-CiliQpqS.mjs';
3
3
  import 'axios';
4
4
  import 'chalk';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-SnNF4vVI.cjs');
4
- var persistence = require('./api-ljzPqsrQ.cjs');
3
+ var index = require('./index-WIr2Wt9U.cjs');
4
+ var persistence = require('./api-BtjmMYKf.cjs');
5
5
  var node_crypto = require('node:crypto');
6
6
  var path = require('node:path');
7
7
  var crypto = require('crypto');
@@ -1,5 +1,5 @@
1
- import { k as initialMachineMetadata, R as RuntimeShell, l as resolveCanonicalToolNameV2, f as formatDisplayMessage } from './index-CYRsGHXJ.mjs';
2
- import { r as readSettings, H as HAPPY_ORG_TURN_REPORT_TAG, d as HAPPY_ORG_SUMMARY_MAX_LENGTH, e as HAPPY_ORG_REPEAT_THRESHOLD, l as logger } from './api-LMpXb-Ju.mjs';
1
+ import { k as initialMachineMetadata, R as RuntimeShell, l as resolveCanonicalToolNameV2, f as formatDisplayMessage } from './index-hL-ID2fR.mjs';
2
+ import { r as readSettings, H as HAPPY_ORG_TURN_REPORT_TAG, d as HAPPY_ORG_SUMMARY_MAX_LENGTH, e as HAPPY_ORG_REPEAT_THRESHOLD, l as logger } from './api-CtjWkGWV.mjs';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { basename } from 'node:path';
5
5
  import { createHash } from 'crypto';
@@ -1,8 +1,8 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { l as logger, f as backoff, g as delay, h as AsyncLock, c as configuration, s as startOfflineReconnection, b as connectionState, A as ApiClient, i as isAuthenticationRequiredError } from './api-LMpXb-Ju.mjs';
2
+ import { l as logger, f as backoff, g as delay, h as AsyncLock, c as configuration, s as startOfflineReconnection, b as connectionState, A as ApiClient, i as isAuthenticationRequiredError } from './api-CtjWkGWV.mjs';
3
3
  import 'cross-spawn';
4
4
  import '@agentclientprotocol/sdk';
5
- import { m as getProjectPath, F as Future, n as claudeLocal, E as ExitCodeError, o as trimIdent, q as createClaudeBackend, f as formatDisplayMessage, t as truncateDisplayMessage, u as claudeCheckSession, w as projectPath, x as mapToClaudeMode, P as PushableAsyncIterable, y as query, A as AbortError, e as stopCaffeinate, p as publishSessionRegistration, z as getEnvironmentInfo, a as createSessionMetadata, B as startCaffeinate, b as closeProviderSession } from './index-CYRsGHXJ.mjs';
5
+ import { m as getProjectPath, F as Future, n as claudeLocal, E as ExitCodeError, o as trimIdent, q as createClaudeBackend, f as formatDisplayMessage, t as truncateDisplayMessage, u as claudeCheckSession, w as projectPath, x as mapToClaudeMode, P as PushableAsyncIterable, y as query, A as AbortError, e as stopCaffeinate, p as publishSessionRegistration, z as getEnvironmentInfo, a as createSessionMetadata, B as startCaffeinate, b as closeProviderSession } from './index-hL-ID2fR.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-DJSSjBOW.mjs';
26
+ import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-D9WDj0pS.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, l as launchRuntimeHandleWithFactoryResult, k as forwardAgentMessageToProviderSession, s as syncControlledByUserState, r as resolveHappyOrgQueuedTurn, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, h as hashObject, c as registerKillSessionHandler } from './registerKillSessionHandler-BD-ChYZJ.mjs';
28
+ import { B as BasePermissionHandler, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, l as launchRuntimeHandleWithFactoryResult, k as forwardAgentMessageToProviderSession, s as syncControlledByUserState, r as resolveHappyOrgQueuedTurn, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, h as hashObject, c as registerKillSessionHandler } from './registerKillSessionHandler-D9JiuWdb.mjs';
29
29
  import 'socket.io-client';
30
30
  import 'expo-server-sdk';
31
31
  import { isDeepStrictEqual } from 'node:util';
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var node_crypto = require('node:crypto');
4
- var persistence = require('./api-ljzPqsrQ.cjs');
4
+ var persistence = require('./api-BtjmMYKf.cjs');
5
5
  require('cross-spawn');
6
6
  require('@agentclientprotocol/sdk');
7
- var index = require('./index-SnNF4vVI.cjs');
7
+ var index = require('./index-WIr2Wt9U.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-SWCNmor4.cjs');
28
+ var ProviderSelectionHandler = require('./ProviderSelectionHandler-B8EGoc4L.cjs');
29
29
  var types = require('./types-DVk3crez.cjs');
30
- var registerKillSessionHandler = require('./registerKillSessionHandler-C4IlzmJl.cjs');
30
+ var registerKillSessionHandler = require('./registerKillSessionHandler-D0EYq7uF.cjs');
31
31
  require('socket.io-client');
32
32
  require('expo-server-sdk');
33
33
  var node_util = require('node:util');
@@ -1,6 +1,6 @@
1
- import { p as preserveSessionRuntimeMetadata, l as logger, b as connectionState, A as ApiClient } from './api-LMpXb-Ju.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, c as registerKillSessionHandler, l as launchRuntimeHandleWithFactoryResult, j as inferToolResultError, k as forwardAgentMessageToProviderSession, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, r as resolveHappyOrgQueuedTurn, s as syncControlledByUserState } from './registerKillSessionHandler-BD-ChYZJ.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-CYRsGHXJ.mjs';
1
+ import { p as preserveSessionRuntimeMetadata, l as logger, b as connectionState, A as ApiClient } from './api-CtjWkGWV.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, c as registerKillSessionHandler, l as launchRuntimeHandleWithFactoryResult, j as inferToolResultError, k as forwardAgentMessageToProviderSession, e as ensureManagedProviderMachine, M as MissingMachineIdError, b as MessageQueue2, r as resolveHappyOrgQueuedTurn, s as syncControlledByUserState } from './registerKillSessionHandler-D9JiuWdb.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-hL-ID2fR.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-DJSSjBOW.mjs';
28
- import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-Dtna0CRw.mjs';
27
+ import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-D9WDj0pS.mjs';
28
+ import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-CQ59YfWV.mjs';
29
29
  import 'zod';
30
30
  import 'socket.io-client';
31
31
  import 'expo-server-sdk';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var persistence = require('./api-ljzPqsrQ.cjs');
4
- var registerKillSessionHandler = require('./registerKillSessionHandler-C4IlzmJl.cjs');
5
- var index = require('./index-SnNF4vVI.cjs');
3
+ var persistence = require('./api-BtjmMYKf.cjs');
4
+ var registerKillSessionHandler = require('./registerKillSessionHandler-D0EYq7uF.cjs');
5
+ var index = require('./index-WIr2Wt9U.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-SWCNmor4.cjs');
30
- var BaseReasoningProcessor = require('./BaseReasoningProcessor-CuB78Igh.cjs');
29
+ var ProviderSelectionHandler = require('./ProviderSelectionHandler-B8EGoc4L.cjs');
30
+ var BaseReasoningProcessor = require('./BaseReasoningProcessor-BrPfiZf4.cjs');
31
31
  require('zod');
32
32
  require('socket.io-client');
33
33
  require('expo-server-sdk');
@@ -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-ljzPqsrQ.cjs');
7
- var registerKillSessionHandler = require('./registerKillSessionHandler-C4IlzmJl.cjs');
8
- var index = require('./index-SnNF4vVI.cjs');
9
- var BaseReasoningProcessor = require('./BaseReasoningProcessor-CuB78Igh.cjs');
6
+ var persistence = require('./api-BtjmMYKf.cjs');
7
+ var registerKillSessionHandler = require('./registerKillSessionHandler-D0EYq7uF.cjs');
8
+ var index = require('./index-WIr2Wt9U.cjs');
9
+ var BaseReasoningProcessor = require('./BaseReasoningProcessor-BrPfiZf4.cjs');
10
10
  require('cross-spawn');
11
11
  require('@agentclientprotocol/sdk');
12
12
  require('ps-list');
@@ -1,10 +1,10 @@
1
1
  import { useStdout, useInput, Box, Text, render } from 'ink';
2
2
  import React, { useState, useRef, useEffect, useCallback } from 'react';
3
3
  import { randomUUID } from 'node:crypto';
4
- import { l as logger, b as connectionState, A as ApiClient } from './api-LMpXb-Ju.mjs';
5
- import { B as BasePermissionHandler, C as ConversationHistory$1, r as resolveHappyOrgQueuedTurn, e as ensureManagedProviderMachine, M as MissingMachineIdError, s as syncControlledByUserState, b as MessageQueue2, h as hashObject, c as registerKillSessionHandler, d as MessageBuffer, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, l as launchRuntimeHandleWithFactoryResult, j as inferToolResultError, k as forwardAgentMessageToProviderSession } from './registerKillSessionHandler-BD-ChYZJ.mjs';
6
- import { g as getInitialGeminiModel, r as readGeminiLocalConfig, G as GEMINI_MODEL_ENV, b as closeProviderSession, s as saveGeminiModelToConfig, d as createGeminiBackend, e as stopCaffeinate } from './index-CYRsGHXJ.mjs';
7
- import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-Dtna0CRw.mjs';
4
+ import { l as logger, b as connectionState, A as ApiClient } from './api-CtjWkGWV.mjs';
5
+ import { B as BasePermissionHandler, C as ConversationHistory$1, r as resolveHappyOrgQueuedTurn, e as ensureManagedProviderMachine, M as MissingMachineIdError, s as syncControlledByUserState, b as MessageQueue2, h as hashObject, c as registerKillSessionHandler, d as MessageBuffer, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurnWithBusinessAck, l as launchRuntimeHandleWithFactoryResult, j as inferToolResultError, k as forwardAgentMessageToProviderSession } from './registerKillSessionHandler-D9JiuWdb.mjs';
6
+ import { g as getInitialGeminiModel, r as readGeminiLocalConfig, G as GEMINI_MODEL_ENV, b as closeProviderSession, s as saveGeminiModelToConfig, d as createGeminiBackend, e as stopCaffeinate } from './index-hL-ID2fR.mjs';
7
+ import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-CQ59YfWV.mjs';
8
8
  import 'cross-spawn';
9
9
  import '@agentclientprotocol/sdk';
10
10
  import 'ps-list';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-imou-cloud",
3
- "version": "2.1.19",
3
+ "version": "2.1.20",
4
4
  "description": "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI",
5
5
  "author": "long.zhu",
6
6
  "license": "MIT",