@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.
Files changed (160) hide show
  1. package/ARCHITECTURE.md +8 -4
  2. package/ARCHITECTURE.zh-CN.md +5 -2
  3. package/README.md +13 -5
  4. package/dist/agent/launchEnvironment.js +7 -0
  5. package/dist/agentRun/agentRun.js +3 -0
  6. package/dist/cli/commandCatalog.js +64 -16
  7. package/dist/cli/interactionPolicy.js +7 -3
  8. package/dist/cli/managedDiagnostics.js +1 -1
  9. package/dist/cli/updateOrchestrator.js +24 -1
  10. package/dist/cli/updatePorts.js +7 -3
  11. package/dist/cli/upgradeCommand.js +42 -2
  12. package/dist/cli.js +381 -107
  13. package/dist/commands/executionAuditCommands.js +10 -0
  14. package/dist/commands/globalRoleCommands.js +339 -4
  15. package/dist/commands/projectCommands.js +50 -22
  16. package/dist/commands/releaseCommands.js +18 -0
  17. package/dist/commands/taskActor.js +25 -0
  18. package/dist/commands/taskCommands.js +586 -96
  19. package/dist/commands/taskIntegrationCommands.js +19 -39
  20. package/dist/commands/taskIntegrationQueueCommands.js +1 -1
  21. package/dist/commands/taskOverviewCommand.js +4 -3
  22. package/dist/commands/taskPublicationAdoptCommand.js +127 -0
  23. package/dist/commands/taskPublicationCommands.js +11 -2
  24. package/dist/commands/taskPublicationVerifyCommand.js +23 -39
  25. package/dist/commands/taskRemoteDeliveryCommand.js +22 -11
  26. package/dist/commands/taskRoleRuntimeStatus.js +35 -0
  27. package/dist/context/runContextPack.js +3 -0
  28. package/dist/context/taskCatalog.js +187 -0
  29. package/dist/context/taskContext.js +55 -6
  30. package/dist/controller/agentHostObservation.js +155 -0
  31. package/dist/controller/clientRuntime.js +17 -2
  32. package/dist/controller/controller.js +14 -2
  33. package/dist/controller/fileSchedulerStoreAdapter.js +519 -25
  34. package/dist/controller/globalInputDelivery.js +132 -0
  35. package/dist/controller/jobControl.js +6 -2
  36. package/dist/controller/providerRetryAdmission.js +100 -0
  37. package/dist/controller/providerRetryDelivery.js +218 -0
  38. package/dist/controller/resourceInventory.js +14 -4
  39. package/dist/controller/resourceInventoryLinux.js +2 -6
  40. package/dist/controller/runtime.js +117 -7
  41. package/dist/controller/runtimeEventInbox.js +32 -3
  42. package/dist/controller/runtimeEventProcessor.js +26 -6
  43. package/dist/controller/runtimeHookRunFence.js +75 -19
  44. package/dist/controller/structuredProviderObservation.js +133 -70
  45. package/dist/coordination/workMailboxQueue.js +5 -0
  46. package/dist/execution/workItemExecutionProjection.js +1 -1
  47. package/dist/executor/agentExecutor.js +64 -4
  48. package/dist/executor/executorRegistry.js +3 -0
  49. package/dist/executor/fileRoleLaunchPlanner.js +78 -118
  50. package/dist/integration/deliveryObligation.js +2 -1
  51. package/dist/integration/gitIntegrationService.js +329 -386
  52. package/dist/integration/integrationAttempt.js +30 -4
  53. package/dist/integration/integrationQueueService.js +7 -7
  54. package/dist/integration/integrationSourceApplication.js +323 -0
  55. package/dist/lifecycle/exactRunTerminalization.js +4 -1
  56. package/dist/message/globalInterrupt.js +33 -0
  57. package/dist/message/globalProviderRetry.js +15 -0
  58. package/dist/message/inputControlResolution.js +106 -0
  59. package/dist/message/message.js +367 -0
  60. package/dist/message/messageContinuation.js +126 -3
  61. package/dist/message/taskInterrupt.js +34 -0
  62. package/dist/observability/executionAudit.js +19 -0
  63. package/dist/observability/orchestrationMetrics.js +1 -1
  64. package/dist/release/releaseHandover.js +22 -0
  65. package/dist/release/releaseWorkflowPorts.js +15 -7
  66. package/dist/repository/gitWorkspace.js +430 -107
  67. package/dist/repository/projectMaintenanceLock.js +75 -18
  68. package/dist/repository/taskWorkspaceCoordinator.js +182 -101
  69. package/dist/repository/taskWorkspacePreparer.js +205 -72
  70. package/dist/repository/workItemCandidateSnapshot.js +34 -0
  71. package/dist/repository/workspaceCleanupInspection.js +187 -0
  72. package/dist/resources/resourceDiscovery.js +3 -2
  73. package/dist/runtime/agentError.js +5 -3
  74. package/dist/runtime/agentHost.js +179 -82
  75. package/dist/runtime/agentHostCompatibility.js +127 -0
  76. package/dist/runtime/agentHostProtocol.js +53 -0
  77. package/dist/runtime/builtinAgentErrorMappers.js +91 -0
  78. package/dist/runtime/codexAppServerRuntime.js +34 -3
  79. package/dist/runtime/executionEnvironment.js +0 -19
  80. package/dist/runtime/launchBroker.js +6 -0
  81. package/dist/runtime/providerControl.js +5 -1
  82. package/dist/runtime/providerRetry.js +198 -0
  83. package/dist/runtime/providerRuntimeIdentity.js +28 -2
  84. package/dist/runtime/sessionReconciliation.js +4 -4
  85. package/dist/runtime/sessionTokenMetrics.js +15 -5
  86. package/dist/runtime/structuredProviderHost.js +6 -2
  87. package/dist/runtime/taskRuntimeIsolation.js +30 -6
  88. package/dist/runtime/taskUsageMetrics.js +275 -0
  89. package/dist/runtime/tmuxAdapters.js +5 -3
  90. package/dist/scheduler/activeRoleRunDelivery.js +12 -0
  91. package/dist/scheduler/leaderWakeupProcessor.js +5 -0
  92. package/dist/scheduler/operatorEvent.js +4 -0
  93. package/dist/scheduler/taskExecutionProjection.js +38 -6
  94. package/dist/scheduler/taskObservabilityProjection.js +6 -44
  95. package/dist/scheduler/wakeReason.js +7 -1
  96. package/dist/scheduler/wakeupQueue.js +2 -0
  97. package/dist/setup/setupCommand.js +26 -8
  98. package/dist/storage/homeLayout.js +130 -0
  99. package/dist/storage/migrations/collapseWorktreeLayout.js +963 -0
  100. package/dist/storage/migrations/integrationContinuation.js +104 -0
  101. package/dist/storage/migrations/unifyHomeLayout.js +925 -0
  102. package/dist/storage/sqliteSchema.js +167 -4
  103. package/dist/storage/sqliteStore.js +57 -1
  104. package/dist/storage/storageVersions.js +1 -1
  105. package/dist/storage/storeRpc.js +2 -0
  106. package/dist/storage/taskCatalog.js +123 -0
  107. package/dist/storage/taskStore.js +2 -0
  108. package/dist/storage/upgrade/upgradeOrchestrator.js +95 -2
  109. package/dist/task/archiveDiagnostics.js +129 -0
  110. package/dist/task/archivePreflight.js +124 -0
  111. package/dist/task/nextAction.js +44 -11
  112. package/dist/task/publicationAdoption.js +56 -0
  113. package/dist/task/publicationReference.js +10 -0
  114. package/dist/task/remoteDelivery.js +31 -16
  115. package/dist/web/assets/client/app.js +147 -17
  116. package/dist/web/assets/client/components.js +56 -13
  117. package/dist/web/assets/client/i18n.js +78 -4
  118. package/dist/web/assets/client/taskSurface.js +108 -1
  119. package/dist/web/assets/client/view.js +39 -8
  120. package/dist/web/assets/shell.js +29 -0
  121. package/dist/web/assets/styles/layout.js +8 -1
  122. package/dist/web/assets/styles/widgets.js +12 -0
  123. package/dist/web/webServer.js +131 -4
  124. package/dist/web/webSnapshot.js +16 -6
  125. package/dist/web/webTaskSurface.js +222 -5
  126. package/dist/workspace/cleanupInspection.js +63 -0
  127. package/dist/workspace/workItemChangeSetManager.js +111 -35
  128. package/docs/agent-result-consumption.md +4 -0
  129. package/docs/agent-result-consumption.zh-CN.md +3 -0
  130. package/docs/agent-runtime-drivers.md +7 -0
  131. package/docs/agent-runtime-drivers.zh-CN.md +5 -0
  132. package/docs/architecture/README.md +2 -0
  133. package/docs/architecture/README.zh-CN.md +3 -1
  134. package/docs/architecture/capabilities-and-resources.md +30 -5
  135. package/docs/architecture/capabilities-and-resources.zh-CN.md +23 -3
  136. package/docs/managed-turn-and-session-runtime.md +47 -0
  137. package/docs/managed-turn-and-session-runtime.zh-CN.md +40 -0
  138. package/docs/observability/README.md +62 -0
  139. package/docs/observability/README.zh-CN.md +47 -0
  140. package/docs/project-refresh.md +77 -0
  141. package/docs/project-refresh.zh-CN.md +59 -0
  142. package/docs/provider-retry.md +70 -0
  143. package/docs/release-workflow.md +39 -0
  144. package/docs/release-workflow.zh-CN.md +29 -0
  145. package/docs/sqlite-control-plane-design.md +223 -1
  146. package/docs/task-delivery.md +133 -13
  147. package/docs/task-delivery.zh-CN.md +99 -10
  148. package/docs/task-discovery.md +102 -0
  149. package/docs/task-discovery.zh-CN.md +86 -0
  150. package/docs/testing/verification-levels.md +40 -0
  151. package/docs/testing/verification-levels.zh-CN.md +23 -0
  152. package/i18n/README.zh-CN.md +13 -7
  153. package/package.json +1 -1
  154. package/skills/yui-leader/references/execution.md +154 -51
  155. package/skills/yui-leader/references/integration.md +52 -2
  156. package/skills/yui-operator/SKILL.md +19 -3
  157. package/skills/yui-reviewer/SKILL.md +4 -0
  158. package/skills/yui-runtime/SKILL.md +42 -0
  159. package/skills/yui-runtime/references/publication.md +42 -0
  160. 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
+ }