@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.
- package/CHANGELOG.md +33 -0
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +23 -0
- package/dist/builtin/workflows/builtin/{chunk-wz8v67bn.js → chunk-aqv8ny38.js} +257 -259
- package/dist/builtin/workflows/builtin/{chunk-f61w0hpm.js → chunk-br4ac9a3.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-tecnpe8j.js → chunk-p3xmajmj.js} +438 -39
- package/dist/builtin/workflows/builtin/chunk-p6jagvyf.js +8 -0
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +4 -4
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/authoring.d.ts +14 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +107577 -106722
- package/dist/builtin/workflows/src/index.js +42284 -41141
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +16 -11
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +16 -1
- package/dist/cli/credential-print.d.ts +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +2 -56
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +6 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +20 -3
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +2 -1
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +6 -0
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +87 -7
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +2 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +14 -1
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +1 -0
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/compaction/classifier-compaction.d.ts +13 -0
- package/dist/core/compaction/classifier-compaction.d.ts.map +1 -0
- package/dist/core/compaction/classifier-compaction.js +110 -0
- package/dist/core/compaction/classifier-compaction.js.map +1 -0
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +2 -6
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +16 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +97 -12
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +18 -1
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/fallback-planner.d.ts +1 -0
- package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
- package/dist/core/compaction/fallback-planner.js +2 -0
- package/dist/core/compaction/fallback-planner.js.map +1 -1
- package/dist/core/compaction/index.d.ts +3 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +3 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/model-resolver.d.ts +16 -0
- package/dist/core/compaction/model-resolver.d.ts.map +1 -0
- package/dist/core/compaction/model-resolver.js +18 -0
- package/dist/core/compaction/model-resolver.js.map +1 -0
- package/dist/core/compaction/morph-compaction.d.ts +14 -0
- package/dist/core/compaction/morph-compaction.d.ts.map +1 -0
- package/dist/core/compaction/morph-compaction.js +99 -0
- package/dist/core/compaction/morph-compaction.js.map +1 -0
- package/dist/core/compaction/pi-summary-fallback.d.ts +34 -0
- package/dist/core/compaction/pi-summary-fallback.d.ts.map +1 -0
- package/dist/core/compaction/pi-summary-fallback.js +357 -0
- package/dist/core/compaction/pi-summary-fallback.js.map +1 -0
- package/dist/core/compaction/planner-outcome.d.ts +10 -6
- package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
- package/dist/core/compaction/planner-outcome.js +11 -4
- package/dist/core/compaction/planner-outcome.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts +3 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js +11 -0
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +3 -3
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +59 -28
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/region-trimming.d.ts.map +1 -1
- package/dist/core/compaction/region-trimming.js +7 -0
- package/dist/core/compaction/region-trimming.js.map +1 -1
- package/dist/core/compaction/structured-compaction-input.d.ts +19 -0
- package/dist/core/compaction/structured-compaction-input.d.ts.map +1 -0
- package/dist/core/compaction/structured-compaction-input.js +70 -0
- package/dist/core/compaction/structured-compaction-input.js.map +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js +26 -0
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +2 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +1 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +10 -4
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +47 -3
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +10 -3
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +31 -7
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/workflow-events.d.ts +49 -0
- package/dist/core/extensions/workflow-events.d.ts.map +1 -1
- package/dist/core/extensions/workflow-events.js.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.d.ts +16 -4
- package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control-hub.js +72 -1
- package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
- package/dist/core/extensions/workflow-run-control.d.ts +11 -3
- package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
- package/dist/core/extensions/workflow-run-control.js.map +1 -1
- package/dist/core/messages.d.ts +1 -0
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +5 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +3 -0
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +4 -2
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +2 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +29 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-types.d.ts +1 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/transcript.d.ts +58 -0
- package/dist/core/transcript.d.ts.map +1 -0
- package/dist/core/transcript.js +185 -0
- package/dist/core/transcript.js.map +1 -0
- package/dist/extensions/herdr/index.d.ts.map +1 -1
- package/dist/extensions/herdr/index.js +15 -10
- package/dist/extensions/herdr/index.js.map +1 -1
- package/dist/extensions/herdr/pane-owner.d.ts +6 -2
- package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
- package/dist/extensions/herdr/pane-owner.js +19 -4
- package/dist/extensions/herdr/pane-owner.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts +2 -0
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +15 -3
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +43 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +6 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-prompt-turn.js +6 -4
- package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +13 -1
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +8 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +2 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/utils/credential-redaction.d.ts +2 -0
- package/dist/utils/credential-redaction.d.ts.map +1 -0
- package/dist/utils/credential-redaction.js +20 -0
- package/dist/utils/credential-redaction.js.map +1 -0
- package/docs/compaction/reference.md +10 -4
- package/docs/compaction.md +40 -8
- package/docs/docs.json +1 -0
- package/docs/extensions/api-reference.md +4 -0
- package/docs/extensions/events.md +2 -2
- package/docs/providers.md +12 -1
- package/docs/sdk/reference.md +16 -1
- package/docs/sdk/web-server.md +325 -0
- package/docs/sdk.md +83 -1
- package/docs/security.md +1 -1
- package/docs/workflows/api-reference.md +71 -3
- package/docs/workflows/builtins.md +4 -0
- package/docs/workflows/operations.md +12 -4
- package/npm-shrinkwrap.json +32 -32
- 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
|
-
|
|
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"
|
|
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?:
|
|
378
|
+
_workflows?: SessionWorkflowsHandle;
|
|
378
379
|
_turnIndex: number;
|
|
379
380
|
readonly _entryIdsByMessage: WeakMap<object, string>;
|
|
380
381
|
readonly _boundaryDispatchedMessages: WeakSet<object>;
|