@zq-silk/yui 0.15.9 → 0.15.12
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 +8 -4
- package/ARCHITECTURE.zh-CN.md +5 -2
- package/README.md +13 -5
- package/dist/agent/launchEnvironment.js +7 -0
- package/dist/agentRun/agentRun.js +3 -0
- package/dist/cli/commandCatalog.js +64 -16
- package/dist/cli/interactionPolicy.js +7 -3
- package/dist/cli/managedDiagnostics.js +1 -1
- package/dist/cli/updateOrchestrator.js +24 -1
- package/dist/cli/updatePorts.js +7 -3
- package/dist/cli/upgradeCommand.js +42 -2
- package/dist/cli.js +381 -107
- package/dist/commands/executionAuditCommands.js +10 -0
- package/dist/commands/globalRoleCommands.js +339 -4
- package/dist/commands/projectCommands.js +50 -22
- package/dist/commands/releaseCommands.js +18 -0
- package/dist/commands/taskActor.js +25 -0
- package/dist/commands/taskCommands.js +586 -96
- package/dist/commands/taskIntegrationCommands.js +19 -39
- package/dist/commands/taskIntegrationQueueCommands.js +1 -1
- package/dist/commands/taskOverviewCommand.js +4 -3
- package/dist/commands/taskPublicationAdoptCommand.js +127 -0
- package/dist/commands/taskPublicationCommands.js +11 -2
- package/dist/commands/taskPublicationVerifyCommand.js +23 -39
- package/dist/commands/taskRemoteDeliveryCommand.js +22 -11
- package/dist/commands/taskRoleRuntimeStatus.js +35 -0
- package/dist/context/runContextPack.js +3 -0
- package/dist/context/taskCatalog.js +187 -0
- package/dist/context/taskContext.js +55 -6
- package/dist/controller/agentHostObservation.js +155 -0
- package/dist/controller/clientRuntime.js +17 -2
- package/dist/controller/controller.js +14 -2
- package/dist/controller/fileSchedulerStoreAdapter.js +519 -25
- package/dist/controller/globalInputDelivery.js +132 -0
- package/dist/controller/jobControl.js +6 -2
- package/dist/controller/providerRetryAdmission.js +100 -0
- package/dist/controller/providerRetryDelivery.js +218 -0
- package/dist/controller/resourceInventory.js +14 -4
- package/dist/controller/resourceInventoryLinux.js +2 -6
- package/dist/controller/runtime.js +117 -7
- package/dist/controller/runtimeEventInbox.js +32 -3
- package/dist/controller/runtimeEventProcessor.js +26 -6
- package/dist/controller/runtimeHookRunFence.js +75 -19
- package/dist/controller/structuredProviderObservation.js +133 -70
- package/dist/coordination/workMailboxQueue.js +5 -0
- package/dist/execution/workItemExecutionProjection.js +1 -1
- package/dist/executor/agentExecutor.js +64 -4
- package/dist/executor/executorRegistry.js +3 -0
- package/dist/executor/fileRoleLaunchPlanner.js +78 -118
- package/dist/integration/deliveryObligation.js +2 -1
- package/dist/integration/gitIntegrationService.js +329 -386
- package/dist/integration/integrationAttempt.js +30 -4
- package/dist/integration/integrationQueueService.js +7 -7
- package/dist/integration/integrationSourceApplication.js +323 -0
- package/dist/lifecycle/exactRunTerminalization.js +4 -1
- package/dist/message/globalInterrupt.js +33 -0
- package/dist/message/globalProviderRetry.js +15 -0
- package/dist/message/inputControlResolution.js +106 -0
- package/dist/message/message.js +367 -0
- package/dist/message/messageContinuation.js +126 -3
- package/dist/message/taskInterrupt.js +34 -0
- package/dist/observability/executionAudit.js +19 -0
- package/dist/observability/orchestrationMetrics.js +1 -1
- package/dist/release/releaseHandover.js +22 -0
- package/dist/release/releaseWorkflowPorts.js +15 -7
- package/dist/repository/gitWorkspace.js +430 -107
- package/dist/repository/projectMaintenanceLock.js +75 -18
- package/dist/repository/taskWorkspaceCoordinator.js +182 -101
- package/dist/repository/taskWorkspacePreparer.js +205 -72
- package/dist/repository/workItemCandidateSnapshot.js +34 -0
- package/dist/repository/workspaceCleanupInspection.js +187 -0
- package/dist/resources/resourceDiscovery.js +3 -2
- package/dist/runtime/agentError.js +5 -3
- package/dist/runtime/agentHost.js +179 -82
- package/dist/runtime/agentHostCompatibility.js +127 -0
- package/dist/runtime/agentHostProtocol.js +53 -0
- package/dist/runtime/builtinAgentErrorMappers.js +91 -0
- package/dist/runtime/codexAppServerRuntime.js +34 -3
- package/dist/runtime/executionEnvironment.js +0 -19
- package/dist/runtime/launchBroker.js +6 -0
- package/dist/runtime/providerControl.js +5 -1
- package/dist/runtime/providerRetry.js +198 -0
- package/dist/runtime/providerRuntimeIdentity.js +28 -2
- package/dist/runtime/sessionReconciliation.js +4 -4
- package/dist/runtime/sessionTokenMetrics.js +15 -5
- package/dist/runtime/structuredProviderHost.js +6 -2
- package/dist/runtime/taskRuntimeIsolation.js +30 -6
- package/dist/runtime/taskUsageMetrics.js +275 -0
- package/dist/runtime/tmuxAdapters.js +5 -3
- package/dist/scheduler/activeRoleRunDelivery.js +12 -0
- package/dist/scheduler/leaderWakeupProcessor.js +5 -0
- package/dist/scheduler/operatorEvent.js +4 -0
- package/dist/scheduler/taskExecutionProjection.js +38 -6
- package/dist/scheduler/taskObservabilityProjection.js +6 -44
- package/dist/scheduler/wakeReason.js +7 -1
- package/dist/scheduler/wakeupQueue.js +2 -0
- package/dist/setup/setupCommand.js +26 -8
- package/dist/storage/homeLayout.js +130 -0
- package/dist/storage/migrations/collapseWorktreeLayout.js +963 -0
- package/dist/storage/migrations/integrationContinuation.js +104 -0
- package/dist/storage/migrations/unifyHomeLayout.js +925 -0
- package/dist/storage/sqliteSchema.js +167 -4
- package/dist/storage/sqliteStore.js +57 -1
- package/dist/storage/storageVersions.js +1 -1
- package/dist/storage/storeRpc.js +2 -0
- package/dist/storage/taskCatalog.js +123 -0
- package/dist/storage/taskStore.js +2 -0
- package/dist/storage/upgrade/upgradeOrchestrator.js +95 -2
- package/dist/task/archiveDiagnostics.js +129 -0
- package/dist/task/archivePreflight.js +124 -0
- package/dist/task/nextAction.js +44 -11
- package/dist/task/publicationAdoption.js +56 -0
- package/dist/task/publicationReference.js +10 -0
- package/dist/task/remoteDelivery.js +31 -16
- package/dist/web/assets/client/app.js +147 -17
- package/dist/web/assets/client/components.js +56 -13
- package/dist/web/assets/client/i18n.js +78 -4
- package/dist/web/assets/client/taskSurface.js +108 -1
- package/dist/web/assets/client/view.js +39 -8
- package/dist/web/assets/shell.js +29 -0
- package/dist/web/assets/styles/layout.js +8 -1
- package/dist/web/assets/styles/widgets.js +12 -0
- package/dist/web/webServer.js +131 -4
- package/dist/web/webSnapshot.js +16 -6
- package/dist/web/webTaskSurface.js +222 -5
- package/dist/workspace/cleanupInspection.js +63 -0
- package/dist/workspace/workItemChangeSetManager.js +111 -35
- 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 +30 -5
- package/docs/architecture/capabilities-and-resources.zh-CN.md +23 -3
- package/docs/managed-turn-and-session-runtime.md +47 -0
- package/docs/managed-turn-and-session-runtime.zh-CN.md +40 -0
- package/docs/observability/README.md +62 -0
- package/docs/observability/README.zh-CN.md +47 -0
- 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/release-workflow.md +39 -0
- package/docs/release-workflow.zh-CN.md +29 -0
- package/docs/sqlite-control-plane-design.md +223 -1
- package/docs/task-delivery.md +133 -13
- package/docs/task-delivery.zh-CN.md +99 -10
- package/docs/task-discovery.md +102 -0
- package/docs/task-discovery.zh-CN.md +86 -0
- package/docs/testing/verification-levels.md +40 -0
- package/docs/testing/verification-levels.zh-CN.md +23 -0
- package/i18n/README.zh-CN.md +13 -7
- package/package.json +1 -1
- package/skills/yui-leader/references/execution.md +154 -51
- package/skills/yui-leader/references/integration.md +52 -2
- package/skills/yui-operator/SKILL.md +19 -3
- package/skills/yui-reviewer/SKILL.md +4 -0
- package/skills/yui-runtime/SKILL.md +42 -0
- package/skills/yui-runtime/references/publication.md +42 -0
- package/skills/yui-runtime/references/recovery.md +24 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { durableJobIdempotencyKey } from "../../job/durableJob.js";
|
|
4
|
+
import { resolveProjectVerificationPlan, verificationPlanDigest, planBootstrapJobSteps, planL2JobSteps } from "../../verification/verificationPlan.js";
|
|
5
|
+
/** Classify only known v19 Git conflicts. Manual strategy and CAS blockers
|
|
6
|
+
* keep their meaning. Never synthesize candidate/Job success or edit history. */
|
|
7
|
+
export function migrateIntegrationContinuation(db) {
|
|
8
|
+
const rows = db.prepare("SELECT task_id, integration_id, payload FROM integration_attempts").all();
|
|
9
|
+
const update = db.prepare("UPDATE integration_attempts SET status = ?, payload = ? WHERE task_id = ? AND integration_id = ?");
|
|
10
|
+
for (const row of rows) {
|
|
11
|
+
const attempt = JSON.parse(row.payload);
|
|
12
|
+
if (attempt.schemaVersion !== 6)
|
|
13
|
+
continue;
|
|
14
|
+
const proven = migrateBoundFastForward(db, attempt);
|
|
15
|
+
if (proven !== undefined) {
|
|
16
|
+
update.run(proven.status, JSON.stringify(proven), row.task_id, row.integration_id);
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (attempt.status !== "blocked")
|
|
20
|
+
continue;
|
|
21
|
+
const source = attempt.source;
|
|
22
|
+
const summary = attempt.conflict?.summary;
|
|
23
|
+
if (typeof summary !== "string")
|
|
24
|
+
continue;
|
|
25
|
+
const ordinary = (source?.kind === "upstream" && source.strategy === "rebase"
|
|
26
|
+
&& summary.startsWith("Upstream rebase conflicts"))
|
|
27
|
+
|| (source?.kind === "work-item" && source.strategy === "merge"
|
|
28
|
+
&& summary.startsWith("WorkItem merge conflicts"))
|
|
29
|
+
|| (source?.kind === "work-item" && source.strategy === "cherry-pick"
|
|
30
|
+
&& summary.startsWith(`WorkItem ${source.workItemId} commit `)
|
|
31
|
+
&& summary.includes(" conflicts with "));
|
|
32
|
+
if (!ordinary)
|
|
33
|
+
continue;
|
|
34
|
+
update.run("conflicted", JSON.stringify({ ...attempt, status: "conflicted" }), row.task_id, row.integration_id);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** v19 bound a Job only after successful source application. For FF, its
|
|
38
|
+
* exact checked head IS the immutable source result, so the existing records
|
|
39
|
+
* prove application without inventing a reflog action or a successful result.
|
|
40
|
+
* Other old source strategies need evidence not available in these DB records.
|
|
41
|
+
* Keep this interpretation at the migration boundary, never in runtime reads. */
|
|
42
|
+
function migrateBoundFastForward(db, attempt) {
|
|
43
|
+
if (!["running", "validating"].includes(attempt.status) || attempt.jobId === undefined
|
|
44
|
+
|| attempt.source.kind !== "work-item" || attempt.source.strategy !== "ff")
|
|
45
|
+
return;
|
|
46
|
+
const read = (sql, ...keys) => {
|
|
47
|
+
const row = db.prepare(sql).get(...keys);
|
|
48
|
+
return row === undefined ? undefined : JSON.parse(row.payload);
|
|
49
|
+
};
|
|
50
|
+
const task = read("SELECT payload FROM task_records WHERE task_id = ?", attempt.taskId);
|
|
51
|
+
const project = read("SELECT payload FROM projects WHERE id = ?", attempt.projectId);
|
|
52
|
+
const job = read("SELECT payload FROM durable_jobs WHERE task_id = ? AND job_id = ?", attempt.taskId, attempt.jobId);
|
|
53
|
+
const workspaces = db.prepare("SELECT payload FROM managed_workspaces WHERE task_id = ?").all(attempt.taskId)
|
|
54
|
+
.map(row => JSON.parse(row.payload));
|
|
55
|
+
const workspace = workspaces.find(w => w.owner.type === "integration-attempt"
|
|
56
|
+
&& w.owner.taskId === attempt.taskId && w.owner.integrationAttemptId === attempt.id);
|
|
57
|
+
const main = workspaces.find(w => w.owner.type === "task" && w.owner.taskId === attempt.taskId);
|
|
58
|
+
const entry = workspace?.entries.find(e => e.projectId === attempt.projectId && e.access === "write");
|
|
59
|
+
const mainEntry = main?.entries.find(e => e.projectId === attempt.projectId && e.access === "write");
|
|
60
|
+
const binding = task?.projectBindings.find(b => b.projectId === attempt.projectId);
|
|
61
|
+
if (task?.id !== attempt.taskId || project?.id !== attempt.projectId || binding === undefined
|
|
62
|
+
|| workspace === undefined || entry === undefined || mainEntry === undefined
|
|
63
|
+
|| workspace.entries.length !== 1 || entry.path !== workspace.root
|
|
64
|
+
|| entry.baseCommit !== attempt.beforeCommit
|
|
65
|
+
|| job?.id !== attempt.jobId || job.taskId !== attempt.taskId
|
|
66
|
+
|| job.owner.kind !== "integration-attempt" || job.owner.integrationAttemptId !== attempt.id
|
|
67
|
+
|| job.projectId !== attempt.projectId || job.workspace !== workspace.root
|
|
68
|
+
|| job.operation.targetId !== job.workspace
|
|
69
|
+
|| job.head !== attempt.source.resultCommit
|
|
70
|
+
|| (attempt.candidateCommit !== undefined && attempt.candidateCommit !== job.head)
|
|
71
|
+
|| job.operation.inputDigest !== durableJobIdempotencyKey(job))
|
|
72
|
+
return;
|
|
73
|
+
let steps = attempt.checkCommands.map((command, index) => ({
|
|
74
|
+
name: `check-${index + 1}`, command, timeoutMs: 30 * 60_000
|
|
75
|
+
}));
|
|
76
|
+
if (attempt.gatePlanDigest !== undefined) {
|
|
77
|
+
const plan = resolveProjectVerificationPlan(project);
|
|
78
|
+
if (plan === undefined || verificationPlanDigest(plan) !== attempt.gatePlanDigest)
|
|
79
|
+
return;
|
|
80
|
+
steps = [...planBootstrapJobSteps(plan), ...planL2JobSteps(plan)].map(step => ({
|
|
81
|
+
...step, timeoutMs: 30 * 60_000
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
const inputDigest = durableJobIdempotencyKey(job);
|
|
85
|
+
if (inputDigest !== durableJobIdempotencyKey({ ...job, steps }))
|
|
86
|
+
return;
|
|
87
|
+
const branch = entry.branch;
|
|
88
|
+
return {
|
|
89
|
+
...attempt,
|
|
90
|
+
candidateCommit: job.head,
|
|
91
|
+
checkInputDigest: inputDigest,
|
|
92
|
+
sourceProgress: {
|
|
93
|
+
workspace: resolve(workspace.root), branch: fullRef(branch), head: job.head,
|
|
94
|
+
completedSteps: 1,
|
|
95
|
+
sourceDigest: createHash("sha256").update(JSON.stringify([
|
|
96
|
+
attempt.taskId, attempt.id, attempt.projectId, attempt.targetRef,
|
|
97
|
+
attempt.beforeCommit, attempt.source, resolve(workspace.root), branch
|
|
98
|
+
])).digest("hex")
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function fullRef(branch) {
|
|
103
|
+
return branch.startsWith("refs/") ? branch : `refs/heads/${branch}`;
|
|
104
|
+
}
|