@zq-silk/yui 0.15.6 → 0.15.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/ARCHITECTURE.md +192 -399
  2. package/README.md +127 -1149
  3. package/dist/agent/adapterCatalog.js +15 -2
  4. package/dist/agent/agent.js +23 -3
  5. package/dist/agent/argumentPolicy.js +7 -1
  6. package/dist/agent/connectionPlan.js +62 -0
  7. package/dist/agent/executionComponents.js +158 -0
  8. package/dist/agent/launchEnvironment.js +31 -3
  9. package/dist/agent/managedRuntimeEnvironment.js +3 -5
  10. package/dist/{turn/turn.js → agentRun/agentRun.js} +166 -109
  11. package/dist/{turn/turnIdentity.js → agentRun/runIdentity.js} +4 -4
  12. package/dist/brief/taskBrief.js +12 -0
  13. package/dist/cli/agentConfigurationPicker.js +13 -0
  14. package/dist/cli/commandCatalog.js +167 -70
  15. package/dist/cli/interactionCandidates.js +5 -5
  16. package/dist/cli/interactionPolicy.js +38 -8
  17. package/dist/cli/invocationRouter.js +1 -1
  18. package/dist/cli/managedDiagnostics.js +28 -0
  19. package/dist/cli/operatorWizard.js +1 -7
  20. package/dist/cli/roleOptionOrder.js +27 -0
  21. package/dist/cli/roleWizard.js +50 -14
  22. package/dist/cli/updateOrchestrator.js +1 -1
  23. package/dist/cli/updatePorts.js +3 -4
  24. package/dist/cli.js +188 -95
  25. package/dist/commands/agentCommands.js +72 -14
  26. package/dist/commands/capabilityCommands.js +57 -0
  27. package/dist/commands/configCommands.js +20 -20
  28. package/dist/commands/deliveryGuardPreflight.js +2 -2
  29. package/dist/commands/executionAuditCommands.js +24 -24
  30. package/dist/commands/globalRoleCommands.js +1 -1
  31. package/dist/commands/grantCommands.js +4 -4
  32. package/dist/commands/operatorCommands.js +1 -7
  33. package/dist/commands/projectCommands.js +4 -4
  34. package/dist/commands/resourcesCommands.js +2 -2
  35. package/dist/commands/roleConfiguration.js +25 -5
  36. package/dist/commands/roleRuntimeGuard.js +4 -5
  37. package/dist/commands/sessionCommands.js +3 -7
  38. package/dist/commands/taskActivationCommands.js +259 -0
  39. package/dist/commands/taskActor.js +28 -49
  40. package/dist/commands/taskCommands.js +1216 -730
  41. package/dist/commands/taskContextCommand.js +39 -583
  42. package/dist/commands/taskExecutionCommands.js +32 -32
  43. package/dist/commands/taskInputCommands.js +40 -104
  44. package/dist/commands/taskIntegrationCommands.js +3 -2
  45. package/dist/commands/taskIntegrationQueueCommands.js +1 -1
  46. package/dist/commands/taskNextActionCommand.js +8 -8
  47. package/dist/commands/taskOverviewCommand.js +33 -45
  48. package/dist/commands/taskRemoteDeliveryCommand.js +2 -2
  49. package/dist/commands/taskRoleRuntimeStatus.js +133 -102
  50. package/dist/commands/telemetryCommands.js +36 -38
  51. package/dist/config/configCatalog.js +4 -4
  52. package/dist/config/yuiConfig.js +8 -8
  53. package/dist/context/contextSnapshot.js +10 -10
  54. package/dist/context/dispatchContext.js +11 -11
  55. package/dist/context/roleSessionContext.js +6 -3
  56. package/dist/context/{turnContextPack.js → runContextPack.js} +146 -81
  57. package/dist/context/{turnInputContract.js → runInputContract.js} +73 -60
  58. package/dist/context/sessionBootstrapManifest.js +21 -2
  59. package/dist/context/sourceRunContext.js +30 -0
  60. package/dist/context/taskContext.js +458 -0
  61. package/dist/context/wakeNotification.js +27 -27
  62. package/dist/controller/agentRuntimeObserver.js +21 -24
  63. package/dist/controller/capabilityBridge.js +77 -0
  64. package/dist/controller/clientRuntime.js +65 -92
  65. package/dist/controller/controller.js +127 -188
  66. package/dist/controller/fileSchedulerStoreAdapter.js +787 -887
  67. package/dist/controller/jobControl.js +54 -85
  68. package/dist/controller/resourceInventory.js +8 -27
  69. package/dist/controller/resourceInventoryLinux.js +12 -13
  70. package/dist/controller/runtime.js +530 -476
  71. package/dist/controller/runtimeEventInbox.js +55 -25
  72. package/dist/controller/runtimeEventProcessor.js +22 -31
  73. package/dist/controller/{runtimeHookTurnFence.js → runtimeHookRunFence.js} +91 -115
  74. package/dist/controller/runtimeLaunchCoordinator.js +80 -426
  75. package/dist/controller/runtimeObservationHook.js +14 -18
  76. package/dist/controller/sessionNotify.js +16 -24
  77. package/dist/controller/sessionOwnerReconciliation.js +168 -50
  78. package/dist/controller/structuredProviderObservation.js +138 -99
  79. package/dist/coordination/workMailbox.js +3 -3
  80. package/dist/coordination/workMailboxQueue.js +36 -33
  81. package/dist/core/boundedRpc.js +8 -1
  82. package/dist/core/controllerClient.js +20 -1
  83. package/dist/core/controllerServer.js +4 -4
  84. package/dist/doctor/doctor.js +13 -2
  85. package/dist/domain/agentResultTransport.js +9 -9
  86. package/dist/execution/codexThreadNaming.js +2 -8
  87. package/dist/execution/executionHealth.js +51 -63
  88. package/dist/execution/reviewMainRun.js +137 -0
  89. package/dist/execution/workItemExecution.js +28 -29
  90. package/dist/execution/workItemExecutionProjection.js +99 -107
  91. package/dist/execution/workItemMainRun.js +141 -0
  92. package/dist/executor/agentAdapter.js +227 -20
  93. package/dist/executor/agentConfigurationCatalog.js +126 -4
  94. package/dist/executor/agentConfigurationProbe.js +162 -4
  95. package/dist/executor/agentExecutor.js +79 -78
  96. package/dist/executor/effectiveLaunch.js +105 -18
  97. package/dist/executor/executorRegistry.js +29 -44
  98. package/dist/executor/fileRoleLaunchPlanner.js +229 -154
  99. package/dist/executor/workspacePreflightClassification.js +16 -16
  100. package/dist/grant/capabilityGrant.js +6 -3
  101. package/dist/input/inputRequest.js +12 -10
  102. package/dist/integration/gitIntegrationService.js +4 -11
  103. package/dist/integration/integrationQueueService.js +4 -4
  104. package/dist/interaction/operatorPresentation.js +1 -1
  105. package/dist/kernel/builtinCapabilities.js +423 -0
  106. package/dist/kernel/capabilityRegistry.js +314 -0
  107. package/dist/kernel/capabilitySchema.js +91 -0
  108. package/dist/kernel/instanceHost.js +18 -1
  109. package/dist/kernel/kernelPorts.js +4 -1
  110. package/dist/lifecycle/canonicalLifecycleEvent.js +44 -49
  111. package/dist/lifecycle/exactRunTerminalization.js +449 -0
  112. package/dist/message/message.js +62 -6
  113. package/dist/message/messageContinuation.js +204 -0
  114. package/dist/observability/executionAudit.js +70 -72
  115. package/dist/observability/faultClassification.js +2 -2
  116. package/dist/observability/orchestrationMetrics.js +8 -8
  117. package/dist/operator/operatorSessionHistory.js +1 -7
  118. package/dist/output/agentConfigurationPresentation.js +8 -3
  119. package/dist/output/agentRunConfigurationPresentation.js +128 -0
  120. package/dist/output/rolePresentation.js +54 -3
  121. package/dist/plugins/pluginChild.js +104 -0
  122. package/dist/plugins/pluginIntent.js +26 -0
  123. package/dist/plugins/pluginInterpreter.js +43 -0
  124. package/dist/plugins/pluginPackage.js +101 -0
  125. package/dist/plugins/pluginProcess.js +112 -0
  126. package/dist/plugins/pluginService.js +380 -0
  127. package/dist/profile/agentProfile.js +1 -1
  128. package/dist/repository/gitWorkspace.js +26 -4
  129. package/dist/repository/project.js +19 -4
  130. package/dist/repository/taskBaseFreshness.js +13 -13
  131. package/dist/repository/taskWorkspaceCoordinator.js +20 -27
  132. package/dist/repository/taskWorkspacePreparer.js +344 -83
  133. package/dist/resources/autoResourceGc.js +3 -3
  134. package/dist/resources/liveReferences.js +3 -3
  135. package/dist/resources/projectResource.js +123 -0
  136. package/dist/resources/projectResourceService.js +421 -0
  137. package/dist/resources/resourceDiscovery.js +6 -6
  138. package/dist/resources/resourceGc.js +1 -1
  139. package/dist/resources/resourceRegistrar.js +1 -1
  140. package/dist/resources/resourceTypes.js +1 -1
  141. package/dist/review/deltaRecheck.js +3 -3
  142. package/dist/review/reviewAcceptance.js +16 -16
  143. package/dist/review/reviewDecision.js +7 -7
  144. package/dist/review/reviewRound.js +21 -20
  145. package/dist/review/reviewerAvailability.js +2 -2
  146. package/dist/role/role.js +51 -7
  147. package/dist/role/taskRoleUpdate.js +30 -0
  148. package/dist/runtime/acpProtocol.js +425 -0
  149. package/dist/runtime/acpSession.js +731 -0
  150. package/dist/runtime/acpSessionConfiguration.js +260 -0
  151. package/dist/runtime/agentDriver.js +30 -11
  152. package/dist/runtime/agentEndpoint.js +278 -0
  153. package/dist/runtime/agentEndpointIdentity.js +86 -0
  154. package/dist/runtime/agentEndpointOwnership.js +239 -0
  155. package/dist/runtime/agentError.js +2 -10
  156. package/dist/runtime/agentHost.js +565 -314
  157. package/dist/runtime/agentRunConfiguration.js +258 -0
  158. package/dist/runtime/builtinAgentDrivers.js +134 -18
  159. package/dist/runtime/builtinAgentErrorMappers.js +55 -3
  160. package/dist/runtime/builtinTranscriptUsage.js +1 -1
  161. package/dist/runtime/claude-process-owner +0 -0
  162. package/dist/runtime/codexAppServerRuntime.js +38 -30
  163. package/dist/runtime/codexInteractiveHost.js +41 -6
  164. package/dist/runtime/continuationManager.js +2 -6
  165. package/dist/runtime/executionEnvironment.js +30 -0
  166. package/dist/runtime/firstProgressAdvisory.js +11 -11
  167. package/dist/runtime/index.js +4 -3
  168. package/dist/runtime/jsonLineChannel.js +109 -0
  169. package/dist/runtime/launchBroker.js +91 -16
  170. package/dist/runtime/launchDiagnostics.js +2 -2
  171. package/dist/runtime/lifecycleReservation.js +10 -18
  172. package/dist/runtime/managedCaller.js +61 -17
  173. package/dist/runtime/nativeSessionControl.js +102 -0
  174. package/dist/runtime/ports.js +6 -21
  175. package/dist/runtime/processExitObservation.js +8 -7
  176. package/dist/runtime/promptEnvelope.js +17 -6
  177. package/dist/runtime/providerContinuation.js +3 -9
  178. package/dist/runtime/providerContinuationReconciliationService.js +4 -13
  179. package/dist/runtime/providerControl.js +2 -7
  180. package/dist/runtime/providerRuntimeIdentity.js +110 -222
  181. package/dist/runtime/providerRuntimeReconciler.js +5 -9
  182. package/dist/runtime/runtimeBinding.js +0 -1
  183. package/dist/runtime/runtimeContinuationProjection.js +4 -7
  184. package/dist/runtime/runtimeDeadlines.js +9 -0
  185. package/dist/runtime/runtimeHealthPolicy.js +1 -1
  186. package/dist/runtime/runtimeObservation.js +29 -65
  187. package/dist/runtime/runtimeProjection.js +43 -51
  188. package/dist/runtime/runtimeSessionCandidate.js +1 -3
  189. package/dist/runtime/sessionLaunchRequest.js +3 -7
  190. package/dist/runtime/sessionOwnerIdentity.js +7 -54
  191. package/dist/runtime/sessionOwnerRegistry.js +22 -17
  192. package/dist/runtime/sessionReconciliation.js +4 -8
  193. package/dist/runtime/sessionTerminationGuard.js +70 -259
  194. package/dist/runtime/sessionTokenMetrics.js +5 -16
  195. package/dist/runtime/structuredProviderHost.js +237 -117
  196. package/dist/runtime/taskRuntimeIsolation.js +39 -122
  197. package/dist/runtime/tmuxAdapters.js +39 -86
  198. package/dist/scheduler/activeRoleRunDelivery.js +354 -0
  199. package/dist/scheduler/leaderWakeupProcessor.js +75 -266
  200. package/dist/scheduler/operatorInputNotificationProcessor.js +1 -1
  201. package/dist/scheduler/ports.js +80 -9
  202. package/dist/scheduler/{roleTurnLiveness.js → roleRunLiveness.js} +26 -30
  203. package/dist/scheduler/{roleTurnStall.js → roleRunStall.js} +128 -139
  204. package/dist/scheduler/taskExecutionProjection.js +120 -124
  205. package/dist/scheduler/taskObservabilityProjection.js +29 -29
  206. package/dist/scheduler/taskWake.js +11 -4
  207. package/dist/scheduler/wakeReason.js +9 -1
  208. package/dist/setup/setupCommand.js +1 -0
  209. package/dist/storage/migrations/agentRunContract.js +159 -0
  210. package/dist/storage/migrations/removeRuntimeGeneration.js +207 -0
  211. package/dist/storage/sqliteSchema.js +431 -5
  212. package/dist/storage/sqliteStore.js +375 -220
  213. package/dist/storage/storageVersions.js +1 -1
  214. package/dist/storage/storeRpc.js +10 -5
  215. package/dist/storage/taskStore.js +13 -11
  216. package/dist/storage/upgrade/upgradeOrchestrator.js +5 -7
  217. package/dist/surface/surfaceContributions.js +102 -0
  218. package/dist/task/completionReadiness.js +32 -6
  219. package/dist/task/deliveryGuard.js +16 -16
  220. package/dist/task/draftPlan.js +72 -12
  221. package/dist/task/nextAction.js +144 -128
  222. package/dist/task/remoteDelivery.js +6 -6
  223. package/dist/task/task.js +184 -18
  224. package/dist/task/taskActivation.js +301 -0
  225. package/dist/task/taskActivationService.js +392 -0
  226. package/dist/task/taskRecordReference.js +5 -4
  227. package/dist/task/taskRecordRetirement.js +1 -1
  228. package/dist/telemetry/sqliteTelemetryStore.js +55 -68
  229. package/dist/telemetry/telemetryConfig.js +14 -14
  230. package/dist/telemetry/telemetryWiring.js +2 -2
  231. package/dist/web/assets/assetManifest.js +2 -0
  232. package/dist/web/assets/client/app.js +120 -20
  233. package/dist/web/assets/client/components.js +87 -54
  234. package/dist/web/assets/client/i18n.js +83 -41
  235. package/dist/web/assets/client/markdown.js +1 -1
  236. package/dist/web/assets/client/taskSurface.js +353 -0
  237. package/dist/web/assets/client/view.js +49 -44
  238. package/dist/web/assets/shell.js +1 -1
  239. package/dist/web/assets/styles/cards.js +22 -4
  240. package/dist/web/controllerWeb.js +60 -0
  241. package/dist/web/webMutation.js +28 -0
  242. package/dist/web/webServer.js +118 -8
  243. package/dist/web/webSnapshot.js +81 -74
  244. package/dist/web/webTaskSurface.js +64 -0
  245. package/dist/workItem/dependencyGate.js +1 -1
  246. package/dist/workItem/workItem.js +80 -48
  247. package/dist/workspace/workItemChangeSetManager.js +16 -9
  248. package/docs/agent-result-consumption.md +94 -0
  249. package/docs/agent-runtime-drivers.md +91 -0
  250. package/docs/architecture/README.md +38 -0
  251. package/docs/architecture/capabilities-and-resources.md +79 -0
  252. package/docs/managed-turn-and-session-runtime.md +222 -0
  253. package/docs/observability/README.md +81 -0
  254. package/docs/plugin-sdk.md +290 -0
  255. package/docs/provider-runtime.md +163 -0
  256. package/docs/release-workflow.md +303 -0
  257. package/docs/roles-and-configuration.md +113 -0
  258. package/docs/sqlite-control-plane-design.md +76 -0
  259. package/docs/task-dag-semantics.md +57 -0
  260. package/docs/task-delivery.md +103 -0
  261. package/docs/task-local-identity.md +6 -6
  262. package/docs/testing/verification-levels.md +86 -0
  263. package/i18n/README.zh-CN.md +98 -739
  264. package/package.json +5 -5
  265. package/skills/yui-leader/SKILL.md +130 -103
  266. package/skills/yui-leader/references/integration.md +39 -0
  267. package/skills/yui-leader/references/replicated-execution.md +42 -0
  268. package/skills/yui-leader/references/task-plugins.md +33 -0
  269. package/skills/yui-operator/SKILL.md +30 -59
  270. package/skills/yui-reviewer/SKILL.md +35 -36
  271. package/skills/yui-runtime/SKILL.md +88 -24
  272. package/skills/yui-runtime/references/publication.md +22 -0
  273. package/skills/yui-runtime/references/recovery.md +64 -0
  274. package/skills/yui-worker/SKILL.md +37 -39
  275. package/dist/cli/roleOptionCatalog.js +0 -68
  276. package/dist/context/sourceTurnContext.js +0 -30
  277. package/dist/execution/reviewMainTurn.js +0 -161
  278. package/dist/execution/workItemMainTurn.js +0 -164
  279. package/dist/lifecycle/exactTurnTerminalization.js +0 -407
  280. package/dist/runtime/preallocatedNativeSession.js +0 -13
  281. package/dist/runtime/runtimeStopReceipt.js +0 -42
  282. package/dist/scheduler/activeRoleTurnDelivery.js +0 -315
@@ -61,10 +61,10 @@ export async function inspectTaskBaseFreshness(taskId, store, options = {}) {
61
61
  const task = requireTask(store, taskId);
62
62
  const git = options.git ?? newGitWorkspace();
63
63
  const workspace = store.getTaskWorkspace(taskId);
64
- // Collect active Turn workspace snapshots once so every Project entry can
65
- // report whether a live Turn is pinned to a different commit.
66
- const activeTurns = store.listTurns(taskId)
67
- .filter((turn) => turn.status === "active" && turn.workspace !== undefined);
64
+ // Collect active AgentRun workspace snapshots once so every Project entry can
65
+ // report whether a live AgentRun is pinned to a different commit.
66
+ const activeRuns = store.listRuns(taskId)
67
+ .filter((run) => run.status === "active" && run.workspace !== undefined);
68
68
  const entries = await Promise.all(task.projectBindings.map(async (binding) => {
69
69
  const project = requireProject(store, binding.projectId);
70
70
  const entry = workspace === null ? undefined : workspaceProjectEntry(workspace, project.id);
@@ -77,12 +77,12 @@ export async function inspectTaskBaseFreshness(taskId, store, options = {}) {
77
77
  catch {
78
78
  physicalHead = undefined;
79
79
  }
80
- // Find the first active Turn whose workspace snapshot covers this Project.
81
- const turnSnapshot = activeTurns.find((turn) => {
82
- if (turn.workspace === undefined)
80
+ // Find the first active AgentRun whose workspace snapshot covers this Project.
81
+ const runSnapshot = activeRuns.find((run) => {
82
+ if (run.workspace === undefined)
83
83
  return false;
84
- const turnEntry = workspaceProjectEntry(turn.workspace, project.id);
85
- return turnEntry !== undefined;
84
+ const runEntry = workspaceProjectEntry(run.workspace, project.id);
85
+ return runEntry !== undefined;
86
86
  });
87
87
  const provenance = latestBaseProvenance(store.listEvents(taskId), project.id);
88
88
  const tracked = await resolveTracked(git, project, workspacePath, options.refresh === true);
@@ -99,11 +99,11 @@ export async function inspectTaskBaseFreshness(taskId, store, options = {}) {
99
99
  workspacePath,
100
100
  workspaceClean,
101
101
  ...(physicalHead === undefined ? {} : { physicalHead }),
102
- ...(turnSnapshot?.workspace === undefined
102
+ ...(runSnapshot?.workspace === undefined
103
103
  ? {}
104
104
  : {
105
- turnSnapshotCommit: workspaceProjectEntry(turnSnapshot.workspace, project.id)?.baseCommit,
106
- turnSnapshotId: turnSnapshot.id
105
+ runSnapshotCommit: workspaceProjectEntry(runSnapshot.workspace, project.id)?.baseCommit,
106
+ runSnapshotId: runSnapshot.id
107
107
  }),
108
108
  ...(tracked === undefined ? {} : {
109
109
  trackedRef: tracked.ref,
@@ -161,7 +161,7 @@ export function renderTaskBaseFreshnessReport(report) {
161
161
  `Task base freshness: ${report.taskId} (source: ${report.refreshed ? "remote refresh" : "local tracking"})`
162
162
  ];
163
163
  for (const entry of report.entries) {
164
- lines.push(`- ${entry.directory}: ${entry.projectId} @ ${entry.baseCommit}`, ` status: ${entry.status}; workspace: ${entry.workspaceClean === null ? "unknown" : entry.workspaceClean ? "clean" : "dirty"}`, ` physical HEAD: ${entry.physicalHead ?? "-"}`, ` Turn snapshot: ${entry.turnSnapshotCommit ?? "-"}${entry.turnSnapshotId === undefined ? "" : ` (${entry.turnSnapshotId})`}`, ` observed remote: ${entry.observedRemoteUrl ?? "-"}`, ` tracked: ${entry.trackedCommit ?? "-"}${entry.trackedRef === undefined ? "" : ` (${entry.trackedRef})`}`, ` observed: ${entry.observedTrackingCommit ?? "-"}${entry.observedAt === undefined ? "" : ` at ${entry.observedAt}`}`);
164
+ lines.push(`- ${entry.directory}: ${entry.projectId} @ ${entry.baseCommit}`, ` status: ${entry.status}; workspace: ${entry.workspaceClean === null ? "unknown" : entry.workspaceClean ? "clean" : "dirty"}`, ` physical HEAD: ${entry.physicalHead ?? "-"}`, ` AgentRun snapshot: ${entry.runSnapshotCommit ?? "-"}${entry.runSnapshotId === undefined ? "" : ` (${entry.runSnapshotId})`}`, ` observed remote: ${entry.observedRemoteUrl ?? "-"}`, ` tracked: ${entry.trackedCommit ?? "-"}${entry.trackedRef === undefined ? "" : ` (${entry.trackedRef})`}`, ` observed: ${entry.observedTrackingCommit ?? "-"}${entry.observedAt === undefined ? "" : ` at ${entry.observedAt}`}`);
165
165
  if (entry.risk !== undefined)
166
166
  lines.push(` risk: ${entry.risk}`);
167
167
  if (entry.error !== undefined)
@@ -1,5 +1,4 @@
1
1
  import { isDeepStrictEqual } from "node:util";
2
- import { retireConfirmedAbsentInactiveTaskRolePlaceholders } from "../executor/agentExecutor.js";
3
2
  import { hasRuntimeLifecycleWork, runtimeLifecycleTarget } from "../runtime/lifecycleReservation.js";
4
3
  import { managedWorkspaceKey } from "../worktree/managedWorkspace.js";
5
4
  import { acquireProjectMaintenanceLocks } from "./projectMaintenanceLock.js";
@@ -23,10 +22,10 @@ export class TaskWorkspaceCoordinator {
23
22
  if (item === null)
24
23
  throw new Error(`Work item not found: ${taskId}/${workItemId}.`);
25
24
  const assignee = this.#workItemIsolationAssignee(item);
26
- const activeDevelopTurn = this.store.listTurns(item.taskId)
25
+ const activeDevelopRun = this.store.listRuns(item.taskId)
27
26
  .find((run) => run.status === "active" && run.workItemId === item.id);
28
- if (activeDevelopTurn !== undefined) {
29
- throw new Error(`Work Item already has an active Develop Turn: ${activeDevelopTurn.id}.`);
27
+ if (activeDevelopRun !== undefined) {
28
+ throw new Error(`Work Item already has an active Develop AgentRun: ${activeDevelopRun.id}.`);
30
29
  }
31
30
  const task = this.store.getTask(item.taskId);
32
31
  const taskProjectIds = task.projectBindings.map(({ projectId }) => projectId);
@@ -155,7 +154,7 @@ export class TaskWorkspaceCoordinator {
155
154
  const task = this.store.getTask(taskId);
156
155
  if (task === null)
157
156
  throw new Error(`Task not found: ${taskId}.`);
158
- if (task.status !== "completed" && task.status !== "retired") {
157
+ if (task.status !== "completed" && task.status !== "cancelled") {
159
158
  throw new Error(`Task must be completed or retired before archive cleanup: ${task.id}.`);
160
159
  }
161
160
  const managedWorkspaces = [...this.store.listManagedWorkspaces(task.id)]
@@ -181,7 +180,7 @@ export class TaskWorkspaceCoordinator {
181
180
  const item = this.store.getWorkItem(task.id, workItemId);
182
181
  if (item === null)
183
182
  throw new Error(`Work item not found: ${task.id}/${workItemId}.`);
184
- if (item.status !== "completed" && item.status !== "retired") {
183
+ if (item.status !== "accepted" && item.status !== "retired") {
185
184
  throw new Error(`Work item must be completed or retired before archive cleanup: ${item.id}.`);
186
185
  }
187
186
  return item;
@@ -276,9 +275,9 @@ export class TaskWorkspaceCoordinator {
276
275
  };
277
276
  }
278
277
  const activeRole = this.store.listRoles(taskId)
279
- .find((role) => this.store.getActiveTurn(taskId, role.name) !== null);
278
+ .find((role) => this.store.getActiveRun(taskId, role.name) !== null);
280
279
  if (activeRole !== undefined) {
281
- throw new WorkspaceCleanupBlockedError("active-turn", `role:${task.id}/${activeRole.name}`, true, `Task Role still has an active Turn: ${task.id}/${activeRole.name}.`);
280
+ throw new WorkspaceCleanupBlockedError("active-turn", `role:${task.id}/${activeRole.name}`, true, `Task Role still has an active AgentRun: ${task.id}/${activeRole.name}.`);
282
281
  }
283
282
  const roleNames = this.store.listRoles(taskId).map(({ name }) => name);
284
283
  await this.#stopLiveRoles(taskId, roleNames);
@@ -302,7 +301,7 @@ export class TaskWorkspaceCoordinator {
302
301
  }
303
302
  for (const item of workItems) {
304
303
  this.#assertTaskArchiveLifecycle(task);
305
- await this.preparer.cleanupWorkItemWorkspace(task.id, item.id, item.status === "completed" ? disposition : "abandoned");
304
+ await this.preparer.cleanupWorkItemWorkspace(task.id, item.id, item.status === "accepted" ? disposition : "abandoned");
306
305
  }
307
306
  this.#assertTaskArchiveLifecycle(task);
308
307
  return this.preparer.cleanupTaskForArchive(taskId);
@@ -353,10 +352,10 @@ export class TaskWorkspaceCoordinator {
353
352
  }
354
353
  }
355
354
  #assertWorkItemRuntimeQuiescent(item) {
356
- const activeTurn = this.store.listTurns(item.taskId)
355
+ const activeRun = this.store.listRuns(item.taskId)
357
356
  .find((run) => run.status === "active" && run.workItemId === item.id);
358
- if (activeTurn !== undefined) {
359
- throw new WorkspaceCleanupBlockedError("active-turn", `work-item:${item.taskId}/${item.id}`, true, `Work item still has an active Turn: ${item.taskId}/${item.id}.`);
357
+ if (activeRun !== undefined) {
358
+ throw new WorkspaceCleanupBlockedError("active-turn", `work-item:${item.taskId}/${item.id}`, true, `Work item still has an active AgentRun: ${item.taskId}/${item.id}.`);
360
359
  }
361
360
  }
362
361
  /**
@@ -396,10 +395,10 @@ export class TaskWorkspaceCoordinator {
396
395
  }
397
396
  async #stopLiveRoles(taskId, roleNames) {
398
397
  const targets = [...new Set(roleNames)];
399
- const getActiveTurn = this.store.getActiveTurn?.bind(this.store);
398
+ const getActiveRun = this.store.getActiveRun?.bind(this.store);
400
399
  for (const roleName of targets) {
401
- if (getActiveTurn !== undefined && getActiveTurn(taskId, roleName) !== null) {
402
- throw new Error(`Role has an active Turn: ${taskId}/${roleName}.`);
400
+ if (getActiveRun !== undefined && getActiveRun(taskId, roleName) !== null) {
401
+ throw new Error(`Role has an active AgentRun: ${taskId}/${roleName}.`);
403
402
  }
404
403
  if (this.store.getWorkMailbox !== undefined && hasRuntimeLifecycleWork(this.store.getWorkMailbox(runtimeLifecycleTarget({ scope: "task", taskId, roleName })))) {
405
404
  throw new Error(`Role has unsettled runtime lifecycle state: ${taskId}/${roleName}.`);
@@ -421,7 +420,7 @@ export class TaskWorkspaceCoordinator {
421
420
  // The aggregate-16 dormant Claude placeholder is the sole exception to
422
421
  // strict workspace-session retirement. The synchronous pane inspection is
423
422
  // performed while holding the Task store transaction so a normal launch
424
- // cannot reserve a Turn/Session between absence proof and terminalization.
423
+ // cannot reserve a AgentRun/Session between absence proof and terminalization.
425
424
  if (inspect === undefined || this.store.transaction === undefined)
426
425
  return;
427
426
  this.store.transaction((tx) => {
@@ -430,18 +429,12 @@ export class TaskWorkspaceCoordinator {
430
429
  if (panes.some((pane) => pane.roleName === roleName && !pane.dead)) {
431
430
  throw new Error(`Task Role native pane must stop before workspace migration: ${roleName}.`);
432
431
  }
433
- if (tx.getActiveTurn(taskId, roleName) !== null) {
434
- throw new Error(`Role has an active Turn: ${taskId}/${roleName}.`);
432
+ if (tx.getActiveRun(taskId, roleName) !== null) {
433
+ throw new Error(`Role has an active AgentRun: ${taskId}/${roleName}.`);
435
434
  }
436
435
  if (tx.getWorkMailbox !== undefined && hasRuntimeLifecycleWork(tx.getWorkMailbox(runtimeLifecycleTarget({ scope: "task", taskId, roleName })))) {
437
436
  throw new Error(`Role has unsettled runtime lifecycle state: ${taskId}/${roleName}.`);
438
437
  }
439
- const sessions = tx.getTaskRoleSessionSet(taskId, roleName);
440
- if (sessions === null)
441
- continue;
442
- const retired = retireConfirmedAbsentInactiveTaskRolePlaceholders(sessions, this.preparer.now());
443
- if (retired !== sessions)
444
- tx.saveTaskRoleSessionSet(retired);
445
438
  }
446
439
  });
447
440
  }
@@ -460,8 +453,8 @@ export class TaskWorkspaceCoordinator {
460
453
  if (isTerminalWorkItem(item)) {
461
454
  throw new Error(`Work item is already terminal: ${item.id}.`);
462
455
  }
463
- if (item.assignee !== undefined && this.store.getActiveTurn(task.id, item.assignee) !== null) {
464
- throw new Error(`Role has an active Turn: ${task.id}/${item.assignee}.`);
456
+ if (item.assignee !== undefined && this.store.getActiveRun(task.id, item.assignee) !== null) {
457
+ throw new Error(`Role has an active AgentRun: ${task.id}/${item.assignee}.`);
465
458
  }
466
459
  if (item.assignee !== undefined && this.store.getRole(task.id, item.assignee) === null) {
467
460
  throw new Error(`Role not found: ${task.id}/${item.assignee}.`);
@@ -483,5 +476,5 @@ function sameProjectScope(workspace, taskProjectIds, writeProjectIds) {
483
476
  && actual.every((projectId, index) => projectId === expected[index]);
484
477
  }
485
478
  function isTerminalWorkItem(item) {
486
- return ["completed", "failed", "retired"].includes(item.status);
479
+ return ["accepted", "retired"].includes(item.status);
487
480
  }