@zq-silk/yui 0.2.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +603 -133
- package/README.md +806 -31
- package/dist/agent/agent.js +2 -1
- package/dist/agent/argumentPolicy.js +3 -1
- package/dist/agent/launchEnvironment.js +106 -0
- package/dist/agent/managedRuntimeEnvironment.js +34 -0
- package/dist/brief/taskBrief.js +11 -1
- package/dist/cli/agentConfigurationPicker.js +287 -0
- package/dist/cli/commandCatalog.js +488 -60
- package/dist/cli/completion.js +146 -22
- package/dist/cli/helpRenderer.js +3 -1
- package/dist/cli/interactionCandidates.js +53 -15
- package/dist/cli/interactionPolicy.js +267 -30
- package/dist/cli/interactiveSelection.js +6 -2
- package/dist/cli/invocationRouter.js +5 -1
- package/dist/cli/operatorWizard.js +87 -0
- package/dist/cli/roleOptionCatalog.js +1 -0
- package/dist/cli/roleWizard.js +185 -21
- package/dist/cli/updateCommand.js +62 -19
- package/dist/cli/updateOrchestrator.js +539 -0
- package/dist/cli/updatePorts.js +1119 -0
- package/dist/cli/upgradeCommand.js +112 -0
- package/dist/cli.js +1420 -86
- package/dist/commands/agentCommands.js +146 -3
- package/dist/commands/configCommands.js +126 -0
- package/dist/commands/controllerCommands.js +365 -0
- package/dist/commands/globalRoleCommands.js +168 -126
- package/dist/commands/jobCommands.js +18 -8
- package/dist/commands/operatorCommands.js +159 -9
- package/dist/commands/profileCommands.js +203 -0
- package/dist/commands/projectCommands.js +650 -0
- package/dist/commands/roleConfiguration.js +85 -24
- package/dist/commands/roleRuntimeGuard.js +12 -0
- package/dist/commands/roleSkillValidation.js +47 -0
- package/dist/commands/taskActor.js +127 -0
- package/dist/commands/taskCommands.js +4201 -313
- package/dist/commands/taskCompletionGate.js +131 -0
- package/dist/commands/taskContextCommand.js +244 -30
- package/dist/commands/taskInputCommands.js +177 -59
- package/dist/commands/taskIntegrationCommands.js +303 -0
- package/dist/commands/taskOverviewCommand.js +363 -0
- package/dist/commands/taskRoleRuntimeStatus.js +125 -19
- package/dist/commands/textInput.js +15 -0
- package/dist/completion/completionInstaller.js +26 -22
- package/dist/config/yuiConfig.js +4 -3
- package/dist/context/dispatchContext.js +90 -38
- package/dist/context/roleSessionContext.js +119 -0
- package/dist/controller/claudeLifecycleHook.js +203 -0
- package/dist/controller/clientRuntime.js +408 -56
- package/dist/controller/codexLifecycleHook.js +108 -0
- package/dist/controller/controller.js +1089 -32
- package/dist/controller/domainIdentity.js +505 -0
- package/dist/controller/ephemeralResourceReaper.js +131 -0
- package/dist/controller/fileSchedulerStoreAdapter.js +2153 -103
- package/dist/controller/providerHookRunFence.js +127 -0
- package/dist/controller/resourceCleanupLinux.js +286 -0
- package/dist/controller/resourceInventory.js +531 -0
- package/dist/controller/resourceInventoryLinux.js +610 -0
- package/dist/controller/runtime.js +629 -10
- package/dist/controller/runtimeEventInbox.js +564 -0
- package/dist/controller/runtimeEventProcessor.js +248 -0
- package/dist/controller/runtimeLaunchCoordinator.js +477 -0
- package/dist/controller/sessionNotify.js +121 -78
- package/dist/coordination/deadlineScheduler.js +15 -0
- package/dist/coordination/mailboxScheduler.js +108 -0
- package/dist/coordination/workMailbox.js +329 -0
- package/dist/coordination/workMailboxQueue.js +86 -0
- package/dist/core/controllerClient.js +19 -5
- package/dist/core/controllerEndpoint.js +37 -0
- package/dist/core/controllerServer.js +218 -10
- package/dist/core/protocol.js +6 -2
- package/dist/decision/decision.js +2 -1
- package/dist/doctor/doctor.js +681 -32
- package/dist/domain/validation.js +53 -0
- package/dist/errors/cliError.js +5 -3
- package/dist/event/taskEvent.js +7 -3
- package/dist/execution/codexThreadNaming.js +160 -0
- package/dist/execution/executionGroup.js +579 -0
- package/dist/executor/agentAdapter.js +255 -40
- package/dist/executor/agentConfigurationCatalog.js +326 -0
- package/dist/executor/agentConfigurationProbe.js +506 -0
- package/dist/executor/agentExecutor.js +625 -10
- package/dist/executor/codexConfigConflict.js +290 -0
- package/dist/executor/effectiveLaunch.js +340 -0
- package/dist/executor/executorRegistry.js +238 -36
- package/dist/executor/fileRoleLaunchPlanner.js +550 -40
- package/dist/executor/turnCompletion.js +126 -0
- package/dist/input/inputRequest.js +30 -9
- package/dist/integration/changeSet.js +36 -0
- package/dist/integration/checkResult.js +24 -0
- package/dist/integration/gitIntegrationService.js +695 -0
- package/dist/integration/integrationAttempt.js +142 -0
- package/dist/interaction/operatorPresentation.js +96 -0
- package/dist/lifecycle/canonicalLifecycleEvent.js +342 -0
- package/dist/lifecycle/exactRunTerminalization.js +572 -0
- package/dist/lifecycle/providerLifecycleMapping.js +190 -0
- package/dist/lifecycle/taskRoleSessionReset.js +124 -0
- package/dist/message/message.js +23 -7
- package/dist/milestone/milestone.js +2 -1
- package/dist/operator/operatorSessionHistory.js +124 -0
- package/dist/output/agentConfigurationPresentation.js +43 -0
- package/dist/output/rolePresentation.js +34 -10
- package/dist/output/terminal.js +8 -0
- package/dist/output/timePresentation.js +55 -0
- package/dist/profile/agentProfile.js +128 -0
- package/dist/repository/gitWorkspace.js +578 -24
- package/dist/repository/project.js +213 -0
- package/dist/repository/taskWorkspaceCoordinator.js +392 -0
- package/dist/repository/taskWorkspacePreparer.js +1688 -191
- package/dist/review/reviewConfig.js +11 -0
- package/dist/review/reviewRound.js +399 -0
- package/dist/review/taskFinalReviewContract.js +90 -0
- package/dist/role/role.js +124 -23
- package/dist/run/agentRun.js +155 -12
- package/dist/run/runIdentity.js +82 -0
- package/dist/runtime/exactControlPlane.js +472 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/lifecycleReservation.js +38 -0
- package/dist/runtime/ports.js +11 -0
- package/dist/runtime/preallocatedNativeSession.js +13 -0
- package/dist/runtime/promptEnvelope.js +30 -0
- package/dist/runtime/runtimeBinding.js +31 -0
- package/dist/runtime/runtimeOwner.js +14 -0
- package/dist/runtime/sessionLaunchRequest.js +62 -0
- package/dist/runtime/sessionTitle.js +54 -0
- package/dist/runtime/taskRuntimeIsolation.js +643 -0
- package/dist/runtime/tmuxAdapters.js +315 -0
- package/dist/runtime/turnCompletion.js +3 -0
- package/dist/runtime/validation.js +23 -0
- package/dist/scheduler/activeRoleRunDelivery.js +342 -32
- package/dist/scheduler/activeTaskProgress.js +63 -0
- package/dist/scheduler/leaderFailure.js +2 -1
- package/dist/scheduler/leaderWakeupProcessor.js +307 -66
- package/dist/scheduler/operatorInputNotificationProcessor.js +109 -46
- package/dist/scheduler/operatorNotification.js +44 -2
- package/dist/scheduler/ports.js +28 -1
- package/dist/scheduler/roleRunLiveness.js +131 -25
- package/dist/scheduler/roleRunStall.js +951 -0
- package/dist/scheduler/taskExecutionProjection.js +544 -0
- package/dist/scheduler/wakeupQueue.js +3 -0
- package/dist/setup/setupCommand.js +302 -52
- package/dist/storage/compatibleTaskStore.js +102 -0
- package/dist/storage/migration/baseline.js +78 -0
- package/dist/storage/migration/classifier.js +51 -0
- package/dist/storage/migration/compatibleCodec.js +53 -0
- package/dist/storage/migration/engine.js +147 -0
- package/dist/storage/migration/index.js +33 -0
- package/dist/storage/migration/planner.js +154 -0
- package/dist/storage/migration/productionRegistry.js +486 -0
- package/dist/storage/migration/registry.js +169 -0
- package/dist/storage/migration/report.js +54 -0
- package/dist/storage/migration/types.js +31 -0
- package/dist/storage/storageSchema.js +147 -123
- package/dist/storage/storageVersions.js +11 -0
- package/dist/storage/taskStore.js +1793 -197
- package/dist/storage/upgrade/homeClassification.js +156 -0
- package/dist/storage/upgrade/homeMigrationTarget.js +595 -0
- package/dist/storage/upgrade/offlineUpgradeInventory.js +315 -0
- package/dist/storage/upgrade/productionMigrationRegistry.js +6 -0
- package/dist/storage/upgrade/recordVersionScan.js +176 -0
- package/dist/storage/upgrade/recordVersions.js +159 -0
- package/dist/storage/upgrade/switchProgress.js +80 -0
- package/dist/storage/upgrade/upgradeOrchestrator.js +948 -0
- package/dist/storage/upgrade/upgradeReceipt.js +161 -0
- package/dist/storage/upgradeCoordination.js +186 -0
- package/dist/storage/upgradeFence.js +366 -0
- package/dist/task/task.js +132 -26
- package/dist/task/taskRecordReference.js +66 -0
- package/dist/tmux/commandExecutor.js +75 -2
- package/dist/tmux/tmuxManager.js +747 -49
- package/dist/version.js +23 -0
- package/dist/web/assets/assetManifest.js +62 -0
- package/dist/web/assets/client/app.js +631 -0
- package/dist/web/assets/client/components.js +605 -0
- package/dist/web/assets/client/dom.js +14 -0
- package/dist/web/assets/client/format.js +28 -0
- package/dist/web/assets/client/i18n.js +494 -0
- package/dist/web/assets/client/markdown.js +114 -0
- package/dist/web/assets/client/theme.js +32 -0
- package/dist/web/assets/client/view.js +458 -0
- package/dist/web/assets/fontData.js +12 -0
- package/dist/web/assets/fonts.js +12 -0
- package/dist/web/assets/shell.js +114 -0
- package/dist/web/assets/styles/cards.js +135 -0
- package/dist/web/assets/styles/layout.js +47 -0
- package/dist/web/assets/styles/markdown.js +29 -0
- package/dist/web/assets/styles/responsive.js +39 -0
- package/dist/web/assets/styles/tokens.js +101 -0
- package/dist/web/assets/styles/widgets.js +147 -0
- package/dist/web/tmuxWebTerminal.js +158 -0
- package/dist/web/webServer.js +463 -0
- package/dist/web/webSnapshot.js +148 -0
- package/dist/workItem/workItem.js +642 -23
- package/dist/workspace/gitChangeSetCapture.js +86 -0
- package/dist/workspace/workItemChangeSetManager.js +445 -0
- package/dist/worktree/managedWorkspace.js +202 -0
- package/docs/task-local-identity.md +62 -0
- package/i18n/README.zh-CN.md +406 -31
- package/package.json +10 -2
- package/skills/yui-leader/SKILL.md +601 -39
- package/skills/yui-operator/SKILL.md +255 -34
- package/skills/yui-reviewer/SKILL.md +57 -0
- package/skills/yui-worker/SKILL.md +214 -17
- package/dist/commands/repositoryCommands.js +0 -86
- package/dist/operator/operatorContext.js +0 -66
- package/dist/repository/repository.js +0 -55
- package/dist/scheduler/archivedTaskRuntime.js +0 -12
- package/dist/worktree/roleWorkspace.js +0 -62
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `yui upgrade` — the diagnostic/manual storage upgrade entry point.
|
|
3
|
+
*
|
|
4
|
+
* `yui upgrade --dry-run` first classifies read-only. Compatible-old validates
|
|
5
|
+
* through the in-memory current-model gate and returns without staging a Home;
|
|
6
|
+
* migration-required also proves the offline runtime inventory before it stages
|
|
7
|
+
* and validates a fresh copy. The hidden `--update-preflight` contract stops at
|
|
8
|
+
* classification, compatible-source validation, or offline inventory as required
|
|
9
|
+
* by the classified path, so a staged updater can run it while the old Controller
|
|
10
|
+
* remains live without a false staged-output validation claim. Execute enters
|
|
11
|
+
* fence/quiesce/switch only for the offline path. Only explicitly declared
|
|
12
|
+
* production paths can run; the aggregate `16→17` and execution record-family
|
|
13
|
+
* transitions remain offline migrations.
|
|
14
|
+
*
|
|
15
|
+
* Like `doctor`/`controller`, this command needs a Home but manages its own
|
|
16
|
+
* schema check (it must run against a non-current Home), so it is dispatched
|
|
17
|
+
* before the unconditional `requireStorageSchema` gate in `cli.ts`.
|
|
18
|
+
*/
|
|
19
|
+
import { createProductionStorageRegistry } from "../storage/compatibleTaskStore.js";
|
|
20
|
+
import { latestStorageVersionState } from "../storage/upgrade/recordVersions.js";
|
|
21
|
+
import { runStorageUpgrade } from "../storage/upgrade/upgradeOrchestrator.js";
|
|
22
|
+
import { usageError } from "../errors/cliError.js";
|
|
23
|
+
/**
|
|
24
|
+
* Run the upgrade command. Parses the public `[--dry-run]` form plus the staged
|
|
25
|
+
* updater's internal `--update-preflight` form, then returns rendered text,
|
|
26
|
+
* structured data, and an exit code (0 for a safe result, 5 for a blocker).
|
|
27
|
+
*/
|
|
28
|
+
export async function runUpgradeCommand(args, home, options = {}) {
|
|
29
|
+
const mode = parseUpgradeArgs(args);
|
|
30
|
+
const result = await runStorageUpgrade({
|
|
31
|
+
home,
|
|
32
|
+
registry: createProductionStorageRegistry(),
|
|
33
|
+
latest: latestStorageVersionState(),
|
|
34
|
+
mode,
|
|
35
|
+
...(options.controllerLifecycle === undefined
|
|
36
|
+
? {}
|
|
37
|
+
: { controllerLifecycle: options.controllerLifecycle }),
|
|
38
|
+
...(options.now === undefined ? {} : { now: options.now })
|
|
39
|
+
});
|
|
40
|
+
return {
|
|
41
|
+
output: renderUpgradeResult(result, mode),
|
|
42
|
+
data: result,
|
|
43
|
+
exitCode: result.outcome === "blocked" ? 5 : 0
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function parseUpgradeArgs(args) {
|
|
47
|
+
if (args.length === 0)
|
|
48
|
+
return "execute";
|
|
49
|
+
if (args.length === 1 && args[0] === "--dry-run")
|
|
50
|
+
return "dry-run";
|
|
51
|
+
// Intentionally omitted from public command help: this is the machine contract
|
|
52
|
+
// used by a staged `yui update`, not a replacement for user-facing dry-run.
|
|
53
|
+
if (args.length === 1 && args[0] === "--update-preflight")
|
|
54
|
+
return "update-preflight";
|
|
55
|
+
throw usageError("Upgrade usage: yui upgrade [--dry-run]");
|
|
56
|
+
}
|
|
57
|
+
/** Render an {@link UpgradeResult} as concise, CLI-style text. */
|
|
58
|
+
export function renderUpgradeResult(result, mode) {
|
|
59
|
+
const header = versionHeader(result);
|
|
60
|
+
switch (result.outcome) {
|
|
61
|
+
case "already-current":
|
|
62
|
+
return `${header}\nStorage is already at the current version; nothing to upgrade.`;
|
|
63
|
+
case "compatible":
|
|
64
|
+
return `${header}\nStorage is compatible-old and can be opened by the current loader. `
|
|
65
|
+
+ "No Home migration, backup, or switch is required.";
|
|
66
|
+
case "update-preflight": {
|
|
67
|
+
const evidence = result.status === "already-current"
|
|
68
|
+
? "four-state classification"
|
|
69
|
+
: result.status === "compatible"
|
|
70
|
+
? "four-state classification plus compatible-source validation"
|
|
71
|
+
: "four-state classification plus a clear offline runtime inventory";
|
|
72
|
+
return `${header}\nUpdate preflight: ${result.status} (${result.stepCount} step(s)); `
|
|
73
|
+
+ `${evidence}. No staged Home was created, `
|
|
74
|
+
+ "no staged-output loader validation was performed, and storage was not switched.";
|
|
75
|
+
}
|
|
76
|
+
case "dry-run": {
|
|
77
|
+
const steps = result.report.outcome === "dry-run" ? result.report.steps.length : 0;
|
|
78
|
+
return `${header}\nDry run: validated ${steps} migration step(s) through the loader gate. `
|
|
79
|
+
+ "Staged output discarded; storage was not switched.";
|
|
80
|
+
}
|
|
81
|
+
case "upgraded":
|
|
82
|
+
return `${header}\nUpgraded storage. Original Home backed up at `
|
|
83
|
+
+ `${result.backupPath ?? "(unspecified)"}.`;
|
|
84
|
+
case "blocked": {
|
|
85
|
+
// Most blockers guarantee the source is untouched. A partial switch or a
|
|
86
|
+
// post-switch ambiguity explicitly carries the committed boundary and
|
|
87
|
+
// named recovery evidence; never print a false unchanged claim there.
|
|
88
|
+
const unchangedNote = result.switchCommitted === true
|
|
89
|
+
? "The storage switch committed, but post-switch completion is ambiguous; the old Controller was not restored (see Action and recovery evidence)."
|
|
90
|
+
: result.stage === "switch-ambiguous"
|
|
91
|
+
? "The switch did not complete and could not be rolled back; the authoritative Home is NOT intact (see Action)."
|
|
92
|
+
: "Storage was not switched; the authoritative Home is unchanged.";
|
|
93
|
+
return [
|
|
94
|
+
header,
|
|
95
|
+
`${mode === "dry-run" ? "Dry run" : mode === "update-preflight" ? "Update preflight" : "Upgrade"} blocked at ${result.stage}: ${result.message}`,
|
|
96
|
+
`Action: ${result.action}`,
|
|
97
|
+
unchangedNote
|
|
98
|
+
].join("\n");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function versionHeader(result) {
|
|
103
|
+
const classification = result.classification;
|
|
104
|
+
const layout = classification.layoutVersion ?? classification.latestLayoutVersion;
|
|
105
|
+
const aggregate = classification.aggregateVersion ?? classification.latestAggregateVersion;
|
|
106
|
+
const verdict = classification.classification.verdict;
|
|
107
|
+
const incompatible = classification.incompatibleComponent === undefined
|
|
108
|
+
? ""
|
|
109
|
+
: ` incompatibleComponent=${classification.incompatibleComponent}`;
|
|
110
|
+
return `Storage: ${verdict} layout=${layout}/${classification.latestLayoutVersion} `
|
|
111
|
+
+ `aggregate=${aggregate}/${classification.latestAggregateVersion}${incompatible}`;
|
|
112
|
+
}
|