@zq-silk/yui 0.2.0 → 0.4.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/ARCHITECTURE.md +603 -133
- package/README.md +806 -31
- package/dist/agent/agent.js +2 -1
- package/dist/agent/argumentPolicy.js +3 -1
- package/dist/agent/launchEnvironment.js +106 -0
- package/dist/agent/managedRuntimeEnvironment.js +34 -0
- package/dist/brief/taskBrief.js +11 -1
- package/dist/cli/agentConfigurationPicker.js +287 -0
- package/dist/cli/commandCatalog.js +488 -60
- package/dist/cli/completion.js +146 -22
- package/dist/cli/helpRenderer.js +3 -1
- package/dist/cli/interactionCandidates.js +53 -15
- package/dist/cli/interactionPolicy.js +267 -30
- package/dist/cli/interactiveSelection.js +6 -2
- package/dist/cli/invocationRouter.js +5 -1
- package/dist/cli/operatorWizard.js +87 -0
- package/dist/cli/roleOptionCatalog.js +1 -0
- package/dist/cli/roleWizard.js +185 -21
- package/dist/cli/updateCommand.js +62 -19
- package/dist/cli/updateOrchestrator.js +539 -0
- package/dist/cli/updatePorts.js +1119 -0
- package/dist/cli/upgradeCommand.js +112 -0
- package/dist/cli.js +1420 -86
- package/dist/commands/agentCommands.js +146 -3
- package/dist/commands/configCommands.js +126 -0
- package/dist/commands/controllerCommands.js +365 -0
- package/dist/commands/globalRoleCommands.js +168 -126
- package/dist/commands/jobCommands.js +18 -8
- package/dist/commands/operatorCommands.js +159 -9
- package/dist/commands/profileCommands.js +203 -0
- package/dist/commands/projectCommands.js +650 -0
- package/dist/commands/roleConfiguration.js +85 -24
- package/dist/commands/roleRuntimeGuard.js +12 -0
- package/dist/commands/roleSkillValidation.js +47 -0
- package/dist/commands/taskActor.js +127 -0
- package/dist/commands/taskCommands.js +4201 -313
- package/dist/commands/taskCompletionGate.js +131 -0
- package/dist/commands/taskContextCommand.js +244 -30
- package/dist/commands/taskInputCommands.js +177 -59
- package/dist/commands/taskIntegrationCommands.js +303 -0
- package/dist/commands/taskOverviewCommand.js +363 -0
- package/dist/commands/taskRoleRuntimeStatus.js +125 -19
- package/dist/commands/textInput.js +15 -0
- package/dist/completion/completionInstaller.js +26 -22
- package/dist/config/yuiConfig.js +4 -3
- package/dist/context/dispatchContext.js +90 -38
- package/dist/context/roleSessionContext.js +119 -0
- package/dist/controller/claudeLifecycleHook.js +203 -0
- package/dist/controller/clientRuntime.js +408 -56
- package/dist/controller/codexLifecycleHook.js +108 -0
- package/dist/controller/controller.js +1089 -32
- package/dist/controller/domainIdentity.js +505 -0
- package/dist/controller/ephemeralResourceReaper.js +131 -0
- package/dist/controller/fileSchedulerStoreAdapter.js +2153 -103
- package/dist/controller/providerHookRunFence.js +127 -0
- package/dist/controller/resourceCleanupLinux.js +286 -0
- package/dist/controller/resourceInventory.js +531 -0
- package/dist/controller/resourceInventoryLinux.js +610 -0
- package/dist/controller/runtime.js +629 -10
- package/dist/controller/runtimeEventInbox.js +564 -0
- package/dist/controller/runtimeEventProcessor.js +248 -0
- package/dist/controller/runtimeLaunchCoordinator.js +477 -0
- package/dist/controller/sessionNotify.js +121 -78
- package/dist/coordination/deadlineScheduler.js +15 -0
- package/dist/coordination/mailboxScheduler.js +108 -0
- package/dist/coordination/workMailbox.js +329 -0
- package/dist/coordination/workMailboxQueue.js +86 -0
- package/dist/core/controllerClient.js +19 -5
- package/dist/core/controllerEndpoint.js +37 -0
- package/dist/core/controllerServer.js +218 -10
- package/dist/core/protocol.js +6 -2
- package/dist/decision/decision.js +2 -1
- package/dist/doctor/doctor.js +681 -32
- package/dist/domain/validation.js +53 -0
- package/dist/errors/cliError.js +5 -3
- package/dist/event/taskEvent.js +7 -3
- package/dist/execution/codexThreadNaming.js +160 -0
- package/dist/execution/executionGroup.js +579 -0
- package/dist/executor/agentAdapter.js +255 -40
- package/dist/executor/agentConfigurationCatalog.js +326 -0
- package/dist/executor/agentConfigurationProbe.js +506 -0
- package/dist/executor/agentExecutor.js +625 -10
- package/dist/executor/codexConfigConflict.js +290 -0
- package/dist/executor/effectiveLaunch.js +340 -0
- package/dist/executor/executorRegistry.js +238 -36
- package/dist/executor/fileRoleLaunchPlanner.js +550 -40
- package/dist/executor/turnCompletion.js +126 -0
- package/dist/input/inputRequest.js +30 -9
- package/dist/integration/changeSet.js +36 -0
- package/dist/integration/checkResult.js +24 -0
- package/dist/integration/gitIntegrationService.js +695 -0
- package/dist/integration/integrationAttempt.js +142 -0
- package/dist/interaction/operatorPresentation.js +96 -0
- package/dist/lifecycle/canonicalLifecycleEvent.js +342 -0
- package/dist/lifecycle/exactRunTerminalization.js +572 -0
- package/dist/lifecycle/providerLifecycleMapping.js +190 -0
- package/dist/lifecycle/taskRoleSessionReset.js +124 -0
- package/dist/message/message.js +23 -7
- package/dist/milestone/milestone.js +2 -1
- package/dist/operator/operatorSessionHistory.js +124 -0
- package/dist/output/agentConfigurationPresentation.js +43 -0
- package/dist/output/rolePresentation.js +34 -10
- package/dist/output/terminal.js +8 -0
- package/dist/output/timePresentation.js +55 -0
- package/dist/profile/agentProfile.js +128 -0
- package/dist/repository/gitWorkspace.js +578 -24
- package/dist/repository/project.js +213 -0
- package/dist/repository/taskWorkspaceCoordinator.js +392 -0
- package/dist/repository/taskWorkspacePreparer.js +1688 -191
- package/dist/review/reviewConfig.js +11 -0
- package/dist/review/reviewRound.js +399 -0
- package/dist/review/taskFinalReviewContract.js +90 -0
- package/dist/role/role.js +124 -23
- package/dist/run/agentRun.js +155 -12
- package/dist/run/runIdentity.js +82 -0
- package/dist/runtime/exactControlPlane.js +472 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/lifecycleReservation.js +38 -0
- package/dist/runtime/ports.js +11 -0
- package/dist/runtime/preallocatedNativeSession.js +13 -0
- package/dist/runtime/promptEnvelope.js +30 -0
- package/dist/runtime/runtimeBinding.js +31 -0
- package/dist/runtime/runtimeOwner.js +14 -0
- package/dist/runtime/sessionLaunchRequest.js +62 -0
- package/dist/runtime/sessionTitle.js +54 -0
- package/dist/runtime/taskRuntimeIsolation.js +643 -0
- package/dist/runtime/tmuxAdapters.js +315 -0
- package/dist/runtime/turnCompletion.js +3 -0
- package/dist/runtime/validation.js +23 -0
- package/dist/scheduler/activeRoleRunDelivery.js +342 -32
- package/dist/scheduler/activeTaskProgress.js +63 -0
- package/dist/scheduler/leaderFailure.js +2 -1
- package/dist/scheduler/leaderWakeupProcessor.js +307 -66
- package/dist/scheduler/operatorInputNotificationProcessor.js +109 -46
- package/dist/scheduler/operatorNotification.js +44 -2
- package/dist/scheduler/ports.js +28 -1
- package/dist/scheduler/roleRunLiveness.js +131 -25
- package/dist/scheduler/roleRunStall.js +951 -0
- package/dist/scheduler/taskExecutionProjection.js +544 -0
- package/dist/scheduler/wakeupQueue.js +3 -0
- package/dist/setup/setupCommand.js +302 -52
- package/dist/storage/compatibleTaskStore.js +102 -0
- package/dist/storage/migration/baseline.js +78 -0
- package/dist/storage/migration/classifier.js +51 -0
- package/dist/storage/migration/compatibleCodec.js +53 -0
- package/dist/storage/migration/engine.js +147 -0
- package/dist/storage/migration/index.js +33 -0
- package/dist/storage/migration/planner.js +154 -0
- package/dist/storage/migration/productionRegistry.js +486 -0
- package/dist/storage/migration/registry.js +169 -0
- package/dist/storage/migration/report.js +54 -0
- package/dist/storage/migration/types.js +31 -0
- package/dist/storage/storageSchema.js +147 -123
- package/dist/storage/storageVersions.js +11 -0
- package/dist/storage/taskStore.js +1793 -197
- package/dist/storage/upgrade/homeClassification.js +156 -0
- package/dist/storage/upgrade/homeMigrationTarget.js +595 -0
- package/dist/storage/upgrade/offlineUpgradeInventory.js +315 -0
- package/dist/storage/upgrade/productionMigrationRegistry.js +6 -0
- package/dist/storage/upgrade/recordVersionScan.js +176 -0
- package/dist/storage/upgrade/recordVersions.js +159 -0
- package/dist/storage/upgrade/switchProgress.js +80 -0
- package/dist/storage/upgrade/upgradeOrchestrator.js +948 -0
- package/dist/storage/upgrade/upgradeReceipt.js +161 -0
- package/dist/storage/upgradeCoordination.js +186 -0
- package/dist/storage/upgradeFence.js +366 -0
- package/dist/task/task.js +132 -26
- package/dist/task/taskRecordReference.js +66 -0
- package/dist/tmux/commandExecutor.js +75 -2
- package/dist/tmux/tmuxManager.js +747 -49
- package/dist/version.js +23 -0
- package/dist/web/assets/assetManifest.js +62 -0
- package/dist/web/assets/client/app.js +631 -0
- package/dist/web/assets/client/components.js +605 -0
- package/dist/web/assets/client/dom.js +14 -0
- package/dist/web/assets/client/format.js +28 -0
- package/dist/web/assets/client/i18n.js +494 -0
- package/dist/web/assets/client/markdown.js +114 -0
- package/dist/web/assets/client/theme.js +32 -0
- package/dist/web/assets/client/view.js +458 -0
- package/dist/web/assets/fontData.js +12 -0
- package/dist/web/assets/fonts.js +12 -0
- package/dist/web/assets/shell.js +114 -0
- package/dist/web/assets/styles/cards.js +135 -0
- package/dist/web/assets/styles/layout.js +47 -0
- package/dist/web/assets/styles/markdown.js +29 -0
- package/dist/web/assets/styles/responsive.js +39 -0
- package/dist/web/assets/styles/tokens.js +101 -0
- package/dist/web/assets/styles/widgets.js +147 -0
- package/dist/web/tmuxWebTerminal.js +158 -0
- package/dist/web/webServer.js +463 -0
- package/dist/web/webSnapshot.js +148 -0
- package/dist/workItem/workItem.js +642 -23
- package/dist/workspace/gitChangeSetCapture.js +86 -0
- package/dist/workspace/workItemChangeSetManager.js +445 -0
- package/dist/worktree/managedWorkspace.js +202 -0
- package/docs/task-local-identity.md +62 -0
- package/i18n/README.zh-CN.md +406 -31
- package/package.json +10 -2
- package/skills/yui-leader/SKILL.md +601 -39
- package/skills/yui-operator/SKILL.md +255 -34
- package/skills/yui-reviewer/SKILL.md +57 -0
- package/skills/yui-worker/SKILL.md +214 -17
- package/dist/commands/repositoryCommands.js +0 -86
- package/dist/operator/operatorContext.js +0 -66
- package/dist/repository/repository.js +0 -55
- package/dist/scheduler/archivedTaskRuntime.js +0 -12
- package/dist/worktree/roleWorkspace.js +0 -62
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/** Folds immutable Hook facts one at a time before acknowledging them. */
|
|
2
|
+
export class FileRuntimeEventProcessor {
|
|
3
|
+
inbox;
|
|
4
|
+
observer;
|
|
5
|
+
options;
|
|
6
|
+
constructor(inbox, observer, options = {}) {
|
|
7
|
+
this.inbox = inbox;
|
|
8
|
+
this.observer = observer;
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
drain(now) {
|
|
12
|
+
const acknowledgedEventIds = [];
|
|
13
|
+
const deferred = [];
|
|
14
|
+
const failed = [];
|
|
15
|
+
let events;
|
|
16
|
+
try {
|
|
17
|
+
events = this.inbox.list();
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return { acknowledgedEventIds, deferred, failed: [{ error }] };
|
|
21
|
+
}
|
|
22
|
+
for (const event of events) {
|
|
23
|
+
try {
|
|
24
|
+
if (event.type === "native-turn-completed") {
|
|
25
|
+
const outcome = this.applyCodex(event, now);
|
|
26
|
+
if (outcome === "deferred") {
|
|
27
|
+
deferred.push(event);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (event.type === "claude-stop-failure") {
|
|
32
|
+
this.applyClaudeStopFailure(event, now);
|
|
33
|
+
}
|
|
34
|
+
else if (event.type === "native-session-lifecycle") {
|
|
35
|
+
const outcome = this.applySessionLifecycle(event, now);
|
|
36
|
+
if (outcome === "deferred") {
|
|
37
|
+
deferred.push(event);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (event.type === "native-turn-progress") {
|
|
42
|
+
const outcome = this.applyProviderTurnProgress(event, now);
|
|
43
|
+
if (outcome === "deferred") {
|
|
44
|
+
deferred.push(event);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const outcome = this.applyPromptAccepted(event, now);
|
|
50
|
+
if (outcome === "deferred") {
|
|
51
|
+
deferred.push(event);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
this.acknowledge(event.id, acknowledgedEventIds);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
failed.push({ eventId: event.id, error });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return { acknowledgedEventIds, deferred, failed };
|
|
62
|
+
}
|
|
63
|
+
applySessionLifecycle(event, now) {
|
|
64
|
+
const task = this.observer.getTask(event.taskId);
|
|
65
|
+
if (task === null || task.status !== "active")
|
|
66
|
+
return "obsolete";
|
|
67
|
+
if (this.observer.observeProviderSessionLifecycle === undefined)
|
|
68
|
+
return "obsolete";
|
|
69
|
+
const outcome = this.observer.observeProviderSessionLifecycle({
|
|
70
|
+
eventId: event.id,
|
|
71
|
+
taskId: event.taskId,
|
|
72
|
+
roleName: event.roleName,
|
|
73
|
+
agentId: event.agentId,
|
|
74
|
+
adapterId: event.adapterId,
|
|
75
|
+
launchId: event.launchId,
|
|
76
|
+
nativeSessionId: event.nativeSessionId,
|
|
77
|
+
...(event.runId === undefined ? {} : { runId: event.runId }),
|
|
78
|
+
...(event.sessionSource === undefined ? {} : { sessionSource: event.sessionSource })
|
|
79
|
+
}, now);
|
|
80
|
+
if (outcome === "applied") {
|
|
81
|
+
this.options.onTaskRuntimeApplied?.({
|
|
82
|
+
taskId: event.taskId,
|
|
83
|
+
roleName: event.roleName
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return outcome === "deferred" ? "deferred" : outcome;
|
|
87
|
+
}
|
|
88
|
+
applyPromptAccepted(event, now) {
|
|
89
|
+
const task = this.observer.getTask(event.taskId);
|
|
90
|
+
if (task === null || task.status !== "active")
|
|
91
|
+
return "obsolete";
|
|
92
|
+
if (this.observer.observeProviderPromptAccepted === undefined)
|
|
93
|
+
return "obsolete";
|
|
94
|
+
const outcome = this.observer.observeProviderPromptAccepted({
|
|
95
|
+
eventId: event.id,
|
|
96
|
+
taskId: event.taskId,
|
|
97
|
+
roleName: event.roleName,
|
|
98
|
+
agentId: event.agentId,
|
|
99
|
+
adapterId: event.adapterId,
|
|
100
|
+
launchId: event.launchId,
|
|
101
|
+
nativeSessionId: event.nativeSessionId,
|
|
102
|
+
runId: event.runId,
|
|
103
|
+
receiptId: event.receiptId
|
|
104
|
+
}, now);
|
|
105
|
+
if (outcome === "applied") {
|
|
106
|
+
this.options.onTaskRuntimeApplied?.({
|
|
107
|
+
taskId: event.taskId,
|
|
108
|
+
roleName: event.roleName
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return outcome === "deferred" ? "deferred" : outcome;
|
|
112
|
+
}
|
|
113
|
+
applyProviderTurnProgress(event, now) {
|
|
114
|
+
const task = this.observer.getTask(event.taskId);
|
|
115
|
+
if (task === null || task.status !== "active")
|
|
116
|
+
return "obsolete";
|
|
117
|
+
if (this.observer.observeProviderTurnProgress === undefined)
|
|
118
|
+
return "obsolete";
|
|
119
|
+
const outcome = this.observer.observeProviderTurnProgress({
|
|
120
|
+
eventId: event.id,
|
|
121
|
+
receivedAt: event.receivedAt,
|
|
122
|
+
taskId: event.taskId,
|
|
123
|
+
roleName: event.roleName,
|
|
124
|
+
agentId: event.agentId,
|
|
125
|
+
adapterId: event.adapterId,
|
|
126
|
+
launchId: event.launchId,
|
|
127
|
+
nativeSessionId: event.nativeSessionId,
|
|
128
|
+
runId: event.runId,
|
|
129
|
+
progressId: event.progressId,
|
|
130
|
+
...(event.sequence === undefined ? {} : { sequence: event.sequence })
|
|
131
|
+
}, now);
|
|
132
|
+
return outcome === "deferred" ? "deferred" : "applied";
|
|
133
|
+
}
|
|
134
|
+
applyCodex(event, now) {
|
|
135
|
+
if (event.scope === "task") {
|
|
136
|
+
const task = this.observer.getTask(event.taskId);
|
|
137
|
+
const input = {
|
|
138
|
+
eventId: event.id,
|
|
139
|
+
taskId: event.taskId,
|
|
140
|
+
roleName: event.roleName,
|
|
141
|
+
agentId: event.agentId,
|
|
142
|
+
adapterId: event.adapterId,
|
|
143
|
+
...(event.launchId === undefined ? {} : { launchId: event.launchId }),
|
|
144
|
+
nativeSessionId: event.nativeSessionId,
|
|
145
|
+
turnId: event.turnId,
|
|
146
|
+
...(event.runId === undefined ? {} : { runId: event.runId }),
|
|
147
|
+
summary: event.summary
|
|
148
|
+
};
|
|
149
|
+
if (task === null)
|
|
150
|
+
return "obsolete";
|
|
151
|
+
if (task.status !== "active") {
|
|
152
|
+
this.recordObsolete(event, task.status === "archived" ? "task-archived" : "task-retired", now);
|
|
153
|
+
return "obsolete";
|
|
154
|
+
}
|
|
155
|
+
const disposition = this.observer.classifyRuntimeTurnCompleted?.(input) ?? "apply";
|
|
156
|
+
if (disposition === "deferred")
|
|
157
|
+
return disposition;
|
|
158
|
+
if (disposition === "obsolete") {
|
|
159
|
+
this.recordObsolete(event, "identity-mismatch-or-terminal", now);
|
|
160
|
+
return disposition;
|
|
161
|
+
}
|
|
162
|
+
const observed = this.observer.observeRuntimeTurnCompleted(input, now);
|
|
163
|
+
if (isObsoleteRuntimeTurnObservation(observed)) {
|
|
164
|
+
this.recordObsolete(event, "runtime-cleanup-or-stopped-session", now);
|
|
165
|
+
return "obsolete";
|
|
166
|
+
}
|
|
167
|
+
this.options.onTaskRuntimeApplied?.({
|
|
168
|
+
taskId: event.taskId,
|
|
169
|
+
roleName: event.roleName
|
|
170
|
+
});
|
|
171
|
+
return "applied";
|
|
172
|
+
}
|
|
173
|
+
const input = {
|
|
174
|
+
eventId: event.id,
|
|
175
|
+
roleName: event.roleName,
|
|
176
|
+
agentId: event.agentId,
|
|
177
|
+
adapterId: event.adapterId,
|
|
178
|
+
...(event.launchId === undefined ? {} : { launchId: event.launchId }),
|
|
179
|
+
nativeSessionId: event.nativeSessionId,
|
|
180
|
+
turnId: event.turnId,
|
|
181
|
+
...(event.title === undefined ? {} : { title: event.title }),
|
|
182
|
+
summary: event.summary
|
|
183
|
+
};
|
|
184
|
+
if (this.observer.classifyGlobalRuntimeTurnCompleted?.(input) !== "obsolete") {
|
|
185
|
+
this.observer.observeGlobalRuntimeTurnCompleted(input, now);
|
|
186
|
+
return "applied";
|
|
187
|
+
}
|
|
188
|
+
return "obsolete";
|
|
189
|
+
}
|
|
190
|
+
applyClaudeStopFailure(event, now) {
|
|
191
|
+
const task = this.observer.getTask(event.taskId);
|
|
192
|
+
if (task === null)
|
|
193
|
+
return;
|
|
194
|
+
const input = {
|
|
195
|
+
eventId: event.id,
|
|
196
|
+
type: event.type,
|
|
197
|
+
taskId: event.taskId,
|
|
198
|
+
roleName: event.roleName,
|
|
199
|
+
agentId: event.agentId,
|
|
200
|
+
adapterId: event.adapterId,
|
|
201
|
+
launchId: event.launchId,
|
|
202
|
+
nativeSessionId: event.nativeSessionId,
|
|
203
|
+
runId: event.runId,
|
|
204
|
+
error: event.error,
|
|
205
|
+
...(event.errorDetails === undefined ? {} : { errorDetails: event.errorDetails }),
|
|
206
|
+
...(event.lastAssistantMessage === undefined
|
|
207
|
+
? {}
|
|
208
|
+
: { lastAssistantMessage: event.lastAssistantMessage })
|
|
209
|
+
};
|
|
210
|
+
if (task.status !== "active"
|
|
211
|
+
|| this.observer.classifyClaudeStopFailureEvent?.(input) === "obsolete") {
|
|
212
|
+
this.recordObsolete(event, task.status === "archived"
|
|
213
|
+
? "task-archived"
|
|
214
|
+
: task.status !== "active"
|
|
215
|
+
? "task-retired"
|
|
216
|
+
: "identity-mismatch-or-terminal", now);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (this.observer.observeClaudeStopFailureEvent === undefined) {
|
|
220
|
+
throw new Error("Claude StopFailure observer is unavailable.");
|
|
221
|
+
}
|
|
222
|
+
this.observer.observeClaudeStopFailureEvent(input, now);
|
|
223
|
+
}
|
|
224
|
+
recordObsolete(event, reason, now) {
|
|
225
|
+
if (event.scope !== "task" || event.taskId === undefined)
|
|
226
|
+
return;
|
|
227
|
+
this.observer.observeObsoleteRuntimeEvent?.({
|
|
228
|
+
eventId: event.id,
|
|
229
|
+
eventType: event.type,
|
|
230
|
+
taskId: event.taskId,
|
|
231
|
+
roleName: event.roleName,
|
|
232
|
+
agentId: event.agentId,
|
|
233
|
+
...(event.runId === undefined ? {} : { runId: event.runId }),
|
|
234
|
+
...(event.launchId === undefined ? {} : { launchId: event.launchId }),
|
|
235
|
+
nativeSessionId: event.nativeSessionId,
|
|
236
|
+
reason
|
|
237
|
+
}, now);
|
|
238
|
+
}
|
|
239
|
+
acknowledge(id, acknowledged) {
|
|
240
|
+
this.inbox.acknowledge(id);
|
|
241
|
+
acknowledged.push(id);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function isObsoleteRuntimeTurnObservation(value) {
|
|
245
|
+
return typeof value === "object"
|
|
246
|
+
&& value !== null
|
|
247
|
+
&& value.disposition === "obsolete";
|
|
248
|
+
}
|