@factory/droid-sdk 0.9.1 → 0.11.0

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 (41) hide show
  1. package/README.md +53 -0
  2. package/dist/api.d.mts +15058 -0
  3. package/dist/api.d.ts +15058 -0
  4. package/dist/api.js +253 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/api.mjs +253 -0
  7. package/dist/api.mjs.map +1 -0
  8. package/dist/chunk-7ZD7MMNA.mjs +2268 -0
  9. package/dist/chunk-7ZD7MMNA.mjs.map +1 -0
  10. package/dist/{chunk-YSKO6SPT.js → chunk-KAAWCHO4.js} +32033 -17088
  11. package/dist/chunk-KAAWCHO4.js.map +1 -0
  12. package/dist/chunk-NWFX4MPJ.mjs +41630 -0
  13. package/dist/chunk-NWFX4MPJ.mjs.map +1 -0
  14. package/dist/chunk-ZQ7TS73S.js +2268 -0
  15. package/dist/chunk-ZQ7TS73S.js.map +1 -0
  16. package/dist/{index-C06W9tbN.d.mts → index-Cf2WtJqJ.d.mts} +134169 -84330
  17. package/dist/{index-C06W9tbN.d.ts → index-Cf2WtJqJ.d.ts} +134169 -84330
  18. package/dist/index.d.mts +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +91 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +99 -10
  23. package/dist/node.d.mts +223 -43
  24. package/dist/node.d.ts +223 -43
  25. package/dist/node.js +2033 -776
  26. package/dist/node.js.map +1 -1
  27. package/dist/node.mjs +1756 -499
  28. package/dist/node.mjs.map +1 -1
  29. package/examples/browser/daemon-lifecycle.ts +4 -6
  30. package/examples/node/custom-model-editing-disposable.sh +88 -0
  31. package/examples/node/custom-model-editing-disposable.ts +171 -0
  32. package/examples/node/custom-model-editing.ts +55 -0
  33. package/examples/node/hook-execution.ts +3 -2
  34. package/examples/node/rest-api.ts +55 -0
  35. package/examples/node/sdk-mcp-tool.ts +5 -3
  36. package/examples/node/start-workstream.ts +76 -0
  37. package/examples/node/tool-controls.ts +7 -5
  38. package/package.json +14 -3
  39. package/dist/chunk-TWSTJMV7.mjs +0 -26685
  40. package/dist/chunk-TWSTJMV7.mjs.map +0 -1
  41. package/dist/chunk-YSKO6SPT.js.map +0 -1
package/dist/node.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5;
2
2
 
3
3
 
4
4
 
@@ -445,7 +445,86 @@
445
445
 
446
446
 
447
447
 
448
- var _chunkYSKO6SPTjs = require('./chunk-YSKO6SPT.js');
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+
523
+
524
+
525
+
526
+ var _chunkKAAWCHO4js = require('./chunk-KAAWCHO4.js');
527
+ require('./chunk-ZQ7TS73S.js');
449
528
 
450
529
  // src/exec-core/client.ts
451
530
  var _events = require('events'); var _events2 = _interopRequireDefault(_events);
@@ -454,7 +533,7 @@ var _zod = require('zod');
454
533
 
455
534
  // src/exec-core/constants.ts
456
535
  var DEFAULT_REQUEST_TIMEOUT2 = 3e4;
457
- var SESSION_INIT_TIMEOUT2 = 6e4;
536
+ var SESSION_INIT_TIMEOUT2 = 12e4;
458
537
  var COMPACTION_TIMEOUT2 = 24e4;
459
538
  var MCP_AUTH_TIMEOUT2 = 3e5;
460
539
  var WINDOWS_JOB_OBJECT_ERROR_MARKER = "AssignProcessToJobObject";
@@ -517,6 +596,9 @@ var defaultExecCoreDeps = {
517
596
  },
518
597
  sanitizeSpawnEnv(env) {
519
598
  return env;
599
+ },
600
+ buildRuntimeSettingsAuthorityEnv() {
601
+ return {};
520
602
  }
521
603
  }
522
604
  };
@@ -526,6 +608,7 @@ var DroidClientEvent = /* @__PURE__ */ ((DroidClientEvent2) => {
526
608
  DroidClientEvent2["SESSION_NOTIFICATION"] = "session_notification";
527
609
  DroidClientEvent2["REQUEST_PERMISSION"] = "request_permission";
528
610
  DroidClientEvent2["ASK_USER"] = "ask_user";
611
+ DroidClientEvent2["PICK_OPTIONS"] = "pick_options";
529
612
  DroidClientEvent2["ERROR"] = "error";
530
613
  return DroidClientEvent2;
531
614
  })(DroidClientEvent || {});
@@ -541,90 +624,6 @@ var TransportDirection = /* @__PURE__ */ ((TransportDirection2) => {
541
624
  return TransportDirection2;
542
625
  })(TransportDirection || {});
543
626
 
544
- // ../droid-sdk-core/src/observability.ts
545
- function sanitizeAttributes(attributes) {
546
- if (attributes === void 0) {
547
- return void 0;
548
- }
549
- const sanitized = {};
550
- for (const [key, value] of Object.entries(attributes)) {
551
- if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
552
- sanitized[key] = value;
553
- }
554
- }
555
- return Object.keys(sanitized).length > 0 ? sanitized : void 0;
556
- }
557
- function serializeError(error) {
558
- if (error instanceof Error) {
559
- const code = "code" in error && typeof error.code === "string" ? error.code : void 0;
560
- return {
561
- name: error.name || void 0,
562
- message: error.message,
563
- ...code !== void 0 && { code }
564
- };
565
- }
566
- return { message: String(error) };
567
- }
568
- function handleSinkFailure(error, options) {
569
- try {
570
- _optionalChain([options, 'optionalAccess', _3 => _3.onError, 'optionalCall', _4 => _4(error)]);
571
- } catch (e2) {
572
- }
573
- }
574
- function emitDroidLog(observability, event, options) {
575
- const sink = _optionalChain([observability, 'optionalAccess', _5 => _5.logger]);
576
- if (!sink) {
577
- return false;
578
- }
579
- try {
580
- sink.log({
581
- level: event.level,
582
- name: event.name,
583
- message: event.message,
584
- attributes: sanitizeAttributes(event.attributes),
585
- ...event.error !== void 0 && {
586
- error: serializeError(event.error)
587
- }
588
- });
589
- return true;
590
- } catch (error) {
591
- handleSinkFailure(error, options);
592
- return false;
593
- }
594
- }
595
- function recordDroidMetric(observability, event, options) {
596
- const sink = _optionalChain([observability, 'optionalAccess', _6 => _6.metrics]);
597
- if (!sink) {
598
- return false;
599
- }
600
- try {
601
- sink.record({
602
- name: event.name,
603
- kind: event.kind,
604
- value: event.value,
605
- unit: event.unit,
606
- attributes: sanitizeAttributes(event.attributes)
607
- });
608
- return true;
609
- } catch (error) {
610
- handleSinkFailure(error, options);
611
- return false;
612
- }
613
- }
614
- function injectDroidTraceContext(observability, carrier, options) {
615
- const sink = _optionalChain([observability, 'optionalAccess', _7 => _7.tracing]);
616
- if (!sink) {
617
- return false;
618
- }
619
- try {
620
- sink.inject(carrier);
621
- return true;
622
- } catch (error) {
623
- handleSinkFailure(error, options);
624
- return false;
625
- }
626
- }
627
-
628
627
  // src/exec-core/deps.ts
629
628
  function logWarn(logger, message, metadata) {
630
629
  logger.warn(message, metadata);
@@ -660,7 +659,7 @@ function redactContentForCustomerSink(metadata) {
660
659
  return _nullishCoalesce(redacted, () => ( metadata));
661
660
  }
662
661
  function createLogger(observability, fallback) {
663
- const sink = _optionalChain([observability, 'optionalAccess', _8 => _8.logger]);
662
+ const sink = _optionalChain([observability, 'optionalAccess', _3 => _3.logger]);
664
663
  if (!sink) {
665
664
  return fallback;
666
665
  }
@@ -668,7 +667,7 @@ function createLogger(observability, fallback) {
668
667
  const sinkFailureOptions = createSinkFailureOptions(fallback);
669
668
  return {
670
669
  info(message, metadata) {
671
- emitDroidLog(
670
+ _chunkKAAWCHO4js.emitDroidLog.call(void 0,
672
671
  sinkObservability,
673
672
  {
674
673
  level: "info",
@@ -680,7 +679,7 @@ function createLogger(observability, fallback) {
680
679
  );
681
680
  },
682
681
  warn(message, metadata) {
683
- emitDroidLog(
682
+ _chunkKAAWCHO4js.emitDroidLog.call(void 0,
684
683
  sinkObservability,
685
684
  {
686
685
  level: "warn",
@@ -692,7 +691,7 @@ function createLogger(observability, fallback) {
692
691
  );
693
692
  },
694
693
  exception(error, message, metadata) {
695
- emitDroidLog(
694
+ _chunkKAAWCHO4js.emitDroidLog.call(void 0,
696
695
  sinkObservability,
697
696
  {
698
697
  level: "error",
@@ -707,7 +706,7 @@ function createLogger(observability, fallback) {
707
706
  };
708
707
  }
709
708
  function createMetrics(observability, fallback, failureLogger) {
710
- const sink = _optionalChain([observability, 'optionalAccess', _9 => _9.metrics]);
709
+ const sink = _optionalChain([observability, 'optionalAccess', _4 => _4.metrics]);
711
710
  if (!sink) {
712
711
  return fallback;
713
712
  }
@@ -715,7 +714,7 @@ function createMetrics(observability, fallback, failureLogger) {
715
714
  const sinkFailureOptions = createSinkFailureOptions(failureLogger);
716
715
  return {
717
716
  addToCounter(metric, value, tags) {
718
- recordDroidMetric(
717
+ _chunkKAAWCHO4js.recordDroidMetric.call(void 0,
719
718
  sinkObservability,
720
719
  {
721
720
  name: metric,
@@ -728,7 +727,7 @@ function createMetrics(observability, fallback, failureLogger) {
728
727
  );
729
728
  },
730
729
  recordDuration(metric, valueMs, tags) {
731
- recordDroidMetric(
730
+ _chunkKAAWCHO4js.recordDroidMetric.call(void 0,
732
731
  sinkObservability,
733
732
  {
734
733
  name: metric,
@@ -743,7 +742,7 @@ function createMetrics(observability, fallback, failureLogger) {
743
742
  };
744
743
  }
745
744
  function createTracing(observability, fallback, failureLogger) {
746
- const sink = _optionalChain([observability, 'optionalAccess', _10 => _10.tracing]);
745
+ const sink = _optionalChain([observability, 'optionalAccess', _5 => _5.tracing]);
747
746
  if (!sink) {
748
747
  return fallback;
749
748
  }
@@ -755,7 +754,7 @@ function createTracing(observability, fallback, failureLogger) {
755
754
  },
756
755
  injectContext(meta) {
757
756
  const carrier = {};
758
- if (!injectDroidTraceContext(sinkObservability, carrier, sinkFailureOptions)) {
757
+ if (!_chunkKAAWCHO4js.injectDroidTraceContext.call(void 0, sinkObservability, carrier, sinkFailureOptions)) {
759
758
  return;
760
759
  }
761
760
  if (carrier.traceparent !== void 0) {
@@ -779,15 +778,21 @@ function resolveExecCoreDeps(observability, fallback = defaultExecCoreDeps) {
779
778
  }
780
779
 
781
780
  // src/exec-core/client.ts
782
- function getResponseId(response) {
783
- const parsed = _chunkYSKO6SPTjs.JsonRpcBaseResponseSchema.safeParse(response);
784
- return parsed.success ? parsed.data.id : void 0;
781
+ function isDroidConnectionEnded(error) {
782
+ const failure = error instanceof _chunkKAAWCHO4js.ProtocolError ? error.cause : error;
783
+ return failure instanceof _chunkKAAWCHO4js.DroidConnectionEndedError || failure instanceof _chunkKAAWCHO4js.ProcessExitError;
785
784
  }
786
- var JsonRpcEnvelopePeekSchema = _chunkYSKO6SPTjs.JsonRpcEnvelopeSchema.partial().extend({
787
- type: _zod.z.nativeEnum(_chunkYSKO6SPTjs.JsonRpcMessageType).optional(),
785
+ var JsonRpcEnvelopePeekSchema = _chunkKAAWCHO4js.JsonRpcEnvelopeSchema.partial().extend({
786
+ type: _zod.z.nativeEnum(_chunkKAAWCHO4js.JsonRpcMessageType).optional(),
788
787
  method: _zod.z.string().optional(),
789
788
  id: _zod.z.string().nullable().optional()
790
789
  }).passthrough();
790
+ function getResponseId(response2) {
791
+ const parsed = JsonRpcEnvelopePeekSchema.safeParse(response2);
792
+ return parsed.success ? parsed.data.id : void 0;
793
+ }
794
+ var MCP_OAUTH_OPT_OUT_PROTOCOL_VERSION = "1.78.0";
795
+ var PERMISSION_WITHDRAWN = /* @__PURE__ */ Symbol("permission withdrawn");
791
796
  function inspectJsonRpcEnvelope2(message) {
792
797
  const result = JsonRpcEnvelopePeekSchema.safeParse(message);
793
798
  if (!result.success) {
@@ -795,8 +800,8 @@ function inspectJsonRpcEnvelope2(message) {
795
800
  }
796
801
  const envelope = result.data;
797
802
  return {
798
- protocolVersionMismatch: envelope.factoryProtocolVersion !== void 0 && envelope.factoryProtocolVersion !== _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION ? {
799
- localFactoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
803
+ protocolVersionMismatch: envelope.factoryProtocolVersion !== void 0 && envelope.factoryProtocolVersion !== _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION ? {
804
+ localFactoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
800
805
  peerFactoryProtocolVersion: envelope.factoryProtocolVersion,
801
806
  messageType: envelope.type,
802
807
  method: envelope.method,
@@ -811,25 +816,42 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
811
816
  __init() {this.pendingRequests = /* @__PURE__ */ new Map()}
812
817
  __init2() {this.permissionHandlers = /* @__PURE__ */ new Map()}
813
818
  __init3() {this.askUserHandlers = /* @__PURE__ */ new Map()}
814
- __init4() {this.pendingPermissionRequests = /* @__PURE__ */ new Map()}
815
- __init5() {this.pendingAskUserRequests = /* @__PURE__ */ new Map()}
816
- __init6() {this.currentSessionId = null}
819
+ __init4() {this.pickOptionsHandlers = /* @__PURE__ */ new Map()}
820
+ __init5() {this.pendingPermissionRequests = /* @__PURE__ */ new Map()}
821
+ __init6() {this.pendingAskUserRequests = /* @__PURE__ */ new Map()}
822
+ /**
823
+ * Queued (non-blocking) AskUser requests that arrived before an AskUser
824
+ * handler was set, as when a reloaded session asks its pending queued sets
825
+ * again during the load. Answering one without a handler would record it
826
+ * as dismissed, and the agent never waits on it, so it waits for the
827
+ * handler instead.
828
+ */
829
+ __init7() {this.heldQueuedAskUserRequests = []}
830
+ __init8() {this.pendingPickOptionsRequests = /* @__PURE__ */ new Map()}
831
+ __init9() {this.currentSessionId = null}
817
832
 
833
+ __init10() {this.peerEnforcesQueueOwnership = false}
818
834
  /**
819
835
  * Sticky error from a transport failure. Once set, all subsequent
820
836
  * `sendRequest()` calls throw this error immediately, preventing
821
837
  * requests from hanging on a dead transport.
822
838
  */
823
- __init7() {this.transportError = null}
824
- __init8() {this.completedTurnObserved = false}
839
+ __init11() {this.transportError = null}
840
+ __init12() {this.completedTurnObserved = false}
841
+ /**
842
+ * Set once the droid sends `droid.disconnect`. It reads no further
843
+ * requests from then on, so it no longer counts as connected even while its
844
+ * transport stays open.
845
+ */
846
+ __init13() {this.disconnected = false}
825
847
 
826
848
 
827
849
 
828
850
 
829
851
  constructor(options, deps = defaultExecCoreDeps) {
830
- super();_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);_class.prototype.__init7.call(this);_class.prototype.__init8.call(this);;
831
- this.transport = options.transport;
852
+ super();_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);_class.prototype.__init7.call(this);_class.prototype.__init8.call(this);_class.prototype.__init9.call(this);_class.prototype.__init10.call(this);_class.prototype.__init11.call(this);_class.prototype.__init12.call(this);_class.prototype.__init13.call(this);;
832
853
  const resolved = resolveExecCoreDeps(options.observability, deps);
854
+ this.transport = options.transport;
833
855
  this.logger = resolved.logger;
834
856
  this.tracing = resolved.tracing;
835
857
  this.requestTimeout = _nullishCoalesce(options.requestTimeout, () => ( DEFAULT_REQUEST_TIMEOUT2));
@@ -849,13 +871,18 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
849
871
  });
850
872
  this.transport.onError((error) => {
851
873
  const err = error instanceof Error ? error : new Error(String(error));
852
- const expectedCleanExit = err instanceof _chunkYSKO6SPTjs.ProcessExitError && err.exitCode === 0 && this.completedTurnObserved;
853
- if (expectedCleanExit) {
854
- this.logger.info("[DroidClient] Process exited after completed turn", {
855
- exitCode: err.exitCode
874
+ const sessionId = this.addressedSessionId;
875
+ const expectedExit = err instanceof _chunkKAAWCHO4js.ProcessExitError && (err.isRequestedStop || err.exitCode === 0 && this.completedTurnObserved);
876
+ if (expectedExit) {
877
+ this.logger.info("[DroidClient] Process exited as expected", {
878
+ sessionId,
879
+ exitCode: err.exitCode,
880
+ signal: err.signal
856
881
  });
857
882
  } else {
858
- this.logger.exception(err, "Transport error");
883
+ this.logger.exception(err, "Transport error", {
884
+ sessionId
885
+ });
859
886
  }
860
887
  this.transportError = err;
861
888
  this.rejectAllPending(err);
@@ -873,106 +900,154 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
873
900
  get sessionId() {
874
901
  return this.currentSessionId;
875
902
  }
903
+ /**
904
+ * The session that an inbound prompt or transport fault belongs to. A
905
+ * session start or load in flight owns it, because the CLI replays a loaded
906
+ * session's pending prompts before it answers the load; otherwise the
907
+ * current session does. Undefined when that is ambiguous: a start with no
908
+ * session id yet, or several starts and loads in flight.
909
+ *
910
+ * @internal
911
+ */
912
+ get addressedSessionId() {
913
+ const pendingSessionIds = /* @__PURE__ */ new Set();
914
+ for (const pendingRequest of this.pendingRequests.values()) {
915
+ if (pendingRequest.method === "droid.initialize_session" /* INITIALIZE_SESSION */ && pendingRequest.sessionId === void 0) {
916
+ return void 0;
917
+ }
918
+ if (pendingRequest.sessionId !== void 0) {
919
+ pendingSessionIds.add(pendingRequest.sessionId);
920
+ }
921
+ }
922
+ if (pendingSessionIds.size > 1) {
923
+ return void 0;
924
+ }
925
+ const [pendingSessionId] = pendingSessionIds;
926
+ return _nullishCoalesce(_nullishCoalesce(pendingSessionId, () => ( this.currentSessionId)), () => ( void 0));
927
+ }
876
928
  get isConnected() {
877
- return this.transport.isConnected;
929
+ return !this.disconnected && this.transport.isConnected;
930
+ }
931
+ /**
932
+ * Whether the worker runs in a child process. A daemon's shutdown cuts such
933
+ * a worker off from its owner before closing it, and from then on it reads
934
+ * no request; a worker hosted in this process still answers.
935
+ */
936
+ get runsInChildProcess() {
937
+ return (_nullishCoalesce(_optionalChain([this, 'access', _6 => _6.transport, 'access', _7 => _7.getManagedProcess, 'optionalCall', _8 => _8()]), () => ( null))) !== null;
938
+ }
939
+ /**
940
+ * Whether the runner refuses a queue change from someone other than the
941
+ * prompt's author. Older runners ignore the author on such a change.
942
+ */
943
+ get enforcesQueueOwnership() {
944
+ return this.peerEnforcesQueueOwnership;
878
945
  }
879
946
  requireMcpOAuthOptOutSupport() {
880
- if (this.peerProtocolVersion === _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION) {
947
+ if (_chunkKAAWCHO4js.isProtocolVersionAtLeast.call(void 0,
948
+ this.peerProtocolVersion,
949
+ MCP_OAUTH_OPT_OUT_PROTOCOL_VERSION
950
+ )) {
881
951
  return;
882
952
  }
883
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)(
884
- "MCP OAuth opt-out requires a confirmed matching Droid protocol version. The connected Droid reported an incompatible protocol version and cannot disable OAuth for MCP servers.",
953
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)(
954
+ `MCP OAuth opt-out requires Droid protocol version ${MCP_OAUTH_OPT_OUT_PROTOCOL_VERSION} or newer. The connected Droid reported an older or unknown protocol version and cannot disable OAuth for MCP servers.`,
885
955
  {
886
956
  value: {
887
- localFactoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
957
+ localFactoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
958
+ minimumFactoryProtocolVersion: MCP_OAUTH_OPT_OUT_PROTOCOL_VERSION,
888
959
  peerFactoryProtocolVersion: this.peerProtocolVersion
889
960
  }
890
961
  }
891
962
  );
892
963
  }
893
964
  validateMcpServersProtocolSupport(mcpServers) {
894
- if (_optionalChain([mcpServers, 'optionalAccess', _11 => _11.some, 'call', _12 => _12((server) => "oauth" in server && server.oauth === false)])) {
965
+ if (_optionalChain([mcpServers, 'optionalAccess', _9 => _9.some, 'call', _10 => _10((server) => "oauth" in server && server.oauth === false)])) {
895
966
  this.requireMcpOAuthOptOutSupport();
896
967
  }
897
968
  }
898
969
  async initializeSession(params) {
899
970
  const request = {
900
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
901
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
971
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
972
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
902
973
  type: "request",
903
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
974
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
904
975
  id: _uuid.v4.call(void 0, ),
905
976
  method: "droid.initialize_session" /* INITIALIZE_SESSION */,
906
- params
977
+ params: _chunkKAAWCHO4js.encodeLegacyStartupLoadOptions.call(void 0, params)
907
978
  };
908
979
  const rawResponse = await this.sendRequest(
909
980
  request,
910
- this.sessionInitTimeout
981
+ this.sessionInitTimeout,
982
+ params.sessionId
911
983
  );
912
- const response = _chunkYSKO6SPTjs.InitializeSessionResponseSchema.parse(rawResponse);
913
- this.peerProtocolVersion = response.factoryProtocolVersion;
914
- if (response.error) {
915
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Initialize session request failed", {
984
+ const response2 = _chunkKAAWCHO4js.InitializeSessionResponseSchema.parse(rawResponse);
985
+ this.peerProtocolVersion = response2.factoryProtocolVersion;
986
+ if (response2.error) {
987
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Initialize session request failed", {
916
988
  requestId: request.id,
917
- code: response.error.code,
918
- message: response.error.message,
919
- data: response.error.data
989
+ code: response2.error.code,
990
+ message: response2.error.message,
991
+ data: response2.error.data
920
992
  });
921
993
  }
922
994
  this.validateMcpServersProtocolSupport(params.mcpServers);
923
- const result = _chunkYSKO6SPTjs.InitializeSessionResultSchema.parse(response.result);
995
+ const result = _chunkKAAWCHO4js.InitializeSessionResultSchema.parse(response2.result);
996
+ this.peerEnforcesQueueOwnership = result.enforcesQueueOwnership === true;
924
997
  this.currentSessionId = result.sessionId;
925
- return response;
998
+ return response2;
926
999
  }
927
1000
  async loadSession(params) {
928
1001
  const request = {
929
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
930
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1002
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1003
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
931
1004
  type: "request",
932
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1005
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
933
1006
  id: _uuid.v4.call(void 0, ),
934
1007
  method: "droid.load_session" /* LOAD_SESSION */,
935
1008
  params
936
1009
  };
937
1010
  const rawResponse = await this.sendRequest(
938
1011
  request,
939
- this.sessionInitTimeout
1012
+ this.sessionInitTimeout,
1013
+ params.sessionId
940
1014
  );
941
- const response = _chunkYSKO6SPTjs.LoadSessionResponseSchema.parse(rawResponse);
942
- this.peerProtocolVersion = response.factoryProtocolVersion;
943
- if (response.error) {
944
- const isSessionNotFound = response.error.code === -32004 /* ENTITY_NOT_FOUND */;
1015
+ const response2 = _chunkKAAWCHO4js.LoadSessionResponseSchema.parse(rawResponse);
1016
+ this.peerProtocolVersion = response2.factoryProtocolVersion;
1017
+ if (response2.error) {
1018
+ const isSessionNotFound = response2.error.code === -32004 /* ENTITY_NOT_FOUND */;
945
1019
  if (isSessionNotFound) {
946
- throw new (0, _chunkYSKO6SPTjs.SessionNotFoundError)(params.sessionId, {
1020
+ throw new (0, _chunkKAAWCHO4js.SessionNotFoundError)(params.sessionId, {
947
1021
  requestId: request.id,
948
- code: response.error.code,
949
- message: response.error.message,
950
- data: response.error.data
1022
+ code: response2.error.code,
1023
+ message: response2.error.message,
1024
+ data: response2.error.data
951
1025
  });
952
1026
  }
953
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Load session request failed", {
1027
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Load session request failed", {
954
1028
  requestId: request.id,
955
- code: response.error.code,
956
- message: response.error.message,
957
- data: response.error.data
1029
+ code: response2.error.code,
1030
+ message: response2.error.message,
1031
+ data: response2.error.data
958
1032
  });
959
1033
  }
960
1034
  this.validateMcpServersProtocolSupport(params.mcpServers);
1035
+ this.peerEnforcesQueueOwnership = _optionalChain([response2, 'access', _11 => _11.result, 'optionalAccess', _12 => _12.enforcesQueueOwnership]) === true;
961
1036
  this.currentSessionId = params.sessionId;
962
- return response;
1037
+ return response2;
963
1038
  }
964
1039
  async addUserMessage(params, requestId) {
965
1040
  if (!this.currentSessionId) {
966
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1041
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
967
1042
  "No active session. Call initializeSession or loadSession first."
968
1043
  );
969
1044
  }
970
1045
  this.completedTurnObserved = false;
971
1046
  const request = {
972
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
973
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1047
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1048
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
974
1049
  type: "request",
975
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1050
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
976
1051
  id: _nullishCoalesce(requestId, () => ( _uuid.v4.call(void 0, ))),
977
1052
  method: "droid.add_user_message" /* ADD_USER_MESSAGE */,
978
1053
  params: {
@@ -981,16 +1056,16 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
981
1056
  }
982
1057
  };
983
1058
  const rawResponse = await this.sendRequest(request);
984
- const response = _chunkYSKO6SPTjs.AddUserMessageResponseSchema.parse(rawResponse);
985
- if (response.error) {
986
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Add user message request failed", {
1059
+ const response2 = _chunkKAAWCHO4js.AddUserMessageResponseSchema.parse(rawResponse);
1060
+ if (response2.error) {
1061
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Add user message request failed", {
987
1062
  requestId: request.id,
988
- code: response.error.code,
989
- message: response.error.message,
990
- data: response.error.data
1063
+ code: response2.error.code,
1064
+ message: response2.error.message,
1065
+ data: response2.error.data
991
1066
  });
992
1067
  }
993
- return response;
1068
+ return response2;
994
1069
  }
995
1070
  /**
996
1071
  * Persists user-only messages without starting an agent turn.
@@ -1000,158 +1075,158 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1000
1075
  */
1001
1076
  async appendMessages(params, requestId) {
1002
1077
  if (!this.currentSessionId) {
1003
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1078
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1004
1079
  "No active session. Call initializeSession or loadSession first."
1005
1080
  );
1006
1081
  }
1007
1082
  const request = {
1008
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1009
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1083
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1084
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1010
1085
  type: "request",
1011
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1086
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1012
1087
  id: _nullishCoalesce(requestId, () => ( _uuid.v4.call(void 0, ))),
1013
1088
  method: "droid.append_messages" /* APPEND_MESSAGES */,
1014
1089
  params
1015
1090
  };
1016
1091
  const rawResponse = await this.sendRequest(request);
1017
- const response = _chunkYSKO6SPTjs.AppendMessagesResponseSchema.parse(rawResponse);
1018
- if (response.error) {
1019
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Append messages request failed", {
1092
+ const response2 = _chunkKAAWCHO4js.AppendMessagesResponseSchema.parse(rawResponse);
1093
+ if (response2.error) {
1094
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Append messages request failed", {
1020
1095
  requestId: request.id,
1021
- code: response.error.code,
1022
- message: response.error.message,
1023
- data: response.error.data
1096
+ code: response2.error.code,
1097
+ message: response2.error.message,
1098
+ data: response2.error.data
1024
1099
  });
1025
1100
  }
1026
- return response;
1101
+ return response2;
1027
1102
  }
1028
1103
  async resolveQueuedUserMessage(params) {
1029
1104
  if (!this.currentSessionId) {
1030
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1105
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1031
1106
  "No active session. Call initializeSession or loadSession first."
1032
1107
  );
1033
1108
  }
1034
1109
  const request = {
1035
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1036
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1110
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1111
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1037
1112
  type: "request",
1038
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1113
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1039
1114
  id: _uuid.v4.call(void 0, ),
1040
1115
  method: "droid.resolve_queued_user_message" /* RESOLVE_QUEUED_USER_MESSAGE */,
1041
1116
  params
1042
1117
  };
1043
1118
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1044
- const response = _chunkYSKO6SPTjs.ResolveQueuedUserMessageResponseSchema.parse(rawResponse);
1045
- if (response.error) {
1046
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Resolve queued user message request failed", {
1119
+ const response2 = _chunkKAAWCHO4js.ResolveQueuedUserMessageResponseSchema.parse(rawResponse);
1120
+ if (response2.error) {
1121
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Resolve queued user message request failed", {
1047
1122
  requestId: request.id,
1048
- code: response.error.code,
1049
- message: response.error.message,
1050
- data: response.error.data
1123
+ code: response2.error.code,
1124
+ message: response2.error.message,
1125
+ data: response2.error.data
1051
1126
  });
1052
1127
  }
1053
- return response;
1128
+ return response2;
1054
1129
  }
1055
1130
  async interruptSession(params = {}) {
1056
1131
  if (!this.currentSessionId) {
1057
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1132
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1058
1133
  "No active session. Call initializeSession or loadSession first."
1059
1134
  );
1060
1135
  }
1061
1136
  const request = {
1062
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1063
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1137
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1138
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1064
1139
  type: "request",
1065
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1140
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1066
1141
  id: _uuid.v4.call(void 0, ),
1067
1142
  method: "droid.interrupt_session" /* INTERRUPT_SESSION */,
1068
1143
  params
1069
1144
  };
1070
1145
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1071
- const response = _chunkYSKO6SPTjs.InterruptSessionResponseSchema.parse(rawResponse);
1072
- if (response.error) {
1073
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Interrupt session request failed", {
1146
+ const response2 = _chunkKAAWCHO4js.InterruptSessionResponseSchema.parse(rawResponse);
1147
+ if (response2.error) {
1148
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Interrupt session request failed", {
1074
1149
  requestId: request.id,
1075
- code: response.error.code,
1076
- message: response.error.message,
1077
- data: response.error.data
1150
+ code: response2.error.code,
1151
+ message: response2.error.message,
1152
+ data: response2.error.data
1078
1153
  });
1079
1154
  }
1080
- return response;
1155
+ return response2;
1081
1156
  }
1082
1157
  async closeSession(params = {}) {
1083
1158
  if (!this.currentSessionId) {
1084
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1159
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1085
1160
  "No active session. Call initializeSession or loadSession first."
1086
1161
  );
1087
1162
  }
1088
1163
  const request = {
1089
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1090
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1164
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1165
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1091
1166
  type: "request",
1092
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1167
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1093
1168
  id: _uuid.v4.call(void 0, ),
1094
1169
  method: "droid.close_session" /* CLOSE_SESSION */,
1095
1170
  params
1096
1171
  };
1097
1172
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1098
- const response = _chunkYSKO6SPTjs.CloseSessionResponseSchema.parse(rawResponse);
1099
- if (response.error) {
1100
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Close session request failed", {
1173
+ const response2 = _chunkKAAWCHO4js.CloseSessionResponseSchema.parse(rawResponse);
1174
+ if (response2.error) {
1175
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Close session request failed", {
1101
1176
  requestId: request.id,
1102
- code: response.error.code,
1103
- message: response.error.message,
1104
- data: response.error.data
1177
+ code: response2.error.code,
1178
+ message: response2.error.message,
1179
+ data: response2.error.data
1105
1180
  });
1106
1181
  }
1107
- return response;
1182
+ return response2;
1108
1183
  }
1109
1184
  async killWorkerSession(params) {
1110
1185
  if (!this.currentSessionId) {
1111
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1186
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1112
1187
  "No active session. Call initializeSession or loadSession first."
1113
1188
  );
1114
1189
  }
1115
1190
  const request = {
1116
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1117
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1191
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1192
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1118
1193
  type: "request",
1119
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1194
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1120
1195
  id: _uuid.v4.call(void 0, ),
1121
1196
  method: "droid.kill_worker_session" /* KILL_WORKER_SESSION */,
1122
1197
  params
1123
1198
  };
1124
1199
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1125
- const response = _chunkYSKO6SPTjs.KillWorkerSessionResponseSchema.parse(rawResponse);
1126
- if (response.error) {
1127
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Kill worker session request failed", {
1200
+ const response2 = _chunkKAAWCHO4js.KillWorkerSessionResponseSchema.parse(rawResponse);
1201
+ if (response2.error) {
1202
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Kill worker session request failed", {
1128
1203
  requestId: request.id,
1129
- code: response.error.code,
1130
- message: response.error.message,
1131
- data: response.error.data
1204
+ code: response2.error.code,
1205
+ message: response2.error.message,
1206
+ data: response2.error.data
1132
1207
  });
1133
1208
  }
1134
- return response;
1209
+ return response2;
1135
1210
  }
1136
1211
  async updateSessionSettings(params, requestId) {
1137
1212
  if (!this.currentSessionId) {
1138
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1213
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1139
1214
  "No active session. Call initializeSession or loadSession first."
1140
1215
  );
1141
1216
  }
1142
1217
  const request = {
1143
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1144
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1218
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1219
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1145
1220
  type: "request",
1146
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1221
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1147
1222
  id: _nullishCoalesce(requestId, () => ( _uuid.v4.call(void 0, ))),
1148
1223
  method: "droid.update_session_settings" /* UPDATE_SESSION_SETTINGS */,
1149
- params
1224
+ params: _chunkKAAWCHO4js.sessionTagsUpdateForPeer.call(void 0, params, this.peerProtocolVersion)
1150
1225
  };
1151
1226
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1152
- const responseParsed = _chunkYSKO6SPTjs.UpdateSessionSettingsResponseSchema.safeParse(rawResponse);
1227
+ const responseParsed = _chunkKAAWCHO4js.UpdateSessionSettingsResponseSchema.safeParse(rawResponse);
1153
1228
  if (!responseParsed.success) {
1154
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)(
1229
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)(
1155
1230
  "Invalid update session settings response format",
1156
1231
  {
1157
1232
  requestId: request.id,
@@ -1161,55 +1236,55 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1161
1236
  }
1162
1237
  );
1163
1238
  }
1164
- const response = responseParsed.data;
1165
- if (response.error) {
1166
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Update session settings request failed", {
1239
+ const response2 = responseParsed.data;
1240
+ if (response2.error) {
1241
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Update session settings request failed", {
1167
1242
  requestId: request.id,
1168
- code: response.error.code,
1169
- message: response.error.message,
1170
- data: response.error.data
1243
+ code: response2.error.code,
1244
+ message: response2.error.message,
1245
+ data: response2.error.data
1171
1246
  });
1172
1247
  }
1173
- return response;
1248
+ return response2;
1174
1249
  }
1175
1250
  async changeWorkingDirectory(params) {
1176
1251
  if (!this.currentSessionId) {
1177
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1252
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1178
1253
  "No active session. Call initializeSession or loadSession first."
1179
1254
  );
1180
1255
  }
1181
1256
  const request = {
1182
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1183
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1257
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1258
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1184
1259
  type: "request",
1185
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1260
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1186
1261
  id: _uuid.v4.call(void 0, ),
1187
1262
  method: "droid.change_working_directory" /* CHANGE_WORKING_DIRECTORY */,
1188
1263
  params
1189
1264
  };
1190
1265
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1191
- const response = _chunkYSKO6SPTjs.ChangeWorkingDirectoryResponseSchema.parse(rawResponse);
1192
- if (response.error) {
1193
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Change working directory request failed", {
1266
+ const response2 = _chunkKAAWCHO4js.ChangeWorkingDirectoryResponseSchema.parse(rawResponse);
1267
+ if (response2.error) {
1268
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)("Change working directory request failed", {
1194
1269
  requestId: request.id,
1195
- code: response.error.code,
1196
- message: response.error.message,
1197
- data: response.error.data
1270
+ code: response2.error.code,
1271
+ message: response2.error.message,
1272
+ data: response2.error.data
1198
1273
  });
1199
1274
  }
1200
- return response;
1275
+ return response2;
1201
1276
  }
1202
1277
  async toggleMcpServer(params) {
1203
1278
  if (!this.currentSessionId) {
1204
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1279
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1205
1280
  "No active session. Call initializeSession or loadSession first."
1206
1281
  );
1207
1282
  }
1208
1283
  const request = {
1209
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1210
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1284
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1285
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1211
1286
  type: "request",
1212
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1287
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1213
1288
  id: _uuid.v4.call(void 0, ),
1214
1289
  method: "droid.toggle_mcp_server" /* TOGGLE_MCP_SERVER */,
1215
1290
  params: {
@@ -1219,20 +1294,20 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1219
1294
  }
1220
1295
  };
1221
1296
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1222
- const response = _chunkYSKO6SPTjs.ToggleMcpServerResponseSchema.parse(rawResponse);
1223
- return response;
1297
+ const response2 = _chunkKAAWCHO4js.ToggleMcpServerResponseSchema.parse(rawResponse);
1298
+ return response2;
1224
1299
  }
1225
1300
  async authenticateMcpServer(params) {
1226
1301
  if (!this.currentSessionId) {
1227
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1302
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1228
1303
  "No active session. Call initializeSession or loadSession first."
1229
1304
  );
1230
1305
  }
1231
1306
  const request = {
1232
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1233
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1307
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1308
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1234
1309
  type: "request",
1235
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1310
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1236
1311
  id: _uuid.v4.call(void 0, ),
1237
1312
  method: "droid.authenticate_mcp_server" /* AUTHENTICATE_MCP_SERVER */,
1238
1313
  params: {
@@ -1240,20 +1315,20 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1240
1315
  }
1241
1316
  };
1242
1317
  const rawResponse = await this.sendRequest(request, MCP_AUTH_TIMEOUT2);
1243
- const response = _chunkYSKO6SPTjs.AuthenticateMcpServerResponseSchema.parse(rawResponse);
1244
- return response;
1318
+ const response2 = _chunkKAAWCHO4js.AuthenticateMcpServerResponseSchema.parse(rawResponse);
1319
+ return response2;
1245
1320
  }
1246
1321
  async cancelMcpAuth(params) {
1247
1322
  if (!this.currentSessionId) {
1248
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1323
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1249
1324
  "No active session. Call initializeSession or loadSession first."
1250
1325
  );
1251
1326
  }
1252
1327
  const request = {
1253
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1254
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1328
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1329
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1255
1330
  type: "request",
1256
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1331
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1257
1332
  id: _uuid.v4.call(void 0, ),
1258
1333
  method: "droid.cancel_mcp_auth" /* CANCEL_MCP_AUTH */,
1259
1334
  params: {
@@ -1261,20 +1336,20 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1261
1336
  }
1262
1337
  };
1263
1338
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1264
- const response = _chunkYSKO6SPTjs.CancelMcpAuthResponseSchema.parse(rawResponse);
1265
- return response;
1339
+ const response2 = _chunkKAAWCHO4js.CancelMcpAuthResponseSchema.parse(rawResponse);
1340
+ return response2;
1266
1341
  }
1267
1342
  async clearMcpAuth(params) {
1268
1343
  if (!this.currentSessionId) {
1269
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1344
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1270
1345
  "No active session. Call initializeSession or loadSession first."
1271
1346
  );
1272
1347
  }
1273
1348
  const request = {
1274
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1275
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1349
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1350
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1276
1351
  type: "request",
1277
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1352
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1278
1353
  id: _uuid.v4.call(void 0, ),
1279
1354
  method: "droid.clear_mcp_auth" /* CLEAR_MCP_AUTH */,
1280
1355
  params: {
@@ -1282,12 +1357,12 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1282
1357
  }
1283
1358
  };
1284
1359
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1285
- const response = _chunkYSKO6SPTjs.ClearMcpAuthResponseSchema.parse(rawResponse);
1286
- return response;
1360
+ const response2 = _chunkKAAWCHO4js.ClearMcpAuthResponseSchema.parse(rawResponse);
1361
+ return response2;
1287
1362
  }
1288
1363
  async addMcpServer(params) {
1289
1364
  if (!this.currentSessionId) {
1290
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1365
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1291
1366
  "No active session. Call initializeSession or loadSession first."
1292
1367
  );
1293
1368
  }
@@ -1295,302 +1370,360 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1295
1370
  this.requireMcpOAuthOptOutSupport();
1296
1371
  }
1297
1372
  const request = {
1298
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1299
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1373
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1374
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1300
1375
  type: "request",
1301
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1376
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1302
1377
  id: _uuid.v4.call(void 0, ),
1303
1378
  method: "droid.add_mcp_server" /* ADD_MCP_SERVER */,
1304
1379
  params
1305
1380
  };
1306
1381
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1307
- const response = _chunkYSKO6SPTjs.AddMcpServerResponseSchema.parse(rawResponse);
1308
- return response;
1382
+ const response2 = _chunkKAAWCHO4js.AddMcpServerResponseSchema.parse(rawResponse);
1383
+ return response2;
1309
1384
  }
1310
1385
  async removeMcpServer(params) {
1311
1386
  if (!this.currentSessionId) {
1312
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1387
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1313
1388
  "No active session. Call initializeSession or loadSession first."
1314
1389
  );
1315
1390
  }
1316
1391
  const request = {
1317
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1318
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1392
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1393
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1319
1394
  type: "request",
1320
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1395
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1321
1396
  id: _uuid.v4.call(void 0, ),
1322
1397
  method: "droid.remove_mcp_server" /* REMOVE_MCP_SERVER */,
1323
1398
  params
1324
1399
  };
1325
1400
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1326
- const response = _chunkYSKO6SPTjs.RemoveMcpServerResponseSchema.parse(rawResponse);
1327
- return response;
1401
+ const response2 = _chunkKAAWCHO4js.RemoveMcpServerResponseSchema.parse(rawResponse);
1402
+ return response2;
1328
1403
  }
1329
1404
  async listModels(params = {}) {
1330
1405
  const request = {
1331
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1332
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1406
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1407
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1333
1408
  type: "request",
1334
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1409
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1335
1410
  id: _uuid.v4.call(void 0, ),
1336
1411
  method: "droid.list_models" /* LIST_MODELS */,
1337
1412
  params
1338
1413
  };
1339
1414
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1340
- return _chunkYSKO6SPTjs.ListModelsResponseSchema.parse(rawResponse);
1415
+ return _chunkKAAWCHO4js.ListModelsResponseSchema.parse(rawResponse);
1341
1416
  }
1342
1417
  async listMcpRegistry() {
1343
1418
  if (!this.currentSessionId) {
1344
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1419
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1345
1420
  "No active session. Call initializeSession or loadSession first."
1346
1421
  );
1347
1422
  }
1348
1423
  const request = {
1349
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1350
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1424
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1425
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1351
1426
  type: "request",
1352
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1427
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1353
1428
  id: _uuid.v4.call(void 0, ),
1354
1429
  method: "droid.list_mcp_registry" /* LIST_MCP_REGISTRY */,
1355
1430
  params: {}
1356
1431
  };
1357
1432
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1358
- const response = _chunkYSKO6SPTjs.ListMcpRegistryResponseSchema.parse(rawResponse);
1359
- return response;
1433
+ const response2 = _chunkKAAWCHO4js.ListMcpRegistryResponseSchema.parse(rawResponse);
1434
+ return response2;
1435
+ }
1436
+ async refreshConnectorToolCatalog(params = {}) {
1437
+ if (!this.currentSessionId) {
1438
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1439
+ "No active session. Call initializeSession or loadSession first."
1440
+ );
1441
+ }
1442
+ const request = {
1443
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1444
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1445
+ type: "request",
1446
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1447
+ id: _uuid.v4.call(void 0, ),
1448
+ method: "droid.refresh_connector_tool_catalog" /* REFRESH_CONNECTOR_TOOL_CATALOG */,
1449
+ params
1450
+ };
1451
+ const response2 = await this.sendRequest(request, this.requestTimeout);
1452
+ return _chunkKAAWCHO4js.RefreshConnectorToolCatalogResponseSchema.parse(response2);
1360
1453
  }
1361
1454
  async listMcpTools() {
1362
1455
  if (!this.currentSessionId) {
1363
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1456
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1364
1457
  "No active session. Call initializeSession or loadSession first."
1365
1458
  );
1366
1459
  }
1367
1460
  const request = {
1368
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1369
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1461
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1462
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1370
1463
  type: "request",
1371
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1464
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1372
1465
  id: _uuid.v4.call(void 0, ),
1373
1466
  method: "droid.list_mcp_tools" /* LIST_MCP_TOOLS */,
1374
1467
  params: {}
1375
1468
  };
1376
1469
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1377
- const response = _chunkYSKO6SPTjs.ListMcpToolsResponseSchema.parse(rawResponse);
1378
- return response;
1470
+ const response2 = _chunkKAAWCHO4js.ListMcpToolsResponseSchema.parse(rawResponse);
1471
+ return response2;
1379
1472
  }
1380
1473
  async listTools(params = {}) {
1474
+ const schemasRequested = params.includeSchemas === true;
1381
1475
  const request = {
1382
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1383
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1476
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1477
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1384
1478
  type: "request",
1385
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1479
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1386
1480
  id: _uuid.v4.call(void 0, ),
1387
1481
  method: "droid.list_tools" /* LIST_TOOLS */,
1388
1482
  params
1389
1483
  };
1390
1484
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1391
- const response = _chunkYSKO6SPTjs.ListToolsResponseSchema.parse(rawResponse);
1392
- return response;
1485
+ const response2 = _chunkKAAWCHO4js.ListToolsResponseSchema.parse(rawResponse);
1486
+ if (!schemasRequested || !("result" in response2)) {
1487
+ return response2;
1488
+ }
1489
+ const strictResult = _chunkKAAWCHO4js.ListToolsResultWithSchemasSchema.safeParse(
1490
+ response2.result
1491
+ );
1492
+ if (strictResult.success) {
1493
+ return response2;
1494
+ }
1495
+ const result = _chunkKAAWCHO4js.ListToolsResultSchema.parse(response2.result);
1496
+ const missingSchemaIds = [];
1497
+ for (const tool2 of result.tools) {
1498
+ if (tool2.schemas === void 0) {
1499
+ missingSchemaIds.push(tool2.llmId);
1500
+ }
1501
+ }
1502
+ if (missingSchemaIds.length > 0) {
1503
+ throw new (0, _chunkKAAWCHO4js.ProtocolError)(
1504
+ `The installed Droid version did not return requested schemas for tool IDs: ${missingSchemaIds.join(", ")}. Update Droid and try again.`
1505
+ );
1506
+ }
1507
+ throw strictResult.error;
1393
1508
  }
1394
1509
  async listMcpServers() {
1395
1510
  if (!this.currentSessionId) {
1396
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1511
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1397
1512
  "No active session. Call initializeSession or loadSession first."
1398
1513
  );
1399
1514
  }
1400
1515
  const request = {
1401
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1402
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1516
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1517
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1403
1518
  type: "request",
1404
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1519
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1405
1520
  id: _uuid.v4.call(void 0, ),
1406
1521
  method: "droid.list_mcp_servers" /* LIST_MCP_SERVERS */,
1407
1522
  params: {}
1408
1523
  };
1409
1524
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1410
- const response = _chunkYSKO6SPTjs.ListMcpServersResponseSchema.parse(rawResponse);
1411
- return response;
1525
+ const response2 = _chunkKAAWCHO4js.ListMcpServersResponseSchema.parse(rawResponse);
1526
+ return response2;
1412
1527
  }
1413
1528
  async toggleMcpTool(serverName, toolName, enabled) {
1414
1529
  if (!this.currentSessionId) {
1415
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1530
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1416
1531
  "No active session. Call initializeSession or loadSession first."
1417
1532
  );
1418
1533
  }
1419
1534
  const request = {
1420
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1421
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1535
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1536
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1422
1537
  type: "request",
1423
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1538
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1424
1539
  id: _uuid.v4.call(void 0, ),
1425
1540
  method: "droid.toggle_mcp_tool" /* TOGGLE_MCP_TOOL */,
1426
1541
  params: { serverName, toolName, enabled }
1427
1542
  };
1428
1543
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1429
- const response = _chunkYSKO6SPTjs.ToggleMcpToolResponseSchema.parse(rawResponse);
1430
- return response;
1544
+ const response2 = _chunkKAAWCHO4js.ToggleMcpToolResponseSchema.parse(rawResponse);
1545
+ return response2;
1431
1546
  }
1432
1547
  async submitMcpAuthCode(params) {
1433
1548
  if (!this.currentSessionId) {
1434
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1549
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1435
1550
  "No active session. Call initializeSession or loadSession first."
1436
1551
  );
1437
1552
  }
1438
1553
  const request = {
1439
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1440
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1554
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1555
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1441
1556
  type: "request",
1442
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1557
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1443
1558
  id: _uuid.v4.call(void 0, ),
1444
1559
  method: "droid.submit_mcp_auth_code" /* SUBMIT_MCP_AUTH_CODE */,
1445
1560
  params
1446
1561
  };
1447
1562
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1448
- const response = _chunkYSKO6SPTjs.SubmitMcpAuthCodeResponseSchema.parse(rawResponse);
1449
- return response;
1563
+ const response2 = _chunkKAAWCHO4js.SubmitMcpAuthCodeResponseSchema.parse(rawResponse);
1564
+ return response2;
1450
1565
  }
1451
1566
  async submitMcpAuthError(params) {
1452
1567
  if (!this.currentSessionId) {
1453
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1568
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1454
1569
  "No active session. Call initializeSession or loadSession first."
1455
1570
  );
1456
1571
  }
1457
1572
  const request = {
1458
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1459
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1573
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1574
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1460
1575
  type: "request",
1461
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1576
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1462
1577
  id: _uuid.v4.call(void 0, ),
1463
1578
  method: "droid.submit_mcp_auth_error" /* SUBMIT_MCP_AUTH_ERROR */,
1464
1579
  params
1465
1580
  };
1466
1581
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1467
- const response = _chunkYSKO6SPTjs.SubmitMcpAuthErrorResponseSchema.parse(rawResponse);
1468
- return response;
1582
+ const response2 = _chunkKAAWCHO4js.SubmitMcpAuthErrorResponseSchema.parse(rawResponse);
1583
+ return response2;
1469
1584
  }
1470
- async listSkills() {
1585
+ async listSkills(params = {}) {
1471
1586
  if (!this.currentSessionId) {
1472
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1587
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1473
1588
  "No active session. Call initializeSession or loadSession first."
1474
1589
  );
1475
1590
  }
1476
1591
  const request = {
1477
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1478
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1592
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1593
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1479
1594
  type: "request",
1480
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1595
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1481
1596
  id: _uuid.v4.call(void 0, ),
1482
1597
  method: "droid.list_skills" /* LIST_SKILLS */,
1483
- params: {}
1598
+ params
1484
1599
  };
1485
1600
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1486
- const response = _chunkYSKO6SPTjs.ListSkillsResponseSchema.parse(rawResponse);
1487
- return response;
1601
+ const response2 = _chunkKAAWCHO4js.ListSkillsResponseSchema.parse(rawResponse);
1602
+ return response2;
1488
1603
  }
1489
1604
  async setSkillDisabled(skillName, disabled, settingsLevel) {
1490
1605
  if (!this.currentSessionId) {
1491
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1606
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1492
1607
  "No active session. Call initializeSession or loadSession first."
1493
1608
  );
1494
1609
  }
1495
1610
  const request = {
1496
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1497
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1611
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1612
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1498
1613
  type: "request",
1499
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1614
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1500
1615
  id: _uuid.v4.call(void 0, ),
1501
1616
  method: "droid.set_skill_disabled" /* SET_SKILL_DISABLED */,
1502
1617
  params: { skillName, disabled, settingsLevel }
1503
1618
  };
1504
1619
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1505
- return _chunkYSKO6SPTjs.SetSkillDisabledResponseSchema.parse(rawResponse);
1620
+ return _chunkKAAWCHO4js.SetSkillDisabledResponseSchema.parse(rawResponse);
1506
1621
  }
1507
1622
  async listCommands() {
1508
1623
  if (!this.currentSessionId) {
1509
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1624
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1510
1625
  "No active session. Call initializeSession or loadSession first."
1511
1626
  );
1512
1627
  }
1513
1628
  const request = {
1514
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1515
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1629
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1630
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1516
1631
  type: "request",
1517
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1632
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1518
1633
  id: _uuid.v4.call(void 0, ),
1519
1634
  method: "droid.list_commands" /* LIST_COMMANDS */,
1520
1635
  params: {}
1521
1636
  };
1522
1637
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1523
- const response = _chunkYSKO6SPTjs.ListCommandsResponseSchema.parse(rawResponse);
1524
- return response;
1638
+ const response2 = _chunkKAAWCHO4js.ListCommandsResponseSchema.parse(rawResponse);
1639
+ return response2;
1525
1640
  }
1526
1641
  async getContextStats() {
1527
1642
  if (!this.currentSessionId) {
1528
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1643
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1529
1644
  "No active session. Call initializeSession or loadSession first."
1530
1645
  );
1531
1646
  }
1532
1647
  const request = {
1533
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1534
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1648
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1649
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1535
1650
  type: "request",
1536
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1651
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1537
1652
  id: _uuid.v4.call(void 0, ),
1538
1653
  method: "droid.get_context_stats" /* GET_CONTEXT_STATS */,
1539
1654
  params: {}
1540
1655
  };
1541
1656
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1542
- const response = _chunkYSKO6SPTjs.GetContextStatsResponseSchema.parse(rawResponse);
1543
- return response;
1657
+ const response2 = _chunkKAAWCHO4js.GetContextStatsResponseSchema.parse(rawResponse);
1658
+ return response2;
1544
1659
  }
1545
1660
  async getContextBreakdown() {
1546
1661
  if (!this.currentSessionId) {
1547
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1662
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1548
1663
  "No active session. Call initializeSession or loadSession first."
1549
1664
  );
1550
1665
  }
1551
1666
  const request = {
1552
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1553
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1667
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1668
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1554
1669
  type: "request",
1555
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1670
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1556
1671
  id: _uuid.v4.call(void 0, ),
1557
1672
  method: "droid.get_context_breakdown" /* GET_CONTEXT_BREAKDOWN */,
1558
1673
  params: {}
1559
1674
  };
1560
1675
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1561
- const response = _chunkYSKO6SPTjs.GetContextBreakdownResponseSchema.parse(rawResponse);
1562
- return response;
1676
+ const response2 = _chunkKAAWCHO4js.GetContextBreakdownResponseSchema.parse(rawResponse);
1677
+ return response2;
1678
+ }
1679
+ async killBackgroundProcess(processId) {
1680
+ if (!this.currentSessionId) {
1681
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1682
+ "No active session. Call initializeSession or loadSession first."
1683
+ );
1684
+ }
1685
+ const request = {
1686
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1687
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1688
+ type: "request",
1689
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1690
+ id: _uuid.v4.call(void 0, ),
1691
+ method: "droid.kill_background_process" /* KILL_BACKGROUND_PROCESS */,
1692
+ params: { processId }
1693
+ };
1694
+ const rawResponse = await this.sendRequest(request, this.requestTimeout);
1695
+ return _chunkKAAWCHO4js.KillBackgroundProcessResponseSchema.parse(rawResponse);
1563
1696
  }
1564
- async submitBugReport(userComment, clientLogs, source) {
1697
+ async submitBugReport(userComment, clientLogs, source, tuiLogs) {
1565
1698
  if (!this.currentSessionId) {
1566
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1699
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1567
1700
  "No active session. Call initializeSession or loadSession first."
1568
1701
  );
1569
1702
  }
1570
1703
  const request = {
1571
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1572
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1704
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1705
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1573
1706
  type: "request",
1574
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1707
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1575
1708
  id: _uuid.v4.call(void 0, ),
1576
1709
  method: "droid.submit_bug_report" /* SUBMIT_BUG_REPORT */,
1577
- params: { userComment, clientLogs, source }
1710
+ params: { userComment, clientLogs, source, tuiLogs }
1578
1711
  };
1579
1712
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1580
- const response = _chunkYSKO6SPTjs.SubmitBugReportResponseSchema.parse(rawResponse);
1581
- return response;
1713
+ const response2 = _chunkKAAWCHO4js.SubmitBugReportResponseSchema.parse(rawResponse);
1714
+ return response2;
1582
1715
  }
1583
1716
  async getRewindInfo(params, timeout = this.requestTimeout) {
1584
1717
  if (!this.currentSessionId) {
1585
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1718
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1586
1719
  "No active session. Call initializeSession or loadSession first."
1587
1720
  );
1588
1721
  }
1589
1722
  const request = {
1590
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1591
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1723
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1724
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1592
1725
  type: "request",
1593
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1726
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1594
1727
  id: _uuid.v4.call(void 0, ),
1595
1728
  method: "droid.get_rewind_info" /* GET_REWIND_INFO */,
1596
1729
  params: {
@@ -1599,19 +1732,19 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1599
1732
  }
1600
1733
  };
1601
1734
  const rawResponse = await this.sendRequest(request, timeout);
1602
- return _chunkYSKO6SPTjs.GetRewindInfoResponseSchema.parse(rawResponse);
1735
+ return _chunkKAAWCHO4js.GetRewindInfoResponseSchema.parse(rawResponse);
1603
1736
  }
1604
1737
  async executeRewind(params) {
1605
1738
  if (!this.currentSessionId) {
1606
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1739
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1607
1740
  "No active session. Call initializeSession or loadSession first."
1608
1741
  );
1609
1742
  }
1610
1743
  const request = {
1611
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1612
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1744
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1745
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1613
1746
  type: "request",
1614
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1747
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1615
1748
  id: _uuid.v4.call(void 0, ),
1616
1749
  method: "droid.execute_rewind" /* EXECUTE_REWIND */,
1617
1750
  params: {
@@ -1626,57 +1759,96 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1626
1759
  request,
1627
1760
  this.requestTimeout * 2
1628
1761
  );
1629
- return _chunkYSKO6SPTjs.ExecuteRewindResponseSchema.parse(rawResponse);
1762
+ return _chunkKAAWCHO4js.ExecuteRewindResponseSchema.parse(rawResponse);
1630
1763
  }
1631
1764
  async compactSession(params) {
1632
1765
  if (!this.currentSessionId) {
1633
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1766
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1634
1767
  "No active session. Call initializeSession or loadSession first."
1635
1768
  );
1636
1769
  }
1637
1770
  const request = {
1638
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1639
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1771
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1772
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1640
1773
  type: "request",
1641
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1774
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1642
1775
  id: _uuid.v4.call(void 0, ),
1643
1776
  method: "droid.compact_session" /* COMPACT_SESSION */,
1644
1777
  params: {
1645
- customInstructions: params.customInstructions
1778
+ customInstructions: params.customInstructions,
1779
+ mode: params.mode
1646
1780
  }
1647
1781
  };
1648
1782
  const rawResponse = await this.sendRequest(request, COMPACTION_TIMEOUT2);
1649
- return _chunkYSKO6SPTjs.CompactSessionResponseSchema.parse(rawResponse);
1783
+ return _chunkKAAWCHO4js.CompactSessionResponseSchema.parse(rawResponse);
1784
+ }
1785
+ /** Summarizes the session the way `/handoff` does, without writing anything. */
1786
+ async getHandoffSummary() {
1787
+ if (!this.currentSessionId) {
1788
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1789
+ "No active session. Call initializeSession or loadSession first."
1790
+ );
1791
+ }
1792
+ const request = {
1793
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1794
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1795
+ type: "request",
1796
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1797
+ id: _uuid.v4.call(void 0, ),
1798
+ method: "droid.get_handoff_summary" /* GET_HANDOFF_SUMMARY */,
1799
+ params: {}
1800
+ };
1801
+ const rawResponse = await this.sendRequest(request, COMPACTION_TIMEOUT2);
1802
+ return _chunkKAAWCHO4js.GetHandoffSummaryResponseSchema.parse(rawResponse);
1803
+ }
1804
+ /** Writes the short summary people joining a shared copy read first. */
1805
+ async summarizeForMembers(params) {
1806
+ if (!this.currentSessionId) {
1807
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1808
+ "No active session. Call initializeSession or loadSession first."
1809
+ );
1810
+ }
1811
+ const request = {
1812
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1813
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1814
+ type: "request",
1815
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1816
+ id: _uuid.v4.call(void 0, ),
1817
+ method: "droid.summarize_for_members" /* SUMMARIZE_FOR_MEMBERS */,
1818
+ params: { handoffSummary: params.handoffSummary }
1819
+ };
1820
+ const rawResponse = await this.sendRequest(request, COMPACTION_TIMEOUT2);
1821
+ return _chunkKAAWCHO4js.SummarizeForMembersResponseSchema.parse(rawResponse);
1650
1822
  }
1651
1823
  async forkSession(params) {
1652
1824
  if (!this.currentSessionId) {
1653
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1825
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1654
1826
  "No active session. Call initializeSession or loadSession first."
1655
1827
  );
1656
1828
  }
1657
1829
  const request = {
1658
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1659
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1830
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1831
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1660
1832
  type: "request",
1661
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1833
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1662
1834
  id: _uuid.v4.call(void 0, ),
1663
1835
  method: "droid.fork_session" /* FORK_SESSION */,
1664
1836
  params: _nullishCoalesce(params, () => ( {}))
1665
1837
  };
1666
1838
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1667
- return _chunkYSKO6SPTjs.ForkSessionResponseSchema.parse(rawResponse);
1839
+ return _chunkKAAWCHO4js.ForkSessionResponseSchema.parse(rawResponse);
1668
1840
  }
1669
1841
  async renameSession(params, requestId) {
1670
1842
  if (!this.currentSessionId) {
1671
- throw new (0, _chunkYSKO6SPTjs.SessionError)(
1843
+ throw new (0, _chunkKAAWCHO4js.SessionError)(
1672
1844
  "No active session. Call initializeSession or loadSession first."
1673
1845
  );
1674
1846
  }
1675
1847
  const request = {
1676
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1677
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1848
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1849
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1678
1850
  type: "request",
1679
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1851
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1680
1852
  id: _nullishCoalesce(requestId, () => ( _uuid.v4.call(void 0, ))),
1681
1853
  method: "droid.rename_session" /* RENAME_SESSION */,
1682
1854
  params: {
@@ -1684,18 +1856,18 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1684
1856
  }
1685
1857
  };
1686
1858
  const rawResponse = await this.sendRequest(request, this.requestTimeout);
1687
- return _chunkYSKO6SPTjs.RenameSessionResponseSchema.parse(rawResponse);
1859
+ return _chunkKAAWCHO4js.RenameSessionResponseSchema.parse(rawResponse);
1688
1860
  }
1689
1861
  async warmupCache() {
1690
- const response = {
1691
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
1692
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
1862
+ const response2 = {
1863
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
1864
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
1693
1865
  type: "response",
1694
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
1866
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
1695
1867
  id: _uuid.v4.call(void 0, ),
1696
1868
  result: {}
1697
1869
  };
1698
- return _chunkYSKO6SPTjs.WarmupCacheResponseSchema.parse(response);
1870
+ return _chunkKAAWCHO4js.WarmupCacheResponseSchema.parse(response2);
1699
1871
  }
1700
1872
  onNotification(callback, filter) {
1701
1873
  const handler = (notification) => {
@@ -1704,7 +1876,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1704
1876
  }
1705
1877
  try {
1706
1878
  callback(notification);
1707
- } catch (e3) {
1879
+ } catch (e2) {
1708
1880
  }
1709
1881
  };
1710
1882
  this.on("session_notification" /* SESSION_NOTIFICATION */, handler);
@@ -1714,7 +1886,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1714
1886
  const handler = (error) => {
1715
1887
  try {
1716
1888
  callback(error);
1717
- } catch (e4) {
1889
+ } catch (e3) {
1718
1890
  }
1719
1891
  };
1720
1892
  this.on("error" /* ERROR */, handler);
@@ -1726,25 +1898,61 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1726
1898
  setPermissionHandler(handler) {
1727
1899
  this.permissionHandlers.set(
1728
1900
  "default",
1729
- async (event) => await handler(event)
1901
+ async (event, setResponseMetadata) => await handler(event, setResponseMetadata)
1730
1902
  );
1731
1903
  }
1732
1904
  clearPermissionHandler() {
1733
1905
  this.permissionHandlers.delete("default");
1734
1906
  }
1735
1907
  setAskUserHandler(handler) {
1736
- this.askUserHandlers.set("default", async (event) => await handler(event));
1908
+ this.askUserHandlers.set(
1909
+ "default",
1910
+ async (event, setResponseMetadata) => await handler(event, setResponseMetadata)
1911
+ );
1912
+ const held = this.heldQueuedAskUserRequests;
1913
+ this.heldQueuedAskUserRequests = [];
1914
+ for (const event of held) {
1915
+ void this.answerAskUserRequest(event).catch((error) => {
1916
+ this.reportHandlerFailure(
1917
+ error,
1918
+ "Failed to answer a held queued ask-user request"
1919
+ );
1920
+ });
1921
+ }
1737
1922
  }
1738
1923
  clearAskUserHandler() {
1739
1924
  this.askUserHandlers.delete("default");
1740
1925
  }
1741
- async close() {
1742
- const closeError = new (0, _chunkYSKO6SPTjs.ConnectionError)(
1926
+ setPickOptionsHandler(handler) {
1927
+ this.pickOptionsHandlers.set(
1928
+ "default",
1929
+ async (event, setResponseMetadata) => await handler(event, setResponseMetadata)
1930
+ );
1931
+ }
1932
+ clearPickOptionsHandler() {
1933
+ this.pickOptionsHandlers.delete("default");
1934
+ }
1935
+ async close(options) {
1936
+ const closeError = new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(
1743
1937
  "Droid client closed: pending requests cancelled"
1744
1938
  );
1939
+ if (_optionalChain([options, 'optionalAccess', _14 => _14.closeTransportFirst])) {
1940
+ try {
1941
+ await this.transport.close();
1942
+ } finally {
1943
+ this.rejectAllPending(closeError);
1944
+ this.permissionHandlers.clear();
1945
+ this.askUserHandlers.clear();
1946
+ this.heldQueuedAskUserRequests = [];
1947
+ this.removeAllListeners();
1948
+ }
1949
+ return;
1950
+ }
1745
1951
  this.rejectAllPending(closeError);
1746
1952
  this.permissionHandlers.clear();
1747
1953
  this.askUserHandlers.clear();
1954
+ this.heldQueuedAskUserRequests = [];
1955
+ this.pickOptionsHandlers.clear();
1748
1956
  this.removeAllListeners();
1749
1957
  await this.transport.close();
1750
1958
  }
@@ -1765,6 +1973,10 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1765
1973
  reject(error);
1766
1974
  });
1767
1975
  this.pendingAskUserRequests.clear();
1976
+ this.pendingPickOptionsRequests.forEach(({ reject }) => {
1977
+ reject(error);
1978
+ });
1979
+ this.pendingPickOptionsRequests.clear();
1768
1980
  }
1769
1981
  settleRequest(requestId) {
1770
1982
  this.pendingRequests.delete(requestId);
@@ -1772,26 +1984,41 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1772
1984
  }
1773
1985
  notifyRequestSettled(requestId) {
1774
1986
  try {
1775
- _optionalChain([this, 'access', _14 => _14.onRequestSettled, 'optionalCall', _15 => _15(requestId)]);
1776
- } catch (e5) {
1777
- }
1987
+ _optionalChain([this, 'access', _15 => _15.onRequestSettled, 'optionalCall', _16 => _16(requestId)]);
1988
+ } catch (e4) {
1989
+ }
1990
+ }
1991
+ /** `_meta` for an answer this client gives itself: its caller and the current trace context. */
1992
+ responseMetadata() {
1993
+ const meta = {};
1994
+ const requestAttribution = _optionalChain([this, 'access', _17 => _17.getRequestAttribution, 'optionalCall', _18 => _18()]);
1995
+ if (requestAttribution) meta.requestAttribution = requestAttribution;
1996
+ this.tracing.injectContext(meta, this.tracing.getCurrentContext());
1997
+ return meta;
1998
+ }
1999
+ async sendResponse(response2, hostMeta) {
2000
+ const meta = _nullishCoalesce(hostMeta, () => ( this.responseMetadata()));
2001
+ await this.transport.send(
2002
+ Object.keys(meta).length > 0 ? { ...response2, _meta: meta } : response2
2003
+ );
1778
2004
  }
1779
- async sendRequest(request, timeout) {
2005
+ async sendRequest(request, timeout, sessionId) {
1780
2006
  if (this.transportError) {
1781
2007
  throw this.transportError;
1782
2008
  }
1783
- const requestAttribution = _optionalChain([this, 'access', _16 => _16.getRequestAttribution, 'optionalCall', _17 => _17()]);
1784
- const _meta = {
1785
- ...requestAttribution && { requestAttribution }
1786
- };
2009
+ const requestAttribution = _nullishCoalesce(_optionalChain([request, 'access', _19 => _19._meta, 'optionalAccess', _20 => _20.requestAttribution]), () => ( _optionalChain([this, 'access', _21 => _21.getRequestAttribution, 'optionalCall', _22 => _22()])));
2010
+ const _meta = { ...request._meta };
2011
+ delete _meta.requestAttribution;
2012
+ if (requestAttribution) _meta.requestAttribution = requestAttribution;
1787
2013
  this.tracing.injectContext(_meta, this.tracing.getCurrentContext());
1788
- const requestWithMeta = _meta.traceparent || _meta.requestAttribution ? { ...request, _meta } : request;
2014
+ const { _meta: _originalMeta, ...requestWithoutMeta } = request;
2015
+ const requestWithMeta = Object.keys(_meta).length > 0 ? { ...request, _meta } : requestWithoutMeta;
1789
2016
  const responsePromise = new Promise(
1790
2017
  (resolve2, reject) => {
1791
2018
  const timeoutId = timeout ? setTimeout(() => {
1792
2019
  this.settleRequest(request.id);
1793
2020
  reject(
1794
- new (0, _chunkYSKO6SPTjs.TimeoutError)("Send request timed out", {
2021
+ new (0, _chunkKAAWCHO4js.TimeoutError)("Send request timed out", {
1795
2022
  requestId: request.id,
1796
2023
  method: request.method,
1797
2024
  timeout
@@ -1802,16 +2029,23 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1802
2029
  method: request.method,
1803
2030
  resolve: resolve2,
1804
2031
  reject,
1805
- timeoutId
2032
+ timeoutId,
2033
+ sessionId
1806
2034
  });
1807
2035
  }
1808
2036
  );
2037
+ void responsePromise.catch(() => {
2038
+ });
2039
+ void this.writeRequest(requestWithMeta);
2040
+ return responsePromise;
2041
+ }
2042
+ async writeRequest(request) {
1809
2043
  try {
1810
2044
  this.logger.info("[DroidClient] [daemon -> droid] sending request", {
1811
2045
  requestId: request.id,
1812
2046
  method: request.method
1813
2047
  });
1814
- await this.transport.send(JSON.stringify(requestWithMeta));
2048
+ await this.transport.send(request);
1815
2049
  } catch (error) {
1816
2050
  const pending = this.pendingRequests.get(request.id);
1817
2051
  if (pending) {
@@ -1820,152 +2054,156 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1820
2054
  }
1821
2055
  this.settleRequest(request.id);
1822
2056
  pending.reject(
1823
- new (0, _chunkYSKO6SPTjs.ProtocolError)("[daemon -> droid] Failed to send request", {
2057
+ new (0, _chunkKAAWCHO4js.ProtocolError)("[daemon -> droid] Failed to send request", {
1824
2058
  requestId: request.id,
1825
2059
  cause: error
1826
2060
  })
1827
2061
  );
1828
2062
  }
1829
2063
  }
1830
- return responsePromise;
1831
2064
  }
1832
2065
  async handleMessage(message) {
1833
2066
  try {
1834
- const parsed = JSON.parse(message);
1835
- if ("result" in parsed || "error" in parsed) {
1836
- this.handleResponse(parsed);
1837
- } else if ("method" in parsed) {
1838
- await this.handleEvent(parsed);
2067
+ if (message.type === "response") {
2068
+ this.handleResponse(message);
1839
2069
  } else {
1840
- throw new (0, _chunkYSKO6SPTjs.ProtocolError)("Invalid message format", {
1841
- message
1842
- });
2070
+ await this.handleEvent(message);
1843
2071
  }
1844
- } catch (e6) {
1845
- this.logger.warn("[DroidClient] Failed to handle message", {
1846
- messageByteLength: new TextEncoder().encode(message).byteLength
1847
- });
2072
+ } catch (e5) {
2073
+ this.logger.warn("[DroidClient] Failed to handle message");
1848
2074
  }
1849
2075
  }
1850
- handleResponse(response) {
2076
+ handleResponse(response2) {
1851
2077
  try {
1852
- const responseId = getResponseId(response);
2078
+ const responseId = getResponseId(response2);
1853
2079
  if (responseId !== null && responseId !== void 0) {
1854
2080
  const pending = this.pendingRequests.get(responseId);
1855
2081
  if (pending) {
1856
2082
  let validatedResponse;
1857
2083
  switch (pending.method) {
1858
2084
  case "droid.initialize_session" /* INITIALIZE_SESSION */:
1859
- validatedResponse = _chunkYSKO6SPTjs.InitializeSessionResponseSchema.parse(response);
2085
+ validatedResponse = _chunkKAAWCHO4js.InitializeSessionResponseSchema.parse(response2);
1860
2086
  break;
1861
2087
  case "droid.load_session" /* LOAD_SESSION */:
1862
- validatedResponse = _chunkYSKO6SPTjs.LoadSessionResponseSchema.parse(response);
2088
+ validatedResponse = _chunkKAAWCHO4js.LoadSessionResponseSchema.parse(response2);
1863
2089
  break;
1864
2090
  case "droid.add_user_message" /* ADD_USER_MESSAGE */:
1865
- validatedResponse = _chunkYSKO6SPTjs.AddUserMessageResponseSchema.parse(response);
2091
+ validatedResponse = _chunkKAAWCHO4js.AddUserMessageResponseSchema.parse(response2);
1866
2092
  break;
1867
2093
  case "droid.append_messages" /* APPEND_MESSAGES */:
1868
- validatedResponse = _chunkYSKO6SPTjs.AppendMessagesResponseSchema.parse(response);
2094
+ validatedResponse = _chunkKAAWCHO4js.AppendMessagesResponseSchema.parse(response2);
1869
2095
  break;
1870
2096
  case "droid.resolve_queued_user_message" /* RESOLVE_QUEUED_USER_MESSAGE */:
1871
- validatedResponse = _chunkYSKO6SPTjs.ResolveQueuedUserMessageResponseSchema.parse(response);
2097
+ validatedResponse = _chunkKAAWCHO4js.ResolveQueuedUserMessageResponseSchema.parse(response2);
1872
2098
  break;
1873
2099
  case "droid.interrupt_session" /* INTERRUPT_SESSION */:
1874
- validatedResponse = _chunkYSKO6SPTjs.InterruptSessionResponseSchema.parse(response);
2100
+ validatedResponse = _chunkKAAWCHO4js.InterruptSessionResponseSchema.parse(response2);
1875
2101
  break;
1876
2102
  case "droid.close_session" /* CLOSE_SESSION */:
1877
- validatedResponse = _chunkYSKO6SPTjs.CloseSessionResponseSchema.parse(response);
2103
+ validatedResponse = _chunkKAAWCHO4js.CloseSessionResponseSchema.parse(response2);
1878
2104
  break;
1879
2105
  case "droid.update_session_settings" /* UPDATE_SESSION_SETTINGS */:
1880
- validatedResponse = _chunkYSKO6SPTjs.UpdateSessionSettingsResponseSchema.parse(response);
2106
+ validatedResponse = _chunkKAAWCHO4js.UpdateSessionSettingsResponseSchema.parse(response2);
1881
2107
  break;
1882
2108
  case "droid.change_working_directory" /* CHANGE_WORKING_DIRECTORY */:
1883
- validatedResponse = _chunkYSKO6SPTjs.ChangeWorkingDirectoryResponseSchema.parse(response);
2109
+ validatedResponse = _chunkKAAWCHO4js.ChangeWorkingDirectoryResponseSchema.parse(response2);
1884
2110
  break;
1885
2111
  case "droid.toggle_mcp_server" /* TOGGLE_MCP_SERVER */:
1886
- validatedResponse = _chunkYSKO6SPTjs.ToggleMcpServerResponseSchema.parse(response);
2112
+ validatedResponse = _chunkKAAWCHO4js.ToggleMcpServerResponseSchema.parse(response2);
1887
2113
  break;
1888
2114
  case "droid.authenticate_mcp_server" /* AUTHENTICATE_MCP_SERVER */:
1889
- validatedResponse = _chunkYSKO6SPTjs.AuthenticateMcpServerResponseSchema.parse(response);
2115
+ validatedResponse = _chunkKAAWCHO4js.AuthenticateMcpServerResponseSchema.parse(response2);
1890
2116
  break;
1891
2117
  case "droid.cancel_mcp_auth" /* CANCEL_MCP_AUTH */:
1892
- validatedResponse = _chunkYSKO6SPTjs.CancelMcpAuthResponseSchema.parse(response);
2118
+ validatedResponse = _chunkKAAWCHO4js.CancelMcpAuthResponseSchema.parse(response2);
1893
2119
  break;
1894
2120
  case "droid.clear_mcp_auth" /* CLEAR_MCP_AUTH */:
1895
- validatedResponse = _chunkYSKO6SPTjs.ClearMcpAuthResponseSchema.parse(response);
2121
+ validatedResponse = _chunkKAAWCHO4js.ClearMcpAuthResponseSchema.parse(response2);
1896
2122
  break;
1897
2123
  case "droid.add_mcp_server" /* ADD_MCP_SERVER */:
1898
- validatedResponse = _chunkYSKO6SPTjs.AddMcpServerResponseSchema.parse(response);
2124
+ validatedResponse = _chunkKAAWCHO4js.AddMcpServerResponseSchema.parse(response2);
1899
2125
  break;
1900
2126
  case "droid.remove_mcp_server" /* REMOVE_MCP_SERVER */:
1901
- validatedResponse = _chunkYSKO6SPTjs.RemoveMcpServerResponseSchema.parse(response);
2127
+ validatedResponse = _chunkKAAWCHO4js.RemoveMcpServerResponseSchema.parse(response2);
1902
2128
  break;
1903
2129
  case "droid.list_models" /* LIST_MODELS */:
1904
- validatedResponse = _chunkYSKO6SPTjs.ListModelsResponseSchema.parse(response);
2130
+ validatedResponse = _chunkKAAWCHO4js.ListModelsResponseSchema.parse(response2);
1905
2131
  break;
1906
2132
  case "droid.list_mcp_registry" /* LIST_MCP_REGISTRY */:
1907
- validatedResponse = _chunkYSKO6SPTjs.ListMcpRegistryResponseSchema.parse(response);
2133
+ validatedResponse = _chunkKAAWCHO4js.ListMcpRegistryResponseSchema.parse(response2);
1908
2134
  break;
1909
2135
  case "droid.list_mcp_tools" /* LIST_MCP_TOOLS */:
1910
- validatedResponse = _chunkYSKO6SPTjs.ListMcpToolsResponseSchema.parse(response);
2136
+ validatedResponse = _chunkKAAWCHO4js.ListMcpToolsResponseSchema.parse(response2);
1911
2137
  break;
1912
2138
  case "droid.list_tools" /* LIST_TOOLS */:
1913
- validatedResponse = _chunkYSKO6SPTjs.ListToolsResponseSchema.parse(response);
2139
+ validatedResponse = _chunkKAAWCHO4js.ListToolsResponseSchema.parse(response2);
2140
+ break;
2141
+ case "droid.refresh_connector_tool_catalog" /* REFRESH_CONNECTOR_TOOL_CATALOG */:
2142
+ validatedResponse = _chunkKAAWCHO4js.RefreshConnectorToolCatalogResponseSchema.parse(response2);
1914
2143
  break;
1915
2144
  case "droid.toggle_mcp_tool" /* TOGGLE_MCP_TOOL */:
1916
- validatedResponse = _chunkYSKO6SPTjs.ToggleMcpToolResponseSchema.parse(response);
2145
+ validatedResponse = _chunkKAAWCHO4js.ToggleMcpToolResponseSchema.parse(response2);
1917
2146
  break;
1918
2147
  case "droid.submit_mcp_auth_code" /* SUBMIT_MCP_AUTH_CODE */:
1919
- validatedResponse = _chunkYSKO6SPTjs.SubmitMcpAuthCodeResponseSchema.parse(response);
2148
+ validatedResponse = _chunkKAAWCHO4js.SubmitMcpAuthCodeResponseSchema.parse(response2);
1920
2149
  break;
1921
2150
  case "droid.submit_mcp_auth_error" /* SUBMIT_MCP_AUTH_ERROR */:
1922
- validatedResponse = _chunkYSKO6SPTjs.SubmitMcpAuthErrorResponseSchema.parse(response);
2151
+ validatedResponse = _chunkKAAWCHO4js.SubmitMcpAuthErrorResponseSchema.parse(response2);
1923
2152
  break;
1924
2153
  case "droid.kill_worker_session" /* KILL_WORKER_SESSION */:
1925
- validatedResponse = _chunkYSKO6SPTjs.KillWorkerSessionResponseSchema.parse(response);
2154
+ validatedResponse = _chunkKAAWCHO4js.KillWorkerSessionResponseSchema.parse(response2);
1926
2155
  break;
1927
2156
  case "droid.list_skills" /* LIST_SKILLS */:
1928
- validatedResponse = _chunkYSKO6SPTjs.ListSkillsResponseSchema.parse(response);
2157
+ validatedResponse = _chunkKAAWCHO4js.ListSkillsResponseSchema.parse(response2);
1929
2158
  break;
1930
2159
  case "droid.set_skill_disabled" /* SET_SKILL_DISABLED */:
1931
- validatedResponse = _chunkYSKO6SPTjs.SetSkillDisabledResponseSchema.parse(response);
2160
+ validatedResponse = _chunkKAAWCHO4js.SetSkillDisabledResponseSchema.parse(response2);
1932
2161
  break;
1933
2162
  case "droid.list_commands" /* LIST_COMMANDS */:
1934
- validatedResponse = _chunkYSKO6SPTjs.ListCommandsResponseSchema.parse(response);
2163
+ validatedResponse = _chunkKAAWCHO4js.ListCommandsResponseSchema.parse(response2);
1935
2164
  break;
1936
2165
  case "droid.submit_bug_report" /* SUBMIT_BUG_REPORT */:
1937
- validatedResponse = _chunkYSKO6SPTjs.SubmitBugReportResponseSchema.parse(response);
2166
+ validatedResponse = _chunkKAAWCHO4js.SubmitBugReportResponseSchema.parse(response2);
1938
2167
  break;
1939
2168
  case "droid.list_mcp_servers" /* LIST_MCP_SERVERS */:
1940
- validatedResponse = _chunkYSKO6SPTjs.ListMcpServersResponseSchema.parse(response);
2169
+ validatedResponse = _chunkKAAWCHO4js.ListMcpServersResponseSchema.parse(response2);
1941
2170
  break;
1942
2171
  case "droid.get_rewind_info" /* GET_REWIND_INFO */:
1943
- validatedResponse = _chunkYSKO6SPTjs.GetRewindInfoResponseSchema.parse(response);
2172
+ validatedResponse = _chunkKAAWCHO4js.GetRewindInfoResponseSchema.parse(response2);
1944
2173
  break;
1945
2174
  case "droid.execute_rewind" /* EXECUTE_REWIND */:
1946
- validatedResponse = _chunkYSKO6SPTjs.ExecuteRewindResponseSchema.parse(response);
2175
+ validatedResponse = _chunkKAAWCHO4js.ExecuteRewindResponseSchema.parse(response2);
1947
2176
  break;
1948
2177
  case "droid.compact_session" /* COMPACT_SESSION */:
1949
- validatedResponse = _chunkYSKO6SPTjs.CompactSessionResponseSchema.parse(response);
2178
+ validatedResponse = _chunkKAAWCHO4js.CompactSessionResponseSchema.parse(response2);
2179
+ break;
2180
+ case "droid.get_handoff_summary" /* GET_HANDOFF_SUMMARY */:
2181
+ validatedResponse = _chunkKAAWCHO4js.GetHandoffSummaryResponseSchema.parse(response2);
2182
+ break;
2183
+ case "droid.summarize_for_members" /* SUMMARIZE_FOR_MEMBERS */:
2184
+ validatedResponse = _chunkKAAWCHO4js.SummarizeForMembersResponseSchema.parse(response2);
1950
2185
  break;
1951
2186
  case "droid.fork_session" /* FORK_SESSION */:
1952
- validatedResponse = _chunkYSKO6SPTjs.ForkSessionResponseSchema.parse(response);
2187
+ validatedResponse = _chunkKAAWCHO4js.ForkSessionResponseSchema.parse(response2);
1953
2188
  break;
1954
2189
  case "droid.rename_session" /* RENAME_SESSION */:
1955
- validatedResponse = _chunkYSKO6SPTjs.RenameSessionResponseSchema.parse(response);
2190
+ validatedResponse = _chunkKAAWCHO4js.RenameSessionResponseSchema.parse(response2);
1956
2191
  break;
1957
2192
  case "droid.get_context_stats" /* GET_CONTEXT_STATS */:
1958
- validatedResponse = _chunkYSKO6SPTjs.GetContextStatsResponseSchema.parse(response);
2193
+ validatedResponse = _chunkKAAWCHO4js.GetContextStatsResponseSchema.parse(response2);
1959
2194
  break;
1960
2195
  case "droid.get_context_breakdown" /* GET_CONTEXT_BREAKDOWN */:
1961
- validatedResponse = _chunkYSKO6SPTjs.GetContextBreakdownResponseSchema.parse(response);
2196
+ validatedResponse = _chunkKAAWCHO4js.GetContextBreakdownResponseSchema.parse(response2);
1962
2197
  break;
1963
2198
  case "droid.warmup_cache" /* WARMUP_CACHE */:
1964
- validatedResponse = _chunkYSKO6SPTjs.WarmupCacheResponseSchema.parse(response);
2199
+ validatedResponse = _chunkKAAWCHO4js.WarmupCacheResponseSchema.parse(response2);
2200
+ break;
2201
+ case "droid.kill_background_process" /* KILL_BACKGROUND_PROCESS */:
2202
+ validatedResponse = _chunkKAAWCHO4js.KillBackgroundProcessResponseSchema.parse(response2);
1965
2203
  break;
1966
2204
  default: {
1967
2205
  const exhaustiveCheck = pending.method;
1968
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
2206
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
1969
2207
  "Unsupported method in response handler",
1970
2208
  {
1971
2209
  method: exhaustiveCheck
@@ -1979,7 +2217,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1979
2217
  this.settleRequest(responseId);
1980
2218
  pending.resolve(validatedResponse);
1981
2219
  } else {
1982
- const validatedResponse = _chunkYSKO6SPTjs.JsonRpcBaseResponseSchema.parse(response);
2220
+ const validatedResponse = _chunkKAAWCHO4js.JsonRpcBaseResponseSchema.parse(response2);
1983
2221
  this.logger.info(
1984
2222
  "[DroidClient] Received response for request not in pending map",
1985
2223
  {
@@ -1989,7 +2227,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1989
2227
  }
1990
2228
  }
1991
2229
  } catch (error) {
1992
- const responseId = getResponseId(response);
2230
+ const responseId = getResponseId(response2);
1993
2231
  const pending = responseId !== null && responseId !== void 0 ? this.pendingRequests.get(responseId) : void 0;
1994
2232
  const zodIssues = error instanceof _zod.z.ZodError ? error.issues.map((issue) => ({
1995
2233
  path: issue.path,
@@ -1997,7 +2235,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
1997
2235
  message: issue.message
1998
2236
  })) : void 0;
1999
2237
  this.logger.exception(error, "Invalid response format", {
2000
- method: _optionalChain([pending, 'optionalAccess', _18 => _18.method]),
2238
+ method: _optionalChain([pending, 'optionalAccess', _23 => _23.method]),
2001
2239
  requestId: _nullishCoalesce(responseId, () => ( void 0)),
2002
2240
  zodIssues
2003
2241
  });
@@ -2023,10 +2261,10 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2023
2261
  }
2024
2262
  this.settleRequest(responseId);
2025
2263
  const syntheticFailure = {
2026
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2264
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2027
2265
  type: "response",
2028
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2029
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2266
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2267
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2030
2268
  id: responseId,
2031
2269
  error: {
2032
2270
  code,
@@ -2039,19 +2277,25 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2039
2277
  }
2040
2278
  async handleEvent(event) {
2041
2279
  try {
2042
- const validatedEvent = _chunkYSKO6SPTjs.CliRequestOrNotificationSchema.parse(event);
2280
+ const validatedEvent = _chunkKAAWCHO4js.CliRequestOrNotificationSchema.parse(event);
2043
2281
  if (validatedEvent.method === "droid.session_notification" /* SESSION_NOTIFICATION */) {
2044
2282
  const notification = validatedEvent.params.notification;
2045
2283
  if (notification.type === "agent_turn_completed" /* AGENT_TURN_COMPLETED */) {
2046
2284
  this.completedTurnObserved = true;
2047
- } else if (notification.type === "droid_working_state_changed" /* DROID_WORKING_STATE_CHANGED */ && notification.newState !== "idle" /* Idle */) {
2285
+ } else if (notification.type === "droid_working_state_changed" /* DROID_WORKING_STATE_CHANGED */ && _chunkKAAWCHO4js.DROID_RUNNING_STATES.has(notification.newState)) {
2048
2286
  this.completedTurnObserved = false;
2287
+ } else if (notification.type === "permission_resolved" /* PERMISSION_RESOLVED */) {
2288
+ _optionalChain([this, 'access', _24 => _24.pendingPermissionRequests, 'access', _25 => _25.get, 'call', _26 => _26(notification.requestId), 'optionalAccess', _27 => _27.withdraw, 'call', _28 => _28()]);
2049
2289
  }
2050
2290
  this.emit("session_notification" /* SESSION_NOTIFICATION */, validatedEvent);
2051
2291
  } else if (validatedEvent.method === "droid.request_permission" /* REQUEST_PERMISSION */) {
2052
2292
  await this.handlePermissionRequest(validatedEvent);
2053
2293
  } else if (validatedEvent.method === "droid.ask_user" /* ASK_USER */) {
2054
2294
  await this.handleAskUserRequest(validatedEvent);
2295
+ } else if (validatedEvent.method === "droid.pick_options" /* PICK_OPTIONS */) {
2296
+ await this.handlePickOptionsRequest(validatedEvent);
2297
+ } else if (validatedEvent.method === "droid.disconnect" /* DISCONNECT */) {
2298
+ this.disconnected = true;
2055
2299
  }
2056
2300
  } catch (error) {
2057
2301
  this.logDroppedEventParseError(error, event);
@@ -2074,10 +2318,10 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2074
2318
  const code = error instanceof _zod.z.ZodError ? -32600 /* INVALID_REQUEST */ : -32603 /* INTERNAL_ERROR */;
2075
2319
  const message = code === -32600 /* INVALID_REQUEST */ ? "Invalid request format" : "Internal error while handling request";
2076
2320
  const errorResponse = {
2077
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2321
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2078
2322
  type: "response",
2079
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2080
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2323
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2324
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2081
2325
  id,
2082
2326
  error: {
2083
2327
  code,
@@ -2086,7 +2330,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2086
2330
  }
2087
2331
  };
2088
2332
  try {
2089
- await this.transport.send(JSON.stringify(errorResponse));
2333
+ await this.sendResponse(errorResponse, void 0);
2090
2334
  } catch (sendError) {
2091
2335
  this.logger.exception(
2092
2336
  sendError,
@@ -2131,6 +2375,13 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2131
2375
  });
2132
2376
  }
2133
2377
  }
2378
+ reportHandlerFailure(error, message) {
2379
+ if (error instanceof _chunkKAAWCHO4js.RequestCancelledError || isDroidConnectionEnded(error)) {
2380
+ this.logger.info(message, { cause: error });
2381
+ } else {
2382
+ this.logger.exception(error, message);
2383
+ }
2384
+ }
2134
2385
  async handlePermissionRequest(event) {
2135
2386
  if (this.pendingPermissionRequests.has(event.id)) {
2136
2387
  this.logger.info(
@@ -2145,10 +2396,14 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2145
2396
  requestId: event.id,
2146
2397
  count: event.params.toolUses.length
2147
2398
  });
2399
+ let hostMeta;
2400
+ const setResponseMetadata = (meta) => {
2401
+ hostMeta = meta;
2402
+ };
2148
2403
  this.emit("request_permission" /* REQUEST_PERMISSION */, event);
2149
- let selectedOption = "cancel" /* Cancel */;
2150
- let comment;
2151
- let editedSpecContent;
2404
+ let result = {
2405
+ selectedOption: "cancel" /* Cancel */
2406
+ };
2152
2407
  const handler = this.permissionHandlers.get("default");
2153
2408
  if (handler) {
2154
2409
  try {
@@ -2158,48 +2413,57 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2158
2413
  requestId: event.id
2159
2414
  }
2160
2415
  );
2161
- const handlerPromise = new Promise(
2162
- (resolve2, reject) => {
2163
- this.pendingPermissionRequests.set(event.id, { reject });
2164
- handler(event).then(resolve2).catch(reject).finally(() => {
2416
+ const handlerPromise = new Promise((resolve2, reject) => {
2417
+ this.pendingPermissionRequests.set(event.id, {
2418
+ reject,
2419
+ withdraw: () => {
2165
2420
  this.pendingPermissionRequests.delete(event.id);
2166
- });
2167
- }
2168
- );
2421
+ resolve2(PERMISSION_WITHDRAWN);
2422
+ }
2423
+ });
2424
+ handler(event, setResponseMetadata).then(resolve2).catch(reject).finally(() => {
2425
+ this.pendingPermissionRequests.delete(event.id);
2426
+ });
2427
+ });
2169
2428
  const handlerResult = await handlerPromise;
2429
+ if (handlerResult === PERMISSION_WITHDRAWN) {
2430
+ this.logger.info("[DroidClient] Permission request withdrawn", {
2431
+ requestId: event.id
2432
+ });
2433
+ return;
2434
+ }
2170
2435
  if (typeof handlerResult === "string" && handlerResult === "proceed_edit" /* ProceedEdit */) {
2171
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
2436
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
2172
2437
  "Permission handler returned proceed_edit without editedSpecContent"
2173
2438
  );
2174
2439
  }
2175
- const parsedHandlerResult = _chunkYSKO6SPTjs.RequestPermissionResultSchema.safeParse(
2440
+ const parsedHandlerResult = _chunkKAAWCHO4js.RequestPermissionResultSchema.safeParse(
2176
2441
  typeof handlerResult === "string" ? { selectedOption: handlerResult } : handlerResult
2177
2442
  );
2178
2443
  if (parsedHandlerResult.success) {
2179
- selectedOption = parsedHandlerResult.data.selectedOption;
2180
- comment = parsedHandlerResult.data.comment;
2181
- editedSpecContent = parsedHandlerResult.data.editedSpecContent;
2444
+ result = parsedHandlerResult.data;
2182
2445
  } else {
2183
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
2446
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
2184
2447
  "Permission handler returned invalid result",
2185
2448
  {
2186
2449
  cause: parsedHandlerResult.error
2187
2450
  }
2188
2451
  );
2189
2452
  }
2190
- if (!event.params.options.some(
2191
- (option) => option.value === selectedOption
2453
+ if (!_chunkKAAWCHO4js.isOfferedPermissionOutcome.call(void 0,
2454
+ event.params.options,
2455
+ result.selectedOption
2192
2456
  )) {
2193
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
2194
- `Permission handler selected unavailable option: ${selectedOption}`
2457
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
2458
+ `Permission handler selected unavailable option: ${result.selectedOption}`
2195
2459
  );
2196
2460
  }
2197
2461
  this.logger.info("[DroidClient] Permission handler resolved", {
2198
2462
  requestId: event.id,
2199
- result: selectedOption
2463
+ result: result.selectedOption
2200
2464
  });
2201
2465
  } catch (error) {
2202
- this.logger.exception(
2466
+ this.reportHandlerFailure(
2203
2467
  error,
2204
2468
  "Failed to handle permission request (processing)"
2205
2469
  );
@@ -2213,18 +2477,18 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2213
2477
  this.pendingPermissionRequests.delete(event.id);
2214
2478
  const cancelResponse = {
2215
2479
  type: "response",
2216
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2217
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2218
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2480
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2481
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2482
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2219
2483
  id: event.id,
2220
2484
  result: {
2221
2485
  selectedOption: "cancel" /* Cancel */
2222
2486
  }
2223
2487
  };
2224
2488
  try {
2225
- await this.transport.send(JSON.stringify(cancelResponse));
2489
+ await this.sendResponse(cancelResponse, hostMeta);
2226
2490
  } catch (sendError) {
2227
- this.logger.exception(
2491
+ this.reportHandlerFailure(
2228
2492
  sendError,
2229
2493
  "Failed to handle permission request (send cancellation)"
2230
2494
  );
@@ -2239,23 +2503,19 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2239
2503
  return;
2240
2504
  }
2241
2505
  }
2242
- const response = {
2506
+ const response2 = {
2243
2507
  type: "response",
2244
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2245
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2246
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2508
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2509
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2510
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2247
2511
  id: event.id,
2248
- result: {
2249
- selectedOption,
2250
- ...comment !== void 0 && { comment },
2251
- ...editedSpecContent !== void 0 && { editedSpecContent }
2252
- }
2512
+ result
2253
2513
  };
2254
2514
  this.logger.info("[DroidClient] Sending permission response back to CLI", {
2255
2515
  requestId: event.id,
2256
- result: String(selectedOption)
2516
+ result: String(result.selectedOption)
2257
2517
  });
2258
- await this.transport.send(JSON.stringify(response));
2518
+ await this.sendResponse(response2, hostMeta);
2259
2519
  }
2260
2520
  async handleAskUserRequest(event) {
2261
2521
  this.logger.info("[DroidClient] Handling ask-user request", {
@@ -2264,10 +2524,25 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2264
2524
  count: event.params.questions.length
2265
2525
  });
2266
2526
  this.emit("ask_user" /* ASK_USER */, event);
2267
- let result = { cancelled: true, answers: [] };
2268
- const handler = this.askUserHandlers.get("default");
2269
- if (handler) {
2270
- try {
2527
+ if (event.params.blocking === false && !this.askUserHandlers.has("default")) {
2528
+ this.heldQueuedAskUserRequests.push(event);
2529
+ this.logger.info(
2530
+ "[DroidClient] Holding queued ask-user request until a handler is set",
2531
+ { requestId: event.id }
2532
+ );
2533
+ return;
2534
+ }
2535
+ await this.answerAskUserRequest(event);
2536
+ }
2537
+ async answerAskUserRequest(event) {
2538
+ let hostMeta;
2539
+ const setResponseMetadata = (meta) => {
2540
+ hostMeta = meta;
2541
+ };
2542
+ let result = { cancelled: true, answers: [] };
2543
+ const handler = this.askUserHandlers.get("default");
2544
+ if (handler) {
2545
+ try {
2271
2546
  this.logger.info(
2272
2547
  "[DroidClient] Waiting for ask-user handler to resolve",
2273
2548
  {
@@ -2276,15 +2551,15 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2276
2551
  );
2277
2552
  const handlerPromise = new Promise((resolve2, reject) => {
2278
2553
  this.pendingAskUserRequests.set(event.id, { reject });
2279
- handler(event).then(resolve2).catch(reject).finally(() => {
2554
+ handler(event, setResponseMetadata).then(resolve2).catch(reject).finally(() => {
2280
2555
  this.pendingAskUserRequests.delete(event.id);
2281
2556
  });
2282
2557
  });
2283
- const parsedResult = _chunkYSKO6SPTjs.AskUserResultSchema.safeParse(
2558
+ const parsedResult = _chunkKAAWCHO4js.AskUserResultSchema.safeParse(
2284
2559
  await handlerPromise
2285
2560
  );
2286
2561
  if (!parsedResult.success) {
2287
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
2562
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
2288
2563
  "AskUser handler returned invalid result",
2289
2564
  {
2290
2565
  cause: parsedResult.error
@@ -2298,7 +2573,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2298
2573
  count: result.answers.length
2299
2574
  });
2300
2575
  } catch (error) {
2301
- this.logger.exception(error, "Failed to handle ask-user request");
2576
+ this.reportHandlerFailure(error, "Failed to handle ask-user request");
2302
2577
  const err = error instanceof Error ? error : new Error(String(error));
2303
2578
  this.emit(
2304
2579
  "session_notification" /* SESSION_NOTIFICATION */,
@@ -2307,10 +2582,20 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2307
2582
  )
2308
2583
  );
2309
2584
  this.pendingAskUserRequests.delete(event.id);
2310
- const cancelResponse = {
2311
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2312
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2313
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2585
+ const cancelResponse = event.params.blocking === false ? {
2586
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2587
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2588
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2589
+ type: "response",
2590
+ id: event.id,
2591
+ error: {
2592
+ code: -32603 /* INTERNAL_ERROR */,
2593
+ message: "The queued AskUser request could not be answered"
2594
+ }
2595
+ } : {
2596
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2597
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2598
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2314
2599
  type: "response",
2315
2600
  id: event.id,
2316
2601
  result: {
@@ -2319,9 +2604,9 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2319
2604
  }
2320
2605
  };
2321
2606
  try {
2322
- await this.transport.send(JSON.stringify(cancelResponse));
2607
+ await this.sendResponse(cancelResponse, hostMeta);
2323
2608
  } catch (sendError) {
2324
- this.logger.exception(
2609
+ this.reportHandlerFailure(
2325
2610
  sendError,
2326
2611
  "Failed to send ask-user cancellation"
2327
2612
  );
@@ -2329,11 +2614,11 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2329
2614
  return;
2330
2615
  }
2331
2616
  }
2332
- const response = {
2617
+ const response2 = {
2333
2618
  type: "response",
2334
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2335
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2336
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2619
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2620
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2621
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2337
2622
  id: event.id,
2338
2623
  result
2339
2624
  };
@@ -2341,21 +2626,127 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2341
2626
  requestId: event.id,
2342
2627
  cancelled: _nullishCoalesce(result.cancelled, () => ( false))
2343
2628
  });
2344
- await this.transport.send(JSON.stringify(response));
2629
+ await this.sendResponse(response2, hostMeta);
2630
+ }
2631
+ /**
2632
+ * Same shape as the ask-user round trip: the handler (a UI) resolves with
2633
+ * the user's selection, and any failure or missing handler answers the CLI
2634
+ * with a cancellation so its tool call never hangs. A handler that rejects
2635
+ * with {@link PickOptionsUnavailableError} is relayed as that JSON-RPC
2636
+ * error instead, which the CLI does not read as the user's cancel.
2637
+ */
2638
+ async handlePickOptionsRequest(event) {
2639
+ this.logger.info("[DroidClient] Handling pick-options request", {
2640
+ requestId: event.id,
2641
+ toolCallId: event.params.toolCallId,
2642
+ count: event.params.rows.length
2643
+ });
2644
+ let hostMeta;
2645
+ const setResponseMetadata = (meta) => {
2646
+ hostMeta = meta;
2647
+ };
2648
+ this.emit("pick_options" /* PICK_OPTIONS */, event);
2649
+ let result = { cancelled: true, selectedIds: [] };
2650
+ const handler = this.pickOptionsHandlers.get("default");
2651
+ if (handler) {
2652
+ try {
2653
+ const handlerPromise = new Promise(
2654
+ (resolve2, reject) => {
2655
+ this.pendingPickOptionsRequests.set(event.id, { reject });
2656
+ handler(event, setResponseMetadata).then(resolve2).catch(reject).finally(() => {
2657
+ this.pendingPickOptionsRequests.delete(event.id);
2658
+ });
2659
+ }
2660
+ );
2661
+ const parsedResult = _chunkKAAWCHO4js.PickOptionsResultSchema.safeParse(
2662
+ await handlerPromise
2663
+ );
2664
+ if (!parsedResult.success) {
2665
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
2666
+ "PickOptions handler returned invalid result",
2667
+ { cause: parsedResult.error }
2668
+ );
2669
+ }
2670
+ result = parsedResult.data;
2671
+ } catch (error) {
2672
+ this.pendingPickOptionsRequests.delete(event.id);
2673
+ if (error instanceof _chunkKAAWCHO4js.PickOptionsUnavailableError) {
2674
+ this.logger.info("[DroidClient] Pick-options request unavailable", {
2675
+ requestId: event.id,
2676
+ code: error.rpcError.code
2677
+ });
2678
+ const failure = {
2679
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2680
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2681
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2682
+ type: "response",
2683
+ id: event.id,
2684
+ error: error.rpcError
2685
+ };
2686
+ try {
2687
+ await this.sendResponse(failure, hostMeta);
2688
+ } catch (sendError) {
2689
+ this.reportHandlerFailure(
2690
+ sendError,
2691
+ "Failed to send pick-options failure"
2692
+ );
2693
+ }
2694
+ return;
2695
+ }
2696
+ this.reportHandlerFailure(
2697
+ error,
2698
+ "Failed to handle pick-options request"
2699
+ );
2700
+ const err = error instanceof Error ? error : new Error(String(error));
2701
+ this.emit(
2702
+ "session_notification" /* SESSION_NOTIFICATION */,
2703
+ _DroidClient.createNotificationEvent(
2704
+ _DroidClient.createErrorNotification(err)
2705
+ )
2706
+ );
2707
+ const cancelResponse = {
2708
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2709
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2710
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2711
+ type: "response",
2712
+ id: event.id,
2713
+ result: { cancelled: true, selectedIds: [] }
2714
+ };
2715
+ try {
2716
+ await this.sendResponse(cancelResponse, hostMeta);
2717
+ } catch (sendError) {
2718
+ this.reportHandlerFailure(
2719
+ sendError,
2720
+ "Failed to send pick-options cancellation"
2721
+ );
2722
+ }
2723
+ return;
2724
+ }
2725
+ }
2726
+ const response2 = {
2727
+ type: "response",
2728
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2729
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2730
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2731
+ id: event.id,
2732
+ result
2733
+ };
2734
+ await this.sendResponse(response2, hostMeta);
2345
2735
  }
2346
2736
  static getErrorType(error) {
2347
2737
  switch (error.constructor) {
2348
- case _chunkYSKO6SPTjs.ConnectionError:
2738
+ case _chunkKAAWCHO4js.ConnectionError:
2739
+ case _chunkKAAWCHO4js.DroidConnectionEndedError:
2349
2740
  return "ConnectionError" /* CONNECTION_ERROR */;
2350
- case _chunkYSKO6SPTjs.ProtocolError:
2741
+ case _chunkKAAWCHO4js.ProtocolError:
2351
2742
  return "ProtocolError" /* PROTOCOL_ERROR */;
2352
- case _chunkYSKO6SPTjs.SessionError:
2743
+ case _chunkKAAWCHO4js.SessionError:
2353
2744
  return "SessionError" /* SESSION_ERROR */;
2354
- case _chunkYSKO6SPTjs.TimeoutError:
2745
+ case _chunkKAAWCHO4js.TimeoutError:
2355
2746
  return "TimeoutError" /* TIMEOUT_ERROR */;
2356
- case _chunkYSKO6SPTjs.ProcessExitError:
2747
+ case _chunkKAAWCHO4js.ProcessExitError:
2357
2748
  return "ProcessExitError" /* PROCESS_EXIT_ERROR */;
2358
- case _chunkYSKO6SPTjs.DroidClientError:
2749
+ case _chunkKAAWCHO4js.DroidClientError:
2359
2750
  return "DroidClientError" /* DROID_CLIENT_ERROR */;
2360
2751
  default:
2361
2752
  return "Error" /* ERROR */;
@@ -2367,7 +2758,7 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2367
2758
  message: error.message,
2368
2759
  errorType: _DroidClient.getErrorType(error),
2369
2760
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
2370
- ...error instanceof _chunkYSKO6SPTjs.ProcessExitError && error.exitCode !== void 0 ? { exitCode: error.exitCode } : {},
2761
+ ...error instanceof _chunkKAAWCHO4js.ProcessExitError && error.exitCode !== void 0 ? { exitCode: error.exitCode } : {},
2371
2762
  error: {
2372
2763
  name: error.name,
2373
2764
  message: error.message
@@ -2393,20 +2784,62 @@ var DroidClient = (_class = class _DroidClient extends _events2.default {
2393
2784
  */
2394
2785
  static createNotificationEvent(notification) {
2395
2786
  return {
2396
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION2,
2787
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
2397
2788
  type: "notification",
2398
- factoryApiVersion: _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION,
2399
- factoryProtocolVersion: _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION,
2789
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
2790
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
2400
2791
  method: "droid.session_notification" /* SESSION_NOTIFICATION */,
2401
2792
  params: { notification }
2402
2793
  };
2403
2794
  }
2404
2795
  }, _class);
2405
2796
 
2797
+ // src/exec-core/message-transport.ts
2798
+ var JsonRpcCodecTransport = class {
2799
+
2800
+
2801
+ constructor(transport, logger) {
2802
+ this.transport = transport;
2803
+ this.logger = logger;
2804
+ }
2805
+ send(message) {
2806
+ return this.transport.send(JSON.stringify(message));
2807
+ }
2808
+ onMessage(handler) {
2809
+ this.transport.onMessage((frame) => {
2810
+ const message = decodeDroidMessage(frame, this.logger);
2811
+ if (message) handler(message);
2812
+ });
2813
+ }
2814
+ onError(handler) {
2815
+ this.transport.onError(handler);
2816
+ }
2817
+ close() {
2818
+ return this.transport.close();
2819
+ }
2820
+ get isConnected() {
2821
+ return this.transport.isConnected;
2822
+ }
2823
+ };
2824
+ function withJsonRpcCodec(transport, deps = defaultExecCoreDeps) {
2825
+ const { logger } = resolveExecCoreDeps(void 0, deps);
2826
+ return new JsonRpcCodecTransport(transport, logger);
2827
+ }
2828
+ function decodeDroidMessage(frame, logger) {
2829
+ try {
2830
+ return _chunkKAAWCHO4js.JsonRpcMessageSchema.parse(JSON.parse(frame));
2831
+ } catch (error) {
2832
+ logWarn(logger, "[DroidClient] Failed to handle message", {
2833
+ errorName: error instanceof Error ? error.name : typeof error,
2834
+ messageByteLength: new TextEncoder().encode(frame).byteLength
2835
+ });
2836
+ return void 0;
2837
+ }
2838
+ }
2839
+
2406
2840
  // src/exec-core/managed-process.ts
2407
2841
  var _child_process = require('child_process');
2408
2842
  var _fs = require('fs'); var fs3 = _interopRequireWildcard(_fs);
2409
- var _readline = require('readline'); var readline = _interopRequireWildcard(_readline);
2410
2843
 
2411
2844
  // src/exec-core/runtime-utils.ts
2412
2845
  var _os = require('os'); var os = _interopRequireWildcard(_os);
@@ -2571,7 +3004,7 @@ function logTransportMessage(direction, message, childPid, deps = defaultExecCor
2571
3004
  }
2572
3005
  }
2573
3006
  async function __resetTransportLoggerForTests(deps = defaultExecCoreDeps) {
2574
- const stream = _nullishCoalesce(_optionalChain([state, 'optionalAccess', _19 => _19.stream]), () => ( null));
3007
+ const stream = _nullishCoalesce(_optionalChain([state, 'optionalAccess', _29 => _29.stream]), () => ( null));
2575
3008
  state = null;
2576
3009
  enabledCache = null;
2577
3010
  if (!stream) return;
@@ -2603,16 +3036,23 @@ function describeSpawnError(error, context) {
2603
3036
  return `Failed to start Droid: ${error.message}`;
2604
3037
  }
2605
3038
  if (error.code === "ENOENT") {
2606
- if (_optionalChain([context, 'optionalAccess', _20 => _20.cwd]) && !fs3.default.existsSync(context.cwd)) {
3039
+ if (_optionalChain([context, 'optionalAccess', _30 => _30.cwd]) && !fs3.default.existsSync(context.cwd)) {
2607
3040
  return `Failed to start Droid: working directory does not exist (${context.cwd})`;
2608
3041
  }
2609
- return `Failed to start Droid: executable not found${_optionalChain([context, 'optionalAccess', _21 => _21.execPath]) ? ` (${context.execPath})` : ""}`;
3042
+ return `Failed to start Droid: executable not found${_optionalChain([context, 'optionalAccess', _31 => _31.execPath]) ? ` (${context.execPath})` : ""}`;
2610
3043
  }
2611
3044
  if (error.code === "EACCES") {
2612
- return `Failed to start Droid: permission denied${_optionalChain([context, 'optionalAccess', _22 => _22.execPath]) ? ` (${context.execPath})` : ""}`;
3045
+ return `Failed to start Droid: permission denied${_optionalChain([context, 'optionalAccess', _32 => _32.execPath]) ? ` (${context.execPath})` : ""}`;
2613
3046
  }
2614
3047
  return `Failed to start Droid: ${error.code}`;
2615
3048
  }
3049
+ function createSpawnError(error, context) {
3050
+ return new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(describeSpawnError(error, context), {
3051
+ error,
3052
+ cwd: _optionalChain([context, 'optionalAccess', _33 => _33.cwd]),
3053
+ execPath: _optionalChain([context, 'optionalAccess', _34 => _34.execPath])
3054
+ });
3055
+ }
2616
3056
  function describeExitError(code, signal) {
2617
3057
  if (signal) {
2618
3058
  return `Droid process was killed (${signal})`;
@@ -2623,7 +3063,7 @@ function describeExitError(code, signal) {
2623
3063
  return "Droid process exited unexpectedly";
2624
3064
  }
2625
3065
  var ManagedProcessImpl = (_class2 = class {
2626
- constructor(childProcess, logPrefix, spawnContext, deps, transportLoggerDeps = deps) {;_class2.prototype.__init9.call(this);_class2.prototype.__init10.call(this);_class2.prototype.__init11.call(this);_class2.prototype.__init12.call(this);_class2.prototype.__init13.call(this);_class2.prototype.__init14.call(this);_class2.prototype.__init15.call(this);_class2.prototype.__init16.call(this);
3066
+ constructor(childProcess, logPrefix, spawnContext, deps, transportLoggerDeps = deps) {;_class2.prototype.__init14.call(this);_class2.prototype.__init15.call(this);_class2.prototype.__init16.call(this);_class2.prototype.__init17.call(this);_class2.prototype.__init18.call(this);_class2.prototype.__init19.call(this);_class2.prototype.__init20.call(this);_class2.prototype.__init21.call(this);_class2.prototype.__init22.call(this);
2627
3067
  this.logPrefix = logPrefix;
2628
3068
  this.spawnContext = spawnContext;
2629
3069
  this.transportLoggerDeps = transportLoggerDeps;
@@ -2635,75 +3075,84 @@ var ManagedProcessImpl = (_class2 = class {
2635
3075
 
2636
3076
 
2637
3077
 
2638
- __init9() {this.messageHandler = null}
2639
- __init10() {this.errorHandler = null}
2640
- __init11() {this.readlineInterface = null}
2641
- __init12() {this.isClosing = false}
3078
+ __init14() {this.messageHandler = null}
3079
+ __init15() {this.errorHandler = null}
3080
+ __init16() {this.stdoutDecoder = new (0, _chunkKAAWCHO4js.LfLineDecoder)()}
3081
+ __init17() {this.stdoutDataHandler = (chunk) => {
3082
+ const text = typeof chunk === "string" ? chunk : chunk.toString("utf8");
3083
+ for (const line of this.stdoutDecoder.push(text)) {
3084
+ this.handleStdoutLine(line);
3085
+ }
3086
+ }}
3087
+ __init18() {this.isClosing = false}
2642
3088
  /** Latch so exit teardown/classification runs exactly once per process. */
2643
- __init13() {this.exitFinalized = false}
2644
- __init14() {this.exitDrainTimer = null}
3089
+ __init19() {this.exitFinalized = false}
3090
+ __init20() {this.exitDrainTimer = null}
2645
3091
  /**
2646
3092
  * Sticky error from a process error or unexpected exit event. Once set,
2647
3093
  * all subsequent `send()` calls throw this error immediately instead of
2648
3094
  * hanging on a dead transport.
2649
3095
  */
2650
- __init15() {this.processError = null}
2651
- __init16() {this.queuedSendPromise = Promise.resolve()}
3096
+ __init21() {this.processError = null}
3097
+ __init22() {this.queuedSendPromise = Promise.resolve()}
2652
3098
 
2653
3099
  get childProcess() {
2654
3100
  if (!this._childProcess) {
2655
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Process not connected");
3101
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Process not connected");
2656
3102
  }
2657
3103
  return this._childProcess;
2658
3104
  }
3105
+ /** Wait for the runtime's spawn result without replacing the transport's error handler. */
3106
+ waitForSpawn() {
3107
+ const child = this.childProcess;
3108
+ return new Promise((resolve2, reject) => {
3109
+ const onSpawn = () => {
3110
+ child.off("error", onError);
3111
+ resolve2();
3112
+ };
3113
+ const onError = () => {
3114
+ child.off("spawn", onSpawn);
3115
+ reject(this.processError);
3116
+ };
3117
+ child.once("spawn", onSpawn);
3118
+ child.once("error", onError);
3119
+ });
3120
+ }
2659
3121
  setupHandlers() {
2660
3122
  if (!this.childProcess.stdout) {
2661
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Failed to get process stdout");
3123
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Failed to get process stdout");
2662
3124
  }
2663
- this.readlineInterface = readline.createInterface({
2664
- input: this.childProcess.stdout,
2665
- crlfDelay: Infinity
2666
- });
2667
- this.readlineInterface.on("line", (line) => {
2668
- const trimmedLine = line.trim();
2669
- if (this.messageHandler && trimmedLine) {
2670
- if (trimmedLine.startsWith("{") || trimmedLine.startsWith("[")) {
2671
- logTransportMessage(
2672
- "in" /* In */,
2673
- trimmedLine,
2674
- _optionalChain([this, 'access', _23 => _23._childProcess, 'optionalAccess', _24 => _24.pid]),
2675
- this.transportLoggerDeps
2676
- );
2677
- this.messageHandler(trimmedLine);
2678
- } else {
2679
- const truncated = trimmedLine.length > MAX_NON_JSON_LOG_LENGTH ? trimmedLine.substring(0, MAX_NON_JSON_LOG_LENGTH) : trimmedLine;
2680
- this.logger.warn("[droid process] non-JSON output", {
2681
- state: this.logPrefix,
2682
- output: truncated
2683
- });
2684
- }
3125
+ this.childProcess.stdout.setEncoding("utf8");
3126
+ this.childProcess.stdout.on("data", this.stdoutDataHandler);
3127
+ this.childProcess.on("error", (error) => {
3128
+ if (this.processError || this.isClosing || this.exitFinalized) {
3129
+ return;
2685
3130
  }
3131
+ this.processError = createSpawnError(error, this.spawnContext);
3132
+ _optionalChain([this, 'access', _35 => _35.errorHandler, 'optionalCall', _36 => _36(this.processError)]);
2686
3133
  });
2687
- this.childProcess.on("error", (error) => {
2688
- this.processError = new (0, _chunkYSKO6SPTjs.ConnectionError)(
2689
- describeSpawnError(error, this.spawnContext),
3134
+ _optionalChain([this, 'access', _37 => _37.childProcess, 'access', _38 => _38.stdin, 'optionalAccess', _39 => _39.on, 'call', _40 => _40("error", (error) => {
3135
+ if (this.processError || this.isClosing || this.exitFinalized) {
3136
+ return;
3137
+ }
3138
+ this.processError = new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(
3139
+ "Process stdin failed",
2690
3140
  {
2691
- error,
2692
- cwd: _optionalChain([this, 'access', _25 => _25.spawnContext, 'optionalAccess', _26 => _26.cwd]),
2693
- execPath: _optionalChain([this, 'access', _27 => _27.spawnContext, 'optionalAccess', _28 => _28.execPath])
3141
+ error
2694
3142
  }
2695
3143
  );
2696
- if (!this.isClosing && this.errorHandler) {
2697
- this.errorHandler(this.processError);
2698
- }
2699
- });
3144
+ _optionalChain([this, 'access', _41 => _41.errorHandler, 'optionalCall', _42 => _42(this.processError)]);
3145
+ })]);
2700
3146
  this.childProcess.on("exit", (code, signal) => {
2701
3147
  this.exitDrainTimer = setTimeout(() => {
2702
3148
  this.finalizeExit(code, signal);
2703
3149
  }, EXIT_STDIO_DRAIN_TIMEOUT_MS);
2704
- _optionalChain([this, 'access', _29 => _29.exitDrainTimer, 'access', _30 => _30.unref, 'optionalCall', _31 => _31()]);
3150
+ _optionalChain([this, 'access', _43 => _43.exitDrainTimer, 'access', _44 => _44.unref, 'optionalCall', _45 => _45()]);
2705
3151
  });
2706
3152
  this.childProcess.on("close", (code, signal) => {
3153
+ for (const line of this.stdoutDecoder.finish()) {
3154
+ this.handleStdoutLine(line);
3155
+ }
2707
3156
  this.finalizeExit(code, signal);
2708
3157
  });
2709
3158
  if (this.childProcess.stderr) {
@@ -2715,6 +3164,27 @@ var ManagedProcessImpl = (_class2 = class {
2715
3164
  });
2716
3165
  }
2717
3166
  }
3167
+ handleStdoutLine(line) {
3168
+ const trimmedLine = line.trim();
3169
+ if (!this.messageHandler || !trimmedLine) {
3170
+ return;
3171
+ }
3172
+ if (trimmedLine.startsWith("{") || trimmedLine.startsWith("[")) {
3173
+ logTransportMessage(
3174
+ "in" /* In */,
3175
+ trimmedLine,
3176
+ _optionalChain([this, 'access', _46 => _46._childProcess, 'optionalAccess', _47 => _47.pid]),
3177
+ this.transportLoggerDeps
3178
+ );
3179
+ this.messageHandler(trimmedLine);
3180
+ return;
3181
+ }
3182
+ const truncated = trimmedLine.length > MAX_NON_JSON_LOG_LENGTH ? trimmedLine.substring(0, MAX_NON_JSON_LOG_LENGTH) : trimmedLine;
3183
+ this.logger.warn("[droid process] non-JSON output", {
3184
+ state: this.logPrefix,
3185
+ output: truncated
3186
+ });
3187
+ }
2718
3188
  finalizeExit(code, signal) {
2719
3189
  if (this.exitFinalized) {
2720
3190
  return;
@@ -2724,13 +3194,11 @@ var ManagedProcessImpl = (_class2 = class {
2724
3194
  clearTimeout(this.exitDrainTimer);
2725
3195
  this.exitDrainTimer = null;
2726
3196
  }
3197
+ _optionalChain([this, 'access', _48 => _48._childProcess, 'optionalAccess', _49 => _49.stdout, 'optionalAccess', _50 => _50.off, 'call', _51 => _51("data", this.stdoutDataHandler)]);
2727
3198
  this._childProcess = null;
2728
- if (this.readlineInterface) {
2729
- this.readlineInterface.close();
2730
- this.readlineInterface = null;
2731
- }
2732
- if (!this.isClosing) {
2733
- this.processError = new (0, _chunkYSKO6SPTjs.ProcessExitError)(
3199
+ this.stdoutDecoder.reset();
3200
+ if (!this.isClosing && !this.processError) {
3201
+ this.processError = new (0, _chunkKAAWCHO4js.ProcessExitError)(
2734
3202
  describeExitError(code, signal),
2735
3203
  {
2736
3204
  exitCode: _nullishCoalesce(code, () => ( void 0)),
@@ -2747,28 +3215,32 @@ var ManagedProcessImpl = (_class2 = class {
2747
3215
  throw this.processError;
2748
3216
  }
2749
3217
  if (!this._childProcess || !this._childProcess.stdin) {
2750
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Process not connected");
3218
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Process not connected");
2751
3219
  }
2752
3220
  const previousSends = this.queuedSendPromise;
2753
3221
  this.queuedSendPromise = (async () => {
2754
3222
  await previousSends.catch(() => {
2755
3223
  });
2756
3224
  if (!this._childProcess || !this._childProcess.stdin || this._childProcess.killed || this.isClosing) {
2757
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Process disconnected before write");
3225
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(
3226
+ "Process disconnected before write"
3227
+ );
2758
3228
  }
2759
3229
  await new Promise((resolve2, reject) => {
2760
3230
  try {
2761
3231
  if (!this._childProcess || !this._childProcess.stdin) {
2762
- reject(new (0, _chunkYSKO6SPTjs.ConnectionError)("Process stdin unavailable"));
3232
+ reject(new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Process stdin unavailable"));
2763
3233
  return;
2764
3234
  }
2765
3235
  const stdin = this._childProcess.stdin;
2766
3236
  if ("writable" in stdin && !stdin.writable) {
2767
- reject(new (0, _chunkYSKO6SPTjs.ConnectionError)("Process stdin is not writable"));
3237
+ reject(
3238
+ new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Process stdin is not writable")
3239
+ );
2768
3240
  return;
2769
3241
  }
2770
- const childPid = _optionalChain([this, 'access', _32 => _32._childProcess, 'optionalAccess', _33 => _33.pid]);
2771
- stdin.write(`${message}
3242
+ const childPid = _optionalChain([this, 'access', _52 => _52._childProcess, 'optionalAccess', _53 => _53.pid]);
3243
+ stdin.write(`${_chunkKAAWCHO4js.escapeJsonLineSeparators.call(void 0, message)}
2772
3244
  `, (error) => {
2773
3245
  if (error) {
2774
3246
  logTransportMessage(
@@ -2780,15 +3252,21 @@ var ManagedProcessImpl = (_class2 = class {
2780
3252
  const errorMessage = error.message || String(error);
2781
3253
  if (errorMessage.includes("EPIPE") || errorMessage.includes("ECONNRESET")) {
2782
3254
  reject(
2783
- new (0, _chunkYSKO6SPTjs.ConnectionError)("Process stdin closed during write", {
2784
- error
2785
- })
3255
+ new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(
3256
+ "Process stdin closed during write",
3257
+ {
3258
+ error
3259
+ }
3260
+ )
2786
3261
  );
2787
3262
  } else {
2788
3263
  reject(
2789
- new (0, _chunkYSKO6SPTjs.ConnectionError)("Failed to write to process stdin", {
2790
- error
2791
- })
3264
+ new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(
3265
+ "Failed to write to process stdin",
3266
+ {
3267
+ error
3268
+ }
3269
+ )
2792
3270
  );
2793
3271
  }
2794
3272
  } else {
@@ -2810,7 +3288,7 @@ var ManagedProcessImpl = (_class2 = class {
2810
3288
  }
2811
3289
  );
2812
3290
  reject(
2813
- new (0, _chunkYSKO6SPTjs.ConnectionError)("Error writing to process stdin", {
3291
+ new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Error writing to process stdin", {
2814
3292
  error: error instanceof Error ? error : new Error(String(error))
2815
3293
  })
2816
3294
  );
@@ -2858,11 +3336,9 @@ var ManagedProcessImpl = (_class2 = class {
2858
3336
  }
2859
3337
  });
2860
3338
  }
3339
+ _optionalChain([processToClose, 'access', _54 => _54.stdout, 'optionalAccess', _55 => _55.off, 'call', _56 => _56("data", this.stdoutDataHandler)]);
2861
3340
  }
2862
- if (this.readlineInterface) {
2863
- this.readlineInterface.close();
2864
- this.readlineInterface = null;
2865
- }
3341
+ this.stdoutDecoder.reset();
2866
3342
  this.exitFinalized = true;
2867
3343
  if (this.exitDrainTimer) {
2868
3344
  clearTimeout(this.exitDrainTimer);
@@ -2933,11 +3409,11 @@ function observeEarlySpawnFailure(childProcess, gracePeriodMs, sleep) {
2933
3409
  const errorListener = (err) => {
2934
3410
  observation.error = err;
2935
3411
  };
2936
- _optionalChain([childProcess, 'access', _34 => _34.stderr, 'optionalAccess', _35 => _35.on, 'call', _36 => _36("data", stderrListener)]);
3412
+ _optionalChain([childProcess, 'access', _57 => _57.stderr, 'optionalAccess', _58 => _58.on, 'call', _59 => _59("data", stderrListener)]);
2937
3413
  childProcess.once("exit", exitListener);
2938
3414
  childProcess.once("error", errorListener);
2939
3415
  const cleanup = () => {
2940
- _optionalChain([childProcess, 'access', _37 => _37.stderr, 'optionalAccess', _38 => _38.off, 'call', _39 => _39("data", stderrListener)]);
3416
+ _optionalChain([childProcess, 'access', _60 => _60.stderr, 'optionalAccess', _61 => _61.off, 'call', _62 => _62("data", stderrListener)]);
2941
3417
  childProcess.off("exit", exitListener);
2942
3418
  childProcess.off("error", errorListener);
2943
3419
  };
@@ -2969,10 +3445,8 @@ async function spawnWithWindowsJobObjectRetry(spawnFactory, options = {}) {
2969
3445
  const sleep = _nullishCoalesce(options.sleep, () => ( defaultSleep));
2970
3446
  const logPrefix = _nullishCoalesce(options.logPrefix, () => ( "[spawnWithWindowsJobObjectRetry]"));
2971
3447
  const logger = _nullishCoalesce(options.logger, () => ( noopLogger));
2972
- let lastChild = null;
2973
- for (let attempt = 0; attempt <= maxRetries; attempt++) {
3448
+ for (let attempt = 0; ; attempt++) {
2974
3449
  const child = spawnFactory();
2975
- lastChild = child;
2976
3450
  const observation = await observeEarlySpawnFailure(
2977
3451
  child,
2978
3452
  gracePeriodMs,
@@ -2982,8 +3456,28 @@ async function spawnWithWindowsJobObjectRetry(spawnFactory, options = {}) {
2982
3456
  return child;
2983
3457
  }
2984
3458
  const isRetryableJobObjectFailure = observation.stderr.includes(WINDOWS_JOB_OBJECT_ERROR_MARKER) || observation.exited && observation.code !== 0 && !observation.error;
2985
- if (attempt === maxRetries || !isRetryableJobObjectFailure) {
2986
- return child;
3459
+ try {
3460
+ await _optionalChain([options, 'access', _63 => _63.disposeEarlyExited, 'optionalCall', _64 => _64(child)]);
3461
+ } catch (disposeErr) {
3462
+ logWarn(logger, "spawnWithWindowsJobObjectRetry: dispose error", {
3463
+ cause: disposeErr instanceof Error ? disposeErr : new Error(String(disposeErr)),
3464
+ name: logPrefix
3465
+ });
3466
+ }
3467
+ if (attempt >= maxRetries || !isRetryableJobObjectFailure) {
3468
+ if (observation.error) {
3469
+ throw createSpawnError(observation.error, options);
3470
+ }
3471
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)(
3472
+ "Droid process exited during startup",
3473
+ {
3474
+ cwd: options.cwd,
3475
+ execPath: options.execPath,
3476
+ exitCode: observation.code,
3477
+ signal: observation.signal,
3478
+ stderrTail: observation.stderr.slice(-256)
3479
+ }
3480
+ );
2987
3481
  }
2988
3482
  logger.warn("spawnWithWindowsJobObjectRetry: retrying on early failure", {
2989
3483
  name: logPrefix,
@@ -2993,24 +3487,19 @@ async function spawnWithWindowsJobObjectRetry(spawnFactory, options = {}) {
2993
3487
  signal: observation.signal,
2994
3488
  stderrTail: observation.stderr.slice(-256)
2995
3489
  });
2996
- try {
2997
- await _optionalChain([options, 'access', _40 => _40.disposeEarlyExited, 'optionalCall', _41 => _41(child)]);
2998
- } catch (disposeErr) {
2999
- logWarn(logger, "spawnWithWindowsJobObjectRetry: dispose error", {
3000
- cause: disposeErr instanceof Error ? disposeErr : new Error(String(disposeErr)),
3001
- name: logPrefix
3002
- });
3003
- }
3004
3490
  await sleep(_nullishCoalesce(_nullishCoalesce(backoff[attempt], () => ( backoff[backoff.length - 1])), () => ( 400)));
3005
3491
  }
3006
- if (lastChild) return lastChild;
3007
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
3008
- "spawnWithWindowsJobObjectRetry: exhausted retries without child",
3009
- {}
3010
- );
3011
3492
  }
3012
3493
 
3013
3494
  // src/exec-core/process-manager.ts
3495
+ var NATIVE_PROCESS_LIFECYCLE_MESSAGE = "[droid process] native lifecycle";
3496
+ var MAX_SPAWN_ERROR_CODE_LENGTH = 64;
3497
+ function getSpawnErrorCode(error) {
3498
+ if (typeof error !== "object" || error === null || !("code" in error) || typeof error.code !== "string" && typeof error.code !== "number") {
3499
+ return void 0;
3500
+ }
3501
+ return String(error.code).slice(0, MAX_SPAWN_ERROR_CODE_LENGTH);
3502
+ }
3014
3503
  function buildArgs(config) {
3015
3504
  const args = [];
3016
3505
  if (config.mode === "acp" /* Acp */) {
@@ -3029,6 +3518,13 @@ function buildArgs(config) {
3029
3518
  }
3030
3519
  return args;
3031
3520
  }
3521
+ function ensureIpcStdio(stdio) {
3522
+ if (Array.isArray(stdio)) {
3523
+ return stdio.includes("ipc") ? stdio : [...stdio, "ipc"];
3524
+ }
3525
+ const standardChannel = _nullishCoalesce(stdio, () => ( "pipe"));
3526
+ return [standardChannel, standardChannel, standardChannel, "ipc"];
3527
+ }
3032
3528
  var DroidProcessManager = class {
3033
3529
 
3034
3530
 
@@ -3080,11 +3576,13 @@ var DroidProcessManager = class {
3080
3576
  () => this.invokeNodeSpawn(planned),
3081
3577
  {
3082
3578
  ...retryOptions,
3579
+ cwd: planned.expandedCwd,
3580
+ execPath: planned.execPath,
3083
3581
  logPrefix: "[DroidProcessManager]",
3084
3582
  logger: this.logger,
3085
3583
  disposeEarlyExited: (child) => {
3086
3584
  try {
3087
- _optionalChain([child, 'access', _42 => _42.stdin, 'optionalAccess', _43 => _43.end, 'call', _44 => _44()]);
3585
+ _optionalChain([child, 'access', _65 => _65.stdin, 'optionalAccess', _66 => _66.end, 'call', _67 => _67()]);
3088
3586
  } catch (stdinErr) {
3089
3587
  logWarn(
3090
3588
  this.logger,
@@ -3109,7 +3607,8 @@ var DroidProcessManager = class {
3109
3607
  }
3110
3608
  );
3111
3609
  if (!childProcess.stdout || !childProcess.stdin) {
3112
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Failed to get process stdio");
3610
+ childProcess.kill();
3611
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Failed to get process stdio");
3113
3612
  }
3114
3613
  return new ManagedProcessImpl(
3115
3614
  childProcess,
@@ -3155,21 +3654,88 @@ var DroidProcessManager = class {
3155
3654
  };
3156
3655
  }
3157
3656
  invokeNodeSpawn(planned) {
3657
+ const stdio = planned.enableIpc ? ensureIpcStdio(planned.stdio) : _nullishCoalesce(planned.stdio, () => ( ["pipe", "pipe", "pipe"]));
3158
3658
  const options = {
3159
3659
  cwd: planned.expandedCwd,
3160
3660
  env: planned.env,
3161
- stdio: _nullishCoalesce(planned.stdio, () => ( (planned.enableIpc ? ["pipe", "pipe", "pipe", "ipc"] : ["pipe", "pipe", "pipe"])))
3661
+ stdio
3162
3662
  };
3163
3663
  if (planned.enableIpc) {
3164
3664
  options.serialization = "json";
3165
3665
  }
3166
- return _child_process.spawn.call(void 0, planned.execPath, planned.args, options);
3666
+ const spawnedAt = Date.now();
3667
+ let childProcess;
3668
+ try {
3669
+ childProcess = _child_process.spawn.call(void 0, planned.execPath, planned.args, options);
3670
+ } catch (error) {
3671
+ const failedAt = Date.now();
3672
+ this.logNativeProcessLifecycle({
3673
+ state: "spawn_error",
3674
+ pid: null,
3675
+ createdAt: spawnedAt,
3676
+ eventDate: new Date(failedAt).toISOString(),
3677
+ durationMs: failedAt - spawnedAt,
3678
+ errnoCode: getSpawnErrorCode(error)
3679
+ });
3680
+ throw error;
3681
+ }
3682
+ const pid = childProcess.pid;
3683
+ if (pid === void 0) {
3684
+ childProcess.once("error", (error) => {
3685
+ const failedAt = Date.now();
3686
+ this.logNativeProcessLifecycle({
3687
+ state: "spawn_error",
3688
+ pid: null,
3689
+ createdAt: spawnedAt,
3690
+ eventDate: new Date(failedAt).toISOString(),
3691
+ durationMs: failedAt - spawnedAt,
3692
+ errnoCode: getSpawnErrorCode(error)
3693
+ });
3694
+ });
3695
+ } else {
3696
+ childProcess.once("exit", (exitCode, signal) => {
3697
+ const exitedAt = Date.now();
3698
+ this.logNativeProcessLifecycle({
3699
+ state: "exited",
3700
+ pid,
3701
+ createdAt: spawnedAt,
3702
+ eventDate: new Date(exitedAt).toISOString(),
3703
+ durationMs: exitedAt - spawnedAt,
3704
+ exitCode,
3705
+ signal
3706
+ });
3707
+ });
3708
+ this.logNativeProcessLifecycle({
3709
+ state: "spawned",
3710
+ pid,
3711
+ createdAt: spawnedAt,
3712
+ eventDate: new Date(spawnedAt).toISOString()
3713
+ });
3714
+ }
3715
+ return childProcess;
3716
+ }
3717
+ /**
3718
+ * Emits the content-free native process record consumed by lifecycle
3719
+ * measurement harnesses. `createdAt` is the wall-clock lower bound captured
3720
+ * immediately before spawn; `eventDate` is the wall-clock observation time.
3721
+ */
3722
+ logNativeProcessLifecycle(record) {
3723
+ try {
3724
+ this.logger.info(NATIVE_PROCESS_LIFECYCLE_MESSAGE, record);
3725
+ } catch (loggingError) {
3726
+ void loggingError;
3727
+ logWarn(
3728
+ defaultExecCoreDeps.logger,
3729
+ "[droid process] native lifecycle logger failed"
3730
+ );
3731
+ }
3167
3732
  }
3168
3733
  spawnChildProcess(config) {
3169
3734
  const planned = this.prepareSpawn(config);
3170
3735
  const childProcess = this.invokeNodeSpawn(planned);
3171
3736
  if (!childProcess.stdout || !childProcess.stdin) {
3172
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Failed to get process stdio");
3737
+ childProcess.kill();
3738
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Failed to get process stdio");
3173
3739
  }
3174
3740
  return {
3175
3741
  logPrefix: planned.logPrefix,
@@ -3182,17 +3748,25 @@ var DroidProcessManager = class {
3182
3748
 
3183
3749
  // src/exec-core/process-transport.ts
3184
3750
  var ProcessTransport = (_class3 = class {
3185
- __init17() {this.managedProcess = null}
3751
+ __init23() {this.managedProcess = null}
3186
3752
 
3187
3753
 
3188
3754
  // Store handlers that may be registered before connect() is called
3189
- __init18() {this.messageHandler = null}
3190
- __init19() {this.errorHandler = null}
3755
+ __init24() {this.messageHandler = null}
3756
+
3757
+ __init25() {this.handleMessage = (frame) => {
3758
+ const message = decodeDroidMessage(frame, this.logger);
3759
+ if (message) _optionalChain([this, 'access', _70 => _70.messageHandler, 'optionalCall', _71 => _71(message)]);
3760
+ }}
3761
+ __init26() {this.errorHandler = null}
3191
3762
 
3192
- constructor(options = {}, deps = defaultExecCoreDeps) {;_class3.prototype.__init17.call(this);_class3.prototype.__init18.call(this);_class3.prototype.__init19.call(this);
3763
+
3764
+ constructor(options = {}, deps = defaultExecCoreDeps) {;_class3.prototype.__init23.call(this);_class3.prototype.__init24.call(this);_class3.prototype.__init25.call(this);_class3.prototype.__init26.call(this);
3193
3765
  this.options = options;
3194
3766
  const resolved = resolveExecCoreDeps(options.observability, deps);
3767
+ this.logger = resolved.logger;
3195
3768
  this.metrics = resolved.metrics;
3769
+ this.environmentResolver = resolved.environmentResolver;
3196
3770
  this.processManager = new DroidProcessManager(
3197
3771
  {
3198
3772
  observability: options.observability
@@ -3202,7 +3776,7 @@ var ProcessTransport = (_class3 = class {
3202
3776
  }
3203
3777
  async connect() {
3204
3778
  if (this.managedProcess && this.managedProcess.isConnected) {
3205
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Transport already connected");
3779
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)("Transport already connected");
3206
3780
  }
3207
3781
  const config = {
3208
3782
  execPath: this.options.droidExecPath,
@@ -3210,14 +3784,36 @@ var ProcessTransport = (_class3 = class {
3210
3784
  mode: "stream-jsonrpc" /* StreamJsonRpc */,
3211
3785
  cwd: this.options.cwd,
3212
3786
  env: this.options.env,
3787
+ trustedEnv: {
3788
+ ...this.options.runtimeSettingsAuthority ? this.environmentResolver.buildRuntimeSettingsAuthorityEnv(
3789
+ this.options.runtimeSettingsAuthority
3790
+ ) : {},
3791
+ ...this.options.trustedEnv
3792
+ },
3213
3793
  extraArgs: this.options.droidExecExtraArgs,
3214
- enableIpc: this.options.enableIpc
3794
+ enableIpc: this.options.enableIpc,
3795
+ stdio: this.options.stdio
3215
3796
  };
3216
3797
  const spawnStart = performance.now();
3217
3798
  let spawnOutcome = "error";
3799
+ let managedProcess;
3218
3800
  try {
3219
- this.managedProcess = process.platform === "win32" ? await this.processManager.spawnWithWindowsRetry(config) : this.processManager.spawn(config);
3801
+ if (process.platform === "win32") {
3802
+ managedProcess = await this.processManager.spawnWithWindowsRetry(config);
3803
+ } else {
3804
+ const spawned = this.processManager.spawn(config);
3805
+ managedProcess = spawned;
3806
+ if (spawned.childProcess.pid === void 0) {
3807
+ await spawned.waitForSpawn();
3808
+ }
3809
+ }
3220
3810
  spawnOutcome = "success";
3811
+ } catch (error) {
3812
+ await _optionalChain([managedProcess, 'optionalAccess', _72 => _72.close, 'call', _73 => _73()]);
3813
+ if (error instanceof _chunkKAAWCHO4js.DroidConnectionEndedError) {
3814
+ _optionalChain([this, 'access', _74 => _74.errorHandler, 'optionalCall', _75 => _75(error)]);
3815
+ }
3816
+ throw error;
3221
3817
  } finally {
3222
3818
  this.metrics.recordDuration(
3223
3819
  CLI_JSONRPC_CHILD_SPAWN_LATENCY_METRIC,
@@ -3225,8 +3821,15 @@ var ProcessTransport = (_class3 = class {
3225
3821
  { outcome: spawnOutcome, source: "process_transport" }
3226
3822
  );
3227
3823
  }
3824
+ try {
3825
+ _optionalChain([this, 'access', _76 => _76.options, 'access', _77 => _77.onSpawned, 'optionalCall', _78 => _78(managedProcess.childProcess)]);
3826
+ } catch (error) {
3827
+ await managedProcess.close();
3828
+ throw error;
3829
+ }
3830
+ this.managedProcess = managedProcess;
3228
3831
  if (this.messageHandler) {
3229
- this.managedProcess.onMessage(this.messageHandler);
3832
+ this.managedProcess.onMessage(this.handleMessage);
3230
3833
  }
3231
3834
  if (this.errorHandler) {
3232
3835
  this.managedProcess.onError(this.errorHandler);
@@ -3234,14 +3837,14 @@ var ProcessTransport = (_class3 = class {
3234
3837
  }
3235
3838
  async send(message) {
3236
3839
  if (!this.managedProcess) {
3237
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)("Transport not connected");
3840
+ throw new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Transport not connected");
3238
3841
  }
3239
- return this.managedProcess.send(message);
3842
+ return await this.managedProcess.send(JSON.stringify(message));
3240
3843
  }
3241
3844
  onMessage(handler) {
3242
3845
  this.messageHandler = handler;
3243
3846
  if (this.managedProcess) {
3244
- this.managedProcess.onMessage(handler);
3847
+ this.managedProcess.onMessage(this.handleMessage);
3245
3848
  }
3246
3849
  }
3247
3850
  onError(handler) {
@@ -3257,18 +3860,192 @@ var ProcessTransport = (_class3 = class {
3257
3860
  }
3258
3861
  }
3259
3862
  get isConnected() {
3260
- return _nullishCoalesce(_optionalChain([this, 'access', _45 => _45.managedProcess, 'optionalAccess', _46 => _46.isConnected]), () => ( false));
3863
+ return _nullishCoalesce(_optionalChain([this, 'access', _79 => _79.managedProcess, 'optionalAccess', _80 => _80.isConnected]), () => ( false));
3261
3864
  }
3262
3865
  getManagedProcess() {
3263
3866
  return this.managedProcess;
3264
3867
  }
3265
3868
  }, _class3);
3266
3869
 
3870
+ // src/environment-session.ts
3871
+
3872
+
3873
+ // src/environment-launch/index.ts
3874
+
3875
+
3876
+ // src/environment-launch/errors.ts
3877
+ var EnvironmentLaunchError = class extends Error {
3878
+
3879
+
3880
+
3881
+ constructor(options) {
3882
+ super(
3883
+ options.cause instanceof Error ? options.cause.message : "Environment session startup failed",
3884
+ { cause: options.cause }
3885
+ );
3886
+ this.name = "EnvironmentLaunchError";
3887
+ this.computerId = options.computerId;
3888
+ this.computerName = options.computerName;
3889
+ this.cleanupError = options.cleanupError;
3890
+ }
3891
+ };
3892
+
3893
+ // src/environment-launch/index.ts
3894
+ async function launchEnvironmentSession(options) {
3895
+ const timeoutMs = _nullishCoalesce(options.timeoutMs, () => ( 18e4));
3896
+ const pollIntervalMs = _nullishCoalesce(options.pollIntervalMs, () => ( 1e3));
3897
+ const controller = new AbortController();
3898
+ const cancel = () => controller.abort(_optionalChain([options, 'access', _81 => _81.signal, 'optionalAccess', _82 => _82.reason]));
3899
+ if (_optionalChain([options, 'access', _83 => _83.signal, 'optionalAccess', _84 => _84.aborted])) cancel();
3900
+ else _optionalChain([options, 'access', _85 => _85.signal, 'optionalAccess', _86 => _86.addEventListener, 'call', _87 => _87("abort", cancel, { once: true })]);
3901
+ const timer = setTimeout(
3902
+ () => controller.abort(new (0, _chunkKAAWCHO4js.EnvironmentComputerTimeoutError)()),
3903
+ timeoutMs
3904
+ );
3905
+ const signal = controller.signal;
3906
+ let createdComputerId;
3907
+ let computerName;
3908
+ function launchError(cause, cleanupError) {
3909
+ return new EnvironmentLaunchError({
3910
+ cause,
3911
+ computerId: createdComputerId,
3912
+ computerName,
3913
+ cleanupError
3914
+ });
3915
+ }
3916
+ try {
3917
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0 || !Number.isFinite(pollIntervalMs) || pollIntervalMs <= 0)
3918
+ throw new Error("Invalid environment launch configuration");
3919
+ const selection = await _chunkKAAWCHO4js.runWithAbort.call(void 0,
3920
+ signal,
3921
+ async () => await resolveEnvironment({ ...options, signal })
3922
+ );
3923
+ computerName = `environment-${_uuid.v4.call(void 0, )}`;
3924
+ signal.throwIfAborted();
3925
+ const createPromise = _chunkKAAWCHO4js.createOrRecoverComputer.call(void 0, {
3926
+ name: computerName,
3927
+ environmentId: selection.environment.id,
3928
+ keepWhenIdle: options.keepWhenIdle,
3929
+ request: options.request,
3930
+ serviceAccountId: options.serviceAccountId,
3931
+ signal: AbortSignal.timeout(timeoutMs)
3932
+ });
3933
+ const allocated = await _chunkKAAWCHO4js.runWithAbort.call(void 0, signal, async () => await createPromise).catch(
3934
+ (cause) => {
3935
+ if (signal.aborted && createdComputerId === void 0)
3936
+ void createPromise.then(
3937
+ (computer2) => _chunkKAAWCHO4js.createFactoryApi.call(void 0, options.request).deleteComputer({
3938
+ computerId: computer2.id,
3939
+ signal: AbortSignal.timeout(Math.min(timeoutMs, 5e3))
3940
+ })
3941
+ ).catch(() => {
3942
+ });
3943
+ throw cause;
3944
+ }
3945
+ );
3946
+ createdComputerId = allocated.id;
3947
+ await _chunkKAAWCHO4js.runWithAbort.call(void 0, signal, async () => await _optionalChain([options, 'access', _88 => _88.onComputer, 'optionalCall', _89 => _89(allocated)]));
3948
+ const computer = await _chunkKAAWCHO4js.waitForEnvironmentComputer.call(void 0, {
3949
+ computer: allocated,
3950
+ timeoutMs,
3951
+ pollIntervalMs,
3952
+ now: options.now,
3953
+ sleep: options.sleep,
3954
+ signal,
3955
+ isReady: _chunkKAAWCHO4js.isEnvironmentComputerReady,
3956
+ onComputer: options.onComputer,
3957
+ request: options.request,
3958
+ serviceAccountId: options.serviceAccountId
3959
+ });
3960
+ const connection = await _chunkKAAWCHO4js.runWithAbort.call(void 0,
3961
+ signal,
3962
+ async () => await options.connect({ computer, signal })
3963
+ );
3964
+ const session = await _chunkKAAWCHO4js.runWithAbort.call(void 0,
3965
+ signal,
3966
+ async () => await options.startSession({ connection, computer, selection, signal })
3967
+ );
3968
+ return { session, computer, selection };
3969
+ } catch (cause) {
3970
+ if (createdComputerId !== void 0) {
3971
+ const cleanup = new AbortController();
3972
+ const cleanupTimer = setTimeout(
3973
+ () => cleanup.abort(new (0, _chunkKAAWCHO4js.EnvironmentComputerTimeoutError)()),
3974
+ Math.min(timeoutMs, 5e3)
3975
+ );
3976
+ try {
3977
+ const computerId = createdComputerId;
3978
+ await _chunkKAAWCHO4js.runWithAbort.call(void 0,
3979
+ cleanup.signal,
3980
+ async () => await _chunkKAAWCHO4js.createFactoryApi.call(void 0, options.request).deleteComputer({
3981
+ computerId,
3982
+ signal: cleanup.signal
3983
+ })
3984
+ );
3985
+ } catch (failure) {
3986
+ throw launchError(cause, failure);
3987
+ } finally {
3988
+ clearTimeout(cleanupTimer);
3989
+ }
3990
+ }
3991
+ throw launchError(cause);
3992
+ } finally {
3993
+ clearTimeout(timer);
3994
+ _optionalChain([options, 'access', _90 => _90.signal, 'optionalAccess', _91 => _91.removeEventListener, 'call', _92 => _92("abort", cancel)]);
3995
+ }
3996
+ }
3997
+ async function resolveEnvironment(options) {
3998
+ const http2 = _chunkKAAWCHO4js.createFactoryApi.call(void 0, options.request);
3999
+ const selector = options.environment;
4000
+ if ("id" in selector ? !selector.id.trim() : !selector.name.trim())
4001
+ throw new Error("Invalid environment selector");
4002
+ const context = {
4003
+ serviceAccountId: options.serviceAccountId,
4004
+ signal: options.signal
4005
+ };
4006
+ let environment;
4007
+ if ("id" in selector && context.serviceAccountId === void 0) {
4008
+ environment = _chunkKAAWCHO4js.SandboxEnvironmentSchema.parse(
4009
+ await http2.getEnvironment({
4010
+ ...context,
4011
+ environmentId: selector.id
4012
+ })
4013
+ );
4014
+ if (environment.id !== selector.id)
4015
+ throw new Error("Environment lookup returned a different ID");
4016
+ } else {
4017
+ const matches = [];
4018
+ _optionalChain([options, 'access', _93 => _93.signal, 'optionalAccess', _94 => _94.throwIfAborted, 'call', _95 => _95()]);
4019
+ const page = await http2.listEnvironments(context);
4020
+ if (!page || typeof page !== "object" || !("environments" in page) || !Array.isArray(page.environments))
4021
+ throw new Error("Invalid environment list response");
4022
+ for (const item of page.environments) {
4023
+ const candidate = _chunkKAAWCHO4js.SandboxEnvironmentSchema.parse(item);
4024
+ if ("id" in selector ? candidate.id === selector.id : candidate.name === selector.name)
4025
+ matches.push(candidate);
4026
+ }
4027
+ if (matches.length !== 1)
4028
+ throw new Error(
4029
+ "id" in selector ? "Environment is not accessible" : "Environment name must match exactly one accessible environment"
4030
+ );
4031
+ environment = matches[0];
4032
+ }
4033
+ if (!environment) throw new Error("Environment is not accessible");
4034
+ if (!_chunkKAAWCHO4js.isSandboxEnvironmentLaunchable.call(void 0, environment)) {
4035
+ throw new Error("Environment is not ready to launch");
4036
+ }
4037
+ return {
4038
+ environment,
4039
+ source: _chunkKAAWCHO4js.getSandboxEnvironmentLaunchSource.call(void 0, environment),
4040
+ repositories: _chunkKAAWCHO4js.getSandboxEnvironmentLaunchRepositories.call(void 0, environment)
4041
+ };
4042
+ }
4043
+
3267
4044
  // src/helpers.ts
3268
4045
  function resolveApiKey(apiKey) {
3269
4046
  const resolved = _nullishCoalesce(apiKey, () => ( process.env.FACTORY_API_KEY));
3270
4047
  if (!resolved) {
3271
- throw new (0, _chunkYSKO6SPTjs.DroidClientError)(
4048
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
3272
4049
  "No Factory API key found. Pass `apiKey` when creating the session, or set the FACTORY_API_KEY environment variable."
3273
4050
  );
3274
4051
  }
@@ -3286,7 +4063,10 @@ async function createTransport(options) {
3286
4063
  ...options.env,
3287
4064
  FACTORY_API_KEY: resolveApiKey(options.apiKey),
3288
4065
  FACTORY_UPSTREAM_CLIENT_TYPE: "sdk" /* SDK */,
3289
- FACTORY_UPSTREAM_SDK: _chunkYSKO6SPTjs.SDK_IDENTITY
4066
+ FACTORY_UPSTREAM_SDK: _chunkKAAWCHO4js.SDK_IDENTITY,
4067
+ // This helper owns the original SDK process, unlike the generic
4068
+ // ProcessTransport also used by daemon workers.
4069
+ FACTORY_EXEC_ORIGINAL_INVOCATION: "1"
3290
4070
  },
3291
4071
  observability: options.observability
3292
4072
  });
@@ -3294,13 +4074,26 @@ async function createTransport(options) {
3294
4074
  return processTransport;
3295
4075
  }
3296
4076
  function setupClientHandlers(client, options) {
4077
+ const sessionId = () => {
4078
+ const addressed = client.addressedSessionId;
4079
+ if (!addressed) {
4080
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
4081
+ "Received a prompt that no single session owns"
4082
+ );
4083
+ }
4084
+ return addressed;
4085
+ };
3297
4086
  if (options.permissionHandler) {
3298
4087
  const handler = options.permissionHandler;
3299
- client.setPermissionHandler((event) => handler(event.params));
4088
+ client.setPermissionHandler(
4089
+ (event) => handler({ ...event.params, sessionId: sessionId() })
4090
+ );
3300
4091
  }
3301
4092
  if (options.askUserHandler) {
3302
4093
  const handler = options.askUserHandler;
3303
- client.setAskUserHandler((event) => handler(event.params));
4094
+ client.setAskUserHandler(
4095
+ (event) => handler({ ...event.params, sessionId: sessionId() })
4096
+ );
3304
4097
  }
3305
4098
  }
3306
4099
  async function createConfiguredClient(options) {
@@ -3308,7 +4101,7 @@ async function createConfiguredClient(options) {
3308
4101
  const client = new DroidClient({
3309
4102
  transport,
3310
4103
  observability: options.observability,
3311
- getRequestAttribution: () => _chunkYSKO6SPTjs.SDK_REQUEST_ATTRIBUTION
4104
+ getRequestAttribution: () => _chunkKAAWCHO4js.SDK_REQUEST_ATTRIBUTION
3312
4105
  });
3313
4106
  setupClientHandlers(client, options);
3314
4107
  return { transport, client };
@@ -3319,7 +4112,7 @@ async function closeQuietly(resource) {
3319
4112
  }
3320
4113
  try {
3321
4114
  await resource.close();
3322
- } catch (e7) {
4115
+ } catch (e6) {
3323
4116
  }
3324
4117
  }
3325
4118
  function buildInitParams(options) {
@@ -3361,7 +4154,7 @@ function buildInitParams(options) {
3361
4154
  ...options.disableBuiltinSkills !== void 0 && {
3362
4155
  disableBuiltinSkills: options.disableBuiltinSkills
3363
4156
  },
3364
- tags: _chunkYSKO6SPTjs.withSdkTag.call(void 0, options.tags)
4157
+ tags: _chunkKAAWCHO4js.withSdkTag.call(void 0, options.tags)
3365
4158
  };
3366
4159
  }
3367
4160
 
@@ -3372,15 +4165,21 @@ var _http = require('http'); var _http2 = _interopRequireDefault(_http);
3372
4165
  var _mcpjs = require('@modelcontextprotocol/sdk/server/mcp.js');
3373
4166
  var _streamableHttpjs = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
3374
4167
 
3375
- function tool(name, description, inputSchemaOrHandler, handler) {
4168
+ function tool(name, description, inputSchemaOrHandler, handlerOrOptions, maybeOptions) {
4169
+ const options = typeof handlerOrOptions === "function" ? maybeOptions : handlerOrOptions;
4170
+ const annotationFields = _optionalChain([options, 'optionalAccess', _96 => _96.annotations]) && {
4171
+ annotations: options.annotations
4172
+ };
3376
4173
  if (typeof inputSchemaOrHandler === "function") {
3377
4174
  const actualHandler = inputSchemaOrHandler;
3378
4175
  return {
3379
4176
  name,
3380
4177
  description,
3381
- handler: (input) => actualHandler(input)
4178
+ handler: (input) => actualHandler(input),
4179
+ ...annotationFields
3382
4180
  };
3383
4181
  }
4182
+ const handler = typeof handlerOrOptions === "function" ? handlerOrOptions : void 0;
3384
4183
  if (!handler) {
3385
4184
  throw new Error(`Missing handler for SDK MCP tool "${name}"`);
3386
4185
  }
@@ -3389,7 +4188,8 @@ function tool(name, description, inputSchemaOrHandler, handler) {
3389
4188
  name,
3390
4189
  description,
3391
4190
  inputSchema: inputSchemaOrHandler,
3392
- handler: (input) => handler(inputObjectSchema.parse(input))
4191
+ handler: (input) => handler(inputObjectSchema.parse(input)),
4192
+ ...annotationFields
3393
4193
  };
3394
4194
  }
3395
4195
  function isSdkMcpServer(server) {
@@ -3423,7 +4223,7 @@ function writeJsonError(res, statusCode, message, headers = {}) {
3423
4223
  });
3424
4224
  res.end(
3425
4225
  JSON.stringify({
3426
- jsonrpc: _chunkYSKO6SPTjs.JSONRPC_VERSION,
4226
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION,
3427
4227
  error: { code: -32603 /* INTERNAL_ERROR */, message },
3428
4228
  id: null
3429
4229
  })
@@ -3445,10 +4245,10 @@ var SdkMcpServer = (_class4 = class {
3445
4245
 
3446
4246
 
3447
4247
 
3448
- __init20() {this._httpServer = null}
3449
- __init21() {this._url = null}
3450
- __init22() {this._token = null}
3451
- constructor(options) {;_class4.prototype.__init20.call(this);_class4.prototype.__init21.call(this);_class4.prototype.__init22.call(this);
4248
+ __init27() {this._httpServer = null}
4249
+ __init28() {this._url = null}
4250
+ __init29() {this._token = null}
4251
+ constructor(options) {;_class4.prototype.__init27.call(this);_class4.prototype.__init28.call(this);_class4.prototype.__init29.call(this);
3452
4252
  this.name = options.name;
3453
4253
  this.version = _nullishCoalesce(options.version, () => ( "1.0.0"));
3454
4254
  this.tools = options.tools;
@@ -3499,7 +4299,7 @@ var SdkMcpServer = (_class4 = class {
3499
4299
  if (!server) {
3500
4300
  return;
3501
4301
  }
3502
- _optionalChain([server, 'access', _47 => _47.closeAllConnections, 'optionalCall', _48 => _48()]);
4302
+ _optionalChain([server, 'access', _97 => _97.closeAllConnections, 'optionalCall', _98 => _98()]);
3503
4303
  server.close();
3504
4304
  await _events.once.call(void 0, server, "close");
3505
4305
  }
@@ -3515,7 +4315,8 @@ var SdkMcpServer = (_class4 = class {
3515
4315
  description: sdkTool.description,
3516
4316
  ...sdkTool.inputSchema && {
3517
4317
  inputSchema: sdkTool.inputSchema
3518
- }
4318
+ },
4319
+ ...sdkTool.annotations && { annotations: sdkTool.annotations }
3519
4320
  },
3520
4321
  async (input) => toCallToolResult(await sdkTool.handler(input))
3521
4322
  );
@@ -3592,16 +4393,333 @@ async function startSdkMcpServers(servers) {
3592
4393
  };
3593
4394
  }
3594
4395
 
4396
+ // src/session-operations.ts
4397
+ function response(result) {
4398
+ return {
4399
+ type: "response",
4400
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
4401
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
4402
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
4403
+ id: "sdk-adapter",
4404
+ result
4405
+ };
4406
+ }
4407
+ function createDaemonSessionOperations(controller, initialSessionId, handlers) {
4408
+ let sessionId = initialSessionId;
4409
+ const ownedSessionIds = /* @__PURE__ */ new Set([initialSessionId]);
4410
+ const reportError = (error) => controller.emit("error", _chunkKAAWCHO4js.toError.call(void 0, error));
4411
+ const permission = async (request) => {
4412
+ if (request.sessionId !== sessionId && !request.associatedSessionIds.includes(sessionId))
4413
+ return;
4414
+ const selected = await _asyncNullishCoalesce(await _chunkKAAWCHO4js.resolvePermissionHandler.call(void 0,
4415
+ handlers.permissionHandler,
4416
+ request,
4417
+ reportError
4418
+ ), async () => ( {
4419
+ selectedOption: "cancel" /* Cancel */
4420
+ }));
4421
+ try {
4422
+ await controller.respondToPermission({
4423
+ permissionId: request.requestId,
4424
+ sessionId,
4425
+ ...selected
4426
+ });
4427
+ } catch (error) {
4428
+ reportError(error);
4429
+ }
4430
+ };
4431
+ const askUser = async (request) => {
4432
+ if (request.sessionId !== sessionId) return;
4433
+ const result = await _chunkKAAWCHO4js.resolveAskUserHandler.call(void 0,
4434
+ handlers.askUserHandler,
4435
+ request,
4436
+ reportError
4437
+ );
4438
+ if (!result && request.blocking === false) return;
4439
+ try {
4440
+ await controller.respondToAskUser({
4441
+ requestId: request.requestId,
4442
+ sessionId,
4443
+ result: _nullishCoalesce(result, () => ( { cancelled: true, answers: [] }))
4444
+ });
4445
+ } catch (error) {
4446
+ reportError(error);
4447
+ }
4448
+ };
4449
+ controller.on("permissionRequested" /* PermissionRequested */, permission);
4450
+ controller.on("askUserRequested" /* AskUserRequested */, askUser);
4451
+ const operations = {
4452
+ lifecycle: {
4453
+ shutdown: async () => {
4454
+ try {
4455
+ const results = await Promise.allSettled(
4456
+ [...ownedSessionIds].map((id) => controller.closeSession(id))
4457
+ );
4458
+ const failure = results.find(
4459
+ (result) => result.status === "rejected"
4460
+ );
4461
+ if (_optionalChain([failure, 'optionalAccess', _99 => _99.status]) === "rejected") throw _chunkKAAWCHO4js.toError.call(void 0, failure.reason);
4462
+ } finally {
4463
+ await operations.close();
4464
+ }
4465
+ },
4466
+ abort: (close) => {
4467
+ void close().catch(() => {
4468
+ });
4469
+ }
4470
+ },
4471
+ onNotification(callback, filter) {
4472
+ const listener = (event) => {
4473
+ if (event.sessionId !== sessionId || _optionalChain([filter, 'optionalAccess', _100 => _100.type]) !== void 0 && filter.type !== event.notification.type)
4474
+ return;
4475
+ try {
4476
+ callback({
4477
+ type: "notification",
4478
+ jsonrpc: _chunkKAAWCHO4js.JSONRPC_VERSION2,
4479
+ factoryApiVersion: _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION2,
4480
+ factoryProtocolVersion: _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION,
4481
+ method: "droid.session_notification" /* SESSION_NOTIFICATION */,
4482
+ params: { notification: event.notification }
4483
+ });
4484
+ } catch (e7) {
4485
+ }
4486
+ };
4487
+ controller.on("sessionNotification" /* SessionNotification */, listener);
4488
+ return () => controller.off("sessionNotification" /* SessionNotification */, listener);
4489
+ },
4490
+ onError(callback) {
4491
+ const disconnected = (code, reason) => callback(new (0, _chunkKAAWCHO4js.ConnectionClosedError)(code, reason));
4492
+ const exited = (event) => {
4493
+ if (event.sessionId === sessionId && event.notification.type === "session_process_exited" /* SESSION_PROCESS_EXITED */)
4494
+ callback(
4495
+ new (0, _chunkKAAWCHO4js.DroidConnectionEndedError)("Remote session process exited.")
4496
+ );
4497
+ };
4498
+ controller.on("error", callback);
4499
+ controller.on("disconnected" /* Disconnected */, disconnected);
4500
+ controller.on("sessionNotification" /* SessionNotification */, exited);
4501
+ return () => {
4502
+ controller.off("error", callback);
4503
+ controller.off("disconnected" /* Disconnected */, disconnected);
4504
+ controller.off("sessionNotification" /* SessionNotification */, exited);
4505
+ };
4506
+ },
4507
+ addUserMessage: async (params) => response(await controller.addUserMessage(sessionId, params)),
4508
+ interruptSession: async () => response(await controller.interruptSession(sessionId)),
4509
+ closeSession: async () => {
4510
+ await controller.closeSession(sessionId);
4511
+ return response({});
4512
+ },
4513
+ close: async () => {
4514
+ controller.off("permissionRequested" /* PermissionRequested */, permission);
4515
+ controller.off("askUserRequested" /* AskUserRequested */, askUser);
4516
+ controller.destroy();
4517
+ controller.getSessionStateManager().clear();
4518
+ },
4519
+ loadSession: async (params) => {
4520
+ ownedSessionIds.add(params.sessionId);
4521
+ const result = await controller.loadSession({
4522
+ ...params,
4523
+ sessionOriginHint: params.sessionOriginHint,
4524
+ sessionSource: params.sessionSource
4525
+ });
4526
+ sessionId = params.sessionId;
4527
+ return response(result);
4528
+ },
4529
+ updateSessionSettings: async (params) => response(await controller.updateSessionSettings(sessionId, params)),
4530
+ addMcpServer: async (params) => response(await controller.addMcpServer({ ...params, sessionId })),
4531
+ removeMcpServer: async (params) => response(await controller.removeMcpServer({ ...params, sessionId })),
4532
+ toggleMcpServer: async (params) => response(await controller.toggleMcpServer({ ...params, sessionId })),
4533
+ listMcpServers: async () => response(await controller.listMcpServers(sessionId)),
4534
+ listMcpTools: async () => response(await controller.listMcpTools(sessionId)),
4535
+ refreshConnectorToolCatalog: async () => response(await controller.refreshConnectorToolCatalog()),
4536
+ authenticateMcpServer: async (params) => response(
4537
+ await controller.authenticateMcpServer({ ...params, sessionId })
4538
+ ),
4539
+ listSkills: async (params) => response(await controller.listSkills(sessionId, params)),
4540
+ setSkillDisabled: async (skillName, disabled, settingsLevel) => response(
4541
+ await controller.setSkillDisabled({
4542
+ sessionId,
4543
+ skillName,
4544
+ disabled,
4545
+ settingsLevel
4546
+ })
4547
+ ),
4548
+ getRewindInfo: async (params) => response(await controller.getRewindInfo(sessionId, params.messageId)),
4549
+ executeRewind: async (params) => response(await controller.executeRewind(sessionId, params)),
4550
+ compactSession: async (params) => response(
4551
+ await controller.compactSession(
4552
+ sessionId,
4553
+ params.customInstructions,
4554
+ params.mode
4555
+ )
4556
+ ),
4557
+ forkSession: async (params) => response(await controller.forkSession(sessionId, params)),
4558
+ renameSession: async (params) => response(await controller.renameSession(sessionId, params.title)),
4559
+ listTools: async () => {
4560
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
4561
+ "listTools is not supported by remote sessions."
4562
+ );
4563
+ },
4564
+ getContextStats: async () => {
4565
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
4566
+ "getContextStats is not supported by remote sessions."
4567
+ );
4568
+ }
4569
+ };
4570
+ return operations;
4571
+ }
4572
+
4573
+ // src/environment-session.ts
4574
+ async function createEnvironmentSession(options, createHandle) {
4575
+ if (!options.environment)
4576
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)("An environment is required.");
4577
+ for (const key of [
4578
+ "execPath",
4579
+ "execArgs",
4580
+ "env",
4581
+ "transport",
4582
+ "machineId"
4583
+ ]) {
4584
+ if (options[key] !== void 0)
4585
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
4586
+ `Option "${key}" is local-only and cannot be used with an environment.`
4587
+ );
4588
+ }
4589
+ const mcpServers = _optionalChain([options, 'access', _101 => _101.mcpServers, 'optionalAccess', _102 => _102.map, 'call', _103 => _103((server) => {
4590
+ if (server instanceof SdkMcpServer)
4591
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
4592
+ "In-process MCP servers cannot be used with an environment."
4593
+ );
4594
+ return server;
4595
+ })]);
4596
+ const apiKey = resolveApiKey(options.apiKey);
4597
+ const auth = { apiKey, baseUrl: options.baseUrl };
4598
+ const request = _chunkKAAWCHO4js.createApiRequest.call(void 0, auth);
4599
+ const api = _chunkKAAWCHO4js.createFactoryApi.call(void 0, request);
4600
+ const sessionId = _uuid.v4.call(void 0, );
4601
+ let startup;
4602
+ try {
4603
+ const launched = await launchEnvironmentSession({
4604
+ environment: options.environment,
4605
+ signal: options.abortSignal,
4606
+ request,
4607
+ connect: async ({ computer, signal }) => {
4608
+ if (!computer.relayClientUrl)
4609
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)("Computer has no relay URL.");
4610
+ const connectionConfig = {
4611
+ ..._chunkKAAWCHO4js.DEFAULT_CONNECTION_CONFIG,
4612
+ ..._chunkKAAWCHO4js.MACHINE_TYPE_CONFIG["computer" /* Computer */]
4613
+ };
4614
+ const connected = new (0, _chunkKAAWCHO4js.DaemonSessionController)({
4615
+ sessionStateManager: new (0, _chunkKAAWCHO4js.MultiSessionStateManager)(),
4616
+ config: {
4617
+ machineId: computer.id,
4618
+ machineType: "computer" /* Computer */,
4619
+ providerType: computer.providerType,
4620
+ isManaged: true,
4621
+ ensureRunning: async () => ({ wasRestarted: false }),
4622
+ trustedIdentity: _chunkKAAWCHO4js.trustedIdentityFromComputerResponse.call(void 0,
4623
+ computer,
4624
+ async () => {
4625
+ const fresh = _chunkKAAWCHO4js.parseResponse.call(void 0,
4626
+ await api.getComputer({
4627
+ computerId: computer.id,
4628
+ signal: AbortSignal.timeout(5e3)
4629
+ }),
4630
+ _chunkKAAWCHO4js.ComputerReadSchema
4631
+ );
4632
+ if (fresh.id !== computer.id)
4633
+ throw new (0, _chunkKAAWCHO4js.DroidClientError)(
4634
+ "Identity refresh returned a different Computer."
4635
+ );
4636
+ return fresh;
4637
+ }
4638
+ ),
4639
+ url: computer.relayClientUrl,
4640
+ clientType: "sdk" /* SDK */,
4641
+ sdk: _chunkKAAWCHO4js.SDK_CLIENT_METADATA,
4642
+ getCredential: async () => ({ apiKey }),
4643
+ connectionTimeoutMs: connectionConfig.connectionTimeoutMs,
4644
+ requestTimeout: connectionConfig.requestTimeoutMs,
4645
+ maxPollAttempts: connectionConfig.maxPollAttempts,
4646
+ maxReconnectAttempts: connectionConfig.maxReconnectAttempts,
4647
+ reconnectInterval: connectionConfig.reconnectInitialDelayMs,
4648
+ maxReconnectDelay: connectionConfig.reconnectMaxDelayMs,
4649
+ reconnectBackoffFactor: connectionConfig.reconnectBackoffFactor,
4650
+ supportsTerminalRestoreOnLoad: false
4651
+ }
4652
+ });
4653
+ const operations = createDaemonSessionOperations(
4654
+ connected,
4655
+ sessionId,
4656
+ options
4657
+ );
4658
+ const cancel = () => connected.destroy();
4659
+ signal.addEventListener("abort", cancel, { once: true });
4660
+ startup = {
4661
+ operations,
4662
+ releaseAbort: () => signal.removeEventListener("abort", cancel)
4663
+ };
4664
+ await connected.attemptInitialConnection();
4665
+ signal.throwIfAborted();
4666
+ return { controller: connected, operations };
4667
+ },
4668
+ startSession: async ({ connection, computer, signal }) => {
4669
+ const { controller, operations } = connection;
4670
+ const initParams = buildInitParams({
4671
+ ...options,
4672
+ machineId: computer.id,
4673
+ cwd: _nullishCoalesce(_nullishCoalesce(options.cwd, () => ( _optionalChain([computer, 'access', _104 => _104.clonedRepoDirectories, 'optionalAccess', _105 => _105[0]]))), () => ( "~")),
4674
+ mcpServers
4675
+ });
4676
+ controller.getSessionStateManager().markSessionLoading(sessionId, computer.id);
4677
+ const result = await controller.initializeSession({
4678
+ ...initParams,
4679
+ sessionId,
4680
+ token: apiKey,
4681
+ sessionSource: initParams.sessionSource,
4682
+ sessionOriginHint: initParams.sessionOriginHint
4683
+ });
4684
+ signal.throwIfAborted();
4685
+ return createHandle({
4686
+ result,
4687
+ operations,
4688
+ computerId: computer.id,
4689
+ cwd: initParams.cwd,
4690
+ mcpServers
4691
+ });
4692
+ }
4693
+ });
4694
+ return launched.session;
4695
+ } catch (error) {
4696
+ await _optionalChain([startup, 'optionalAccess', _106 => _106.operations, 'access', _107 => _107.close, 'call', _108 => _108()]);
4697
+ throw error;
4698
+ } finally {
4699
+ _optionalChain([startup, 'optionalAccess', _109 => _109.releaseAbort, 'call', _110 => _110()]);
4700
+ }
4701
+ }
4702
+
3595
4703
  // src/session.ts
3596
4704
  var DroidSession = (_class5 = class _DroidSession {
3597
4705
  /** @internal */
3598
- constructor(client, sessionId, metadata, _runtime, cleanupCallbacks = []) {;_class5.prototype.__init23.call(this);_class5.prototype.__init24.call(this);_class5.prototype.__init25.call(this);_class5.prototype.__init26.call(this);_class5.prototype.__init27.call(this);_class5.prototype.__init28.call(this);
4706
+ constructor(client, sessionId, metadata, _runtime, cleanupCallbacks = []) {;_class5.prototype.__init30.call(this);_class5.prototype.__init31.call(this);_class5.prototype.__init32.call(this);_class5.prototype.__init33.call(this);_class5.prototype.__init34.call(this);_class5.prototype.__init35.call(this);
3599
4707
  this._runtime = _runtime;
3600
4708
  this._client = client;
3601
4709
  this._sessionId = sessionId;
3602
4710
  this._settings = metadata.settings;
3603
4711
  this._cwd = metadata.cwd;
3604
4712
  this._cleanupCallbacks = cleanupCallbacks;
4713
+ this._lifecycle = _nullishCoalesce(_runtime.lifecycle, () => ( {
4714
+ shutdown: async () => {
4715
+ await client.closeSession({ reason: "other" }).catch(() => {
4716
+ });
4717
+ await client.close();
4718
+ },
4719
+ abort: (close) => {
4720
+ void close();
4721
+ }
4722
+ }));
3605
4723
  this._bindMetadataNotifications();
3606
4724
  this._bindAbortSignal();
3607
4725
  }
@@ -3610,16 +4728,20 @@ var DroidSession = (_class5 = class _DroidSession {
3610
4728
 
3611
4729
 
3612
4730
 
3613
- __init23() {this._settingsRevision = 0}
3614
- __init24() {this._status = "active"}
3615
4731
 
3616
- __init25() {this._cleanupAbortSignal = null}
3617
- __init26() {this._cleanupCallbacks = []}
3618
- __init27() {this._activeBridges = /* @__PURE__ */ new Set()}
3619
- __init28() {this._notificationCleanups = /* @__PURE__ */ new Set()}
4732
+ __init30() {this._settingsRevision = 0}
4733
+ __init31() {this._status = "active"}
4734
+
4735
+ __init32() {this._cleanupAbortSignal = null}
4736
+ __init33() {this._cleanupCallbacks = []}
4737
+ __init34() {this._activeBridges = /* @__PURE__ */ new Set()}
4738
+ __init35() {this._notificationCleanups = /* @__PURE__ */ new Set()}
3620
4739
  get id() {
3621
4740
  return this._sessionId;
3622
4741
  }
4742
+ get computerId() {
4743
+ return this._runtime.computerId;
4744
+ }
3623
4745
  get settings() {
3624
4746
  return this._settings;
3625
4747
  }
@@ -3628,10 +4750,10 @@ var DroidSession = (_class5 = class _DroidSession {
3628
4750
  }
3629
4751
  async *stream(prompt, options) {
3630
4752
  this._ensureNotClosed();
3631
- yield* _chunkYSKO6SPTjs.streamFromClient.call(void 0,
4753
+ yield* _chunkKAAWCHO4js.streamFromClient.call(void 0,
3632
4754
  {
3633
4755
  onNotification: (handler) => this._client.onNotification((notification) => {
3634
- const inner = _chunkYSKO6SPTjs.extractInnerNotification.call(void 0, notification);
4756
+ const inner = _chunkKAAWCHO4js.extractInnerNotification.call(void 0, notification);
3635
4757
  if (inner) handler(inner);
3636
4758
  }),
3637
4759
  onError: (handler) => this._client.onError(handler),
@@ -3657,16 +4779,14 @@ var DroidSession = (_class5 = class _DroidSession {
3657
4779
  }
3658
4780
  this._status = "closed";
3659
4781
  this._releaseHandleSubscriptions();
3660
- _optionalChain([this, 'access', _49 => _49._cleanupAbortSignal, 'optionalCall', _50 => _50()]);
4782
+ _optionalChain([this, 'access', _111 => _111._cleanupAbortSignal, 'optionalCall', _112 => _112()]);
3661
4783
  this._cleanupAbortSignal = null;
3662
4784
  for (const bridge of this._activeBridges) {
3663
4785
  bridge.signalDone();
3664
4786
  bridge.release();
3665
4787
  }
3666
4788
  try {
3667
- await this._client.closeSession({ reason: "other" }).catch(() => {
3668
- });
3669
- await this._client.close();
4789
+ await this._lifecycle.shutdown();
3670
4790
  } finally {
3671
4791
  const cleanups = this._cleanupCallbacks.splice(0);
3672
4792
  await Promise.all(cleanups.map((cleanup) => cleanup()));
@@ -3675,14 +4795,14 @@ var DroidSession = (_class5 = class _DroidSession {
3675
4795
  async updateSettings(params) {
3676
4796
  this._ensureNotClosed();
3677
4797
  const revision = this._settingsRevision;
3678
- const result = _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
4798
+ const result = _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
3679
4799
  await this._client.updateSessionSettings(params)
3680
4800
  );
3681
4801
  if (params.disabledToolIds !== void 0) {
3682
4802
  this._runtime.loadParams.disabledToolIds = params.disabledToolIds;
3683
4803
  }
3684
4804
  if (this._settingsRevision === revision) {
3685
- this._settings = _chunkYSKO6SPTjs.mergeSessionSettings.call(void 0, this._settings, params);
4805
+ this._settings = _chunkKAAWCHO4js.mergeSessionSettings.call(void 0, this._settings, params);
3686
4806
  }
3687
4807
  return result;
3688
4808
  }
@@ -3699,27 +4819,32 @@ var DroidSession = (_class5 = class _DroidSession {
3699
4819
  }
3700
4820
  async addMcpServer(params) {
3701
4821
  this._ensureNotClosed();
3702
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.addMcpServer(params));
4822
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.addMcpServer(params));
3703
4823
  }
3704
4824
  async removeMcpServer(params) {
3705
4825
  this._ensureNotClosed();
3706
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.removeMcpServer(params));
4826
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.removeMcpServer(params));
3707
4827
  }
3708
4828
  async toggleMcpServer(params) {
3709
4829
  this._ensureNotClosed();
3710
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.toggleMcpServer(params));
4830
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.toggleMcpServer(params));
3711
4831
  }
3712
4832
  async listMcpServers() {
3713
4833
  this._ensureNotClosed();
3714
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.listMcpServers());
4834
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.listMcpServers());
3715
4835
  }
3716
4836
  async listMcpTools() {
3717
4837
  this._ensureNotClosed();
3718
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.listMcpTools()).tools;
4838
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.listMcpTools()).tools;
4839
+ }
4840
+ /** Refresh connector discovery. MCP configuration has its own lifecycle. */
4841
+ async refreshConnectorToolCatalog() {
4842
+ this._ensureNotClosed();
4843
+ _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.refreshConnectorToolCatalog());
3719
4844
  }
3720
4845
  async listTools(params = {}) {
3721
4846
  this._ensureNotClosed();
3722
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.listTools(params)).tools.map(
4847
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.listTools(params)).tools.map(
3723
4848
  ({ id: _protocolId, llmId, currentlyAllowed, ...tool2 }) => ({
3724
4849
  ...tool2,
3725
4850
  id: llmId,
@@ -3729,17 +4854,17 @@ var DroidSession = (_class5 = class _DroidSession {
3729
4854
  }
3730
4855
  async authenticateMcpServer(params) {
3731
4856
  this._ensureNotClosed();
3732
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
4857
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
3733
4858
  await this._client.authenticateMcpServer(params)
3734
4859
  );
3735
4860
  }
3736
- async listSkills() {
4861
+ async listSkills(params) {
3737
4862
  this._ensureNotClosed();
3738
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.listSkills());
4863
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.listSkills(params));
3739
4864
  }
3740
4865
  async setSkillDisabled(params) {
3741
4866
  this._ensureNotClosed();
3742
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
4867
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
3743
4868
  await this._client.setSkillDisabled(
3744
4869
  params.skillName,
3745
4870
  params.disabled,
@@ -3749,34 +4874,41 @@ var DroidSession = (_class5 = class _DroidSession {
3749
4874
  }
3750
4875
  async getRewindInfo(params) {
3751
4876
  this._ensureNotClosed();
3752
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.getRewindInfo(params));
4877
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.getRewindInfo(params));
3753
4878
  }
3754
4879
  async rewind(params) {
3755
4880
  const { session, result } = await this._runReplacement(
3756
- () => this._client.executeRewind(params).then(_chunkYSKO6SPTjs.unwrapResponseResult)
4881
+ () => this._client.executeRewind(params).then(_chunkKAAWCHO4js.unwrapResponseResult)
3757
4882
  );
3758
4883
  const { newSessionId: _newSessionId, ...metadata } = result;
3759
4884
  return { session, ...metadata };
3760
4885
  }
3761
4886
  async compact(params) {
3762
4887
  const { session, result } = await this._runReplacement(
3763
- () => this._client.compactSession(_nullishCoalesce(params, () => ( {}))).then(_chunkYSKO6SPTjs.unwrapResponseResult)
4888
+ () => this._client.compactSession(_nullishCoalesce(params, () => ( {}))).then(_chunkKAAWCHO4js.unwrapResponseResult),
4889
+ { retainSourceWhenSameId: true }
4890
+ );
4891
+ return { session, removedCount: result.removedCount };
4892
+ }
4893
+ async handoff(params) {
4894
+ const { session, result } = await this._runReplacement(
4895
+ () => this._client.compactSession({ ...params, mode: "handoff" }).then(_chunkKAAWCHO4js.unwrapResponseResult)
3764
4896
  );
3765
4897
  return { session, removedCount: result.removedCount };
3766
4898
  }
3767
4899
  async fork(params = {}) {
3768
4900
  const { session } = await this._runReplacement(
3769
- () => this._client.forkSession(params).then(_chunkYSKO6SPTjs.unwrapResponseResult)
4901
+ () => this._client.forkSession(params).then(_chunkKAAWCHO4js.unwrapResponseResult)
3770
4902
  );
3771
4903
  return session;
3772
4904
  }
3773
4905
  async getContextStats() {
3774
4906
  this._ensureNotClosed();
3775
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.getContextStats());
4907
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.getContextStats());
3776
4908
  }
3777
4909
  async rename(params) {
3778
4910
  this._ensureNotClosed();
3779
- _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, await this._client.renameSession(params));
4911
+ _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, await this._client.renameSession(params));
3780
4912
  }
3781
4913
  onNotification(callback, filter) {
3782
4914
  this._ensureNotClosed();
@@ -3790,13 +4922,13 @@ var DroidSession = (_class5 = class _DroidSession {
3790
4922
  }
3791
4923
  _ensureNotClosed() {
3792
4924
  if (this._status === "replaced" && this._replacementSessionId) {
3793
- throw new (0, _chunkYSKO6SPTjs.SessionReplacedError)(
4925
+ throw new (0, _chunkKAAWCHO4js.SessionReplacedError)(
3794
4926
  this._sessionId,
3795
4927
  this._replacementSessionId
3796
4928
  );
3797
4929
  }
3798
4930
  if (this._status !== "active") {
3799
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)(
4931
+ throw new (0, _chunkKAAWCHO4js.ConnectionError)(
3800
4932
  this._status === "replacing" ? "Session replacement is already in progress." : "Session has been closed. Create a new session to continue."
3801
4933
  );
3802
4934
  }
@@ -3804,11 +4936,11 @@ var DroidSession = (_class5 = class _DroidSession {
3804
4936
  _beginReplacement() {
3805
4937
  this._ensureNotClosed();
3806
4938
  if (this._activeBridges.size > 0) {
3807
- throw new (0, _chunkYSKO6SPTjs.ConcurrentStreamError)(this._sessionId);
4939
+ throw new (0, _chunkKAAWCHO4js.ConcurrentStreamError)(this._sessionId);
3808
4940
  }
3809
4941
  this._status = "replacing";
3810
4942
  }
3811
- async _runReplacement(operation) {
4943
+ async _runReplacement(operation, options) {
3812
4944
  this._beginReplacement();
3813
4945
  let result;
3814
4946
  try {
@@ -3820,15 +4952,19 @@ var DroidSession = (_class5 = class _DroidSession {
3820
4952
  throw error;
3821
4953
  }
3822
4954
  if (this._status !== "replacing") {
3823
- throw new (0, _chunkYSKO6SPTjs.SessionReplacementError)(this._sessionId, result.newSessionId, {
3824
- cause: new (0, _chunkYSKO6SPTjs.ConnectionError)(
4955
+ throw new (0, _chunkKAAWCHO4js.SessionReplacementError)(this._sessionId, result.newSessionId, {
4956
+ cause: new (0, _chunkKAAWCHO4js.ConnectionError)(
3825
4957
  "Session closed while replacement was in progress."
3826
4958
  ),
3827
- rollbackError: new (0, _chunkYSKO6SPTjs.ConnectionError)(
4959
+ rollbackError: new (0, _chunkKAAWCHO4js.ConnectionError)(
3828
4960
  "The source session was already closed."
3829
4961
  )
3830
4962
  });
3831
4963
  }
4964
+ if (_optionalChain([options, 'optionalAccess', _113 => _113.retainSourceWhenSameId]) && result.newSessionId === this._sessionId) {
4965
+ this._status = "active";
4966
+ return { session: this, result };
4967
+ }
3832
4968
  return {
3833
4969
  session: await this._loadReplacement(result.newSessionId),
3834
4970
  result
@@ -3836,18 +4972,18 @@ var DroidSession = (_class5 = class _DroidSession {
3836
4972
  }
3837
4973
  async _loadReplacement(replacementSessionId) {
3838
4974
  try {
3839
- const loadResult = _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
4975
+ const loadResult = _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
3840
4976
  await this._client.loadSession({
3841
4977
  ...this._runtime.loadParams,
3842
4978
  sessionId: replacementSessionId
3843
4979
  })
3844
4980
  );
3845
4981
  if (this._status !== "replacing") {
3846
- throw new (0, _chunkYSKO6SPTjs.ConnectionError)(
4982
+ throw new (0, _chunkKAAWCHO4js.ConnectionError)(
3847
4983
  "Session closed while replacement was loading."
3848
4984
  );
3849
4985
  }
3850
- _optionalChain([this, 'access', _51 => _51._cleanupAbortSignal, 'optionalCall', _52 => _52()]);
4986
+ _optionalChain([this, 'access', _114 => _114._cleanupAbortSignal, 'optionalCall', _115 => _115()]);
3851
4987
  this._cleanupAbortSignal = null;
3852
4988
  this._releaseHandleSubscriptions();
3853
4989
  const cleanupCallbacks = this._cleanupCallbacks;
@@ -3864,12 +5000,12 @@ var DroidSession = (_class5 = class _DroidSession {
3864
5000
  return replacement;
3865
5001
  } catch (cause) {
3866
5002
  if (this._status !== "replacing") {
3867
- throw new (0, _chunkYSKO6SPTjs.SessionReplacementError)(
5003
+ throw new (0, _chunkKAAWCHO4js.SessionReplacementError)(
3868
5004
  this._sessionId,
3869
5005
  replacementSessionId,
3870
5006
  {
3871
5007
  cause,
3872
- rollbackError: new (0, _chunkYSKO6SPTjs.ConnectionError)(
5008
+ rollbackError: new (0, _chunkKAAWCHO4js.ConnectionError)(
3873
5009
  "The source session was closed before rollback."
3874
5010
  )
3875
5011
  }
@@ -3877,7 +5013,7 @@ var DroidSession = (_class5 = class _DroidSession {
3877
5013
  }
3878
5014
  let rollbackResult;
3879
5015
  try {
3880
- rollbackResult = _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
5016
+ rollbackResult = _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
3881
5017
  await this._client.loadSession({
3882
5018
  ...this._runtime.loadParams,
3883
5019
  sessionId: this._sessionId
@@ -3885,18 +5021,18 @@ var DroidSession = (_class5 = class _DroidSession {
3885
5021
  );
3886
5022
  } catch (rollbackError) {
3887
5023
  await this._disposeAfterFailedRollback();
3888
- throw new (0, _chunkYSKO6SPTjs.SessionReplacementError)(
5024
+ throw new (0, _chunkKAAWCHO4js.SessionReplacementError)(
3889
5025
  this._sessionId,
3890
5026
  replacementSessionId,
3891
5027
  { cause, rollbackError }
3892
5028
  );
3893
5029
  }
3894
5030
  if (this._status !== "replacing") {
3895
- const rollbackError = new (0, _chunkYSKO6SPTjs.ConnectionError)(
5031
+ const rollbackError = new (0, _chunkKAAWCHO4js.ConnectionError)(
3896
5032
  "Session closed while replacement rollback was loading."
3897
5033
  );
3898
5034
  await this._disposeAfterFailedRollback();
3899
- throw new (0, _chunkYSKO6SPTjs.SessionReplacementError)(
5035
+ throw new (0, _chunkKAAWCHO4js.SessionReplacementError)(
3900
5036
  this._sessionId,
3901
5037
  replacementSessionId,
3902
5038
  { cause, rollbackError }
@@ -3905,24 +5041,24 @@ var DroidSession = (_class5 = class _DroidSession {
3905
5041
  this._settings = rollbackResult.settings;
3906
5042
  this._cwd = rollbackResult.cwd;
3907
5043
  this._status = "active";
3908
- throw new (0, _chunkYSKO6SPTjs.SessionReplacementError)(this._sessionId, replacementSessionId, {
5044
+ throw new (0, _chunkKAAWCHO4js.SessionReplacementError)(this._sessionId, replacementSessionId, {
3909
5045
  cause
3910
5046
  });
3911
5047
  }
3912
5048
  }
3913
5049
  _bindAbortSignal() {
3914
- this._cleanupAbortSignal = _chunkYSKO6SPTjs.wireAbortSignal.call(void 0,
5050
+ this._cleanupAbortSignal = _chunkKAAWCHO4js.wireAbortSignal.call(void 0,
3915
5051
  this._runtime.abortSignal,
3916
- () => void this.close()
5052
+ () => this._lifecycle.abort(() => this.close())
3917
5053
  );
3918
5054
  }
3919
5055
  _bindMetadataNotifications() {
3920
5056
  const unsubscribe = this._client.onNotification((notification) => {
3921
- const inner = _chunkYSKO6SPTjs.extractInnerNotification.call(void 0, notification);
3922
- if (_optionalChain([inner, 'optionalAccess', _53 => _53.type]) === "settings_updated" /* SETTINGS_UPDATED */) {
3923
- this._settings = _chunkYSKO6SPTjs.mergeSessionSettings.call(void 0, this._settings, inner.settings);
5057
+ const inner = _chunkKAAWCHO4js.extractInnerNotification.call(void 0, notification);
5058
+ if (_optionalChain([inner, 'optionalAccess', _116 => _116.type]) === "settings_updated" /* SETTINGS_UPDATED */) {
5059
+ this._settings = _chunkKAAWCHO4js.mergeSessionSettings.call(void 0, this._settings, inner.settings);
3924
5060
  this._settingsRevision++;
3925
- } else if (_optionalChain([inner, 'optionalAccess', _54 => _54.type]) === "session_working_directory_changed" /* SESSION_WORKING_DIRECTORY_CHANGED */) {
5061
+ } else if (_optionalChain([inner, 'optionalAccess', _117 => _117.type]) === "session_working_directory_changed" /* SESSION_WORKING_DIRECTORY_CHANGED */) {
3926
5062
  this._cwd = inner.cwd;
3927
5063
  }
3928
5064
  });
@@ -3937,7 +5073,7 @@ var DroidSession = (_class5 = class _DroidSession {
3937
5073
  }
3938
5074
  async _disposeAfterFailedRollback() {
3939
5075
  this._status = "closed";
3940
- _optionalChain([this, 'access', _55 => _55._cleanupAbortSignal, 'optionalCall', _56 => _56()]);
5076
+ _optionalChain([this, 'access', _118 => _118._cleanupAbortSignal, 'optionalCall', _119 => _119()]);
3941
5077
  this._cleanupAbortSignal = null;
3942
5078
  this._releaseHandleSubscriptions();
3943
5079
  await closeQuietly(this._client);
@@ -3958,9 +5094,25 @@ function createReplacementLoadParams(options, mcpServers) {
3958
5094
  };
3959
5095
  }
3960
5096
  async function createSession(options = {}) {
5097
+ if (options.environment) {
5098
+ return await createEnvironmentSession(
5099
+ options,
5100
+ ({ result, operations, computerId, cwd, mcpServers }) => new DroidSession(
5101
+ operations,
5102
+ result.sessionId,
5103
+ { settings: result.settings, cwd },
5104
+ {
5105
+ computerId,
5106
+ abortSignal: options.abortSignal,
5107
+ loadParams: createReplacementLoadParams(options, mcpServers),
5108
+ lifecycle: operations.lifecycle
5109
+ }
5110
+ )
5111
+ );
5112
+ }
3961
5113
  const { client } = await createConfiguredClient(options);
3962
- let cleanupInitAbortSignal = _optionalChain([options, 'access', _57 => _57.abortSignal, 'optionalAccess', _58 => _58.aborted]) ? () => {
3963
- } : _chunkYSKO6SPTjs.wireAbortSignal.call(void 0, options.abortSignal, () => {
5114
+ let cleanupInitAbortSignal = _optionalChain([options, 'access', _120 => _120.abortSignal, 'optionalAccess', _121 => _121.aborted]) ? () => {
5115
+ } : _chunkKAAWCHO4js.wireAbortSignal.call(void 0, options.abortSignal, () => {
3964
5116
  void closeQuietly(client);
3965
5117
  });
3966
5118
  let sdkMcpServers;
@@ -3970,7 +5122,7 @@ async function createSession(options = {}) {
3970
5122
  ...options,
3971
5123
  mcpServers: sdkMcpServers.mcpServers
3972
5124
  });
3973
- const initResult = _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
5125
+ const initResult = _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
3974
5126
  await client.initializeSession(initParams)
3975
5127
  );
3976
5128
  const session = new DroidSession(
@@ -3978,7 +5130,7 @@ async function createSession(options = {}) {
3978
5130
  initResult.sessionId,
3979
5131
  {
3980
5132
  settings: initResult.settings,
3981
- cwd: _nullishCoalesce(_optionalChain([initResult, 'access', _59 => _59.worktree, 'optionalAccess', _60 => _60.path]), () => ( initParams.cwd))
5133
+ cwd: _nullishCoalesce(_optionalChain([initResult, 'access', _122 => _122.worktree, 'optionalAccess', _123 => _123.path]), () => ( initParams.cwd))
3982
5134
  },
3983
5135
  {
3984
5136
  abortSignal: options.abortSignal,
@@ -3995,15 +5147,15 @@ async function createSession(options = {}) {
3995
5147
  return session;
3996
5148
  } catch (error) {
3997
5149
  cleanupInitAbortSignal();
3998
- await _optionalChain([sdkMcpServers, 'optionalAccess', _61 => _61.cleanup, 'call', _62 => _62()]);
5150
+ await _optionalChain([sdkMcpServers, 'optionalAccess', _124 => _124.cleanup, 'call', _125 => _125()]);
3999
5151
  await closeQuietly(client);
4000
5152
  throw error;
4001
5153
  }
4002
5154
  }
4003
5155
  async function resumeSession(sessionId, options = {}) {
4004
5156
  const { client } = await createConfiguredClient(options);
4005
- let cleanupLoadAbortSignal = _optionalChain([options, 'access', _63 => _63.abortSignal, 'optionalAccess', _64 => _64.aborted]) ? () => {
4006
- } : _chunkYSKO6SPTjs.wireAbortSignal.call(void 0, options.abortSignal, () => {
5157
+ let cleanupLoadAbortSignal = _optionalChain([options, 'access', _126 => _126.abortSignal, 'optionalAccess', _127 => _127.aborted]) ? () => {
5158
+ } : _chunkKAAWCHO4js.wireAbortSignal.call(void 0, options.abortSignal, () => {
4007
5159
  void closeQuietly(client);
4008
5160
  });
4009
5161
  let sdkMcpServers;
@@ -4013,7 +5165,7 @@ async function resumeSession(sessionId, options = {}) {
4013
5165
  options,
4014
5166
  sdkMcpServers.mcpServers
4015
5167
  );
4016
- const loadResult = _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0,
5168
+ const loadResult = _chunkKAAWCHO4js.unwrapResponseResult.call(void 0,
4017
5169
  await client.loadSession({ sessionId, ...replacementLoadParams })
4018
5170
  );
4019
5171
  const session = new DroidSession(
@@ -4032,7 +5184,7 @@ async function resumeSession(sessionId, options = {}) {
4032
5184
  return session;
4033
5185
  } catch (error) {
4034
5186
  cleanupLoadAbortSignal();
4035
- await _optionalChain([sdkMcpServers, 'optionalAccess', _65 => _65.cleanup, 'call', _66 => _66()]);
5187
+ await _optionalChain([sdkMcpServers, 'optionalAccess', _128 => _128.cleanup, 'call', _129 => _129()]);
4036
5188
  await closeQuietly(client);
4037
5189
  throw error;
4038
5190
  }
@@ -4046,13 +5198,15 @@ async function run(prompt, options = {}) {
4046
5198
  ...options,
4047
5199
  includePartialMessages: false
4048
5200
  })) {
4049
- if (msg.type === _chunkYSKO6SPTjs.DroidMessageType.Result) {
4050
- return msg;
5201
+ if (msg.type === _chunkKAAWCHO4js.DroidMessageType.Result) {
5202
+ const computerId = session.computerId;
5203
+ return computerId === void 0 ? msg : { ...msg, computerId };
4051
5204
  }
4052
5205
  }
4053
5206
  throw new Error("Stream completed without a result message");
4054
5207
  } finally {
4055
- await session.close();
5208
+ await session.close().catch(() => {
5209
+ });
4056
5210
  }
4057
5211
  }
4058
5212
 
@@ -4072,9 +5226,14 @@ var CR = 13;
4072
5226
  var SPACE = 32;
4073
5227
  var TAB = 9;
4074
5228
  var PARSE_OVERSAMPLE = 20;
4075
- function readFileBuffer(filePath) {
5229
+ function readFileOrNull(filePath, read) {
4076
5230
  try {
4077
- return fs3.readFileSync(filePath);
5231
+ const fd = fs3.openSync(filePath, "r");
5232
+ try {
5233
+ return read(fd);
5234
+ } finally {
5235
+ fs3.closeSync(fd);
5236
+ }
4078
5237
  } catch (e8) {
4079
5238
  return null;
4080
5239
  }
@@ -4086,46 +5245,92 @@ function parseJsonBuffer(buf) {
4086
5245
  return null;
4087
5246
  }
4088
5247
  }
4089
- function scanBufferForLines(buf) {
5248
+ var SCAN_CHUNK_BYTES = 64 * 1024;
5249
+ var MAX_SCANNED_FILE_BYTES = 2 ** 31 - 1;
5250
+ function scratchChunk(scratch, size) {
5251
+ const want = Math.min(SCAN_CHUNK_BYTES, size === 0 ? 8192 : size);
5252
+ const current = scratch.chunk;
5253
+ if (current && current.length >= want) return current;
5254
+ const grown = Buffer.allocUnsafe(
5255
+ Math.min(SCAN_CHUNK_BYTES, Math.max(want, 2 * (_nullishCoalesce(_optionalChain([current, 'optionalAccess', _130 => _130.length]), () => ( 0)))))
5256
+ );
5257
+ scratch.chunk = grown;
5258
+ return grown;
5259
+ }
5260
+ function copyFirstLine(parts, chunk, end) {
5261
+ return Buffer.concat([...parts, chunk.subarray(0, end)]);
5262
+ }
5263
+ function scanSessionFile(fd, scratch) {
5264
+ const stats = fs3.fstatSync(fd);
5265
+ const size = stats.isFile() ? stats.size : 0;
5266
+ if (size > MAX_SCANNED_FILE_BYTES) return null;
5267
+ const chunk = scratchChunk(scratch, size);
4090
5268
  let nonEmptyLineCount = 0;
4091
- let firstLineEnd = -1;
4092
- let currentLineHasContent = false;
4093
- for (let i = 0; i < buf.length; i++) {
4094
- const ch = buf[i];
4095
- if (ch === LF) {
4096
- if (currentLineHasContent) nonEmptyLineCount++;
4097
- if (firstLineEnd === -1) firstLineEnd = i;
4098
- currentLineHasContent = false;
4099
- } else if (ch !== CR && ch !== SPACE && ch !== TAB) {
4100
- currentLineHasContent = true;
4101
- }
4102
- }
4103
- if (currentLineHasContent) nonEmptyLineCount++;
4104
- const end = firstLineEnd === -1 ? buf.length : firstLineEnd > 0 && buf[firstLineEnd - 1] === CR ? firstLineEnd - 1 : firstLineEnd;
4105
- return {
4106
- firstLine: buf.subarray(0, end),
4107
- nonEmptyLineCount
4108
- };
5269
+ let lineHasContent = false;
5270
+ const firstLineParts = [];
5271
+ let firstLine;
5272
+ let pos = 0;
5273
+ for (; ; ) {
5274
+ const length = size === 0 ? chunk.length : Math.min(chunk.length, size - pos);
5275
+ if (length === 0) break;
5276
+ const bytesRead = fs3.readSync(fd, chunk, 0, length, null);
5277
+ if (bytesRead === 0) break;
5278
+ pos += bytesRead;
5279
+ let i = 0;
5280
+ while (i < bytesRead) {
5281
+ let lf;
5282
+ if (lineHasContent) {
5283
+ lf = chunk.indexOf(LF, i);
5284
+ if (lf === -1 || lf >= bytesRead) break;
5285
+ nonEmptyLineCount++;
5286
+ lineHasContent = false;
5287
+ } else {
5288
+ const ch = chunk[i];
5289
+ if (ch === CR || ch === SPACE || ch === TAB) {
5290
+ i++;
5291
+ continue;
5292
+ }
5293
+ if (ch !== LF) {
5294
+ lineHasContent = true;
5295
+ continue;
5296
+ }
5297
+ lf = i;
5298
+ }
5299
+ firstLine ??= copyFirstLine(firstLineParts, chunk, lf);
5300
+ i = lf + 1;
5301
+ }
5302
+ if (firstLine === void 0) {
5303
+ firstLineParts.push(Buffer.from(chunk.subarray(0, bytesRead)));
5304
+ }
5305
+ }
5306
+ if (lineHasContent) nonEmptyLineCount++;
5307
+ const [onlyPart] = firstLineParts;
5308
+ firstLine ??= onlyPart !== void 0 && firstLineParts.length === 1 ? onlyPart : Buffer.concat(firstLineParts);
5309
+ return { firstLine, nonEmptyLineCount };
4109
5310
  }
4110
5311
  function loadFavorites(sessionsDir) {
4111
- const buf = readFileBuffer(path2.join(sessionsDir, FAVORITES_FILE));
5312
+ const buf = readFileOrNull(
5313
+ path2.join(sessionsDir, FAVORITES_FILE),
5314
+ (fd) => fs3.readFileSync(fd)
5315
+ );
4112
5316
  if (!buf) return /* @__PURE__ */ new Set();
4113
5317
  const parsed = parseJsonBuffer(buf);
4114
5318
  if (!Array.isArray(parsed)) return /* @__PURE__ */ new Set();
4115
5319
  return new Set(parsed.filter((id) => typeof id === "string"));
4116
5320
  }
4117
5321
  function loadSettingsFile(directory, sessionId) {
4118
- const buf = readFileBuffer(
4119
- path2.join(directory, `${sessionId}${SETTINGS_SUFFIX}`)
5322
+ const buf = readFileOrNull(
5323
+ path2.join(directory, `${sessionId}${SETTINGS_SUFFIX}`),
5324
+ (fd) => fs3.readFileSync(fd)
4120
5325
  );
4121
5326
  if (!buf) return null;
4122
5327
  const parsed = parseJsonBuffer(buf);
4123
5328
  if (parsed === null) return null;
4124
- const result = _chunkYSKO6SPTjs.SessionSettingsFileSchema.safeParse(parsed);
5329
+ const result = _chunkKAAWCHO4js.SessionSettingsFileSchema.safeParse(parsed);
4125
5330
  return result.success ? result.data : null;
4126
5331
  }
4127
5332
  function getMissionMetadataFromTags(settings) {
4128
- if (!_optionalChain([settings, 'optionalAccess', _67 => _67.tags])) return {};
5333
+ if (!_optionalChain([settings, 'optionalAccess', _131 => _131.tags])) return {};
4129
5334
  const missionTag = settings.tags.find(
4130
5335
  (tag) => tag.name.startsWith(MISSION_TAG_PREFIX)
4131
5336
  );
@@ -4133,17 +5338,19 @@ function getMissionMetadataFromTags(settings) {
4133
5338
  (tag) => tag.name === DECOMP_SESSION_TYPE_TAG
4134
5339
  );
4135
5340
  return {
4136
- decompMissionId: _optionalChain([missionTag, 'optionalAccess', _68 => _68.metadata, 'optionalAccess', _69 => _69[MISSION_ID_METADATA_KEY]]),
4137
- decompSessionType: _optionalChain([roleTag, 'optionalAccess', _70 => _70.metadata, 'optionalAccess', _71 => _71[DECOMP_SESSION_TYPE_METADATA_KEY]])
5341
+ decompMissionId: _optionalChain([missionTag, 'optionalAccess', _132 => _132.metadata, 'optionalAccess', _133 => _133[MISSION_ID_METADATA_KEY]]),
5342
+ decompSessionType: _optionalChain([roleTag, 'optionalAccess', _134 => _134.metadata, 'optionalAccess', _135 => _135[DECOMP_SESSION_TYPE_METADATA_KEY]])
4138
5343
  };
4139
5344
  }
4140
5345
  function parseSessionFile(candidate, ctx) {
4141
- const buf = readFileBuffer(candidate.sessionPath);
4142
- if (!buf) return null;
4143
- const scanned = scanBufferForLines(buf);
5346
+ const scanned = readFileOrNull(
5347
+ candidate.sessionPath,
5348
+ (fd) => scanSessionFile(fd, ctx.scratch)
5349
+ );
5350
+ if (!scanned) return null;
4144
5351
  const firstParsed = parseJsonBuffer(scanned.firstLine);
4145
5352
  if (firstParsed === null) return null;
4146
- const firstResult = _chunkYSKO6SPTjs.SessionStartEventSchema.safeParse(firstParsed);
5353
+ const firstResult = _chunkKAAWCHO4js.SessionStartEventSchema.safeParse(firstParsed);
4147
5354
  if (!firstResult.success) return null;
4148
5355
  const summary = firstResult.data;
4149
5356
  if (ctx.requiredCwd !== void 0 && (summary.cwd === void 0 || path2.resolve(summary.cwd) !== ctx.requiredCwd)) {
@@ -4151,9 +5358,9 @@ function parseSessionFile(candidate, ctx) {
4151
5358
  }
4152
5359
  const settingsName = `${candidate.sessionId}${SETTINGS_SUFFIX}`;
4153
5360
  const settings = candidate.siblingNames.has(settingsName) ? loadSettingsFile(candidate.directory, candidate.sessionId) : null;
4154
- if (_optionalChain([settings, 'optionalAccess', _72 => _72.archivedAt])) return null;
5361
+ if (_optionalChain([settings, 'optionalAccess', _136 => _136.archivedAt])) return null;
4155
5362
  const tagMeta = getMissionMetadataFromTags(settings);
4156
- const decompSessionType = _nullishCoalesce(summary.decompSessionType, () => ( _chunkYSKO6SPTjs.SessionStartDecompSessionTypeSchema.safeParse(tagMeta.decompSessionType).data));
5363
+ const decompSessionType = _nullishCoalesce(summary.decompSessionType, () => ( _chunkKAAWCHO4js.SessionStartDecompSessionTypeSchema.safeParse(tagMeta.decompSessionType).data));
4157
5364
  const messageCount = Math.max(0, scanned.nonEmptyLineCount - 1);
4158
5365
  return {
4159
5366
  id: candidate.sessionId,
@@ -4257,8 +5464,9 @@ async function listSessions(options = {}) {
4257
5464
  projectCandidates.sort(byMtimeDesc);
4258
5465
  legacyCandidates.sort(byMtimeDesc);
4259
5466
  const parseLimit = options.limit !== void 0 && options.limit >= 0 ? options.limit + PARSE_OVERSAMPLE : void 0;
4260
- const ctx = { favorites };
4261
- const legacyCtx = requiredCwd !== void 0 ? { favorites, requiredCwd } : ctx;
5467
+ const scratch = { chunk: void 0 };
5468
+ const ctx = { favorites, scratch };
5469
+ const legacyCtx = requiredCwd !== void 0 ? { favorites, scratch, requiredCwd } : ctx;
4262
5470
  const projectSessions = parseUpTo(projectCandidates, ctx, parseLimit);
4263
5471
  const legacySessions = parseUpTo(legacyCandidates, legacyCtx, parseLimit);
4264
5472
  const byId = /* @__PURE__ */ new Map();
@@ -4282,10 +5490,10 @@ async function listModels(options = {}) {
4282
5490
  const { includeDisabled, ...transportOptions } = options;
4283
5491
  const { client } = await createConfiguredClient(transportOptions);
4284
5492
  try {
4285
- const response = await client.listModels({
5493
+ const response2 = await client.listModels({
4286
5494
  ...includeDisabled !== void 0 && { includeDisabled }
4287
5495
  });
4288
- return _chunkYSKO6SPTjs.unwrapResponseResult.call(void 0, response).models;
5496
+ return _chunkKAAWCHO4js.unwrapResponseResult.call(void 0, response2).models;
4289
5497
  } finally {
4290
5498
  await closeQuietly(client);
4291
5499
  }
@@ -4740,5 +5948,54 @@ async function listModels(options = {}) {
4740
5948
 
4741
5949
 
4742
5950
 
4743
- exports.AbortError = _chunkYSKO6SPTjs.AbortError; exports.AddMcpServerRequestParamsSchema = _chunkYSKO6SPTjs.AddMcpServerRequestParamsSchema; exports.AddMcpServerRequestSchema = _chunkYSKO6SPTjs.AddMcpServerRequestSchema; exports.AddMcpServerResponseSchema = _chunkYSKO6SPTjs.AddMcpServerResponseSchema; exports.AddMcpServerResultSchema = _chunkYSKO6SPTjs.AddMcpServerResultSchema; exports.AddUserMessageRequestParamsSchema = _chunkYSKO6SPTjs.AddUserMessageRequestParamsSchema; exports.AddUserMessageRequestSchema = _chunkYSKO6SPTjs.AddUserMessageRequestSchema; exports.AddUserMessageResponseSchema = _chunkYSKO6SPTjs.AddUserMessageResponseSchema; exports.AddUserMessageResultSchema = _chunkYSKO6SPTjs.AddUserMessageResultSchema; exports.ApplyPatchToolConfirmationDetailsSchema = _chunkYSKO6SPTjs.ApplyPatchToolConfirmationDetailsSchema; exports.AskUserCollectedAnswerSchema = _chunkYSKO6SPTjs.AskUserCollectedAnswerSchema; exports.AskUserConfirmationDetailsSchema = _chunkYSKO6SPTjs.AskUserConfirmationDetailsSchema; exports.AskUserQuestionSchema = _chunkYSKO6SPTjs.AskUserQuestionSchema; exports.AskUserRequestParamsSchema = _chunkYSKO6SPTjs.AskUserRequestParamsSchema; exports.AskUserRequestSchema = _chunkYSKO6SPTjs.AskUserRequestSchema; exports.AskUserResponseSchema = _chunkYSKO6SPTjs.AskUserResponseSchema; exports.AskUserResultSchema = _chunkYSKO6SPTjs.AskUserResultSchema; exports.AssistantMessageRetractedNotificationSchema = _chunkYSKO6SPTjs.AssistantMessageRetractedNotificationSchema; exports.AssistantTextCompleteNotificationSchema = _chunkYSKO6SPTjs.AssistantTextCompleteNotificationSchema; exports.AssistantTextDeltaNotificationSchema = _chunkYSKO6SPTjs.AssistantTextDeltaNotificationSchema; exports.AuthenticateMcpServerRequestParamsSchema = _chunkYSKO6SPTjs.AuthenticateMcpServerRequestParamsSchema; exports.AuthenticateMcpServerRequestSchema = _chunkYSKO6SPTjs.AuthenticateMcpServerRequestSchema; exports.AuthenticateMcpServerResponseSchema = _chunkYSKO6SPTjs.AuthenticateMcpServerResponseSchema; exports.AuthenticateMcpServerResultSchema = _chunkYSKO6SPTjs.AuthenticateMcpServerResultSchema; exports.AutonomyLevel = _chunkYSKO6SPTjs.AutonomyLevel; exports.AvailableModelConfigSchema = _chunkYSKO6SPTjs.AvailableModelConfigSchema; exports.Base64ImageSourceSchema = _chunkYSKO6SPTjs.Base64ImageSourceSchema; exports.BaseNotificationSchema = _chunkYSKO6SPTjs.BaseNotificationSchema; exports.BaseRequestSchema = _chunkYSKO6SPTjs.BaseRequestSchema; exports.BaseResponseFailureSchema = _chunkYSKO6SPTjs.BaseResponseFailureSchema; exports.BaseResponseSuccessSchema = _chunkYSKO6SPTjs.BaseResponseSuccessSchema; exports.CLI_JSONRPC_CHILD_SPAWN_LATENCY_METRIC = CLI_JSONRPC_CHILD_SPAWN_LATENCY_METRIC; exports.COMPACTION_TIMEOUT = _chunkYSKO6SPTjs.COMPACTION_TIMEOUT; exports.CancelMcpAuthRequestParamsSchema = _chunkYSKO6SPTjs.CancelMcpAuthRequestParamsSchema; exports.CancelMcpAuthRequestSchema = _chunkYSKO6SPTjs.CancelMcpAuthRequestSchema; exports.CancelMcpAuthResponseSchema = _chunkYSKO6SPTjs.CancelMcpAuthResponseSchema; exports.CancelMcpAuthResultSchema = _chunkYSKO6SPTjs.CancelMcpAuthResultSchema; exports.ChangeWorkingDirectoryRequestParamsSchema = _chunkYSKO6SPTjs.ChangeWorkingDirectoryRequestParamsSchema; exports.ChangeWorkingDirectoryRequestSchema = _chunkYSKO6SPTjs.ChangeWorkingDirectoryRequestSchema; exports.ChangeWorkingDirectoryResponseSchema = _chunkYSKO6SPTjs.ChangeWorkingDirectoryResponseSchema; exports.ChangeWorkingDirectoryResultSchema = _chunkYSKO6SPTjs.ChangeWorkingDirectoryResultSchema; exports.ClearMcpAuthRequestParamsSchema = _chunkYSKO6SPTjs.ClearMcpAuthRequestParamsSchema; exports.ClearMcpAuthRequestSchema = _chunkYSKO6SPTjs.ClearMcpAuthRequestSchema; exports.ClearMcpAuthResponseSchema = _chunkYSKO6SPTjs.ClearMcpAuthResponseSchema; exports.ClearMcpAuthResultSchema = _chunkYSKO6SPTjs.ClearMcpAuthResultSchema; exports.CliRequestOrNotificationSchema = _chunkYSKO6SPTjs.CliRequestOrNotificationSchema; exports.ClientDestroyedError = _chunkYSKO6SPTjs.ClientDestroyedError; exports.ClientRequestSchema = _chunkYSKO6SPTjs.ClientRequestSchema; exports.ClientUiSurface = _chunkYSKO6SPTjs.ClientUiSurface; exports.CloseSessionRequestParamsSchema = _chunkYSKO6SPTjs.CloseSessionRequestParamsSchema; exports.CloseSessionRequestSchema = _chunkYSKO6SPTjs.CloseSessionRequestSchema; exports.CloseSessionResponseSchema = _chunkYSKO6SPTjs.CloseSessionResponseSchema; exports.CloseSessionResultSchema = _chunkYSKO6SPTjs.CloseSessionResultSchema; exports.CompactSessionRequestParamsSchema = _chunkYSKO6SPTjs.CompactSessionRequestParamsSchema; exports.CompactSessionRequestSchema = _chunkYSKO6SPTjs.CompactSessionRequestSchema; exports.CompactSessionResponseSchema = _chunkYSKO6SPTjs.CompactSessionResponseSchema; exports.CompactSessionResultSchema = _chunkYSKO6SPTjs.CompactSessionResultSchema; exports.ComputeLimitExceededError = _chunkYSKO6SPTjs.ComputeLimitExceededError; exports.ComputerConnectAttemptTrigger = _chunkYSKO6SPTjs.ComputerConnectAttemptTrigger; exports.ComputerConnectStartType = _chunkYSKO6SPTjs.ComputerConnectStartType; exports.ComputerListResponseSchema = _chunkYSKO6SPTjs.ComputerListResponseSchema; exports.ComputerMetricSchema = _chunkYSKO6SPTjs.ComputerMetricSchema; exports.ComputerMetricsResponseSchema = _chunkYSKO6SPTjs.ComputerMetricsResponseSchema; exports.ComputerSchema = _chunkYSKO6SPTjs.ComputerSchema; exports.ConcurrentStreamError = _chunkYSKO6SPTjs.ConcurrentStreamError; exports.ConnectionClosedError = _chunkYSKO6SPTjs.ConnectionClosedError; exports.ConnectionError = _chunkYSKO6SPTjs.ConnectionError; exports.ConnectionFailureReason = _chunkYSKO6SPTjs.ConnectionFailureReason; exports.ContentBlockSchema = _chunkYSKO6SPTjs.ContentBlockSchema; exports.ContextBreakdownCategorySchema = _chunkYSKO6SPTjs.ContextBreakdownCategorySchema; exports.ContextBreakdownResultSchema = _chunkYSKO6SPTjs.GetContextBreakdownResultSchema; exports.ContextStatsAccuracy = _chunkYSKO6SPTjs.ContextStatsAccuracy; exports.ContextStatsSchema = _chunkYSKO6SPTjs.ContextStatsSchema; exports.CreateMessageNotificationSchema = _chunkYSKO6SPTjs.CreateMessageNotificationSchema; exports.CreateToolConfirmationDetailsSchema = _chunkYSKO6SPTjs.CreateToolConfirmationDetailsSchema; exports.DEFAULT_LOCAL_DAEMON_WS_URL = _chunkYSKO6SPTjs.DEFAULT_LOCAL_DAEMON_WS_URL; exports.DEFAULT_REQUEST_TIMEOUT = _chunkYSKO6SPTjs.DEFAULT_REQUEST_TIMEOUT; exports.DaemonAuthenticationMode = _chunkYSKO6SPTjs.DaemonAuthenticationMode; exports.DaemonClient = _chunkYSKO6SPTjs.DaemonClient; exports.DaemonClientMetaError = _chunkYSKO6SPTjs.MetaError; exports.DaemonDroidEvent = _chunkYSKO6SPTjs.DaemonDroidEvent; exports.DaemonRequestPermissionSchema = _chunkYSKO6SPTjs.DaemonRequestPermissionSchema; exports.DaemonSessionController = _chunkYSKO6SPTjs.DaemonSessionController; exports.DecompSessionType = _chunkYSKO6SPTjs.DecompSessionType; exports.DiscoveredIssueSchema = _chunkYSKO6SPTjs.DiscoveredIssueSchema; exports.DismissalRecordSchema = _chunkYSKO6SPTjs.DismissalRecordSchema; exports.DismissalType = _chunkYSKO6SPTjs.DismissalType; exports.DocumentBlockSchema = _chunkYSKO6SPTjs.DocumentBlockSchema; exports.DocumentSourceSchema = _chunkYSKO6SPTjs.DocumentSourceSchema; exports.DroidClient = DroidClient; exports.DroidClientError = _chunkYSKO6SPTjs.DroidClientError; exports.DroidClientEvent = DroidClientEvent; exports.DroidClientMethod = _chunkYSKO6SPTjs.DroidClientMethod; exports.DroidErrorType = _chunkYSKO6SPTjs.DroidErrorType; exports.DroidEvent = _chunkYSKO6SPTjs.DroidEvent; exports.DroidHookEventSchema = _chunkYSKO6SPTjs.DroidHookEventSchema; exports.DroidHookExecutionResultSchema = _chunkYSKO6SPTjs.DroidHookExecutionResultSchema; exports.DroidHookOutputSchema = _chunkYSKO6SPTjs.DroidHookOutputSchema; exports.DroidHookSpecificOutputSchema = _chunkYSKO6SPTjs.DroidHookSpecificOutputSchema; exports.DroidInteractionMode = _chunkYSKO6SPTjs.DroidInteractionMode; exports.DroidMessageType = _chunkYSKO6SPTjs.DroidMessageType; exports.DroidProcessManager = DroidProcessManager; exports.DroidProcessMode = DroidProcessMode; exports.DroidServerMethod = _chunkYSKO6SPTjs.DroidServerMethod; exports.DroidSession = DroidSession; exports.DroidWorkingState = _chunkYSKO6SPTjs.DroidWorkingState; exports.DroidWorkingStateChangedNotificationSchema = _chunkYSKO6SPTjs.DroidWorkingStateChangedNotificationSchema; exports.EditToolConfirmationDetailsSchema = _chunkYSKO6SPTjs.EditToolConfirmationDetailsSchema; exports.EmptyResultSchema = _chunkYSKO6SPTjs.EmptyResultSchema; exports.ErrorDetailSchema = _chunkYSKO6SPTjs.ErrorDetailSchema; exports.ErrorNotificationSchema = _chunkYSKO6SPTjs.ErrorNotificationSchema; exports.ExecToolInfoSchema = _chunkYSKO6SPTjs.ExecToolInfoSchema; exports.ExecuteRewindRequestParamsSchema = _chunkYSKO6SPTjs.ExecuteRewindRequestParamsSchema; exports.ExecuteRewindRequestSchema = _chunkYSKO6SPTjs.ExecuteRewindRequestSchema; exports.ExecuteRewindResponseSchema = _chunkYSKO6SPTjs.ExecuteRewindResponseSchema; exports.ExecuteRewindResultSchema = _chunkYSKO6SPTjs.ExecuteRewindResultSchema; exports.ExecuteToolConfirmationDetailsSchema = _chunkYSKO6SPTjs.ExecuteToolConfirmationDetailsSchema; exports.ExitSpecModeConfirmationDetailsSchema = _chunkYSKO6SPTjs.ExitSpecModeConfirmationDetailsSchema; exports.FACTORY_CLIENT_HEADER = _chunkYSKO6SPTjs.FACTORY_CLIENT_HEADER; exports.FACTORY_CLIENT_VERSION = _chunkYSKO6SPTjs.FACTORY_CLIENT_VERSION; exports.FACTORY_PROTOCOL_VERSION = _chunkYSKO6SPTjs.FACTORY_PROTOCOL_VERSION2; exports.FactoryDaemonTransport = _chunkYSKO6SPTjs.FactoryDaemonTransport; exports.FactoryDroidMessageRole = _chunkYSKO6SPTjs.FactoryDroidMessageRole; exports.FactoryDroidMessageSchema = _chunkYSKO6SPTjs.FactoryDroidMessageSchema; exports.FeatureStatus = _chunkYSKO6SPTjs.FeatureStatus; exports.FeatureSuccessState = _chunkYSKO6SPTjs.FeatureSuccessState; exports.FeatureSuccessStateSchema = _chunkYSKO6SPTjs.FeatureSuccessStateSchema; exports.ForkSessionRequestParamsSchema = _chunkYSKO6SPTjs.ForkSessionRequestParamsSchema; exports.ForkSessionRequestSchema = _chunkYSKO6SPTjs.ForkSessionRequestSchema; exports.ForkSessionResponseSchema = _chunkYSKO6SPTjs.ForkSessionResponseSchema; exports.ForkSessionResultSchema = _chunkYSKO6SPTjs.ForkSessionResultSchema; exports.GetContextStatsRequestParamsSchema = _chunkYSKO6SPTjs.GetContextStatsRequestParamsSchema; exports.GetContextStatsRequestSchema = _chunkYSKO6SPTjs.GetContextStatsRequestSchema; exports.GetContextStatsResponseSchema = _chunkYSKO6SPTjs.GetContextStatsResponseSchema; exports.GetContextStatsResultSchema = _chunkYSKO6SPTjs.ContextStatsSchema; exports.GetRewindInfoRequestParamsSchema = _chunkYSKO6SPTjs.GetRewindInfoRequestParamsSchema; exports.GetRewindInfoRequestSchema = _chunkYSKO6SPTjs.GetRewindInfoRequestSchema; exports.GetRewindInfoResponseSchema = _chunkYSKO6SPTjs.GetRewindInfoResponseSchema; exports.GetRewindInfoResultSchema = _chunkYSKO6SPTjs.GetRewindInfoResultSchema; exports.GitRepoInfoSchema = _chunkYSKO6SPTjs.GitRepoInfoSchema; exports.HandoffItemsDismissedEntrySchema = _chunkYSKO6SPTjs.HandoffItemsDismissedEntrySchema; exports.HandoffSchema = _chunkYSKO6SPTjs.HandoffSchema; exports.HookCommandSchema = _chunkYSKO6SPTjs.HookCommandSchema; exports.HookExecutionCompletedNotificationSchema = _chunkYSKO6SPTjs.HookExecutionCompletedNotificationSchema; exports.HookExecutionStartedNotificationSchema = _chunkYSKO6SPTjs.HookExecutionStartedNotificationSchema; exports.HookResultSchema = _chunkYSKO6SPTjs.HookResultSchema; exports.HttpHeaderSchema = _chunkYSKO6SPTjs.HttpHeaderSchema; exports.HttpMcpConfigSchema = _chunkYSKO6SPTjs.HttpMcpSchema; exports.IPC_DAEMON_URL = _chunkYSKO6SPTjs.IPC_DAEMON_URL; exports.ImageBlockSchema = _chunkYSKO6SPTjs.ImageBlockSchema; exports.InProcessDaemonClientTransport = _chunkYSKO6SPTjs.InProcessDaemonClientTransport; exports.InitializeSessionRequestParamsSchema = _chunkYSKO6SPTjs.InitializeSessionRequestParamsSchema; exports.InitializeSessionRequestSchema = _chunkYSKO6SPTjs.InitializeSessionRequestSchema; exports.InitializeSessionResponseSchema = _chunkYSKO6SPTjs.InitializeSessionResponseSchema; exports.InitializeSessionResultSchema = _chunkYSKO6SPTjs.InitializeSessionResultSchema2; exports.InteractiveCheckSchema = _chunkYSKO6SPTjs.InteractiveCheckSchema; exports.InterruptSessionRequestParamsSchema = _chunkYSKO6SPTjs.InterruptSessionRequestParamsSchema; exports.InterruptSessionRequestSchema = _chunkYSKO6SPTjs.InterruptSessionRequestSchema; exports.InterruptSessionResponseSchema = _chunkYSKO6SPTjs.InterruptSessionResponseSchema; exports.InterruptSessionResultSchema = _chunkYSKO6SPTjs.InterruptSessionResultSchema; exports.InvalidSessionCwdError = _chunkYSKO6SPTjs.InvalidSessionCwdError; exports.IpcDaemonClientTransport = _chunkYSKO6SPTjs.IpcDaemonClientTransport; exports.IssueSeverity = _chunkYSKO6SPTjs.IssueSeverity; exports.JSONRPC_VERSION = _chunkYSKO6SPTjs.JSONRPC_VERSION3; exports.JsonArraySchema = _chunkYSKO6SPTjs.JsonArraySchema; exports.JsonObjectSchema = _chunkYSKO6SPTjs.JsonObjectSchema; exports.JsonRpcEnvelopeSchema = _chunkYSKO6SPTjs.JsonRpcEnvelopeSchema; exports.JsonRpcErrorCode = _chunkYSKO6SPTjs.JsonRpcErrorCode; exports.JsonRpcErrorSchema = _chunkYSKO6SPTjs.JsonRpcErrorSchema; exports.JsonRpcMessageSchema = _chunkYSKO6SPTjs.JsonRpcMessageSchema; exports.JsonRpcMessageType = _chunkYSKO6SPTjs.JsonRpcMessageType; exports.JsonRpcNotificationSchema = _chunkYSKO6SPTjs.JsonRpcNotificationSchema; exports.JsonRpcRequestError = _chunkYSKO6SPTjs.JsonRpcRequestError; exports.JsonRpcRequestSchema = _chunkYSKO6SPTjs.JsonRpcRequestSchema; exports.JsonRpcResponseFailureSchema = _chunkYSKO6SPTjs.JsonRpcResponseFailureSchema; exports.JsonRpcResponseSchema = _chunkYSKO6SPTjs.JsonRpcResponseSchema; exports.JsonRpcResponseSuccessSchema = _chunkYSKO6SPTjs.JsonRpcResponseSuccessSchema; exports.JsonValueSchema = _chunkYSKO6SPTjs.JsonValueSchema; exports.KillWorkerSessionRequestParamsSchema = _chunkYSKO6SPTjs.KillWorkerSessionRequestParamsSchema; exports.KillWorkerSessionRequestSchema = _chunkYSKO6SPTjs.KillWorkerSessionRequestSchema; exports.KillWorkerSessionResponseSchema = _chunkYSKO6SPTjs.KillWorkerSessionResponseSchema; exports.KillWorkerSessionResultSchema = _chunkYSKO6SPTjs.KillWorkerSessionResultSchema; exports.LEGACY_FACTORY_API_VERSION = _chunkYSKO6SPTjs.LEGACY_FACTORY_API_VERSION2; exports.LOCAL_MACHINE_ID = _chunkYSKO6SPTjs.LOCAL_MACHINE_ID; exports.ListMcpRegistryRequestParamsSchema = _chunkYSKO6SPTjs.ListMcpRegistryRequestParamsSchema; exports.ListMcpRegistryRequestSchema = _chunkYSKO6SPTjs.ListMcpRegistryRequestSchema; exports.ListMcpRegistryResponseSchema = _chunkYSKO6SPTjs.ListMcpRegistryResponseSchema; exports.ListMcpRegistryResultSchema = _chunkYSKO6SPTjs.ListMcpRegistryResultSchema; exports.ListMcpServersRequestParamsSchema = _chunkYSKO6SPTjs.ListMcpServersRequestParamsSchema; exports.ListMcpServersRequestSchema = _chunkYSKO6SPTjs.ListMcpServersRequestSchema; exports.ListMcpServersResponseSchema = _chunkYSKO6SPTjs.ListMcpServersResponseSchema; exports.ListMcpServersResultSchema = _chunkYSKO6SPTjs.ListMcpServersResultSchema; exports.ListMcpToolsRequestParamsSchema = _chunkYSKO6SPTjs.ListMcpToolsRequestParamsSchema; exports.ListMcpToolsRequestSchema = _chunkYSKO6SPTjs.ListMcpToolsRequestSchema; exports.ListMcpToolsResponseSchema = _chunkYSKO6SPTjs.ListMcpToolsResponseSchema; exports.ListMcpToolsResultSchema = _chunkYSKO6SPTjs.ListMcpToolsResultSchema; exports.ListModelsOptionsSchema = _chunkYSKO6SPTjs.ListModelsOptionsSchema; exports.ListModelsResultSchema = _chunkYSKO6SPTjs.ListModelsResultSchema; exports.ListSkillsRequestParamsSchema = _chunkYSKO6SPTjs.ListSkillsRequestParamsSchema; exports.ListSkillsRequestSchema = _chunkYSKO6SPTjs.ListSkillsRequestSchema; exports.ListSkillsResponseSchema = _chunkYSKO6SPTjs.ListSkillsResponseSchema; exports.ListSkillsResultSchema = _chunkYSKO6SPTjs.ListSkillsResultSchema; exports.ListToolsRequestParamsSchema = _chunkYSKO6SPTjs.ListToolsRequestParamsSchema; exports.ListToolsRequestSchema = _chunkYSKO6SPTjs.ListToolsRequestSchema; exports.ListToolsResponseSchema = _chunkYSKO6SPTjs.ListToolsResponseSchema; exports.ListToolsResultSchema = _chunkYSKO6SPTjs.ListToolsResultSchema; exports.LoadSessionRequestParamsSchema = _chunkYSKO6SPTjs.LoadSessionRequestParamsSchema; exports.LoadSessionRequestSchema = _chunkYSKO6SPTjs.LoadSessionRequestSchema; exports.LoadSessionResponseSchema = _chunkYSKO6SPTjs.LoadSessionResponseSchema; exports.LoadSessionResultSchema = _chunkYSKO6SPTjs.LoadSessionResultSchema; exports.MACHINE_TYPE_WEBSOCKET_OVERRIDES = _chunkYSKO6SPTjs.MACHINE_TYPE_WEBSOCKET_OVERRIDES; exports.MANAGED_COMPUTER_MAX_RETRIES = _chunkYSKO6SPTjs.MANAGED_COMPUTER_MAX_RETRIES; exports.MCP_AUTH_TIMEOUT = _chunkYSKO6SPTjs.MCP_AUTH_TIMEOUT; exports.MachineTemplateBuildStatusSchema = _chunkYSKO6SPTjs.MachineTemplateBuildStatusSchema; exports.MachineTemplateListResponseSchema = _chunkYSKO6SPTjs.MachineTemplateListResponseSchema; exports.MachineTemplateSchema = _chunkYSKO6SPTjs.MachineTemplateSchema; exports.MachineType = _chunkYSKO6SPTjs.MachineType; exports.ManagedProcessImpl = ManagedProcessImpl; exports.McpAuthCompletedNotificationSchema = _chunkYSKO6SPTjs.McpAuthCompletedNotificationSchema; exports.McpAuthOutcome = _chunkYSKO6SPTjs.McpAuthOutcome; exports.McpAuthRequiredNotificationSchema = _chunkYSKO6SPTjs.McpAuthRequiredNotificationSchema; exports.McpHttpServerConfigFieldsSchema = _chunkYSKO6SPTjs.McpHttpServerConfigFieldsSchema; exports.McpRegistryServerSchema = _chunkYSKO6SPTjs.McpRegistryServerSchema; exports.McpServerConfigSchema = _chunkYSKO6SPTjs.McpServerConfigSchema; exports.McpServerStatus = _chunkYSKO6SPTjs.McpServerStatus; exports.McpServerStatusInfoSchema = _chunkYSKO6SPTjs.McpServerStatusInfoSchema; exports.McpServerType = _chunkYSKO6SPTjs.McpServerType; exports.McpSseServerConfigFieldsSchema = _chunkYSKO6SPTjs.McpSseServerConfigFieldsSchema; exports.McpStatus = _chunkYSKO6SPTjs.McpStatus; exports.McpStatusChangedNotificationSchema = _chunkYSKO6SPTjs.McpStatusChangedNotificationSchema; exports.McpStatusSummarySchema = _chunkYSKO6SPTjs.McpStatusSummarySchema; exports.McpStdioServerConfigFieldsSchema = _chunkYSKO6SPTjs.McpStdioServerConfigFieldsSchema; exports.McpToolConfirmationDetailsSchema = _chunkYSKO6SPTjs.McpToolConfirmationDetailsSchema; exports.McpToolInfoSchema = _chunkYSKO6SPTjs.McpToolInfoSchema; exports.McpToolInputSchemaSchema = _chunkYSKO6SPTjs.McpToolInputSchemaSchema; exports.MessageVisibility = _chunkYSKO6SPTjs.MessageVisibility; exports.Metric = _chunkYSKO6SPTjs.Metric; exports.MilestoneValidationTriggeredEntrySchema = _chunkYSKO6SPTjs.MilestoneValidationTriggeredEntrySchema; exports.MissionAcceptedEntrySchema = _chunkYSKO6SPTjs.MissionAcceptedEntrySchema; exports.MissionFeatureSchema = _chunkYSKO6SPTjs.MissionFeatureSchema; exports.MissionFeaturesChangedNotificationSchema = _chunkYSKO6SPTjs.MissionFeaturesChangedNotificationSchema; exports.MissionHeartbeatNotificationSchema = _chunkYSKO6SPTjs.MissionHeartbeatNotificationSchema; exports.MissionPausedEntrySchema = _chunkYSKO6SPTjs.MissionPausedEntrySchema; exports.MissionProgressEntryNotificationSchema = _chunkYSKO6SPTjs.MissionProgressEntryNotificationSchema; exports.MissionResumedEntrySchema = _chunkYSKO6SPTjs.MissionResumedEntrySchema; exports.MissionRunStartedEntrySchema = _chunkYSKO6SPTjs.MissionRunStartedEntrySchema; exports.MissionSnapshotSchema = _chunkYSKO6SPTjs.MissionStateSchema; exports.MissionState = _chunkYSKO6SPTjs.MissionState; exports.MissionStateChangedNotificationSchema = _chunkYSKO6SPTjs.MissionStateChangedNotificationSchema; exports.MissionWorkerCompletedNotificationSchema = _chunkYSKO6SPTjs.MissionWorkerCompletedNotificationSchema; exports.MissionWorkerStartedNotificationSchema = _chunkYSKO6SPTjs.MissionWorkerStartedNotificationSchema; exports.ModelInfoSchema = _chunkYSKO6SPTjs.ModelInfoSchema; exports.ModelMetadataSchema = _chunkYSKO6SPTjs.ModelMetadataSchema; exports.ModelProvider = _chunkYSKO6SPTjs.ModelProvider; exports.MultiMissionStateManager = _chunkYSKO6SPTjs.MultiMissionStateManager; exports.MultiSessionStateManager = _chunkYSKO6SPTjs.MultiSessionStateManager; exports.OtelTracing = _chunkYSKO6SPTjs.OtelTracing; exports.OutputFormatSchema = _chunkYSKO6SPTjs.OutputFormatSchema; exports.OutputFormatType = _chunkYSKO6SPTjs.OutputFormatType; exports.PermissionResolvedNotificationSchema = _chunkYSKO6SPTjs.PermissionResolvedNotificationSchema; exports.ProcessExitError = _chunkYSKO6SPTjs.ProcessExitError; exports.ProcessTransport = ProcessTransport; exports.ProgressLogEntrySchema = _chunkYSKO6SPTjs.ProgressLogEntrySchema; exports.ProgressLogEntryType = _chunkYSKO6SPTjs.ProgressLogEntryType; exports.ProposeMissionConfirmationDetailsSchema = _chunkYSKO6SPTjs.ProposeMissionConfirmationDetailsSchema; exports.ProtocolError = _chunkYSKO6SPTjs.ProtocolError; exports.QueuedUserMessageDisplayGroup = _chunkYSKO6SPTjs.QueuedUserMessageDisplayGroup; exports.QueuedUserMessageKind = _chunkYSKO6SPTjs.QueuedUserMessageKind; exports.REWIND_TIMEOUT = _chunkYSKO6SPTjs.REWIND_TIMEOUT; exports.ReasoningEffort = _chunkYSKO6SPTjs.ReasoningEffort; exports.RedactedThinkingBlockSchema = _chunkYSKO6SPTjs.RedactedThinkingBlockSchema; exports.RefreshComputerResponseSchema = _chunkYSKO6SPTjs.RefreshComputerResponseSchema; exports.RelayConnectionError = _chunkYSKO6SPTjs.RelayConnectionError; exports.RemoteSessionListResponseSchema = _chunkYSKO6SPTjs.RemoteSessionListResponseSchema; exports.RemoteSessionSchema = _chunkYSKO6SPTjs.RemoteSessionSchema; exports.RemoveMcpServerRequestParamsSchema = _chunkYSKO6SPTjs.RemoveMcpServerRequestParamsSchema; exports.RemoveMcpServerRequestSchema = _chunkYSKO6SPTjs.RemoveMcpServerRequestSchema; exports.RemoveMcpServerResponseSchema = _chunkYSKO6SPTjs.RemoveMcpServerResponseSchema; exports.RemoveMcpServerResultSchema = _chunkYSKO6SPTjs.RemoveMcpServerResultSchema; exports.RenameSessionRequestParamsSchema = _chunkYSKO6SPTjs.RenameSessionRequestParamsSchema; exports.RenameSessionRequestSchema = _chunkYSKO6SPTjs.RenameSessionRequestSchema; exports.RenameSessionResponseSchema = _chunkYSKO6SPTjs.RenameSessionResponseSchema; exports.RenameSessionResultSchema = _chunkYSKO6SPTjs.RenameSessionResultSchema; exports.RequestPermissionRequestParamsSchema = _chunkYSKO6SPTjs.RequestPermissionRequestParamsSchema; exports.RequestPermissionRequestSchema = _chunkYSKO6SPTjs.RequestPermissionRequestSchema; exports.RequestPermissionResponseSchema = _chunkYSKO6SPTjs.RequestPermissionResponseSchema; exports.RequestPermissionResultSchema = _chunkYSKO6SPTjs.RequestPermissionResultSchema; exports.RewindEvictedFileSchema = _chunkYSKO6SPTjs.RewindEvictedFileSchema; exports.RewindFileCreationSchema = _chunkYSKO6SPTjs.RewindFileCreationSchema; exports.RewindFileSnapshotSchema = _chunkYSKO6SPTjs.RewindFileSnapshotSchema; exports.SDK_TAG = _chunkYSKO6SPTjs.SDK_TAG; exports.SDK_VERSION = _chunkYSKO6SPTjs.SDK_VERSION; exports.SESSION_INIT_TIMEOUT = _chunkYSKO6SPTjs.SESSION_INIT_TIMEOUT; exports.SLACK_DELEGATION_MAX_RETRIES = _chunkYSKO6SPTjs.SLACK_DELEGATION_MAX_RETRIES; exports.SdkMcpServer = SdkMcpServer; exports.ServerRequestHandlerType = _chunkYSKO6SPTjs.ServerRequestHandlerType; exports.SessionError = _chunkYSKO6SPTjs.SessionError; exports.SessionMetadataSchema = _chunkYSKO6SPTjs.SessionMetadataSchema; exports.SessionNotFoundError = _chunkYSKO6SPTjs.SessionNotFoundError; exports.SessionNotificationParamsSchema = _chunkYSKO6SPTjs.SessionNotificationParamsSchema; exports.SessionNotificationPayloadSchema = _chunkYSKO6SPTjs.SessionNotificationPayloadSchema; exports.SessionNotificationSchema = _chunkYSKO6SPTjs.SessionNotificationSchema; exports.SessionNotificationSchemaList = _chunkYSKO6SPTjs.SessionNotificationSchemaList; exports.SessionNotificationType = _chunkYSKO6SPTjs.SessionNotificationType; exports.SessionPlatform = _chunkYSKO6SPTjs.SessionPlatform; exports.SessionReplacedError = _chunkYSKO6SPTjs.SessionReplacedError; exports.SessionReplacementError = _chunkYSKO6SPTjs.SessionReplacementError; exports.SessionSettingsFileSchema = _chunkYSKO6SPTjs.SessionSettingsFileSchema; exports.SessionSettingsSchema = _chunkYSKO6SPTjs.SessionSettingsSchema; exports.SessionSourceSchema = _chunkYSKO6SPTjs.SessionSourceSchema; exports.SessionStartEventSchema = _chunkYSKO6SPTjs.SessionStartEventSchema; exports.SessionTagSchema = _chunkYSKO6SPTjs.SessionTagSchema; exports.SessionTitleUpdatedNotificationSchema = _chunkYSKO6SPTjs.SessionTitleUpdatedNotificationSchema; exports.SessionTokenUsageChangedNotificationSchema = _chunkYSKO6SPTjs.SessionTokenUsageChangedNotificationSchema; exports.SetSkillDisabledRequestParamsSchema = _chunkYSKO6SPTjs.SetSkillDisabledRequestParamsSchema; exports.SetSkillDisabledRequestSchema = _chunkYSKO6SPTjs.SetSkillDisabledRequestSchema; exports.SetSkillDisabledResponseSchema = _chunkYSKO6SPTjs.SetSkillDisabledResponseSchema; exports.SetSkillDisabledResultSchema = _chunkYSKO6SPTjs.SetSkillDisabledResultSchema; exports.SettingsLevel = _chunkYSKO6SPTjs.SettingsLevel; exports.SettingsUpdatedNotificationSchema = _chunkYSKO6SPTjs.SettingsUpdatedNotificationSchema; exports.SettingsUpdatedPayloadSchema = _chunkYSKO6SPTjs.SettingsUpdatedPayloadSchema; exports.SkillDeviationSchema = _chunkYSKO6SPTjs.SkillDeviationSchema; exports.SkillFeedbackSchema = _chunkYSKO6SPTjs.SkillFeedbackSchema; exports.SkillInfoSchema = _chunkYSKO6SPTjs.SkillInfoSchema; exports.SkillLocation = _chunkYSKO6SPTjs.SkillLocation; exports.SkillResourceSchema = _chunkYSKO6SPTjs.SkillResourceSchema; exports.SpanAttribute = _chunkYSKO6SPTjs.SpanAttribute; exports.SpanEvent = _chunkYSKO6SPTjs.SpanEvent; exports.SpanName = _chunkYSKO6SPTjs.SpanName; exports.SseMcpConfigSchema = _chunkYSKO6SPTjs.SseMcpSchema; exports.StartMissionRunConfirmationDetailsSchema = _chunkYSKO6SPTjs.StartMissionRunConfirmationDetailsSchema; exports.StdioMcpConfigSchema = _chunkYSKO6SPTjs.StdioMcpSchema; exports.StreamStateTracker = _chunkYSKO6SPTjs.StreamStateTracker; exports.StructuredOutputErrorSchema = _chunkYSKO6SPTjs.StructuredOutputErrorSchema; exports.StructuredOutputNotificationSchema = _chunkYSKO6SPTjs.StructuredOutputNotificationSchema; exports.SubmitBugReportRequestParamsSchema = _chunkYSKO6SPTjs.SubmitBugReportRequestParamsSchema; exports.SubmitBugReportRequestSchema = _chunkYSKO6SPTjs.SubmitBugReportRequestSchema; exports.SubmitBugReportResponseSchema = _chunkYSKO6SPTjs.SubmitBugReportResponseSchema; exports.SubmitBugReportResultSchema = _chunkYSKO6SPTjs.SubmitBugReportResultSchema; exports.SubmitMcpAuthCodeRequestParamsSchema = _chunkYSKO6SPTjs.SubmitMcpAuthCodeRequestParamsSchema; exports.SubmitMcpAuthCodeRequestSchema = _chunkYSKO6SPTjs.SubmitMcpAuthCodeRequestSchema; exports.SubmitMcpAuthCodeResponseSchema = _chunkYSKO6SPTjs.SubmitMcpAuthCodeResponseSchema; exports.SubmitMcpAuthCodeResultSchema = _chunkYSKO6SPTjs.SubmitMcpAuthCodeResultSchema; exports.SuccessResultSchema = _chunkYSKO6SPTjs.SuccessResultSchema; exports.TestCaseSchema = _chunkYSKO6SPTjs.TestCaseSchema; exports.TestFileSchema = _chunkYSKO6SPTjs.TestFileSchema; exports.TestsSchema = _chunkYSKO6SPTjs.TestsSchema; exports.TextBlockSchema = _chunkYSKO6SPTjs.TextBlockSchema; exports.ThinkingBlockSchema = _chunkYSKO6SPTjs.ThinkingBlockSchema; exports.ThinkingTextCompleteNotificationSchema = _chunkYSKO6SPTjs.ThinkingTextCompleteNotificationSchema; exports.ThinkingTextDeltaNotificationSchema = _chunkYSKO6SPTjs.ThinkingTextDeltaNotificationSchema; exports.TimeoutError = _chunkYSKO6SPTjs.TimeoutError; exports.ToggleMcpServerRequestParamsSchema = _chunkYSKO6SPTjs.ToggleMcpServerRequestParamsSchema; exports.ToggleMcpServerRequestSchema = _chunkYSKO6SPTjs.ToggleMcpServerRequestSchema; exports.ToggleMcpServerResponseSchema = _chunkYSKO6SPTjs.ToggleMcpServerResponseSchema; exports.ToggleMcpServerResultSchema = _chunkYSKO6SPTjs.ToggleMcpServerResultSchema; exports.ToggleMcpToolRequestParamsSchema = _chunkYSKO6SPTjs.ToggleMcpToolRequestParamsSchema; exports.ToggleMcpToolRequestSchema = _chunkYSKO6SPTjs.ToggleMcpToolRequestSchema; exports.ToggleMcpToolResponseSchema = _chunkYSKO6SPTjs.ToggleMcpToolResponseSchema; exports.ToggleMcpToolResultSchema = _chunkYSKO6SPTjs.ToggleMcpToolResultSchema; exports.TokenUsageSchema = _chunkYSKO6SPTjs.TokenUsageSchema; exports.ToolCallNotificationSchema = _chunkYSKO6SPTjs.ToolCallNotificationSchema; exports.ToolConfirmationDetailsSchema = _chunkYSKO6SPTjs.ToolConfirmationDetailsSchema; exports.ToolConfirmationInfoSchema = _chunkYSKO6SPTjs.ToolConfirmationInfoSchema; exports.ToolConfirmationListItemSchema = _chunkYSKO6SPTjs.ToolConfirmationListItemSchema; exports.ToolConfirmationOutcome = _chunkYSKO6SPTjs.ToolConfirmationOutcome; exports.ToolConfirmationType = _chunkYSKO6SPTjs.ToolConfirmationType; exports.ToolProgressUpdateNotificationSchema = _chunkYSKO6SPTjs.ToolProgressUpdateNotificationSchema; exports.ToolProgressUpdateSchema = _chunkYSKO6SPTjs.ToolProgressUpdateSchema; exports.ToolResultBlockSchema = _chunkYSKO6SPTjs.ToolResultSchema; exports.ToolResultNotificationSchema = _chunkYSKO6SPTjs.ToolResultNotificationSchema; exports.ToolSelectionOverridesSchema = _chunkYSKO6SPTjs.ToolSelectionOverridesSchema; exports.ToolUseBlockSchema = _chunkYSKO6SPTjs.ToolUseSchema; exports.ToolUseSchema = _chunkYSKO6SPTjs.ToolUseSchema2; exports.TraceContextMetaSchema = _chunkYSKO6SPTjs.TraceContextMetaSchema; exports.TransportDirection = TransportDirection; exports.TunnelConnection = _chunkYSKO6SPTjs.TunnelConnection; exports.UpdateSessionSettingsRequestParamsSchema = _chunkYSKO6SPTjs.UpdateSessionSettingsRequestParamsSchema; exports.UpdateSessionSettingsRequestSchema = _chunkYSKO6SPTjs.UpdateSessionSettingsRequestSchema; exports.UpdateSessionSettingsResponseSchema = _chunkYSKO6SPTjs.UpdateSessionSettingsResponseSchema; exports.UpdateSessionSettingsResultSchema = _chunkYSKO6SPTjs.UpdateSessionSettingsResultSchema; exports.VerificationCommandSchema = _chunkYSKO6SPTjs.VerificationCommandSchema; exports.VerificationSchema = _chunkYSKO6SPTjs.VerificationSchema; exports.WINDOWS_JOB_OBJECT_ERROR_MARKER = WINDOWS_JOB_OBJECT_ERROR_MARKER; exports.WebSocketConnectionError = _chunkYSKO6SPTjs.WebSocketConnectionError; exports.WebSocketDaemonTransport = _chunkYSKO6SPTjs.WebSocketDaemonTransport; exports.WorkerCompletedEntrySchema = _chunkYSKO6SPTjs.WorkerCompletedEntrySchema; exports.WorkerFailedEntrySchema = _chunkYSKO6SPTjs.WorkerFailedEntrySchema; exports.WorkerPausedEntrySchema = _chunkYSKO6SPTjs.WorkerPausedEntrySchema; exports.WorkerSelectedFeatureEntrySchema = _chunkYSKO6SPTjs.WorkerSelectedFeatureEntrySchema; exports.WorkerStartedEntrySchema = _chunkYSKO6SPTjs.WorkerStartedEntrySchema; exports.WorkerStateInfoSchema = _chunkYSKO6SPTjs.WorkerStateInfoSchema; exports.__resetTransportLoggerForTests = __resetTransportLoggerForTests; exports.buildUserMessageContentBlocks = _chunkYSKO6SPTjs.buildUserMessageContentBlocks; exports.configureDaemonCoreDeps = _chunkYSKO6SPTjs.configureDaemonCoreDeps; exports.connectAndAuthenticate = _chunkYSKO6SPTjs.connectAndAuthenticate; exports.connectToDaemon = _chunkYSKO6SPTjs.connectToDaemon; exports.connectWithRetry = _chunkYSKO6SPTjs.connectWithRetry; exports.convertNotificationToStreamMessage = _chunkYSKO6SPTjs.convertNotificationToStreamMessage; exports.createComputer = _chunkYSKO6SPTjs.createComputer; exports.createResponseSchema = _chunkYSKO6SPTjs.createResponseSchema; exports.createSdkMcpServer = createSdkMcpServer; exports.createSession = createSession; exports.createWebSocketDaemonClient = _chunkYSKO6SPTjs.createWebSocketDaemonClient; exports.defaultDaemonCoreDeps = _chunkYSKO6SPTjs.defaultDaemonCoreDeps; exports.deleteComputer = _chunkYSKO6SPTjs.deleteComputer; exports.filterMessagesForUI = _chunkYSKO6SPTjs.filterMessagesForUI; exports.getComputer = _chunkYSKO6SPTjs.getComputer; exports.getComputerByName = _chunkYSKO6SPTjs.getComputerByName; exports.getComputerMetrics = _chunkYSKO6SPTjs.getComputerMetrics; exports.getMachineTemplate = _chunkYSKO6SPTjs.getMachineTemplate; exports.getPermissionToolInputForDisplay = _chunkYSKO6SPTjs.getPermissionToolInputForDisplay; exports.getQueuedUserMessageDisplayGroup = _chunkYSKO6SPTjs.getQueuedUserMessageDisplayGroup; exports.getQueuedUserMessageReviewPriority = _chunkYSKO6SPTjs.getQueuedUserMessageReviewPriority; exports.getSubagentCallingMetadata = _chunkYSKO6SPTjs.getSubagentCallingMetadata; exports.getToolResultBlocks = _chunkYSKO6SPTjs.getToolResultBlocks; exports.getToolResultToolUseId = _chunkYSKO6SPTjs.getToolResultToolUseId; exports.hasDecoupledInteractionSettings = _chunkYSKO6SPTjs.hasDecoupledInteractionSettings; exports.hasSubagentSessionTag = _chunkYSKO6SPTjs.hasSubagentSessionTag; exports.inspectJsonRpcEnvelope = _chunkYSKO6SPTjs.inspectJsonRpcEnvelope; exports.isDaemonQueuedMessageKind = _chunkYSKO6SPTjs.isDaemonQueuedMessageKind; exports.isPendingToolResultMarker = _chunkYSKO6SPTjs.isPendingToolResultMarker; exports.isPersistedHookMessage = _chunkYSKO6SPTjs.isPersistedHookMessage; exports.isReviewableQueuedMessageKind = _chunkYSKO6SPTjs.isReviewableQueuedMessageKind; exports.isTransportLoggingEnabled = isTransportLoggingEnabled; exports.listComputers = _chunkYSKO6SPTjs.listComputers; exports.listMachineTemplates = _chunkYSKO6SPTjs.listMachineTemplates; exports.listModels = listModels; exports.listRemoteSessions = _chunkYSKO6SPTjs.listRemoteSessions; exports.listSessions = listSessions; exports.logTransportMessage = logTransportMessage; exports.machineTypeToMachineConnectionType = _chunkYSKO6SPTjs.machineTypeToMachineConnectionType; exports.noopLogger = noopLogger; exports.orderMessagesByParentChain = _chunkYSKO6SPTjs.orderMessagesByParentChain; exports.recordComputerConnectSli = _chunkYSKO6SPTjs.recordComputerConnectSli; exports.refreshComputer = _chunkYSKO6SPTjs.refreshComputer; exports.repairParentChainCorruption = _chunkYSKO6SPTjs.repairParentChainCorruption; exports.resolveExecCoreDeps = resolveExecCoreDeps; exports.restartComputer = _chunkYSKO6SPTjs.restartComputer; exports.resumeSession = resumeSession; exports.retryInstallDeps = _chunkYSKO6SPTjs.retryInstallDeps; exports.retryWithLogger = _chunkYSKO6SPTjs.retryWithLogger; exports.run = run; exports.spawnWithWindowsJobObjectRetry = spawnWithWindowsJobObjectRetry; exports.sumTokenUsage = _chunkYSKO6SPTjs.sumTokenUsage; exports.summarizeSessionToolUsage = _chunkYSKO6SPTjs.summarizeSessionToolUsage; exports.toError = _chunkYSKO6SPTjs.toError; exports.tool = tool; exports.updateComputer = _chunkYSKO6SPTjs.updateComputer;
5951
+
5952
+
5953
+
5954
+
5955
+
5956
+
5957
+
5958
+
5959
+
5960
+
5961
+
5962
+
5963
+
5964
+
5965
+
5966
+
5967
+
5968
+
5969
+
5970
+
5971
+
5972
+
5973
+
5974
+
5975
+
5976
+
5977
+
5978
+
5979
+
5980
+
5981
+
5982
+
5983
+
5984
+
5985
+
5986
+
5987
+
5988
+
5989
+
5990
+
5991
+
5992
+
5993
+
5994
+
5995
+
5996
+
5997
+
5998
+
5999
+
6000
+ exports.AbortError = _chunkKAAWCHO4js.AbortError; exports.AddMcpServerRequestParamsSchema = _chunkKAAWCHO4js.AddMcpServerRequestParamsSchema; exports.AddMcpServerRequestSchema = _chunkKAAWCHO4js.AddMcpServerRequestSchema; exports.AddMcpServerResponseSchema = _chunkKAAWCHO4js.AddMcpServerResponseSchema; exports.AddMcpServerResultSchema = _chunkKAAWCHO4js.AddMcpServerResultSchema; exports.AddUserMessageRequestParamsSchema = _chunkKAAWCHO4js.AddUserMessageRequestParamsSchema; exports.AddUserMessageRequestSchema = _chunkKAAWCHO4js.AddUserMessageRequestSchema; exports.AddUserMessageResponseSchema = _chunkKAAWCHO4js.AddUserMessageResponseSchema; exports.AddUserMessageResultSchema = _chunkKAAWCHO4js.AddUserMessageResultSchema; exports.AnswerSessionElicitationResponseSchema = _chunkKAAWCHO4js.AnswerSessionElicitationResponseSchema; exports.ApplyPatchToolConfirmationDetailsSchema = _chunkKAAWCHO4js.ApplyPatchToolConfirmationDetailsSchema; exports.AskUserCollectedAnswerSchema = _chunkKAAWCHO4js.AskUserCollectedAnswerSchema; exports.AskUserConfirmationDetailsSchema = _chunkKAAWCHO4js.AskUserConfirmationDetailsSchema; exports.AskUserQuestionSchema = _chunkKAAWCHO4js.AskUserQuestionSchema; exports.AskUserRequestParamsSchema = _chunkKAAWCHO4js.AskUserRequestParamsSchema; exports.AskUserRequestSchema = _chunkKAAWCHO4js.AskUserRequestSchema; exports.AskUserResponseSchema = _chunkKAAWCHO4js.AskUserResponseSchema; exports.AskUserResultSchema = _chunkKAAWCHO4js.AskUserResultSchema; exports.AssistantMessageRetractedNotificationSchema = _chunkKAAWCHO4js.AssistantMessageRetractedNotificationSchema; exports.AssistantTextCompleteNotificationSchema = _chunkKAAWCHO4js.AssistantTextCompleteNotificationSchema; exports.AssistantTextDeltaNotificationSchema = _chunkKAAWCHO4js.AssistantTextDeltaNotificationSchema; exports.AuthenticateMcpServerRequestParamsSchema = _chunkKAAWCHO4js.AuthenticateMcpServerRequestParamsSchema; exports.AuthenticateMcpServerRequestSchema = _chunkKAAWCHO4js.AuthenticateMcpServerRequestSchema; exports.AuthenticateMcpServerResponseSchema = _chunkKAAWCHO4js.AuthenticateMcpServerResponseSchema; exports.AuthenticateMcpServerResultSchema = _chunkKAAWCHO4js.AuthenticateMcpServerResultSchema; exports.AutonomyLevel = _chunkKAAWCHO4js.AutonomyLevel; exports.AvailableModelConfigSchema = _chunkKAAWCHO4js.AvailableModelConfigSchema; exports.Base64ImageSourceSchema = _chunkKAAWCHO4js.Base64ImageSourceSchema; exports.BaseNotificationSchema = _chunkKAAWCHO4js.BaseNotificationSchema; exports.BaseRequestSchema = _chunkKAAWCHO4js.BaseRequestSchema; exports.BaseResponseFailureSchema = _chunkKAAWCHO4js.BaseResponseFailureSchema; exports.BaseResponseSuccessSchema = _chunkKAAWCHO4js.BaseResponseSuccessSchema; exports.CLI_JSONRPC_CHILD_SPAWN_LATENCY_METRIC = CLI_JSONRPC_CHILD_SPAWN_LATENCY_METRIC; exports.COMPACTION_TIMEOUT = _chunkKAAWCHO4js.COMPACTION_TIMEOUT; exports.CancelMcpAuthRequestParamsSchema = _chunkKAAWCHO4js.CancelMcpAuthRequestParamsSchema; exports.CancelMcpAuthRequestSchema = _chunkKAAWCHO4js.CancelMcpAuthRequestSchema; exports.CancelMcpAuthResponseSchema = _chunkKAAWCHO4js.CancelMcpAuthResponseSchema; exports.CancelMcpAuthResultSchema = _chunkKAAWCHO4js.CancelMcpAuthResultSchema; exports.ChangeWorkingDirectoryRequestParamsSchema = _chunkKAAWCHO4js.ChangeWorkingDirectoryRequestParamsSchema; exports.ChangeWorkingDirectoryRequestSchema = _chunkKAAWCHO4js.ChangeWorkingDirectoryRequestSchema; exports.ChangeWorkingDirectoryResponseSchema = _chunkKAAWCHO4js.ChangeWorkingDirectoryResponseSchema; exports.ChangeWorkingDirectoryResultSchema = _chunkKAAWCHO4js.ChangeWorkingDirectoryResultSchema; exports.ClearMcpAuthRequestParamsSchema = _chunkKAAWCHO4js.ClearMcpAuthRequestParamsSchema; exports.ClearMcpAuthRequestSchema = _chunkKAAWCHO4js.ClearMcpAuthRequestSchema; exports.ClearMcpAuthResponseSchema = _chunkKAAWCHO4js.ClearMcpAuthResponseSchema; exports.ClearMcpAuthResultSchema = _chunkKAAWCHO4js.ClearMcpAuthResultSchema; exports.CliRequestOrNotificationSchema = _chunkKAAWCHO4js.CliRequestOrNotificationSchema; exports.ClientDestroyedError = _chunkKAAWCHO4js.ClientDestroyedError; exports.ClientRequestSchema = _chunkKAAWCHO4js.ClientRequestSchema; exports.ClientUiSurface = _chunkKAAWCHO4js.ClientUiSurface; exports.CloseSessionRequestParamsSchema = _chunkKAAWCHO4js.CloseSessionRequestParamsSchema; exports.CloseSessionRequestSchema = _chunkKAAWCHO4js.CloseSessionRequestSchema; exports.CloseSessionResponseSchema = _chunkKAAWCHO4js.CloseSessionResponseSchema; exports.CloseSessionResultSchema = _chunkKAAWCHO4js.CloseSessionResultSchema; exports.CompactSessionRequestParamsSchema = _chunkKAAWCHO4js.CompactSessionRequestParamsSchema; exports.CompactSessionRequestSchema = _chunkKAAWCHO4js.CompactSessionRequestSchema; exports.CompactSessionResponseSchema = _chunkKAAWCHO4js.CompactSessionResponseSchema; exports.CompactSessionResultSchema = _chunkKAAWCHO4js.CompactSessionResultSchema; exports.ComputeLimitExceededError = _chunkKAAWCHO4js.ComputeLimitExceededError; exports.ComputerConnectAttemptTrigger = _chunkKAAWCHO4js.ComputerConnectAttemptTrigger; exports.ComputerConnectStartType = _chunkKAAWCHO4js.ComputerConnectStartType; exports.ComputerListResponseSchema = _chunkKAAWCHO4js.ComputerListResponseSchema; exports.ComputerMetricSchema = _chunkKAAWCHO4js.ComputerMetricSchema; exports.ComputerMetricsResponseSchema = _chunkKAAWCHO4js.ComputerMetricsResponseSchema; exports.ComputerSchema = _chunkKAAWCHO4js.ComputerSchema; exports.ConcurrentStreamError = _chunkKAAWCHO4js.ConcurrentStreamError; exports.ConnectionClosedError = _chunkKAAWCHO4js.ConnectionClosedError; exports.ConnectionError = _chunkKAAWCHO4js.ConnectionError; exports.ConnectionFailureReason = _chunkKAAWCHO4js.ConnectionFailureReason; exports.ContentBlockSchema = _chunkKAAWCHO4js.ContentBlockSchema; exports.ContextApiError = _chunkKAAWCHO4js.ContextApiError; exports.ContextBreakdownCategorySchema = _chunkKAAWCHO4js.ContextBreakdownCategorySchema; exports.ContextBreakdownResultSchema = _chunkKAAWCHO4js.GetContextBreakdownResultSchema; exports.ContextStatsAccuracy = _chunkKAAWCHO4js.ContextStatsAccuracy; exports.ContextStatsSchema = _chunkKAAWCHO4js.ContextStatsSchema; exports.CreateMessageNotificationSchema = _chunkKAAWCHO4js.CreateMessageNotificationSchema; exports.CreateToolConfirmationDetailsSchema = _chunkKAAWCHO4js.CreateToolConfirmationDetailsSchema; exports.DEFAULT_LOCAL_DAEMON_WS_URL = _chunkKAAWCHO4js.DEFAULT_LOCAL_DAEMON_WS_URL; exports.DEFAULT_REQUEST_TIMEOUT = _chunkKAAWCHO4js.DEFAULT_REQUEST_TIMEOUT; exports.DaemonAuthenticationMode = _chunkKAAWCHO4js.DaemonAuthenticationMode; exports.DaemonClient = _chunkKAAWCHO4js.DaemonClient; exports.DaemonClientMetaError = _chunkKAAWCHO4js.MetaError; exports.DaemonDroidEvent = _chunkKAAWCHO4js.DaemonDroidEvent; exports.DaemonRequestPermissionSchema = _chunkKAAWCHO4js.DaemonRequestPermissionSchema; exports.DaemonSessionController = _chunkKAAWCHO4js.DaemonSessionController; exports.DecompSessionType = _chunkKAAWCHO4js.DecompSessionType; exports.DiscoveredIssueSchema = _chunkKAAWCHO4js.DiscoveredIssueSchema; exports.DismissalRecordSchema = _chunkKAAWCHO4js.DismissalRecordSchema; exports.DismissalType = _chunkKAAWCHO4js.DismissalType; exports.DocumentBlockSchema = _chunkKAAWCHO4js.DocumentBlockSchema; exports.DocumentSourceSchema = _chunkKAAWCHO4js.DocumentSourceSchema; exports.DroidClient = DroidClient; exports.DroidClientError = _chunkKAAWCHO4js.DroidClientError; exports.DroidClientEvent = DroidClientEvent; exports.DroidClientMethod = _chunkKAAWCHO4js.DroidClientMethod; exports.DroidConnectionEndedError = _chunkKAAWCHO4js.DroidConnectionEndedError; exports.DroidErrorType = _chunkKAAWCHO4js.DroidErrorType; exports.DroidEvent = _chunkKAAWCHO4js.DroidEvent; exports.DroidHookEventSchema = _chunkKAAWCHO4js.DroidHookEventSchema; exports.DroidHookExecutionResultSchema = _chunkKAAWCHO4js.DroidHookExecutionResultSchema; exports.DroidHookOutputSchema = _chunkKAAWCHO4js.DroidHookOutputSchema; exports.DroidHookSpecificOutputSchema = _chunkKAAWCHO4js.DroidHookSpecificOutputSchema; exports.DroidInteractionMode = _chunkKAAWCHO4js.DroidInteractionMode; exports.DroidMessageType = _chunkKAAWCHO4js.DroidMessageType; exports.DroidProcessManager = DroidProcessManager; exports.DroidProcessMode = DroidProcessMode; exports.DroidServerMethod = _chunkKAAWCHO4js.DroidServerMethod; exports.DroidSession = DroidSession; exports.DroidWorkingState = _chunkKAAWCHO4js.DroidWorkingState; exports.DroidWorkingStateChangedNotificationSchema = _chunkKAAWCHO4js.DroidWorkingStateChangedNotificationSchema; exports.EditToolConfirmationDetailsSchema = _chunkKAAWCHO4js.EditToolConfirmationDetailsSchema; exports.EmptyResultSchema = _chunkKAAWCHO4js.EmptyResultSchema; exports.EnvironmentListResponseSchema = _chunkKAAWCHO4js.EnvironmentListResponseSchema; exports.EnvironmentSchema = _chunkKAAWCHO4js.EnvironmentSchema; exports.ErrorDetailSchema = _chunkKAAWCHO4js.ErrorDetailSchema; exports.ErrorNotificationSchema = _chunkKAAWCHO4js.ErrorNotificationSchema; exports.ExecToolInfoSchema = _chunkKAAWCHO4js.ExecToolInfoSchema; exports.ExecToolInfoWithSchemasSchema = _chunkKAAWCHO4js.ExecToolInfoWithSchemasSchema; exports.ExecuteRewindRequestParamsSchema = _chunkKAAWCHO4js.ExecuteRewindRequestParamsSchema; exports.ExecuteRewindRequestSchema = _chunkKAAWCHO4js.ExecuteRewindRequestSchema; exports.ExecuteRewindResponseSchema = _chunkKAAWCHO4js.ExecuteRewindResponseSchema; exports.ExecuteRewindResultSchema = _chunkKAAWCHO4js.ExecuteRewindResultSchema; exports.ExecuteToolConfirmationDetailsSchema = _chunkKAAWCHO4js.ExecuteToolConfirmationDetailsSchema; exports.ExitSpecModeConfirmationDetailsSchema = _chunkKAAWCHO4js.ExitSpecModeConfirmationDetailsSchema; exports.FACTORY_CLIENT_HEADER = _chunkKAAWCHO4js.FACTORY_CLIENT_HEADER; exports.FACTORY_CLIENT_VERSION = _chunkKAAWCHO4js.FACTORY_CLIENT_VERSION; exports.FACTORY_PROTOCOL_VERSION = _chunkKAAWCHO4js.FACTORY_PROTOCOL_VERSION; exports.FactoryDaemonTransport = _chunkKAAWCHO4js.FactoryDaemonTransport; exports.FactoryDroidMessageRole = _chunkKAAWCHO4js.FactoryDroidMessageRole; exports.FactoryDroidMessageSchema = _chunkKAAWCHO4js.FactoryDroidMessageSchema; exports.FeatureStatus = _chunkKAAWCHO4js.FeatureStatus; exports.FeatureSuccessState = _chunkKAAWCHO4js.FeatureSuccessState; exports.FeatureSuccessStateSchema = _chunkKAAWCHO4js.FeatureSuccessStateSchema; exports.ForkSessionRequestParamsSchema = _chunkKAAWCHO4js.ForkSessionRequestParamsSchema; exports.ForkSessionRequestSchema = _chunkKAAWCHO4js.ForkSessionRequestSchema; exports.ForkSessionResponseSchema = _chunkKAAWCHO4js.ForkSessionResponseSchema; exports.ForkSessionResultSchema = _chunkKAAWCHO4js.ForkSessionResultSchema; exports.GetContextStatsRequestParamsSchema = _chunkKAAWCHO4js.GetContextStatsRequestParamsSchema; exports.GetContextStatsRequestSchema = _chunkKAAWCHO4js.GetContextStatsRequestSchema; exports.GetContextStatsResponseSchema = _chunkKAAWCHO4js.GetContextStatsResponseSchema; exports.GetContextStatsResultSchema = _chunkKAAWCHO4js.ContextStatsSchema; exports.GetRewindInfoRequestParamsSchema = _chunkKAAWCHO4js.GetRewindInfoRequestParamsSchema; exports.GetRewindInfoRequestSchema = _chunkKAAWCHO4js.GetRewindInfoRequestSchema; exports.GetRewindInfoResponseSchema = _chunkKAAWCHO4js.GetRewindInfoResponseSchema; exports.GetRewindInfoResultSchema = _chunkKAAWCHO4js.GetRewindInfoResultSchema; exports.GitRepoInfoSchema = _chunkKAAWCHO4js.GitRepoInfoSchema; exports.HandoffItemsDismissedEntrySchema = _chunkKAAWCHO4js.HandoffItemsDismissedEntrySchema; exports.HandoffSchema = _chunkKAAWCHO4js.HandoffSchema; exports.HookCommandSchema = _chunkKAAWCHO4js.HookCommandSchema; exports.HookExecutionCompletedNotificationSchema = _chunkKAAWCHO4js.HookExecutionCompletedNotificationSchema; exports.HookExecutionStartedNotificationSchema = _chunkKAAWCHO4js.HookExecutionStartedNotificationSchema; exports.HookResultSchema = _chunkKAAWCHO4js.HookResultSchema; exports.HttpHeaderSchema = _chunkKAAWCHO4js.HttpHeaderSchema; exports.HttpMcpConfigSchema = _chunkKAAWCHO4js.HttpMcpSchema; exports.IPC_DAEMON_URL = _chunkKAAWCHO4js.IPC_DAEMON_URL; exports.ImageBlockSchema = _chunkKAAWCHO4js.ImageBlockSchema; exports.InProcessDaemonClientTransport = _chunkKAAWCHO4js.InProcessDaemonClientTransport; exports.InitializeSessionRequestParamsSchema = _chunkKAAWCHO4js.InitializeSessionRequestParamsSchema; exports.InitializeSessionRequestSchema = _chunkKAAWCHO4js.InitializeSessionRequestSchema; exports.InitializeSessionResponseSchema = _chunkKAAWCHO4js.InitializeSessionResponseSchema; exports.InitializeSessionResultSchema = _chunkKAAWCHO4js.InitializeSessionResultSchema2; exports.InteractiveCheckSchema = _chunkKAAWCHO4js.InteractiveCheckSchema; exports.InterruptSessionRequestParamsSchema = _chunkKAAWCHO4js.InterruptSessionRequestParamsSchema; exports.InterruptSessionRequestSchema = _chunkKAAWCHO4js.InterruptSessionRequestSchema; exports.InterruptSessionResponseSchema = _chunkKAAWCHO4js.InterruptSessionResponseSchema; exports.InterruptSessionResultSchema = _chunkKAAWCHO4js.InterruptSessionResultSchema; exports.InvalidSessionCwdError = _chunkKAAWCHO4js.InvalidSessionCwdError; exports.IpcDaemonClientTransport = _chunkKAAWCHO4js.IpcDaemonClientTransport; exports.IssueSeverity = _chunkKAAWCHO4js.IssueSeverity; exports.JSONRPC_VERSION = _chunkKAAWCHO4js.JSONRPC_VERSION; exports.JsonArraySchema = _chunkKAAWCHO4js.JsonArraySchema; exports.JsonObjectSchema = _chunkKAAWCHO4js.JsonObjectSchema; exports.JsonRpcEnvelopeSchema = _chunkKAAWCHO4js.JsonRpcEnvelopeSchema; exports.JsonRpcErrorCode = _chunkKAAWCHO4js.JsonRpcErrorCode; exports.JsonRpcErrorSchema = _chunkKAAWCHO4js.JsonRpcErrorSchema; exports.JsonRpcMessageSchema = _chunkKAAWCHO4js.JsonRpcMessageSchema; exports.JsonRpcMessageType = _chunkKAAWCHO4js.JsonRpcMessageType; exports.JsonRpcNotificationSchema = _chunkKAAWCHO4js.JsonRpcNotificationSchema; exports.JsonRpcRequestError = _chunkKAAWCHO4js.JsonRpcRequestError; exports.JsonRpcRequestSchema = _chunkKAAWCHO4js.JsonRpcRequestSchema; exports.JsonRpcResponseFailureSchema = _chunkKAAWCHO4js.JsonRpcResponseFailureSchema; exports.JsonRpcResponseSchema = _chunkKAAWCHO4js.JsonRpcResponseSchema; exports.JsonRpcResponseSuccessSchema = _chunkKAAWCHO4js.JsonRpcResponseSuccessSchema; exports.JsonValueSchema = _chunkKAAWCHO4js.JsonValueSchema; exports.KillWorkerSessionRequestParamsSchema = _chunkKAAWCHO4js.KillWorkerSessionRequestParamsSchema; exports.KillWorkerSessionRequestSchema = _chunkKAAWCHO4js.KillWorkerSessionRequestSchema; exports.KillWorkerSessionResponseSchema = _chunkKAAWCHO4js.KillWorkerSessionResponseSchema; exports.KillWorkerSessionResultSchema = _chunkKAAWCHO4js.KillWorkerSessionResultSchema; exports.LEGACY_FACTORY_API_VERSION = _chunkKAAWCHO4js.LEGACY_FACTORY_API_VERSION; exports.LOCAL_MACHINE_ID = _chunkKAAWCHO4js.LOCAL_MACHINE_ID; exports.ListMcpRegistryRequestParamsSchema = _chunkKAAWCHO4js.ListMcpRegistryRequestParamsSchema; exports.ListMcpRegistryRequestSchema = _chunkKAAWCHO4js.ListMcpRegistryRequestSchema; exports.ListMcpRegistryResponseSchema = _chunkKAAWCHO4js.ListMcpRegistryResponseSchema; exports.ListMcpRegistryResultSchema = _chunkKAAWCHO4js.ListMcpRegistryResultSchema; exports.ListMcpServersRequestParamsSchema = _chunkKAAWCHO4js.ListMcpServersRequestParamsSchema; exports.ListMcpServersRequestSchema = _chunkKAAWCHO4js.ListMcpServersRequestSchema; exports.ListMcpServersResponseSchema = _chunkKAAWCHO4js.ListMcpServersResponseSchema; exports.ListMcpServersResultSchema = _chunkKAAWCHO4js.ListMcpServersResultSchema; exports.ListMcpToolsRequestParamsSchema = _chunkKAAWCHO4js.ListMcpToolsRequestParamsSchema; exports.ListMcpToolsRequestSchema = _chunkKAAWCHO4js.ListMcpToolsRequestSchema; exports.ListMcpToolsResponseSchema = _chunkKAAWCHO4js.ListMcpToolsResponseSchema; exports.ListMcpToolsResultSchema = _chunkKAAWCHO4js.ListMcpToolsResultSchema; exports.ListModelsOptionsSchema = _chunkKAAWCHO4js.ListModelsOptionsSchema; exports.ListModelsResultSchema = _chunkKAAWCHO4js.ListModelsResultSchema; exports.ListSessionElicitationsResponseSchema = _chunkKAAWCHO4js.ListSessionElicitationsResponseSchema; exports.ListSkillsRequestParamsSchema = _chunkKAAWCHO4js.ListSkillsRequestParamsSchema; exports.ListSkillsRequestSchema = _chunkKAAWCHO4js.ListSkillsRequestSchema; exports.ListSkillsResponseSchema = _chunkKAAWCHO4js.ListSkillsResponseSchema; exports.ListSkillsResultSchema = _chunkKAAWCHO4js.ListSkillsResultSchema; exports.ListToolsRequestParamsSchema = _chunkKAAWCHO4js.ListToolsRequestParamsSchema; exports.ListToolsRequestSchema = _chunkKAAWCHO4js.ListToolsRequestSchema; exports.ListToolsResponseSchema = _chunkKAAWCHO4js.ListToolsResponseSchema; exports.ListToolsResponseWithSchemasSchema = _chunkKAAWCHO4js.ListToolsResponseWithSchemasSchema; exports.ListToolsResultSchema = _chunkKAAWCHO4js.ListToolsResultSchema; exports.ListToolsResultWithSchemasSchema = _chunkKAAWCHO4js.ListToolsResultWithSchemasSchema; exports.LoadSessionRequestParamsSchema = _chunkKAAWCHO4js.LoadSessionRequestParamsSchema; exports.LoadSessionRequestSchema = _chunkKAAWCHO4js.LoadSessionRequestSchema; exports.LoadSessionResponseSchema = _chunkKAAWCHO4js.LoadSessionResponseSchema; exports.LoadSessionResultSchema = _chunkKAAWCHO4js.LoadSessionResultSchema; exports.MACHINE_TYPE_WEBSOCKET_OVERRIDES = _chunkKAAWCHO4js.MACHINE_TYPE_WEBSOCKET_OVERRIDES; exports.MANAGED_COMPUTER_MAX_RETRIES = _chunkKAAWCHO4js.MANAGED_COMPUTER_MAX_RETRIES; exports.MCP_AUTH_TIMEOUT = _chunkKAAWCHO4js.MCP_AUTH_TIMEOUT; exports.MachineTemplateBuildStatusSchema = _chunkKAAWCHO4js.MachineTemplateBuildStatusSchema; exports.MachineTemplateListResponseSchema = _chunkKAAWCHO4js.MachineTemplateListResponseSchema; exports.MachineTemplateSchema = _chunkKAAWCHO4js.MachineTemplateSchema; exports.MachineType = _chunkKAAWCHO4js.MachineType; exports.ManagedProcessImpl = ManagedProcessImpl; exports.McpAuthCompletedNotificationSchema = _chunkKAAWCHO4js.McpAuthCompletedNotificationSchema; exports.McpAuthOutcome = _chunkKAAWCHO4js.McpAuthOutcome; exports.McpAuthRequiredNotificationSchema = _chunkKAAWCHO4js.McpAuthRequiredNotificationSchema; exports.McpHttpServerConfigFieldsSchema = _chunkKAAWCHO4js.McpHttpServerConfigFieldsSchema; exports.McpRegistryServerSchema = _chunkKAAWCHO4js.McpRegistryServerSchema; exports.McpServerConfigSchema = _chunkKAAWCHO4js.McpServerConfigSchema; exports.McpServerStatus = _chunkKAAWCHO4js.McpServerStatus; exports.McpServerStatusInfoSchema = _chunkKAAWCHO4js.McpServerStatusInfoSchema; exports.McpServerType = _chunkKAAWCHO4js.McpServerType; exports.McpSseServerConfigFieldsSchema = _chunkKAAWCHO4js.McpSseServerConfigFieldsSchema; exports.McpStatus = _chunkKAAWCHO4js.McpStatus; exports.McpStatusChangedNotificationSchema = _chunkKAAWCHO4js.McpStatusChangedNotificationSchema; exports.McpStatusSummarySchema = _chunkKAAWCHO4js.McpStatusSummarySchema; exports.McpStdioServerConfigFieldsSchema = _chunkKAAWCHO4js.McpStdioServerConfigFieldsSchema; exports.McpToolConfirmationDetailsSchema = _chunkKAAWCHO4js.McpToolConfirmationDetailsSchema; exports.McpToolInfoSchema = _chunkKAAWCHO4js.McpToolInfoSchema; exports.McpToolInputSchemaSchema = _chunkKAAWCHO4js.McpToolInputSchemaSchema; exports.MessageVisibility = _chunkKAAWCHO4js.MessageVisibility; exports.Metric = _chunkKAAWCHO4js.Metric; exports.MilestoneValidationTriggeredEntrySchema = _chunkKAAWCHO4js.MilestoneValidationTriggeredEntrySchema; exports.MissionAcceptedEntrySchema = _chunkKAAWCHO4js.MissionAcceptedEntrySchema; exports.MissionFeatureSchema = _chunkKAAWCHO4js.MissionFeatureSchema; exports.MissionFeaturesChangedNotificationSchema = _chunkKAAWCHO4js.MissionFeaturesChangedNotificationSchema; exports.MissionHeartbeatNotificationSchema = _chunkKAAWCHO4js.MissionHeartbeatNotificationSchema; exports.MissionPausedEntrySchema = _chunkKAAWCHO4js.MissionPausedEntrySchema; exports.MissionProgressEntryNotificationSchema = _chunkKAAWCHO4js.MissionProgressEntryNotificationSchema; exports.MissionResumedEntrySchema = _chunkKAAWCHO4js.MissionResumedEntrySchema; exports.MissionRunStartedEntrySchema = _chunkKAAWCHO4js.MissionRunStartedEntrySchema; exports.MissionSnapshotSchema = _chunkKAAWCHO4js.MissionStateSchema; exports.MissionState = _chunkKAAWCHO4js.MissionState; exports.MissionStateChangedNotificationSchema = _chunkKAAWCHO4js.MissionStateChangedNotificationSchema; exports.MissionWorkerCompletedNotificationSchema = _chunkKAAWCHO4js.MissionWorkerCompletedNotificationSchema; exports.MissionWorkerStartedNotificationSchema = _chunkKAAWCHO4js.MissionWorkerStartedNotificationSchema; exports.ModelInfoSchema = _chunkKAAWCHO4js.ModelInfoSchema; exports.ModelMetadataSchema = _chunkKAAWCHO4js.ModelMetadataSchema; exports.ModelProvider = _chunkKAAWCHO4js.ModelProvider; exports.MultiMissionStateManager = _chunkKAAWCHO4js.MultiMissionStateManager; exports.MultiSessionStateManager = _chunkKAAWCHO4js.MultiSessionStateManager; exports.OtelTracing = _chunkKAAWCHO4js.OtelTracing; exports.OutputFormatSchema = _chunkKAAWCHO4js.OutputFormatSchema; exports.OutputFormatType = _chunkKAAWCHO4js.OutputFormatType; exports.PermissionResolvedNotificationSchema = _chunkKAAWCHO4js.PermissionResolvedNotificationSchema; exports.PickOptionsRequestParamsSchema = _chunkKAAWCHO4js.PickOptionsRequestParamsSchema; exports.PickOptionsRequestSchema = _chunkKAAWCHO4js.PickOptionsRequestSchema; exports.PickOptionsResponseSchema = _chunkKAAWCHO4js.PickOptionsResponseSchema; exports.PickOptionsResultSchema = _chunkKAAWCHO4js.PickOptionsResultSchema; exports.PickOptionsRowSchema = _chunkKAAWCHO4js.PickOptionsRowSchema; exports.PickOptionsUnavailableError = _chunkKAAWCHO4js.PickOptionsUnavailableError; exports.ProcessExitError = _chunkKAAWCHO4js.ProcessExitError; exports.ProcessTransport = ProcessTransport; exports.ProgressLogEntrySchema = _chunkKAAWCHO4js.ProgressLogEntrySchema; exports.ProgressLogEntryType = _chunkKAAWCHO4js.ProgressLogEntryType; exports.ProposeMissionConfirmationDetailsSchema = _chunkKAAWCHO4js.ProposeMissionConfirmationDetailsSchema; exports.ProtocolError = _chunkKAAWCHO4js.ProtocolError; exports.QueuedUserMessageDisplayGroup = _chunkKAAWCHO4js.QueuedUserMessageDisplayGroup; exports.QueuedUserMessageKind = _chunkKAAWCHO4js.QueuedUserMessageKind; exports.REWIND_TIMEOUT = _chunkKAAWCHO4js.REWIND_TIMEOUT; exports.ReasoningEffort = _chunkKAAWCHO4js.ReasoningEffort; exports.RedactedThinkingBlockSchema = _chunkKAAWCHO4js.RedactedThinkingBlockSchema; exports.RefreshComputerResponseSchema = _chunkKAAWCHO4js.RefreshComputerResponseSchema; exports.RelayConnectionError = _chunkKAAWCHO4js.RelayConnectionError; exports.RemoteSessionListResponseSchema = _chunkKAAWCHO4js.RemoteSessionListResponseSchema; exports.RemoteSessionSchema = _chunkKAAWCHO4js.RemoteSessionSchema; exports.RemoveMcpServerRequestParamsSchema = _chunkKAAWCHO4js.RemoveMcpServerRequestParamsSchema; exports.RemoveMcpServerRequestSchema = _chunkKAAWCHO4js.RemoveMcpServerRequestSchema; exports.RemoveMcpServerResponseSchema = _chunkKAAWCHO4js.RemoveMcpServerResponseSchema; exports.RemoveMcpServerResultSchema = _chunkKAAWCHO4js.RemoveMcpServerResultSchema; exports.RenameSessionRequestParamsSchema = _chunkKAAWCHO4js.RenameSessionRequestParamsSchema; exports.RenameSessionRequestSchema = _chunkKAAWCHO4js.RenameSessionRequestSchema; exports.RenameSessionResponseSchema = _chunkKAAWCHO4js.RenameSessionResponseSchema; exports.RenameSessionResultSchema = _chunkKAAWCHO4js.RenameSessionResultSchema; exports.RequestCancelledError = _chunkKAAWCHO4js.RequestCancelledError; exports.RequestPermissionRequestParamsSchema = _chunkKAAWCHO4js.RequestPermissionRequestParamsSchema; exports.RequestPermissionRequestSchema = _chunkKAAWCHO4js.RequestPermissionRequestSchema; exports.RequestPermissionResponseSchema = _chunkKAAWCHO4js.RequestPermissionResponseSchema; exports.RequestPermissionResultSchema = _chunkKAAWCHO4js.RequestPermissionResultSchema; exports.RewindEvictedFileSchema = _chunkKAAWCHO4js.RewindEvictedFileSchema; exports.RewindFileCreationSchema = _chunkKAAWCHO4js.RewindFileCreationSchema; exports.RewindFileSnapshotSchema = _chunkKAAWCHO4js.RewindFileSnapshotSchema; exports.SDK_TAG = _chunkKAAWCHO4js.SDK_TAG; exports.SDK_VERSION = _chunkKAAWCHO4js.SDK_VERSION; exports.SESSION_INIT_TIMEOUT = _chunkKAAWCHO4js.SESSION_INIT_TIMEOUT; exports.SLACK_DELEGATION_MAX_RETRIES = _chunkKAAWCHO4js.SLACK_DELEGATION_MAX_RETRIES; exports.SdkMcpServer = SdkMcpServer; exports.ServerRequestHandlerType = _chunkKAAWCHO4js.ServerRequestHandlerType; exports.SessionArtifactAction = _chunkKAAWCHO4js.SessionArtifactAction; exports.SessionArtifactKind = _chunkKAAWCHO4js.SessionArtifactKind; exports.SessionArtifactProvider = _chunkKAAWCHO4js.SessionArtifactProvider; exports.SessionArtifactSchema = _chunkKAAWCHO4js.SessionArtifactSchema; exports.SessionArtifactSource = _chunkKAAWCHO4js.SessionArtifactSource; exports.SessionArtifactsSchema = _chunkKAAWCHO4js.SessionArtifactsSchema; exports.SessionElicitationSchema = _chunkKAAWCHO4js.SessionElicitationSchema; exports.SessionError = _chunkKAAWCHO4js.SessionError; exports.SessionMetadataSchema = _chunkKAAWCHO4js.SessionMetadataSchema; exports.SessionNotFoundError = _chunkKAAWCHO4js.SessionNotFoundError; exports.SessionNotificationParamsSchema = _chunkKAAWCHO4js.SessionNotificationParamsSchema; exports.SessionNotificationPayloadSchema = _chunkKAAWCHO4js.SessionNotificationPayloadSchema; exports.SessionNotificationSchema = _chunkKAAWCHO4js.SessionNotificationSchema; exports.SessionNotificationSchemaList = _chunkKAAWCHO4js.SessionNotificationSchemaList; exports.SessionNotificationType = _chunkKAAWCHO4js.SessionNotificationType; exports.SessionPlatform = _chunkKAAWCHO4js.SessionPlatform; exports.SessionReplacedError = _chunkKAAWCHO4js.SessionReplacedError; exports.SessionReplacementError = _chunkKAAWCHO4js.SessionReplacementError; exports.SessionSettingsFileSchema = _chunkKAAWCHO4js.SessionSettingsFileSchema; exports.SessionSettingsSchema = _chunkKAAWCHO4js.SessionSettingsSchema; exports.SessionSourceSchema = _chunkKAAWCHO4js.SessionSourceSchema; exports.SessionStartEventSchema = _chunkKAAWCHO4js.SessionStartEventSchema; exports.SessionTagSchema = _chunkKAAWCHO4js.SessionTagSchema; exports.SessionTitleUpdatedNotificationSchema = _chunkKAAWCHO4js.SessionTitleUpdatedNotificationSchema; exports.SessionTokenUsageChangedNotificationSchema = _chunkKAAWCHO4js.SessionTokenUsageChangedNotificationSchema; exports.SetSkillDisabledRequestParamsSchema = _chunkKAAWCHO4js.SetSkillDisabledRequestParamsSchema; exports.SetSkillDisabledRequestSchema = _chunkKAAWCHO4js.SetSkillDisabledRequestSchema; exports.SetSkillDisabledResponseSchema = _chunkKAAWCHO4js.SetSkillDisabledResponseSchema; exports.SetSkillDisabledResultSchema = _chunkKAAWCHO4js.SetSkillDisabledResultSchema; exports.SettingsLevel = _chunkKAAWCHO4js.SettingsLevel; exports.SettingsUpdatedNotificationSchema = _chunkKAAWCHO4js.SettingsUpdatedNotificationSchema; exports.SettingsUpdatedPayloadSchema = _chunkKAAWCHO4js.SettingsUpdatedPayloadSchema; exports.SkillDeviationSchema = _chunkKAAWCHO4js.SkillDeviationSchema; exports.SkillFeedbackSchema = _chunkKAAWCHO4js.SkillFeedbackSchema; exports.SkillInfoSchema = _chunkKAAWCHO4js.SkillInfoSchema; exports.SkillLocation = _chunkKAAWCHO4js.SkillLocation; exports.SkillResourceSchema = _chunkKAAWCHO4js.SkillResourceSchema; exports.SpanAttribute = _chunkKAAWCHO4js.SpanAttribute; exports.SpanEvent = _chunkKAAWCHO4js.SpanEvent; exports.SpanName = _chunkKAAWCHO4js.SpanName; exports.SseMcpConfigSchema = _chunkKAAWCHO4js.SseMcpSchema; exports.StartMissionRunConfirmationDetailsSchema = _chunkKAAWCHO4js.StartMissionRunConfirmationDetailsSchema; exports.StdioMcpConfigSchema = _chunkKAAWCHO4js.StdioMcpSchema; exports.StreamStateTracker = _chunkKAAWCHO4js.StreamStateTracker; exports.StructuredOutputErrorSchema = _chunkKAAWCHO4js.StructuredOutputErrorSchema; exports.StructuredOutputNotificationSchema = _chunkKAAWCHO4js.StructuredOutputNotificationSchema; exports.SubmitBugReportRequestParamsSchema = _chunkKAAWCHO4js.SubmitBugReportRequestParamsSchema; exports.SubmitBugReportRequestSchema = _chunkKAAWCHO4js.SubmitBugReportRequestSchema; exports.SubmitBugReportResponseSchema = _chunkKAAWCHO4js.SubmitBugReportResponseSchema; exports.SubmitBugReportResultSchema = _chunkKAAWCHO4js.SubmitBugReportResultSchema; exports.SubmitMcpAuthCodeRequestParamsSchema = _chunkKAAWCHO4js.SubmitMcpAuthCodeRequestParamsSchema; exports.SubmitMcpAuthCodeRequestSchema = _chunkKAAWCHO4js.SubmitMcpAuthCodeRequestSchema; exports.SubmitMcpAuthCodeResponseSchema = _chunkKAAWCHO4js.SubmitMcpAuthCodeResponseSchema; exports.SubmitMcpAuthCodeResultSchema = _chunkKAAWCHO4js.SubmitMcpAuthCodeResultSchema; exports.SuccessResultSchema = _chunkKAAWCHO4js.SuccessResultSchema; exports.TestCaseSchema = _chunkKAAWCHO4js.TestCaseSchema; exports.TestFileSchema = _chunkKAAWCHO4js.TestFileSchema; exports.TestsSchema = _chunkKAAWCHO4js.TestsSchema; exports.TextBlockSchema = _chunkKAAWCHO4js.TextBlockSchema; exports.ThinkingBlockSchema = _chunkKAAWCHO4js.ThinkingBlockSchema; exports.ThinkingTextCompleteNotificationSchema = _chunkKAAWCHO4js.ThinkingTextCompleteNotificationSchema; exports.ThinkingTextDeltaNotificationSchema = _chunkKAAWCHO4js.ThinkingTextDeltaNotificationSchema; exports.TimeoutError = _chunkKAAWCHO4js.TimeoutError; exports.ToggleMcpServerRequestParamsSchema = _chunkKAAWCHO4js.ToggleMcpServerRequestParamsSchema; exports.ToggleMcpServerRequestSchema = _chunkKAAWCHO4js.ToggleMcpServerRequestSchema; exports.ToggleMcpServerResponseSchema = _chunkKAAWCHO4js.ToggleMcpServerResponseSchema; exports.ToggleMcpServerResultSchema = _chunkKAAWCHO4js.ToggleMcpServerResultSchema; exports.ToggleMcpToolRequestParamsSchema = _chunkKAAWCHO4js.ToggleMcpToolRequestParamsSchema; exports.ToggleMcpToolRequestSchema = _chunkKAAWCHO4js.ToggleMcpToolRequestSchema; exports.ToggleMcpToolResponseSchema = _chunkKAAWCHO4js.ToggleMcpToolResponseSchema; exports.ToggleMcpToolResultSchema = _chunkKAAWCHO4js.ToggleMcpToolResultSchema; exports.TokenUsageSchema = _chunkKAAWCHO4js.TokenUsageSchema; exports.ToolCallNotificationSchema = _chunkKAAWCHO4js.ToolCallNotificationSchema; exports.ToolConfirmationDetailsSchema = _chunkKAAWCHO4js.ToolConfirmationDetailsSchema; exports.ToolConfirmationInfoSchema = _chunkKAAWCHO4js.ToolConfirmationInfoSchema; exports.ToolConfirmationListItemSchema = _chunkKAAWCHO4js.ToolConfirmationListItemSchema; exports.ToolConfirmationOutcome = _chunkKAAWCHO4js.ToolConfirmationOutcome; exports.ToolConfirmationType = _chunkKAAWCHO4js.ToolConfirmationType; exports.ToolJsonSchemaSchema = _chunkKAAWCHO4js.ToolJsonSchemaSchema; exports.ToolProgressUpdateNotificationSchema = _chunkKAAWCHO4js.ToolProgressUpdateNotificationSchema; exports.ToolProgressUpdateSchema = _chunkKAAWCHO4js.ToolProgressUpdateSchema; exports.ToolResultBlockSchema = _chunkKAAWCHO4js.ToolResultSchema; exports.ToolResultNotificationSchema = _chunkKAAWCHO4js.ToolResultNotificationSchema; exports.ToolResultSchemaDescriptorSchema = _chunkKAAWCHO4js.ToolResultSchemaDescriptorSchema; exports.ToolSchemasSchema = _chunkKAAWCHO4js.ToolSchemasSchema; exports.ToolSelectionOverridesSchema = _chunkKAAWCHO4js.ToolSelectionOverridesSchema; exports.ToolSourceSchema = _chunkKAAWCHO4js.ToolSourceSchema; exports.ToolUseBlockSchema = _chunkKAAWCHO4js.ToolUseSchema; exports.ToolUseSchema = _chunkKAAWCHO4js.ToolUseSchema2; exports.TraceContextMetaSchema = _chunkKAAWCHO4js.TraceContextMetaSchema; exports.TransportDirection = TransportDirection; exports.TunnelConnection = _chunkKAAWCHO4js.TunnelConnection; exports.UpdateSessionSettingsRequestParamsSchema = _chunkKAAWCHO4js.UpdateSessionSettingsRequestParamsSchema; exports.UpdateSessionSettingsRequestSchema = _chunkKAAWCHO4js.UpdateSessionSettingsRequestSchema; exports.UpdateSessionSettingsResponseSchema = _chunkKAAWCHO4js.UpdateSessionSettingsResponseSchema; exports.UpdateSessionSettingsResultSchema = _chunkKAAWCHO4js.UpdateSessionSettingsResultSchema; exports.VerificationCommandSchema = _chunkKAAWCHO4js.VerificationCommandSchema; exports.VerificationSchema = _chunkKAAWCHO4js.VerificationSchema; exports.WINDOWS_JOB_OBJECT_ERROR_MARKER = WINDOWS_JOB_OBJECT_ERROR_MARKER; exports.WebSocketConnectionError = _chunkKAAWCHO4js.WebSocketConnectionError; exports.WebSocketDaemonTransport = _chunkKAAWCHO4js.WebSocketDaemonTransport; exports.WorkerCompletedEntrySchema = _chunkKAAWCHO4js.WorkerCompletedEntrySchema; exports.WorkerFailedEntrySchema = _chunkKAAWCHO4js.WorkerFailedEntrySchema; exports.WorkerPausedEntrySchema = _chunkKAAWCHO4js.WorkerPausedEntrySchema; exports.WorkerSelectedFeatureEntrySchema = _chunkKAAWCHO4js.WorkerSelectedFeatureEntrySchema; exports.WorkerStartedEntrySchema = _chunkKAAWCHO4js.WorkerStartedEntrySchema; exports.WorkerStateInfoSchema = _chunkKAAWCHO4js.WorkerStateInfoSchema; exports.WorkstreamMachineTargetKind = _chunkKAAWCHO4js.MissionMachineTargetKind; exports.__resetTransportLoggerForTests = __resetTransportLoggerForTests; exports.answerRemoteSessionElicitation = _chunkKAAWCHO4js.answerRemoteSessionElicitation; exports.appendContextSession = _chunkKAAWCHO4js.appendContextSession; exports.buildUserMessageContentBlocks = _chunkKAAWCHO4js.buildUserMessageContentBlocks; exports.configureDaemonCoreDeps = _chunkKAAWCHO4js.configureDaemonCoreDeps; exports.connectAndAuthenticate = _chunkKAAWCHO4js.connectAndAuthenticate; exports.connectToDaemon = _chunkKAAWCHO4js.connectToDaemon; exports.connectWithRetry = _chunkKAAWCHO4js.connectWithRetry; exports.convertNotificationToStreamMessage = _chunkKAAWCHO4js.convertNotificationToStreamMessage; exports.createComputer = _chunkKAAWCHO4js.createComputer; exports.createContextDocument = _chunkKAAWCHO4js.createContextDocument; exports.createContextFile = _chunkKAAWCHO4js.createContextFile; exports.createContextSpace = _chunkKAAWCHO4js.createContextSpace; exports.createResponseSchema = _chunkKAAWCHO4js.createResponseSchema; exports.createSdkMcpServer = createSdkMcpServer; exports.createSession = createSession; exports.createWebSocketDaemonClient = _chunkKAAWCHO4js.createWebSocketDaemonClient; exports.defaultDaemonCoreDeps = _chunkKAAWCHO4js.defaultDaemonCoreDeps; exports.deleteComputer = _chunkKAAWCHO4js.deleteComputer; exports.deleteContextDocument = _chunkKAAWCHO4js.deleteContextDocument; exports.deleteContextFile = _chunkKAAWCHO4js.deleteContextFile; exports.filterMessagesForUI = _chunkKAAWCHO4js.filterMessagesForUI; exports.getComputer = _chunkKAAWCHO4js.getComputer; exports.getComputerByName = _chunkKAAWCHO4js.getComputerByName; exports.getComputerMetrics = _chunkKAAWCHO4js.getComputerMetrics; exports.getContextDocument = _chunkKAAWCHO4js.getContextDocument; exports.getContextDocumentByPath = _chunkKAAWCHO4js.getContextDocumentByPath; exports.getContextSession = _chunkKAAWCHO4js.getContextSession; exports.getContextSpace = _chunkKAAWCHO4js.getContextSpace; exports.getMachineTemplate = _chunkKAAWCHO4js.getMachineTemplate; exports.getPermissionToolInputForDisplay = _chunkKAAWCHO4js.getPermissionToolInputForDisplay; exports.getQueuedUserMessageDisplayGroup = _chunkKAAWCHO4js.getQueuedUserMessageDisplayGroup; exports.getQueuedUserMessageReviewPriority = _chunkKAAWCHO4js.getQueuedUserMessageReviewPriority; exports.getSubagentCallingMetadata = _chunkKAAWCHO4js.getSubagentCallingMetadata; exports.getToolResultBlocks = _chunkKAAWCHO4js.getToolResultBlocks; exports.getToolResultToolUseId = _chunkKAAWCHO4js.getToolResultToolUseId; exports.hasDecoupledInteractionSettings = _chunkKAAWCHO4js.hasDecoupledInteractionSettings; exports.hasSubagentSessionTag = _chunkKAAWCHO4js.hasSubagentSessionTag; exports.inspectJsonRpcEnvelope = _chunkKAAWCHO4js.inspectJsonRpcEnvelope; exports.isDaemonQueuedMessageKind = _chunkKAAWCHO4js.isDaemonQueuedMessageKind; exports.isDroidConnectionEnded = isDroidConnectionEnded; exports.isPendingToolResultMarker = _chunkKAAWCHO4js.isPendingToolResultMarker; exports.isPersistedHookMessage = _chunkKAAWCHO4js.isPersistedHookMessage; exports.isReviewableQueuedMessageKind = _chunkKAAWCHO4js.isReviewableQueuedMessageKind; exports.isTransportLoggingEnabled = isTransportLoggingEnabled; exports.listComputers = _chunkKAAWCHO4js.listComputers; exports.listContextDocuments = _chunkKAAWCHO4js.listContextDocuments; exports.listContextSessions = _chunkKAAWCHO4js.listContextSessions; exports.listContextSpaces = _chunkKAAWCHO4js.listContextSpaces; exports.listEnvironments = _chunkKAAWCHO4js.listEnvironments; exports.listMachineTemplates = _chunkKAAWCHO4js.listMachineTemplates; exports.listModels = listModels; exports.listRemoteSessionElicitations = _chunkKAAWCHO4js.listRemoteSessionElicitations; exports.listRemoteSessions = _chunkKAAWCHO4js.listRemoteSessions; exports.listSessions = listSessions; exports.logTransportMessage = logTransportMessage; exports.machineTypeToMachineConnectionType = _chunkKAAWCHO4js.machineTypeToMachineConnectionType; exports.noopLogger = noopLogger; exports.readContextFilePart = _chunkKAAWCHO4js.readContextFilePart; exports.readContextSessionRecords = _chunkKAAWCHO4js.readContextSessionRecords; exports.recordComputerConnectSli = _chunkKAAWCHO4js.recordComputerConnectSli; exports.refreshComputer = _chunkKAAWCHO4js.refreshComputer; exports.registerContextSession = _chunkKAAWCHO4js.registerContextSession; exports.resolveExecCoreDeps = resolveExecCoreDeps; exports.restartComputer = _chunkKAAWCHO4js.restartComputer; exports.resumeSession = resumeSession; exports.retryInstallDeps = _chunkKAAWCHO4js.retryInstallDeps; exports.retryWithLogger = _chunkKAAWCHO4js.retryWithLogger; exports.run = run; exports.spawnWithWindowsJobObjectRetry = spawnWithWindowsJobObjectRetry; exports.sumTokenUsage = _chunkKAAWCHO4js.sumTokenUsage; exports.summarizeSessionToolUsage = _chunkKAAWCHO4js.summarizeSessionToolUsage; exports.toError = _chunkKAAWCHO4js.toError; exports.tool = tool; exports.updateComputer = _chunkKAAWCHO4js.updateComputer; exports.updateContextDocument = _chunkKAAWCHO4js.updateContextDocument; exports.uploadContextFilePart = _chunkKAAWCHO4js.uploadContextFilePart; exports.withJsonRpcCodec = withJsonRpcCodec;
4744
6001
  //# sourceMappingURL=node.js.map