@zq-silk/yui 0.15.11 → 0.16.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/ARCHITECTURE.md +11 -6
- package/ARCHITECTURE.zh-CN.md +8 -4
- package/README.md +13 -5
- package/dist/agentRun/agentRun.js +3 -0
- package/dist/artifacts/artifactCommitLock.js +16 -55
- package/dist/artifacts/taskArtifactRepository.js +3 -3
- package/dist/cli/agentConfigurationPicker.js +1 -1
- package/dist/cli/commandCatalog.js +92 -48
- package/dist/cli/completion.js +18 -18
- package/dist/cli/completionWizard.js +1 -1
- package/dist/cli/dynamicCompletion.js +1 -1
- package/dist/cli/interactionPolicy.js +11 -3
- package/dist/cli/invocationAuthority.js +64 -0
- package/dist/cli/managedDiagnostics.js +2 -2
- package/dist/cli/parseRepeatable.js +35 -0
- package/dist/cli/updatePorts.js +26 -5
- package/dist/cli.js +1303 -1235
- package/dist/commands/agentCommands.js +4 -4
- package/dist/commands/capabilityCommands.js +1 -1
- package/dist/commands/configCommands.js +6 -57
- package/dist/commands/configOverview.js +2 -2
- package/dist/commands/durableJobCommands.js +12 -6
- package/dist/commands/executionAuditCommands.js +10 -0
- package/dist/commands/globalRoleCommands.js +78 -29
- package/dist/commands/grantCommands.js +0 -3
- package/dist/commands/jobCommands.js +1 -4
- package/dist/commands/operatorCommands.js +3 -3
- package/dist/commands/projectCommands.js +45 -25
- package/dist/commands/resourcesCommands.js +10 -40
- package/dist/commands/roleConfiguration.js +2 -6
- package/dist/commands/taskActivationCommands.js +4 -8
- package/dist/commands/taskAgentCapabilities.js +9 -0
- package/dist/commands/taskCommandSupport.js +155 -0
- package/dist/commands/taskCommandTypes.js +1 -0
- package/dist/commands/taskCommands.js +355 -732
- package/dist/commands/taskCompletionGate.js +1 -1
- package/dist/commands/taskExecutionCommands.js +1 -1
- package/dist/commands/taskFactCommands.js +325 -0
- package/dist/commands/taskInputCommands.js +12 -42
- package/dist/commands/taskIntegrationCommands.js +20 -58
- package/dist/commands/taskNextActionCommand.js +7 -6
- package/dist/commands/taskPublicationAdoptCommand.js +127 -0
- package/dist/commands/taskPublicationCommands.js +12 -3
- package/dist/commands/taskPublicationVerifyCommand.js +24 -40
- package/dist/commands/taskRemoteDeliveryCommand.js +5 -86
- package/dist/commands/taskUpstreamCommands.js +19 -8
- package/dist/commands/workflowCommands.js +6 -1
- package/dist/completion/completionInstaller.js +26 -26
- package/dist/completion/completionState.js +26 -26
- package/dist/completion/fileCompletionManager.js +6 -11
- package/dist/config/configCatalog.js +0 -2
- package/dist/config/timeZone.js +14 -0
- package/dist/config/yuiConfig.js +0 -29
- package/dist/context/runContextPack.js +5 -3
- package/dist/context/taskCatalog.js +185 -0
- package/dist/context/taskContext.js +152 -151
- package/dist/context/wakeRunReferences.js +11 -0
- package/dist/controller/agentCapabilities.js +58 -0
- package/dist/controller/agentRuntimeObserver.js +6 -11
- package/dist/controller/clientRuntime.js +22 -14
- package/dist/controller/controller.js +20 -24
- package/dist/controller/fileSchedulerStoreAdapter.js +191 -225
- package/dist/controller/globalInputDelivery.js +13 -0
- package/dist/controller/jobClient.js +4 -4
- package/dist/controller/jobControl.js +60 -25
- package/dist/controller/jobSupervisor.js +4 -4
- package/dist/controller/providerRetryAdmission.js +100 -0
- package/dist/controller/providerRetryDelivery.js +218 -0
- package/dist/controller/runtime.js +85 -43
- package/dist/controller/runtimeEventProcessor.js +0 -5
- package/dist/controller/sessionOwnerReconciliation.js +5 -0
- package/dist/controller/taskAgentError.js +35 -0
- package/dist/coordination/workMailboxQueue.js +2 -24
- package/dist/core/controllerClient.js +2 -2
- package/dist/core/fileLockOwner.js +74 -0
- package/dist/decision/decision.js +17 -0
- package/dist/doctor/doctor.js +18 -9
- package/dist/event/taskEvent.js +12 -0
- package/dist/execution/workItemExecutionProjection.js +2 -2
- package/dist/executor/agentCapabilityConfig.js +43 -0
- package/dist/executor/agentConfigurationCatalog.js +49 -11
- package/dist/executor/agentExecutor.js +5 -8
- package/dist/executor/fileRoleLaunchPlanner.js +11 -53
- package/dist/executor/taskAgentCapabilities.js +64 -0
- package/dist/integration/deliveryObligation.js +1 -69
- package/dist/integration/gitIntegrationService.js +79 -90
- package/dist/integration/integrationAttempt.js +3 -14
- package/dist/integration/integrationSourceApplication.js +4 -12
- package/dist/integration/manifestTags.js +2 -2
- package/dist/job/durableJob.js +4 -25
- package/dist/job/jobAssignmentScope.js +22 -0
- package/dist/job/jobOperation.js +16 -0
- package/dist/job/jobRunner.js +2 -1
- package/dist/job/stepDirectory.js +15 -0
- package/dist/kernel/builtinCapabilities.js +15 -11
- package/dist/kernel/kernelPorts.js +1 -17
- package/dist/lifecycle/exactRunTerminalization.js +5 -10
- package/dist/message/globalProviderRetry.js +15 -0
- package/dist/message/inputControlResolution.js +3 -4
- package/dist/message/message.js +17 -20
- package/dist/message/messageContinuation.js +1 -1
- package/dist/milestone/milestone.js +11 -0
- package/dist/observability/executionAudit.js +19 -0
- package/dist/observability/orchestrationMetrics.js +24 -1
- package/dist/observability/runtimeIdentity.js +1 -17
- package/dist/output/agentConfigurationPresentation.js +2 -0
- package/dist/output/timePresentation.js +1 -14
- package/dist/plugins/pluginService.js +12 -4
- package/dist/release/releaseWorkflowPorts.js +45 -96
- package/dist/release/runtimeRelease.js +9 -15
- package/dist/repository/gitWorkspace.js +371 -105
- package/dist/repository/projectMaintenanceLock.js +98 -82
- package/dist/repository/taskBaseFreshness.js +1 -1
- package/dist/repository/taskWorkspaceCoordinator.js +82 -144
- package/dist/repository/taskWorkspacePreparer.js +113 -47
- package/dist/repository/workspaceCleanupInspection.js +187 -0
- package/dist/resources/autoResourceGc.js +4 -77
- package/dist/resources/liveReferences.js +7 -54
- package/dist/resources/resourceDiscovery.js +5 -118
- package/dist/resources/resourceGc.js +233 -181
- package/dist/resources/resourceRegistrar.js +5 -4
- package/dist/resources/resourceRegistry.js +3 -37
- package/dist/resources/resourceRegistryStore.js +13 -36
- package/dist/resources/sqliteResourceRegistry.js +43 -26
- package/dist/review/deltaRecheck.js +1 -1
- package/dist/review/reviewAcceptance.js +1 -1
- package/dist/review/reviewDecision.js +1 -1
- package/dist/review/reviewRound.js +8 -7
- package/dist/review/taskFinalReviewContractResolution.js +1 -1
- package/dist/runtime/acpProtocol.js +4 -51
- package/dist/runtime/acpSession.js +10 -75
- package/dist/runtime/acpSessionConfiguration.js +1 -8
- package/dist/runtime/agentEndpoint.js +3 -2
- package/dist/runtime/agentError.js +5 -3
- package/dist/runtime/agentFailureContext.js +43 -0
- package/dist/runtime/agentHost.js +42 -25
- package/dist/runtime/builtinAgentErrorMappers.js +91 -0
- package/dist/runtime/codexAppServerRuntime.js +34 -3
- package/dist/runtime/codexInteractiveHost.js +2 -2
- package/dist/runtime/index.js +0 -1
- package/dist/runtime/managedCaller.js +21 -1
- package/dist/runtime/providerControl.js +5 -1
- package/dist/runtime/providerErrors.js +38 -0
- package/dist/runtime/providerRetry.js +198 -0
- package/dist/runtime/providerRuntimeIdentity.js +28 -2
- package/dist/runtime/runtimeObservation.js +0 -5
- package/dist/runtime/runtimeSessionCandidate.js +2 -3
- package/dist/runtime/sessionOwnerIdentity.js +1 -1
- package/dist/runtime/sessionTokenMetrics.js +15 -5
- package/dist/runtime/structuredProviderHost.js +10 -43
- package/dist/runtime/taskUsageMetrics.js +275 -0
- package/dist/runtime/tmuxAdapters.js +6 -8
- package/dist/scheduler/activeRoleRunDelivery.js +19 -7
- package/dist/scheduler/leaderWakeupProcessor.js +24 -6
- package/dist/scheduler/operatorEvent.js +12 -20
- package/dist/scheduler/operatorInputNotificationProcessor.js +1 -1
- package/dist/scheduler/ports.js +5 -8
- package/dist/scheduler/roleRunLiveness.js +4 -4
- package/dist/scheduler/roleRunStall.js +16 -23
- package/dist/scheduler/taskExecutionProjection.js +49 -36
- package/dist/scheduler/taskObservabilityProjection.js +6 -45
- package/dist/scheduler/taskWake.js +5 -10
- package/dist/scheduler/wakeReason.js +2 -0
- package/dist/scheduler/wakeupQueue.js +2 -4
- package/dist/setup/setupCommand.js +1 -1
- package/dist/storage/contextRecords.js +106 -0
- package/dist/storage/currentTaskStore.js +1 -1
- package/dist/storage/homeLayout.js +13 -17
- package/dist/storage/migrations/agentFailureContext.js +22 -0
- package/dist/storage/migrations/currentInputContract.js +86 -0
- package/dist/storage/migrations/currentRuntimeContract.js +228 -0
- package/dist/storage/migrations/historicalVerificationPlan.js +35 -0
- package/dist/storage/migrations/integrationContinuation.js +5 -4
- package/dist/storage/migrations/narrowAgentFailureContext.js +65 -0
- package/dist/storage/migrations/notificationOnlyWakes.js +74 -0
- package/dist/storage/migrations/verificationPlanV1.js +162 -0
- package/dist/storage/migrations/verificationPolicy.js +74 -0
- package/dist/storage/migrations/workItemHistory.js +46 -0
- package/dist/storage/persistenceWorker.js +12 -4
- package/dist/storage/recordValidation.js +87 -0
- package/dist/storage/sqliteSchema.js +173 -1
- package/dist/storage/sqliteStore.js +172 -161
- package/dist/storage/storageSchema.js +2 -14
- package/dist/storage/storageVersions.js +1 -1
- package/dist/storage/storeRpc.js +16 -7
- package/dist/storage/taskCatalog.js +123 -0
- package/dist/storage/taskStore.js +5 -7
- package/dist/storage/upgrade/upgradeOrchestrator.js +25 -37
- package/dist/task/archiveDiagnostics.js +1 -0
- package/dist/task/archivePreflight.js +124 -0
- package/dist/task/completionReadiness.js +5 -24
- package/dist/task/draftPlan.js +0 -53
- package/dist/task/nextAction.js +7 -13
- package/dist/task/publicationAdoption.js +56 -0
- package/dist/task/publicationReference.js +10 -0
- package/dist/task/remoteDelivery.js +31 -16
- package/dist/task/remoteDeliveryService.js +89 -0
- package/dist/task/taskActivation.js +2 -25
- package/dist/task/taskActivationService.js +0 -2
- package/dist/task/taskRecordReference.js +0 -1
- package/dist/task/taskSubmission.js +3 -14
- package/dist/telemetry/sqliteTelemetryBatch.js +29 -0
- package/dist/telemetry/sqliteTelemetryStore.js +49 -49
- package/dist/telemetry/telemetryWiring.js +4 -3
- package/dist/tmux/tmuxManager.js +29 -20
- package/dist/verification/gateArtifact.js +15 -24
- package/dist/verification/gateArtifactStore.js +14 -7
- package/dist/verification/verificationGateService.js +29 -88
- package/dist/verification/verificationPlan.js +27 -72
- package/dist/web/assets/client/app.js +92 -17
- package/dist/web/assets/client/components.js +55 -13
- package/dist/web/assets/client/i18n.js +72 -4
- package/dist/web/assets/client/taskSurface.js +6 -5
- package/dist/web/assets/client/view.js +35 -7
- package/dist/web/assets/shell.js +6 -0
- package/dist/web/assets/styles/layout.js +7 -0
- package/dist/web/webServer.js +12 -3
- package/dist/web/webSnapshot.js +14 -85
- package/dist/web/webTaskSurface.js +17 -46
- package/dist/workItem/workItem.js +1 -12
- package/dist/workspace/cleanupInspection.js +63 -0
- package/dist/workspace/workItemChangeSetManager.js +110 -50
- package/docs/agent-result-consumption.md +4 -0
- package/docs/agent-result-consumption.zh-CN.md +3 -0
- package/docs/agent-runtime-drivers.md +7 -0
- package/docs/agent-runtime-drivers.zh-CN.md +5 -0
- package/docs/architecture/README.md +2 -0
- package/docs/architecture/README.zh-CN.md +3 -1
- package/docs/architecture/capabilities-and-resources.md +42 -5
- package/docs/architecture/capabilities-and-resources.zh-CN.md +33 -3
- package/docs/managed-turn-and-session-runtime.md +121 -1
- package/docs/managed-turn-and-session-runtime.zh-CN.md +96 -2
- package/docs/observability/README.md +62 -0
- package/docs/observability/README.zh-CN.md +47 -0
- package/docs/plugin-sdk.md +4 -2
- package/docs/project-refresh.md +77 -0
- package/docs/project-refresh.zh-CN.md +59 -0
- package/docs/provider-retry.md +70 -0
- package/docs/provider-runtime.md +3 -1
- package/docs/provider-runtime.zh-CN.md +4 -2
- package/docs/release-workflow.md +190 -7
- package/docs/release-workflow.zh-CN.md +139 -5
- package/docs/roles-and-configuration.md +29 -0
- package/docs/roles-and-configuration.zh-CN.md +21 -0
- package/docs/sqlite-control-plane-design.md +16 -3
- package/docs/sqlite-control-plane-design.zh-CN.md +13 -2
- package/docs/task-dag-semantics.md +3 -3
- package/docs/task-dag-semantics.zh-CN.md +2 -2
- package/docs/task-delivery.md +223 -17
- package/docs/task-delivery.zh-CN.md +171 -14
- package/docs/task-discovery.md +101 -0
- package/docs/task-discovery.zh-CN.md +85 -0
- package/docs/testing/verification-levels.md +161 -9
- package/docs/testing/verification-levels.zh-CN.md +116 -9
- package/i18n/README.zh-CN.md +13 -7
- package/package.json +1 -1
- package/skills/yui-leader/SKILL.md +5 -0
- package/skills/yui-leader/references/execution.md +3 -2
- package/skills/yui-leader/references/integration.md +9 -5
- package/skills/yui-leader/references/planning.md +9 -3
- package/skills/yui-operator/SKILL.md +24 -8
- package/skills/yui-reviewer/SKILL.md +4 -0
- package/skills/yui-runtime/SKILL.md +17 -2
- package/skills/yui-runtime/references/publication.md +26 -4
- package/skills/yui-runtime/references/recovery.md +71 -0
- package/dist/agent/agentRegistry.js +0 -10
- package/dist/agentRun/runIdentity.js +0 -22
- package/dist/commands/deliveryGuardPreflight.js +0 -30
- package/dist/commands/taskIntegrationQueueCommands.js +0 -226
- package/dist/commands/taskOverviewCommand.js +0 -376
- package/dist/completion/completionWizard.js +0 -125
- package/dist/context/dispatchContext.js +0 -110
- package/dist/context/wakeNotification.js +0 -144
- package/dist/integration/integrationCheckEvidenceReuse.js +0 -53
- package/dist/integration/integrationQueueEntry.js +0 -191
- package/dist/integration/integrationQueueService.js +0 -810
- package/dist/release/fakeReleasePorts.js +0 -55
- package/dist/runtime/sessionOwnerRegistry.js +0 -137
- package/dist/task/deliveryGuard.js +0 -226
- /package/dist/{commands/taskActor.js → task/taskAuthority.js} +0 -0
|
@@ -84,6 +84,33 @@ owner Run。当 Role 忙碌时,保存会返回而不打断它。一旦它可
|
|
|
84
84
|
显式 handoff 只针对同一工作已派发的后继。复制的 Producer/综合血缘不会被一条消息
|
|
85
85
|
静默改写。
|
|
86
86
|
|
|
87
|
+
被拒绝的 Leader 通知保留原始输入和失败原因。确定性的启动错误不再自动重试,
|
|
88
|
+
只有明确的运行时资源争用可以延后再试。新消息和 Controller 重启不会重放被拒绝
|
|
89
|
+
的认领。修正原因后,显式重试对应的 wake:
|
|
90
|
+
|
|
91
|
+
```sh
|
|
92
|
+
yui task wake show <task> <wake>
|
|
93
|
+
yui task wake retry <task> <wake> --reason "<已修正的原因>"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
retry 把被拒绝批次及后续排队输入交回现有 mailbox,不把旧 wake 改成已接受,
|
|
97
|
+
也不替换 Session;当前运行权限和就绪检查仍然生效。模型/effort 校验拒绝会显示原生
|
|
98
|
+
报告的模型选项,并提供查询完整当前目录的命令。
|
|
99
|
+
|
|
100
|
+
没有 Run 的启动失败与原生 Provider 拒绝都保留规范的 `runtime.agent-error` 事实。
|
|
101
|
+
通知投递引用该原始错误,而不复制第二份原因。`task event show` 的人类和 JSON 输出
|
|
102
|
+
都提供有作用域的能力查询入口,`wake show` 也链接同一事实。无法接收的 Leader 将
|
|
103
|
+
错误通过既有 Operator 通道通知一次;Worker/Reviewer 仍通知 Leader。不启动新的
|
|
104
|
+
恢复 Agent,也不为了记录错误制造 Run 或 Session。
|
|
105
|
+
|
|
106
|
+
存储 `35→36` 迁移保留历史错误原始 payload,并将当时未记录的启动配置标为不可用,
|
|
107
|
+
不会从当前 Role 猜测过去的模型、账户或 settings 选择。
|
|
108
|
+
|
|
109
|
+
存储 `36→37` 将该上下文收窄为原生元数据查询选项和请求的模型/effort。旧完整快照
|
|
110
|
+
留在迁移审计中,不由运行时双读。查看模型选项不再校验 Task 权限、Review 状态、
|
|
111
|
+
工作区条目或当前 Session 引导协议。三类错误入口保留各自的原生身份检查与分类,
|
|
112
|
+
错误创建、去重统一一个写入入口,上级通知统一使用事件路由边界。
|
|
113
|
+
|
|
87
114
|
未知的 Leader 通知保留其唤醒和输入窗口:
|
|
88
115
|
|
|
89
116
|
```sh
|
|
@@ -94,6 +121,70 @@ yui task wake resolve <task> <wake> --reason <quiescence-evidence>
|
|
|
94
121
|
resolve 在原生效果围栏清除后释放该认领。它既不重放通知,也不编造接受或完成。独立的
|
|
95
122
|
Role 工作和合法的本地事实不是一把 Task 范围的恢复锁。
|
|
96
123
|
|
|
124
|
+
wake 状态记录通知投递,不记录 Message 的实施结果。普通 Leader 通知的 `consumed`
|
|
125
|
+
表示原生接受;原生 Turn 完成与 Task 交付应分别依据运行证据和持久结果判断。
|
|
126
|
+
被拒绝的 wake 保持 `dispatched` 并保留 claim,直到显式重试或 Session 替换;
|
|
127
|
+
已显式释放的历史 wake 可以保持 `dispatched` 而不占用 claim。
|
|
128
|
+
接受状态未知的通知不能用 `wake retry` 重放。Session 替换把待投递输入
|
|
129
|
+
保留给新 wake 与当前 Context,不会追溯把旧 wake 标成已接受;旧回执也不能结算
|
|
130
|
+
新批次。Session 清理期间,新输入保持排队。检查时应结合 wake、
|
|
131
|
+
`notification.delivery` 事件、当前 mailbox 与 Session,不应要求每个历史 wake
|
|
132
|
+
都对应一条最终回复。
|
|
133
|
+
|
|
134
|
+
现行 wake 只表示通知,Run 完成不能消费 wake;首次通知窗口从 Task 创建时间开始。
|
|
135
|
+
退役的 Run-linked wake 通过 Task 事件保留原 ID 和完整原文,不作为第二种活动 wake 格式。
|
|
136
|
+
|
|
137
|
+
## 输入时机:queue、steer 与 interrupt
|
|
138
|
+
|
|
139
|
+
提交意图(`record / discuss / develop`)决定需求如何路由。输入时机决定一条已经
|
|
140
|
+
获授权的输入何时到达 Role;它不激活 Task、不扩大 Assignment,也不提升 planning
|
|
141
|
+
权限。仅保存输入使用 `message send --intent record`,`--wake-policy` 已移除。
|
|
142
|
+
未绑定请求身份的 Draft Message 仍可编辑,保留原提交意图。编辑 `record` 或
|
|
143
|
+
`develop` 不会启动规划、创建或重试激活;编辑 `discuss` 复用讨论提交的激活/规划
|
|
144
|
+
路由,因此已有 pending 或 failed 激活时,编辑后的讨论仍等待激活处理。
|
|
145
|
+
|
|
146
|
+
带 submission key、queue/steer 请求或 interrupt-then 交接的 Message 正文不可变;
|
|
147
|
+
需要改内容时,应使用新的 request ID 提交新消息。这保留原请求的判重依据和回执,
|
|
148
|
+
不新增第二套输入存储。更新为相同正文是无操作:不写事件、不改队列、不通知
|
|
149
|
+
Controller。现行 user/operator 消息必须存有意图;改变意图同样需要显式提交新输入。
|
|
150
|
+
[经认证的 Web 控制](architecture/capabilities-and-resources.zh-CN.md#cli-与-web)
|
|
151
|
+
与 CLI 使用同样的三种操作。
|
|
152
|
+
|
|
153
|
+
| 动作 | 效果 | 不证明什么 |
|
|
154
|
+
| --- | --- | --- |
|
|
155
|
+
| `queue` | 保存 Message,等待收件人的下一个合法机会,按 request ID 幂等 | 读取 Context 或接受投递不等于实施 |
|
|
156
|
+
| `steer` | 保存 Message,并尝试原生 steer 精确的当前 Turn | 不受支持、目标陈旧或未确认的 steer 不等于排队延续 |
|
|
157
|
+
| `interrupt` | 记录控制请求,请 Provider 取消精确的当前 Turn | 停止请求不等于终态,也不证明后台资源已停止 |
|
|
158
|
+
|
|
159
|
+
选择实时目标前先检查 Session:
|
|
160
|
+
|
|
161
|
+
```sh
|
|
162
|
+
yui task role session inspect <task> <role>
|
|
163
|
+
yui task message queue <task> "<continuation>" --request-id <id>
|
|
164
|
+
yui task message steer <task> "<correction>" --request-id <id> --to leader --expected-target <turn>
|
|
165
|
+
yui task role interrupt <task> <role> --expected-target <turn> --request-id <id> [--then-message <task/message>]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
普通 Leader `queue` 输入省略 `--to`。显式 `--to <role>`(包括 `leader`)指向既有
|
|
169
|
+
Assignment,必须带 `--work-item` 或 `--review-round`;Message 不能创建 Assignment。
|
|
170
|
+
`steer` 仍需要显式 Role 与精确实时目标。同一个 request ID 若换正文或目标会产生冲突。
|
|
171
|
+
`steer` 与 `interrupt` 不会静默改目标、
|
|
172
|
+
替换 Session、杀进程或回退到另一动作。没有活动受管 Turn 时返回 `NO_ACTIVE_TURN`;
|
|
173
|
+
陈旧目标与不受支持的控制也保持为显式结果。
|
|
174
|
+
|
|
175
|
+
裸 interrupt 不创建 Message。可选的 `--then-message` 引用一条已保存且符合交接条件
|
|
176
|
+
的输入,只在精确终态之后、原 Session/writer 边界内保留下一次机会。它不是第四种动作,
|
|
177
|
+
也不能用来重放已接受、待确认或未知的 steer。明确证明未投递时,若用户意图允许,
|
|
178
|
+
可以显式选择新的控制;不确定性不允许重放。
|
|
179
|
+
|
|
180
|
+
Global Role 使用同样的三种动作和自己的 owner、Session,不虚构 Task 或 Run。
|
|
181
|
+
本地用户 Web Surface 通过共享 Global Role 处理器暴露这些动作。公开 CLI 提供
|
|
182
|
+
`yui role message queue|steer <role> <text>` 和 `yui role interrupt <role>`。
|
|
183
|
+
queue/steer 要求 `--request-id`,steer/interrupt 要求 `--expected-target`。
|
|
184
|
+
这些命令保留调用者现有 Session 权限,不虚构 Task/Run 或借用浏览器用户权限。
|
|
185
|
+
配置仍使用 `config role`,生命周期使用 `session`。新的受控 Global Session 使用 Host console。活动的非受管 Session
|
|
186
|
+
不会被静默采用,需要先执行显式的 Session 生命周期操作。
|
|
187
|
+
|
|
97
188
|
## 精确结果
|
|
98
189
|
|
|
99
190
|
原生终态只结算相匹配的那次执行。已知的原生 Turn ID 必须匹配;串行流可以使用已证明的
|
|
@@ -118,8 +209,8 @@ Candidate 和 ReviewRound 保留来源;Core 不从散文中推导语义接受
|
|
|
118
209
|
仍是通知。Operator 提交和直接的 Task 消息都能到达那个 Session。Draft 计划/WorkItem
|
|
119
210
|
编辑保留执行历史;外部编辑通知 Leader,而它自己的规划编辑不创建自唤醒。
|
|
120
211
|
|
|
121
|
-
新的 Draft Role 使用位于 `<YUI_HOME
|
|
122
|
-
|
|
212
|
+
新的 Draft Role 使用位于 `<YUI_HOME>/runtime/task-runtimes/planning` 下、专属于该 Task 的规划
|
|
213
|
+
目录,与持久控制数据和交付树分开。一个 planning Run 可以用 `task activation request`
|
|
123
214
|
持久化意图并立即返回一个 `afterPlanningRun` 引用。它的终态把该请求释放给 Controller
|
|
124
215
|
准入;被取消的意图不会复活。Leader 也可以在普通讨论中请求激活而无需 AgentRun:一旦
|
|
125
216
|
原生输入结算,Controller 就采用其持久意图。不需要合成 Run 或额外的用户“continue”。
|
|
@@ -128,6 +219,9 @@ Candidate 和 ReviewRound 保留来源;Core 不从散文中推导语义接受
|
|
|
128
219
|
获得受管 worktree。`scratch` 选择一个 Task 拥有的目录。`local` 需要一个已登记的 local
|
|
129
220
|
Resource 及其 grant;Project ID 不是 local Resource ID。
|
|
130
221
|
|
|
222
|
+
`task activate` 是对已有请求的前台采用,不是创建激活意图的另一条路径。
|
|
223
|
+
没有请求的 Draft 会在资源准备前被拒绝;命令不代填环境计划或 request ID。
|
|
224
|
+
|
|
131
225
|
资源准备先于对 Task 状态和工作区所有权的原子采用。一次失败的采用记录一个失败请求,
|
|
132
226
|
并用持久事实通知 Leader;在失败未变时它不反复准备资源。Leader 选择显式重试或修正后的
|
|
133
227
|
请求。成功激活同样为 Leader 留下一条交付通知。激活绝不把活动 Session 变更为交付权限。
|
|
@@ -81,3 +81,65 @@ raw Provider history merely to explain a status.
|
|
|
81
81
|
Start with exact read-only records. Process changes, cancellation, grant updates
|
|
82
82
|
and resource cleanup require the relevant explicit action and scope. A generic
|
|
83
83
|
diagnostic request does not authorize live-model, shared or production tests.
|
|
84
|
+
|
|
85
|
+
## Task usage and time
|
|
86
|
+
|
|
87
|
+
Task overview, Web Task/WorkItem cards and `execution audit` use the same pure
|
|
88
|
+
projection of authorized Task events. Reading never samples a Provider or opens
|
|
89
|
+
raw transcripts. There is no new metric store, migration, price table or budget
|
|
90
|
+
policy. Existing history remains readable.
|
|
91
|
+
|
|
92
|
+
Each metric has `value`, `status` (`known`, `partial`, `unknown`) and `reasons`.
|
|
93
|
+
Unknown is `null`, not zero. A known zero requires actual numeric evidence.
|
|
94
|
+
Partial is an observed subtotal, not a complete bill or guaranteed monotonic
|
|
95
|
+
lower bound. Coverage names the observed Session identities, source/semantics
|
|
96
|
+
and evidence cutoff; it is not a percentage of an unknowable Provider total.
|
|
97
|
+
The declared basis is Task-fenced, observed sources only.
|
|
98
|
+
JSON consumers read `cost.tokens.value` and `cost.toolCalls.value` with their
|
|
99
|
+
status/reasons, replacing the numeric placeholders and observable flags.
|
|
100
|
+
`elapsedSeconds` and `executionSeconds` replace the misleading Group-sum
|
|
101
|
+
`wallClockSeconds`; this changes a read projection, not persistent storage.
|
|
102
|
+
|
|
103
|
+
- Request usage reuses the Session reducer: stable request identity, latest
|
|
104
|
+
received revision, input plus output, no extra addition of cache/reasoning
|
|
105
|
+
subsets. Missing boundaries, mixed semantics and cumulative rollback are not
|
|
106
|
+
guessed. Remaining context is capacity, never consumption.
|
|
107
|
+
- Replaced Sessions remain in the lifetime view. A nonzero first cumulative
|
|
108
|
+
snapshot is an excluded baseline: it may predate the Task. Later comparable
|
|
109
|
+
increments are partial; one nonzero snapshot alone yields unknown Task usage.
|
|
110
|
+
A zero baseline supports the subsequent counter. JSON also exposes raw
|
|
111
|
+
Session counters separately; they are not additional Task consumption.
|
|
112
|
+
- Direct Leader chat can contribute without a Run or WorkItem. WorkItems
|
|
113
|
+
receive only request usage whose revisions share one exact, matching Run
|
|
114
|
+
binding. Cumulative counters are not apportioned. Raw whole-Session totals
|
|
115
|
+
are not exposed as WorkItem usage. Task totals need not equal WorkItem sums.
|
|
116
|
+
- Child counters are excluded because the current contract cannot prove they
|
|
117
|
+
are additional to the parent. Child evidence marks coverage partial. Conflicting
|
|
118
|
+
Role ownership of one native counter is unknown, not two independent totals.
|
|
119
|
+
- Tool counts deduplicate retained exact native Session/Turn/operation identities,
|
|
120
|
+
including failures. Operation history is compacted, so this is always partial
|
|
121
|
+
when evidence exists and unknown otherwise. Absence never proves zero tools.
|
|
122
|
+
|
|
123
|
+
**Task elapsed** runs from Task creation (including planning and waiting) to its
|
|
124
|
+
recorded completion, retirement or cancellation, or to the read time if active.
|
|
125
|
+
An archived Task keeps its original endpoint; missing terminal evidence is
|
|
126
|
+
unknown. Group count is irrelevant.
|
|
127
|
+
|
|
128
|
+
**Observed native execution sum** merges overlapping complete Turn intervals
|
|
129
|
+
within one native resource and adds independent parallel resources. Two
|
|
130
|
+
independent ten-second intervals can total twenty seconds during ten seconds of
|
|
131
|
+
elapsed time. It is not CPU/GPU time. Since Turn history is compacted, this is
|
|
132
|
+
partial; missing start/end and live Turns are excluded, never extended indefinitely.
|
|
133
|
+
Subsecond precision is retained. WorkItem cards do not substitute Group duration
|
|
134
|
+
for either measure.
|
|
135
|
+
|
|
136
|
+
The audit `usage` section is explicitly **Task lifetime** even when `--since` or
|
|
137
|
+
`--until` filters other sections. It does not offer window consumption; filtering
|
|
138
|
+
cumulative snapshots first would mislabel historical usage as window usage.
|
|
139
|
+
Its existing AgentRun-duration section remains a separately labeled Run metric.
|
|
140
|
+
|
|
141
|
+
Deterministic fixtures cover the shared reducer and CLI/Web/audit semantics.
|
|
142
|
+
They do not establish live Provider completeness. Built-in normalization supports
|
|
143
|
+
Codex cumulative and Claude request observations when supplied; this delivery
|
|
144
|
+
does not collect real-model billing evidence or assert Provider behavior was
|
|
145
|
+
live-tested.
|
|
@@ -69,3 +69,50 @@ Telemetry 和缓存是诊断材料,不是 Task 真相,也不是 transcript
|
|
|
69
69
|
|
|
70
70
|
从精确的只读记录开始。进程变更、取消、grant 更新和资源清理都需要相应的显式动作
|
|
71
71
|
与范围。一个笼统的诊断请求不授权真实模型、共享或生产环境的测试。
|
|
72
|
+
|
|
73
|
+
## Task 用量与耗时
|
|
74
|
+
|
|
75
|
+
Task overview、Web Task/WorkItem 卡片和 `execution audit` 共用授权 Task
|
|
76
|
+
事件的纯读投影。读取不采样 Provider、不打开原始 transcript;没有新增指标存储、
|
|
77
|
+
迁移、价格表或预算策略,既有历史仍可读。
|
|
78
|
+
|
|
79
|
+
每项指标带 `value`、`status`(`known`、`partial`、`unknown`)和 `reasons`。
|
|
80
|
+
未知为 `null`,不是零;真实零必须有数值证据。部分值是已观测小计,不是完整账单,
|
|
81
|
+
也不保证是单调增长的下界。覆盖说明包括已观测 Session 身份、来源/计数语义和
|
|
82
|
+
证据截止点,不对不可知的 Provider 总量伪造覆盖百分比。口径是 Task 围栏内的
|
|
83
|
+
已观测来源。
|
|
84
|
+
JSON 使用方改读 `cost.tokens.value`、`cost.toolCalls.value` 及其状态/原因,
|
|
85
|
+
不再读取数字占位和 observable 标志。`elapsedSeconds`、`executionSeconds`
|
|
86
|
+
替代含义错误的 Group 求和 `wallClockSeconds`;这是读投影变更,不是持久存储变更。
|
|
87
|
+
|
|
88
|
+
- 请求用量复用 Session reducer:按稳定请求身份取最后收到的修订,累加输入与
|
|
89
|
+
输出,缓存/推理子项不重复增加。缺失边界、混合语义、累计回退不猜测;剩余
|
|
90
|
+
上下文是容量,不是消费。
|
|
91
|
+
- Session 替换不抹去历史。首次非零累计快照可能早于 Task,因此作为排除基线;
|
|
92
|
+
后续可比增量为部分值,仅一个非零快照时 Task 用量未知。零基线可支持后续
|
|
93
|
+
累计值。JSON 单独暴露原始 Session 计数,它不是额外的 Task 消费。
|
|
94
|
+
- Leader 直聊不需要伪造 Run/WorkItem。WorkItem 仅接收各次修订均绑定同一
|
|
95
|
+
精确、匹配 Run 的请求用量;累计值不摊派,整个 Session 的原始计数不冒充
|
|
96
|
+
WorkItem 用量。Task 总量不必等于 WorkItem 小计之和。
|
|
97
|
+
- 当前合同无法证明子执行计数在父统计之外,因此排除子计数并将覆盖标为部分。
|
|
98
|
+
多个 Role 对同一原生计数器的归属冲突为未知,不当成两份独立总量。
|
|
99
|
+
- 工具次数按保留的精确原生 Session/Turn/operation 身份去重,失败调用也计一次。
|
|
100
|
+
工具历史已压缩,有证据时只能是部分次数;无证据为未知,不能推出零调用。
|
|
101
|
+
|
|
102
|
+
**任务历时**从 Task 创建(含规划和等待)到记录的完成、退役或取消时间;
|
|
103
|
+
活动 Task 截止本次读取时间。归档保留原终点,终态证据缺失则未知,与 Group
|
|
104
|
+
数量无关。
|
|
105
|
+
|
|
106
|
+
**已观测原生执行累计**合并同一原生资源上起止完整、彼此重叠的 Turn 区间,
|
|
107
|
+
再相加独立并行资源。两个独立执行各十秒,可以在十秒自然时间内累计二十秒。
|
|
108
|
+
它不是 CPU/GPU 时间。由于 Turn 历史已压缩,该指标为部分值;缺少起止证据和
|
|
109
|
+
运行中的 Turn 不计入,不无限延长。保留不足一秒的精度,WorkItem 卡片不再用
|
|
110
|
+
Group 时长替代上述含义。
|
|
111
|
+
|
|
112
|
+
即使 `--since`、`--until` 过滤其他审计部分,`usage` 部分仍明确为 **Task 全生命周期**。
|
|
113
|
+
首版不提供窗口消费,不能先过滤累计快照,再把历史消费称为窗口用量。
|
|
114
|
+
既有 AgentRun 时长部分保留为单独标明的 Run 指标。
|
|
115
|
+
|
|
116
|
+
确定性 fixture 验证共享 reducer 和 CLI/Web/audit 语义,不证明真实 Provider 的
|
|
117
|
+
覆盖完整性。内置归一化支持来源所提供的 Codex 累计观察和 Claude 请求观察;
|
|
118
|
+
本次交付不采集真实模型账单证据,也不声称已实测真实 Provider 行为。
|
package/docs/plugin-sdk.md
CHANGED
|
@@ -374,8 +374,10 @@ Publication rechecks the complete contribution, dependencies and permissions
|
|
|
374
374
|
again. A failure does not change the existing directory; a competing
|
|
375
375
|
activate/disable makes a late candidate refuse to publish. After a successful
|
|
376
376
|
publication, the old generation only serves existing references and is disposed
|
|
377
|
-
once drained
|
|
378
|
-
|
|
377
|
+
once drained. A cleanup failure is retained on that plugin's diagnostic channel
|
|
378
|
+
with the old generation identity, even if another replacement has already
|
|
379
|
+
published. It is not a Task Artifact, does not roll back the new Provider, and
|
|
380
|
+
does not pretend the current instance is still unpublished.
|
|
379
381
|
|
|
380
382
|
## Storage and other ingress
|
|
381
383
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<p align="right"><strong>English</strong> | <a href="./project-refresh.zh-CN.md">简体中文</a></p>
|
|
2
|
+
|
|
3
|
+
# Project refresh
|
|
4
|
+
|
|
5
|
+
`yui project refresh <project>` refreshes the canonical Project checkout from
|
|
6
|
+
the Project's configured remote and stable branch. Stable and development
|
|
7
|
+
branches must match. The per-Project maintenance fence covers the operation;
|
|
8
|
+
Task workspaces and their recorded bases are not refreshed by this command.
|
|
9
|
+
|
|
10
|
+
## Two separate facts
|
|
11
|
+
|
|
12
|
+
The checkout HEAD and a local remote-tracking ref are distinct observations.
|
|
13
|
+
Refresh fetches the exact branch into a unique temporary ref, compares its
|
|
14
|
+
commit with the remote's advertised commit, and permits only a clean
|
|
15
|
+
fast-forward from the original HEAD on the stable branch. Configured `HEAD`
|
|
16
|
+
is resolved through the remote's symbolic HEAD, never a guessed default branch.
|
|
17
|
+
|
|
18
|
+
When exactly one existing Git remote and fetch mapping manages a safe tracking
|
|
19
|
+
destination, refresh also updates that destination to the verified commit.
|
|
20
|
+
This runs even when HEAD is already current, repairing stale tracking refs
|
|
21
|
+
that would otherwise make ordinary Git show a false `ahead` count.
|
|
22
|
+
|
|
23
|
+
The mapping uses Git's effective fetch URL, including `insteadOf` resolution,
|
|
24
|
+
and full-ref exact or one-star fetch refspecs with negative exclusions. It
|
|
25
|
+
does not assume `origin` or `refs/remotes/<remote>/<branch>`. A configured
|
|
26
|
+
destination under `refs/remotes/` can be created if absent. Multiple matching
|
|
27
|
+
remotes/URLs, multiple destinations, another source managing the same target,
|
|
28
|
+
unsupported refspecs, local-branch/tag destinations and symbolic destinations
|
|
29
|
+
are explicitly unmanaged. Push URLs never establish fetch identity.
|
|
30
|
+
|
|
31
|
+
Only the unique mapped ref can change. Fetch does not opportunistically update
|
|
32
|
+
other tracking refs, fetch/prune tags, recurse into submodules, or write
|
|
33
|
+
`FETCH_HEAD`. Remote/upstream configuration is never rewritten. Read-only
|
|
34
|
+
tracking observations use the same mapping proof and return no tracking match
|
|
35
|
+
when it is not uniquely established.
|
|
36
|
+
|
|
37
|
+
## Results and concurrent changes
|
|
38
|
+
|
|
39
|
+
- `fromCommit`, `toCommit` and `changed` describe HEAD; `changed: false` does
|
|
40
|
+
not imply that no tracking repair occurred.
|
|
41
|
+
- `tracking.status` is `updated` or `current` for a synchronized target,
|
|
42
|
+
with its exact ref and old/new object IDs.
|
|
43
|
+
- `tracking.status: unmanaged` includes a reason. HEAD can still refresh
|
|
44
|
+
successfully, but this is not a claim of tracking consistency.
|
|
45
|
+
- Once work has started, a failed refresh uses the existing nonzero
|
|
46
|
+
`RUNTIME_ERROR` channel. JSON `details.refresh` retains observed HEAD,
|
|
47
|
+
the verified commit when available, and the tracking result (`failed` for
|
|
48
|
+
a managed target). Missing/unreadable observations are nullable. Text
|
|
49
|
+
errors also state the actual partial result. Preconditions can fail
|
|
50
|
+
before any mutation without a partial-result record.
|
|
51
|
+
|
|
52
|
+
Refresh rechecks the mapping, cleanliness, branch and HEAD around the update.
|
|
53
|
+
A Git ref transaction verifies the stable branch and compares the tracking
|
|
54
|
+
target against its captured old value (or absence) before writing it. A local
|
|
55
|
+
ref race, changed mapping, divergent checkout or fetched/advertised mismatch
|
|
56
|
+
fails visibly. After a fast-forward, a failed tracking update leaves HEAD at
|
|
57
|
+
its actual new commit; it never rolls back or overwrites a competing ref.
|
|
58
|
+
There is no automatic retry, replay or background synchronizer.
|
|
59
|
+
|
|
60
|
+
Temporary-ref cleanup compares the known fetched object before deletion.
|
|
61
|
+
An unsuccessful cleanup reports the retained ref; an interrupted/failed fetch
|
|
62
|
+
can report the exact temporary namespace to inspect. These are Git diagnostics,
|
|
63
|
+
not durable Task progress or a new recovery protocol.
|
|
64
|
+
|
|
65
|
+
The maintenance fence serializes Yui maintenance, not arbitrary external Git
|
|
66
|
+
commands or user edits. Checks and Git locks bound the observed operation;
|
|
67
|
+
they do not promise that local or remote state cannot change after observation.
|
|
68
|
+
Ordinary `git status` loses the false `ahead` count only when the current
|
|
69
|
+
branch's upstream is the tracking ref refreshed here. A different/missing
|
|
70
|
+
upstream is left untouched and carries no such promise.
|
|
71
|
+
|
|
72
|
+
## Scope of adoption
|
|
73
|
+
|
|
74
|
+
This operation adds no persistent Yui schema or migration. Installing code
|
|
75
|
+
that implements it does not itself refresh a real Project. A normal authorized
|
|
76
|
+
refresh applies the behavior; Task completion, integration, publication and
|
|
77
|
+
archive remain separate operations.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<p align="right"><a href="./project-refresh.md">English</a> | <strong>简体中文</strong></p>
|
|
2
|
+
|
|
3
|
+
# Project refresh
|
|
4
|
+
|
|
5
|
+
`yui project refresh <project>` 按 Project 配置的 remote 和 stable branch 刷新
|
|
6
|
+
规范 checkout。stable 与 development branch 必须一致。操作全程持有 per-Project
|
|
7
|
+
maintenance fence;不会刷新 Task 工作区或改写其记录的基线。
|
|
8
|
+
|
|
9
|
+
## 两个独立事实
|
|
10
|
+
|
|
11
|
+
checkout HEAD 与本地 remote-tracking ref 是不同的观察。refresh 将精确分支获取到
|
|
12
|
+
唯一临时 ref,比较获取到的提交与远端 advertised commit,仅允许从原 HEAD 在干净的
|
|
13
|
+
稳定分支上 fast-forward。配置为 `HEAD` 时解析远端 symbolic HEAD,不猜默认分支。
|
|
14
|
+
|
|
15
|
+
当且仅当一个既有 Git remote 及其 fetch 映射管理安全的 tracking 目标时,refresh
|
|
16
|
+
同时将该目标更新到已验证的提交。HEAD 已最新也执行这一检查,修复会让普通 Git
|
|
17
|
+
错误显示 `ahead` 的陈旧 tracking ref。
|
|
18
|
+
|
|
19
|
+
映射使用 Git 生效的 fetch URL(包括 `insteadOf` 解析),支持完整 ref 名称的
|
|
20
|
+
精确或单星号 fetch refspec,并处理负向排除。不假定 `origin` 或
|
|
21
|
+
`refs/remotes/<remote>/<branch>`。已配置的 `refs/remotes/` 目标缺失时可以创建。
|
|
22
|
+
多个匹配 remote/URL、多个目标、其他来源也管理同一目标、不支持的 refspec、
|
|
23
|
+
本地分支/标签目标和符号引用目标,均明确标为未管理。push URL 不证明 fetch 身份。
|
|
24
|
+
|
|
25
|
+
只允许修改唯一映射目标。fetch 不顺带更新其他 tracking refs、不获取/修剪标签、
|
|
26
|
+
不递归获取 submodule、不写入 `FETCH_HEAD`,也不改 remote/upstream 配置。
|
|
27
|
+
只读 tracking 观察复用相同映射证明;无法唯一确证时不返回 tracking 匹配。
|
|
28
|
+
|
|
29
|
+
## 结果与竞争
|
|
30
|
+
|
|
31
|
+
- `fromCommit`、`toCommit`、`changed` 描述 HEAD;`changed: false` 不代表没有
|
|
32
|
+
发生 tracking 修复。
|
|
33
|
+
- `tracking.status` 为 `updated` 或 `current` 时,目标已同步,并包含精确 ref
|
|
34
|
+
和新旧对象 ID。
|
|
35
|
+
- `tracking.status: unmanaged` 带有原因。HEAD 仍可刷新成功,但不声称 tracking
|
|
36
|
+
一致。
|
|
37
|
+
- 操作开始后失败,沿用非零的 `RUNTIME_ERROR` 通道。JSON 的 `details.refresh`
|
|
38
|
+
保留实际观察到的 HEAD、可用时的已验证提交和 tracking 结果(受管目标为
|
|
39
|
+
`failed`)。缺失或不可读的观察可为 null。文本错误也说明实际部分结果。
|
|
40
|
+
变更前的前置条件失败可以不带部分结果。
|
|
41
|
+
|
|
42
|
+
refresh 在更新前后复查映射、干净状态、分支与 HEAD。Git ref 事务同时验证稳定分支,
|
|
43
|
+
并以捕获的旧值(或不存在)比较后写入 tracking 目标。本地 ref 竞争、映射变化、
|
|
44
|
+
checkout 分歧或 fetched/advertised 不一致都会显式失败。ff 之后 tracking 更新失败,
|
|
45
|
+
HEAD 保留实际的新提交;不会回滚或覆盖竞争方的 ref。不自动重试、重放,也没有后台
|
|
46
|
+
同步器。
|
|
47
|
+
|
|
48
|
+
清理临时 ref 时比较已知 fetched 对象后才删除。清理失败报告保留的 ref;获取中断或
|
|
49
|
+
失败可报告供检查的精确临时命名空间。这些是 Git 诊断,不是持久 Task 进度或新恢复协议。
|
|
50
|
+
|
|
51
|
+
maintenance fence 串行化 Yui 维护,不锁住任意外部 Git 命令或用户编辑。检查和 Git
|
|
52
|
+
锁约束本次观察,不承诺观察之后本地或远端不再变化。只有当前分支 upstream 指向此次
|
|
53
|
+
刷新的 tracking ref,普通 `git status` 才会消除相应虚假 `ahead`。不同或缺失的
|
|
54
|
+
upstream 保持原样,不作这一承诺。
|
|
55
|
+
|
|
56
|
+
## 采用边界
|
|
57
|
+
|
|
58
|
+
本操作不新增 Yui 持久 schema 或迁移。安装实现代码不等于刷新真实 Project;
|
|
59
|
+
正常获授权的 refresh 才应用此行为。Task 完成、集成、发布和归档仍是独立操作。
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Bounded Provider recovery
|
|
2
|
+
|
|
3
|
+
Yui can continue an owned input after a positively identified transient Provider
|
|
4
|
+
failure without discarding its Session or local work. The Driver supplies failure
|
|
5
|
+
and native-state evidence; the Controller schedules and atomically admits the
|
|
6
|
+
next input. Agents still own semantic recovery and acceptance.
|
|
7
|
+
|
|
8
|
+
- At most five automatic attempts after the initial failure, within ten minutes.
|
|
9
|
+
- Exponential windows start at five seconds and cap at sixty seconds, with
|
|
10
|
+
50–100% jitter. A trusted Retry-After is a minimum, with positive jitter.
|
|
11
|
+
A wait beyond the remaining deadline ends automatic recovery.
|
|
12
|
+
- Busy/admission waiting does not consume a model attempt. Acceptance, heartbeat
|
|
13
|
+
and partial output do not reset the streak. Only the matching successful
|
|
14
|
+
native terminal ends the chain; audit history remains.
|
|
15
|
+
- A rejected input retains its original durable reference. An accepted failed
|
|
16
|
+
Turn gets a new Turn in the same Session with a system recovery instruction:
|
|
17
|
+
inspect existing work and receipts and continue only unfinished actions.
|
|
18
|
+
- Unknown acceptance is never replayed. Existing exact-identity reconciliation
|
|
19
|
+
may supply the missing outcome. Restarting the Controller does not reset the
|
|
20
|
+
counter, deadline, pending input or writer fence.
|
|
21
|
+
- An explicit manual retry of the same Run retains its recovery lineage,
|
|
22
|
+
automatic count and original deadline. It is not charged as an automatic
|
|
23
|
+
attempt, but a further failure cannot replenish automatic allowance.
|
|
24
|
+
|
|
25
|
+
The records live on the existing Provider binding, with indexed pending-record
|
|
26
|
+
reads and the existing Controller deadline timer. There is no retry Task status,
|
|
27
|
+
second queue, automatic Session replacement, account-wide circuit breaker or
|
|
28
|
+
model switch. The original failed AgentRun stays failed; ordinary Run/Review
|
|
29
|
+
retry primitives own its successor and keep the original ReviewRound.
|
|
30
|
+
|
|
31
|
+
## Inspect and control
|
|
32
|
+
|
|
33
|
+
Task Sessions:
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
yui task role session retry <task> <role> show
|
|
37
|
+
yui task role session retry <task> <role> cancel
|
|
38
|
+
yui task role session retry <task> <role> disable
|
|
39
|
+
yui task role session retry <task> <role> enable
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Global Sessions use `yui session retry <role> show|cancel|disable|enable`.
|
|
43
|
+
This narrow existing Session surface does not register the unrelated
|
|
44
|
+
top-level Global `role` command family.
|
|
45
|
+
|
|
46
|
+
The same projection appears in Context, Session inspection and the Web role
|
|
47
|
+
panel. `cancel` withdraws this recovery chain; `disable` also disables future
|
|
48
|
+
chains on the current Provider binding. Neither interrupts an admitted Turn.
|
|
49
|
+
`enable` does not replay historical failures. Existing Task/Role authority applies.
|
|
50
|
+
|
|
51
|
+
## Supported boundary and adoption
|
|
52
|
+
|
|
53
|
+
Current controlled Codex Hosts advertise exact recovery support. The native
|
|
54
|
+
preflight checks the latest failed Turn identity for accepted-input recovery
|
|
55
|
+
and a complete empty background-terminal page; ordinary `systemError` admission
|
|
56
|
+
remains closed. Missing protocol methods, a changed/active Turn, unresolved
|
|
57
|
+
background execution or a changed Session/configuration require inspection,
|
|
58
|
+
not automatic cleanup. Native chats without an owned input reference, old Hosts,
|
|
59
|
+
and Adapters without this proof capability are not automatically replayed.
|
|
60
|
+
Claude/ACP retain their normal error and explicit recovery behavior.
|
|
61
|
+
|
|
62
|
+
Storage transition 26→27 adds optional recovery/input facts and indexes without
|
|
63
|
+
scanning or scheduling old failures. Adoption requires the normal explicitly
|
|
64
|
+
authorized release/upgrade and compatible Host lifecycle. Building or completing
|
|
65
|
+
this Task does not enable the change in an already-running shared instance.
|
|
66
|
+
|
|
67
|
+
Deterministic checks use disposable SQLite Homes, fake native protocol and
|
|
68
|
+
injected time; they do not establish real-provider behavior or idempotency of
|
|
69
|
+
arbitrary external tools. External effects still require their normal authority
|
|
70
|
+
and receipt/idempotency protections.
|
package/docs/provider-runtime.md
CHANGED
|
@@ -91,7 +91,9 @@ The codec must not implement another Task/Run Store or invent native Turn IDs.
|
|
|
91
91
|
Model, effort and permission requests are compiled against the peer's offered
|
|
92
92
|
configuration axes and checked after application. Setters can change other axes;
|
|
93
93
|
final observed values must still satisfy the requested launch before prompt.
|
|
94
|
-
|
|
94
|
+
New and loaded Sessions must report `configOptions` (an empty array is valid).
|
|
95
|
+
Configuration uses `session/set_config_option`; mode-only peers are unsupported.
|
|
96
|
+
An acknowledgement without current reported values cannot satisfy a requested change.
|
|
95
97
|
Unknown ACP products do not inherit a guessed bypass mode from another product.
|
|
96
98
|
|
|
97
99
|
Yui distinguishes three configuration layers:
|
|
@@ -73,8 +73,10 @@ ACP 协商初始化和 Session 能力,打开或加载一个确切的 Session
|
|
|
73
73
|
Task/Run Store,也不得编造原生 Turn ID。
|
|
74
74
|
|
|
75
75
|
model、effort 和权限请求依据 peer 提供的配置轴编译,并在套用后检查。setter 可以
|
|
76
|
-
改变其他轴;最终观察到的值在 prompt
|
|
77
|
-
|
|
76
|
+
改变其他轴;最终观察到的值在 prompt 之前仍必须满足请求的启动。
|
|
77
|
+
新建和加载 Session 都必须回报 `configOptions`(可以为空数组),配置只使用
|
|
78
|
+
`session/set_config_option`,不再支持 mode-only peer。仅确认调用、没有当前回报值
|
|
79
|
+
不能证明请求的配置已生效。未知的 ACP 产品不从另一个产品继承猜测的旁路模式。
|
|
78
80
|
|
|
79
81
|
Yui 区分三个配置层:
|
|
80
82
|
|