@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
|
@@ -47,6 +47,11 @@ const agentChildren = [
|
|
|
47
47
|
},
|
|
48
48
|
{ name: "list", summary: "List configured Agents." },
|
|
49
49
|
{ name: "show", summary: "Show one configured Agent.", usage: "yui agent show <id>" },
|
|
50
|
+
{
|
|
51
|
+
name: "capabilities",
|
|
52
|
+
summary: "Probe one Agent CLI for runtime configuration options.",
|
|
53
|
+
usage: "yui agent capabilities <id>"
|
|
54
|
+
},
|
|
50
55
|
{
|
|
51
56
|
name: "update",
|
|
52
57
|
summary: "Update a configured Agent.",
|
|
@@ -62,19 +67,28 @@ const roleProfileOptions = [
|
|
|
62
67
|
"--expected-output", "--system-prompt", "--skill"
|
|
63
68
|
];
|
|
64
69
|
const roleAgentOptions = [
|
|
65
|
-
"--model", "--effort", "--sandbox", "--approval", "--permission-mode",
|
|
70
|
+
"--model", "--effort", "--permission-strategy", "--sandbox", "--approval", "--permission-mode",
|
|
71
|
+
"--allowed-tool", "--disallowed-tool", "--search"
|
|
66
72
|
];
|
|
67
73
|
const roleProfileClearOptions = [
|
|
68
74
|
"--clear-description", "--clear-responsibilities", "--clear-constraints",
|
|
69
75
|
"--clear-expected-output", "--clear-system-prompt", "--clear-skills"
|
|
70
76
|
];
|
|
71
77
|
const roleAgentClearOptions = [
|
|
72
|
-
"--clear-model", "--clear-effort", "--clear-
|
|
73
|
-
"--clear-
|
|
78
|
+
"--clear-model", "--clear-effort", "--clear-allowed-tools", "--clear-disallowed-tools",
|
|
79
|
+
"--clear-search", "--clear-agent-config"
|
|
80
|
+
];
|
|
81
|
+
const agentProfileOptions = [
|
|
82
|
+
"--description", "--instructions", "--skill", "--model", "--effort"
|
|
83
|
+
];
|
|
84
|
+
const agentProfileClearOptions = [
|
|
85
|
+
"--clear-description", "--clear-instructions", "--clear-skills",
|
|
86
|
+
"--clear-model", "--clear-effort"
|
|
74
87
|
];
|
|
75
88
|
const roleAgentOptionValues = {
|
|
76
89
|
"--sandbox": ["read-only", "workspace-write", "danger-full-access"],
|
|
77
90
|
"--approval": ["untrusted", "on-request", "never"],
|
|
91
|
+
"--permission-strategy": ["default", "bypass", "configured"],
|
|
78
92
|
"--search": ["true"]
|
|
79
93
|
};
|
|
80
94
|
const roleChildren = [
|
|
@@ -99,6 +113,7 @@ const roleChildren = [
|
|
|
99
113
|
},
|
|
100
114
|
{ name: "remove", summary: "Remove a global Role.", usage: "yui role remove <name>" },
|
|
101
115
|
{ name: "bind", summary: "Bind and activate an Agent for a global Role.", usage: "yui role bind <role> <agent-id>" },
|
|
116
|
+
{ name: "unbind", summary: "Unbind a dormant Agent from a global Role.", usage: "yui role unbind <role> <agent-id>" },
|
|
102
117
|
{ name: "enter", summary: "Enter a global Role's native session.", usage: "yui role enter <role>" },
|
|
103
118
|
{
|
|
104
119
|
name: "session",
|
|
@@ -120,20 +135,59 @@ const roleChildren = [
|
|
|
120
135
|
]
|
|
121
136
|
}
|
|
122
137
|
];
|
|
138
|
+
const profileChildren = [
|
|
139
|
+
{
|
|
140
|
+
name: "add",
|
|
141
|
+
summary: "Add a reusable Agent Profile.",
|
|
142
|
+
usage: "yui profile add <id> [--access <read|write>] [Profile settings]",
|
|
143
|
+
options: ["--access", ...agentProfileOptions],
|
|
144
|
+
optionValues: { "--access": ["read", "write"] }
|
|
145
|
+
},
|
|
146
|
+
{ name: "list", summary: "List Agent Profiles." },
|
|
147
|
+
{ name: "show", summary: "Show one Agent Profile.", usage: "yui profile show <id>" },
|
|
148
|
+
{
|
|
149
|
+
name: "update",
|
|
150
|
+
summary: "Update an Agent Profile.",
|
|
151
|
+
usage: "yui profile update <id> [--access <read|write>] [Profile settings]",
|
|
152
|
+
options: ["--access", ...agentProfileOptions, ...agentProfileClearOptions],
|
|
153
|
+
optionValues: { "--access": ["read", "write"] }
|
|
154
|
+
},
|
|
155
|
+
{ name: "remove", summary: "Remove a custom Agent Profile.", usage: "yui profile remove <id>" },
|
|
156
|
+
{ name: "reset", summary: "Reset all built-in Agent Profiles." }
|
|
157
|
+
];
|
|
123
158
|
const taskChildren = [
|
|
124
159
|
{
|
|
125
160
|
name: "create",
|
|
126
161
|
summary: "Create a Draft Task.",
|
|
127
|
-
usage: "yui task create <title> [--
|
|
128
|
-
options: ["--
|
|
162
|
+
usage: "yui task create <title> [--project <project> ...] [--base <project>=<ref> ...] [--require-integration]",
|
|
163
|
+
options: ["--project", "--base", "--require-integration"]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: "project",
|
|
167
|
+
summary: "Manage Projects bound to a Task.",
|
|
168
|
+
sections: [{ id: "manage", title: "Commands", entries: ["list", "add"] }],
|
|
169
|
+
children: [
|
|
170
|
+
{
|
|
171
|
+
name: "list",
|
|
172
|
+
summary: "List the Projects bound to a Task.",
|
|
173
|
+
usage: "yui task project list <task>"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: "add",
|
|
177
|
+
summary: "Add a Project to a Task.",
|
|
178
|
+
usage: "yui task project add <task> <project> [--base <ref>] [--directory <name>]",
|
|
179
|
+
options: ["--base", "--directory"]
|
|
180
|
+
}
|
|
181
|
+
]
|
|
129
182
|
},
|
|
130
183
|
{
|
|
131
184
|
name: "update",
|
|
132
185
|
summary: "Update Task metadata.",
|
|
133
|
-
usage: "yui task update <id> [--title <text>] [--description <text>|--clear-description] [--priority <low|medium|high|urgent>|--clear-priority] [--tags <comma-separated>|--clear-tags] [--due-at <RFC3339>|--clear-due-at]",
|
|
186
|
+
usage: "yui task update <id> [--title <text>] [--description <text>|--clear-description] [--priority <low|medium|high|urgent>|--clear-priority] [--tags <comma-separated>|--clear-tags] [--due-at <RFC3339>|--clear-due-at] [--require-integration]",
|
|
134
187
|
options: [
|
|
135
188
|
"--title", "--description", "--priority", "--tags", "--due-at",
|
|
136
|
-
"--clear-description", "--clear-priority", "--clear-tags", "--clear-due-at"
|
|
189
|
+
"--clear-description", "--clear-priority", "--clear-tags", "--clear-due-at",
|
|
190
|
+
"--require-integration"
|
|
137
191
|
],
|
|
138
192
|
optionValues: { "--priority": ["low", "medium", "high", "urgent"] }
|
|
139
193
|
},
|
|
@@ -141,25 +195,49 @@ const taskChildren = [
|
|
|
141
195
|
{
|
|
142
196
|
name: "complete",
|
|
143
197
|
summary: "Complete an active Task and stop automatic wakeups.",
|
|
144
|
-
usage: "yui task complete <id> --summary <text
|
|
145
|
-
options: ["--summary"]
|
|
198
|
+
usage: "yui task complete <id> (--summary <text>|--summary-file <path|->)",
|
|
199
|
+
options: ["--summary", "--summary-file"],
|
|
200
|
+
fileOptions: ["--summary-file"]
|
|
146
201
|
},
|
|
147
202
|
{ name: "reopen", summary: "Reopen a completed Task.", usage: "yui task reopen <id>" },
|
|
148
|
-
{
|
|
203
|
+
{
|
|
204
|
+
name: "retire",
|
|
205
|
+
summary: "Retire a stale Task while preserving its historical evidence.",
|
|
206
|
+
usage: "yui task retire <task> (--summary <text>|--summary-file <path|->) [--replacement <task>]",
|
|
207
|
+
options: ["--summary", "--summary-file", "--replacement"],
|
|
208
|
+
fileOptions: ["--summary-file"]
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: "list",
|
|
212
|
+
summary: "List unarchived Task overviews.",
|
|
213
|
+
usage: "yui task list [--all] [--verbose]",
|
|
214
|
+
options: ["--all", "--verbose"]
|
|
215
|
+
},
|
|
149
216
|
{ name: "show", summary: "Show a Task.", usage: "yui task show <id>" },
|
|
150
217
|
{
|
|
151
218
|
name: "context",
|
|
152
219
|
summary: "Show consolidated working context for a Task.",
|
|
153
220
|
usage: "yui task context <task>"
|
|
154
221
|
},
|
|
155
|
-
{
|
|
222
|
+
{
|
|
223
|
+
name: "archive",
|
|
224
|
+
summary: "Archive a Task after confirming the main worktree outcome.",
|
|
225
|
+
usage: "yui task archive <id> (--integrated|--abandon)",
|
|
226
|
+
options: ["--integrated", "--abandon"]
|
|
227
|
+
},
|
|
156
228
|
{ name: "reconcile", summary: "Run one immediate Controller reconciliation.", usage: "yui task reconcile <id>" },
|
|
157
229
|
{
|
|
158
230
|
name: "message",
|
|
159
231
|
summary: "Manage durable Task messages.",
|
|
160
232
|
sections: [{ id: "manage", title: "Commands", entries: ["send", "list"] }],
|
|
161
233
|
children: [
|
|
162
|
-
{
|
|
234
|
+
{
|
|
235
|
+
name: "send",
|
|
236
|
+
summary: "Send a Task message.",
|
|
237
|
+
usage: "yui task message send <id> (<body>|--body-file <path|->)",
|
|
238
|
+
options: ["--body-file"],
|
|
239
|
+
fileOptions: ["--body-file"]
|
|
240
|
+
},
|
|
163
241
|
{ name: "list", summary: "List Task messages.", usage: "yui task message list <id>" }
|
|
164
242
|
]
|
|
165
243
|
},
|
|
@@ -183,13 +261,13 @@ const taskChildren = [
|
|
|
183
261
|
{
|
|
184
262
|
name: "show",
|
|
185
263
|
summary: "Show one input request.",
|
|
186
|
-
usage: "yui task input show <input>
|
|
264
|
+
usage: "yui task input show (<task>/<input> | <input> --task <task>)",
|
|
187
265
|
options: ["--task"]
|
|
188
266
|
},
|
|
189
267
|
{
|
|
190
268
|
name: "answer",
|
|
191
269
|
summary: "Answer one open input request.",
|
|
192
|
-
usage: "yui task input answer <input>
|
|
270
|
+
usage: "yui task input answer (<task>/<input> | <input> --task <task>) (--choice <key> | --text <text>)",
|
|
193
271
|
options: ["--task", "--choice", "--text"]
|
|
194
272
|
},
|
|
195
273
|
{
|
|
@@ -204,14 +282,14 @@ const taskChildren = [
|
|
|
204
282
|
name: "role",
|
|
205
283
|
summary: "Manage Roles within a Task.",
|
|
206
284
|
sections: [{ id: "manage", title: "Commands", entries: [
|
|
207
|
-
"add", "list", "status", "show", "update", "remove", "bind", "enter"
|
|
285
|
+
"add", "list", "status", "show", "update", "remove", "bind", "unbind", "reset", "enter"
|
|
208
286
|
] }],
|
|
209
287
|
children: [
|
|
210
288
|
{
|
|
211
289
|
name: "add",
|
|
212
290
|
summary: "Add a Role to a Task.",
|
|
213
|
-
usage: "yui task role add <task> <name> [--agent <id>] [Role and Agent settings]",
|
|
214
|
-
options: ["--agent", ...roleProfileOptions, ...roleAgentOptions],
|
|
291
|
+
usage: "yui task role add <task> <name> [--profile <id>] [--agent <id>] [Role and Agent settings]",
|
|
292
|
+
options: ["--profile", "--agent", ...roleProfileOptions, ...roleAgentOptions],
|
|
215
293
|
optionValues: roleAgentOptionValues
|
|
216
294
|
},
|
|
217
295
|
{ name: "list", summary: "List Task Roles.", usage: "yui task role list <task>" },
|
|
@@ -225,57 +303,243 @@ const taskChildren = [
|
|
|
225
303
|
name: "update",
|
|
226
304
|
summary: "Update a Task Role.",
|
|
227
305
|
usage: "yui task role update <task> <role> [Role and Agent settings]",
|
|
228
|
-
options: ["--agent", ...roleProfileOptions, ...roleAgentOptions,
|
|
306
|
+
options: ["--profile", "--agent", ...roleProfileOptions, ...roleAgentOptions,
|
|
229
307
|
...roleProfileClearOptions, ...roleAgentClearOptions],
|
|
230
308
|
optionValues: roleAgentOptionValues
|
|
231
309
|
},
|
|
232
310
|
{ name: "remove", summary: "Remove a Task Role.", usage: "yui task role remove <task> <role>" },
|
|
233
311
|
{ name: "bind", summary: "Bind and activate an Agent for a Task Role.", usage: "yui task role bind <task> <role> <agent-id>" },
|
|
312
|
+
{ name: "unbind", summary: "Unbind a dormant Agent from a Task Role.", usage: "yui task role unbind <task> <role> <agent-id>" },
|
|
313
|
+
{
|
|
314
|
+
name: "reset",
|
|
315
|
+
summary: "Fail current work, forget the native Session, and request verified cleanup.",
|
|
316
|
+
usage: "yui task role reset <task> <role> --reason <text>",
|
|
317
|
+
options: ["--reason"]
|
|
318
|
+
},
|
|
234
319
|
{ name: "enter", summary: "Enter a Task Role's native session.", usage: "yui task role enter <task> <role>" }
|
|
235
320
|
]
|
|
236
321
|
},
|
|
237
322
|
{
|
|
238
323
|
name: "work",
|
|
239
324
|
summary: "Manage finite Task work items.",
|
|
240
|
-
sections: [{
|
|
325
|
+
sections: [{
|
|
326
|
+
id: "manage",
|
|
327
|
+
title: "Commands",
|
|
328
|
+
entries: [
|
|
329
|
+
"create", "list", "show", "update", "scope", "dispatch", "isolate", "capture", "cleanup",
|
|
330
|
+
"review", "group", "accept", "reject", "retire"
|
|
331
|
+
]
|
|
332
|
+
}],
|
|
241
333
|
children: [
|
|
242
334
|
{
|
|
243
335
|
name: "create",
|
|
244
336
|
summary: "Create a work item.",
|
|
245
|
-
usage: "yui task work create <task> <title> [--role <name>]",
|
|
246
|
-
options: ["--role"]
|
|
337
|
+
usage: "yui task work create <task> <title> [--project <project> ...] [--base-ref <project>=<ref> ...] [--objective <text>] [--accept <criterion> ...] [--after <work> ...] [--role <name>]",
|
|
338
|
+
options: ["--project", "--base-ref", "--objective", "--accept", "--after", "--role"]
|
|
247
339
|
},
|
|
248
340
|
{ name: "list", summary: "List work items for a Task.", usage: "yui task work list <task>" },
|
|
341
|
+
{ name: "show", summary: "Show one Work Item.", usage: "yui task work show <work>" },
|
|
249
342
|
{
|
|
250
343
|
name: "update",
|
|
251
344
|
summary: "Update a work item's state.",
|
|
252
|
-
usage: "yui task work update <
|
|
345
|
+
usage: "yui task work update <task>/<work> <todo|running|done|failed> [--summary <text>]",
|
|
253
346
|
options: ["--summary"],
|
|
254
|
-
argumentValues: {
|
|
347
|
+
argumentValues: {
|
|
348
|
+
1: ["todo", "running", "done", "failed"]
|
|
349
|
+
}
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
name: "scope",
|
|
353
|
+
summary: "Expand the Projects a WorkItem may modify.",
|
|
354
|
+
usage: "yui task work scope <task>/<work> [--project <project> ...]",
|
|
355
|
+
options: ["--project"]
|
|
255
356
|
},
|
|
256
357
|
{
|
|
257
358
|
name: "dispatch",
|
|
258
359
|
summary: "Dispatch a work item to its Role.",
|
|
259
|
-
usage: "yui task work dispatch <
|
|
260
|
-
options: ["--input"]
|
|
360
|
+
usage: "yui task work dispatch <task>/<work> [--input <text>] [--strategy fixed:<count>|adaptive:<max>] [--lane-role <role> ...]",
|
|
361
|
+
options: ["--input", "--strategy", "--lane-role"]
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
name: "group",
|
|
365
|
+
summary: "Resolve a Worker ExecutionGroup after its Lanes finish.",
|
|
366
|
+
executable: true,
|
|
367
|
+
sections: [{ id: "manage", title: "Commands", entries: ["resolve"] }],
|
|
368
|
+
children: [{
|
|
369
|
+
name: "resolve",
|
|
370
|
+
summary: "Select Lane outputs and resolve the Worker group.",
|
|
371
|
+
usage: "yui task work group resolve <task>/<work> --decision <accept|reject|blocked> --summary <text> [--lane <lane-id> ...]",
|
|
372
|
+
options: ["--decision", "--summary", "--lane"],
|
|
373
|
+
optionValues: { "--decision": ["accept", "reject", "blocked"] }
|
|
374
|
+
}]
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
name: "isolate",
|
|
378
|
+
summary: "Create a WorkItem-owned isolated worktree.",
|
|
379
|
+
usage: "yui task work isolate <task>/<work>"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
name: "capture",
|
|
383
|
+
summary: "Capture a terminal isolated WorkItem result as a ChangeSet.",
|
|
384
|
+
usage: "yui task work capture <task>/<work>"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
name: "cleanup",
|
|
388
|
+
summary: "Release an idle WorkItem runtime or remove its final clean worktree.",
|
|
389
|
+
usage: "yui task work cleanup <task>/<work> (--runtime-only|--integrated|--abandon)",
|
|
390
|
+
options: ["--runtime-only", "--integrated", "--abandon"]
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
name: "review",
|
|
394
|
+
summary: "Ask the configured reviewer to inspect a WorkItem candidate.",
|
|
395
|
+
usage: "yui task work review <task>/<work>",
|
|
396
|
+
executable: true,
|
|
397
|
+
sections: [
|
|
398
|
+
{ id: "retry", title: "Task-final recovery", entries: ["retry"] },
|
|
399
|
+
{ id: "workspace", title: "Review workspace", entries: ["cleanup", "preserve"] }
|
|
400
|
+
],
|
|
401
|
+
children: [
|
|
402
|
+
{
|
|
403
|
+
name: "retry",
|
|
404
|
+
summary: "Retry a failed Task-final ReviewRound that has no Reviewer Run.",
|
|
405
|
+
usage: "yui task work review retry <task>/<review-round>"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
name: "cleanup",
|
|
409
|
+
summary: "Remove only a clean terminal ReviewRound worktree.",
|
|
410
|
+
usage: "yui task work review cleanup <task>/<review-round>"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
name: "preserve",
|
|
414
|
+
summary: "Record that a terminal ReviewRound worktree is retained for diagnosis.",
|
|
415
|
+
usage: "yui task work review preserve <task>/<review-round>"
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
name: "accept",
|
|
421
|
+
summary: "Accept a successful, validated, integrated Work Item.",
|
|
422
|
+
usage: "yui task work accept <task>/<work> --summary <text>",
|
|
423
|
+
options: ["--summary"]
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
name: "reject",
|
|
427
|
+
summary: "Reject an awaiting Work Item so it can be retried.",
|
|
428
|
+
usage: "yui task work reject <task>/<work> --summary <text>",
|
|
429
|
+
options: ["--summary"]
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
name: "retire",
|
|
433
|
+
summary: "Retire a WorkItem and settle its exact Runs.",
|
|
434
|
+
usage: "yui task work retire <work> --summary <text> [--replacement <work>]",
|
|
435
|
+
options: ["--summary", "--replacement"]
|
|
261
436
|
}
|
|
262
437
|
]
|
|
263
438
|
},
|
|
264
439
|
{
|
|
265
440
|
name: "run",
|
|
266
|
-
summary: "Inspect and control Agent Runs.",
|
|
267
|
-
sections: [{ id: "manage", title: "Commands", entries: ["list", "retry", "yield"] }],
|
|
441
|
+
summary: "Inspect and control Task Role Agent Runs.",
|
|
442
|
+
sections: [{ id: "manage", title: "Commands", entries: ["list", "retry", "settle", "recover", "yield", "checkpoint"] }],
|
|
268
443
|
children: [
|
|
269
|
-
{ name: "list", summary: "List Runs for a work item.", usage: "yui task run list <work>" },
|
|
270
|
-
{
|
|
444
|
+
{ name: "list", summary: "List Runs for a work item.", usage: "yui task run list <task>/<work>" },
|
|
445
|
+
{
|
|
446
|
+
name: "retry",
|
|
447
|
+
summary: "Retry a failed execution Run or request a fresh Round for an exact failed final Review Run.",
|
|
448
|
+
usage: "yui task run retry <task>/<run>"
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
name: "settle",
|
|
452
|
+
summary: "Close an obsolete stranded final Review Run without requesting a retry Round.",
|
|
453
|
+
usage: "yui task run settle <task>/<run>"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
name: "recover",
|
|
457
|
+
summary: "Record one exact Leader-controlled Run recovery decision.",
|
|
458
|
+
usage: "yui task run recover <task>/<run> --action <diagnose|retry|replace-session|terminate> --expected-progress-at <timestamp> --provider-acceptance <accepted|rejected|ambiguous> --reason <text>",
|
|
459
|
+
options: ["--action", "--expected-progress-at", "--provider-acceptance", "--reason", "--role", "--agent-id", "--adapter-id", "--native-session-id", "--launch-id"]
|
|
460
|
+
},
|
|
271
461
|
{
|
|
272
462
|
name: "yield",
|
|
273
463
|
summary: "Complete an active Run and wake the Leader.",
|
|
274
|
-
usage: "yui task run yield <run> --summary <text
|
|
275
|
-
options: ["--summary"]
|
|
464
|
+
usage: "yui task run yield <task>/<run> (--summary <text>|--summary-file <path|->)",
|
|
465
|
+
options: ["--summary", "--summary-file"],
|
|
466
|
+
fileOptions: ["--summary-file"]
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
name: "checkpoint",
|
|
470
|
+
summary: "Record durable progress for a long-running Agent Run.",
|
|
471
|
+
usage: "yui task run checkpoint <run> (--note <text>|--note-file <path|->)",
|
|
472
|
+
options: ["--note", "--note-file"],
|
|
473
|
+
fileOptions: ["--note-file"],
|
|
474
|
+
hidden: true
|
|
276
475
|
}
|
|
277
476
|
]
|
|
278
477
|
},
|
|
478
|
+
{
|
|
479
|
+
name: "review",
|
|
480
|
+
summary: "Control Task-final ReviewRounds.",
|
|
481
|
+
sections: [{ id: "manage", title: "Commands", entries: ["request", "group", "retry"] }],
|
|
482
|
+
children: [
|
|
483
|
+
{
|
|
484
|
+
name: "request",
|
|
485
|
+
summary: "Request one Task-local final ReviewRound from a Global Role.",
|
|
486
|
+
usage: "yui task review request <task> --role <global-role> [--strategy fixed:<count>|adaptive:<max>] [--lane-role <role> ...]",
|
|
487
|
+
options: ["--role", "--strategy", "--lane-role"]
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
name: "group",
|
|
491
|
+
summary: "Resolve a Reviewer ExecutionGroup after its Lanes finish.",
|
|
492
|
+
executable: true,
|
|
493
|
+
sections: [{ id: "manage", title: "Commands", entries: ["resolve"] }],
|
|
494
|
+
children: [{
|
|
495
|
+
name: "resolve",
|
|
496
|
+
summary: "Select Reviewer Lane evidence and resolve the group.",
|
|
497
|
+
usage: "yui task review group resolve <task>/<review-round> --decision <accept|reject|blocked> --summary <text> [--lane <lane-id> ...]",
|
|
498
|
+
options: ["--decision", "--summary", "--lane"],
|
|
499
|
+
optionValues: { "--decision": ["accept", "reject", "blocked"] }
|
|
500
|
+
}]
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
name: "retry",
|
|
504
|
+
summary: "Retry a failed Task-final ReviewRound without a Reviewer Run.",
|
|
505
|
+
usage: "yui task review retry <task>/<review-round>"
|
|
506
|
+
}
|
|
507
|
+
]
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
name: "integration",
|
|
511
|
+
summary: "Safely integrate ChangeSets with Leader-owned conflict decisions.",
|
|
512
|
+
sections: [{ id: "manage", title: "Commands", entries: ["start", "continue", "resolve", "abort", "list", "show", "cleanup"] }],
|
|
513
|
+
children: [
|
|
514
|
+
{
|
|
515
|
+
name: "start",
|
|
516
|
+
summary: "Build, validate, and CAS-commit an integration candidate.",
|
|
517
|
+
usage: "yui task integration start <task> [--project <project>] --change-set <id> [--change-set <id> ...] [--target <ref>] [--check <command> ...]",
|
|
518
|
+
options: ["--project", "--change-set", "--target", "--check"]
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
name: "continue",
|
|
522
|
+
summary: "Continue a Leader-approved manual resolution.",
|
|
523
|
+
usage: "yui task integration continue <task>/<integration>"
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
name: "resolve",
|
|
527
|
+
summary: "Record the Leader's semantic conflict decision.",
|
|
528
|
+
usage: "yui task integration resolve <task>/<integration> --option <manual-resolution|reject> --rationale <text>",
|
|
529
|
+
options: ["--option", "--rationale"],
|
|
530
|
+
optionValues: { "--option": ["manual-resolution", "reject"] }
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
name: "abort",
|
|
534
|
+
summary: "Abandon a running or blocked Integration Attempt.",
|
|
535
|
+
usage: "yui task integration abort <task>/<integration> --reason <text>",
|
|
536
|
+
options: ["--reason"]
|
|
537
|
+
},
|
|
538
|
+
{ name: "list", summary: "List Integration Attempts.", usage: "yui task integration list <task>" },
|
|
539
|
+
{ name: "show", summary: "Show one Integration Attempt.", usage: "yui task integration show <task>/<integration>" },
|
|
540
|
+
{ name: "cleanup", summary: "Remove a terminal Integration worktree and branch.", usage: "yui task integration cleanup <task>/<integration>" }
|
|
541
|
+
]
|
|
542
|
+
},
|
|
279
543
|
{
|
|
280
544
|
name: "brief",
|
|
281
545
|
summary: "Manage the Task Brief, the authoritative summary of current task state.",
|
|
@@ -285,8 +549,8 @@ const taskChildren = [
|
|
|
285
549
|
{
|
|
286
550
|
name: "update",
|
|
287
551
|
summary: "Create or update the Task Brief.",
|
|
288
|
-
usage: "yui task brief update <task> [--objective <text>] [--boundary <text> ...] [--focus <text>] [--leader-summary <text>]",
|
|
289
|
-
options: ["--objective", "--boundary", "--focus", "--leader-summary"]
|
|
552
|
+
usage: "yui task brief update <task> [--objective <text>] [--boundary <text> ...] [--approach <text>] [--focus <text>] [--leader-summary <text>]",
|
|
553
|
+
options: ["--objective", "--boundary", "--approach", "--focus", "--leader-summary"]
|
|
290
554
|
}
|
|
291
555
|
]
|
|
292
556
|
},
|
|
@@ -345,21 +609,35 @@ const taskChildren = [
|
|
|
345
609
|
];
|
|
346
610
|
export const ROOT_COMMAND = buildNode({
|
|
347
611
|
name: "yui",
|
|
348
|
-
summary: "Coordinate
|
|
612
|
+
summary: "Coordinate durable, isolated Agent work.",
|
|
349
613
|
usage: "yui [--json] <command>",
|
|
350
614
|
sections: [
|
|
351
|
-
{ id: "general", title: "General", entries: [
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
{ id: "
|
|
615
|
+
{ id: "general", title: "General", entries: [
|
|
616
|
+
"help", "version", "update", "upgrade", "setup", "doctor", "completion"
|
|
617
|
+
] },
|
|
618
|
+
{ id: "workflow", title: "Workflow", entries: ["operator", "project", "task"] },
|
|
619
|
+
{ id: "configuration", title: "Configuration", entries: ["config", "agent", "profile", "role"] },
|
|
620
|
+
{ id: "operations", title: "Operations", entries: ["web", "controller", "jobs"] },
|
|
355
621
|
{ id: "internal", title: "Internal", entries: ["internal"] }
|
|
356
622
|
],
|
|
357
623
|
children: [
|
|
358
624
|
{ name: "help", summary: "Show root or scoped command help.", usage: "yui help [command ...]", commandPathArguments: true },
|
|
359
625
|
{ name: "version", summary: "Print the installed Yui version." },
|
|
360
626
|
{ name: "update", summary: "Install the latest published Yui package globally." },
|
|
627
|
+
{
|
|
628
|
+
name: "upgrade",
|
|
629
|
+
summary: "Migrate this Home's storage to the current schema.",
|
|
630
|
+
usage: "yui upgrade [--dry-run]",
|
|
631
|
+
options: ["--dry-run"]
|
|
632
|
+
},
|
|
361
633
|
{ name: "setup", summary: "Initialize or update Yui configuration." },
|
|
362
634
|
{ name: "doctor", summary: "Check Yui dependencies and file state." },
|
|
635
|
+
{
|
|
636
|
+
name: "web",
|
|
637
|
+
summary: "Serve the local Task and Agent control room.",
|
|
638
|
+
usage: "yui web [--host <loopback>] [--port <port>]",
|
|
639
|
+
options: ["--host", "--port"]
|
|
640
|
+
},
|
|
363
641
|
{
|
|
364
642
|
name: "completion",
|
|
365
643
|
summary: "Interactively configure shell completion.",
|
|
@@ -384,68 +662,206 @@ export const ROOT_COMMAND = buildNode({
|
|
|
384
662
|
},
|
|
385
663
|
{
|
|
386
664
|
name: "controller",
|
|
387
|
-
summary: "Inspect
|
|
388
|
-
sections: [{
|
|
665
|
+
summary: "Inspect and recover local Controller runtime resources.",
|
|
666
|
+
sections: [{
|
|
667
|
+
id: "lifecycle",
|
|
668
|
+
title: "Commands",
|
|
669
|
+
entries: ["status", "cleanup", "identity", "stop", "restart"]
|
|
670
|
+
}],
|
|
389
671
|
children: [
|
|
390
|
-
{
|
|
672
|
+
{
|
|
673
|
+
name: "status",
|
|
674
|
+
summary: "Show Controller and Agent runtime resources.",
|
|
675
|
+
usage: "yui controller status [--all] [--verbose]",
|
|
676
|
+
options: ["--all", "--verbose"]
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
name: "cleanup",
|
|
680
|
+
summary: "Interactively clean confirmed unused runtime resources.",
|
|
681
|
+
usage: "yui controller cleanup [--all]",
|
|
682
|
+
options: ["--all"]
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
name: "identity",
|
|
686
|
+
summary: "Read the authenticated Controller launch identity.",
|
|
687
|
+
hidden: true
|
|
688
|
+
},
|
|
391
689
|
{ name: "stop", summary: "Stop the Controller." },
|
|
392
690
|
{ name: "restart", summary: "Restart internal services without stopping tmux sessions." }
|
|
393
691
|
]
|
|
394
692
|
},
|
|
693
|
+
{
|
|
694
|
+
name: "config",
|
|
695
|
+
summary: "Inspect or update Yui configuration.",
|
|
696
|
+
sections: [{ id: "manage", title: "Commands", entries: ["show", "set", "review"] }],
|
|
697
|
+
children: [
|
|
698
|
+
{ name: "show", summary: "Show effective Yui configuration." },
|
|
699
|
+
{
|
|
700
|
+
name: "set",
|
|
701
|
+
summary: "Update Yui configuration.",
|
|
702
|
+
usage: "yui config set <--time-zone <IANA timezone> | --reconciliation-interval-seconds <5-300>>",
|
|
703
|
+
options: ["--time-zone", "--reconciliation-interval-seconds"]
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
name: "review",
|
|
707
|
+
summary: "Configure WorkItem review.",
|
|
708
|
+
sections: [{ id: "manage", title: "Commands", entries: ["show", "set", "clear"] }],
|
|
709
|
+
children: [
|
|
710
|
+
{ name: "show", summary: "Show the global review rule." },
|
|
711
|
+
{
|
|
712
|
+
name: "set",
|
|
713
|
+
summary: "Enable review with a Global Role.",
|
|
714
|
+
usage: "yui config review set --role <global-role> --trigger <always|leader|final>",
|
|
715
|
+
options: ["--role", "--trigger"],
|
|
716
|
+
optionValues: { "--trigger": ["always", "leader", "final"] }
|
|
717
|
+
},
|
|
718
|
+
{ name: "clear", summary: "Disable global review." }
|
|
719
|
+
]
|
|
720
|
+
}
|
|
721
|
+
]
|
|
722
|
+
},
|
|
395
723
|
{
|
|
396
724
|
name: "operator",
|
|
397
|
-
summary: "Use the persistent Operator
|
|
398
|
-
sections: [{
|
|
725
|
+
summary: "Use the persistent Operator Actor.",
|
|
726
|
+
sections: [{
|
|
727
|
+
id: "workflow",
|
|
728
|
+
title: "Commands",
|
|
729
|
+
entries: ["enter", "new", "list", "resume", "submit"]
|
|
730
|
+
}],
|
|
399
731
|
children: [
|
|
400
732
|
{ name: "enter", summary: "Enter the Operator's native session." },
|
|
733
|
+
{
|
|
734
|
+
name: "new",
|
|
735
|
+
summary: "Start a new Operator session.",
|
|
736
|
+
usage: "yui operator new [--agent <id>]",
|
|
737
|
+
options: ["--agent"]
|
|
738
|
+
},
|
|
739
|
+
{ name: "list", summary: "List Operator session history." },
|
|
740
|
+
{
|
|
741
|
+
name: "resume",
|
|
742
|
+
summary: "Resume a previous Operator session.",
|
|
743
|
+
usage: "yui operator resume [<ref> | --last]",
|
|
744
|
+
options: ["--last"]
|
|
745
|
+
},
|
|
401
746
|
{
|
|
402
747
|
name: "submit",
|
|
403
748
|
summary: "Submit work through the Operator.",
|
|
404
|
-
usage: "yui operator submit <body
|
|
405
|
-
options: ["--task"]
|
|
749
|
+
usage: "yui operator submit (<body>|--body-file <path|->) [--task <id>]",
|
|
750
|
+
options: ["--task", "--body-file"],
|
|
751
|
+
fileOptions: ["--body-file"]
|
|
406
752
|
}
|
|
407
753
|
]
|
|
408
754
|
},
|
|
409
755
|
{
|
|
410
|
-
name: "
|
|
411
|
-
summary: "Manage
|
|
412
|
-
sections: [{ id: "manage", title: "Commands", entries: ["add", "list"] }],
|
|
756
|
+
name: "project",
|
|
757
|
+
summary: "Manage Projects, stable checkouts, branches, and Yui knowledge.",
|
|
758
|
+
sections: [{ id: "manage", title: "Commands", entries: ["add", "clone", "refresh", "update", "discover", "list", "show", "knowledge"] }],
|
|
413
759
|
children: [
|
|
414
760
|
{
|
|
415
761
|
name: "add",
|
|
416
|
-
summary: "
|
|
417
|
-
usage: "yui
|
|
418
|
-
options: ["--
|
|
762
|
+
summary: "Bind a Project to a stable Git checkout.",
|
|
763
|
+
usage: "yui project add <name> <path> [--alias <name> ...] [--remote <url>] [--stable <ref>] [--development <ref>]",
|
|
764
|
+
options: ["--alias", "--remote", "--stable", "--development"],
|
|
419
765
|
fileArguments: [1]
|
|
420
766
|
},
|
|
421
|
-
{
|
|
767
|
+
{
|
|
768
|
+
name: "clone",
|
|
769
|
+
summary: "Clone and bind a Project after user confirmation.",
|
|
770
|
+
usage: "yui project clone <name> <remote> [--alias <name> ...] [--stable <ref>] [--development <ref>]",
|
|
771
|
+
options: ["--alias", "--stable", "--development"]
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
name: "refresh",
|
|
775
|
+
summary: "Fast-forward a clean stable checkout from its configured remote.",
|
|
776
|
+
usage: "yui project refresh <project>"
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
name: "update",
|
|
780
|
+
summary: "Update a bound Project's aliases, remote, or branch refs.",
|
|
781
|
+
usage: "yui project update <project> [--alias <name> ...|--clear-aliases] [--remote <url>|--clear-remote] [--stable <ref>] [--development <ref>]",
|
|
782
|
+
options: [
|
|
783
|
+
"--alias", "--clear-aliases", "--remote", "--clear-remote",
|
|
784
|
+
"--stable", "--development"
|
|
785
|
+
]
|
|
786
|
+
},
|
|
787
|
+
{
|
|
788
|
+
name: "discover",
|
|
789
|
+
summary: "Find Git projects directly under the configured workspace.",
|
|
790
|
+
usage: "yui project discover [name]"
|
|
791
|
+
},
|
|
792
|
+
{ name: "list", summary: "List bound Projects." },
|
|
793
|
+
{ name: "show", summary: "Show one Project.", usage: "yui project show <project>" },
|
|
794
|
+
{
|
|
795
|
+
name: "knowledge",
|
|
796
|
+
summary: "Manage durable Project knowledge stored by Yui.",
|
|
797
|
+
sections: [{ id: "manage", title: "Commands", entries: ["add", "update", "retire", "list", "show"] }],
|
|
798
|
+
children: [
|
|
799
|
+
{
|
|
800
|
+
name: "add",
|
|
801
|
+
summary: "Add Project knowledge.",
|
|
802
|
+
usage: "yui project knowledge add <project> <title> --body <text>",
|
|
803
|
+
options: ["--body"]
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
name: "update",
|
|
807
|
+
summary: "Update active Project knowledge.",
|
|
808
|
+
usage: "yui project knowledge update <project> <knowledge> [--title <text>] [--body <text>]",
|
|
809
|
+
options: ["--title", "--body"]
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
name: "retire",
|
|
813
|
+
summary: "Retire Project knowledge without deleting its record.",
|
|
814
|
+
usage: "yui project knowledge retire <project> <knowledge>"
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
name: "list",
|
|
818
|
+
summary: "List Project knowledge.",
|
|
819
|
+
usage: "yui project knowledge list <project> [--all]",
|
|
820
|
+
options: ["--all"]
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
name: "show",
|
|
824
|
+
summary: "Read one Project knowledge entry.",
|
|
825
|
+
usage: "yui project knowledge show <project> <knowledge>"
|
|
826
|
+
}
|
|
827
|
+
]
|
|
828
|
+
}
|
|
422
829
|
]
|
|
423
830
|
},
|
|
424
831
|
{
|
|
425
832
|
name: "agent",
|
|
426
833
|
summary: "Manage configured native Agent CLIs.",
|
|
427
834
|
sections: [
|
|
428
|
-
{ id: "inspect", title: "Inspect", entries: ["list", "show"] },
|
|
835
|
+
{ id: "inspect", title: "Inspect", entries: ["list", "show", "capabilities"] },
|
|
429
836
|
{ id: "manage", title: "Manage", entries: ["add", "update", "remove"] }
|
|
430
837
|
],
|
|
431
838
|
children: agentChildren
|
|
432
839
|
},
|
|
840
|
+
{
|
|
841
|
+
name: "profile",
|
|
842
|
+
summary: "Manage reusable Agent Profiles.",
|
|
843
|
+
sections: [
|
|
844
|
+
{ id: "inspect", title: "Inspect", entries: ["list", "show"] },
|
|
845
|
+
{ id: "manage", title: "Manage", entries: ["add", "update", "remove", "reset"] }
|
|
846
|
+
],
|
|
847
|
+
children: profileChildren
|
|
848
|
+
},
|
|
433
849
|
{
|
|
434
850
|
name: "role",
|
|
435
851
|
summary: "Manage reusable global Roles and their native sessions.",
|
|
436
852
|
sections: [
|
|
437
853
|
{ id: "inspect", title: "Inspect", entries: ["list", "show"] },
|
|
438
|
-
{ id: "manage", title: "Manage", entries: ["add", "update", "remove", "bind"] },
|
|
854
|
+
{ id: "manage", title: "Manage", entries: ["add", "update", "remove", "bind", "unbind"] },
|
|
439
855
|
{ id: "sessions", title: "Sessions", entries: ["enter", "session"] }
|
|
440
856
|
],
|
|
441
857
|
children: roleChildren
|
|
442
858
|
},
|
|
443
859
|
{
|
|
444
860
|
name: "task",
|
|
445
|
-
summary: "Manage Tasks,
|
|
861
|
+
summary: "Manage Tasks, WorkItems, Agent Runs, and integration.",
|
|
446
862
|
sections: [
|
|
447
|
-
{ id: "lifecycle", title: "Lifecycle", entries: ["create", "update", "activate", "complete", "reopen", "list", "show", "context", "archive", "reconcile"] },
|
|
448
|
-
{ id: "collaboration", title: "Collaboration", entries: ["message", "input", "
|
|
863
|
+
{ id: "lifecycle", title: "Lifecycle", entries: ["create", "project", "update", "activate", "complete", "reopen", "retire", "list", "show", "context", "archive", "reconcile"] },
|
|
864
|
+
{ id: "collaboration", title: "Collaboration", entries: ["message", "input", "work", "run", "review", "integration", "role", "enter"] },
|
|
449
865
|
{ id: "knowledge", title: "Task Knowledge", entries: ["brief", "decision", "milestone", "event"] }
|
|
450
866
|
],
|
|
451
867
|
children: taskChildren
|
|
@@ -463,12 +879,24 @@ export const ROOT_COMMAND = buildNode({
|
|
|
463
879
|
name: "internal",
|
|
464
880
|
summary: "Internal Yui callbacks.",
|
|
465
881
|
hidden: true,
|
|
466
|
-
sections: [{ id: "callbacks", title: "Callbacks", entries: ["session-notify"] }],
|
|
467
|
-
children: [
|
|
882
|
+
sections: [{ id: "callbacks", title: "Callbacks", entries: ["session-notify", "claude-hook", "codex-hook"] }],
|
|
883
|
+
children: [
|
|
884
|
+
{
|
|
468
885
|
name: "session-notify",
|
|
469
886
|
summary: "Record a structured native session notification.",
|
|
470
887
|
usage: "yui internal session-notify <payload>"
|
|
471
|
-
}
|
|
888
|
+
},
|
|
889
|
+
{
|
|
890
|
+
name: "claude-hook",
|
|
891
|
+
summary: "Record a managed Claude StopFailure event from stdin.",
|
|
892
|
+
usage: "yui internal claude-hook"
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
name: "codex-hook",
|
|
896
|
+
summary: "Record managed Codex provider lifecycle evidence from stdin.",
|
|
897
|
+
usage: "yui internal codex-hook"
|
|
898
|
+
}
|
|
899
|
+
]
|
|
472
900
|
}
|
|
473
901
|
]
|
|
474
902
|
});
|