@bastani/atomic 0.9.28-alpha.1 → 0.9.28-alpha.2

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 (202) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/package.json +1 -1
  5. package/dist/builtin/web-access/package.json +1 -1
  6. package/dist/builtin/workflows/CHANGELOG.md +23 -0
  7. package/dist/builtin/workflows/builtin/{chunk-wz8v67bn.js → chunk-aqv8ny38.js} +257 -259
  8. package/dist/builtin/workflows/builtin/{chunk-f61w0hpm.js → chunk-br4ac9a3.js} +1 -1
  9. package/dist/builtin/workflows/builtin/{chunk-tecnpe8j.js → chunk-p3xmajmj.js} +438 -39
  10. package/dist/builtin/workflows/builtin/chunk-p6jagvyf.js +8 -0
  11. package/dist/builtin/workflows/builtin/goal.js +2 -2
  12. package/dist/builtin/workflows/builtin/index.js +4 -4
  13. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  14. package/dist/builtin/workflows/package.json +1 -1
  15. package/dist/builtin/workflows/src/authoring.d.ts +14 -0
  16. package/dist/builtin/workflows/src/extension/index.bundle.mjs +107577 -106722
  17. package/dist/builtin/workflows/src/index.js +42284 -41141
  18. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +16 -11
  19. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +16 -1
  20. package/dist/cli/credential-print.d.ts +1 -1
  21. package/dist/cli/credential-print.d.ts.map +1 -1
  22. package/dist/cli/credential-print.js +2 -56
  23. package/dist/cli/credential-print.js.map +1 -1
  24. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  25. package/dist/core/agent-session-accessors.js +6 -1
  26. package/dist/core/agent-session-accessors.js.map +1 -1
  27. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  28. package/dist/core/agent-session-compaction.js +20 -3
  29. package/dist/core/agent-session-compaction.js.map +1 -1
  30. package/dist/core/agent-session-events.d.ts.map +1 -1
  31. package/dist/core/agent-session-events.js +2 -1
  32. package/dist/core/agent-session-events.js.map +1 -1
  33. package/dist/core/agent-session-extension-bindings.d.ts +6 -0
  34. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  35. package/dist/core/agent-session-extension-bindings.js +87 -7
  36. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  37. package/dist/core/agent-session-methods.d.ts +2 -1
  38. package/dist/core/agent-session-methods.d.ts.map +1 -1
  39. package/dist/core/agent-session-methods.js.map +1 -1
  40. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  41. package/dist/core/agent-session-prompt.js +14 -1
  42. package/dist/core/agent-session-prompt.js.map +1 -1
  43. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  44. package/dist/core/agent-session-tool-registry.js +1 -0
  45. package/dist/core/agent-session-tool-registry.js.map +1 -1
  46. package/dist/core/agent-session-types.d.ts +1 -0
  47. package/dist/core/agent-session-types.d.ts.map +1 -1
  48. package/dist/core/agent-session-types.js.map +1 -1
  49. package/dist/core/compaction/classifier-compaction.d.ts +13 -0
  50. package/dist/core/compaction/classifier-compaction.d.ts.map +1 -0
  51. package/dist/core/compaction/classifier-compaction.js +110 -0
  52. package/dist/core/compaction/classifier-compaction.js.map +1 -0
  53. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  54. package/dist/core/compaction/compaction-boundary.js +2 -6
  55. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  56. package/dist/core/compaction/compaction-runner.d.ts +16 -1
  57. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  58. package/dist/core/compaction/compaction-runner.js +97 -12
  59. package/dist/core/compaction/compaction-runner.js.map +1 -1
  60. package/dist/core/compaction/compaction-types.d.ts +18 -1
  61. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  62. package/dist/core/compaction/compaction-types.js +1 -1
  63. package/dist/core/compaction/compaction-types.js.map +1 -1
  64. package/dist/core/compaction/fallback-planner.d.ts +1 -0
  65. package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
  66. package/dist/core/compaction/fallback-planner.js +2 -0
  67. package/dist/core/compaction/fallback-planner.js.map +1 -1
  68. package/dist/core/compaction/index.d.ts +3 -0
  69. package/dist/core/compaction/index.d.ts.map +1 -1
  70. package/dist/core/compaction/index.js +3 -0
  71. package/dist/core/compaction/index.js.map +1 -1
  72. package/dist/core/compaction/model-resolver.d.ts +16 -0
  73. package/dist/core/compaction/model-resolver.d.ts.map +1 -0
  74. package/dist/core/compaction/model-resolver.js +18 -0
  75. package/dist/core/compaction/model-resolver.js.map +1 -0
  76. package/dist/core/compaction/morph-compaction.d.ts +14 -0
  77. package/dist/core/compaction/morph-compaction.d.ts.map +1 -0
  78. package/dist/core/compaction/morph-compaction.js +99 -0
  79. package/dist/core/compaction/morph-compaction.js.map +1 -0
  80. package/dist/core/compaction/pi-summary-fallback.d.ts +34 -0
  81. package/dist/core/compaction/pi-summary-fallback.d.ts.map +1 -0
  82. package/dist/core/compaction/pi-summary-fallback.js +357 -0
  83. package/dist/core/compaction/pi-summary-fallback.js.map +1 -0
  84. package/dist/core/compaction/planner-outcome.d.ts +10 -6
  85. package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
  86. package/dist/core/compaction/planner-outcome.js +11 -4
  87. package/dist/core/compaction/planner-outcome.js.map +1 -1
  88. package/dist/core/compaction/range-planner-diagnostics.d.ts +3 -1
  89. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  90. package/dist/core/compaction/range-planner-diagnostics.js +11 -0
  91. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  92. package/dist/core/compaction/range-planner.d.ts +3 -3
  93. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  94. package/dist/core/compaction/range-planner.js +59 -28
  95. package/dist/core/compaction/range-planner.js.map +1 -1
  96. package/dist/core/compaction/region-trimming.d.ts.map +1 -1
  97. package/dist/core/compaction/region-trimming.js +7 -0
  98. package/dist/core/compaction/region-trimming.js.map +1 -1
  99. package/dist/core/compaction/structured-compaction-input.d.ts +19 -0
  100. package/dist/core/compaction/structured-compaction-input.d.ts.map +1 -0
  101. package/dist/core/compaction/structured-compaction-input.js +70 -0
  102. package/dist/core/compaction/structured-compaction-input.js.map +1 -0
  103. package/dist/core/compaction/transcript-serialization.d.ts +1 -0
  104. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  105. package/dist/core/compaction/transcript-serialization.js +26 -0
  106. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  107. package/dist/core/extensions/api-types.d.ts +2 -2
  108. package/dist/core/extensions/api-types.d.ts.map +1 -1
  109. package/dist/core/extensions/api-types.js.map +1 -1
  110. package/dist/core/extensions/context-types.d.ts +1 -0
  111. package/dist/core/extensions/context-types.d.ts.map +1 -1
  112. package/dist/core/extensions/context-types.js.map +1 -1
  113. package/dist/core/extensions/loader-api.js.map +1 -1
  114. package/dist/core/extensions/runner-context.d.ts +10 -4
  115. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  116. package/dist/core/extensions/runner-context.js +47 -3
  117. package/dist/core/extensions/runner-context.js.map +1 -1
  118. package/dist/core/extensions/runner.d.ts +10 -3
  119. package/dist/core/extensions/runner.d.ts.map +1 -1
  120. package/dist/core/extensions/runner.js +31 -7
  121. package/dist/core/extensions/runner.js.map +1 -1
  122. package/dist/core/extensions/workflow-events.d.ts +49 -0
  123. package/dist/core/extensions/workflow-events.d.ts.map +1 -1
  124. package/dist/core/extensions/workflow-events.js.map +1 -1
  125. package/dist/core/extensions/workflow-run-control-hub.d.ts +16 -4
  126. package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
  127. package/dist/core/extensions/workflow-run-control-hub.js +72 -1
  128. package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
  129. package/dist/core/extensions/workflow-run-control.d.ts +11 -3
  130. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
  131. package/dist/core/extensions/workflow-run-control.js.map +1 -1
  132. package/dist/core/messages.d.ts +1 -0
  133. package/dist/core/messages.d.ts.map +1 -1
  134. package/dist/core/messages.js +5 -1
  135. package/dist/core/messages.js.map +1 -1
  136. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  137. package/dist/core/remote-catalog-provider.js +3 -0
  138. package/dist/core/remote-catalog-provider.js.map +1 -1
  139. package/dist/core/session-manager-history.d.ts.map +1 -1
  140. package/dist/core/session-manager-history.js +4 -2
  141. package/dist/core/session-manager-history.js.map +1 -1
  142. package/dist/core/settings-manager-basic-accessors.d.ts +2 -0
  143. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  144. package/dist/core/settings-manager-basic-accessors.js +29 -0
  145. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  146. package/dist/core/settings-types.d.ts +1 -0
  147. package/dist/core/settings-types.d.ts.map +1 -1
  148. package/dist/core/settings-types.js.map +1 -1
  149. package/dist/core/transcript.d.ts +58 -0
  150. package/dist/core/transcript.d.ts.map +1 -0
  151. package/dist/core/transcript.js +185 -0
  152. package/dist/core/transcript.js.map +1 -0
  153. package/dist/extensions/herdr/index.d.ts.map +1 -1
  154. package/dist/extensions/herdr/index.js +15 -10
  155. package/dist/extensions/herdr/index.js.map +1 -1
  156. package/dist/extensions/herdr/pane-owner.d.ts +6 -2
  157. package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
  158. package/dist/extensions/herdr/pane-owner.js +19 -4
  159. package/dist/extensions/herdr/pane-owner.js.map +1 -1
  160. package/dist/index.d.ts +2 -0
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +2 -0
  163. package/dist/index.js.map +1 -1
  164. package/dist/modes/interactive/components/compaction-boundary-message.d.ts +2 -0
  165. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  166. package/dist/modes/interactive/components/compaction-boundary-message.js +15 -3
  167. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  168. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  169. package/dist/modes/interactive/components/settings-selector-items.js +43 -0
  170. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  171. package/dist/modes/interactive/components/settings-selector-types.d.ts +6 -0
  172. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  173. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  174. package/dist/modes/interactive/interactive-prompt-turn.js +6 -4
  175. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
  176. package/dist/modes/interactive/interactive-render-chat.js +13 -1
  177. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  178. package/dist/modes/interactive/interactive-selectors.js +8 -0
  179. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  180. package/dist/modes/interactive/interactive-session-runtime.js +2 -0
  181. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  182. package/dist/modes/interactive/interactive-startup.js +1 -1
  183. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  184. package/dist/utils/credential-redaction.d.ts +2 -0
  185. package/dist/utils/credential-redaction.d.ts.map +1 -0
  186. package/dist/utils/credential-redaction.js +20 -0
  187. package/dist/utils/credential-redaction.js.map +1 -0
  188. package/docs/compaction/reference.md +10 -4
  189. package/docs/compaction.md +40 -8
  190. package/docs/docs.json +1 -0
  191. package/docs/extensions/api-reference.md +4 -0
  192. package/docs/extensions/events.md +2 -2
  193. package/docs/providers.md +12 -1
  194. package/docs/sdk/reference.md +16 -1
  195. package/docs/sdk/web-server.md +325 -0
  196. package/docs/sdk.md +83 -1
  197. package/docs/security.md +1 -1
  198. package/docs/workflows/api-reference.md +71 -3
  199. package/docs/workflows/builtins.md +4 -0
  200. package/docs/workflows/operations.md +12 -4
  201. package/npm-shrinkwrap.json +32 -32
  202. package/package.json +3 -3
@@ -7,7 +7,7 @@ import { hostInputError } from "./extensions/host-input.js";
7
7
  import { ExtensionRunner } from "./extensions/index.js";
8
8
  import { factoryAcquisitions, factoryRollbackError, rollbackFactoryAcquisitions, } from "./extensions/loader-rollback.js";
9
9
  import { emitSessionShutdownEvent } from "./extensions/runner.js";
10
- import { bindExtensionContextPublication } from "./extensions/runner-context.js";
10
+ import { bindExtensionContextPublication, runSynchronousExtensionContextEffect } from "./extensions/runner-context.js";
11
11
  import { isMandatoryRuntimeTool, isTrustedMandatoryRuntimeTool } from "./mandatory-runtime-tools.js";
12
12
  import { isSelectedNativeMcpTool } from "./mcp-child-policy.js";
13
13
  import { ModelRegistry } from "./model-registry.js";
@@ -21,7 +21,10 @@ class ExtensionPublicationGate {
21
21
  resourceLoader;
22
22
  effects = [];
23
23
  startEffects = [];
24
+ commitEffects = [];
25
+ commitFailures = [];
24
26
  providerTransaction;
27
+ commitsActivated = false;
25
28
  providerIds = new Set();
26
29
  isClosed;
27
30
  runner;
@@ -40,6 +43,37 @@ class ExtensionPublicationGate {
40
43
  if (!this.discarded)
41
44
  this.startEffects.push(effect);
42
45
  }
46
+ stageCommit(effect) {
47
+ if (this.discarded)
48
+ return;
49
+ if (!this.commitsActivated) {
50
+ this.commitEffects.push(effect);
51
+ return;
52
+ }
53
+ try {
54
+ runSynchronousExtensionContextEffect(effect);
55
+ }
56
+ catch (error) {
57
+ this.commitFailures.push(error);
58
+ try {
59
+ this.report(error, "session_start");
60
+ }
61
+ catch (reportingError) {
62
+ this.commitFailures.push(reportingError);
63
+ }
64
+ }
65
+ }
66
+ activateCommits() {
67
+ this.commitsActivated = true;
68
+ for (const effect of this.commitEffects.splice(0))
69
+ this.stageCommit(effect);
70
+ this.drainCommitFailures();
71
+ }
72
+ drainCommitFailures() {
73
+ if (this.commitFailures.length) {
74
+ throw new AggregateError(this.commitFailures.splice(0), "Extension commit activation failed");
75
+ }
76
+ }
43
77
  async activateStarts() {
44
78
  await this.publish(this.startEffects);
45
79
  }
@@ -50,6 +84,7 @@ class ExtensionPublicationGate {
50
84
  this.discarded = true;
51
85
  this.effects.length = 0;
52
86
  this.startEffects.length = 0;
87
+ this.commitEffects.length = 0;
53
88
  }
54
89
  async release() {
55
90
  await this.publish(this.effects);
@@ -115,6 +150,7 @@ const extensionStarts = new WeakMap();
115
150
  const failedExtensionStarts = new WeakSet();
116
151
  // Binding intent is session-local and survives runner reloads, even when a host object is reused.
117
152
  const humanInputBindingRevisions = new WeakMap();
153
+ const presentationOnlyBindings = new WeakMap();
118
154
  function startExtensions(session, runner, loader, event, finalize) {
119
155
  const existing = extensionStarts.get(runner);
120
156
  if (existing)
@@ -174,6 +210,8 @@ export async function bindExtensions(bindings) {
174
210
  if (bindings.mode !== undefined) {
175
211
  this._extensionMode = bindings.mode;
176
212
  }
213
+ if (bindings.isPresentationOnly !== undefined)
214
+ presentationOnlyBindings.set(this, bindings.isPresentationOnly);
177
215
  if (bindings.commandContextActions !== undefined) {
178
216
  this._extensionCommandContextActions = bindings.commandContextActions;
179
217
  }
@@ -214,7 +252,7 @@ export function getExtensionSourceLabel(extensionPath) {
214
252
  }
215
253
  export function _applyExtensionBindings(runner) {
216
254
  runner.setHostBindings(this._extensionHumanInput, this._extensionDiagnosticListener, humanInputBindingRevisions.get(this));
217
- runner.setUIContext(this._extensionUIContext, this._extensionMode);
255
+ runner.setUIContext(this._extensionUIContext, this._extensionMode, presentationOnlyBindings.get(this) ?? false);
218
256
  runner.bindCommandContext(this._extensionCommandContextActions);
219
257
  runner.bindChildSessionOptions(this._childSessionOptions);
220
258
  this._extensionErrorUnsubscriber?.();
@@ -243,7 +281,9 @@ export function _refreshCurrentModelFromRegistry() {
243
281
  }
244
282
  export function _bindExtensionCore(runner, publication) {
245
283
  runner.bindWorkOwner(this);
246
- bindExtensionContextPublication(runner.createContext(), publication && ((effect) => publication.stageStart(effect)));
284
+ if (publication) {
285
+ bindExtensionContextPublication(runner.createContext(), (effect, phase) => phase === "commit" ? publication.stageCommit(effect) : publication.stageStart(effect));
286
+ }
247
287
  runner.bindTaskHost(() => this.getAgentTaskHost());
248
288
  // A transactional successor starts before it is published. Its callbacks must inspect and
249
289
  // activate its own definitions, never the retiring session's registry. Keep this view local;
@@ -563,6 +603,20 @@ async function reloadAdmitted(options) {
563
603
  if (this._disposed)
564
604
  throw hostInputError("SessionClosed");
565
605
  await reloadGeneration.call(this, options);
606
+ if (!this._disposed &&
607
+ !sessionGenerationClosing.has(this) &&
608
+ !this.isStreaming &&
609
+ !this._queuedMessagesPaused &&
610
+ this._protectedStreamingCustomMessages?.some((entry) => entry.phase === "queued")) {
611
+ this._agentRunAbortRequested = false;
612
+ void trackSessionWork(this, () => this._runAgentPrompt([])).catch((error) => {
613
+ this._extensionRunner.emitError({
614
+ extensionPath: "session:reload",
615
+ event: "reload",
616
+ error: error instanceof Error ? error.message : String(error),
617
+ });
618
+ });
619
+ }
566
620
  }
567
621
  catch (error) {
568
622
  if (!this._disposed && this._extensionRunner === retiringRunner)
@@ -588,7 +642,8 @@ async function cleanupReloadRunner(runner, reason) {
588
642
  const failures = [];
589
643
  for (const cleanup of [
590
644
  () => runner.drainWork(),
591
- () => reason === "reload" && emitSessionShutdownEvent(runner, { type: "session_shutdown", reason: "reload" }),
645
+ () => (reason === "reload" || reason === "startup") &&
646
+ emitSessionShutdownEvent(runner, { type: "session_shutdown", reason: "reload" }),
592
647
  () => runner.invalidate(),
593
648
  ]) {
594
649
  try {
@@ -634,8 +689,13 @@ async function reloadOwnedGeneration(retainedRuntimes, options) {
634
689
  if (options?.failOnExtensionErrors) {
635
690
  throw new Error("Strict extension reload requires a transactional resource loader");
636
691
  }
637
- oldRunner.revokeAuthority();
638
692
  const retiringFailures = [];
693
+ try {
694
+ oldRunner.revokeAuthority();
695
+ }
696
+ catch (error) {
697
+ retiringFailures.push(error);
698
+ }
639
699
  await retireSessionReloadGeneration(this, () => cleanupReloadRunner(oldRunner, reason)).catch((error) => {
640
700
  retiringFailures.push(error);
641
701
  });
@@ -699,7 +759,7 @@ async function reloadOwnedGeneration(retainedRuntimes, options) {
699
759
  });
700
760
  this._bindExtensionCore(candidateRunner, publication);
701
761
  candidateRunner.setHostBindings(this._extensionHumanInput, this._extensionDiagnosticListener, humanInputBindingRevisions.get(this));
702
- candidateRunner.setUIContext(this._extensionUIContext, this._extensionMode);
762
+ candidateRunner.setUIContext(this._extensionUIContext, this._extensionMode, presentationOnlyBindings.get(this) ?? false);
703
763
  candidateRunner.bindCommandContext(this._extensionCommandContextActions);
704
764
  candidateRunner.bindChildSessionOptions(this._childSessionOptions);
705
765
  if (options?.failOnExtensionErrors && errors.length > 0)
@@ -733,6 +793,7 @@ async function reloadOwnedGeneration(retainedRuntimes, options) {
733
793
  () => rollbackPreparedResources?.(),
734
794
  () => publication.discard(),
735
795
  () => candidateRunner.sealHostInput(),
796
+ () => candidateRunner.retireObservation(),
736
797
  () => candidateRunner.drainWork(),
737
798
  () => emitSessionShutdownEvent(candidateRunner, { type: "session_shutdown", reason: "reload" }),
738
799
  () => candidateRunner.invalidate(),
@@ -753,6 +814,7 @@ async function reloadOwnedGeneration(retainedRuntimes, options) {
753
814
  // Publication transferred ownership: keep the started candidate reachable even
754
815
  // when reconstruction fails, and retain retiring cleanup through every step.
755
816
  this._extensionRunner = candidateRunner;
817
+ this._workflows?.rebindObservers();
756
818
  retainedRuntimes.add(extensionsResult.runtime);
757
819
  const failures = [];
758
820
  try {
@@ -778,13 +840,31 @@ async function reloadOwnedGeneration(retainedRuntimes, options) {
778
840
  failures.push(error);
779
841
  }
780
842
  const setupFailed = failures.length > 0;
843
+ try {
844
+ publication.activateCommits();
845
+ }
846
+ catch (error) {
847
+ failures.push(error);
848
+ }
781
849
  try {
782
850
  oldRunner.revokeAuthority();
851
+ }
852
+ catch (error) {
853
+ failures.push(error);
854
+ }
855
+ try {
783
856
  await retireSessionReloadGeneration(this, () => cleanupReloadRunner(oldRunner, reason));
784
857
  }
785
858
  catch (error) {
786
859
  failures.push(error);
787
860
  }
861
+ bindExtensionContextPublication(candidateRunner.createContext(), undefined);
862
+ try {
863
+ publication.drainCommitFailures();
864
+ }
865
+ catch (error) {
866
+ failures.push(error);
867
+ }
788
868
  if (setupFailed)
789
869
  throw failures.length > 1 ? retiringCleanupError(failures) : failures[0];
790
870
  if (this._disposed)
@@ -795,7 +875,7 @@ async function reloadOwnedGeneration(retainedRuntimes, options) {
795
875
  await publication.activateStarts();
796
876
  await publication.release();
797
877
  if (failures.length)
798
- throw failures[0];
878
+ throw failures.length > 1 ? retiringCleanupError(failures) : failures[0];
799
879
  }
800
880
  /** Publish approved startup resources without replacing the session or restarting safe reporters. */
801
881
  export async function completeStartupResources(resourceLoader) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session-extension-bindings.js","sourceRoot":"","sources":["../../src/core/agent-session-extension-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,6BAA6B,EAC7B,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,wBAAwB;IACpB,cAAc,CAAiB;IACvB,OAAO,GAAsC,EAAE,CAAC;IAChD,YAAY,GAAsC,EAAE,CAAC;IAC7D,mBAAmB,CAA+B;IAClD,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACxB,QAAQ,CAAgB;IACxB,MAAM,CAAkB;IACjC,SAAS,GAAG,KAAK,CAAC;IAE1B,YACC,cAA8B,EAC9B,MAAuB,EACvB,YAA0B,EAC1B,QAAuB,EACvB,mBAAqC;QAErC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,kCAAkC,CAAC,mBAAmB,CAAC,CAAC;IACjG,CAAC;IAED,KAAK,CAAC,MAAkC;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,MAAkC;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAED,OAAO;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAA0C;QAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC3D,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC;gBACJ,MAAM,MAAM,EAAE,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;IAEO,MAAM,CAAC,KAAc,EAAE,KAAa;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACrB,aAAa,EAAE,WAAW;YAC1B,KAAK;YACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7D,CAAC,CAAC;IACJ,CAAC;CACD;AAED,SAAS,oCAAoC,CAC5C,OAAqB,EACrB,MAAsB,EACtB,OAAuD;IAEvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,MAAM;aACtB,aAAa,EAAE;aACf,UAAU,CAAC,IAAI,CACf,CAAC,SAAS,EAAE,EAAE,CACb,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa;YACtC,SAAS,CAAC,YAAY,KAAK,KAAK,CAAC,aAAa;YAC9C,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,aAAa,CAClD,CAAC;QACH,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;QACzC,OAAO;YACN,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE;gBACT,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,aAAa,CAAC;gBAClF,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,WAAW;gBACvC,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,WAAW;gBACzC,OAAO,EACN,UAAU,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACxG,mBAAmB,EAAE,UAAU,EAAE,mBAAmB;aACpD;SACD,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,OAAqB,EACrB,MAAuB,EACvB,MAAsB,EACtB,MAA4B;IAE5B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC;QAAE,OAAO;IACtD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzG,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC3F,MAAM,cAAc,GAA2B;QAC9C,UAAU,EAAE,oCAAoC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;QAC7E,WAAW,EAAE,oCAAoC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;QAC/E,UAAU,EAAE,oCAAoC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC;KAC7E,CAAC;IACF,MAAM,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,OAAO,EAAkC,CAAC;AACtE,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAmB,CAAC;AAC7D,kGAAkG;AAClG,MAAM,0BAA0B,GAAG,IAAI,OAAO,EAAwB,CAAC;AAEvE,SAAS,eAAe,CACvB,OAAqB,EACrB,MAAuB,EACvB,MAAsB,EACtB,KAAyC,EACzC,QAA8B;IAE9B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnE,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAC5C,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACjC,MAAM,QAAQ,GAAY,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,KAAK,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;gBAC7E,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;QACF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACJ,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACvG,IAAI,QAAQ,CAAC,MAAM;gBAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;YACpF,MAAM,QAAQ,EAAE,EAAE,CAAC;YACnB,eAAe,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;gBAAS,CAAC;YACV,WAAW,EAAE,CAAC;QACf,CAAC;IACF,CAAC,CAAC,CACF,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAChC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,eAAe,CAAC,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACzG,IAAI,CAAC;gBACJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;oBAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACzD,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACvB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,sCAAsC,CAAC,EAAE;oBACtG,IAAI,EAAE,gBAAgB;iBACtB,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAqB,QAA2B;IACnF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,mFAAmF;QACnF,IAAI,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAAE,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAE,CAAC;QACzG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,UAAU,CAAC;QAChD,0BAA0B,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,4BAA4B,GAAG,QAAQ,CAAC,YAAY,CAAC;IACnG,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC/C,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC;IACrC,CAAC;IACD,IAAI,QAAQ,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,+BAA+B,GAAG,QAAQ,CAAC,qBAAqB,CAAC;IACvE,CAAC;IACD,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC,eAAe,CAAC;IAC3D,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjD,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAC5G,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACrD,IAAI,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC3C,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAqB,MAA4B;IACnG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACvF,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAE1C,OAAuD;IAKvD,OAAO,oCAAoC,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAqB,aAAqB;IAChF,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,aAAa,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,aAAa,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAqB,MAAuB;IAClF,MAAM,CAAC,eAAe,CACrB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,4BAA4B,EACjC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CACpC,CAAC;IACF,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE1D,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;IACrC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,uBAAuB;QAC9D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC9C,IAAI,CAAC,gCAAgC,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;IAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QACnB,OAAO;IACR,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;QACxD,OAAO;IACR,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC;IACnC,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC;IACxC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,CAAC,uCAAuC,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAEjC,MAAuB,EACvB,WAAsC;IAEtC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,+BAA+B,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACnD,0FAA0F;IAC1F,6FAA6F;IAC7F,kFAAkF;IAClF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QACjC,MAAM,WAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;QACtD,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5D,IAAI,SAAS,CAAC,IAAI,CAAC;gBAClB,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;oBACrB,UAAU;oBACV,UAAU,EAAE,yBAAyB,CAAC,YAAY,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;iBACjF,CAAC,CAAC;QACL,CAAC;QACD,MAAM,UAAU,GAAG,MAAM;aACvB,qBAAqB,EAAE;aACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;QACzG,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAClC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC3G,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;gBACzE,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;oBAChC,UAAU;oBACV,UAAU,EAAE,yBAAyB,CAAC,QAAQ,UAAU,CAAC,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;iBACpF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC;IACF,IAAI,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACrD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,qBAAqB,GAAG,GAAG,EAAE;QAClC,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAC;YACjD,IACC,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC;gBACjC,UAAU,CAAC,aAAa,KAAK,KAAK;gBAClC,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,YAAY,CAAC;gBAEpD,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,oBAAoB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACzE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,CACN,IAAI;gBACJ,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;gBACrC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CACnG,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,GAAuB,EAAE;QAC5C,MAAM,iBAAiB,GAAuB,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9F,IAAI,EAAE,OAAO,CAAC,cAAc;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAC,CAAC;QAEJ,MAAM,SAAS,GAAuB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7E,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,QAAQ,CAAC,UAAU;SAC/B,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAuB,eAAe,CACjD,WAAW,EAAE,cAAc,IAAI,IAAI,CAAC,eAAe,CACnD,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE;YAC7B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO;YACf,UAAU,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,GAAG,iBAAiB,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,CAAC,QAAQ,CACd;QACC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACjC,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAClE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1D,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,SAAS,CAAC;oBAChB,aAAa,EAAE,WAAW;oBAC1B,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACvD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YACnC,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBACpE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC5D,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,MAAM,CAAC,SAAS,CAAC;oBAChB,aAAa,EAAE,WAAW;oBAC1B,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACvD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,GAAG,EAAE,CACjB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACpD,MAAM,CAAC,SAAS,CAAC;oBAChB,aAAa,EAAE,WAAW;oBAC1B,KAAK,EAAE,mBAAmB;oBAC1B,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACvD,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YACJ,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;gBACpC,KAAK,IAAI,EAAE,CAAC;QAClB,CAAC;QACD,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,GAAG,EAAE;gBACnB,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,KAAK;oBAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC;YACF,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;gBACtC,MAAM,EAAE,CAAC;QACf,CAAC;QACD,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;;gBAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACpB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5B,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;oBACtB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;YACJ,CAAC;;gBAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACpB,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACnD,qBAAqB,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,oBAAoB,CAAC,CAAC;QAClC,CAAC;QACD,WAAW,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,qBAAqB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjF,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC;oBACnD,CAAC,CAAC,EAAE,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,EAAE;oBACzD,CAAC,CAAC,EAAE,CAAC;gBACN,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;gBAC7C,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,QAAQ;gBACzC,SAAS,EAAE,UAAU,CAAC,SAAS;gBAC/B,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,UAAU;aACV,CAAC,CAAC,CAAC;QACL,CAAC;QACD,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE;YAC7B,IAAI,WAAW,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAC;gBAC5C,oBAAoB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC9D,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnC,OAAO,CACN,IAAI;wBACJ,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,QAAQ;wBACrC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CACnG,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC;gBAC3C,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9D,CAAC;;gBAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YAClB,IAAI,WAAW;gBAAE,qBAAqB,EAAE,CAAC;;gBACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClC,CAAC;QACD,WAAW;QACX,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,iBAAiB,GACtB,WAAW,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,iBAAiB;gBAAE,OAAO,KAAK,CAAC;YACrC,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;;gBAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa;QAC1C,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;;gBAClE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;KACD,EACD;QACC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK;QAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;QAC1G,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC9C,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACrD,yEAAyE;QACzE,sEAAsE;QACtE,yEAAyE;QACzE,8BAA8B;QAC9B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY;QACxC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa;QAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;QAC/B,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE;QAC/D,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;QAClC,KAAK,EAAE,GAAG,EAAE;YACX,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;;gBAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC;QACtD,QAAQ,EAAE,GAAG,EAAE;YACd,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;;gBACxE,IAAI,CAAC,yBAAyB,EAAE,EAAE,CAAC;QACzC,CAAC;QACD,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE;QAC7C,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;YACpB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBAC1B,IAAI,CAAC;oBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;wBACjC,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS;4BAC3C,CAAC,CAAC,EAAE;4BACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;wBACpD,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;wBAC/F,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;qBACjE,CAAC,CAAC;oBACH,OAAO,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtE,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACF,CAAC,CAAC;YACF,IAAI,WAAW;gBAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;gBACvC,KAAK,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY;QACxC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;QAC3D,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;QAC7D,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC;QAC3F,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB;KAC3D,EACD;QACC,gBAAgB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;YAC5C,MAAM,UAAU,GAAG,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3F,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxC,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;oBACxC,WAAW,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAO,CAAC,CAAC;gBAC3E,CAAC;;oBAAM,WAAW,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;gBAC9E,OAAO;YACR,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClF,IAAI,OAAO,cAAc,KAAK,QAAQ;gBAAE,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAO,CAAC,CAAC;;gBAChG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;YAC/D,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACxC,CAAC;QACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC5B,IAAI,WAAW,EAAE,CAAC;gBACjB,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACrC,WAAW,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/E,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,+BAA+B,EAAE,CAAC;YACxC,CAAC;QACF,CAAC;KACD,CACD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAqB,OAAmC;IACnF,IAAI,IAAI,CAAC,SAAS,IAAI,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC;QACjF,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;IACvC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,cAAc,CAAqB,OAAmC;IACpF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC;IAC7C,IAAI,CAAC;QACJ,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACxE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,cAAc;YAAE,cAAc,CAAC,yBAAyB,EAAE,CAAC;QAC5G,MAAM,KAAK,CAAC;IACb,CAAC;YAAS,CAAC;QACV,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;AACF,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7G,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAmB;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,mCAAmC,MAAM,EAAE,CAAC,EAAE;QAC/F,IAAI,EAAE,gBAAgB;KACtB,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,MAAuB,EAAE,MAAc;IACzE,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI;QACrB,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;QACxB,GAAG,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,wBAAwB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC7G,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE;KACzB,EAAE,CAAC;QACH,IAAI,CAAC;YACJ,MAAM,OAAO,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM;QAAE,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAqB,OAAmC;IACtF,OAAO,mBAAmB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE;QACpF,kFAAkF;QAClF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoB,CAAC;QACrD,IAAI,CAAC;YACJ,MAAM,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,QAAQ,EAAE,iCAAiC,CAAC,EAAE;gBACpF,IAAI,EAAE,gBAAgB;aACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAEnC,gBAAuC,EACvC,OAAmC;IAEnC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACxC,MAAM,kBAAkB,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;IAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClD,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;IACvD,MAAM,sBAAsB,GAAG,CAAC,YAA+B,EAAE,EAAE,CAAC;QACnE,GAAG,eAAe;QAClB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjG,CAAC;IACF,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7F,IAAI,qBAAqB,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,2BAA2B,EAAE,EAAE,KAAK,KAAK,EAAE,CAAC;QAC3G,IAAI,OAAO,EAAE,qBAAqB,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACrF,CAAC;QACD,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAc,EAAE,CAAC;QACvC,MAAM,6BAA6B,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAC5F,CAAC,KAAc,EAAE,EAAE;YAClB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CACD,CAAC;QACF,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACpC,iBAAiB,EAAE,CAAC;QACpB,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,mBAAmB,EAAE,CAAC;QACrF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC;YAClB,eAAe,EAAE,sBAAsB,CAAC,YAAY,CAAC;YACrD,UAAU,EAAE,kBAAkB;YAC9B,wBAAwB,EAAE,IAAI;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;QACnE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,UAAU;YACtE,mBAAmB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,2BAA2B,CAC1D,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,CACvD,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM;YAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,EAAE;gBAC7F,IAAI,EAAE,gBAAgB;aACtB,CAAC,CAAC;QACJ,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACrD,IAAI,gBAAgB,CAAC,MAAM;YAAE,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO;IACR,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;IACvE,MAAM,mBAAmB,GAAG,MAAM,qBAAqB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAC7F,MAAM,YAAY,GAAG,mBAAmB,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,mBAAmB,EAAE,CAAC;IACpG,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;IACjE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAChD,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrD,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,GAAG,EAAE,CAAC;QACzD,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,eAAe,GAAG,IAAI,eAAe,CAC1C,gBAAgB,CAAC,UAAU,EAC3B,gBAAgB,CAAC,OAAO,EACxB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,cAAc,EACnB,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EACrC,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,eAAe,CACpB,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,wBAAwB,CAC/C,mBAAmB,CAAC,MAAM,EAC1B,eAAe,EACf,IAAI,CAAC,aAAa,EAClB,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EACpB,IAAI,CAAC,qBAAqB,CAC1B,CAAC;IACF,IAAI,uBAAiD,CAAC;IACtD,IAAI,yBAAmD,CAAC;IACxD,IAAI,CAAC;QACJ,2EAA2E;QAC3E,kEAAkE;QAClE,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,UAAU;YAAE,mBAAmB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAChH,MAAM,iBAAiB,GAAG,MAAM,2BAA2B,CAAC,IAAI,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,iBAAiB,CAAC,MAAM;YAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,EAAE;gBAC7F,IAAI,EAAE,gBAAgB;aACtB,CAAC,CAAC;QACJ,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QACtD,eAAe,CAAC,eAAe,CAC9B,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,4BAA4B,EACjC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CACpC,CAAC;QACF,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5E,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACzE,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnE,IAAI,OAAO,EAAE,qBAAqB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACtD,MAAM,IAAI,KAAK,CACd,8BAA8B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,mBAAmB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,aAAa,EAAE,EAAE,CAAC;QAChE,IAAI,iBAAiB,EAAE,CAAC;YACvB,uBAAuB,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC3D,yBAAyB,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAChE,CAAC;QACD,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QAC1D,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAC7B,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,uBAAuB;YAAE,uBAAuB,EAAE,CAAC;;YAClD,mBAAmB,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI;YACrB,GAAG,EAAE,CAAC,yBAAyB,EAAE,EAAE;YACnC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE;YAC3B,GAAG,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE;YACrC,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE;YACjC,GAAG,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC/F,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE;SAClC,EAAE,CAAC;YACH,IAAI,CAAC;gBACJ,MAAM,OAAO,EAAE,CAAC;YACjB,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM;YAClB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,wBAAwB,CAAC,EAAE;gBACvF,IAAI,EAAE,gBAAgB;aACtB,CAAC,CAAC;QACJ,MAAM,KAAK,CAAC;IACb,CAAC;IAED,+EAA+E;IAC/E,6EAA6E;IAC7E,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IACxC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,CAAC;QACJ,iBAAiB,EAAE,CAAC;QACpB,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9D,gBAAgB,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjF,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,mBAAmB;YAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,GAAG,eAAe,CAAC;QACjF,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC;YAClB,eAAe,EAAE,sBAAsB,CAAC,YAAY,CAAC;YACrD,UAAU,EAAE,kBAAkB;YAC9B,wBAAwB,EAAE,IAAI;YAC9B,cAAc,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC;QACJ,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,6BAA6B,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,WAAW;QAAE,MAAM,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,IAAI,CAAC,SAAS;QAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC1F,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,8EAA8E;IAC9E,yFAAyF;IACzF,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;IACnC,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAC5B,IAAI,QAAQ,CAAC,MAAM;QAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAqB,cAA8B;IAChG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;QAChH,IAAI,CAAC,aAAa,CAAC;YAClB,eAAe,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC1C,wBAAwB,EAAE,IAAI;YAC9B,cAAc,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,MAAM,cAAc,EAAE,CAAC;QACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,aAAa;AACb,4EAA4E;AAE5E;;;GAGG;AAEH,MAAM,CAAC,MAAM,oCAAoC,GAAG;IACnD,cAAc;IACd,wBAAwB;IACxB,6BAA6B;IAC7B,2BAA2B;IAC3B,uBAAuB;IACvB,uBAAuB;IACvB,+BAA+B;IAC/B,gCAAgC;IAChC,kBAAkB;IAClB,MAAM;CACN,CAAC","sourcesContent":["import { basename, dirname } from \"node:path\";\nimport { resetApiProviders } from \"@bastani/pi-ai/compat\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { executeNestedToolCall, getCallableTools } from \"./agent-session-nested-tools.js\";\nimport { recoverProtectedStreamingCustomMessages } from \"./agent-session-persistent-custom-messages.ts\";\nimport { replaceSessionTaskOwner } from \"./agent-session-tasks.js\";\nimport type { AgentSessionReloadOptions, ExtensionBindings } from \"./agent-session-types.js\";\nimport { hostInputError } from \"./extensions/host-input.js\";\nimport { ExtensionRunner } from \"./extensions/index.js\";\nimport {\n\tfactoryAcquisitions,\n\tfactoryRollbackError,\n\trollbackFactoryAcquisitions,\n} from \"./extensions/loader-rollback.ts\";\nimport { emitSessionShutdownEvent } from \"./extensions/runner.ts\";\nimport { bindExtensionContextPublication } from \"./extensions/runner-context.ts\";\nimport type { ExtensionRuntime, RegisteredTool } from \"./extensions/types.ts\";\nimport { isMandatoryRuntimeTool, isTrustedMandatoryRuntimeTool } from \"./mandatory-runtime-tools.ts\";\nimport { isSelectedNativeMcpTool } from \"./mcp-child-policy.ts\";\nimport { ModelRegistry } from \"./model-registry.ts\";\nimport type { ExtensionProviderTransaction, ModelRuntime } from \"./model-runtime.js\";\nimport type { PathMetadata } from \"./package-manager.ts\";\nimport type { ResourceExtensionPaths, ResourceLoader } from \"./resource-loader.ts\";\nimport {\n\tabortSessionWork,\n\tassertSessionOpen,\n\tdrainSessionWork,\n\thasSessionReload,\n\trenewSessionWork,\n\tretireSessionReloadGeneration,\n\tsessionGenerationClosing,\n\ttrackSessionReload,\n\ttrackSessionWork,\n} from \"./session-lifecycle-work.ts\";\nimport { completeStartup, rollbackStartup } from \"./session-startup-rollback.ts\";\nimport { getSkillCatalog } from \"./skill-catalog.ts\";\nimport type { SlashCommandInfo } from \"./slash-commands.js\";\nimport { createSyntheticSourceInfo } from \"./source-info.ts\";\nimport { isRegisteredToolAllowed, isToolActivatable } from \"./tool-selection.ts\";\nimport { getDefaultToolNames } from \"./tools/index.ts\";\n\nclass ExtensionPublicationGate {\n\treadonly resourceLoader: ResourceLoader;\n\tprivate readonly effects: Array<() => void | Promise<void>> = [];\n\tprivate readonly startEffects: Array<() => void | Promise<void>> = [];\n\treadonly providerTransaction: ExtensionProviderTransaction;\n\treadonly providerIds = new Set<string>();\n\tprivate readonly isClosed: () => boolean;\n\tprivate readonly runner: ExtensionRunner;\n\tprivate discarded = false;\n\n\tconstructor(\n\t\tresourceLoader: ResourceLoader,\n\t\trunner: ExtensionRunner,\n\t\tmodelRuntime: ModelRuntime,\n\t\tisClosed: () => boolean,\n\t\treplacedProviderIds: Iterable<string>,\n\t) {\n\t\tthis.isClosed = isClosed;\n\t\tthis.resourceLoader = resourceLoader;\n\t\tthis.runner = runner;\n\t\tthis.providerTransaction = modelRuntime.createExtensionProviderTransaction(replacedProviderIds);\n\t}\n\n\tdefer(effect: () => void | Promise<void>): void {\n\t\tif (!this.discarded) this.effects.push(effect);\n\t}\n\n\tstageStart(effect: () => void | Promise<void>): void {\n\t\tif (!this.discarded) this.startEffects.push(effect);\n\t}\n\n\tasync activateStarts(): Promise<void> {\n\t\tawait this.publish(this.startEffects);\n\t}\n\n\tasync publishProviders(): Promise<void> {\n\t\tawait this.providerTransaction.commit();\n\t}\n\n\tdiscard(): void {\n\t\tthis.discarded = true;\n\t\tthis.effects.length = 0;\n\t\tthis.startEffects.length = 0;\n\t}\n\n\tasync release(): Promise<void> {\n\t\tawait this.publish(this.effects);\n\t}\n\n\tprivate async publish(effects: Array<() => void | Promise<void>>): Promise<void> {\n\t\tif (this.isClosed()) throw hostInputError(\"SessionClosed\");\n\t\tfor (const effect of effects.splice(0)) {\n\t\t\ttry {\n\t\t\t\tawait effect();\n\t\t\t} catch (error) {\n\t\t\t\tthis.report(error, \"session_start\");\n\t\t\t}\n\t\t\tif (this.isClosed()) throw hostInputError(\"SessionClosed\");\n\t\t}\n\t}\n\n\tprivate report(error: unknown, event: string): void {\n\t\tthis.runner.emitError({\n\t\t\textensionPath: \"<runtime>\",\n\t\t\tevent,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t});\n\t}\n}\n\nfunction buildExtensionResourcePathsForLoader(\n\tsession: AgentSession,\n\tloader: ResourceLoader,\n\tentries: Array<{ path: string; extensionPath: string }>,\n): Array<{ path: string; metadata: PathMetadata }> {\n\treturn entries.map((entry) => {\n\t\tconst extension = loader\n\t\t\t.getExtensions()\n\t\t\t.extensions.find(\n\t\t\t\t(candidate) =>\n\t\t\t\t\tcandidate.path === entry.extensionPath ||\n\t\t\t\t\tcandidate.resolvedPath === entry.extensionPath ||\n\t\t\t\t\tcandidate.sourceInfo.path === entry.extensionPath,\n\t\t\t);\n\t\tconst sourceInfo = extension?.sourceInfo;\n\t\treturn {\n\t\t\tpath: entry.path,\n\t\t\tmetadata: {\n\t\t\t\tsource: sourceInfo?.source ?? session.getExtensionSourceLabel(entry.extensionPath),\n\t\t\t\tscope: sourceInfo?.scope ?? \"temporary\",\n\t\t\t\torigin: sourceInfo?.origin ?? \"top-level\",\n\t\t\t\tbaseDir:\n\t\t\t\t\tsourceInfo?.baseDir ?? (entry.extensionPath.startsWith(\"<\") ? undefined : dirname(entry.extensionPath)),\n\t\t\t\tconfigurationOrigin: sourceInfo?.configurationOrigin,\n\t\t\t},\n\t\t};\n\t});\n}\n\nasync function extendRunnerResources(\n\tsession: AgentSession,\n\trunner: ExtensionRunner,\n\tloader: ResourceLoader,\n\treason: \"startup\" | \"reload\",\n): Promise<void> {\n\tif (!runner.hasHandlers(\"resources_discover\")) return;\n\tconst { skillPaths, promptPaths, themePaths } = await runner.emitResourcesDiscover(session._cwd, reason);\n\tif (session._disposed) throw hostInputError(\"SessionClosed\");\n\tif (skillPaths.length === 0 && promptPaths.length === 0 && themePaths.length === 0) return;\n\tconst extensionPaths: ResourceExtensionPaths = {\n\t\tskillPaths: buildExtensionResourcePathsForLoader(session, loader, skillPaths),\n\t\tpromptPaths: buildExtensionResourcePathsForLoader(session, loader, promptPaths),\n\t\tthemePaths: buildExtensionResourcePathsForLoader(session, loader, themePaths),\n\t};\n\tawait loader.extendResources(extensionPaths);\n}\n\nconst extensionStarts = new WeakMap<ExtensionRunner, Promise<void>>();\nconst failedExtensionStarts = new WeakSet<ExtensionRunner>();\n// Binding intent is session-local and survives runner reloads, even when a host object is reused.\nconst humanInputBindingRevisions = new WeakMap<AgentSession, number>();\n\nfunction startExtensions(\n\tsession: AgentSession,\n\trunner: ExtensionRunner,\n\tloader: ResourceLoader,\n\tevent: AgentSession[\"_sessionStartEvent\"],\n\tfinalize?: () => Promise<void>,\n): Promise<void> {\n\tconst existing = extensionStarts.get(runner);\n\tif (existing) return finalize ? existing.then(finalize) : existing;\n\tconst start = trackSessionWork(session, () =>\n\t\tPromise.resolve().then(async () => {\n\t\t\tconst failures: Error[] = [];\n\t\t\tconst unsubscribe = runner.onError((error) => {\n\t\t\t\tif (error.event === \"session_start\" || error.event === \"resources_discover\") {\n\t\t\t\t\tfailures.push(new Error(`${error.extensionPath}: ${error.error}`));\n\t\t\t\t}\n\t\t\t});\n\t\t\ttry {\n\t\t\t\tawait runner.emit(event);\n\t\t\t\tawait extendRunnerResources(session, runner, loader, event.reason === \"reload\" ? \"reload\" : \"startup\");\n\t\t\t\tif (failures.length) throw new AggregateError(failures, \"Extension startup failed\");\n\t\t\t\tawait finalize?.();\n\t\t\t\tcompleteStartup(runner);\n\t\t\t} finally {\n\t\t\t\tunsubscribe();\n\t\t\t}\n\t\t}),\n\t).catch(async (error: unknown) => {\n\t\tfailedExtensionStarts.add(runner);\n\t\treturn rollbackStartup(runner, error instanceof Error ? error : new Error(String(error)), async (cause) => {\n\t\t\ttry {\n\t\t\t\tif (!hasSessionReload(session)) await session.dispose();\n\t\t\t} catch (cleanupError) {\n\t\t\t\tthrow Object.assign(new AggregateError([cause, cleanupError], \"Extension startup and cleanup failed\"), {\n\t\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow cause;\n\t\t});\n\t});\n\textensionStarts.set(runner, start);\n\treturn start;\n}\n\nexport async function bindExtensions(this: AgentSession, bindings: ExtensionBindings): Promise<void> {\n\tif (this._disposed) {\n\t\t// Failed creation retains its original rejection; it never admits another startup.\n\t\tif (failedExtensionStarts.has(this._extensionRunner)) return extensionStarts.get(this._extensionRunner)!;\n\t\tthrow hostInputError(\"SessionClosed\");\n\t}\n\tif (bindings.humanInput !== undefined) {\n\t\tthis._extensionHumanInput = bindings.humanInput;\n\t\thumanInputBindingRevisions.set(this, (humanInputBindingRevisions.get(this) ?? 0) + 1);\n\t}\n\tif (bindings.onDiagnostic !== undefined) this._extensionDiagnosticListener = bindings.onDiagnostic;\n\tif (bindings.uiContext !== undefined) {\n\t\tthis._extensionUIContext = bindings.uiContext;\n\t}\n\tif (bindings.mode !== undefined) {\n\t\tthis._extensionMode = bindings.mode;\n\t}\n\tif (bindings.commandContextActions !== undefined) {\n\t\tthis._extensionCommandContextActions = bindings.commandContextActions;\n\t}\n\tif (bindings.shutdownHandler !== undefined) {\n\t\tthis._extensionShutdownHandler = bindings.shutdownHandler;\n\t}\n\tif (bindings.onError !== undefined) {\n\t\tthis._extensionErrorListener = bindings.onError;\n\t}\n\n\tthis._applyExtensionBindings(this._extensionRunner);\n\tawait startExtensions(this, this._extensionRunner, this._resourceLoader, this._sessionStartEvent, async () => {\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n\t\tif (recoverProtectedStreamingCustomMessages(this) > 0) {\n\t\t\tawait this._continueQueuedAgentMessages();\n\t\t}\n\t});\n}\n\nexport async function extendResourcesFromExtensions(this: AgentSession, reason: \"startup\" | \"reload\"): Promise<void> {\n\tassertSessionOpen(this);\n\treturn trackSessionWork(this, async () => {\n\t\tawait extendRunnerResources(this, this._extensionRunner, this._resourceLoader, reason);\n\t\tassertSessionOpen(this);\n\t\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n\t});\n}\n\nexport function buildExtensionResourcePaths(\n\tthis: AgentSession,\n\tentries: Array<{ path: string; extensionPath: string }>,\n): Array<{\n\tpath: string;\n\tmetadata: PathMetadata;\n}> {\n\treturn buildExtensionResourcePathsForLoader(this, this._resourceLoader, entries);\n}\n\nexport function getExtensionSourceLabel(this: AgentSession, extensionPath: string): string {\n\tif (extensionPath.startsWith(\"<\")) {\n\t\treturn `extension:${extensionPath.replace(/[<>]/g, \"\")}`;\n\t}\n\tconst base = basename(extensionPath);\n\tconst name = base.replace(/\\.(ts|js)$/, \"\");\n\treturn `extension:${name}`;\n}\n\nexport function _applyExtensionBindings(this: AgentSession, runner: ExtensionRunner): void {\n\trunner.setHostBindings(\n\t\tthis._extensionHumanInput,\n\t\tthis._extensionDiagnosticListener,\n\t\thumanInputBindingRevisions.get(this),\n\t);\n\trunner.setUIContext(this._extensionUIContext, this._extensionMode);\n\trunner.bindCommandContext(this._extensionCommandContextActions);\n\trunner.bindChildSessionOptions(this._childSessionOptions);\n\n\tthis._extensionErrorUnsubscriber?.();\n\tthis._extensionErrorUnsubscriber = this._extensionErrorListener\n\t\t? runner.onError(this._extensionErrorListener)\n\t\t: undefined;\n}\n\nexport function refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tthis._refreshCurrentModelFromRegistry();\n}\n\nexport function _refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tconst currentModel = this.model;\n\tif (!currentModel) {\n\t\treturn;\n\t}\n\n\tconst refreshedModel = this._modelRuntime.getModel(currentModel.provider, currentModel.id);\n\tif (!refreshedModel || refreshedModel === currentModel) {\n\t\treturn;\n\t}\n\n\tconst previousModel = currentModel;\n\tconst previousThinkingLevel = this.thinkingLevel;\n\tthis.agent.state.model = refreshedModel;\n\tthis.setThinkingLevel(previousThinkingLevel);\n\tthis._refreshBaseSystemPromptFromActiveTools();\n\tthis._emit({ type: \"model_changed\", model: refreshedModel, previousModel, source: \"restore\" });\n}\n\nexport function _bindExtensionCore(\n\tthis: AgentSession,\n\trunner: ExtensionRunner,\n\tpublication?: ExtensionPublicationGate,\n): void {\n\trunner.bindWorkOwner(this);\n\tbindExtensionContextPublication(runner.createContext(), publication && ((effect) => publication.stageStart(effect)));\n\trunner.bindTaskHost(() => this.getAgentTaskHost());\n\t// A transactional successor starts before it is published. Its callbacks must inspect and\n\t// activate its own definitions, never the retiring session's registry. Keep this view local;\n\t// only accepted candidates release the deferred activation into the live session.\n\tconst candidateDefinitions = () => {\n\t\tconst definitions = new Map<string, RegisteredTool>();\n\t\tconst permitted = (name: string) => isRegisteredToolAllowed(this, name);\n\t\tfor (const [name, definition] of this._baseToolDefinitions) {\n\t\t\tif (permitted(name))\n\t\t\t\tdefinitions.set(name, {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tsourceInfo: createSyntheticSourceInfo(`<builtin:${name}>`, { source: \"builtin\" }),\n\t\t\t\t});\n\t\t}\n\t\tconst registered = runner\n\t\t\t.getAllRegisteredTools()\n\t\t\t.filter((tool) => !isMandatoryRuntimeTool(tool.definition.name) || isTrustedMandatoryRuntimeTool(tool));\n\t\tfor (const tool of registered) {\n\t\t\tconst name = tool.definition.name;\n\t\t\tif (permitted(name) || (!this._excludedTools?.(name) && isSelectedNativeMcpTool(tool, this._subagentPolicy)))\n\t\t\t\tdefinitions.set(name, tool);\n\t\t}\n\t\tfor (const definition of this._customTools) {\n\t\t\tif (!isMandatoryRuntimeTool(definition.name) && permitted(definition.name))\n\t\t\t\tdefinitions.set(definition.name, {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tsourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: \"sdk\" }),\n\t\t\t\t});\n\t\t}\n\t\treturn definitions;\n\t};\n\tlet candidateActiveTools = this.getActiveToolNames();\n\tconst candidateRegistryNames = new Set(this._baseToolDefinitions.keys());\n\tconst refreshCandidateTools = () => {\n\t\tconst definitions = candidateDefinitions();\n\t\tfor (const [name, { definition }] of definitions) {\n\t\t\tconst exposure = definition.exposure ?? \"direct\";\n\t\t\tif (\n\t\t\t\t!candidateRegistryNames.has(name) &&\n\t\t\t\tdefinition.defaultActive !== false &&\n\t\t\t\t(exposure === \"direct\" || exposure === \"model-only\")\n\t\t\t)\n\t\t\t\tcandidateActiveTools.push(name);\n\t\t\tcandidateRegistryNames.add(name);\n\t\t}\n\t\tcandidateActiveTools = [...new Set(candidateActiveTools)].filter((name) => {\n\t\t\tconst tool = definitions.get(name);\n\t\t\treturn (\n\t\t\t\ttool &&\n\t\t\t\ttool.definition.exposure !== \"hidden\" &&\n\t\t\t\tisToolActivatable(this, name, tool.definition.exposure ?? \"direct\", definitions.has(\"tool_search\"))\n\t\t\t);\n\t\t});\n\t\treturn definitions;\n\t};\n\tconst getCommands = (): SlashCommandInfo[] => {\n\t\tconst extensionCommands: SlashCommandInfo[] = runner.getRegisteredCommands().map((command) => ({\n\t\t\tname: command.invocationName,\n\t\t\tdescription: command.description,\n\t\t\tsource: \"extension\",\n\t\t\tsourceInfo: command.sourceInfo,\n\t\t}));\n\n\t\tconst templates: SlashCommandInfo[] = this.promptTemplates.map((template) => ({\n\t\t\tname: template.name,\n\t\t\tdescription: template.description,\n\t\t\tsource: \"prompt\",\n\t\t\tsourceInfo: template.sourceInfo,\n\t\t}));\n\n\t\tconst skills: SlashCommandInfo[] = getSkillCatalog(\n\t\t\tpublication?.resourceLoader ?? this._resourceLoader,\n\t\t).commands.map((command) => ({\n\t\t\tname: `skill:${command.name}`,\n\t\t\tdescription: command.description,\n\t\t\tsource: \"skill\",\n\t\t\tsourceInfo: command.sourceInfo,\n\t\t}));\n\n\t\treturn [...extensionCommands, ...templates, ...skills];\n\t};\n\n\trunner.bindCore(\n\t\t{\n\t\t\tsendMessage: (message, options) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.defer(() => this.sendCustomMessage(message, options));\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t}\n\t\t\t\tconst delivery = this.sendCustomMessage(message, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_message\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendMessages: (messages, options) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.defer(() => this.sendCustomMessages(messages, options));\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t}\n\t\t\t\tconst delivery = this.sendCustomMessages(messages, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_messages\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendUserMessage: (content, options) => {\n\t\t\t\tconst send = () =>\n\t\t\t\t\tthis.sendUserMessage(content, options).catch((err) => {\n\t\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\t\tevent: \"send_user_message\",\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\tif (publication) publication.defer(send);\n\t\t\t\telse void send();\n\t\t\t},\n\t\t\tappendEntry: (customType, data) => {\n\t\t\t\tconst append = () => {\n\t\t\t\t\tconst id = this.sessionManager.appendCustomEntry(customType, data);\n\t\t\t\t\tconst entry = this.sessionManager.getEntry(id);\n\t\t\t\t\tif (entry) this._emit({ type: \"entry_appended\", entry });\n\t\t\t\t};\n\t\t\t\tif (publication) publication.defer(append);\n\t\t\t\telse append();\n\t\t\t},\n\t\t\tsetSessionName: (name) => {\n\t\t\t\tif (publication) publication.defer(() => this.setSessionName(name));\n\t\t\t\telse this.setSessionName(name);\n\t\t\t},\n\t\t\tgetSessionName: () => {\n\t\t\t\treturn this.sessionManager.getSessionName();\n\t\t\t},\n\t\t\tsetLabel: (entryId, label) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.defer(() => {\n\t\t\t\t\t\tthis.sessionManager.appendLabelChange(entryId, label);\n\t\t\t\t\t});\n\t\t\t\t} else this.sessionManager.appendLabelChange(entryId, label);\n\t\t\t},\n\t\t\tgetActiveTools: () => {\n\t\t\t\tif (!publication) return this.getActiveToolNames();\n\t\t\t\trefreshCandidateTools();\n\t\t\t\treturn [...candidateActiveTools];\n\t\t\t},\n\t\t\tgetAllTools: () => {\n\t\t\t\tif (!publication) return this.getAllTools();\n\t\t\t\treturn [...refreshCandidateTools().values()].map(({ definition, sourceInfo }) => ({\n\t\t\t\t\tname: definition.name,\n\t\t\t\t\tdescription: definition.description,\n\t\t\t\t\tparameters: definition.parameters,\n\t\t\t\t\t...(Object.hasOwn(definition, \"constrainedSampling\")\n\t\t\t\t\t\t? { constrainedSampling: definition.constrainedSampling }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tpromptGuidelines: definition.promptGuidelines,\n\t\t\t\t\texposure: definition.exposure ?? \"direct\",\n\t\t\t\t\tnamespace: definition.namespace,\n\t\t\t\t\tannotations: definition.annotations,\n\t\t\t\t\tsourceInfo,\n\t\t\t\t}));\n\t\t\t},\n\t\t\tsetActiveTools: (toolNames) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tconst definitions = refreshCandidateTools();\n\t\t\t\t\tcandidateActiveTools = [...new Set(toolNames)].filter((name) => {\n\t\t\t\t\t\tconst tool = definitions.get(name);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttool &&\n\t\t\t\t\t\t\ttool.definition.exposure !== \"hidden\" &&\n\t\t\t\t\t\t\tisToolActivatable(this, name, tool.definition.exposure ?? \"direct\", definitions.has(\"tool_search\"))\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tconst accepted = [...candidateActiveTools];\n\t\t\t\t\tpublication.defer(() => this.setActiveToolsByName(accepted));\n\t\t\t\t} else this.setActiveToolsByName(toolNames);\n\t\t\t},\n\t\t\trefreshTools: () => {\n\t\t\t\tif (publication) refreshCandidateTools();\n\t\t\t\telse this._refreshToolRegistry();\n\t\t\t},\n\t\t\tgetCommands,\n\t\t\tsetModel: async (model) => {\n\t\t\t\tconst hasConfiguredAuth =\n\t\t\t\t\tpublication?.providerTransaction.hasConfiguredAuth(model.provider) ??\n\t\t\t\t\tthis.modelRuntime.hasConfiguredAuth(model.provider);\n\t\t\t\tif (!hasConfiguredAuth) return false;\n\t\t\t\tif (publication) publication.defer(() => this.setModel(model));\n\t\t\t\telse await this.setModel(model);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tsetThinkingLevel: (level) => {\n\t\t\t\tif (publication) publication.defer(() => this.setThinkingLevel(level));\n\t\t\t\telse this.setThinkingLevel(level);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tgetModel: () => this.model,\n\t\t\texecuteTool: (callerId, name, args, options) => executeNestedToolCall(this, callerId, name, args, options),\n\t\t\tgetCallableTools: () => getCallableTools(this),\n\t\t\tgetSettings: () => this.settingsManager.getSettings(),\n\t\t\t// Read through the public accessor, not `_scopedModels`: in the isolated\n\t\t\t// engine the host-side facade session has `scopedModels` redefined by\n\t\t\t// RemoteModelCatalog to the engine's catalogue, and the private field it\n\t\t\t// shadows is never refreshed.\n\t\t\tgetScopedModels: () => this.scopedModels,\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tisIdle: () => !this.isStreaming,\n\t\t\tisProjectTrusted: () => this.settingsManager.isProjectTrusted(),\n\t\t\tgetSignal: () => this.agent.signal,\n\t\t\tabort: () => {\n\t\t\t\tif (publication) publication.defer(() => this.abort());\n\t\t\t\telse this.abort();\n\t\t\t},\n\t\t\thasPendingMessages: () => this.pendingMessageCount > 0,\n\t\t\tshutdown: () => {\n\t\t\t\tif (publication) publication.defer(() => this._extensionShutdownHandler?.());\n\t\t\t\telse this._extensionShutdownHandler?.();\n\t\t\t},\n\t\t\tgetContextUsage: () => this.getContextUsage(),\n\t\t\tcompact: (options) => {\n\t\t\t\tconst compact = async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.compact({\n\t\t\t\t\t\t\t...(options?.compression_ratio === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { compression_ratio: options.compression_ratio }),\n\t\t\t\t\t\t\t...(options?.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t\t\t\t\t...(options?.query === undefined ? {} : { query: options.query }),\n\t\t\t\t\t\t});\n\t\t\t\t\t\toptions?.onComplete?.(result);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\toptions?.onError?.(err);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (publication) publication.defer(compact);\n\t\t\t\telse void compact();\n\t\t\t},\n\t\t\tgetSystemPrompt: () => this.systemPrompt,\n\t\t\tgetRouterModel: () => this.settingsManager.getRouterModel(),\n\t\t\tgetModelRouting: () => this.settingsManager.getModelRouting(),\n\t\t\tgetSkillCatalog: () => getSkillCatalog(publication?.resourceLoader ?? this._resourceLoader),\n\t\t\tgetSystemPromptOptions: () => this._baseSystemPromptOptions,\n\t\t},\n\t\t{\n\t\t\tregisterProvider: (providerOrName, config) => {\n\t\t\t\tconst providerId = typeof providerOrName === \"string\" ? providerOrName : providerOrName.id;\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.providerIds.add(providerId);\n\t\t\t\t\tif (typeof providerOrName === \"string\") {\n\t\t\t\t\t\tpublication.providerTransaction.registerProvider(providerOrName, config!);\n\t\t\t\t\t} else publication.providerTransaction.registerNativeProvider(providerOrName);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._extensionProviderIds.add(providerId);\n\t\t\t\tthis._resourceLoader.getExtensions().runtime.extensionProviderIds.add(providerId);\n\t\t\t\tif (typeof providerOrName === \"string\") this._modelRuntime.registerProvider(providerOrName, config!);\n\t\t\t\telse this._modelRuntime.registerNativeProvider(providerOrName);\n\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t},\n\t\t\tunregisterProvider: (name) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.providerIds.delete(name);\n\t\t\t\t\tpublication.providerTransaction.unregisterProvider(name);\n\t\t\t\t} else {\n\t\t\t\t\tthis._extensionProviderIds.delete(name);\n\t\t\t\t\tthis._resourceLoader.getExtensions().runtime.extensionProviderIds.delete(name);\n\t\t\t\t\tthis._modelRuntime.unregisterProvider(name);\n\t\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t);\n}\n\nexport async function reload(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\tif (this._disposed || sessionGenerationClosing.has(this) || hasSessionReload(this))\n\t\tthrow hostInputError(\"SessionClosed\");\n\tsessionGenerationClosing.add(this);\n\treturn trackSessionReload(this, () => reloadAdmitted.call(this, options));\n}\n\nasync function reloadAdmitted(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\tconst retiringRunner = this._extensionRunner;\n\ttry {\n\t\tabortSessionWork(this);\n\t\tthis.abortBash();\n\t\tthis._extensionRunner.sealHostInput();\n\t\tif (this.isStreaming || this._activePromptCount > 0) await this.abort();\n\t\tawait this.closeSessionTasks();\n\t\tawait drainSessionWork(this, true);\n\t\trenewSessionWork(this);\n\t\treplaceSessionTaskOwner(this);\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait reloadGeneration.call(this, options);\n\t} catch (error) {\n\t\tif (!this._disposed && this._extensionRunner === retiringRunner) retiringRunner.resumeAfterRejectedReload();\n\t\tthrow error;\n\t} finally {\n\t\tsessionGenerationClosing.delete(this);\n\t}\n}\n\nfunction failureMessages(error: unknown): string[] {\n\tif (error instanceof AggregateError && error.errors.length > 0) return error.errors.flatMap(failureMessages);\n\treturn [error instanceof Error ? error.message : String(error)];\n}\n\nfunction retiringCleanupError(failures: unknown[]): AggregateError {\n\tconst detail = failures.flatMap(failureMessages).join(\"; \");\n\treturn Object.assign(new AggregateError(failures, `Reload retiring cleanup failed: ${detail}`), {\n\t\tcode: \"ShutdownFailed\",\n\t});\n}\n\nasync function cleanupReloadRunner(runner: ExtensionRunner, reason: string): Promise<void> {\n\tconst failures: unknown[] = [];\n\tfor (const cleanup of [\n\t\t() => runner.drainWork(),\n\t\t() => reason === \"reload\" && emitSessionShutdownEvent(runner, { type: \"session_shutdown\", reason: \"reload\" }),\n\t\t() => runner.invalidate(),\n\t]) {\n\t\ttry {\n\t\t\tawait cleanup();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t}\n\tif (failures.length) throw retiringCleanupError(failures);\n}\n\nasync function reloadGeneration(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\treturn factoryAcquisitions.run({ pending: new Map(), replacement: true }, async () => {\n\t\t// Record ownership at transfer, never by rereading a possibly failed loader view.\n\t\tconst retainedRuntimes = new Set<ExtensionRuntime>();\n\t\ttry {\n\t\t\tawait reloadOwnedGeneration.call(this, retainedRuntimes, options);\n\t\t} catch (error) {\n\t\t\tthrow factoryRollbackError(error, await rollbackFactoryAcquisitions(retainedRuntimes));\n\t\t}\n\t\t// Custom discovery may be re-instantiated rather than adopted by the runner.\n\t\tconst failures = await rollbackFactoryAcquisitions(retainedRuntimes);\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError(failures, \"Reload discovery cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t});\n}\n\nasync function reloadOwnedGeneration(\n\tthis: AgentSession,\n\tretainedRuntimes: Set<ExtensionRuntime>,\n\toptions?: AgentSessionReloadOptions,\n): Promise<void> {\n\tconst reason = options?.reason ?? \"reload\";\n\tconst oldRunner = this._extensionRunner;\n\tconst previousFlagValues = oldRunner.getExplicitFlagValues();\n\tconst activeToolNames = this.getActiveToolNames();\n\tconst previousDefaultTools = this._appliedDefaultTools;\n\tconst activeToolsAfterReload = (defaultTools: readonly string[]) => [\n\t\t...activeToolNames,\n\t\t...(this._usesDefaultTools ? defaultTools.filter((name) => !previousDefaultTools.has(name)) : []),\n\t];\n\tconst prepareResourceReload = this._resourceLoader.prepareReload?.bind(this._resourceLoader);\n\tif (prepareResourceReload === undefined || this._resourceLoader.supportsTransactionalReload?.() === false) {\n\t\tif (options?.failOnExtensionErrors) {\n\t\t\tthrow new Error(\"Strict extension reload requires a transactional resource loader\");\n\t\t}\n\t\toldRunner.revokeAuthority();\n\t\tconst retiringFailures: unknown[] = [];\n\t\tawait retireSessionReloadGeneration(this, () => cleanupReloadRunner(oldRunner, reason)).catch(\n\t\t\t(error: unknown) => {\n\t\t\t\tretiringFailures.push(error);\n\t\t\t},\n\t\t);\n\t\tawait this.settingsManager.reload();\n\t\tresetApiProviders();\n\t\tawait this._resourceLoader.reload();\n\t\tconst defaultTools = this.settingsManager.getDefaultTools() ?? getDefaultToolNames();\n\t\tfor (const name of this.getActiveToolNames()) this._pendingToolNames.add(name);\n\t\tthis._buildRuntime({\n\t\t\tactiveToolNames: activeToolsAfterReload(defaultTools),\n\t\t\tflagValues: previousFlagValues,\n\t\t\tincludeAllExtensionTools: true,\n\t\t});\n\t\tthis._appliedDefaultTools = new Set(defaultTools);\n\t\tretainedRuntimes.add(this._resourceLoader.getExtensions().runtime);\n\t\tfor (const extension of this._resourceLoader.getExtensions().extensions)\n\t\t\tfactoryAcquisitions.getStore()?.pending?.delete(extension);\n\t\tconst discoveryFailures = await rollbackFactoryAcquisitions(\n\t\t\tnew Set([this._resourceLoader.getExtensions().runtime]),\n\t\t);\n\t\tif (discoveryFailures.length)\n\t\t\tthrow Object.assign(new AggregateError(discoveryFailures, \"Reload discovery cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait options?.beforeSessionStart?.();\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tsessionGenerationClosing.delete(this);\n\t\tawait startExtensions(this, this._extensionRunner, this._resourceLoader, { type: \"session_start\", reason });\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n\t\tif (retiringFailures.length) throw retiringFailures[0];\n\t\treturn;\n\t}\n\n\tconst settingsTransaction = await this.settingsManager.prepareReload();\n\tconst resourceTransaction = await prepareResourceReload(settingsTransaction.settingsManager);\n\tconst defaultTools = settingsTransaction.settingsManager.getDefaultTools() ?? getDefaultToolNames();\n\tconst errors = resourceTransaction.loader.getExtensions().errors;\n\tconst extensionsResult = resourceTransaction.loader.getExtensions();\n\tfor (const [name, value] of previousFlagValues) {\n\t\textensionsResult.runtime.flagValues.set(name, value);\n\t\textensionsResult.runtime.explicitFlagNames ??= new Set();\n\t\textensionsResult.runtime.explicitFlagNames.add(name);\n\t}\n\tconst candidateRunner = new ExtensionRunner(\n\t\textensionsResult.extensions,\n\t\textensionsResult.runtime,\n\t\tthis._cwd,\n\t\tthis.sessionManager,\n\t\tnew ModelRegistry(this._modelRuntime),\n\t\tthis._orchestrationContext,\n\t\tthis._subagentPolicy,\n\t);\n\tconst publication = new ExtensionPublicationGate(\n\t\tresourceTransaction.loader,\n\t\tcandidateRunner,\n\t\tthis._modelRuntime,\n\t\t() => this._disposed,\n\t\tthis._extensionProviderIds,\n\t);\n\tlet commitPreparedResources: (() => void) | undefined;\n\tlet rollbackPreparedResources: (() => void) | undefined;\n\ttry {\n\t\t// The rollback below now owns these factories; discovery-only acquisitions\n\t\t// remain in the enclosing ledger until the entire reload settles.\n\t\tfor (const extension of extensionsResult.extensions) factoryAcquisitions.getStore()?.pending?.delete(extension);\n\t\tconst discoveryFailures = await rollbackFactoryAcquisitions(new Set([extensionsResult.runtime]));\n\t\tif (discoveryFailures.length)\n\t\t\tthrow Object.assign(new AggregateError(discoveryFailures, \"Reload discovery cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tthis._bindExtensionCore(candidateRunner, publication);\n\t\tcandidateRunner.setHostBindings(\n\t\t\tthis._extensionHumanInput,\n\t\t\tthis._extensionDiagnosticListener,\n\t\t\thumanInputBindingRevisions.get(this),\n\t\t);\n\t\tcandidateRunner.setUIContext(this._extensionUIContext, this._extensionMode);\n\t\tcandidateRunner.bindCommandContext(this._extensionCommandContextActions);\n\t\tcandidateRunner.bindChildSessionOptions(this._childSessionOptions);\n\t\tif (options?.failOnExtensionErrors && errors.length > 0)\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to load extensions: ${errors.map(({ path, error }) => `${path}: ${error}`).join(\"; \")}`,\n\t\t\t);\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait options?.beforeSessionStart?.();\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait startExtensions(this, candidateRunner, resourceTransaction.loader, { type: \"session_start\", reason });\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tconst preparedResources = resourceTransaction.prepareCommit?.();\n\t\tif (preparedResources) {\n\t\t\tcommitPreparedResources = () => preparedResources.commit();\n\t\t\trollbackPreparedResources = () => preparedResources.rollback();\n\t\t}\n\t\tawait publication.publishProviders();\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tsettingsTransaction.commit();\n\t\tresourceTransaction.activate(this.settingsManager);\n\t\tif (commitPreparedResources) commitPreparedResources();\n\t\telse resourceTransaction.commit();\n\t} catch (error) {\n\t\tconst failures: unknown[] = [];\n\t\tfor (const cleanup of [\n\t\t\t() => rollbackPreparedResources?.(),\n\t\t\t() => publication.discard(),\n\t\t\t() => candidateRunner.sealHostInput(),\n\t\t\t() => candidateRunner.drainWork(),\n\t\t\t() => emitSessionShutdownEvent(candidateRunner, { type: \"session_shutdown\", reason: \"reload\" }),\n\t\t\t() => candidateRunner.invalidate(),\n\t\t]) {\n\t\t\ttry {\n\t\t\t\tawait cleanup();\n\t\t\t} catch (failure) {\n\t\t\t\tfailures.push(failure);\n\t\t\t}\n\t\t}\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError([error, ...failures], \"Reload rollback failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tthrow error;\n\t}\n\n\t// Publication transferred ownership: keep the started candidate reachable even\n\t// when reconstruction fails, and retain retiring cleanup through every step.\n\tthis._extensionRunner = candidateRunner;\n\tretainedRuntimes.add(extensionsResult.runtime);\n\tconst failures: unknown[] = [];\n\ttry {\n\t\tresetApiProviders();\n\t\tthis._extensionProviderIds = new Set(publication.providerIds);\n\t\textensionsResult.runtime.extensionProviderIds = new Set(publication.providerIds);\n\t\tthis.refreshCurrentModelFromRegistry();\n\t\tif (this._extensionRunnerRef) this._extensionRunnerRef.current = candidateRunner;\n\t\tthis._bindExtensionCore(candidateRunner);\n\t\tthis._applyExtensionBindings(candidateRunner);\n\t\tfor (const name of this.getActiveToolNames()) this._pendingToolNames.add(name);\n\t\tthis._buildRuntime({\n\t\t\tactiveToolNames: activeToolsAfterReload(defaultTools),\n\t\t\tflagValues: previousFlagValues,\n\t\t\tincludeAllExtensionTools: true,\n\t\t\tpreserveRunner: true,\n\t\t});\n\t\tthis._appliedDefaultTools = new Set(defaultTools);\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\tconst setupFailed = failures.length > 0;\n\ttry {\n\t\toldRunner.revokeAuthority();\n\t\tawait retireSessionReloadGeneration(this, () => cleanupReloadRunner(oldRunner, reason));\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\tif (setupFailed) throw failures.length > 1 ? retiringCleanupError(failures) : failures[0];\n\tif (this._disposed) throw failures.length ? failures[0] : hostInputError(\"SessionClosed\");\n\tsessionGenerationClosing.delete(this);\n\t// Startup observers need the successor task host. Keep admission sealed until\n\t// retiring callbacks are invalidated, then publish reporters before queued user effects.\n\tawait publication.activateStarts();\n\tawait publication.release();\n\tif (failures.length) throw failures[0];\n}\n\n/** Publish approved startup resources without replacing the session or restarting safe reporters. */\nexport async function completeStartupResources(this: AgentSession, resourceLoader: ResourceLoader): Promise<void> {\n\tassertSessionOpen(this);\n\treturn trackSessionWork(this, async () => {\n\t\tthis._resourceLoader = resourceLoader;\n\t\tconst startNewcomers = this._extensionRunner.attachStartupExtensions(resourceLoader.getExtensions().extensions);\n\t\tthis._buildRuntime({\n\t\t\tactiveToolNames: this.getActiveToolNames(),\n\t\t\tincludeAllExtensionTools: true,\n\t\t\tpreserveRunner: true,\n\t\t});\n\t\tthis.refreshCurrentModelFromRegistry();\n\t\tawait startNewcomers();\n\t\tassertSessionOpen(this);\n\t\tawait this.extendResourcesFromExtensions(\"startup\");\n\t});\n}\n\n// =========================================================================\n// Auto-Retry\n// =========================================================================\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\n\nexport const agentSessionExtensionBindingsMethods = {\n\tbindExtensions,\n\tcompleteStartupResources,\n\textendResourcesFromExtensions,\n\tbuildExtensionResourcePaths,\n\tgetExtensionSourceLabel,\n\t_applyExtensionBindings,\n\trefreshCurrentModelFromRegistry,\n\t_refreshCurrentModelFromRegistry,\n\t_bindExtensionCore,\n\treload,\n};\n"]}
1
+ {"version":3,"file":"agent-session-extension-bindings.js","sourceRoot":"","sources":["../../src/core/agent-session-extension-bindings.ts"],"names":[],"mappings":"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","sourcesContent":["import { basename, dirname } from \"node:path\";\nimport { resetApiProviders } from \"@bastani/pi-ai/compat\";\nimport type { AgentSessionInternalSurface as AgentSession } from \"./agent-session-methods.ts\";\nimport { executeNestedToolCall, getCallableTools } from \"./agent-session-nested-tools.js\";\nimport { recoverProtectedStreamingCustomMessages } from \"./agent-session-persistent-custom-messages.ts\";\nimport { replaceSessionTaskOwner } from \"./agent-session-tasks.js\";\nimport type { AgentSessionReloadOptions, ExtensionBindings } from \"./agent-session-types.js\";\nimport { hostInputError } from \"./extensions/host-input.js\";\nimport { ExtensionRunner } from \"./extensions/index.js\";\nimport {\n\tfactoryAcquisitions,\n\tfactoryRollbackError,\n\trollbackFactoryAcquisitions,\n} from \"./extensions/loader-rollback.ts\";\nimport { emitSessionShutdownEvent } from \"./extensions/runner.ts\";\nimport { bindExtensionContextPublication, runSynchronousExtensionContextEffect } from \"./extensions/runner-context.ts\";\nimport type { ExtensionRuntime, RegisteredTool } from \"./extensions/types.ts\";\nimport { isMandatoryRuntimeTool, isTrustedMandatoryRuntimeTool } from \"./mandatory-runtime-tools.ts\";\nimport { isSelectedNativeMcpTool } from \"./mcp-child-policy.ts\";\nimport { ModelRegistry } from \"./model-registry.ts\";\nimport type { ExtensionProviderTransaction, ModelRuntime } from \"./model-runtime.js\";\nimport type { PathMetadata } from \"./package-manager.ts\";\nimport type { ResourceExtensionPaths, ResourceLoader } from \"./resource-loader.ts\";\nimport {\n\tabortSessionWork,\n\tassertSessionOpen,\n\tdrainSessionWork,\n\thasSessionReload,\n\trenewSessionWork,\n\tretireSessionReloadGeneration,\n\tsessionGenerationClosing,\n\ttrackSessionReload,\n\ttrackSessionWork,\n} from \"./session-lifecycle-work.ts\";\nimport { completeStartup, rollbackStartup } from \"./session-startup-rollback.ts\";\nimport { getSkillCatalog } from \"./skill-catalog.ts\";\nimport type { SlashCommandInfo } from \"./slash-commands.js\";\nimport { createSyntheticSourceInfo } from \"./source-info.ts\";\nimport { isRegisteredToolAllowed, isToolActivatable } from \"./tool-selection.ts\";\nimport { getDefaultToolNames } from \"./tools/index.ts\";\n\nclass ExtensionPublicationGate {\n\treadonly resourceLoader: ResourceLoader;\n\tprivate readonly effects: Array<() => void | Promise<void>> = [];\n\tprivate readonly startEffects: Array<() => void | Promise<void>> = [];\n\tprivate readonly commitEffects: Array<() => void> = [];\n\tprivate readonly commitFailures: unknown[] = [];\n\treadonly providerTransaction: ExtensionProviderTransaction;\n\tprivate commitsActivated = false;\n\treadonly providerIds = new Set<string>();\n\tprivate readonly isClosed: () => boolean;\n\tprivate readonly runner: ExtensionRunner;\n\tprivate discarded = false;\n\n\tconstructor(\n\t\tresourceLoader: ResourceLoader,\n\t\trunner: ExtensionRunner,\n\t\tmodelRuntime: ModelRuntime,\n\t\tisClosed: () => boolean,\n\t\treplacedProviderIds: Iterable<string>,\n\t) {\n\t\tthis.isClosed = isClosed;\n\t\tthis.resourceLoader = resourceLoader;\n\t\tthis.runner = runner;\n\t\tthis.providerTransaction = modelRuntime.createExtensionProviderTransaction(replacedProviderIds);\n\t}\n\n\tdefer(effect: () => void | Promise<void>): void {\n\t\tif (!this.discarded) this.effects.push(effect);\n\t}\n\n\tstageStart(effect: () => void | Promise<void>): void {\n\t\tif (!this.discarded) this.startEffects.push(effect);\n\t}\n\n\tstageCommit(effect: () => void): void {\n\t\tif (this.discarded) return;\n\t\tif (!this.commitsActivated) {\n\t\t\tthis.commitEffects.push(effect);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\trunSynchronousExtensionContextEffect(effect);\n\t\t} catch (error) {\n\t\t\tthis.commitFailures.push(error);\n\t\t\ttry {\n\t\t\t\tthis.report(error, \"session_start\");\n\t\t\t} catch (reportingError) {\n\t\t\t\tthis.commitFailures.push(reportingError);\n\t\t\t}\n\t\t}\n\t}\n\n\tactivateCommits(): void {\n\t\tthis.commitsActivated = true;\n\t\tfor (const effect of this.commitEffects.splice(0)) this.stageCommit(effect);\n\t\tthis.drainCommitFailures();\n\t}\n\n\tdrainCommitFailures(): void {\n\t\tif (this.commitFailures.length) {\n\t\t\tthrow new AggregateError(this.commitFailures.splice(0), \"Extension commit activation failed\");\n\t\t}\n\t}\n\n\tasync activateStarts(): Promise<void> {\n\t\tawait this.publish(this.startEffects);\n\t}\n\n\tasync publishProviders(): Promise<void> {\n\t\tawait this.providerTransaction.commit();\n\t}\n\n\tdiscard(): void {\n\t\tthis.discarded = true;\n\t\tthis.effects.length = 0;\n\t\tthis.startEffects.length = 0;\n\t\tthis.commitEffects.length = 0;\n\t}\n\n\tasync release(): Promise<void> {\n\t\tawait this.publish(this.effects);\n\t}\n\n\tprivate async publish(effects: Array<() => void | Promise<void>>): Promise<void> {\n\t\tif (this.isClosed()) throw hostInputError(\"SessionClosed\");\n\t\tfor (const effect of effects.splice(0)) {\n\t\t\ttry {\n\t\t\t\tawait effect();\n\t\t\t} catch (error) {\n\t\t\t\tthis.report(error, \"session_start\");\n\t\t\t}\n\t\t\tif (this.isClosed()) throw hostInputError(\"SessionClosed\");\n\t\t}\n\t}\n\n\tprivate report(error: unknown, event: string): void {\n\t\tthis.runner.emitError({\n\t\t\textensionPath: \"<runtime>\",\n\t\t\tevent,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t});\n\t}\n}\n\nfunction buildExtensionResourcePathsForLoader(\n\tsession: AgentSession,\n\tloader: ResourceLoader,\n\tentries: Array<{ path: string; extensionPath: string }>,\n): Array<{ path: string; metadata: PathMetadata }> {\n\treturn entries.map((entry) => {\n\t\tconst extension = loader\n\t\t\t.getExtensions()\n\t\t\t.extensions.find(\n\t\t\t\t(candidate) =>\n\t\t\t\t\tcandidate.path === entry.extensionPath ||\n\t\t\t\t\tcandidate.resolvedPath === entry.extensionPath ||\n\t\t\t\t\tcandidate.sourceInfo.path === entry.extensionPath,\n\t\t\t);\n\t\tconst sourceInfo = extension?.sourceInfo;\n\t\treturn {\n\t\t\tpath: entry.path,\n\t\t\tmetadata: {\n\t\t\t\tsource: sourceInfo?.source ?? session.getExtensionSourceLabel(entry.extensionPath),\n\t\t\t\tscope: sourceInfo?.scope ?? \"temporary\",\n\t\t\t\torigin: sourceInfo?.origin ?? \"top-level\",\n\t\t\t\tbaseDir:\n\t\t\t\t\tsourceInfo?.baseDir ?? (entry.extensionPath.startsWith(\"<\") ? undefined : dirname(entry.extensionPath)),\n\t\t\t\tconfigurationOrigin: sourceInfo?.configurationOrigin,\n\t\t\t},\n\t\t};\n\t});\n}\n\nasync function extendRunnerResources(\n\tsession: AgentSession,\n\trunner: ExtensionRunner,\n\tloader: ResourceLoader,\n\treason: \"startup\" | \"reload\",\n): Promise<void> {\n\tif (!runner.hasHandlers(\"resources_discover\")) return;\n\tconst { skillPaths, promptPaths, themePaths } = await runner.emitResourcesDiscover(session._cwd, reason);\n\tif (session._disposed) throw hostInputError(\"SessionClosed\");\n\tif (skillPaths.length === 0 && promptPaths.length === 0 && themePaths.length === 0) return;\n\tconst extensionPaths: ResourceExtensionPaths = {\n\t\tskillPaths: buildExtensionResourcePathsForLoader(session, loader, skillPaths),\n\t\tpromptPaths: buildExtensionResourcePathsForLoader(session, loader, promptPaths),\n\t\tthemePaths: buildExtensionResourcePathsForLoader(session, loader, themePaths),\n\t};\n\tawait loader.extendResources(extensionPaths);\n}\n\nconst extensionStarts = new WeakMap<ExtensionRunner, Promise<void>>();\nconst failedExtensionStarts = new WeakSet<ExtensionRunner>();\n// Binding intent is session-local and survives runner reloads, even when a host object is reused.\nconst humanInputBindingRevisions = new WeakMap<AgentSession, number>();\nconst presentationOnlyBindings = new WeakMap<AgentSession, boolean>();\n\nfunction startExtensions(\n\tsession: AgentSession,\n\trunner: ExtensionRunner,\n\tloader: ResourceLoader,\n\tevent: AgentSession[\"_sessionStartEvent\"],\n\tfinalize?: () => Promise<void>,\n): Promise<void> {\n\tconst existing = extensionStarts.get(runner);\n\tif (existing) return finalize ? existing.then(finalize) : existing;\n\tconst start = trackSessionWork(session, () =>\n\t\tPromise.resolve().then(async () => {\n\t\t\tconst failures: Error[] = [];\n\t\t\tconst unsubscribe = runner.onError((error) => {\n\t\t\t\tif (error.event === \"session_start\" || error.event === \"resources_discover\") {\n\t\t\t\t\tfailures.push(new Error(`${error.extensionPath}: ${error.error}`));\n\t\t\t\t}\n\t\t\t});\n\t\t\ttry {\n\t\t\t\tawait runner.emit(event);\n\t\t\t\tawait extendRunnerResources(session, runner, loader, event.reason === \"reload\" ? \"reload\" : \"startup\");\n\t\t\t\tif (failures.length) throw new AggregateError(failures, \"Extension startup failed\");\n\t\t\t\tawait finalize?.();\n\t\t\t\tcompleteStartup(runner);\n\t\t\t} finally {\n\t\t\t\tunsubscribe();\n\t\t\t}\n\t\t}),\n\t).catch(async (error: unknown) => {\n\t\tfailedExtensionStarts.add(runner);\n\t\treturn rollbackStartup(runner, error instanceof Error ? error : new Error(String(error)), async (cause) => {\n\t\t\ttry {\n\t\t\t\tif (!hasSessionReload(session)) await session.dispose();\n\t\t\t} catch (cleanupError) {\n\t\t\t\tthrow Object.assign(new AggregateError([cause, cleanupError], \"Extension startup and cleanup failed\"), {\n\t\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow cause;\n\t\t});\n\t});\n\textensionStarts.set(runner, start);\n\treturn start;\n}\n\nexport async function bindExtensions(this: AgentSession, bindings: ExtensionBindings): Promise<void> {\n\tif (this._disposed) {\n\t\t// Failed creation retains its original rejection; it never admits another startup.\n\t\tif (failedExtensionStarts.has(this._extensionRunner)) return extensionStarts.get(this._extensionRunner)!;\n\t\tthrow hostInputError(\"SessionClosed\");\n\t}\n\tif (bindings.humanInput !== undefined) {\n\t\tthis._extensionHumanInput = bindings.humanInput;\n\t\thumanInputBindingRevisions.set(this, (humanInputBindingRevisions.get(this) ?? 0) + 1);\n\t}\n\tif (bindings.onDiagnostic !== undefined) this._extensionDiagnosticListener = bindings.onDiagnostic;\n\tif (bindings.uiContext !== undefined) {\n\t\tthis._extensionUIContext = bindings.uiContext;\n\t}\n\tif (bindings.mode !== undefined) {\n\t\tthis._extensionMode = bindings.mode;\n\t}\n\tif (bindings.isPresentationOnly !== undefined) presentationOnlyBindings.set(this, bindings.isPresentationOnly);\n\tif (bindings.commandContextActions !== undefined) {\n\t\tthis._extensionCommandContextActions = bindings.commandContextActions;\n\t}\n\tif (bindings.shutdownHandler !== undefined) {\n\t\tthis._extensionShutdownHandler = bindings.shutdownHandler;\n\t}\n\tif (bindings.onError !== undefined) {\n\t\tthis._extensionErrorListener = bindings.onError;\n\t}\n\n\tthis._applyExtensionBindings(this._extensionRunner);\n\tawait startExtensions(this, this._extensionRunner, this._resourceLoader, this._sessionStartEvent, async () => {\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n\t\tif (recoverProtectedStreamingCustomMessages(this) > 0) {\n\t\t\tawait this._continueQueuedAgentMessages();\n\t\t}\n\t});\n}\n\nexport async function extendResourcesFromExtensions(this: AgentSession, reason: \"startup\" | \"reload\"): Promise<void> {\n\tassertSessionOpen(this);\n\treturn trackSessionWork(this, async () => {\n\t\tawait extendRunnerResources(this, this._extensionRunner, this._resourceLoader, reason);\n\t\tassertSessionOpen(this);\n\t\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n\t});\n}\n\nexport function buildExtensionResourcePaths(\n\tthis: AgentSession,\n\tentries: Array<{ path: string; extensionPath: string }>,\n): Array<{\n\tpath: string;\n\tmetadata: PathMetadata;\n}> {\n\treturn buildExtensionResourcePathsForLoader(this, this._resourceLoader, entries);\n}\n\nexport function getExtensionSourceLabel(this: AgentSession, extensionPath: string): string {\n\tif (extensionPath.startsWith(\"<\")) {\n\t\treturn `extension:${extensionPath.replace(/[<>]/g, \"\")}`;\n\t}\n\tconst base = basename(extensionPath);\n\tconst name = base.replace(/\\.(ts|js)$/, \"\");\n\treturn `extension:${name}`;\n}\n\nexport function _applyExtensionBindings(this: AgentSession, runner: ExtensionRunner): void {\n\trunner.setHostBindings(\n\t\tthis._extensionHumanInput,\n\t\tthis._extensionDiagnosticListener,\n\t\thumanInputBindingRevisions.get(this),\n\t);\n\trunner.setUIContext(this._extensionUIContext, this._extensionMode, presentationOnlyBindings.get(this) ?? false);\n\trunner.bindCommandContext(this._extensionCommandContextActions);\n\trunner.bindChildSessionOptions(this._childSessionOptions);\n\n\tthis._extensionErrorUnsubscriber?.();\n\tthis._extensionErrorUnsubscriber = this._extensionErrorListener\n\t\t? runner.onError(this._extensionErrorListener)\n\t\t: undefined;\n}\n\nexport function refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tthis._refreshCurrentModelFromRegistry();\n}\n\nexport function _refreshCurrentModelFromRegistry(this: AgentSession): void {\n\tconst currentModel = this.model;\n\tif (!currentModel) {\n\t\treturn;\n\t}\n\n\tconst refreshedModel = this._modelRuntime.getModel(currentModel.provider, currentModel.id);\n\tif (!refreshedModel || refreshedModel === currentModel) {\n\t\treturn;\n\t}\n\n\tconst previousModel = currentModel;\n\tconst previousThinkingLevel = this.thinkingLevel;\n\tthis.agent.state.model = refreshedModel;\n\tthis.setThinkingLevel(previousThinkingLevel);\n\tthis._refreshBaseSystemPromptFromActiveTools();\n\tthis._emit({ type: \"model_changed\", model: refreshedModel, previousModel, source: \"restore\" });\n}\n\nexport function _bindExtensionCore(\n\tthis: AgentSession,\n\trunner: ExtensionRunner,\n\tpublication?: ExtensionPublicationGate,\n): void {\n\trunner.bindWorkOwner(this);\n\tif (publication) {\n\t\tbindExtensionContextPublication(runner.createContext(), (effect, phase) =>\n\t\t\tphase === \"commit\" ? publication.stageCommit(effect) : publication.stageStart(effect),\n\t\t);\n\t}\n\trunner.bindTaskHost(() => this.getAgentTaskHost());\n\t// A transactional successor starts before it is published. Its callbacks must inspect and\n\t// activate its own definitions, never the retiring session's registry. Keep this view local;\n\t// only accepted candidates release the deferred activation into the live session.\n\tconst candidateDefinitions = () => {\n\t\tconst definitions = new Map<string, RegisteredTool>();\n\t\tconst permitted = (name: string) => isRegisteredToolAllowed(this, name);\n\t\tfor (const [name, definition] of this._baseToolDefinitions) {\n\t\t\tif (permitted(name))\n\t\t\t\tdefinitions.set(name, {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tsourceInfo: createSyntheticSourceInfo(`<builtin:${name}>`, { source: \"builtin\" }),\n\t\t\t\t});\n\t\t}\n\t\tconst registered = runner\n\t\t\t.getAllRegisteredTools()\n\t\t\t.filter((tool) => !isMandatoryRuntimeTool(tool.definition.name) || isTrustedMandatoryRuntimeTool(tool));\n\t\tfor (const tool of registered) {\n\t\t\tconst name = tool.definition.name;\n\t\t\tif (permitted(name) || (!this._excludedTools?.(name) && isSelectedNativeMcpTool(tool, this._subagentPolicy)))\n\t\t\t\tdefinitions.set(name, tool);\n\t\t}\n\t\tfor (const definition of this._customTools) {\n\t\t\tif (!isMandatoryRuntimeTool(definition.name) && permitted(definition.name))\n\t\t\t\tdefinitions.set(definition.name, {\n\t\t\t\t\tdefinition,\n\t\t\t\t\tsourceInfo: createSyntheticSourceInfo(`<sdk:${definition.name}>`, { source: \"sdk\" }),\n\t\t\t\t});\n\t\t}\n\t\treturn definitions;\n\t};\n\tlet candidateActiveTools = this.getActiveToolNames();\n\tconst candidateRegistryNames = new Set(this._baseToolDefinitions.keys());\n\tconst refreshCandidateTools = () => {\n\t\tconst definitions = candidateDefinitions();\n\t\tfor (const [name, { definition }] of definitions) {\n\t\t\tconst exposure = definition.exposure ?? \"direct\";\n\t\t\tif (\n\t\t\t\t!candidateRegistryNames.has(name) &&\n\t\t\t\tdefinition.defaultActive !== false &&\n\t\t\t\t(exposure === \"direct\" || exposure === \"model-only\")\n\t\t\t)\n\t\t\t\tcandidateActiveTools.push(name);\n\t\t\tcandidateRegistryNames.add(name);\n\t\t}\n\t\tcandidateActiveTools = [...new Set(candidateActiveTools)].filter((name) => {\n\t\t\tconst tool = definitions.get(name);\n\t\t\treturn (\n\t\t\t\ttool &&\n\t\t\t\ttool.definition.exposure !== \"hidden\" &&\n\t\t\t\tisToolActivatable(this, name, tool.definition.exposure ?? \"direct\", definitions.has(\"tool_search\"))\n\t\t\t);\n\t\t});\n\t\treturn definitions;\n\t};\n\tconst getCommands = (): SlashCommandInfo[] => {\n\t\tconst extensionCommands: SlashCommandInfo[] = runner.getRegisteredCommands().map((command) => ({\n\t\t\tname: command.invocationName,\n\t\t\tdescription: command.description,\n\t\t\tsource: \"extension\",\n\t\t\tsourceInfo: command.sourceInfo,\n\t\t}));\n\n\t\tconst templates: SlashCommandInfo[] = this.promptTemplates.map((template) => ({\n\t\t\tname: template.name,\n\t\t\tdescription: template.description,\n\t\t\tsource: \"prompt\",\n\t\t\tsourceInfo: template.sourceInfo,\n\t\t}));\n\n\t\tconst skills: SlashCommandInfo[] = getSkillCatalog(\n\t\t\tpublication?.resourceLoader ?? this._resourceLoader,\n\t\t).commands.map((command) => ({\n\t\t\tname: `skill:${command.name}`,\n\t\t\tdescription: command.description,\n\t\t\tsource: \"skill\",\n\t\t\tsourceInfo: command.sourceInfo,\n\t\t}));\n\n\t\treturn [...extensionCommands, ...templates, ...skills];\n\t};\n\n\trunner.bindCore(\n\t\t{\n\t\t\tsendMessage: (message, options) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.defer(() => this.sendCustomMessage(message, options));\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t}\n\t\t\t\tconst delivery = this.sendCustomMessage(message, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_message\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendMessages: (messages, options) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.defer(() => this.sendCustomMessages(messages, options));\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t}\n\t\t\t\tconst delivery = this.sendCustomMessages(messages, options);\n\t\t\t\tvoid delivery.catch((err) => {\n\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\tevent: \"send_messages\",\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn delivery;\n\t\t\t},\n\t\t\tsendUserMessage: (content, options) => {\n\t\t\t\tconst send = () =>\n\t\t\t\t\tthis.sendUserMessage(content, options).catch((err) => {\n\t\t\t\t\t\trunner.emitError({\n\t\t\t\t\t\t\textensionPath: \"<runtime>\",\n\t\t\t\t\t\t\tevent: \"send_user_message\",\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\tif (publication) publication.defer(send);\n\t\t\t\telse void send();\n\t\t\t},\n\t\t\tappendEntry: (customType, data) => {\n\t\t\t\tconst append = () => {\n\t\t\t\t\tconst id = this.sessionManager.appendCustomEntry(customType, data);\n\t\t\t\t\tconst entry = this.sessionManager.getEntry(id);\n\t\t\t\t\tif (entry) this._emit({ type: \"entry_appended\", entry });\n\t\t\t\t};\n\t\t\t\tif (publication) publication.defer(append);\n\t\t\t\telse append();\n\t\t\t},\n\t\t\tsetSessionName: (name) => {\n\t\t\t\tif (publication) publication.defer(() => this.setSessionName(name));\n\t\t\t\telse this.setSessionName(name);\n\t\t\t},\n\t\t\tgetSessionName: () => {\n\t\t\t\treturn this.sessionManager.getSessionName();\n\t\t\t},\n\t\t\tsetLabel: (entryId, label) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.defer(() => {\n\t\t\t\t\t\tthis.sessionManager.appendLabelChange(entryId, label);\n\t\t\t\t\t});\n\t\t\t\t} else this.sessionManager.appendLabelChange(entryId, label);\n\t\t\t},\n\t\t\tgetActiveTools: () => {\n\t\t\t\tif (!publication) return this.getActiveToolNames();\n\t\t\t\trefreshCandidateTools();\n\t\t\t\treturn [...candidateActiveTools];\n\t\t\t},\n\t\t\tgetAllTools: () => {\n\t\t\t\tif (!publication) return this.getAllTools();\n\t\t\t\treturn [...refreshCandidateTools().values()].map(({ definition, sourceInfo }) => ({\n\t\t\t\t\tname: definition.name,\n\t\t\t\t\tdescription: definition.description,\n\t\t\t\t\tparameters: definition.parameters,\n\t\t\t\t\t...(Object.hasOwn(definition, \"constrainedSampling\")\n\t\t\t\t\t\t? { constrainedSampling: definition.constrainedSampling }\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tpromptGuidelines: definition.promptGuidelines,\n\t\t\t\t\texposure: definition.exposure ?? \"direct\",\n\t\t\t\t\tnamespace: definition.namespace,\n\t\t\t\t\tannotations: definition.annotations,\n\t\t\t\t\tsourceInfo,\n\t\t\t\t}));\n\t\t\t},\n\t\t\tsetActiveTools: (toolNames) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tconst definitions = refreshCandidateTools();\n\t\t\t\t\tcandidateActiveTools = [...new Set(toolNames)].filter((name) => {\n\t\t\t\t\t\tconst tool = definitions.get(name);\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\ttool &&\n\t\t\t\t\t\t\ttool.definition.exposure !== \"hidden\" &&\n\t\t\t\t\t\t\tisToolActivatable(this, name, tool.definition.exposure ?? \"direct\", definitions.has(\"tool_search\"))\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t\tconst accepted = [...candidateActiveTools];\n\t\t\t\t\tpublication.defer(() => this.setActiveToolsByName(accepted));\n\t\t\t\t} else this.setActiveToolsByName(toolNames);\n\t\t\t},\n\t\t\trefreshTools: () => {\n\t\t\t\tif (publication) refreshCandidateTools();\n\t\t\t\telse this._refreshToolRegistry();\n\t\t\t},\n\t\t\tgetCommands,\n\t\t\tsetModel: async (model) => {\n\t\t\t\tconst hasConfiguredAuth =\n\t\t\t\t\tpublication?.providerTransaction.hasConfiguredAuth(model.provider) ??\n\t\t\t\t\tthis.modelRuntime.hasConfiguredAuth(model.provider);\n\t\t\t\tif (!hasConfiguredAuth) return false;\n\t\t\t\tif (publication) publication.defer(() => this.setModel(model));\n\t\t\t\telse await this.setModel(model);\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tsetThinkingLevel: (level) => {\n\t\t\t\tif (publication) publication.defer(() => this.setThinkingLevel(level));\n\t\t\t\telse this.setThinkingLevel(level);\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tgetModel: () => this.model,\n\t\t\texecuteTool: (callerId, name, args, options) => executeNestedToolCall(this, callerId, name, args, options),\n\t\t\tgetCallableTools: () => getCallableTools(this),\n\t\t\tgetSettings: () => this.settingsManager.getSettings(),\n\t\t\t// Read through the public accessor, not `_scopedModels`: in the isolated\n\t\t\t// engine the host-side facade session has `scopedModels` redefined by\n\t\t\t// RemoteModelCatalog to the engine's catalogue, and the private field it\n\t\t\t// shadows is never refreshed.\n\t\t\tgetScopedModels: () => this.scopedModels,\n\t\t\tgetThinkingLevel: () => this.thinkingLevel,\n\t\t\tisIdle: () => !this.isStreaming,\n\t\t\tisProjectTrusted: () => this.settingsManager.isProjectTrusted(),\n\t\t\tgetSignal: () => this.agent.signal,\n\t\t\tabort: () => {\n\t\t\t\tif (publication) publication.defer(() => this.abort());\n\t\t\t\telse this.abort();\n\t\t\t},\n\t\t\thasPendingMessages: () => this.pendingMessageCount > 0,\n\t\t\tshutdown: () => {\n\t\t\t\tif (publication) publication.defer(() => this._extensionShutdownHandler?.());\n\t\t\t\telse this._extensionShutdownHandler?.();\n\t\t\t},\n\t\t\tgetContextUsage: () => this.getContextUsage(),\n\t\t\tcompact: (options) => {\n\t\t\t\tconst compact = async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await this.compact({\n\t\t\t\t\t\t\t...(options?.compression_ratio === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { compression_ratio: options.compression_ratio }),\n\t\t\t\t\t\t\t...(options?.preserve_recent === undefined ? {} : { preserve_recent: options.preserve_recent }),\n\t\t\t\t\t\t\t...(options?.query === undefined ? {} : { query: options.query }),\n\t\t\t\t\t\t});\n\t\t\t\t\t\toptions?.onComplete?.(result);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\t\toptions?.onError?.(err);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (publication) publication.defer(compact);\n\t\t\t\telse void compact();\n\t\t\t},\n\t\t\tgetSystemPrompt: () => this.systemPrompt,\n\t\t\tgetRouterModel: () => this.settingsManager.getRouterModel(),\n\t\t\tgetModelRouting: () => this.settingsManager.getModelRouting(),\n\t\t\tgetSkillCatalog: () => getSkillCatalog(publication?.resourceLoader ?? this._resourceLoader),\n\t\t\tgetSystemPromptOptions: () => this._baseSystemPromptOptions,\n\t\t},\n\t\t{\n\t\t\tregisterProvider: (providerOrName, config) => {\n\t\t\t\tconst providerId = typeof providerOrName === \"string\" ? providerOrName : providerOrName.id;\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.providerIds.add(providerId);\n\t\t\t\t\tif (typeof providerOrName === \"string\") {\n\t\t\t\t\t\tpublication.providerTransaction.registerProvider(providerOrName, config!);\n\t\t\t\t\t} else publication.providerTransaction.registerNativeProvider(providerOrName);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._extensionProviderIds.add(providerId);\n\t\t\t\tthis._resourceLoader.getExtensions().runtime.extensionProviderIds.add(providerId);\n\t\t\t\tif (typeof providerOrName === \"string\") this._modelRuntime.registerProvider(providerOrName, config!);\n\t\t\t\telse this._modelRuntime.registerNativeProvider(providerOrName);\n\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t},\n\t\t\tunregisterProvider: (name) => {\n\t\t\t\tif (publication) {\n\t\t\t\t\tpublication.providerIds.delete(name);\n\t\t\t\t\tpublication.providerTransaction.unregisterProvider(name);\n\t\t\t\t} else {\n\t\t\t\t\tthis._extensionProviderIds.delete(name);\n\t\t\t\t\tthis._resourceLoader.getExtensions().runtime.extensionProviderIds.delete(name);\n\t\t\t\t\tthis._modelRuntime.unregisterProvider(name);\n\t\t\t\t\tthis.refreshCurrentModelFromRegistry();\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t);\n}\n\nexport async function reload(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\tif (this._disposed || sessionGenerationClosing.has(this) || hasSessionReload(this))\n\t\tthrow hostInputError(\"SessionClosed\");\n\tsessionGenerationClosing.add(this);\n\treturn trackSessionReload(this, () => reloadAdmitted.call(this, options));\n}\n\nasync function reloadAdmitted(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\tconst retiringRunner = this._extensionRunner;\n\ttry {\n\t\tabortSessionWork(this);\n\t\tthis.abortBash();\n\t\tthis._extensionRunner.sealHostInput();\n\t\tif (this.isStreaming || this._activePromptCount > 0) await this.abort();\n\t\tawait this.closeSessionTasks();\n\t\tawait drainSessionWork(this, true);\n\t\trenewSessionWork(this);\n\t\treplaceSessionTaskOwner(this);\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait reloadGeneration.call(this, options);\n\t\tif (\n\t\t\t!this._disposed &&\n\t\t\t!sessionGenerationClosing.has(this) &&\n\t\t\t!this.isStreaming &&\n\t\t\t!this._queuedMessagesPaused &&\n\t\t\tthis._protectedStreamingCustomMessages?.some((entry) => entry.phase === \"queued\")\n\t\t) {\n\t\t\tthis._agentRunAbortRequested = false;\n\t\t\tvoid trackSessionWork(this, () => this._runAgentPrompt([])).catch((error) => {\n\t\t\t\tthis._extensionRunner.emitError({\n\t\t\t\t\textensionPath: \"session:reload\",\n\t\t\t\t\tevent: \"reload\",\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tif (!this._disposed && this._extensionRunner === retiringRunner) retiringRunner.resumeAfterRejectedReload();\n\t\tthrow error;\n\t} finally {\n\t\tsessionGenerationClosing.delete(this);\n\t}\n}\n\nfunction failureMessages(error: unknown): string[] {\n\tif (error instanceof AggregateError && error.errors.length > 0) return error.errors.flatMap(failureMessages);\n\treturn [error instanceof Error ? error.message : String(error)];\n}\n\nfunction retiringCleanupError(failures: unknown[]): AggregateError {\n\tconst detail = failures.flatMap(failureMessages).join(\"; \");\n\treturn Object.assign(new AggregateError(failures, `Reload retiring cleanup failed: ${detail}`), {\n\t\tcode: \"ShutdownFailed\",\n\t});\n}\n\nasync function cleanupReloadRunner(runner: ExtensionRunner, reason: string): Promise<void> {\n\tconst failures: unknown[] = [];\n\tfor (const cleanup of [\n\t\t() => runner.drainWork(),\n\t\t() =>\n\t\t\t(reason === \"reload\" || reason === \"startup\") &&\n\t\t\temitSessionShutdownEvent(runner, { type: \"session_shutdown\", reason: \"reload\" }),\n\t\t() => runner.invalidate(),\n\t]) {\n\t\ttry {\n\t\t\tawait cleanup();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t}\n\tif (failures.length) throw retiringCleanupError(failures);\n}\n\nasync function reloadGeneration(this: AgentSession, options?: AgentSessionReloadOptions): Promise<void> {\n\treturn factoryAcquisitions.run({ pending: new Map(), replacement: true }, async () => {\n\t\t// Record ownership at transfer, never by rereading a possibly failed loader view.\n\t\tconst retainedRuntimes = new Set<ExtensionRuntime>();\n\t\ttry {\n\t\t\tawait reloadOwnedGeneration.call(this, retainedRuntimes, options);\n\t\t} catch (error) {\n\t\t\tthrow factoryRollbackError(error, await rollbackFactoryAcquisitions(retainedRuntimes));\n\t\t}\n\t\t// Custom discovery may be re-instantiated rather than adopted by the runner.\n\t\tconst failures = await rollbackFactoryAcquisitions(retainedRuntimes);\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError(failures, \"Reload discovery cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t});\n}\n\nasync function reloadOwnedGeneration(\n\tthis: AgentSession,\n\tretainedRuntimes: Set<ExtensionRuntime>,\n\toptions?: AgentSessionReloadOptions,\n): Promise<void> {\n\tconst reason = options?.reason ?? \"reload\";\n\tconst oldRunner = this._extensionRunner;\n\tconst previousFlagValues = oldRunner.getExplicitFlagValues();\n\tconst activeToolNames = this.getActiveToolNames();\n\tconst previousDefaultTools = this._appliedDefaultTools;\n\tconst activeToolsAfterReload = (defaultTools: readonly string[]) => [\n\t\t...activeToolNames,\n\t\t...(this._usesDefaultTools ? defaultTools.filter((name) => !previousDefaultTools.has(name)) : []),\n\t];\n\tconst prepareResourceReload = this._resourceLoader.prepareReload?.bind(this._resourceLoader);\n\tif (prepareResourceReload === undefined || this._resourceLoader.supportsTransactionalReload?.() === false) {\n\t\tif (options?.failOnExtensionErrors) {\n\t\t\tthrow new Error(\"Strict extension reload requires a transactional resource loader\");\n\t\t}\n\t\tconst retiringFailures: unknown[] = [];\n\t\ttry {\n\t\t\toldRunner.revokeAuthority();\n\t\t} catch (error) {\n\t\t\tretiringFailures.push(error);\n\t\t}\n\t\tawait retireSessionReloadGeneration(this, () => cleanupReloadRunner(oldRunner, reason)).catch(\n\t\t\t(error: unknown) => {\n\t\t\t\tretiringFailures.push(error);\n\t\t\t},\n\t\t);\n\t\tawait this.settingsManager.reload();\n\t\tresetApiProviders();\n\t\tawait this._resourceLoader.reload();\n\t\tconst defaultTools = this.settingsManager.getDefaultTools() ?? getDefaultToolNames();\n\t\tfor (const name of this.getActiveToolNames()) this._pendingToolNames.add(name);\n\t\tthis._buildRuntime({\n\t\t\tactiveToolNames: activeToolsAfterReload(defaultTools),\n\t\t\tflagValues: previousFlagValues,\n\t\t\tincludeAllExtensionTools: true,\n\t\t});\n\t\tthis._appliedDefaultTools = new Set(defaultTools);\n\t\tretainedRuntimes.add(this._resourceLoader.getExtensions().runtime);\n\t\tfor (const extension of this._resourceLoader.getExtensions().extensions)\n\t\t\tfactoryAcquisitions.getStore()?.pending?.delete(extension);\n\t\tconst discoveryFailures = await rollbackFactoryAcquisitions(\n\t\t\tnew Set([this._resourceLoader.getExtensions().runtime]),\n\t\t);\n\t\tif (discoveryFailures.length)\n\t\t\tthrow Object.assign(new AggregateError(discoveryFailures, \"Reload discovery cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait options?.beforeSessionStart?.();\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tsessionGenerationClosing.delete(this);\n\t\tawait startExtensions(this, this._extensionRunner, this._resourceLoader, { type: \"session_start\", reason });\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tthis._rebuildSystemPrompt(this.getActiveToolNames());\n\t\tif (retiringFailures.length) throw retiringFailures[0];\n\t\treturn;\n\t}\n\n\tconst settingsTransaction = await this.settingsManager.prepareReload();\n\tconst resourceTransaction = await prepareResourceReload(settingsTransaction.settingsManager);\n\tconst defaultTools = settingsTransaction.settingsManager.getDefaultTools() ?? getDefaultToolNames();\n\tconst errors = resourceTransaction.loader.getExtensions().errors;\n\tconst extensionsResult = resourceTransaction.loader.getExtensions();\n\tfor (const [name, value] of previousFlagValues) {\n\t\textensionsResult.runtime.flagValues.set(name, value);\n\t\textensionsResult.runtime.explicitFlagNames ??= new Set();\n\t\textensionsResult.runtime.explicitFlagNames.add(name);\n\t}\n\tconst candidateRunner = new ExtensionRunner(\n\t\textensionsResult.extensions,\n\t\textensionsResult.runtime,\n\t\tthis._cwd,\n\t\tthis.sessionManager,\n\t\tnew ModelRegistry(this._modelRuntime),\n\t\tthis._orchestrationContext,\n\t\tthis._subagentPolicy,\n\t);\n\tconst publication = new ExtensionPublicationGate(\n\t\tresourceTransaction.loader,\n\t\tcandidateRunner,\n\t\tthis._modelRuntime,\n\t\t() => this._disposed,\n\t\tthis._extensionProviderIds,\n\t);\n\tlet commitPreparedResources: (() => void) | undefined;\n\tlet rollbackPreparedResources: (() => void) | undefined;\n\ttry {\n\t\t// The rollback below now owns these factories; discovery-only acquisitions\n\t\t// remain in the enclosing ledger until the entire reload settles.\n\t\tfor (const extension of extensionsResult.extensions) factoryAcquisitions.getStore()?.pending?.delete(extension);\n\t\tconst discoveryFailures = await rollbackFactoryAcquisitions(new Set([extensionsResult.runtime]));\n\t\tif (discoveryFailures.length)\n\t\t\tthrow Object.assign(new AggregateError(discoveryFailures, \"Reload discovery cleanup failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tthis._bindExtensionCore(candidateRunner, publication);\n\t\tcandidateRunner.setHostBindings(\n\t\t\tthis._extensionHumanInput,\n\t\t\tthis._extensionDiagnosticListener,\n\t\t\thumanInputBindingRevisions.get(this),\n\t\t);\n\t\tcandidateRunner.setUIContext(\n\t\t\tthis._extensionUIContext,\n\t\t\tthis._extensionMode,\n\t\t\tpresentationOnlyBindings.get(this) ?? false,\n\t\t);\n\t\tcandidateRunner.bindCommandContext(this._extensionCommandContextActions);\n\t\tcandidateRunner.bindChildSessionOptions(this._childSessionOptions);\n\t\tif (options?.failOnExtensionErrors && errors.length > 0)\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to load extensions: ${errors.map(({ path, error }) => `${path}: ${error}`).join(\"; \")}`,\n\t\t\t);\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait options?.beforeSessionStart?.();\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tawait startExtensions(this, candidateRunner, resourceTransaction.loader, { type: \"session_start\", reason });\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tconst preparedResources = resourceTransaction.prepareCommit?.();\n\t\tif (preparedResources) {\n\t\t\tcommitPreparedResources = () => preparedResources.commit();\n\t\t\trollbackPreparedResources = () => preparedResources.rollback();\n\t\t}\n\t\tawait publication.publishProviders();\n\t\tif (this._disposed) throw hostInputError(\"SessionClosed\");\n\t\tsettingsTransaction.commit();\n\t\tresourceTransaction.activate(this.settingsManager);\n\t\tif (commitPreparedResources) commitPreparedResources();\n\t\telse resourceTransaction.commit();\n\t} catch (error) {\n\t\tconst failures: unknown[] = [];\n\t\tfor (const cleanup of [\n\t\t\t() => rollbackPreparedResources?.(),\n\t\t\t() => publication.discard(),\n\t\t\t() => candidateRunner.sealHostInput(),\n\t\t\t() => candidateRunner.retireObservation(),\n\t\t\t() => candidateRunner.drainWork(),\n\t\t\t() => emitSessionShutdownEvent(candidateRunner, { type: \"session_shutdown\", reason: \"reload\" }),\n\t\t\t() => candidateRunner.invalidate(),\n\t\t]) {\n\t\t\ttry {\n\t\t\t\tawait cleanup();\n\t\t\t} catch (failure) {\n\t\t\t\tfailures.push(failure);\n\t\t\t}\n\t\t}\n\t\tif (failures.length)\n\t\t\tthrow Object.assign(new AggregateError([error, ...failures], \"Reload rollback failed\"), {\n\t\t\t\tcode: \"ShutdownFailed\",\n\t\t\t});\n\t\tthrow error;\n\t}\n\n\t// Publication transferred ownership: keep the started candidate reachable even\n\t// when reconstruction fails, and retain retiring cleanup through every step.\n\tthis._extensionRunner = candidateRunner;\n\tthis._workflows?.rebindObservers();\n\tretainedRuntimes.add(extensionsResult.runtime);\n\tconst failures: unknown[] = [];\n\ttry {\n\t\tresetApiProviders();\n\t\tthis._extensionProviderIds = new Set(publication.providerIds);\n\t\textensionsResult.runtime.extensionProviderIds = new Set(publication.providerIds);\n\t\tthis.refreshCurrentModelFromRegistry();\n\t\tif (this._extensionRunnerRef) this._extensionRunnerRef.current = candidateRunner;\n\t\tthis._bindExtensionCore(candidateRunner);\n\t\tthis._applyExtensionBindings(candidateRunner);\n\t\tfor (const name of this.getActiveToolNames()) this._pendingToolNames.add(name);\n\t\tthis._buildRuntime({\n\t\t\tactiveToolNames: activeToolsAfterReload(defaultTools),\n\t\t\tflagValues: previousFlagValues,\n\t\t\tincludeAllExtensionTools: true,\n\t\t\tpreserveRunner: true,\n\t\t});\n\t\tthis._appliedDefaultTools = new Set(defaultTools);\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\tconst setupFailed = failures.length > 0;\n\ttry {\n\t\tpublication.activateCommits();\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\ttry {\n\t\toldRunner.revokeAuthority();\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\ttry {\n\t\tawait retireSessionReloadGeneration(this, () => cleanupReloadRunner(oldRunner, reason));\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\tbindExtensionContextPublication(candidateRunner.createContext(), undefined);\n\ttry {\n\t\tpublication.drainCommitFailures();\n\t} catch (error) {\n\t\tfailures.push(error);\n\t}\n\tif (setupFailed) throw failures.length > 1 ? retiringCleanupError(failures) : failures[0];\n\tif (this._disposed) throw failures.length ? failures[0] : hostInputError(\"SessionClosed\");\n\tsessionGenerationClosing.delete(this);\n\t// Startup observers need the successor task host. Keep admission sealed until\n\t// retiring callbacks are invalidated, then publish reporters before queued user effects.\n\tawait publication.activateStarts();\n\tawait publication.release();\n\tif (failures.length) throw failures.length > 1 ? retiringCleanupError(failures) : failures[0];\n}\n\n/** Publish approved startup resources without replacing the session or restarting safe reporters. */\nexport async function completeStartupResources(this: AgentSession, resourceLoader: ResourceLoader): Promise<void> {\n\tassertSessionOpen(this);\n\treturn trackSessionWork(this, async () => {\n\t\tthis._resourceLoader = resourceLoader;\n\t\tconst startNewcomers = this._extensionRunner.attachStartupExtensions(resourceLoader.getExtensions().extensions);\n\t\tthis._buildRuntime({\n\t\t\tactiveToolNames: this.getActiveToolNames(),\n\t\t\tincludeAllExtensionTools: true,\n\t\t\tpreserveRunner: true,\n\t\t});\n\t\tthis.refreshCurrentModelFromRegistry();\n\t\tawait startNewcomers();\n\t\tassertSessionOpen(this);\n\t\tawait this.extendResourcesFromExtensions(\"startup\");\n\t});\n}\n\n// =========================================================================\n// Auto-Retry\n// =========================================================================\n\n/**\n * Check if an error is retryable (overloaded, rate limit, server errors).\n * Context overflow errors are NOT retryable (handled by compaction instead).\n */\n\nexport const agentSessionExtensionBindingsMethods = {\n\tbindExtensions,\n\tcompleteStartupResources,\n\textendResourcesFromExtensions,\n\tbuildExtensionResourcePaths,\n\tgetExtensionSourceLabel,\n\t_applyExtensionBindings,\n\trefreshCurrentModelFromRegistry,\n\t_refreshCurrentModelFromRegistry,\n\t_bindExtensionCore,\n\treload,\n};\n"]}
@@ -7,6 +7,7 @@ import type { BashResult } from "./bash-executor.ts";
7
7
  import type { CompactionUrgency, PlannerAuth, VerbatimCompactionParameters, VerbatimCompactionResult } from "./compaction/index.ts";
8
8
  import type { AgentActivityOutcome, BoundaryContextPreview, ContextUsage, ExtensionCommandContextActions, ExtensionErrorListener, ExtensionMode, ExtensionRunner, ExtensionUIContext, OrchestrationContext, ReplacedSessionContext, SendMessageOptions, SendMessagesOptions, SessionBoundaryDraft, SessionStartEvent, ToolDefinition, ToolInfo } from "./extensions/index.js";
9
9
  import type { SessionWorkflows } from "./extensions/workflow-run-control.js";
10
+ import type { SessionWorkflowsHandle } from "./extensions/workflow-run-control-hub.js";
10
11
  import type { BashExecutionMessage, CustomMessage } from "./messages.ts";
11
12
  import type { ExtensionProviderTransaction, ModelRuntime } from "./model-runtime.js";
12
13
  import type { PathMetadata } from "./package-manager.ts";
@@ -374,7 +375,7 @@ export interface AgentSessionInternalSurface extends AgentSessionMethodSurface,
374
375
  _bashAbortControllers: Map<string | symbol, Set<AbortController>>;
375
376
  _pendingBashMessages: BashExecutionMessage[];
376
377
  _extensionRunner: ExtensionRunner;
377
- _workflows?: SessionWorkflows;
378
+ _workflows?: SessionWorkflowsHandle;
378
379
  _turnIndex: number;
379
380
  readonly _entryIdsByMessage: WeakMap<object, string>;
380
381
  readonly _boundaryDispatchedMessages: WeakSet<object>;