@sema-agent/core 1.282.0 → 1.284.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/subagent.d.ts +8 -1
- package/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +120 -30
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/checkpoint-store.d.ts +10 -2
- package/dist/core/checkpoint-store.d.ts.map +1 -1
- package/dist/core/checkpoint-store.js.map +1 -1
- package/dist/core/memory-engine/sync-client.d.ts +9 -0
- package/dist/core/memory-engine/sync-client.d.ts.map +1 -1
- package/dist/core/memory-engine/sync-client.js +53 -3
- package/dist/core/memory-engine/sync-client.js.map +1 -1
- package/dist/core/runner/runtask.d.ts +5 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +129 -32
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/task-notification.d.ts +11 -2
- package/dist/core/task-notification.d.ts.map +1 -1
- package/dist/core/task-notification.js +17 -4
- package/dist/core/task-notification.js.map +1 -1
- package/dist/core/task-registry.d.ts +5 -1
- package/dist/core/task-registry.d.ts.map +1 -1
- package/dist/core/task-registry.js +76 -0
- package/dist/core/task-registry.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,11 +2,12 @@ export type TaskNotificationStatus = "completed" | "failed" | "killed" | "cancel
|
|
|
2
2
|
export type SystemInjectionPriority = "now" | "next" | "later";
|
|
3
3
|
export interface TaskNotificationPayload {
|
|
4
4
|
task_id: string;
|
|
5
|
-
task_type: "background_bash" | "workflow" | "background_agent" | "monitor";
|
|
5
|
+
task_type: "background_bash" | "workflow" | "background_agent" | "monitor" | "external";
|
|
6
6
|
toolUseId?: string;
|
|
7
7
|
status: TaskNotificationStatus;
|
|
8
8
|
lines?: string[];
|
|
9
9
|
seq?: number;
|
|
10
|
+
source?: string;
|
|
10
11
|
stoppedBy?: "user" | "parent" | "system" | (string & {});
|
|
11
12
|
summary: string;
|
|
12
13
|
exitCode?: number;
|
|
@@ -19,13 +20,21 @@ export interface TaskNotificationPayload {
|
|
|
19
20
|
editedFiles?: import("../agents/subagent-steps.js").SubagentEditedFile[];
|
|
20
21
|
resumable?: boolean;
|
|
21
22
|
}
|
|
23
|
+
export interface ExternalNotificationInput {
|
|
24
|
+
task_id: string;
|
|
25
|
+
status: TaskNotificationStatus;
|
|
26
|
+
summary: string;
|
|
27
|
+
result?: string;
|
|
28
|
+
seq?: number;
|
|
29
|
+
source?: string;
|
|
30
|
+
}
|
|
22
31
|
export interface SystemInjection<TPayload = unknown> {
|
|
23
32
|
kind: "task_notification";
|
|
24
33
|
priority: SystemInjectionPriority;
|
|
25
34
|
dedupKey: string;
|
|
26
35
|
payload: TPayload;
|
|
27
36
|
}
|
|
28
|
-
export declare function taskNotificationDedupKey(n: Pick<TaskNotificationPayload, "task_id" | "status" | "seq">): string;
|
|
37
|
+
export declare function taskNotificationDedupKey(n: Pick<TaskNotificationPayload, "task_id" | "task_type" | "status" | "seq">): string;
|
|
29
38
|
export declare function renderTaskNotificationXml(n: TaskNotificationPayload): string;
|
|
30
39
|
export declare const MAX_PENDING_EVENTS_PER_TASK = 50;
|
|
31
40
|
export declare const MAX_PENDING_EVENTS_PER_SESSION = 200;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-notification.d.ts","sourceRoot":"","sources":["../../src/core/task-notification.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAC/F,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"task-notification.d.ts","sourceRoot":"","sources":["../../src/core/task-notification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { sanitizeUntrustedText } from "./untrusted-text.js";
|
|
1
|
+
import { inlineUntrusted, sanitizeUntrustedText } from "./untrusted-text.js";
|
|
2
2
|
const TASK_NOTIFICATION_TAGS = [
|
|
3
3
|
"task-notification",
|
|
4
4
|
"task-id",
|
|
@@ -32,8 +32,13 @@ function tag(name, value) {
|
|
|
32
32
|
return `<${name}>${text}</${name}>`;
|
|
33
33
|
}
|
|
34
34
|
export function taskNotificationDedupKey(n) {
|
|
35
|
-
|
|
35
|
+
const lane = n.task_type === "external" ? "external:" : "";
|
|
36
|
+
return `task_notification:${lane}${n.task_id}:${n.status}${n.seq !== undefined ? `:${n.seq}` : ""}`;
|
|
36
37
|
}
|
|
38
|
+
function attrEscape(value) {
|
|
39
|
+
return value.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
40
|
+
}
|
|
41
|
+
const EXTERNAL_SOURCE_MAX = 120;
|
|
37
42
|
export function renderTaskNotificationXml(n) {
|
|
38
43
|
const usage = n.usage === undefined
|
|
39
44
|
? undefined
|
|
@@ -45,8 +50,11 @@ export function renderTaskNotificationXml(n) {
|
|
|
45
50
|
return undefined;
|
|
46
51
|
}
|
|
47
52
|
})();
|
|
53
|
+
const open = n.task_type === "external"
|
|
54
|
+
? `<task-notification type="external"${n.source !== undefined ? ` from="${attrEscape(inlineUntrusted(n.source, EXTERNAL_SOURCE_MAX))}"` : ""}>`
|
|
55
|
+
: "<task-notification>";
|
|
48
56
|
return [
|
|
49
|
-
|
|
57
|
+
open,
|
|
50
58
|
tag("task-id", n.task_id),
|
|
51
59
|
tag("task-type", n.task_type),
|
|
52
60
|
...(n.toolUseId !== undefined ? [tag("tool-use-id", n.toolUseId)] : []),
|
|
@@ -83,9 +91,13 @@ export class PendingSessionNotifications {
|
|
|
83
91
|
this.droppedSessions += 1;
|
|
84
92
|
}
|
|
85
93
|
}
|
|
86
|
-
s = { items: [], dropped: new Map() };
|
|
94
|
+
s = { items: [], dropped: new Map(), keys: new Set() };
|
|
87
95
|
this.sessions.set(sessionId, s);
|
|
88
96
|
}
|
|
97
|
+
const key = taskNotificationDedupKey(n);
|
|
98
|
+
if (s.keys.has(key))
|
|
99
|
+
return;
|
|
100
|
+
s.keys.add(key);
|
|
89
101
|
s.items.push(n);
|
|
90
102
|
let mine = 0;
|
|
91
103
|
for (const i of s.items)
|
|
@@ -113,6 +125,7 @@ function evictOldest(s, match) {
|
|
|
113
125
|
if (idx === -1)
|
|
114
126
|
return;
|
|
115
127
|
const victim = s.items.splice(idx, 1)[0];
|
|
128
|
+
s.keys.delete(taskNotificationDedupKey(victim));
|
|
116
129
|
const prior = s.dropped.get(victim.task_id);
|
|
117
130
|
s.dropped.set(victim.task_id, { count: (prior?.count ?? 0) + 1, taskType: victim.task_type });
|
|
118
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-notification.js","sourceRoot":"","sources":["../../src/core/task-notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"task-notification.js","sourceRoot":"","sources":["../../src/core/task-notification.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,6 @@ export interface SemaTaskHandle {
|
|
|
31
31
|
updatedAt: number;
|
|
32
32
|
outputFile?: string;
|
|
33
33
|
outputOffset?: number;
|
|
34
|
-
notified?: boolean;
|
|
35
34
|
}
|
|
36
35
|
export interface TaskKind {
|
|
37
36
|
type: SemaTaskType;
|
|
@@ -110,6 +109,7 @@ export declare function clipTaskOutput(s: string, fullOutputPath?: string): stri
|
|
|
110
109
|
export declare class TaskRegistry {
|
|
111
110
|
private handles;
|
|
112
111
|
private sessionReapHooks;
|
|
112
|
+
private bgQuiescenceWatchers;
|
|
113
113
|
private legacyToTaskId;
|
|
114
114
|
mintTaskId(type: SemaTaskType): string;
|
|
115
115
|
registerBackgroundBash(input: RegisterBackgroundBashInput): string;
|
|
@@ -139,6 +139,10 @@ export declare class TaskRegistry {
|
|
|
139
139
|
reapSessionBackground(sessionId: string, scope?: string): number;
|
|
140
140
|
reapAllSessionBackground(): number;
|
|
141
141
|
onSessionReap(hook: (sessionId: string, scope?: string) => void): () => void;
|
|
142
|
+
countRunningBackgroundForOwner(owner: string): number;
|
|
143
|
+
private static readonly BG_QUIESCENCE_WATCHERS_MAX;
|
|
144
|
+
onBackgroundQuiescence(owner: string, cb: (reason: "quiescent" | "evicted") => void): () => void;
|
|
145
|
+
private pokeBgQuiescence;
|
|
142
146
|
private notifyTerminalOnce;
|
|
143
147
|
private startBashWatcher;
|
|
144
148
|
sessionResidentShellIds(sessionId: string, env: unknown): BackgroundShellId[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-registry.d.ts","sourceRoot":"","sources":["../../src/core/task-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAsB,KAAK,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACnH,OAAO,EAAwB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGtF,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,UAAU,GAAG,kBAAkB,GAAG,SAAS,CAAC;AAQ3F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACtE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AACrG,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IACjC,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,UAAU,CAAC;IAGvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"task-registry.d.ts","sourceRoot":"","sources":["../../src/core/task-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -231,6 +231,7 @@ function formatWorkflowRun(run) {
|
|
|
231
231
|
export class TaskRegistry {
|
|
232
232
|
handles = new Map();
|
|
233
233
|
sessionReapHooks = new Set();
|
|
234
|
+
bgQuiescenceWatchers = new Map();
|
|
234
235
|
legacyToTaskId = new Map();
|
|
235
236
|
mintTaskId(type) {
|
|
236
237
|
const prefix = TASK_PREFIX[type];
|
|
@@ -380,6 +381,7 @@ export class TaskRegistry {
|
|
|
380
381
|
handle.error = outcome.error;
|
|
381
382
|
}
|
|
382
383
|
handle.updatedAt = Date.now();
|
|
384
|
+
this.pokeBgQuiescence(handle.owner);
|
|
383
385
|
return outcome.status;
|
|
384
386
|
}
|
|
385
387
|
abortBackgroundAgentsForOwner(access, opts) {
|
|
@@ -525,6 +527,7 @@ export class TaskRegistry {
|
|
|
525
527
|
this.settleBackgroundAgent(handle.id, { status: "killed", error: "session released" });
|
|
526
528
|
reaped++;
|
|
527
529
|
}
|
|
530
|
+
this.pokeBgQuiescence(sessionId);
|
|
528
531
|
for (const hook of this.sessionReapHooks) {
|
|
529
532
|
try {
|
|
530
533
|
hook(sessionId, scope);
|
|
@@ -554,6 +557,66 @@ export class TaskRegistry {
|
|
|
554
557
|
this.sessionReapHooks.add(hook);
|
|
555
558
|
return () => void this.sessionReapHooks.delete(hook);
|
|
556
559
|
}
|
|
560
|
+
countRunningBackgroundForOwner(owner) {
|
|
561
|
+
let n = 0;
|
|
562
|
+
for (const handle of this.handles.values()) {
|
|
563
|
+
if (handle.type !== "background_bash" && handle.type !== "monitor" && handle.type !== "background_agent")
|
|
564
|
+
continue;
|
|
565
|
+
if (handle.status === "running" && handle.owner === owner)
|
|
566
|
+
n++;
|
|
567
|
+
}
|
|
568
|
+
return n;
|
|
569
|
+
}
|
|
570
|
+
static BG_QUIESCENCE_WATCHERS_MAX = 1_024;
|
|
571
|
+
onBackgroundQuiescence(owner, cb) {
|
|
572
|
+
let set = this.bgQuiescenceWatchers.get(owner);
|
|
573
|
+
if (set === undefined) {
|
|
574
|
+
if (this.bgQuiescenceWatchers.size >= TaskRegistry.BG_QUIESCENCE_WATCHERS_MAX) {
|
|
575
|
+
const oldest = this.bgQuiescenceWatchers.keys().next().value;
|
|
576
|
+
if (oldest !== undefined) {
|
|
577
|
+
const victims = this.bgQuiescenceWatchers.get(oldest);
|
|
578
|
+
this.bgQuiescenceWatchers.delete(oldest);
|
|
579
|
+
queueMicrotask(() => {
|
|
580
|
+
for (const victim of victims) {
|
|
581
|
+
try {
|
|
582
|
+
victim("evicted");
|
|
583
|
+
}
|
|
584
|
+
catch {
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
set = new Set();
|
|
591
|
+
this.bgQuiescenceWatchers.set(owner, set);
|
|
592
|
+
}
|
|
593
|
+
set.add(cb);
|
|
594
|
+
return () => {
|
|
595
|
+
const s = this.bgQuiescenceWatchers.get(owner);
|
|
596
|
+
if (s !== undefined) {
|
|
597
|
+
s.delete(cb);
|
|
598
|
+
if (s.size === 0)
|
|
599
|
+
this.bgQuiescenceWatchers.delete(owner);
|
|
600
|
+
}
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
pokeBgQuiescence(owner) {
|
|
604
|
+
if (owner === undefined)
|
|
605
|
+
return;
|
|
606
|
+
const set = this.bgQuiescenceWatchers.get(owner);
|
|
607
|
+
if (set === undefined || set.size === 0)
|
|
608
|
+
return;
|
|
609
|
+
if (this.countRunningBackgroundForOwner(owner) > 0)
|
|
610
|
+
return;
|
|
611
|
+
this.bgQuiescenceWatchers.delete(owner);
|
|
612
|
+
for (const cb of set) {
|
|
613
|
+
try {
|
|
614
|
+
cb("quiescent");
|
|
615
|
+
}
|
|
616
|
+
catch {
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
557
620
|
notifyTerminalOnce(handle, send) {
|
|
558
621
|
if (handle.terminalNotified === true)
|
|
559
622
|
return;
|
|
@@ -563,6 +626,7 @@ export class TaskRegistry {
|
|
|
563
626
|
}
|
|
564
627
|
catch {
|
|
565
628
|
}
|
|
629
|
+
this.pokeBgQuiescence(handle.owner);
|
|
566
630
|
}
|
|
567
631
|
startBashWatcher(id, onTerminal) {
|
|
568
632
|
const handle = this.handles.get(id);
|
|
@@ -1103,11 +1167,14 @@ export class TaskRegistry {
|
|
|
1103
1167
|
}
|
|
1104
1168
|
clearBackgroundForOwner(access) {
|
|
1105
1169
|
let deleted = 0;
|
|
1170
|
+
const evictedRunningOwners = new Set();
|
|
1106
1171
|
for (const [id, handle] of this.handles) {
|
|
1107
1172
|
if (handle.type === "monitor" && !handle.sessionScoped && canAccess(handle, access)) {
|
|
1108
1173
|
if (monitorInTimeoutWindow(handle))
|
|
1109
1174
|
continue;
|
|
1110
1175
|
this.handles.delete(id);
|
|
1176
|
+
if (handle.status === "running" && handle.owner !== undefined)
|
|
1177
|
+
evictedRunningOwners.add(handle.owner);
|
|
1111
1178
|
if (handle.watcher !== undefined) {
|
|
1112
1179
|
handle.timers.clearInterval(handle.watcher);
|
|
1113
1180
|
handle.watcher = undefined;
|
|
@@ -1120,11 +1187,15 @@ export class TaskRegistry {
|
|
|
1120
1187
|
if (handle.sessionScoped)
|
|
1121
1188
|
continue;
|
|
1122
1189
|
this.handles.delete(id);
|
|
1190
|
+
if (handle.status === "running" && handle.owner !== undefined)
|
|
1191
|
+
evictedRunningOwners.add(handle.owner);
|
|
1123
1192
|
this.legacyToTaskId.delete(String(handle.shellId));
|
|
1124
1193
|
if (handle.watcher !== undefined)
|
|
1125
1194
|
clearInterval(handle.watcher);
|
|
1126
1195
|
deleted++;
|
|
1127
1196
|
}
|
|
1197
|
+
for (const owner of evictedRunningOwners)
|
|
1198
|
+
this.pokeBgQuiescence(owner);
|
|
1128
1199
|
return deleted;
|
|
1129
1200
|
}
|
|
1130
1201
|
resolveInternal(id, access) {
|
|
@@ -1326,6 +1397,7 @@ export class TaskRegistry {
|
|
|
1326
1397
|
handle.stoppedBy = handle.stopSource ?? "parent";
|
|
1327
1398
|
handle.status = "killed";
|
|
1328
1399
|
handle.updatedAt = Date.now();
|
|
1400
|
+
this.pokeBgQuiescence(handle.owner);
|
|
1329
1401
|
return {
|
|
1330
1402
|
content: `Terminated ${handle.id} (the process was already gone).`,
|
|
1331
1403
|
details: { task_id: handle.id, type: "background_bash", status: "killed", retrieval_status: "success", stoppedBy: handle.stoppedBy },
|
|
@@ -1345,6 +1417,7 @@ export class TaskRegistry {
|
|
|
1345
1417
|
handle.stoppedBy = handle.stopSource ?? "parent";
|
|
1346
1418
|
handle.status = "killed";
|
|
1347
1419
|
handle.updatedAt = Date.now();
|
|
1420
|
+
this.pokeBgQuiescence(handle.owner);
|
|
1348
1421
|
return {
|
|
1349
1422
|
content: `Terminated ${handle.id}.`,
|
|
1350
1423
|
details: { task_id: handle.id, type: "background_bash", status: "killed", retrieval_status: "success", stoppedBy: handle.stoppedBy },
|
|
@@ -1405,6 +1478,7 @@ export class TaskRegistry {
|
|
|
1405
1478
|
handle.stoppedBy = handle.stopSource ?? "parent";
|
|
1406
1479
|
handle.status = "killed";
|
|
1407
1480
|
handle.updatedAt = Date.now();
|
|
1481
|
+
this.pokeBgQuiescence(handle.owner);
|
|
1408
1482
|
return {
|
|
1409
1483
|
content: `Terminated ${handle.id} (the process was already gone).`,
|
|
1410
1484
|
details: { task_id: handle.id, type: "monitor", status: "killed", retrieval_status: "success", stoppedBy: handle.stoppedBy },
|
|
@@ -1423,6 +1497,7 @@ export class TaskRegistry {
|
|
|
1423
1497
|
handle.stoppedBy = handle.stopSource ?? "parent";
|
|
1424
1498
|
handle.status = "killed";
|
|
1425
1499
|
handle.updatedAt = Date.now();
|
|
1500
|
+
this.pokeBgQuiescence(handle.owner);
|
|
1426
1501
|
}
|
|
1427
1502
|
return {
|
|
1428
1503
|
content: `Terminated ${handle.id}.`,
|
|
@@ -1467,6 +1542,7 @@ ${clipTaskOutput(handle.result, handle.outputFile)}` : "(no result text)"}`;
|
|
|
1467
1542
|
handle.status = "killed";
|
|
1468
1543
|
handle.stoppedBy = handle.stopSource ?? "parent";
|
|
1469
1544
|
handle.updatedAt = Date.now();
|
|
1545
|
+
this.pokeBgQuiescence(handle.owner);
|
|
1470
1546
|
}
|
|
1471
1547
|
return {
|
|
1472
1548
|
content: `Terminated ${handle.id}.`,
|