@astralyn/pi 1.4.9 → 1.4.10
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 +54 -0
- package/dist/bundle/chunks/{chunk-3PKXUKTB.js → chunk-6GTUUUCJ.js} +123 -123
- package/dist/bundle/chunks/{chunk-BAGHIP5J.js → chunk-MF3T3ETJ.js} +3 -3
- package/dist/bundle/chunks/{chunk-F66AY3WR.js → chunk-UCH27AVQ.js} +1 -1
- package/dist/bundle/chunks/{execute-P22VMM2H.js → execute-FQKRO4XJ.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-VKMBQTR2.js → virtual-modules-6IJ6V2CG.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/core/agent-session.d.ts +34 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +99 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/isolated-session.d.ts +7 -2
- package/dist/core/isolated-session.d.ts.map +1 -1
- package/dist/core/isolated-session.js +7 -3
- package/dist/core/isolated-session.js.map +1 -1
- package/dist/core/session-manager.d.ts +17 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +29 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tasks/delivery.d.ts +42 -7
- package/dist/core/tasks/delivery.d.ts.map +1 -1
- package/dist/core/tasks/delivery.js +129 -15
- package/dist/core/tasks/delivery.js.map +1 -1
- package/dist/core/tasks/execution.d.ts +27 -14
- package/dist/core/tasks/execution.d.ts.map +1 -1
- package/dist/core/tasks/execution.js +90 -86
- package/dist/core/tasks/execution.js.map +1 -1
- package/dist/core/tasks/limits.d.ts +13 -1
- package/dist/core/tasks/limits.d.ts.map +1 -1
- package/dist/core/tasks/limits.js +14 -1
- package/dist/core/tasks/limits.js.map +1 -1
- package/dist/core/tasks/output.d.ts +9 -1
- package/dist/core/tasks/output.d.ts.map +1 -1
- package/dist/core/tasks/output.js +23 -10
- package/dist/core/tasks/output.js.map +1 -1
- package/dist/core/tasks/presentation.d.ts +1 -1
- package/dist/core/tasks/presentation.d.ts.map +1 -1
- package/dist/core/tasks/presentation.js +6 -4
- package/dist/core/tasks/presentation.js.map +1 -1
- package/dist/core/tasks/record.d.ts +41 -29
- package/dist/core/tasks/record.d.ts.map +1 -1
- package/dist/core/tasks/record.js +82 -37
- package/dist/core/tasks/record.js.map +1 -1
- package/dist/core/tasks/reminder.js +2 -2
- package/dist/core/tasks/reminder.js.map +1 -1
- package/dist/core/tasks/runtime.d.ts +17 -14
- package/dist/core/tasks/runtime.d.ts.map +1 -1
- package/dist/core/tasks/runtime.js +68 -116
- package/dist/core/tasks/runtime.js.map +1 -1
- package/dist/core/tasks/scheduler.d.ts +3 -1
- package/dist/core/tasks/scheduler.d.ts.map +1 -1
- package/dist/core/tasks/scheduler.js +16 -12
- package/dist/core/tasks/scheduler.js.map +1 -1
- package/dist/core/tasks/session.d.ts +24 -3
- package/dist/core/tasks/session.d.ts.map +1 -1
- package/dist/core/tasks/session.js +73 -9
- package/dist/core/tasks/session.js.map +1 -1
- package/dist/core/tasks/store.d.ts +17 -4
- package/dist/core/tasks/store.d.ts.map +1 -1
- package/dist/core/tasks/store.js +45 -48
- package/dist/core/tasks/store.js.map +1 -1
- package/dist/core/tasks/types.d.ts +72 -29
- package/dist/core/tasks/types.d.ts.map +1 -1
- package/dist/core/tasks/types.js +7 -0
- package/dist/core/tasks/types.js.map +1 -1
- package/dist/core/tasks/wait.d.ts +19 -0
- package/dist/core/tasks/wait.d.ts.map +1 -0
- package/dist/core/tasks/wait.js +45 -0
- package/dist/core/tasks/wait.js.map +1 -0
- package/dist/core/tools/shell-execution.d.ts.map +1 -1
- package/dist/core/tools/shell-execution.js +2 -1
- package/dist/core/tools/shell-execution.js.map +1 -1
- package/dist/core/tools/shell-tool.d.ts.map +1 -1
- package/dist/core/tools/shell-tool.js +20 -13
- package/dist/core/tools/shell-tool.js.map +1 -1
- package/dist/extensions/agent/activity-lines.d.ts +10 -0
- package/dist/extensions/agent/activity-lines.d.ts.map +1 -0
- package/dist/extensions/agent/activity-lines.js +76 -0
- package/dist/extensions/agent/activity-lines.js.map +1 -0
- package/dist/extensions/agent/activity.d.ts +25 -4
- package/dist/extensions/agent/activity.d.ts.map +1 -1
- package/dist/extensions/agent/activity.js +76 -21
- package/dist/extensions/agent/activity.js.map +1 -1
- package/dist/extensions/agent/artifacts.d.ts +15 -0
- package/dist/extensions/agent/artifacts.d.ts.map +1 -0
- package/dist/extensions/agent/artifacts.js +44 -0
- package/dist/extensions/agent/artifacts.js.map +1 -0
- package/dist/extensions/agent/progress.d.ts +30 -4
- package/dist/extensions/agent/progress.d.ts.map +1 -1
- package/dist/extensions/agent/progress.js +84 -11
- package/dist/extensions/agent/progress.js.map +1 -1
- package/dist/extensions/agent/render.d.ts.map +1 -1
- package/dist/extensions/agent/render.js +8 -24
- package/dist/extensions/agent/render.js.map +1 -1
- package/dist/extensions/agent/report.d.ts +11 -3
- package/dist/extensions/agent/report.d.ts.map +1 -1
- package/dist/extensions/agent/report.js +32 -7
- package/dist/extensions/agent/report.js.map +1 -1
- package/dist/extensions/agent/tool.d.ts.map +1 -1
- package/dist/extensions/agent/tool.js +20 -5
- package/dist/extensions/agent/tool.js.map +1 -1
- package/dist/extensions/agent/types.d.ts +2 -0
- package/dist/extensions/agent/types.d.ts.map +1 -1
- package/dist/extensions/agent/types.js.map +1 -1
- package/dist/extensions/agent/worker.d.ts +7 -0
- package/dist/extensions/agent/worker.d.ts.map +1 -1
- package/dist/extensions/agent/worker.js +9 -3
- package/dist/extensions/agent/worker.js.map +1 -1
- package/dist/extensions/search/index.d.ts.map +1 -1
- package/dist/extensions/search/index.js +6 -7
- package/dist/extensions/search/index.js.map +1 -1
- package/dist/extensions/tasks/tool/actions.d.ts.map +1 -1
- package/dist/extensions/tasks/tool/actions.js +15 -11
- package/dist/extensions/tasks/tool/actions.js.map +1 -1
- package/dist/extensions/tasks/tool/schema.d.ts +1 -1
- package/dist/extensions/tasks/tool/schema.d.ts.map +1 -1
- package/dist/extensions/tasks/tool/schema.js +5 -5
- package/dist/extensions/tasks/tool/schema.js.map +1 -1
- package/dist/extensions/tasks/tool/types.d.ts +2 -0
- package/dist/extensions/tasks/tool/types.d.ts.map +1 -1
- package/dist/extensions/tasks/tool/types.js.map +1 -1
- package/dist/extensions/tasks/tool.d.ts.map +1 -1
- package/dist/extensions/tasks/tool.js +3 -2
- package/dist/extensions/tasks/tool.js.map +1 -1
- package/dist/extensions/tasks/ui/completion-render.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/completion-render.js +2 -2
- package/dist/extensions/tasks/ui/completion-render.js.map +1 -1
- package/dist/extensions/tasks/ui/footer.d.ts +37 -0
- package/dist/extensions/tasks/ui/footer.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/footer.js +129 -0
- package/dist/extensions/tasks/ui/footer.js.map +1 -0
- package/dist/extensions/tasks/ui/frame.d.ts +36 -0
- package/dist/extensions/tasks/ui/frame.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/frame.js +33 -0
- package/dist/extensions/tasks/ui/frame.js.map +1 -0
- package/dist/extensions/tasks/ui/help.d.ts +6 -0
- package/dist/extensions/tasks/ui/help.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/help.js +53 -0
- package/dist/extensions/tasks/ui/help.js.map +1 -0
- package/dist/extensions/tasks/ui/inspector.d.ts +4 -3
- package/dist/extensions/tasks/ui/inspector.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/inspector.js +25 -6
- package/dist/extensions/tasks/ui/inspector.js.map +1 -1
- package/dist/extensions/tasks/ui/layout.d.ts +15 -18
- package/dist/extensions/tasks/ui/layout.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/layout.js +162 -255
- package/dist/extensions/tasks/ui/layout.js.map +1 -1
- package/dist/extensions/tasks/ui/list.d.ts +3 -1
- package/dist/extensions/tasks/ui/list.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/list.js +19 -14
- package/dist/extensions/tasks/ui/list.js.map +1 -1
- package/dist/extensions/tasks/ui/manager.d.ts +17 -5
- package/dist/extensions/tasks/ui/manager.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/manager.js +147 -90
- package/dist/extensions/tasks/ui/manager.js.map +1 -1
- package/dist/extensions/tasks/ui/model.d.ts +32 -5
- package/dist/extensions/tasks/ui/model.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/model.js +7 -7
- package/dist/extensions/tasks/ui/model.js.map +1 -1
- package/dist/extensions/tasks/ui/panes.d.ts +40 -0
- package/dist/extensions/tasks/ui/panes.d.ts.map +1 -0
- package/dist/extensions/tasks/ui/panes.js +144 -0
- package/dist/extensions/tasks/ui/panes.js.map +1 -0
- package/dist/extensions/tasks/ui/render.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/render.js +11 -7
- package/dist/extensions/tasks/ui/render.js.map +1 -1
- package/dist/extensions/tasks/ui/viewport.d.ts +12 -4
- package/dist/extensions/tasks/ui/viewport.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/viewport.js +23 -7
- package/dist/extensions/tasks/ui/viewport.js.map +1 -1
- package/dist/extensions/tasks/ui/views.d.ts +12 -6
- package/dist/extensions/tasks/ui/views.d.ts.map +1 -1
- package/dist/extensions/tasks/ui/views.js +39 -32
- package/dist/extensions/tasks/ui/views.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +11 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +43 -17
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +37 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +11 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +48 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/bundled/extensions/agent.md +39 -7
- package/docs/bundled/tasks.md +25 -21
- package/docs/extensions.md +14 -10
- package/docs/json.md +3 -0
- package/docs/rpc.md +14 -0
- package/docs/sdk.md +11 -1
- package/docs/session-format.md +10 -4
- package/docs/sessions.md +1 -1
- package/docs/usage.md +2 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
|
@@ -43,6 +43,7 @@ import { applyToolModifiers, DEFAULT_TOOL_NAMES, } from "./settings-manager.js";
|
|
|
43
43
|
import { BUILTIN_PATH_PREFIX, createSyntheticSourceInfo, isSyntheticPath } from "./source-info.js";
|
|
44
44
|
import { buildSystemPrompt, buildSystemPromptSections, diffSystemPromptSections, normalizeBuildSystemPromptOptions, } from "./system-prompt.js";
|
|
45
45
|
import { TaskSession } from "./tasks/session.js";
|
|
46
|
+
import { TASKS_TOOL_NAME } from "./tasks/types.js";
|
|
46
47
|
import { createAllToolDefinitions } from "./tools/index.js";
|
|
47
48
|
import { createLocalBashOperations } from "./tools/shell-operations.js";
|
|
48
49
|
import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
|
|
@@ -113,6 +114,10 @@ export class AgentSession {
|
|
|
113
114
|
this._isBeforeSettle = false;
|
|
114
115
|
this._abortDuringBeforeSettle = false;
|
|
115
116
|
this._isEmittingAgentSettled = false;
|
|
117
|
+
/** Last observed quiescence; a transition into true emits `session_quiescent` once. */
|
|
118
|
+
this._quiescent = true;
|
|
119
|
+
this._quiescenceDisposed = false;
|
|
120
|
+
this._quiescenceWaiters = new Set();
|
|
116
121
|
this._deferredSettledActions = [];
|
|
117
122
|
this._baseToolDefinitions = new Map();
|
|
118
123
|
/**
|
|
@@ -250,6 +255,7 @@ export class AgentSession {
|
|
|
250
255
|
// turn, so it still waits for the queues to drain.
|
|
251
256
|
return this.isStreaming || (this.pendingMessageCount === 0 && !this.agent.hasQueuedMessages());
|
|
252
257
|
},
|
|
258
|
+
managementActive: () => this.getActiveToolNames().includes(TASKS_TOOL_NAME),
|
|
253
259
|
deliver: (message, waitForPersistence) => {
|
|
254
260
|
if (this.isStreaming) {
|
|
255
261
|
this.agent.steer(message);
|
|
@@ -263,6 +269,7 @@ export class AgentSession {
|
|
|
263
269
|
onEntry: (entry) => this._emit({ type: "entry_appended", entry }),
|
|
264
270
|
onError: (event, error) => this._extensionRunner?.emitError({ extensionPath: "<background>", event, error }),
|
|
265
271
|
});
|
|
272
|
+
this._tasksHost.subscribe(() => this._updateQuiescence());
|
|
266
273
|
this._scopedModels = config.scopedModels ?? [];
|
|
267
274
|
this._resourceLoader = config.resourceLoader;
|
|
268
275
|
this._customTools = config.customTools ?? [];
|
|
@@ -316,6 +323,13 @@ export class AgentSession {
|
|
|
316
323
|
retryTaskNotifications() {
|
|
317
324
|
this._tasksHost.delivery.retry();
|
|
318
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* Tell the session a background task's completion reached its consumer outside automatic
|
|
328
|
+
* delivery, such as a direct SDK waiter that read the result. It stops waiting to notify the model.
|
|
329
|
+
*/
|
|
330
|
+
acknowledgeTaskDelivery(taskId) {
|
|
331
|
+
this._tasksHost.acknowledgeDelivery(taskId);
|
|
332
|
+
}
|
|
319
333
|
/**
|
|
320
334
|
* Run a lifecycle operation with delivery paused across its asynchronous gaps.
|
|
321
335
|
* Lifecycle methods are thin shells over upstream bodies so those keep upstream's shape.
|
|
@@ -770,6 +784,82 @@ export class AgentSession {
|
|
|
770
784
|
for (const l of this._eventListeners) {
|
|
771
785
|
l(event);
|
|
772
786
|
}
|
|
787
|
+
// Compaction runs outside agent runs, so its start is what leaves quiescence.
|
|
788
|
+
if (event.type === "compaction_start")
|
|
789
|
+
this._updateQuiescence();
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* Whether nothing more will happen without new input. Queued user input only matters during a
|
|
793
|
+
* run; left in the queue while idle it waits for the next prompt, and it also blocks automatic
|
|
794
|
+
* delivery, so completions that cannot start a turn do not count.
|
|
795
|
+
*/
|
|
796
|
+
_computeQuiescent() {
|
|
797
|
+
if (this._isAgentRunActive ||
|
|
798
|
+
this._isEmittingAgentSettled ||
|
|
799
|
+
this._deferredSettledActions.length > 0 ||
|
|
800
|
+
this._pendingCustomMessages.length > 0 ||
|
|
801
|
+
this.isCompacting ||
|
|
802
|
+
this.isRetrying) {
|
|
803
|
+
return false;
|
|
804
|
+
}
|
|
805
|
+
if (this._tasksHost.runningBackground().length > 0)
|
|
806
|
+
return false;
|
|
807
|
+
const inputBlocksDelivery = this.pendingMessageCount > 0 || this.agent.hasQueuedMessages();
|
|
808
|
+
return !(this.model !== undefined && !inputBlocksDelivery && this._tasksHost.delivery.hasDeliverableWork());
|
|
809
|
+
}
|
|
810
|
+
/** Whether the session is quiescent now. See {@link AgentSessionEvent} `session_quiescent`. */
|
|
811
|
+
get isQuiescent() {
|
|
812
|
+
return !this._quiescenceDisposed && this._computeQuiescent();
|
|
813
|
+
}
|
|
814
|
+
_updateQuiescence() {
|
|
815
|
+
if (this._quiescenceDisposed)
|
|
816
|
+
return;
|
|
817
|
+
const quiescent = this._computeQuiescent();
|
|
818
|
+
const entered = quiescent && !this._quiescent;
|
|
819
|
+
this._quiescent = quiescent;
|
|
820
|
+
if (!quiescent)
|
|
821
|
+
return;
|
|
822
|
+
if (entered)
|
|
823
|
+
this._emit({ type: "session_quiescent" });
|
|
824
|
+
// A listener may have started new work.
|
|
825
|
+
if (!this._quiescent)
|
|
826
|
+
return;
|
|
827
|
+
for (const waiter of [...this._quiescenceWaiters])
|
|
828
|
+
waiter.resolve();
|
|
829
|
+
}
|
|
830
|
+
/**
|
|
831
|
+
* Resolve once the session is quiescent: no run, compaction, retry or branch summary, no
|
|
832
|
+
* unsettled background task, and no background completion still to be delivered (a failed
|
|
833
|
+
* delivery does not count: it retries only on the next input). Unlike {@link waitForIdle} this
|
|
834
|
+
* also waits for the turns that background completions start. Rejects when `signal` aborts or
|
|
835
|
+
* the session is disposed.
|
|
836
|
+
*/
|
|
837
|
+
waitForQuiescence(signal) {
|
|
838
|
+
if (this._quiescenceDisposed)
|
|
839
|
+
return Promise.reject(new Error("The session was disposed"));
|
|
840
|
+
if (signal?.aborted)
|
|
841
|
+
return Promise.reject(signal.reason);
|
|
842
|
+
if (this._computeQuiescent())
|
|
843
|
+
return Promise.resolve();
|
|
844
|
+
return new Promise((resolve, reject) => {
|
|
845
|
+
const waiter = {
|
|
846
|
+
resolve: () => {
|
|
847
|
+
cleanup();
|
|
848
|
+
resolve();
|
|
849
|
+
},
|
|
850
|
+
reject: (reason) => {
|
|
851
|
+
cleanup();
|
|
852
|
+
reject(reason);
|
|
853
|
+
},
|
|
854
|
+
};
|
|
855
|
+
const onAbort = () => waiter.reject(signal?.reason);
|
|
856
|
+
const cleanup = () => {
|
|
857
|
+
this._quiescenceWaiters.delete(waiter);
|
|
858
|
+
signal?.removeEventListener("abort", onAbort);
|
|
859
|
+
};
|
|
860
|
+
this._quiescenceWaiters.add(waiter);
|
|
861
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
862
|
+
});
|
|
773
863
|
}
|
|
774
864
|
_emitQueueUpdate() {
|
|
775
865
|
this._emit({
|
|
@@ -792,6 +882,7 @@ export class AgentSession {
|
|
|
792
882
|
return this._idleWaitPromise;
|
|
793
883
|
}
|
|
794
884
|
_resolveIdleWaitIfIdle() {
|
|
885
|
+
this._updateQuiescence();
|
|
795
886
|
if (!this.isIdle || !this._resolveIdleWait) {
|
|
796
887
|
return;
|
|
797
888
|
}
|
|
@@ -1057,7 +1148,11 @@ export class AgentSession {
|
|
|
1057
1148
|
* Call this when completely done with the session.
|
|
1058
1149
|
*/
|
|
1059
1150
|
dispose() {
|
|
1151
|
+
this._quiescenceDisposed = true;
|
|
1152
|
+
const waiters = [...this._quiescenceWaiters];
|
|
1060
1153
|
this._tasksHost.dispose();
|
|
1154
|
+
for (const waiter of waiters)
|
|
1155
|
+
waiter.reject(new Error("The session was disposed"));
|
|
1061
1156
|
try {
|
|
1062
1157
|
this.abortRetry();
|
|
1063
1158
|
this.abortCompaction();
|
|
@@ -1267,6 +1362,7 @@ export class AgentSession {
|
|
|
1267
1362
|
}
|
|
1268
1363
|
this._hiddenDeclarations = hidden;
|
|
1269
1364
|
this.agent.state.tools = declared;
|
|
1365
|
+
this._tasksHost.toolsChanged();
|
|
1270
1366
|
return declared;
|
|
1271
1367
|
}
|
|
1272
1368
|
/** Whether compaction or branch summarization is currently running */
|
|
@@ -1480,6 +1576,7 @@ export class AgentSession {
|
|
|
1480
1576
|
async _startRun(trigger, onStarted) {
|
|
1481
1577
|
this._isAgentRunActive = true;
|
|
1482
1578
|
this._agentRunAbortRequested = false;
|
|
1579
|
+
this._updateQuiescence();
|
|
1483
1580
|
let messages;
|
|
1484
1581
|
try {
|
|
1485
1582
|
messages = await this._prepareRun(trigger);
|
|
@@ -3112,8 +3209,7 @@ export class AgentSession {
|
|
|
3112
3209
|
async _reloadBody(options) {
|
|
3113
3210
|
const oldRunner = this._extensionRunner;
|
|
3114
3211
|
const previousFlagValues = oldRunner.getFlagValues();
|
|
3115
|
-
this.
|
|
3116
|
-
await Promise.all([this.tasks.shutdown(), this.abort()]);
|
|
3212
|
+
await Promise.all([this._tasksHost.shutdown(), this.abort()]);
|
|
3117
3213
|
await emitSessionShutdownEvent(oldRunner, { type: "session_shutdown", reason: "reload" });
|
|
3118
3214
|
oldRunner.invalidate();
|
|
3119
3215
|
const getDefaultTools = () => this._usesDefaultTools
|
|
@@ -3415,6 +3511,7 @@ export class AgentSession {
|
|
|
3415
3511
|
const resumeBackground = this.pauseTaskNotifications();
|
|
3416
3512
|
// Set up abort controller for summarization
|
|
3417
3513
|
this._branchSummaryAbortController = new AbortController();
|
|
3514
|
+
this._updateQuiescence();
|
|
3418
3515
|
try {
|
|
3419
3516
|
let extensionSummary;
|
|
3420
3517
|
let fromExtension = false;
|