happy-imou-cloud 2.1.14 → 2.1.15

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 (27) hide show
  1. package/dist/{BaseReasoningProcessor-BopJzCX1.cjs → BaseReasoningProcessor-CM_72G79.cjs} +2 -2
  2. package/dist/{BaseReasoningProcessor-DBI-wmAq.mjs → BaseReasoningProcessor-CVlTn4bz.mjs} +2 -2
  3. package/dist/{ProviderSelectionHandler-D-g808TK.cjs → ProviderSelectionHandler-8KqyCR1t.cjs} +2 -2
  4. package/dist/{ProviderSelectionHandler-BBhFPe8E.mjs → ProviderSelectionHandler-CRMANxaw.mjs} +2 -2
  5. package/dist/{api-CleaBHoF.cjs → api-BPXrSITF.cjs} +40 -8
  6. package/dist/{api-ehyDSOc5.mjs → api-Cgyrs44K.mjs} +40 -9
  7. package/dist/{command-jYweihkY.cjs → command-BlMDPyNv.cjs} +3 -3
  8. package/dist/{command-o-MfrQiP.mjs → command-ykLmhw9O.mjs} +3 -3
  9. package/dist/{index-aAcmZ774.cjs → index-BHLqfbDm.cjs} +48 -13
  10. package/dist/{index-DN6ihUoI.mjs → index-BKd56kbE.mjs} +45 -10
  11. package/dist/index.cjs +3 -3
  12. package/dist/index.mjs +3 -3
  13. package/dist/lib.cjs +1 -1
  14. package/dist/lib.d.cts +1 -0
  15. package/dist/lib.d.mts +1 -0
  16. package/dist/lib.mjs +1 -1
  17. package/dist/{persistence-DBVrW1P5.mjs → persistence-D1rI_096.mjs} +1 -1
  18. package/dist/{persistence-oHFJbsvr.cjs → persistence-DgaStaev.cjs} +1 -1
  19. package/dist/{registerKillSessionHandler-3R7E1V6V.cjs → registerKillSessionHandler-Bc-f3xFV.cjs} +3 -3
  20. package/dist/{registerKillSessionHandler-BVnsXvxn.mjs → registerKillSessionHandler-BqFm3Yvi.mjs} +3 -3
  21. package/dist/{runClaude-0rReIj8o.mjs → runClaude-BYVqYLc6.mjs} +5 -5
  22. package/dist/{runClaude-C1eZZv8o.cjs → runClaude-Da0YUY3E.cjs} +5 -5
  23. package/dist/{runCodex-BROvg6-O.cjs → runCodex-CZZNiXT5.cjs} +8 -25
  24. package/dist/{runCodex-CwT9QIML.mjs → runCodex-x0k9hJyI.mjs} +8 -25
  25. package/dist/{runGemini-BlJNEB-g.mjs → runGemini-B_bJyd4j.mjs} +5 -5
  26. package/dist/{runGemini-C-oJCLfz.cjs → runGemini-C6_EpYe9.cjs} +5 -5
  27. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-aAcmZ774.cjs');
4
- var api = require('./api-CleaBHoF.cjs');
3
+ var index = require('./index-BHLqfbDm.cjs');
4
+ var api = require('./api-BPXrSITF.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-DN6ihUoI.mjs';
2
- import { s as startOfflineReconnection, c as configuration, i as isAuthenticationRequiredError, l as logger } from './api-ehyDSOc5.mjs';
1
+ import { a as createSessionMetadata, p as publishSessionRegistration } from './index-BKd56kbE.mjs';
2
+ import { s as startOfflineReconnection, c as configuration, i as isAuthenticationRequiredError, l as logger } from './api-Cgyrs44K.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 api = require('./api-CleaBHoF.cjs');
4
- var registerKillSessionHandler = require('./registerKillSessionHandler-3R7E1V6V.cjs');
3
+ var api = require('./api-BPXrSITF.cjs');
4
+ var registerKillSessionHandler = require('./registerKillSessionHandler-Bc-f3xFV.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-ehyDSOc5.mjs';
2
- import { g as getPendingInteractionTimeoutMs, I as INTERACTION_SUPERSEDED_ERROR, a as INTERACTION_TIMED_OUT_ERROR } from './registerKillSessionHandler-BVnsXvxn.mjs';
1
+ import { l as logger } from './api-Cgyrs44K.mjs';
2
+ import { g as getPendingInteractionTimeoutMs, I as INTERACTION_SUPERSEDED_ERROR, a as INTERACTION_TIMED_OUT_ERROR } from './registerKillSessionHandler-BqFm3Yvi.mjs';
3
3
 
4
4
  async function runModeLoop(opts) {
5
5
  let currentMode = opts.startingMode;
@@ -18,7 +18,7 @@ var node_child_process = require('node:child_process');
18
18
  var expoServerSdk = require('expo-server-sdk');
19
19
 
20
20
  var name = "happy-imou-cloud";
21
- var version = "2.1.14";
21
+ var version = "2.1.15";
22
22
  var description = "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI";
23
23
  var author = "long.zhu";
24
24
  var license = "MIT";
@@ -433,7 +433,7 @@ async function listDaemonLogFiles(limit = 50) {
433
433
  return { file, path: fullPath, modified: stats.mtime };
434
434
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
435
435
  try {
436
- const { readDaemonState } = await Promise.resolve().then(function () { return require('./persistence-oHFJbsvr.cjs'); });
436
+ const { readDaemonState } = await Promise.resolve().then(function () { return require('./persistence-DgaStaev.cjs'); });
437
437
  const state = await readDaemonState();
438
438
  if (!state) {
439
439
  return logs;
@@ -948,6 +948,22 @@ function buildSessionRuntimeIndex(metadata) {
948
948
  };
949
949
  }
950
950
 
951
+ function preserveSessionRuntimeMetadata(current, next) {
952
+ if (!current) {
953
+ return next;
954
+ }
955
+ return {
956
+ ...next,
957
+ ...next.machineId ? {} : current.machineId ? { machineId: current.machineId } : {},
958
+ ...typeof next.hostPid === "number" ? {} : typeof current.hostPid === "number" ? { hostPid: current.hostPid } : {},
959
+ ...typeof next.startedFromDaemon === "boolean" ? {} : typeof current.startedFromDaemon === "boolean" ? { startedFromDaemon: current.startedFromDaemon } : {},
960
+ ...next.startedBy ? {} : current.startedBy ? { startedBy: current.startedBy } : {},
961
+ ...next.lifecycleState ? {} : current.lifecycleState ? { lifecycleState: current.lifecycleState } : {},
962
+ ...typeof next.lifecycleStateSince === "number" ? {} : typeof current.lifecycleStateSince === "number" ? { lifecycleStateSince: current.lifecycleStateSince } : {},
963
+ ...next.flavor ? {} : current.flavor ? { flavor: current.flavor } : {}
964
+ };
965
+ }
966
+
951
967
  async function delay(ms) {
952
968
  return new Promise((resolve) => setTimeout(resolve, ms));
953
969
  }
@@ -1933,6 +1949,12 @@ class ApiSessionClient extends node_events.EventEmitter {
1933
1949
  getAgentStateSnapshot() {
1934
1950
  return this.agentState;
1935
1951
  }
1952
+ mergeRuntimeMetadata(next) {
1953
+ if (!next) {
1954
+ return next;
1955
+ }
1956
+ return preserveSessionRuntimeMetadata(this.metadata, next);
1957
+ }
1936
1958
  async waitForMetadataUpdate(signal) {
1937
1959
  if (signal?.aborted) {
1938
1960
  throw createAbortError();
@@ -2176,7 +2198,7 @@ class ApiSessionClient extends node_events.EventEmitter {
2176
2198
  updateMetadata(handler) {
2177
2199
  void this.metadataLock.inLock(async () => {
2178
2200
  await backoff(async () => {
2179
- let updated = handler(this.metadata);
2201
+ let updated = this.mergeRuntimeMetadata(handler(this.metadata));
2180
2202
  const sessionIndex = buildSessionRuntimeIndex(updated);
2181
2203
  const answer = await this.socket.emitWithAck("update-metadata", {
2182
2204
  sid: this.sessionId,
@@ -2185,13 +2207,17 @@ class ApiSessionClient extends node_events.EventEmitter {
2185
2207
  ...sessionIndex ? { sessionIndex } : {}
2186
2208
  });
2187
2209
  if (answer.result === "success") {
2188
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata));
2210
+ this.metadata = this.mergeRuntimeMetadata(
2211
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata))
2212
+ );
2189
2213
  this.metadataVersion = answer.version;
2190
2214
  this.emit("metadata-updated", this.metadata);
2191
2215
  } else if (answer.result === "version-mismatch") {
2192
2216
  if (answer.version > this.metadataVersion) {
2193
2217
  this.metadataVersion = answer.version;
2194
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata));
2218
+ this.metadata = this.mergeRuntimeMetadata(
2219
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata))
2220
+ );
2195
2221
  this.emit("metadata-updated", this.metadata);
2196
2222
  }
2197
2223
  throw new Error("Metadata version mismatch");
@@ -2278,7 +2304,9 @@ class ApiSessionClient extends node_events.EventEmitter {
2278
2304
  return;
2279
2305
  }
2280
2306
  if (sessionBody.metadata && sessionBody.metadata.version > this.metadataVersion) {
2281
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(sessionBody.metadata.value));
2307
+ this.metadata = this.mergeRuntimeMetadata(
2308
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(sessionBody.metadata.value))
2309
+ );
2282
2310
  this.metadataVersion = sessionBody.metadata.version;
2283
2311
  this.emit("metadata-updated", this.metadata);
2284
2312
  }
@@ -2440,7 +2468,9 @@ class ApiSessionClient extends node_events.EventEmitter {
2440
2468
  }
2441
2469
  applyProtocolV3SessionOverlay(session) {
2442
2470
  if (typeof session.metadataVersion === "number" && typeof session.metadata === "string" && session.metadataVersion > this.metadataVersion) {
2443
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(session.metadata));
2471
+ this.metadata = this.mergeRuntimeMetadata(
2472
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(session.metadata))
2473
+ );
2444
2474
  this.metadataVersion = session.metadataVersion;
2445
2475
  this.emit("metadata-updated", this.metadata);
2446
2476
  }
@@ -2473,11 +2503,12 @@ class ApiSessionClient extends node_events.EventEmitter {
2473
2503
  if (version <= this.metadataVersion) {
2474
2504
  break;
2475
2505
  }
2476
- this.metadata = decrypt(
2506
+ const nextMetadata = decrypt(
2477
2507
  this.encryptionKey,
2478
2508
  this.encryptionVariant,
2479
2509
  decodeBase64(metadataUpdate.value)
2480
2510
  );
2511
+ this.metadata = this.mergeRuntimeMetadata(nextMetadata);
2481
2512
  this.metadataVersion = version;
2482
2513
  this.emit("metadata-updated", this.metadata);
2483
2514
  }
@@ -4059,4 +4090,5 @@ exports.getLatestDaemonLog = getLatestDaemonLog;
4059
4090
  exports.isAuthenticationRequiredError = isAuthenticationRequiredError;
4060
4091
  exports.logger = logger;
4061
4092
  exports.packageJson = packageJson;
4093
+ exports.preserveSessionRuntimeMetadata = preserveSessionRuntimeMetadata;
4062
4094
  exports.startOfflineReconnection = startOfflineReconnection;
@@ -16,7 +16,7 @@ import { spawn } from 'node:child_process';
16
16
  import { Expo } from 'expo-server-sdk';
17
17
 
18
18
  var name = "happy-imou-cloud";
19
- var version = "2.1.14";
19
+ var version = "2.1.15";
20
20
  var description = "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI";
21
21
  var author = "long.zhu";
22
22
  var license = "MIT";
@@ -431,7 +431,7 @@ async function listDaemonLogFiles(limit = 50) {
431
431
  return { file, path: fullPath, modified: stats.mtime };
432
432
  }).sort((a, b) => b.modified.getTime() - a.modified.getTime());
433
433
  try {
434
- const { readDaemonState } = await import('./persistence-DBVrW1P5.mjs');
434
+ const { readDaemonState } = await import('./persistence-D1rI_096.mjs');
435
435
  const state = await readDaemonState();
436
436
  if (!state) {
437
437
  return logs;
@@ -946,6 +946,22 @@ function buildSessionRuntimeIndex(metadata) {
946
946
  };
947
947
  }
948
948
 
949
+ function preserveSessionRuntimeMetadata(current, next) {
950
+ if (!current) {
951
+ return next;
952
+ }
953
+ return {
954
+ ...next,
955
+ ...next.machineId ? {} : current.machineId ? { machineId: current.machineId } : {},
956
+ ...typeof next.hostPid === "number" ? {} : typeof current.hostPid === "number" ? { hostPid: current.hostPid } : {},
957
+ ...typeof next.startedFromDaemon === "boolean" ? {} : typeof current.startedFromDaemon === "boolean" ? { startedFromDaemon: current.startedFromDaemon } : {},
958
+ ...next.startedBy ? {} : current.startedBy ? { startedBy: current.startedBy } : {},
959
+ ...next.lifecycleState ? {} : current.lifecycleState ? { lifecycleState: current.lifecycleState } : {},
960
+ ...typeof next.lifecycleStateSince === "number" ? {} : typeof current.lifecycleStateSince === "number" ? { lifecycleStateSince: current.lifecycleStateSince } : {},
961
+ ...next.flavor ? {} : current.flavor ? { flavor: current.flavor } : {}
962
+ };
963
+ }
964
+
949
965
  async function delay(ms) {
950
966
  return new Promise((resolve) => setTimeout(resolve, ms));
951
967
  }
@@ -1931,6 +1947,12 @@ class ApiSessionClient extends EventEmitter {
1931
1947
  getAgentStateSnapshot() {
1932
1948
  return this.agentState;
1933
1949
  }
1950
+ mergeRuntimeMetadata(next) {
1951
+ if (!next) {
1952
+ return next;
1953
+ }
1954
+ return preserveSessionRuntimeMetadata(this.metadata, next);
1955
+ }
1934
1956
  async waitForMetadataUpdate(signal) {
1935
1957
  if (signal?.aborted) {
1936
1958
  throw createAbortError();
@@ -2174,7 +2196,7 @@ class ApiSessionClient extends EventEmitter {
2174
2196
  updateMetadata(handler) {
2175
2197
  void this.metadataLock.inLock(async () => {
2176
2198
  await backoff(async () => {
2177
- let updated = handler(this.metadata);
2199
+ let updated = this.mergeRuntimeMetadata(handler(this.metadata));
2178
2200
  const sessionIndex = buildSessionRuntimeIndex(updated);
2179
2201
  const answer = await this.socket.emitWithAck("update-metadata", {
2180
2202
  sid: this.sessionId,
@@ -2183,13 +2205,17 @@ class ApiSessionClient extends EventEmitter {
2183
2205
  ...sessionIndex ? { sessionIndex } : {}
2184
2206
  });
2185
2207
  if (answer.result === "success") {
2186
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata));
2208
+ this.metadata = this.mergeRuntimeMetadata(
2209
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata))
2210
+ );
2187
2211
  this.metadataVersion = answer.version;
2188
2212
  this.emit("metadata-updated", this.metadata);
2189
2213
  } else if (answer.result === "version-mismatch") {
2190
2214
  if (answer.version > this.metadataVersion) {
2191
2215
  this.metadataVersion = answer.version;
2192
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata));
2216
+ this.metadata = this.mergeRuntimeMetadata(
2217
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(answer.metadata))
2218
+ );
2193
2219
  this.emit("metadata-updated", this.metadata);
2194
2220
  }
2195
2221
  throw new Error("Metadata version mismatch");
@@ -2276,7 +2302,9 @@ class ApiSessionClient extends EventEmitter {
2276
2302
  return;
2277
2303
  }
2278
2304
  if (sessionBody.metadata && sessionBody.metadata.version > this.metadataVersion) {
2279
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(sessionBody.metadata.value));
2305
+ this.metadata = this.mergeRuntimeMetadata(
2306
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(sessionBody.metadata.value))
2307
+ );
2280
2308
  this.metadataVersion = sessionBody.metadata.version;
2281
2309
  this.emit("metadata-updated", this.metadata);
2282
2310
  }
@@ -2438,7 +2466,9 @@ class ApiSessionClient extends EventEmitter {
2438
2466
  }
2439
2467
  applyProtocolV3SessionOverlay(session) {
2440
2468
  if (typeof session.metadataVersion === "number" && typeof session.metadata === "string" && session.metadataVersion > this.metadataVersion) {
2441
- this.metadata = decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(session.metadata));
2469
+ this.metadata = this.mergeRuntimeMetadata(
2470
+ decrypt(this.encryptionKey, this.encryptionVariant, decodeBase64(session.metadata))
2471
+ );
2442
2472
  this.metadataVersion = session.metadataVersion;
2443
2473
  this.emit("metadata-updated", this.metadata);
2444
2474
  }
@@ -2471,11 +2501,12 @@ class ApiSessionClient extends EventEmitter {
2471
2501
  if (version <= this.metadataVersion) {
2472
2502
  break;
2473
2503
  }
2474
- this.metadata = decrypt(
2504
+ const nextMetadata = decrypt(
2475
2505
  this.encryptionKey,
2476
2506
  this.encryptionVariant,
2477
2507
  decodeBase64(metadataUpdate.value)
2478
2508
  );
2509
+ this.metadata = this.mergeRuntimeMetadata(nextMetadata);
2479
2510
  this.metadataVersion = version;
2480
2511
  this.emit("metadata-updated", this.metadata);
2481
2512
  }
@@ -4033,4 +4064,4 @@ var api = /*#__PURE__*/Object.freeze({
4033
4064
  ApiClient: ApiClient
4034
4065
  });
4035
4066
 
4036
- export { ApiClient as A, HAPPY_ORG_TURN_REPORT_TAG as H, SigningBootstrapRequiredError as S, ApiSessionClient as a, connectionState as b, configuration as c, HAPPY_ORG_SUMMARY_MAX_LENGTH as d, encodeBase64 as e, HAPPY_ORG_REPEAT_THRESHOLD as f, backoff as g, delay as h, isAuthenticationRequiredError as i, AsyncLock as j, buildAuthenticatedHeaders as k, logger as l, SIGNING_BOOTSTRAP_REQUIRED_MESSAGE as m, encodeBase64Url as n, buildClientHeaders as o, decodeBase64 as p, HAPPY_CLOUD_DAEMON_PORT as q, packageJson as r, startOfflineReconnection as s, HeadTailPreviewBuffer as t, getLatestDaemonLog as u, api as v };
4067
+ export { ApiClient as A, HAPPY_ORG_TURN_REPORT_TAG as H, SigningBootstrapRequiredError as S, ApiSessionClient as a, connectionState as b, configuration as c, HAPPY_ORG_SUMMARY_MAX_LENGTH as d, encodeBase64 as e, HAPPY_ORG_REPEAT_THRESHOLD as f, backoff as g, delay as h, isAuthenticationRequiredError as i, AsyncLock as j, buildAuthenticatedHeaders as k, logger as l, SIGNING_BOOTSTRAP_REQUIRED_MESSAGE as m, encodeBase64Url as n, buildClientHeaders as o, preserveSessionRuntimeMetadata as p, decodeBase64 as q, HAPPY_CLOUD_DAEMON_PORT as r, startOfflineReconnection as s, packageJson as t, HeadTailPreviewBuffer as u, getLatestDaemonLog as v, api as w };
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-aAcmZ774.cjs');
3
+ var index = require('./index-BHLqfbDm.cjs');
4
4
  require('chalk');
5
- require('./api-CleaBHoF.cjs');
5
+ require('./api-BPXrSITF.cjs');
6
6
  require('axios');
7
7
  require('fs');
8
8
  require('node:fs');
@@ -18,7 +18,7 @@ require('crypto');
18
18
  require('path');
19
19
  require('node:child_process');
20
20
  require('expo-server-sdk');
21
- require('./persistence-oHFJbsvr.cjs');
21
+ require('./persistence-DgaStaev.cjs');
22
22
  require('node:fs/promises');
23
23
  require('os');
24
24
  require('tmp');
@@ -1,6 +1,6 @@
1
- import { c as createDefaultRuntimeShell } from './index-DN6ihUoI.mjs';
1
+ import { c as createDefaultRuntimeShell } from './index-BKd56kbE.mjs';
2
2
  import 'chalk';
3
- import './api-ehyDSOc5.mjs';
3
+ import './api-Cgyrs44K.mjs';
4
4
  import 'axios';
5
5
  import 'fs';
6
6
  import 'node:fs';
@@ -16,7 +16,7 @@ import 'crypto';
16
16
  import 'path';
17
17
  import 'node:child_process';
18
18
  import 'expo-server-sdk';
19
- import './persistence-DBVrW1P5.mjs';
19
+ import './persistence-D1rI_096.mjs';
20
20
  import 'node:fs/promises';
21
21
  import 'os';
22
22
  import 'tmp';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chalk = require('chalk');
4
- var api = require('./api-CleaBHoF.cjs');
5
- var persistence = require('./persistence-oHFJbsvr.cjs');
4
+ var api = require('./api-BPXrSITF.cjs');
5
+ var persistence = require('./persistence-DgaStaev.cjs');
6
6
  var z = require('zod');
7
7
  var fs$2 = require('fs/promises');
8
8
  var os$1 = require('os');
@@ -72,7 +72,7 @@ async function openBrowser(url) {
72
72
  }
73
73
  }
74
74
 
75
- 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-aAcmZ774.cjs', document.baseURI).href)));
75
+ 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-BHLqfbDm.cjs', document.baseURI).href)));
76
76
  const QRCode = require$1("qrcode-terminal/vendor/QRCode");
77
77
  const QRErrorCorrectLevel = require$1("qrcode-terminal/vendor/QRCode/QRErrorCorrectLevel");
78
78
  const pendingTempFiles = /* @__PURE__ */ new Set();
@@ -695,7 +695,7 @@ function setupCleanupHandlers() {
695
695
  });
696
696
  }
697
697
 
698
- 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-aAcmZ774.cjs', document.baseURI).href))));
698
+ 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-BHLqfbDm.cjs', document.baseURI).href))));
699
699
  function projectPath() {
700
700
  const path = path$1.resolve(__dirname$2, "..");
701
701
  return path;
@@ -6625,6 +6625,18 @@ function buildAcpSpawnSpec(params) {
6625
6625
  };
6626
6626
  }
6627
6627
 
6628
+ const MAX_DROPPED_LINE_PREVIEW_CHARS = 4096;
6629
+ function formatDroppedLinePreview(line) {
6630
+ if (line.length <= MAX_DROPPED_LINE_PREVIEW_CHARS) {
6631
+ return line;
6632
+ }
6633
+ const headChars = 2048;
6634
+ const tailChars = 1024;
6635
+ const omittedChars = Math.max(0, line.length - headChars - tailChars);
6636
+ return `${line.slice(0, headChars)}
6637
+ ...[stdout line truncated ${omittedChars} chars]...
6638
+ ${line.slice(-tailChars)}`;
6639
+ }
6628
6640
  function createAcpFilteredStdoutReadable(params) {
6629
6641
  const maxMultilineBytes = typeof params.maxMultilineBytes === "number" && Number.isFinite(params.maxMultilineBytes) && params.maxMultilineBytes > 0 ? Math.trunc(params.maxMultilineBytes) : 1e6;
6630
6642
  const decoder = new TextDecoder();
@@ -6634,9 +6646,10 @@ function createAcpFilteredStdoutReadable(params) {
6634
6646
  const reader = params.readable.getReader();
6635
6647
  let buffer = "";
6636
6648
  let multiline = null;
6649
+ let discardingOversizedLine = false;
6637
6650
  let controllerErrored = false;
6638
6651
  const drop = (reason, line) => {
6639
- params.onDroppedLine?.({ reason, line });
6652
+ params.onDroppedLine?.({ reason, line: formatDroppedLinePreview(line) });
6640
6653
  };
6641
6654
  const enqueueLine = (line) => {
6642
6655
  if (!line.trim()) {
@@ -6681,7 +6694,16 @@ function createAcpFilteredStdoutReadable(params) {
6681
6694
  if (!value) {
6682
6695
  continue;
6683
6696
  }
6684
- buffer += decoder.decode(value, { stream: true });
6697
+ let decodedChunk = decoder.decode(value, { stream: true });
6698
+ if (discardingOversizedLine) {
6699
+ const newlineIndex = decodedChunk.indexOf("\n");
6700
+ if (newlineIndex === -1) {
6701
+ continue;
6702
+ }
6703
+ decodedChunk = decodedChunk.slice(newlineIndex + 1);
6704
+ discardingOversizedLine = false;
6705
+ }
6706
+ buffer += decodedChunk;
6685
6707
  const lines = buffer.split("\n");
6686
6708
  buffer = lines.pop() || "";
6687
6709
  for (const line of lines) {
@@ -6692,6 +6714,10 @@ ${line}` : line;
6692
6714
  if (nextBytes > maxMultilineBytes) {
6693
6715
  drop("multiline_overflow", multiline.buf);
6694
6716
  multiline = null;
6717
+ if (line.length > maxMultilineBytes) {
6718
+ drop("multiline_overflow", line);
6719
+ continue;
6720
+ }
6695
6721
  enqueueLine(line);
6696
6722
  continue;
6697
6723
  }
@@ -6701,6 +6727,10 @@ ${line}` : line;
6701
6727
  }
6702
6728
  continue;
6703
6729
  }
6730
+ if (line.length > maxMultilineBytes) {
6731
+ drop("multiline_overflow", line);
6732
+ continue;
6733
+ }
6704
6734
  const trimmed = line.trim();
6705
6735
  if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
6706
6736
  try {
@@ -6716,6 +6746,11 @@ ${line}` : line;
6716
6746
  }
6717
6747
  enqueueLine(line);
6718
6748
  }
6749
+ if (buffer.length > maxMultilineBytes) {
6750
+ drop("multiline_overflow", buffer);
6751
+ buffer = "";
6752
+ discardingOversizedLine = true;
6753
+ }
6719
6754
  }
6720
6755
  if (multiline) {
6721
6756
  if (!tryFlushMultiline(multiline.buf)) {
@@ -9020,7 +9055,7 @@ class AbortError extends Error {
9020
9055
  }
9021
9056
  }
9022
9057
 
9023
- 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-aAcmZ774.cjs', document.baseURI).href)));
9058
+ 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-BHLqfbDm.cjs', document.baseURI).href)));
9024
9059
  const __dirname$1 = path.join(__filename$1, "..");
9025
9060
  function getGlobalClaudeVersion() {
9026
9061
  try {
@@ -10319,11 +10354,11 @@ var launch = /*#__PURE__*/Object.freeze({
10319
10354
 
10320
10355
  const unifiedProviderExecutors = {
10321
10356
  claude: async (opts) => {
10322
- const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-C1eZZv8o.cjs'); });
10357
+ const { runClaude } = await Promise.resolve().then(function () { return require('./runClaude-Da0YUY3E.cjs'); });
10323
10358
  await runClaude(opts.credentials, opts.claudeOptions ?? {});
10324
10359
  },
10325
10360
  codex: async (opts) => {
10326
- const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-BROvg6-O.cjs'); });
10361
+ const { runCodex } = await Promise.resolve().then(function () { return require('./runCodex-CZZNiXT5.cjs'); });
10327
10362
  await runCodex({
10328
10363
  credentials: opts.credentials,
10329
10364
  startedBy: opts.startedBy,
@@ -10332,7 +10367,7 @@ const unifiedProviderExecutors = {
10332
10367
  });
10333
10368
  },
10334
10369
  gemini: async (opts) => {
10335
- const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-C-oJCLfz.cjs'); });
10370
+ const { runGemini } = await Promise.resolve().then(function () { return require('./runGemini-C6_EpYe9.cjs'); });
10336
10371
  await runGemini({
10337
10372
  credentials: opts.credentials,
10338
10373
  startedBy: opts.startedBy
@@ -10415,7 +10450,7 @@ function shouldRunMainClaudeFlow(opts) {
10415
10450
  return;
10416
10451
  } else if (subcommand === "runtime") {
10417
10452
  if (args[1] === "providers") {
10418
- const { renderRuntimeProviders } = await Promise.resolve().then(function () { return require('./command-jYweihkY.cjs'); });
10453
+ const { renderRuntimeProviders } = await Promise.resolve().then(function () { return require('./command-BlMDPyNv.cjs'); });
10419
10454
  console.log(renderRuntimeProviders());
10420
10455
  return;
10421
10456
  }
@@ -10604,8 +10639,8 @@ function shouldRunMainClaudeFlow(opts) {
10604
10639
  const projectId = args[3];
10605
10640
  try {
10606
10641
  const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return config; });
10607
- const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./persistence-oHFJbsvr.cjs'); });
10608
- const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./api-CleaBHoF.cjs'); }).then(function (n) { return n.api; });
10642
+ const { readCredentials: readCredentials2 } = await Promise.resolve().then(function () { return require('./persistence-DgaStaev.cjs'); });
10643
+ const { ApiClient: ApiClient2 } = await Promise.resolve().then(function () { return require('./api-BPXrSITF.cjs'); }).then(function (n) { return n.api; });
10609
10644
  let userEmail = void 0;
10610
10645
  try {
10611
10646
  const credentials = await readCredentials2();
@@ -1,6 +1,6 @@
1
1
  import{createRequire as _pkgrollCR}from"node:module";const require=_pkgrollCR(import.meta.url);import chalk from 'chalk';
2
- import { l as logger, e as encodeBase64, c as configuration, k as buildAuthenticatedHeaders, S as SigningBootstrapRequiredError, m as SIGNING_BOOTSTRAP_REQUIRED_MESSAGE, n as encodeBase64Url, h as delay, o as buildClientHeaders, p as decodeBase64, q as HAPPY_CLOUD_DAEMON_PORT, r as packageJson, A as ApiClient, t as HeadTailPreviewBuffer, u as getLatestDaemonLog } from './api-ehyDSOc5.mjs';
3
- import { writeCredentialsLegacy, writeCredentialsDataKey, readCredentials, readSettings, updateSettings, readDaemonState, clearDaemonState, acquireDaemonLock, writeDaemonState, releaseDaemonLock, validateProfileForAgent, getProfileEnvironmentVariables, clearCredentials, clearMachineId } from './persistence-DBVrW1P5.mjs';
2
+ import { l as logger, e as encodeBase64, c as configuration, k as buildAuthenticatedHeaders, S as SigningBootstrapRequiredError, m as SIGNING_BOOTSTRAP_REQUIRED_MESSAGE, n as encodeBase64Url, h as delay, o as buildClientHeaders, q as decodeBase64, r as HAPPY_CLOUD_DAEMON_PORT, t as packageJson, A as ApiClient, u as HeadTailPreviewBuffer, v as getLatestDaemonLog } from './api-Cgyrs44K.mjs';
3
+ import { writeCredentialsLegacy, writeCredentialsDataKey, readCredentials, readSettings, updateSettings, readDaemonState, clearDaemonState, acquireDaemonLock, writeDaemonState, releaseDaemonLock, validateProfileForAgent, getProfileEnvironmentVariables, clearCredentials, clearMachineId } from './persistence-D1rI_096.mjs';
4
4
  import { z } from 'zod';
5
5
  import fs, { writeFile as writeFile$1, rename, unlink as unlink$1 } from 'fs/promises';
6
6
  import os$1, { homedir } from 'os';
@@ -6603,6 +6603,18 @@ function buildAcpSpawnSpec(params) {
6603
6603
  };
6604
6604
  }
6605
6605
 
6606
+ const MAX_DROPPED_LINE_PREVIEW_CHARS = 4096;
6607
+ function formatDroppedLinePreview(line) {
6608
+ if (line.length <= MAX_DROPPED_LINE_PREVIEW_CHARS) {
6609
+ return line;
6610
+ }
6611
+ const headChars = 2048;
6612
+ const tailChars = 1024;
6613
+ const omittedChars = Math.max(0, line.length - headChars - tailChars);
6614
+ return `${line.slice(0, headChars)}
6615
+ ...[stdout line truncated ${omittedChars} chars]...
6616
+ ${line.slice(-tailChars)}`;
6617
+ }
6606
6618
  function createAcpFilteredStdoutReadable(params) {
6607
6619
  const maxMultilineBytes = typeof params.maxMultilineBytes === "number" && Number.isFinite(params.maxMultilineBytes) && params.maxMultilineBytes > 0 ? Math.trunc(params.maxMultilineBytes) : 1e6;
6608
6620
  const decoder = new TextDecoder();
@@ -6612,9 +6624,10 @@ function createAcpFilteredStdoutReadable(params) {
6612
6624
  const reader = params.readable.getReader();
6613
6625
  let buffer = "";
6614
6626
  let multiline = null;
6627
+ let discardingOversizedLine = false;
6615
6628
  let controllerErrored = false;
6616
6629
  const drop = (reason, line) => {
6617
- params.onDroppedLine?.({ reason, line });
6630
+ params.onDroppedLine?.({ reason, line: formatDroppedLinePreview(line) });
6618
6631
  };
6619
6632
  const enqueueLine = (line) => {
6620
6633
  if (!line.trim()) {
@@ -6659,7 +6672,16 @@ function createAcpFilteredStdoutReadable(params) {
6659
6672
  if (!value) {
6660
6673
  continue;
6661
6674
  }
6662
- buffer += decoder.decode(value, { stream: true });
6675
+ let decodedChunk = decoder.decode(value, { stream: true });
6676
+ if (discardingOversizedLine) {
6677
+ const newlineIndex = decodedChunk.indexOf("\n");
6678
+ if (newlineIndex === -1) {
6679
+ continue;
6680
+ }
6681
+ decodedChunk = decodedChunk.slice(newlineIndex + 1);
6682
+ discardingOversizedLine = false;
6683
+ }
6684
+ buffer += decodedChunk;
6663
6685
  const lines = buffer.split("\n");
6664
6686
  buffer = lines.pop() || "";
6665
6687
  for (const line of lines) {
@@ -6670,6 +6692,10 @@ ${line}` : line;
6670
6692
  if (nextBytes > maxMultilineBytes) {
6671
6693
  drop("multiline_overflow", multiline.buf);
6672
6694
  multiline = null;
6695
+ if (line.length > maxMultilineBytes) {
6696
+ drop("multiline_overflow", line);
6697
+ continue;
6698
+ }
6673
6699
  enqueueLine(line);
6674
6700
  continue;
6675
6701
  }
@@ -6679,6 +6705,10 @@ ${line}` : line;
6679
6705
  }
6680
6706
  continue;
6681
6707
  }
6708
+ if (line.length > maxMultilineBytes) {
6709
+ drop("multiline_overflow", line);
6710
+ continue;
6711
+ }
6682
6712
  const trimmed = line.trim();
6683
6713
  if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
6684
6714
  try {
@@ -6694,6 +6724,11 @@ ${line}` : line;
6694
6724
  }
6695
6725
  enqueueLine(line);
6696
6726
  }
6727
+ if (buffer.length > maxMultilineBytes) {
6728
+ drop("multiline_overflow", buffer);
6729
+ buffer = "";
6730
+ discardingOversizedLine = true;
6731
+ }
6697
6732
  }
6698
6733
  if (multiline) {
6699
6734
  if (!tryFlushMultiline(multiline.buf)) {
@@ -10297,11 +10332,11 @@ var launch = /*#__PURE__*/Object.freeze({
10297
10332
 
10298
10333
  const unifiedProviderExecutors = {
10299
10334
  claude: async (opts) => {
10300
- const { runClaude } = await import('./runClaude-0rReIj8o.mjs');
10335
+ const { runClaude } = await import('./runClaude-BYVqYLc6.mjs');
10301
10336
  await runClaude(opts.credentials, opts.claudeOptions ?? {});
10302
10337
  },
10303
10338
  codex: async (opts) => {
10304
- const { runCodex } = await import('./runCodex-CwT9QIML.mjs');
10339
+ const { runCodex } = await import('./runCodex-x0k9hJyI.mjs');
10305
10340
  await runCodex({
10306
10341
  credentials: opts.credentials,
10307
10342
  startedBy: opts.startedBy,
@@ -10310,7 +10345,7 @@ const unifiedProviderExecutors = {
10310
10345
  });
10311
10346
  },
10312
10347
  gemini: async (opts) => {
10313
- const { runGemini } = await import('./runGemini-BlJNEB-g.mjs');
10348
+ const { runGemini } = await import('./runGemini-B_bJyd4j.mjs');
10314
10349
  await runGemini({
10315
10350
  credentials: opts.credentials,
10316
10351
  startedBy: opts.startedBy
@@ -10393,7 +10428,7 @@ function shouldRunMainClaudeFlow(opts) {
10393
10428
  return;
10394
10429
  } else if (subcommand === "runtime") {
10395
10430
  if (args[1] === "providers") {
10396
- const { renderRuntimeProviders } = await import('./command-o-MfrQiP.mjs');
10431
+ const { renderRuntimeProviders } = await import('./command-ykLmhw9O.mjs');
10397
10432
  console.log(renderRuntimeProviders());
10398
10433
  return;
10399
10434
  }
@@ -10582,8 +10617,8 @@ function shouldRunMainClaudeFlow(opts) {
10582
10617
  const projectId = args[3];
10583
10618
  try {
10584
10619
  const { saveGoogleCloudProjectToConfig } = await Promise.resolve().then(function () { return config; });
10585
- const { readCredentials: readCredentials2 } = await import('./persistence-DBVrW1P5.mjs');
10586
- const { ApiClient: ApiClient2 } = await import('./api-ehyDSOc5.mjs').then(function (n) { return n.v; });
10620
+ const { readCredentials: readCredentials2 } = await import('./persistence-D1rI_096.mjs');
10621
+ const { ApiClient: ApiClient2 } = await import('./api-Cgyrs44K.mjs').then(function (n) { return n.w; });
10587
10622
  let userEmail = void 0;
10588
10623
  try {
10589
10624
  const credentials = await readCredentials2();
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  require('chalk');
4
- require('./api-CleaBHoF.cjs');
5
- require('./persistence-oHFJbsvr.cjs');
4
+ require('./api-BPXrSITF.cjs');
5
+ require('./persistence-DgaStaev.cjs');
6
6
  require('zod');
7
- require('./index-aAcmZ774.cjs');
7
+ require('./index-BHLqfbDm.cjs');
8
8
  require('node:child_process');
9
9
  require('node:fs');
10
10
  require('cross-spawn');
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import 'chalk';
2
- import './api-ehyDSOc5.mjs';
3
- import './persistence-DBVrW1P5.mjs';
2
+ import './api-Cgyrs44K.mjs';
3
+ import './persistence-D1rI_096.mjs';
4
4
  import 'zod';
5
- import './index-DN6ihUoI.mjs';
5
+ import './index-BKd56kbE.mjs';
6
6
  import 'node:child_process';
7
7
  import 'node:fs';
8
8
  import 'cross-spawn';
package/dist/lib.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-CleaBHoF.cjs');
3
+ var api = require('./api-BPXrSITF.cjs');
4
4
  var types = require('./types-DVk3crez.cjs');
5
5
  require('axios');
6
6
  require('chalk');
package/dist/lib.d.cts CHANGED
@@ -2313,6 +2313,7 @@ declare class ApiSessionClient extends EventEmitter {
2313
2313
  getProtocolV3SocketCapabilitiesSnapshot(): ProtocolV3SocketCapabilities | null;
2314
2314
  getMetadataSnapshot(): Metadata | null;
2315
2315
  getAgentStateSnapshot(): AgentState | null;
2316
+ private mergeRuntimeMetadata;
2316
2317
  waitForMetadataUpdate(signal?: AbortSignal): Promise<Metadata | null>;
2317
2318
  /**
2318
2319
  * Send message to session
package/dist/lib.d.mts CHANGED
@@ -2313,6 +2313,7 @@ declare class ApiSessionClient extends EventEmitter {
2313
2313
  getProtocolV3SocketCapabilitiesSnapshot(): ProtocolV3SocketCapabilities | null;
2314
2314
  getMetadataSnapshot(): Metadata | null;
2315
2315
  getAgentStateSnapshot(): AgentState | null;
2316
+ private mergeRuntimeMetadata;
2316
2317
  waitForMetadataUpdate(signal?: AbortSignal): Promise<Metadata | null>;
2317
2318
  /**
2318
2319
  * Send message to session
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-ehyDSOc5.mjs';
1
+ export { A as ApiClient, a as ApiSessionClient, c as configuration, l as logger } from './api-Cgyrs44K.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
  import { unlink, readFile, mkdir, open, stat, writeFile, rename } from 'node:fs/promises';
2
2
  import { existsSync, unlinkSync, readdirSync, constants, writeFileSync, readFileSync } from 'node:fs';
3
3
  import { join, dirname } from 'node:path';
4
- import { c as configuration, l as logger, e as encodeBase64 } from './api-ehyDSOc5.mjs';
4
+ import { c as configuration, l as logger, e as encodeBase64 } from './api-Cgyrs44K.mjs';
5
5
  import * as z from 'zod';
6
6
  import 'axios';
7
7
  import 'chalk';
@@ -3,7 +3,7 @@
3
3
  var promises = require('node:fs/promises');
4
4
  var fs = require('node:fs');
5
5
  var path = require('node:path');
6
- var api = require('./api-CleaBHoF.cjs');
6
+ var api = require('./api-BPXrSITF.cjs');
7
7
  var z = require('zod');
8
8
  require('axios');
9
9
  require('chalk');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-aAcmZ774.cjs');
4
- var persistence = require('./persistence-oHFJbsvr.cjs');
3
+ var index = require('./index-BHLqfbDm.cjs');
4
+ var persistence = require('./persistence-DgaStaev.cjs');
5
5
  var node_crypto = require('node:crypto');
6
6
  var path = require('node:path');
7
- var api = require('./api-CleaBHoF.cjs');
7
+ var api = require('./api-BPXrSITF.cjs');
8
8
  var crypto = require('crypto');
9
9
  require('axios');
10
10
  require('node:events');
@@ -1,8 +1,8 @@
1
- import { k as initialMachineMetadata, R as RuntimeShell, l as resolveCanonicalToolNameV2, f as formatDisplayMessage } from './index-DN6ihUoI.mjs';
2
- import { readSettings } from './persistence-DBVrW1P5.mjs';
1
+ import { k as initialMachineMetadata, R as RuntimeShell, l as resolveCanonicalToolNameV2, f as formatDisplayMessage } from './index-BKd56kbE.mjs';
2
+ import { readSettings } from './persistence-D1rI_096.mjs';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { basename } from 'node:path';
5
- import { H as HAPPY_ORG_TURN_REPORT_TAG, d as HAPPY_ORG_SUMMARY_MAX_LENGTH, f as HAPPY_ORG_REPEAT_THRESHOLD, l as logger } from './api-ehyDSOc5.mjs';
5
+ import { H as HAPPY_ORG_TURN_REPORT_TAG, d as HAPPY_ORG_SUMMARY_MAX_LENGTH, f as HAPPY_ORG_REPEAT_THRESHOLD, l as logger } from './api-Cgyrs44K.mjs';
6
6
  import { createHash } from 'crypto';
7
7
  import 'axios';
8
8
  import 'node:events';
@@ -1,8 +1,8 @@
1
1
  import { randomUUID } from 'node:crypto';
2
- import { l as logger, g as backoff, h as delay, j as AsyncLock, c as configuration, s as startOfflineReconnection, b as connectionState, A as ApiClient, i as isAuthenticationRequiredError } from './api-ehyDSOc5.mjs';
2
+ import { l as logger, g as backoff, h as delay, j as AsyncLock, c as configuration, s as startOfflineReconnection, b as connectionState, A as ApiClient, i as isAuthenticationRequiredError } from './api-Cgyrs44K.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-DN6ihUoI.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-BKd56kbE.mjs';
6
6
  import 'ps-list';
7
7
  import 'fs';
8
8
  import 'path';
@@ -13,7 +13,7 @@ import { dirname, basename, join, resolve } from 'node:path';
13
13
  import { homedir } from 'node:os';
14
14
  import { execSync } from 'node:child_process';
15
15
  import 'node:readline';
16
- import './persistence-DBVrW1P5.mjs';
16
+ import './persistence-D1rI_096.mjs';
17
17
  import { readFile } from 'node:fs/promises';
18
18
  import { stat, watch, access } from 'fs/promises';
19
19
  import 'crypto';
@@ -24,9 +24,9 @@ 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-BBhFPe8E.mjs';
27
+ import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-CRMANxaw.mjs';
28
28
  import { R as RawJSONLinesSchema } from './types-CiliQpqS.mjs';
29
- import { B as BasePermissionHandler, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurn, 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-BVnsXvxn.mjs';
29
+ import { B as BasePermissionHandler, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurn, 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-BqFm3Yvi.mjs';
30
30
  import 'socket.io-client';
31
31
  import 'expo-server-sdk';
32
32
  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 api = require('./api-CleaBHoF.cjs');
4
+ var api = require('./api-BPXrSITF.cjs');
5
5
  require('cross-spawn');
6
6
  require('@agentclientprotocol/sdk');
7
- var index = require('./index-aAcmZ774.cjs');
7
+ var index = require('./index-BHLqfbDm.cjs');
8
8
  require('ps-list');
9
9
  require('fs');
10
10
  require('path');
@@ -15,7 +15,7 @@ var path = require('node:path');
15
15
  var os = require('node:os');
16
16
  var node_child_process = require('node:child_process');
17
17
  require('node:readline');
18
- require('./persistence-oHFJbsvr.cjs');
18
+ require('./persistence-DgaStaev.cjs');
19
19
  var promises = require('node:fs/promises');
20
20
  var fs = require('fs/promises');
21
21
  require('crypto');
@@ -26,9 +26,9 @@ require('tweetnacl');
26
26
  require('open');
27
27
  var React = require('react');
28
28
  var ink = require('ink');
29
- var ProviderSelectionHandler = require('./ProviderSelectionHandler-D-g808TK.cjs');
29
+ var ProviderSelectionHandler = require('./ProviderSelectionHandler-8KqyCR1t.cjs');
30
30
  var types = require('./types-DVk3crez.cjs');
31
- var registerKillSessionHandler = require('./registerKillSessionHandler-3R7E1V6V.cjs');
31
+ var registerKillSessionHandler = require('./registerKillSessionHandler-Bc-f3xFV.cjs');
32
32
  require('socket.io-client');
33
33
  require('expo-server-sdk');
34
34
  var node_util = require('node:util');
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var api = require('./api-CleaBHoF.cjs');
4
- var registerKillSessionHandler = require('./registerKillSessionHandler-3R7E1V6V.cjs');
5
- var index = require('./index-aAcmZ774.cjs');
3
+ var api = require('./api-BPXrSITF.cjs');
4
+ var registerKillSessionHandler = require('./registerKillSessionHandler-Bc-f3xFV.cjs');
5
+ var index = require('./index-BHLqfbDm.cjs');
6
6
  require('cross-spawn');
7
7
  require('@agentclientprotocol/sdk');
8
8
  var node_crypto = require('node:crypto');
@@ -16,7 +16,7 @@ require('node:path');
16
16
  require('node:os');
17
17
  require('node:child_process');
18
18
  require('node:readline');
19
- require('./persistence-oHFJbsvr.cjs');
19
+ require('./persistence-DgaStaev.cjs');
20
20
  require('node:fs/promises');
21
21
  require('fs/promises');
22
22
  require('crypto');
@@ -27,8 +27,8 @@ require('tweetnacl');
27
27
  require('open');
28
28
  var React = require('react');
29
29
  var ink = require('ink');
30
- var ProviderSelectionHandler = require('./ProviderSelectionHandler-D-g808TK.cjs');
31
- var BaseReasoningProcessor = require('./BaseReasoningProcessor-BopJzCX1.cjs');
30
+ var ProviderSelectionHandler = require('./ProviderSelectionHandler-8KqyCR1t.cjs');
31
+ var BaseReasoningProcessor = require('./BaseReasoningProcessor-CM_72G79.cjs');
32
32
  require('zod');
33
33
  require('socket.io-client');
34
34
  require('expo-server-sdk');
@@ -51,23 +51,6 @@ const DEFAULT_CAPABILITIES = {
51
51
  structuredSpawnErrors: false,
52
52
  metadataWatch: false
53
53
  };
54
- function preserveRuntimeMetadataFields(current, next) {
55
- if (!current) {
56
- return next;
57
- }
58
- return {
59
- ...next,
60
- ...next.machineId ? {} : current.machineId ? { machineId: current.machineId } : {},
61
- ...typeof next.hostPid === "number" ? {} : typeof current.hostPid === "number" ? { hostPid: current.hostPid } : {},
62
- ...typeof next.startedFromDaemon === "boolean" ? {} : typeof current.startedFromDaemon === "boolean" ? { startedFromDaemon: current.startedFromDaemon } : {},
63
- ...next.startedBy ? {} : current.startedBy ? { startedBy: current.startedBy } : {},
64
- ...next.lifecycleState ? {} : current.lifecycleState ? { lifecycleState: current.lifecycleState } : {},
65
- ...typeof next.lifecycleStateSince === "number" ? {} : typeof current.lifecycleStateSince === "number" ? { lifecycleStateSince: current.lifecycleStateSince } : {},
66
- ...next.archivedBy ? {} : current.archivedBy ? { archivedBy: current.archivedBy } : {},
67
- ...next.archiveReason ? {} : current.archiveReason ? { archiveReason: current.archiveReason } : {},
68
- ...next.flavor ? {} : current.flavor ? { flavor: current.flavor } : {}
69
- };
70
- }
71
54
  function supportsProtocolCapability(protocolDescriptor, capability) {
72
55
  return Array.isArray(protocolDescriptor?.capabilities) && protocolDescriptor.capabilities.includes(capability);
73
56
  }
@@ -138,7 +121,7 @@ function createCodexRuntimeSession(options) {
138
121
  },
139
122
  updateMetadata(handler) {
140
123
  options.session.updateMetadata((current) => {
141
- const next = preserveRuntimeMetadataFields(metadataSnapshot, handler(current));
124
+ const next = api.preserveSessionRuntimeMetadata(metadataSnapshot, handler(current));
142
125
  metadataSnapshot = next;
143
126
  return next;
144
127
  });
@@ -158,7 +141,7 @@ function createCodexRuntimeSession(options) {
158
141
  },
159
142
  async waitForMetadataUpdate(signal) {
160
143
  const metadata = await (options.session.waitForMetadataUpdate?.(signal) ?? Promise.resolve(metadataSnapshot));
161
- metadataSnapshot = metadata ? preserveRuntimeMetadataFields(metadataSnapshot, metadata) : null;
144
+ metadataSnapshot = metadata ? api.preserveSessionRuntimeMetadata(metadataSnapshot, metadata) : null;
162
145
  return metadataSnapshot;
163
146
  },
164
147
  async flush() {
@@ -1,6 +1,6 @@
1
- import { l as logger, b as connectionState, A as ApiClient } from './api-ehyDSOc5.mjs';
2
- import { B as BasePermissionHandler, h as hashObject, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurn, 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-BVnsXvxn.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-DN6ihUoI.mjs';
1
+ import { p as preserveSessionRuntimeMetadata, l as logger, b as connectionState, A as ApiClient } from './api-Cgyrs44K.mjs';
2
+ import { B as BasePermissionHandler, h as hashObject, d as MessageBuffer, C as ConversationHistory$1, f as buildHappyOrgTurnPrompt, w as waitForResponseCompleteWithAbort, i as finalizeHappyOrgTurn, 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-BqFm3Yvi.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-BKd56kbE.mjs';
4
4
  import 'cross-spawn';
5
5
  import '@agentclientprotocol/sdk';
6
6
  import { randomUUID } from 'node:crypto';
@@ -14,7 +14,7 @@ import 'node:path';
14
14
  import 'node:os';
15
15
  import 'node:child_process';
16
16
  import 'node:readline';
17
- import './persistence-DBVrW1P5.mjs';
17
+ import './persistence-D1rI_096.mjs';
18
18
  import 'node:fs/promises';
19
19
  import 'fs/promises';
20
20
  import 'crypto';
@@ -25,8 +25,8 @@ import 'tweetnacl';
25
25
  import 'open';
26
26
  import React, { useState, useRef, useEffect, useCallback } from 'react';
27
27
  import { useStdout, useInput, Box, Text, render } from 'ink';
28
- import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-BBhFPe8E.mjs';
29
- import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-DBI-wmAq.mjs';
28
+ import { c as createKeepAliveController, P as ProviderSelectionHandler, r as runModeLoop } from './ProviderSelectionHandler-CRMANxaw.mjs';
29
+ import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-CVlTn4bz.mjs';
30
30
  import 'zod';
31
31
  import 'socket.io-client';
32
32
  import 'expo-server-sdk';
@@ -49,23 +49,6 @@ const DEFAULT_CAPABILITIES = {
49
49
  structuredSpawnErrors: false,
50
50
  metadataWatch: false
51
51
  };
52
- function preserveRuntimeMetadataFields(current, next) {
53
- if (!current) {
54
- return next;
55
- }
56
- return {
57
- ...next,
58
- ...next.machineId ? {} : current.machineId ? { machineId: current.machineId } : {},
59
- ...typeof next.hostPid === "number" ? {} : typeof current.hostPid === "number" ? { hostPid: current.hostPid } : {},
60
- ...typeof next.startedFromDaemon === "boolean" ? {} : typeof current.startedFromDaemon === "boolean" ? { startedFromDaemon: current.startedFromDaemon } : {},
61
- ...next.startedBy ? {} : current.startedBy ? { startedBy: current.startedBy } : {},
62
- ...next.lifecycleState ? {} : current.lifecycleState ? { lifecycleState: current.lifecycleState } : {},
63
- ...typeof next.lifecycleStateSince === "number" ? {} : typeof current.lifecycleStateSince === "number" ? { lifecycleStateSince: current.lifecycleStateSince } : {},
64
- ...next.archivedBy ? {} : current.archivedBy ? { archivedBy: current.archivedBy } : {},
65
- ...next.archiveReason ? {} : current.archiveReason ? { archiveReason: current.archiveReason } : {},
66
- ...next.flavor ? {} : current.flavor ? { flavor: current.flavor } : {}
67
- };
68
- }
69
52
  function supportsProtocolCapability(protocolDescriptor, capability) {
70
53
  return Array.isArray(protocolDescriptor?.capabilities) && protocolDescriptor.capabilities.includes(capability);
71
54
  }
@@ -136,7 +119,7 @@ function createCodexRuntimeSession(options) {
136
119
  },
137
120
  updateMetadata(handler) {
138
121
  options.session.updateMetadata((current) => {
139
- const next = preserveRuntimeMetadataFields(metadataSnapshot, handler(current));
122
+ const next = preserveSessionRuntimeMetadata(metadataSnapshot, handler(current));
140
123
  metadataSnapshot = next;
141
124
  return next;
142
125
  });
@@ -156,7 +139,7 @@ function createCodexRuntimeSession(options) {
156
139
  },
157
140
  async waitForMetadataUpdate(signal) {
158
141
  const metadata = await (options.session.waitForMetadataUpdate?.(signal) ?? Promise.resolve(metadataSnapshot));
159
- metadataSnapshot = metadata ? preserveRuntimeMetadataFields(metadataSnapshot, metadata) : null;
142
+ metadataSnapshot = metadata ? preserveSessionRuntimeMetadata(metadataSnapshot, metadata) : null;
160
143
  return metadataSnapshot;
161
144
  },
162
145
  async flush() {
@@ -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-ehyDSOc5.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 finalizeHappyOrgTurn, l as launchRuntimeHandleWithFactoryResult, j as inferToolResultError, k as forwardAgentMessageToProviderSession } from './registerKillSessionHandler-BVnsXvxn.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-DN6ihUoI.mjs';
7
- import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-DBI-wmAq.mjs';
4
+ import { l as logger, b as connectionState, A as ApiClient } from './api-Cgyrs44K.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 finalizeHappyOrgTurn, l as launchRuntimeHandleWithFactoryResult, j as inferToolResultError, k as forwardAgentMessageToProviderSession } from './registerKillSessionHandler-BqFm3Yvi.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-BKd56kbE.mjs';
7
+ import { B as BaseReasoningProcessor, b as bootstrapManagedProviderSession } from './BaseReasoningProcessor-CVlTn4bz.mjs';
8
8
  import 'cross-spawn';
9
9
  import '@agentclientprotocol/sdk';
10
10
  import 'ps-list';
@@ -15,7 +15,7 @@ import 'node:child_process';
15
15
  import 'node:readline';
16
16
  import 'tweetnacl';
17
17
  import 'axios';
18
- import './persistence-DBVrW1P5.mjs';
18
+ import './persistence-D1rI_096.mjs';
19
19
  import 'open';
20
20
  import 'chalk';
21
21
  import 'fs';
@@ -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 api = require('./api-CleaBHoF.cjs');
7
- var registerKillSessionHandler = require('./registerKillSessionHandler-3R7E1V6V.cjs');
8
- var index = require('./index-aAcmZ774.cjs');
9
- var BaseReasoningProcessor = require('./BaseReasoningProcessor-BopJzCX1.cjs');
6
+ var api = require('./api-BPXrSITF.cjs');
7
+ var registerKillSessionHandler = require('./registerKillSessionHandler-Bc-f3xFV.cjs');
8
+ var index = require('./index-BHLqfbDm.cjs');
9
+ var BaseReasoningProcessor = require('./BaseReasoningProcessor-CM_72G79.cjs');
10
10
  require('cross-spawn');
11
11
  require('@agentclientprotocol/sdk');
12
12
  require('ps-list');
@@ -17,7 +17,7 @@ require('node:child_process');
17
17
  require('node:readline');
18
18
  require('tweetnacl');
19
19
  require('axios');
20
- require('./persistence-oHFJbsvr.cjs');
20
+ require('./persistence-DgaStaev.cjs');
21
21
  require('open');
22
22
  require('chalk');
23
23
  require('fs');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "happy-imou-cloud",
3
- "version": "2.1.14",
3
+ "version": "2.1.15",
4
4
  "description": "hicloud - Imou 企业定制版。关键是 happy!移动端远程 AI 编程工具,支持 Claude Code、Codex 和 Gemini CLI",
5
5
  "author": "long.zhu",
6
6
  "license": "MIT",