@zq-silk/yui 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/cli/commandCatalog.js +318 -289
- package/dist/cli/commandDiscovery.js +72 -0
- package/dist/cli/completion.js +22 -227
- package/dist/cli/dynamicCompletion.js +12 -6
- package/dist/cli/invocationAuthority.js +2 -2
- package/dist/cli/invocationRouter.js +18 -7
- package/dist/cli.js +23 -3030
- package/dist/commands/capabilityCommands.js +5 -5
- package/dist/commands/globalRoleCommands.js +2 -1
- package/dist/commands/taskCommands.js +90 -21
- package/dist/commands/taskIntegrationCommands.js +3 -1
- package/dist/commands/taskUpstreamCommands.js +3 -1
- package/dist/context/runContextPack.js +132 -5
- package/dist/context/sourceRunContext.js +4 -2
- package/dist/context/taskContext.js +12 -3
- package/dist/controlPlaneCli.js +3092 -0
- package/dist/controller/fileSchedulerStoreAdapter.js +19 -6
- package/dist/controller/jobControl.js +21 -0
- package/dist/executor/agentExecutor.js +1 -1
- package/dist/executor/effectiveLaunch.js +18 -5
- package/dist/executor/fileRoleLaunchPlanner.js +15 -19
- package/dist/integration/gitIntegrationService.js +50 -15
- package/dist/kernel/accessAssessment.js +1 -0
- package/dist/kernel/builtinCapabilities.js +28 -1
- package/dist/kernel/capabilityRegistry.js +64 -19
- package/dist/message/messageContinuation.js +7 -2
- package/dist/nativeAgent/agent.js +275 -0
- package/dist/nativeAgent/cliDemo.js +37 -0
- package/dist/nativeAgent/codingTools.js +11 -0
- package/dist/nativeAgent/commandTool.js +215 -0
- package/dist/nativeAgent/compactionDemo.js +158 -0
- package/dist/nativeAgent/composition.js +71 -0
- package/dist/nativeAgent/context/budget.js +44 -0
- package/dist/nativeAgent/context/index.js +339 -0
- package/dist/nativeAgent/context/providerCompressor.js +103 -0
- package/dist/nativeAgent/contracts.js +1 -0
- package/dist/nativeAgent/demo.js +40 -0
- package/dist/nativeAgent/evaluation/cases.js +38 -0
- package/dist/nativeAgent/evaluation/checks.js +91 -0
- package/dist/nativeAgent/evaluation/demo.js +19 -0
- package/dist/nativeAgent/evaluation/files.js +54 -0
- package/dist/nativeAgent/evaluation/fixture.js +36 -0
- package/dist/nativeAgent/evaluation/index.js +239 -0
- package/dist/nativeAgent/executionOwner.js +209 -0
- package/dist/nativeAgent/filePatterns.js +170 -0
- package/dist/nativeAgent/fileToolsSupport.js +202 -0
- package/dist/nativeAgent/index.js +16 -0
- package/dist/nativeAgent/interaction/cli.js +358 -0
- package/dist/nativeAgent/interaction/contracts.js +1 -0
- package/dist/nativeAgent/interaction/index.js +3 -0
- package/dist/nativeAgent/interaction/memoryDemo.js +115 -0
- package/dist/nativeAgent/interaction/renderer.js +34 -0
- package/dist/nativeAgent/localSafety.js +258 -0
- package/dist/nativeAgent/mockProvider.js +43 -0
- package/dist/nativeAgent/model/anthropicMessages.js +204 -0
- package/dist/nativeAgent/model/chatCompletions.js +210 -0
- package/dist/nativeAgent/model/errors.js +47 -0
- package/dist/nativeAgent/model/gateway.js +423 -0
- package/dist/nativeAgent/model/index.js +7 -0
- package/dist/nativeAgent/model/observationAdapter.js +21 -0
- package/dist/nativeAgent/model/protocols.js +19 -0
- package/dist/nativeAgent/model/responses.js +263 -0
- package/dist/nativeAgent/model/types.js +1 -0
- package/dist/nativeAgent/model/wire.js +73 -0
- package/dist/nativeAgent/observability/index.js +220 -0
- package/dist/nativeAgent/product/catalog.js +82 -0
- package/dist/nativeAgent/product/config.js +295 -0
- package/dist/nativeAgent/product/facts.js +30 -0
- package/dist/nativeAgent/product/index.js +62 -0
- package/dist/nativeAgent/product/location.js +44 -0
- package/dist/nativeAgent/product/runtime.js +276 -0
- package/dist/nativeAgent/product/storage.js +49 -0
- package/dist/nativeAgent/product/tools.js +47 -0
- package/dist/nativeAgent/product/transport.js +54 -0
- package/dist/nativeAgent/projectGuidance/index.js +425 -0
- package/dist/nativeAgent/searchTools.js +305 -0
- package/dist/nativeAgent/session/backends.js +293 -0
- package/dist/nativeAgent/session/catalog.js +97 -0
- package/dist/nativeAgent/session/catalogDemo.js +87 -0
- package/dist/nativeAgent/session/contracts.js +1 -0
- package/dist/nativeAgent/session/format.js +269 -0
- package/dist/nativeAgent/session/index.js +5 -0
- package/dist/nativeAgent/session/location.js +36 -0
- package/dist/nativeAgent/session/sqliteFormat.js +134 -0
- package/dist/nativeAgent/session/store.js +248 -0
- package/dist/nativeAgent/textTools.js +293 -0
- package/dist/nativeAgent/toolManager/executor.js +290 -0
- package/dist/nativeAgent/toolManager/index.js +4 -0
- package/dist/nativeAgent/validation.js +95 -0
- package/dist/plugins/pluginService.js +98 -8
- package/dist/resources/projectResourceService.js +23 -1
- package/dist/runtime/managedIdentity.js +6 -0
- package/dist/surface/surfaceContributions.js +3 -0
- package/dist/task/taskAuthority.js +61 -10
- package/dist/web/assets/assetManifest.js +38 -22
- package/dist/web/assets/client/api.js +115 -0
- package/dist/web/assets/client/app.js +615 -862
- package/dist/web/assets/client/components.js +323 -897
- package/dist/web/assets/client/detail.js +333 -0
- package/dist/web/assets/client/dock.js +225 -0
- package/dist/web/assets/client/dom.js +55 -3
- package/dist/web/assets/client/evidence.js +172 -0
- package/dist/web/assets/client/format.js +25 -14
- package/dist/web/assets/client/forms.js +230 -0
- package/dist/web/assets/client/i18n.js +1024 -791
- package/dist/web/assets/client/overview.js +118 -0
- package/dist/web/assets/client/records.js +63 -0
- package/dist/web/assets/client/sections.js +313 -0
- package/dist/web/assets/client/sidebar.js +146 -0
- package/dist/web/assets/client/theme.js +61 -22
- package/dist/web/assets/icons.js +39 -0
- package/dist/web/assets/shell.js +125 -118
- package/dist/web/assets/styles/base.js +41 -0
- package/dist/web/assets/styles/components.js +169 -0
- package/dist/web/assets/styles/layout.js +56 -77
- package/dist/web/assets/styles/markdown.js +16 -24
- package/dist/web/assets/styles/responsive.js +41 -44
- package/dist/web/assets/styles/tokens.js +65 -89
- package/dist/web/assets/styles/views.js +292 -0
- package/dist/web/webServer.js +2 -1
- package/docs/agent-result-consumption.md +16 -0
- package/docs/agent-result-consumption.zh-CN.md +13 -0
- package/docs/examples/agent-offline.mjs +194 -0
- package/docs/native-agent.md +283 -0
- package/docs/release-workflow.md +61 -0
- package/docs/release-workflow.zh-CN.md +46 -0
- package/docs/roles-and-configuration.md +32 -0
- package/docs/roles-and-configuration.zh-CN.md +26 -0
- package/package.json +1 -1
- package/skills/yui-leader/SKILL.md +9 -0
- package/skills/yui-reviewer/SKILL.md +5 -0
- package/skills/yui-runtime/SKILL.md +33 -0
- package/dist/web/assets/client/taskSummary.js +0 -350
- package/dist/web/assets/client/taskSurface.js +0 -616
- package/dist/web/assets/client/view.js +0 -608
- package/dist/web/assets/styles/cards.js +0 -247
- package/dist/web/assets/styles/widgets.js +0 -168
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { supportedAgentAdapterIds } from "../agent/adapterCatalog.js";
|
|
2
2
|
import { supportedAgentExecutionComponentIds } from "../agent/executionComponents.js";
|
|
3
|
+
import { productConfigurationOptions } from "../nativeAgent/product/config.js";
|
|
4
|
+
import { catalogCommands, catalogCommandOptions } from "../nativeAgent/product/catalog.js";
|
|
3
5
|
import { CONFIG_DEFINITIONS, CONFIG_DOMAINS, configDefinitionsForDomain } from "../config/configCatalog.js";
|
|
4
6
|
function buildNode(input, parentPath = []) {
|
|
5
7
|
const path = [...parentPath, input.name];
|
|
@@ -24,6 +26,7 @@ function buildNode(input, parentPath = []) {
|
|
|
24
26
|
}))),
|
|
25
27
|
children: Object.freeze(children),
|
|
26
28
|
hidden: input.hidden ?? false,
|
|
29
|
+
...(input.discovery === undefined ? {} : { discovery: input.discovery }),
|
|
27
30
|
options: Object.freeze([...(input.options ?? [])]),
|
|
28
31
|
hiddenOptions: Object.freeze([...(input.hiddenOptions ?? [])]),
|
|
29
32
|
values: Object.freeze((input.values ?? []).map((value) => Object.freeze(typeof value === "string" ? { name: value, summary: value } : { ...value }))),
|
|
@@ -66,7 +69,7 @@ function durableConfigDomainNode(domain) {
|
|
|
66
69
|
? ["--quiet-after-seconds", "--diagnostic-after-seconds", "--stall-after-seconds"]
|
|
67
70
|
: [];
|
|
68
71
|
return {
|
|
69
|
-
name: domain,
|
|
72
|
+
name: domain, discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
70
73
|
summary: CONFIG_DOMAIN_SUMMARIES[domain],
|
|
71
74
|
examples: [
|
|
72
75
|
`yui config ${domain} show`,
|
|
@@ -75,9 +78,9 @@ function durableConfigDomainNode(domain) {
|
|
|
75
78
|
],
|
|
76
79
|
sections: [{ id: "manage", title: "Commands", entries: ["show", "set", "clear"] }],
|
|
77
80
|
children: [
|
|
78
|
-
{ name: "show", summary: `Show effective ${domain} configuration.` },
|
|
81
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: `Show effective ${domain} configuration.` },
|
|
79
82
|
{
|
|
80
|
-
name: "set",
|
|
83
|
+
name: "set", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
81
84
|
summary: `Set one ${domain} configuration key.`,
|
|
82
85
|
usage: `yui config ${domain} set <key> <value...>`,
|
|
83
86
|
sections: [{ id: "keys", title: "Configuration keys", entries: keys }],
|
|
@@ -90,7 +93,7 @@ function durableConfigDomainNode(domain) {
|
|
|
90
93
|
: {}
|
|
91
94
|
},
|
|
92
95
|
{
|
|
93
|
-
name: "clear",
|
|
96
|
+
name: "clear", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
94
97
|
summary: `Reset one ${domain} configuration key to its default.`,
|
|
95
98
|
usage: `yui config ${domain} clear <key>`,
|
|
96
99
|
sections: [{ id: "keys", title: "Configuration keys", entries: keys }],
|
|
@@ -101,7 +104,7 @@ function durableConfigDomainNode(domain) {
|
|
|
101
104
|
}
|
|
102
105
|
const agentChildren = [
|
|
103
106
|
{
|
|
104
|
-
name: "add",
|
|
107
|
+
name: "add", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
105
108
|
summary: "Add a configured Agent execution component.",
|
|
106
109
|
usage: "yui config agent add <id> [--component <component>] [--adapter <adapter>] --command <command> [--arg <arg> ...] [--env TARGET=PROCESS_NAME ...]",
|
|
107
110
|
options: ["--component", "--adapter", "--command", "--arg", "--env"],
|
|
@@ -111,16 +114,16 @@ const agentChildren = [
|
|
|
111
114
|
},
|
|
112
115
|
executableOptions: ["--command"]
|
|
113
116
|
},
|
|
114
|
-
{ name: "list", summary: "List configured Agents." },
|
|
115
|
-
{ name: "show", summary: "Show one configured Agent.", usage: "yui config agent show <id>" },
|
|
117
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: "List configured Agents." },
|
|
118
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: "Show one configured Agent.", usage: "yui config agent show <id>" },
|
|
116
119
|
{
|
|
117
|
-
name: "capabilities",
|
|
120
|
+
name: "capabilities", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] },
|
|
118
121
|
summary: "Probe one Agent CLI for runtime configuration options.",
|
|
119
122
|
usage: "yui config agent capabilities <id> [--refresh]",
|
|
120
123
|
options: ["--refresh"]
|
|
121
124
|
},
|
|
122
125
|
{
|
|
123
|
-
name: "update",
|
|
126
|
+
name: "update", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
124
127
|
summary: "Update a configured Agent.",
|
|
125
128
|
usage: "yui config agent update <id> [--component <component>] [--adapter <adapter>] [--command <command>] [--arg <arg> ... | --clear-args] [--env TARGET=PROCESS_NAME ... | --clear-env]",
|
|
126
129
|
options: ["--component", "--adapter", "--command", "--arg", "--clear-args", "--env", "--clear-env", "--yes"],
|
|
@@ -130,7 +133,7 @@ const agentChildren = [
|
|
|
130
133
|
},
|
|
131
134
|
executableOptions: ["--command"]
|
|
132
135
|
},
|
|
133
|
-
{ name: "remove", summary: "Remove a configured Agent.", usage: "yui config agent remove <id>" }
|
|
136
|
+
{ name: "remove", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Remove a configured Agent.", usage: "yui config agent remove <id>" }
|
|
134
137
|
];
|
|
135
138
|
const roleProfileOptions = [
|
|
136
139
|
"--description", "--responsibility", "--constraint",
|
|
@@ -164,17 +167,17 @@ const roleAgentOptionValues = {
|
|
|
164
167
|
};
|
|
165
168
|
const roleChildren = [
|
|
166
169
|
{
|
|
167
|
-
name: "add",
|
|
170
|
+
name: "add", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
168
171
|
summary: "Add a reusable global Role.",
|
|
169
172
|
usage: "yui config role add <name> --agent <id> [Role and Agent settings]",
|
|
170
173
|
options: ["--agent", "--workspace", ...roleProfileOptions, ...roleAgentOptions],
|
|
171
174
|
optionValues: roleAgentOptionValues,
|
|
172
175
|
fileOptions: ["--workspace"]
|
|
173
176
|
},
|
|
174
|
-
{ name: "list", summary: "List global Roles." },
|
|
175
|
-
{ name: "show", summary: "Show one global Role.", usage: "yui config role show <name>" },
|
|
177
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: "List global Roles." },
|
|
178
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: "Show one global Role.", usage: "yui config role show <name>" },
|
|
176
179
|
{
|
|
177
|
-
name: "update",
|
|
180
|
+
name: "update", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
178
181
|
summary: "Update a global Role.",
|
|
179
182
|
usage: "yui config role update <name> [profile options] [clear options]",
|
|
180
183
|
options: ["--agent", "--workspace", ...roleProfileOptions, ...roleAgentOptions,
|
|
@@ -182,74 +185,74 @@ const roleChildren = [
|
|
|
182
185
|
optionValues: roleAgentOptionValues,
|
|
183
186
|
fileOptions: ["--workspace"]
|
|
184
187
|
},
|
|
185
|
-
{ name: "remove", summary: "Remove a global Role.", usage: "yui config role remove <name>" },
|
|
186
|
-
{ name: "bind", summary: "Bind and activate an Agent for a global Role.", usage: "yui config role bind <role> <agent-id>" },
|
|
187
|
-
{ name: "unbind", summary: "Unbind a dormant Agent from a global Role.", usage: "yui config role unbind <role> <agent-id>" }
|
|
188
|
+
{ name: "remove", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Remove a global Role.", usage: "yui config role remove <name>" },
|
|
189
|
+
{ name: "bind", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Bind and activate an Agent for a global Role.", usage: "yui config role bind <role> <agent-id>" },
|
|
190
|
+
{ name: "unbind", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Unbind a dormant Agent from a global Role.", usage: "yui config role unbind <role> <agent-id>" }
|
|
188
191
|
];
|
|
189
192
|
const globalSessionChildren = [
|
|
190
|
-
{ name: "enter", summary: "Enter a global Role's native session.", usage: "yui session enter <role>" },
|
|
193
|
+
{ name: "enter", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Enter a global Role's native session.", usage: "yui session enter <role>" },
|
|
191
194
|
{
|
|
192
|
-
name: "context",
|
|
195
|
+
name: "context", discovery: { surface: "managed", audiences: ["operator", "global", "unbound"] },
|
|
193
196
|
summary: "Load the exact authorized global Role context.",
|
|
194
197
|
usage: "yui session context <role> [--cursor <cursor>]",
|
|
195
198
|
options: ["--cursor"]
|
|
196
199
|
},
|
|
197
200
|
{
|
|
198
|
-
name: "record",
|
|
201
|
+
name: "record", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
199
202
|
summary: "Record the active Agent's native session ID.",
|
|
200
203
|
usage: "yui session record <role> --native-id <id>",
|
|
201
204
|
options: ["--native-id"]
|
|
202
205
|
},
|
|
203
206
|
{
|
|
204
|
-
name: "replace",
|
|
207
|
+
name: "replace", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
205
208
|
summary: "Explicitly replace the active Agent's native session ID.",
|
|
206
209
|
usage: "yui session replace <role> --native-id <id> --reason <text>",
|
|
207
210
|
options: ["--native-id", "--reason"]
|
|
208
211
|
},
|
|
209
212
|
{
|
|
210
|
-
name: "stop",
|
|
213
|
+
name: "stop", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
211
214
|
summary: "Stop all idle managed Sessions and the Controller before an offline update.",
|
|
212
215
|
usage: "yui session stop --all",
|
|
213
216
|
options: ["--all"]
|
|
214
217
|
},
|
|
215
218
|
{
|
|
216
|
-
name: "reconcile",
|
|
219
|
+
name: "reconcile", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
217
220
|
summary: "Reconcile durable Session owners with native sessions.",
|
|
218
221
|
usage: "yui session reconcile [--report] [--cleanup]",
|
|
219
222
|
options: ["--report", "--cleanup"]
|
|
220
223
|
},
|
|
221
224
|
{
|
|
222
|
-
name: "retry",
|
|
225
|
+
name: "retry", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
223
226
|
summary: "Inspect or control bounded Provider recovery for this Global Session.",
|
|
224
227
|
usage: "yui session retry <role> [show|cancel|disable|enable]"
|
|
225
228
|
}
|
|
226
229
|
];
|
|
227
230
|
const profileChildren = [
|
|
228
231
|
{
|
|
229
|
-
name: "add",
|
|
232
|
+
name: "add", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
230
233
|
summary: "Add a reusable Agent Profile that inherits Worker runtime or selects one explicit Agent.",
|
|
231
234
|
usage: "yui config profile add <id> [--access <read|write>] [--inherit-worker | --agent <id> [--model <model>] [--effort <effort>]] [Profile settings]",
|
|
232
235
|
options: ["--access", ...agentProfileOptions],
|
|
233
236
|
optionValues: { "--access": ["read", "write"] }
|
|
234
237
|
},
|
|
235
|
-
{ name: "list", summary: "List Agent Profiles." },
|
|
236
|
-
{ name: "show", summary: "Show one Agent Profile.", usage: "yui config profile show <id>" },
|
|
238
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: "List Agent Profiles." },
|
|
239
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] }, summary: "Show one Agent Profile.", usage: "yui config profile show <id>" },
|
|
237
240
|
{
|
|
238
|
-
name: "update",
|
|
241
|
+
name: "update", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
239
242
|
summary: "Update an Agent Profile's behavior or runtime source.",
|
|
240
243
|
usage: "yui config profile update <id> [--access <read|write>] [--inherit-worker | [--agent <id>] [--model <model>|--clear-model] [--effort <effort>|--clear-effort]] [Profile settings]",
|
|
241
244
|
options: ["--access", ...agentProfileOptions, ...agentProfileClearOptions],
|
|
242
245
|
optionValues: { "--access": ["read", "write"] }
|
|
243
246
|
},
|
|
244
|
-
{ name: "remove", summary: "Remove a custom Agent Profile.", usage: "yui config profile remove <id>" },
|
|
245
|
-
{ name: "reset", summary: "Reset all built-in Agent Profiles." }
|
|
247
|
+
{ name: "remove", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Remove a custom Agent Profile.", usage: "yui config profile remove <id>" },
|
|
248
|
+
{ name: "reset", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Reset all built-in Agent Profiles." }
|
|
246
249
|
];
|
|
247
250
|
const completionChildren = [
|
|
248
|
-
{ name: "bash", summary: "Interactively configure Bash completion." },
|
|
249
|
-
{ name: "zsh", summary: "Interactively configure Zsh completion." },
|
|
250
|
-
{ name: "fish", summary: "Interactively configure Fish completion." },
|
|
251
|
+
{ name: "bash", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Interactively configure Bash completion." },
|
|
252
|
+
{ name: "zsh", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Interactively configure Zsh completion." },
|
|
253
|
+
{ name: "fish", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Interactively configure Fish completion." },
|
|
251
254
|
{
|
|
252
|
-
name: "candidates",
|
|
255
|
+
name: "candidates", discovery: { surface: "runtime", audiences: [] },
|
|
253
256
|
summary: "Resolve internal dynamic completion candidates.",
|
|
254
257
|
usage: "yui config completion candidates <prefix> -- <words...>",
|
|
255
258
|
hidden: true
|
|
@@ -257,24 +260,24 @@ const completionChildren = [
|
|
|
257
260
|
];
|
|
258
261
|
const taskChildren = [
|
|
259
262
|
{
|
|
260
|
-
name: "create",
|
|
263
|
+
name: "create", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
261
264
|
summary: "Create a Draft Task.",
|
|
262
265
|
usage: "yui task create <title> [--type <project-defined-type>] [--project <project> ...] [--base <project>=<ref> ...]",
|
|
263
266
|
options: ["--type", "--project", "--base"],
|
|
264
267
|
optionValues: { "--type": ["feature", "bugfix"] }
|
|
265
268
|
},
|
|
266
269
|
{
|
|
267
|
-
name: "project",
|
|
270
|
+
name: "project", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
268
271
|
summary: "Manage Projects bound to a Task.",
|
|
269
272
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "add"] }],
|
|
270
273
|
children: [
|
|
271
274
|
{
|
|
272
|
-
name: "list",
|
|
275
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
273
276
|
summary: "List the Projects bound to a Task.",
|
|
274
277
|
usage: "yui task project list <task>"
|
|
275
278
|
},
|
|
276
279
|
{
|
|
277
|
-
name: "add",
|
|
280
|
+
name: "add", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
278
281
|
summary: "Add a Project to a Task.",
|
|
279
282
|
usage: "yui task project add <task> <project> [--base <ref>] [--directory <name>]",
|
|
280
283
|
options: ["--base", "--directory"]
|
|
@@ -282,7 +285,7 @@ const taskChildren = [
|
|
|
282
285
|
]
|
|
283
286
|
},
|
|
284
287
|
{
|
|
285
|
-
name: "update",
|
|
288
|
+
name: "update", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
286
289
|
summary: "Update Task metadata.",
|
|
287
290
|
usage: "yui task update <id> [--title <text>] [--type <project-defined-type>|--clear-type] [--description <text>|--clear-description] [--priority <low|medium|high|urgent>|--clear-priority] [--tags <comma-separated>|--clear-tags] [--due-at <RFC3339>|--clear-due-at]",
|
|
288
291
|
options: [
|
|
@@ -295,14 +298,14 @@ const taskChildren = [
|
|
|
295
298
|
"--type": ["feature", "bugfix"]
|
|
296
299
|
}
|
|
297
300
|
},
|
|
298
|
-
{ name: "activate", summary: "Adopt an existing Activation request for a Draft Task.", usage: "yui task activate <id>" },
|
|
301
|
+
{ name: "activate", discovery: { surface: "public", audiences: ["public", "operator", "leader"] }, summary: "Adopt an existing Activation request for a Draft Task.", usage: "yui task activate <id>" },
|
|
299
302
|
{
|
|
300
|
-
name: "activation",
|
|
303
|
+
name: "activation", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
301
304
|
summary: "Request, cancel or inspect explicit Task Activation.",
|
|
302
305
|
sections: [{ id: "manage", title: "Commands", entries: ["request", "cancel", "show"] }],
|
|
303
306
|
children: [
|
|
304
307
|
{
|
|
305
|
-
name: "request",
|
|
308
|
+
name: "request", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
306
309
|
summary: "Record an Activation request. Every active Task gets a managed main workspace. empty adds no execution environment; scratch adopts a separate scratch environment; local requires a registered Resource and grant, not a Project ID.",
|
|
307
310
|
usage: "yui task activation request <task> --request-id <id> "
|
|
308
311
|
+ "--environment <empty|scratch|local:<resource>:<read|write>>",
|
|
@@ -313,126 +316,126 @@ const taskChildren = [
|
|
|
313
316
|
]
|
|
314
317
|
},
|
|
315
318
|
{
|
|
316
|
-
name: "cancel",
|
|
319
|
+
name: "cancel", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
317
320
|
summary: "Cancel a pending Activation request so it is never adopted.",
|
|
318
321
|
usage: "yui task activation cancel <task> --request-id <id> --reason <text>",
|
|
319
322
|
options: ["--request-id", "--reason"]
|
|
320
323
|
},
|
|
321
324
|
{
|
|
322
|
-
name: "show",
|
|
325
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
323
326
|
summary: "Show the Task's Activation request and its disposition.",
|
|
324
327
|
usage: "yui task activation show <task>"
|
|
325
328
|
}
|
|
326
329
|
]
|
|
327
330
|
},
|
|
328
331
|
{
|
|
329
|
-
name: "execution",
|
|
332
|
+
name: "execution", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
330
333
|
summary: "Fence or resume all execution for a Task.",
|
|
331
334
|
sections: [{ id: "manage", title: "Commands", entries: ["stop", "start"] }],
|
|
332
335
|
children: [
|
|
333
336
|
{
|
|
334
|
-
name: "stop",
|
|
337
|
+
name: "stop", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
335
338
|
summary: "Stop all Task execution while preserving durable progress.",
|
|
336
339
|
usage: "yui task execution stop <task> --force --reason <text>",
|
|
337
340
|
options: ["--force", "--reason"]
|
|
338
341
|
},
|
|
339
342
|
{
|
|
340
|
-
name: "start",
|
|
343
|
+
name: "start", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
341
344
|
summary: "Resume the Leader from durable Task progress.",
|
|
342
345
|
usage: "yui task execution start <task>"
|
|
343
346
|
}
|
|
344
347
|
]
|
|
345
348
|
},
|
|
346
349
|
{
|
|
347
|
-
name: "complete",
|
|
350
|
+
name: "complete", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
348
351
|
summary: "Complete locally, or prepare/dispatch the configured final Review and remain active. --refresh-remote only fetches freshness observations; it never rebases, changes HEAD or starts Integration checks.",
|
|
349
352
|
usage: "yui task complete <id> (--summary <text>|--summary-file <path|->) [--artifact-ref <artifact-id|turn:id|url> ...] [--refresh-remote] [--accept-published-tree <publication-id>]",
|
|
350
353
|
options: ["--summary", "--summary-file", "--artifact-ref", "--refresh-remote", "--accept-published-tree"],
|
|
351
354
|
fileOptions: ["--summary-file"]
|
|
352
355
|
},
|
|
353
356
|
{
|
|
354
|
-
name: "base",
|
|
357
|
+
name: "base", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
355
358
|
summary: "Inspect Task Project baseline freshness.",
|
|
356
359
|
sections: [{ id: "manage", title: "Commands", entries: ["status"] }],
|
|
357
360
|
children: [
|
|
358
361
|
{
|
|
359
|
-
name: "status",
|
|
362
|
+
name: "status", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
360
363
|
summary: "Observe Task Project bases against local refs; --refresh fetches remote objects without changing HEAD, starting checks or creating Integration/Review.",
|
|
361
364
|
usage: "yui task base status <task> [--refresh]",
|
|
362
365
|
options: ["--refresh"]
|
|
363
366
|
}
|
|
364
367
|
]
|
|
365
368
|
},
|
|
366
|
-
{ name: "reopen", summary: "Explicitly reopen completed or cancelled intent without replaying historical inputs.", usage: "yui task reopen <id>" },
|
|
369
|
+
{ name: "reopen", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Explicitly reopen completed or cancelled intent without replaying historical inputs.", usage: "yui task reopen <id>" },
|
|
367
370
|
{
|
|
368
|
-
name: "cancel",
|
|
371
|
+
name: "cancel", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
369
372
|
summary: "Stop pursuing a Task without claiming its processes stopped.",
|
|
370
373
|
usage: "yui task cancel <task> (--summary <text>|--summary-file <path|->)",
|
|
371
374
|
options: ["--summary", "--summary-file"],
|
|
372
375
|
fileOptions: ["--summary-file"]
|
|
373
376
|
},
|
|
374
377
|
{
|
|
375
|
-
name: "retire",
|
|
378
|
+
name: "retire", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
376
379
|
summary: "Retire a stale Task while preserving its historical evidence.",
|
|
377
380
|
usage: "yui task retire <task> (--summary <text>|--summary-file <path|->) [--replacement <task>]",
|
|
378
381
|
options: ["--summary", "--summary-file", "--replacement"],
|
|
379
382
|
fileOptions: ["--summary-file"]
|
|
380
383
|
},
|
|
381
384
|
{
|
|
382
|
-
name: "list",
|
|
385
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
383
386
|
summary: "Discover Tasks through a bounded, filterable catalog.",
|
|
384
387
|
usage: "yui task list [--all] [--status <status>] [--project <id>] [--search <text>] [--attention <category>] [--limit <1..100>] [--cursor <cursor>]",
|
|
385
388
|
options: ["--all", "--status", "--project", "--search", "--attention", "--limit", "--cursor"]
|
|
386
389
|
},
|
|
387
|
-
{ name: "show", summary: "Show Task metadata and counts; long details use contentPage.", usage: "yui task show <id> [--cursor <cursor>]", options: ["--cursor"] },
|
|
390
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "Show Task metadata and counts; long details use contentPage.", usage: "yui task show <id> [--cursor <cursor>]", options: ["--cursor"] },
|
|
388
391
|
{
|
|
389
|
-
name: "artifact",
|
|
392
|
+
name: "artifact", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
390
393
|
summary: "Save Task files in local Git and read current or commit-pinned content.",
|
|
391
394
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "read", "save"] }],
|
|
392
395
|
children: [
|
|
393
|
-
{ name: "list", summary: "List saved Task artifacts.", usage: "yui task artifact list <task>" },
|
|
394
|
-
{ name: "read", summary: "Read a file at HEAD or an exact commit.", usage: "yui task artifact read <task> <relative-path> [<commit>]" },
|
|
395
|
-
{ name: "save", summary: "Save and locally commit one file.", usage: "yui task artifact save <task> <relative-path> <content> [--message <text>] [--expected-head <commit>]", options: ["--message", "--expected-head"] }
|
|
396
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "List saved Task artifacts.", usage: "yui task artifact list <task>" },
|
|
397
|
+
{ name: "read", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "Read a file at HEAD or an exact commit.", usage: "yui task artifact read <task> <relative-path> [<commit>]" },
|
|
398
|
+
{ name: "save", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Save and locally commit one file.", usage: "yui task artifact save <task> <relative-path> <content> [--message <text>] [--expected-head <commit>]", options: ["--message", "--expected-head"] }
|
|
396
399
|
]
|
|
397
400
|
},
|
|
398
401
|
{
|
|
399
|
-
name: "context",
|
|
402
|
+
name: "context", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "unbound"] },
|
|
400
403
|
summary: "Read compact authorized facts, fixed-bound delta, or inspect a Context reference.",
|
|
401
404
|
usage: "yui task context [read|list|delta|inspect] <task> [--after <cursor>] [--continuation <cursor>] [--cursor <cursor>] [--limit <n>] [--store <store> --ref <id>] [--digest <digest>]",
|
|
402
405
|
options: ["--after", "--continuation", "--cursor", "--limit", "--store", "--ref", "--digest", "--status", "--work-item"]
|
|
403
406
|
},
|
|
404
407
|
{
|
|
405
|
-
name: "next-action",
|
|
408
|
+
name: "next-action", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
406
409
|
summary: "Read Task facts, mechanical prerequisites and legal alternatives; semantic choices remain with the Leader.",
|
|
407
410
|
usage: "yui task next-action <task> [--cursor <cursor>] [--json]",
|
|
408
411
|
options: ["--cursor", "--json"]
|
|
409
412
|
},
|
|
410
413
|
{
|
|
411
|
-
name: "remote-delivery",
|
|
414
|
+
name: "remote-delivery", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
412
415
|
summary: "Project exact Task heads and current PR/MR evidence into merge coverage.",
|
|
413
416
|
usage: "yui task remote-delivery <task> [--cursor <cursor>] [--json]",
|
|
414
417
|
options: ["--cursor", "--json"]
|
|
415
418
|
},
|
|
416
419
|
{
|
|
417
|
-
name: "archive-preflight",
|
|
420
|
+
name: "archive-preflight", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
418
421
|
summary: "Inspect current archive and exact-owner cleanup blockers without changing state or authorizing removal.",
|
|
419
422
|
usage: "yui task archive-preflight <id> (--integrated|--abandon) [--force] [--json]",
|
|
420
423
|
options: ["--integrated", "--abandon", "--force", "--json"]
|
|
421
424
|
},
|
|
422
425
|
{
|
|
423
|
-
name: "archive",
|
|
426
|
+
name: "archive", discovery: { surface: "public", audiences: ["public", "operator", "leader"], optionAudiences: { "--force": ["public", "operator"] } },
|
|
424
427
|
summary: "Archive a terminal Task; explicit --force commits despite delivery/cleanup warnings, retaining unsafe resources.",
|
|
425
428
|
usage: "yui task archive <id> (--integrated|--abandon) [--force] [--source-message <id> --purpose <verbatim-authorization> --request-id <id>]",
|
|
426
429
|
options: ["--integrated", "--abandon", "--force", "--source-message", "--purpose", "--request-id"]
|
|
427
430
|
},
|
|
428
|
-
{ name: "reconcile", summary: "Run one immediate Controller reconciliation.", usage: "yui task reconcile <id>" },
|
|
431
|
+
{ name: "reconcile", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Run one immediate Controller reconciliation.", usage: "yui task reconcile <id>" },
|
|
429
432
|
{
|
|
430
|
-
name: "upstream",
|
|
433
|
+
name: "upstream", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
431
434
|
summary: "Integrate upstream changes into an Active Task workspace.",
|
|
432
435
|
sections: [{ id: "manage", title: "Commands", entries: ["integrate"] }],
|
|
433
436
|
children: [
|
|
434
437
|
{
|
|
435
|
-
name: "integrate",
|
|
438
|
+
name: "integrate", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
436
439
|
summary: "Explicitly rebase Task changes onto the remote development head, run configured/additional checks (possibly as Jobs), then advance HEAD through Integration CAS. Returns exact attempts and partial results; does not request Review or complete the Task.",
|
|
437
440
|
usage: "yui task upstream integrate <task> (--latest|--project <project>) [--check <command> ...] [--rerun-checks]",
|
|
438
441
|
options: ["--latest", "--project", "--check", "--rerun-checks"]
|
|
@@ -440,25 +443,25 @@ const taskChildren = [
|
|
|
440
443
|
]
|
|
441
444
|
},
|
|
442
445
|
{
|
|
443
|
-
name: "replace",
|
|
446
|
+
name: "replace", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
444
447
|
summary: "Create a draft successor for a terminal Task.",
|
|
445
448
|
usage: "yui task replace <task> [--title <text>]",
|
|
446
449
|
options: ["--title"]
|
|
447
450
|
},
|
|
448
451
|
{
|
|
449
|
-
name: "message",
|
|
452
|
+
name: "message", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
450
453
|
summary: "Manage durable Task messages.",
|
|
451
454
|
sections: [{ id: "manage", title: "Commands", entries: ["send", "queue", "steer", "handoff", "list", "show", "update", "retire"] }],
|
|
452
455
|
children: [
|
|
453
456
|
{
|
|
454
|
-
name: "handoff",
|
|
457
|
+
name: "handoff", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
455
458
|
summary: "Explicitly hand an unassigned Message to the current dispatched owner of the same work.",
|
|
456
459
|
usage: "yui task message handoff <task/message> --to <role>",
|
|
457
460
|
options: ["--to"]
|
|
458
461
|
},
|
|
459
462
|
{
|
|
460
|
-
name: "send",
|
|
461
|
-
summary: "Send
|
|
463
|
+
name: "send", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"], optionAudiences: { "--intent": ["public", "operator"] } },
|
|
464
|
+
summary: "Send durable Task input within the current caller's routing and Assignment boundary.",
|
|
462
465
|
usage: "yui task message send <id> (<body>|--body-file <path|->) [--intent record|discuss|develop] [--request-id <key>] [--to <role> --work-item <id>|--review-round <id>]",
|
|
463
466
|
options: ["--body-file", "--intent", "--request-id", "--to", "--work-item", "--review-round"],
|
|
464
467
|
optionValues: {
|
|
@@ -467,40 +470,40 @@ const taskChildren = [
|
|
|
467
470
|
fileOptions: ["--body-file"]
|
|
468
471
|
},
|
|
469
472
|
{
|
|
470
|
-
name: "queue",
|
|
473
|
+
name: "queue", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
471
474
|
summary: "Queue ordinary Leader input without --to; an explicit Role requires an existing WorkItem/ReviewRound Assignment. Idempotent by request id.",
|
|
472
475
|
usage: "yui task message queue <id> (<body>|--body-file <path|->) --request-id <id> [--to <role> (--work-item <id>|--review-round <id>)]",
|
|
473
476
|
options: ["--body-file", "--request-id", "--to", "--work-item", "--review-round"],
|
|
474
477
|
fileOptions: ["--body-file"]
|
|
475
478
|
},
|
|
476
479
|
{
|
|
477
|
-
name: "steer",
|
|
480
|
+
name: "steer", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
478
481
|
summary: "Steer only a Role's exact current native Turn; saved and reported without fallback when unsupported.",
|
|
479
482
|
usage: "yui task message steer <id> (<body>|--body-file <path|->) --request-id <id> --expected-target <turn> --to <role> [--work-item <id>|--review-round <id>]",
|
|
480
483
|
options: ["--body-file", "--request-id", "--expected-target", "--to", "--work-item", "--review-round"],
|
|
481
484
|
fileOptions: ["--body-file"]
|
|
482
485
|
},
|
|
483
486
|
{
|
|
484
|
-
name: "list",
|
|
487
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] },
|
|
485
488
|
summary: "List Task messages.",
|
|
486
489
|
usage: "yui task message list <id> [--after <timestamp>] [--limit <1..100>] [--cursor <cursor>]",
|
|
487
490
|
options: ["--after", "--limit", "--cursor"]
|
|
488
491
|
},
|
|
489
492
|
{
|
|
490
|
-
name: "show",
|
|
493
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] },
|
|
491
494
|
summary: "Read a scoped Message and expand its single execution result.",
|
|
492
495
|
usage: "yui task message show <task>/<message> [--cursor <cursor>]",
|
|
493
496
|
options: ["--cursor"]
|
|
494
497
|
},
|
|
495
498
|
{
|
|
496
|
-
name: "update",
|
|
499
|
+
name: "update", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
497
500
|
summary: "Edit unkeyed Draft context without changing intent; inputs with request identities require a new Message.",
|
|
498
501
|
usage: "yui task message update <task>/<message> (<body>|--body-file <path|->)",
|
|
499
502
|
options: ["--body-file"],
|
|
500
503
|
fileOptions: ["--body-file"]
|
|
501
504
|
},
|
|
502
505
|
{
|
|
503
|
-
name: "retire",
|
|
506
|
+
name: "retire", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
504
507
|
summary: "Retire an incorrect historical Task Message without deleting its audit record.",
|
|
505
508
|
usage: "yui task message retire <task>/<message> --reason <text>",
|
|
506
509
|
options: ["--reason"]
|
|
@@ -508,36 +511,36 @@ const taskChildren = [
|
|
|
508
511
|
]
|
|
509
512
|
},
|
|
510
513
|
{
|
|
511
|
-
name: "input",
|
|
514
|
+
name: "input", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
512
515
|
summary: "Manage durable Task-owned input requests.",
|
|
513
516
|
sections: [{ id: "manage", title: "Commands", entries: ["request", "list", "show", "answer", "cancel"] }],
|
|
514
517
|
children: [
|
|
515
518
|
{
|
|
516
|
-
name: "request",
|
|
519
|
+
name: "request", discovery: { surface: "managed", audiences: ["leader"] },
|
|
517
520
|
summary: "Pause the active Leader AgentRun and request user input.",
|
|
518
521
|
usage: "yui task input request <task> --question <text> [--choice <key=label> ...] [--blocks <work-item:id|turn:id> ...] [--recommend <key> --timeout-seconds <seconds>]",
|
|
519
522
|
options: ["--question", "--choice", "--blocks", "--recommend", "--timeout-seconds"]
|
|
520
523
|
},
|
|
521
524
|
{
|
|
522
|
-
name: "list",
|
|
525
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] },
|
|
523
526
|
summary: "List the global Inbox or one Task's input requests.",
|
|
524
527
|
usage: "yui task input list [task] [--all] [--limit <1..100>] [--cursor <cursor>]",
|
|
525
528
|
options: ["--all", "--limit", "--cursor"]
|
|
526
529
|
},
|
|
527
530
|
{
|
|
528
|
-
name: "show",
|
|
531
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] },
|
|
529
532
|
summary: "Show one input request.",
|
|
530
533
|
usage: "yui task input show (<task>/<input> | <input> --task <task>) [--cursor <cursor>]",
|
|
531
534
|
options: ["--task", "--cursor"]
|
|
532
535
|
},
|
|
533
536
|
{
|
|
534
|
-
name: "answer",
|
|
537
|
+
name: "answer", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
535
538
|
summary: "Answer one open input request.",
|
|
536
539
|
usage: "yui task input answer (<task>/<input> | <input> --task <task>) (--choice <key> | --text <text>)",
|
|
537
540
|
options: ["--task", "--choice", "--text"]
|
|
538
541
|
},
|
|
539
542
|
{
|
|
540
|
-
name: "cancel",
|
|
543
|
+
name: "cancel", discovery: { surface: "managed", audiences: ["leader"] },
|
|
541
544
|
summary: "Cancel an open request from its originating Leader.",
|
|
542
545
|
usage: "yui task input cancel <task> <input> --reason <text>",
|
|
543
546
|
options: ["--reason"]
|
|
@@ -545,28 +548,28 @@ const taskChildren = [
|
|
|
545
548
|
]
|
|
546
549
|
},
|
|
547
550
|
{
|
|
548
|
-
name: "grant",
|
|
551
|
+
name: "grant", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
549
552
|
summary: "Manage Task grants as Operator, or bounded source-authorized grants as the current delivery Leader.",
|
|
550
553
|
sections: [{ id: "manage", title: "Commands", entries: ["issue", "show", "list", "revoke"] }],
|
|
551
554
|
children: [
|
|
552
555
|
{
|
|
553
|
-
name: "issue",
|
|
556
|
+
name: "issue", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
554
557
|
summary: "Issue as Operator, or as current delivery Leader with --source-message, --purpose, --request-id, exact scope, expiry and finite uses.",
|
|
555
558
|
usage: "yui task grant issue <task> --action <name> (repeatable) [--scope-project <id>...] [--scope-repo <owner/name>...] [--scope-package <name>...] [--scope-home <path>] [--param <name=v1,v2>...] [--expires-at <iso-8601>] [--max-uses <int>] [--irreversibility-ceiling <none|reversible|irreversible>]",
|
|
556
559
|
options: ["--action", "--scope-project", "--scope-repo", "--scope-package", "--scope-home", "--param", "--expires-at", "--max-uses", "--irreversibility-ceiling", "--source-message", "--purpose", "--request-id"]
|
|
557
560
|
},
|
|
558
561
|
{
|
|
559
|
-
name: "show",
|
|
562
|
+
name: "show", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
560
563
|
summary: "Show one capability grant.",
|
|
561
564
|
usage: "yui task grant show <task> <grant-id>"
|
|
562
565
|
},
|
|
563
566
|
{
|
|
564
|
-
name: "list",
|
|
567
|
+
name: "list", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
565
568
|
summary: "List capability grants for a Task.",
|
|
566
569
|
usage: "yui task grant list <task>"
|
|
567
570
|
},
|
|
568
571
|
{
|
|
569
|
-
name: "revoke",
|
|
572
|
+
name: "revoke", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
570
573
|
summary: "Revoke as Operator, or this Task's current delivery Leader for a Leader-issued grant.",
|
|
571
574
|
usage: "yui task grant revoke <task> <grant-id>",
|
|
572
575
|
options: []
|
|
@@ -574,88 +577,88 @@ const taskChildren = [
|
|
|
574
577
|
]
|
|
575
578
|
},
|
|
576
579
|
{
|
|
577
|
-
name: "workflow",
|
|
580
|
+
name: "workflow", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
578
581
|
summary: "Manage release workflows for a Task.",
|
|
579
582
|
sections: [{ id: "manage", title: "Commands", entries: ["create", "show", "list", "run", "resume", "status"] }],
|
|
580
583
|
children: [
|
|
581
584
|
{
|
|
582
|
-
name: "create",
|
|
585
|
+
name: "create", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
583
586
|
summary: "Create a release workflow for a Task.",
|
|
584
587
|
usage: "yui task workflow create <task> --grant <grant-id> --source-repo <owner/name> --source-commit <sha> [--source-artifact <name@integrity>] --step <id>:<kind> (repeatable) [--step-irreversibility <id>=<level> (repeatable)] [--step-param <id>:<key>=<value> (repeatable)]",
|
|
585
588
|
options: ["--grant", "--source-repo", "--source-commit", "--source-artifact", "--step", "--step-irreversibility", "--step-param"]
|
|
586
589
|
},
|
|
587
590
|
{
|
|
588
|
-
name: "show",
|
|
591
|
+
name: "show", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
589
592
|
summary: "Show one release workflow.",
|
|
590
593
|
usage: "yui task workflow show <task> <workflow-id>"
|
|
591
594
|
},
|
|
592
595
|
{
|
|
593
|
-
name: "list",
|
|
596
|
+
name: "list", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
594
597
|
summary: "List release workflows for a Task.",
|
|
595
598
|
usage: "yui task workflow list <task>"
|
|
596
599
|
},
|
|
597
600
|
{
|
|
598
|
-
name: "run",
|
|
601
|
+
name: "run", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
599
602
|
summary: "Run a release workflow from its resume cursor.",
|
|
600
603
|
usage: "yui task workflow run <task> <workflow-id> [--grant <grant-id>] [--max-steps <int>]",
|
|
601
604
|
options: ["--grant", "--max-steps"]
|
|
602
605
|
},
|
|
603
606
|
{
|
|
604
|
-
name: "resume",
|
|
607
|
+
name: "resume", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
605
608
|
summary: "Resume a release workflow from its first unconfirmed step.",
|
|
606
609
|
usage: "yui task workflow resume <task> <workflow-id> [--grant <grant-id>] [--max-steps <int>]",
|
|
607
610
|
options: ["--grant", "--max-steps"]
|
|
608
611
|
},
|
|
609
612
|
{
|
|
610
|
-
name: "status",
|
|
613
|
+
name: "status", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
611
614
|
summary: "Show a release workflow and its step states.",
|
|
612
615
|
usage: "yui task workflow status <task> <workflow-id>"
|
|
613
616
|
}
|
|
614
617
|
]
|
|
615
618
|
},
|
|
616
619
|
{
|
|
617
|
-
name: "publication",
|
|
620
|
+
name: "publication", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
618
621
|
summary: "Create or update external PR/MR publication evidence for a Task.",
|
|
619
622
|
sections: [{ id: "manage", title: "Commands", entries: ["upsert", "diff", "adopt", "verify", "list", "show"] }],
|
|
620
623
|
children: [
|
|
621
624
|
{
|
|
622
|
-
name: "upsert",
|
|
625
|
+
name: "upsert", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
623
626
|
summary: "Create or immutably update an external PR/MR and its publication state.",
|
|
624
627
|
usage: "yui task publication upsert <task> --project <project> --provider <github|gitlab> --repository <owner/name> --kind <pull-request|merge-request> --id <external-id> [--url <url>] [--title <text>] [--source-branch <branch>] [--target-branch <branch>] [--local-commit <sha>] [--head-commit <sha>] [--remote-commit <sha>] [--state <open|merged|closed>] [--reported|--verified] [--evidence <text>] [--merged-at <iso-timestamp>]",
|
|
625
628
|
options: ["--project", "--provider", "--repository", "--kind", "--id", "--url", "--title", "--source-branch", "--target-branch", "--local-commit", "--head-commit", "--remote-commit", "--state", "--reported", "--verified", "--evidence", "--merged-at"]
|
|
626
629
|
},
|
|
627
630
|
{
|
|
628
|
-
name: "diff",
|
|
631
|
+
name: "diff", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
629
632
|
summary: "Read a completed Task's fixed acceptance-to-publication candidate diff using local Git only.",
|
|
630
633
|
usage: "yui task publication diff <task>/<publication> [--integration <id>]",
|
|
631
634
|
options: ["--integration"]
|
|
632
635
|
},
|
|
633
636
|
{
|
|
634
|
-
name: "adopt",
|
|
637
|
+
name: "adopt", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
635
638
|
summary: "Explicitly accept the reviewed publication candidate as covering the original completion.",
|
|
636
639
|
usage: "yui task publication adopt <task>/<publication> --reviewed-diff <sha256> --acceptance <text> [--integration <id>]",
|
|
637
640
|
options: ["--reviewed-diff", "--acceptance", "--integration"]
|
|
638
641
|
},
|
|
639
642
|
{
|
|
640
|
-
name: "verify",
|
|
643
|
+
name: "verify", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
641
644
|
summary: "Observe the current PR/MR head and merge through its provider; record verification separately from Task coverage.",
|
|
642
645
|
usage: "yui task publication verify (<task>/<publication-id> | <task> <publication-id>)"
|
|
643
646
|
},
|
|
644
647
|
{
|
|
645
|
-
name: "list",
|
|
648
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
646
649
|
summary: "List external publication evidence for a Task.",
|
|
647
650
|
usage: "yui task publication list <task> [--limit <1..100>] [--cursor <cursor>]",
|
|
648
651
|
options: ["--limit", "--cursor"]
|
|
649
652
|
},
|
|
650
653
|
{
|
|
651
|
-
name: "show",
|
|
654
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
652
655
|
summary: "Show one external publication reference.",
|
|
653
656
|
usage: "yui task publication show (<task>/<publication-id> | <task> <publication-id>)"
|
|
654
657
|
}
|
|
655
658
|
]
|
|
656
659
|
},
|
|
657
660
|
{
|
|
658
|
-
name: "role",
|
|
661
|
+
name: "role", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
659
662
|
summary: "Manage Roles within a Task.",
|
|
660
663
|
sections: [{ id: "manage", title: "Commands", entries: [
|
|
661
664
|
"add", "list", "status", "show", "update", "remove", "bind", "unbind",
|
|
@@ -663,59 +666,59 @@ const taskChildren = [
|
|
|
663
666
|
] }],
|
|
664
667
|
children: [
|
|
665
668
|
{
|
|
666
|
-
name: "add",
|
|
669
|
+
name: "add", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
667
670
|
summary: "Add a Task Role from a frozen Profile/Worker runtime or one explicit Agent.",
|
|
668
671
|
usage: "yui task role add <task> <name> [--profile <id>] [--agent <id> [Agent settings]] [Role settings]",
|
|
669
672
|
options: ["--profile", "--agent", ...roleProfileOptions, ...roleAgentOptions],
|
|
670
673
|
optionValues: roleAgentOptionValues
|
|
671
674
|
},
|
|
672
|
-
{ name: "list", summary: "Discover recorded Role health; Host is unchecked until role status.", usage: "yui task role list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
675
|
+
{ name: "list", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Discover recorded Role health; Host is unchecked until role status.", usage: "yui task role list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
673
676
|
{
|
|
674
|
-
name: "status",
|
|
677
|
+
name: "status", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
675
678
|
summary: "Show persisted and live runtime state for one Task Role.",
|
|
676
679
|
usage: "yui task role status <task> <role> [--cursor <cursor>]",
|
|
677
680
|
options: ["--cursor"]
|
|
678
681
|
},
|
|
679
|
-
{ name: "show", summary: "Show one Task Role.", usage: "yui task role show <task> <role> [--cursor <cursor>]", options: ["--cursor"] },
|
|
680
|
-
{ name: "capabilities", summary: "Read native options using this Role's desired or exact failed launch configuration.",
|
|
682
|
+
{ name: "show", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Show one Task Role.", usage: "yui task role show <task> <role> [--cursor <cursor>]", options: ["--cursor"] },
|
|
683
|
+
{ name: "capabilities", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Read native options using this Role's desired or exact failed launch configuration.",
|
|
681
684
|
usage: "yui task role capabilities <task> <role> [--error <event-id>] [--refresh]",
|
|
682
685
|
options: ["--error", "--refresh"] },
|
|
683
686
|
{
|
|
684
|
-
name: "update",
|
|
687
|
+
name: "update", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
685
688
|
summary: "Update a Task Role; Agent settings target the named or active binding without switching it.",
|
|
686
689
|
usage: "yui task role update <task> <role> [--profile <id>] [--agent <id>] [--environment <preparation-id> | --managed-environment] [Role and Agent settings]",
|
|
687
690
|
options: ["--profile", "--agent", "--environment", "--managed-environment", ...roleProfileOptions, ...roleAgentOptions,
|
|
688
691
|
...roleProfileClearOptions, ...roleAgentClearOptions, "--yes"],
|
|
689
692
|
optionValues: roleAgentOptionValues
|
|
690
693
|
},
|
|
691
|
-
{ name: "remove", summary: "Remove a Task Role.", usage: "yui task role remove <task> <role>" },
|
|
692
|
-
{ name: "bind", summary: "Bind and activate an Agent for a Task Role.", usage: "yui task role bind <task> <role> <agent-id>" },
|
|
693
|
-
{ name: "unbind", summary: "Unbind a dormant Agent from a Task Role.", usage: "yui task role unbind <task> <role> <agent-id>" },
|
|
694
|
+
{ name: "remove", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Remove a Task Role.", usage: "yui task role remove <task> <role>" },
|
|
695
|
+
{ name: "bind", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Bind and activate an Agent for a Task Role.", usage: "yui task role bind <task> <role> <agent-id>" },
|
|
696
|
+
{ name: "unbind", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Unbind a dormant Agent from a Task Role.", usage: "yui task role unbind <task> <role> <agent-id>" },
|
|
694
697
|
{
|
|
695
|
-
name: "session",
|
|
698
|
+
name: "session", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
696
699
|
summary: "Inspect, stop or explicitly select a new Task Role Session.",
|
|
697
700
|
executable: true,
|
|
698
701
|
sections: [{ id: "manage", title: "Commands", entries: ["inspect", "retry", "stop", "new"] }],
|
|
699
702
|
children: [
|
|
700
703
|
{
|
|
701
|
-
name: "retry",
|
|
704
|
+
name: "retry", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
702
705
|
summary: "Inspect or control Provider recovery without stopping an admitted Turn.",
|
|
703
706
|
usage: "yui task role session retry <task> <role> [show|cancel|disable|enable]"
|
|
704
707
|
},
|
|
705
708
|
{
|
|
706
|
-
name: "inspect",
|
|
709
|
+
name: "inspect", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
707
710
|
summary: "Read the current Session, Host process, and AgentRun facts.",
|
|
708
711
|
usage: "yui task role session inspect <task> <role> [--cursor <cursor>]",
|
|
709
712
|
options: ["--cursor"]
|
|
710
713
|
},
|
|
711
714
|
{
|
|
712
|
-
name: "stop",
|
|
715
|
+
name: "stop", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
713
716
|
summary: "Stop the exact Session execution and retain its conversation for possible reuse; preserve Task progress.",
|
|
714
717
|
usage: "yui task role session stop <task> <role> --reason <text>",
|
|
715
718
|
options: ["--reason"]
|
|
716
719
|
},
|
|
717
720
|
{
|
|
718
|
-
name: "new",
|
|
721
|
+
name: "new", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
719
722
|
summary: "Request replacement even for active or ended Sessions; stop exact execution and preserve Task context, results and workspaces.",
|
|
720
723
|
usage: "yui task role session new <task> <role> --reason <text>",
|
|
721
724
|
options: ["--reason"]
|
|
@@ -723,30 +726,30 @@ const taskChildren = [
|
|
|
723
726
|
]
|
|
724
727
|
},
|
|
725
728
|
{
|
|
726
|
-
name: "view",
|
|
729
|
+
name: "view", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
727
730
|
summary: "Attach read-only to an independent Provider presentation surface.",
|
|
728
731
|
usage: "yui task role view <task> <role>"
|
|
729
732
|
},
|
|
730
733
|
{
|
|
731
|
-
name: "interrupt",
|
|
734
|
+
name: "interrupt", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
732
735
|
summary: "Interrupt a Role's exact current native Turn via native cancel; optionally deliver a saved Message once after a proven terminal.",
|
|
733
736
|
usage: "yui task role interrupt <task> <role> --expected-target <turn> [--then-message <task/message>] [--request-id <id>]",
|
|
734
737
|
options: ["--expected-target", "--then-message", "--request-id"]
|
|
735
738
|
},
|
|
736
739
|
{
|
|
737
|
-
name: "takeover",
|
|
740
|
+
name: "takeover", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
738
741
|
summary: "Enter the PTY input gateway for an independent Provider process.",
|
|
739
742
|
usage: "yui task role takeover <task> <role>"
|
|
740
743
|
},
|
|
741
744
|
{
|
|
742
|
-
name: "release",
|
|
745
|
+
name: "release", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
743
746
|
summary: "Release an independent Provider PTY input gateway.",
|
|
744
747
|
usage: "yui task role release <task> <role>"
|
|
745
748
|
}
|
|
746
749
|
]
|
|
747
750
|
},
|
|
748
751
|
{
|
|
749
|
-
name: "work",
|
|
752
|
+
name: "work", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
750
753
|
summary: "Manage finite Task work items.",
|
|
751
754
|
sections: [{
|
|
752
755
|
id: "manage",
|
|
@@ -758,15 +761,15 @@ const taskChildren = [
|
|
|
758
761
|
}],
|
|
759
762
|
children: [
|
|
760
763
|
{
|
|
761
|
-
name: "create",
|
|
764
|
+
name: "create", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
762
765
|
summary: "Create a separately managed result; a coherent Task may use zero WorkItems. Omit --role for Leader-direct execution; --role (including leader) selects a managed AgentRun executor. Isolate writable direct work before editing, then submit, integrate and accept its Candidate.",
|
|
763
766
|
usage: "yui task work create <task> <title> [--project <project> ...] [--base-ref <project>=<ref> ...] [--objective <text>] [--accept <criterion> ...] [--after <work> ...] [--role <name>]",
|
|
764
767
|
options: ["--project", "--base-ref", "--objective", "--accept", "--after", "--role"]
|
|
765
768
|
},
|
|
766
|
-
{ name: "list", summary: "Discover work items by summary and exact reference.", usage: "yui task work list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
767
|
-
{ name: "show", summary: "Show one Work Item.", usage: "yui task work show <work> [--cursor <cursor>]", options: ["--cursor"] },
|
|
769
|
+
{ name: "list", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Discover work items by summary and exact reference.", usage: "yui task work list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
770
|
+
{ name: "show", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Show one Work Item.", usage: "yui task work show <work> [--cursor <cursor>]", options: ["--cursor"] },
|
|
768
771
|
{
|
|
769
|
-
name: "edit",
|
|
772
|
+
name: "edit", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
770
773
|
summary: "Edit current requirements without changing frozen Assignments or acceptance.",
|
|
771
774
|
usage: "yui task work edit <task>/<work> [--title <text>] [--objective <text>] [--accept <criterion> ...|--clear-acceptance] [--after <work> ...|--clear-dependencies] [--project <project> ...|--clear-projects] [--base-ref <project>=<ref> ...|--clear-base-refs] [--role <name>|--clear-role]",
|
|
772
775
|
options: [
|
|
@@ -776,7 +779,7 @@ const taskChildren = [
|
|
|
776
779
|
]
|
|
777
780
|
},
|
|
778
781
|
{
|
|
779
|
-
name: "update",
|
|
782
|
+
name: "update", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
780
783
|
summary: "Record progress or submit a Candidate; acceptance remains explicit.",
|
|
781
784
|
usage: "yui task work update <task>/<work> <todo|running|done|failed> [--summary <text>] [--artifact-ref <artifact-id> ...]",
|
|
782
785
|
options: ["--summary", "--artifact-ref"],
|
|
@@ -785,41 +788,41 @@ const taskChildren = [
|
|
|
785
788
|
}
|
|
786
789
|
},
|
|
787
790
|
{
|
|
788
|
-
name: "scope",
|
|
791
|
+
name: "scope", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
789
792
|
summary: "Expand the Projects a WorkItem may modify.",
|
|
790
793
|
usage: "yui task work scope <task>/<work> [--project <project> ...]",
|
|
791
794
|
options: ["--project"]
|
|
792
795
|
},
|
|
793
796
|
{
|
|
794
|
-
name: "dispatch",
|
|
797
|
+
name: "dispatch", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
795
798
|
summary: "Dispatch a work item to its Role.",
|
|
796
|
-
usage: "yui task work dispatch <task>/<work> [--input <text>] [--lane-role <role> ...]",
|
|
797
|
-
options: ["--input", "--lane-role"]
|
|
799
|
+
usage: "yui task work dispatch <task>/<work> [--input <text>] [--context-ref <store/refId@digest> ...] [--lane-role <role> ...]",
|
|
800
|
+
options: ["--input", "--context-ref", "--lane-role"]
|
|
798
801
|
},
|
|
799
802
|
{
|
|
800
|
-
name: "synthesize",
|
|
803
|
+
name: "synthesize", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
801
804
|
summary: "Dispatch synthesis over explicitly selected original Producer AgentRuns.",
|
|
802
805
|
usage: "yui task work synthesize <task>/<work> --source-run <task>/<run> ...",
|
|
803
806
|
options: ["--source-run"]
|
|
804
807
|
},
|
|
805
808
|
{
|
|
806
|
-
name: "isolate",
|
|
809
|
+
name: "isolate", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
807
810
|
summary: "Create a WorkItem-owned isolated worktree.",
|
|
808
811
|
usage: "yui task work isolate <task>/<work>"
|
|
809
812
|
},
|
|
810
813
|
{
|
|
811
|
-
name: "capture",
|
|
814
|
+
name: "capture", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
812
815
|
summary: "Capture a terminal isolated WorkItem result as a ChangeSet.",
|
|
813
816
|
usage: "yui task work capture <task>/<work>"
|
|
814
817
|
},
|
|
815
818
|
{
|
|
816
|
-
name: "cleanup",
|
|
819
|
+
name: "cleanup", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
817
820
|
summary: "Release an idle WorkItem runtime or remove its final clean worktree.",
|
|
818
821
|
usage: "yui task work cleanup <task>/<work> (--runtime-only|--integrated|--abandon)",
|
|
819
822
|
options: ["--runtime-only", "--integrated", "--abandon"]
|
|
820
823
|
},
|
|
821
824
|
{
|
|
822
|
-
name: "review",
|
|
825
|
+
name: "review", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
823
826
|
summary: "Ask the configured reviewer to inspect a WorkItem candidate directly or with replicated Producers.",
|
|
824
827
|
usage: "yui task work review <task>/<work> [--lane-role <producer-role> --lane-role <producer-role> ...]",
|
|
825
828
|
options: ["--lane-role"],
|
|
@@ -830,36 +833,36 @@ const taskChildren = [
|
|
|
830
833
|
],
|
|
831
834
|
children: [
|
|
832
835
|
{
|
|
833
|
-
name: "retry",
|
|
836
|
+
name: "retry", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
834
837
|
summary: "Retry a failed Task-final ReviewRound that has no Reviewer AgentRun.",
|
|
835
838
|
usage: "yui task work review retry <task>/<review-round>"
|
|
836
839
|
},
|
|
837
840
|
{
|
|
838
|
-
name: "cleanup",
|
|
841
|
+
name: "cleanup", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
839
842
|
summary: "Remove only a clean terminal ReviewRound worktree.",
|
|
840
843
|
usage: "yui task work review cleanup <task>/<review-round>"
|
|
841
844
|
},
|
|
842
845
|
{
|
|
843
|
-
name: "preserve",
|
|
846
|
+
name: "preserve", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
844
847
|
summary: "Record that a terminal ReviewRound worktree is retained for diagnosis.",
|
|
845
848
|
usage: "yui task work review preserve <task>/<review-round>"
|
|
846
849
|
}
|
|
847
850
|
]
|
|
848
851
|
},
|
|
849
852
|
{
|
|
850
|
-
name: "accept",
|
|
853
|
+
name: "accept", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
851
854
|
summary: "Accept a successful, validated, integrated Work Item.",
|
|
852
855
|
usage: "yui task work accept <task>/<work> --summary <text> [--candidate <id>]",
|
|
853
856
|
options: ["--summary", "--candidate"]
|
|
854
857
|
},
|
|
855
858
|
{
|
|
856
|
-
name: "reject",
|
|
859
|
+
name: "reject", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
857
860
|
summary: "Decline a result or withdraw acceptance while preserving its history.",
|
|
858
861
|
usage: "yui task work reject <task>/<work> --summary <text>",
|
|
859
862
|
options: ["--summary"]
|
|
860
863
|
},
|
|
861
864
|
{
|
|
862
|
-
name: "retire",
|
|
865
|
+
name: "retire", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
863
866
|
summary: "Retire a WorkItem and settle its exact AgentRuns.",
|
|
864
867
|
usage: "yui task work retire <work> --summary <text> [--replacement <work>]",
|
|
865
868
|
options: ["--summary", "--replacement"]
|
|
@@ -867,29 +870,29 @@ const taskChildren = [
|
|
|
867
870
|
]
|
|
868
871
|
},
|
|
869
872
|
{
|
|
870
|
-
name: "run",
|
|
873
|
+
name: "run", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
871
874
|
summary: "Inspect and control Task Role AgentRuns.",
|
|
872
875
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "show", "retry", "settle", "context", "checkpoint", "retire"] }],
|
|
873
876
|
children: [
|
|
874
|
-
{ name: "list", summary: "Discover AgentRuns for a Task or one WorkItem.", usage: "yui task run list <task|task/work> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
877
|
+
{ name: "list", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Discover AgentRuns for a Task or one WorkItem.", usage: "yui task run list <task|task/work> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
875
878
|
{
|
|
876
|
-
name: "show",
|
|
879
|
+
name: "show", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] },
|
|
877
880
|
summary: "Show one AgentRun and its retained audit evidence.",
|
|
878
881
|
usage: "yui task run show <task>/<run> [--cursor <cursor>] [--json]",
|
|
879
882
|
options: ["--cursor", "--json"]
|
|
880
883
|
},
|
|
881
884
|
{
|
|
882
|
-
name: "retry",
|
|
885
|
+
name: "retry", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
883
886
|
summary: "Retry an exact failed execution or review AgentRun while preserving its semantic unit.",
|
|
884
887
|
usage: "yui task run retry <task>/<run>"
|
|
885
888
|
},
|
|
886
889
|
{
|
|
887
|
-
name: "settle",
|
|
890
|
+
name: "settle", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
888
891
|
summary: "Explicitly settle a failed WorkItem Lane or an obsolete stranded final Review AgentRun.",
|
|
889
892
|
usage: "yui task run settle <task>/<run>"
|
|
890
893
|
},
|
|
891
894
|
{
|
|
892
|
-
name: "context",
|
|
895
|
+
name: "context", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] },
|
|
893
896
|
summary: "Load the exact authorized AgentRun context.",
|
|
894
897
|
usage: "yui task run context <task>/<run> [--cursor <cursor>] [--json]",
|
|
895
898
|
options: ["--cursor", "--json"],
|
|
@@ -898,13 +901,13 @@ const taskChildren = [
|
|
|
898
901
|
sections: [{ id: "load", title: "Commands", entries: ["expand", "delta"] }],
|
|
899
902
|
children: [
|
|
900
903
|
{
|
|
901
|
-
name: "expand",
|
|
904
|
+
name: "expand", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] },
|
|
902
905
|
summary: "Expand one authorized AgentRun context reference.",
|
|
903
906
|
usage: "yui task run context expand <task>/<run> <ref-id> --store <store> [--mode full] [--cursor <cursor>]",
|
|
904
907
|
options: ["--store", "--mode", "--cursor"]
|
|
905
908
|
},
|
|
906
909
|
{
|
|
907
|
-
name: "delta",
|
|
910
|
+
name: "delta", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] },
|
|
908
911
|
summary: "Load authorized AgentRun context changes after a cursor.",
|
|
909
912
|
usage: "yui task run context delta <task>/<run> --after <digest> [--cursor <cursor>]",
|
|
910
913
|
options: ["--after", "--cursor"]
|
|
@@ -912,7 +915,7 @@ const taskChildren = [
|
|
|
912
915
|
]
|
|
913
916
|
},
|
|
914
917
|
{
|
|
915
|
-
name: "checkpoint",
|
|
918
|
+
name: "checkpoint", discovery: { surface: "runtime", audiences: [] },
|
|
916
919
|
summary: "Record durable progress for a long-running AgentRun.",
|
|
917
920
|
usage: "yui task run checkpoint <run> (--note <text>|--note-file <path|->)",
|
|
918
921
|
options: ["--note", "--note-file"],
|
|
@@ -920,7 +923,7 @@ const taskChildren = [
|
|
|
920
923
|
hidden: true
|
|
921
924
|
},
|
|
922
925
|
{
|
|
923
|
-
name: "retire",
|
|
926
|
+
name: "retire", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
924
927
|
summary: "Retire an incorrect historical AgentRun without deleting its audit record.",
|
|
925
928
|
usage: "yui task run retire <task>/<run> --reason <text> [--expected-progress-at <timestamp>] [--agent-id <id>] [--adapter-id <id>] [--native-session-id <id>]",
|
|
926
929
|
options: ["--reason", "--expected-progress-at", "--agent-id", "--adapter-id", "--native-session-id"]
|
|
@@ -928,78 +931,78 @@ const taskChildren = [
|
|
|
928
931
|
]
|
|
929
932
|
},
|
|
930
933
|
{
|
|
931
|
-
name: "review",
|
|
934
|
+
name: "review", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
932
935
|
summary: "Control Task-final ReviewRounds.",
|
|
933
936
|
sections: [{ id: "manage", title: "Commands", entries: ["request", "synthesize", "retry"] }],
|
|
934
937
|
children: [
|
|
935
938
|
{
|
|
936
|
-
name: "synthesize",
|
|
939
|
+
name: "synthesize", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
937
940
|
summary: "Dispatch main Review over selected Producer AgentRuns and the frozen candidate.",
|
|
938
941
|
usage: "yui task review synthesize <task>/<review-round> --source-run <task>/<run> ...",
|
|
939
942
|
options: ["--source-run"]
|
|
940
943
|
},
|
|
941
944
|
{
|
|
942
|
-
name: "request",
|
|
945
|
+
name: "request", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
943
946
|
summary: "Request a direct or replicated Task-local final ReviewRound.",
|
|
944
947
|
usage: "yui task review request <task> --role <main-role> [--lane-role <producer-role> --lane-role <producer-role> ...] [--delta-recheck]",
|
|
945
948
|
options: ["--role", "--lane-role", "--delta-recheck"]
|
|
946
949
|
},
|
|
947
950
|
{
|
|
948
|
-
name: "retry",
|
|
951
|
+
name: "retry", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
949
952
|
summary: "Retry a failed Task-final ReviewRound without a Reviewer AgentRun.",
|
|
950
953
|
usage: "yui task review retry <task>/<review-round>"
|
|
951
954
|
}
|
|
952
955
|
]
|
|
953
956
|
},
|
|
954
957
|
{
|
|
955
|
-
name: "integration",
|
|
958
|
+
name: "integration", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
956
959
|
summary: "Integrate WorkItem results and upstream commits with Leader-owned decisions.",
|
|
957
960
|
sections: [{ id: "manage", title: "Commands", entries: ["start", "continue", "resolve", "abort", "supersede", "list", "show", "cleanup"] }],
|
|
958
961
|
children: [
|
|
959
962
|
{
|
|
960
|
-
name: "start",
|
|
963
|
+
name: "start", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
961
964
|
summary: "Build, validate, and CAS-commit an integration candidate.",
|
|
962
965
|
usage: "yui task integration start <task> --work-item <id> --strategy <ff|cherry-pick|merge|manual> [--project <project>] [--target <ref>] [--check <command> ...] [--rerun-checks]",
|
|
963
966
|
options: ["--work-item", "--strategy", "--project", "--target", "--check", "--rerun-checks"],
|
|
964
967
|
optionValues: { "--strategy": ["ff", "cherry-pick", "merge", "manual"] }
|
|
965
968
|
},
|
|
966
969
|
{
|
|
967
|
-
name: "continue",
|
|
970
|
+
name: "continue", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
968
971
|
summary: "Consume a finished check Job and finalize this exact Integration, or continue an approved manual resolution.",
|
|
969
972
|
usage: "yui task integration continue <task>/<integration>"
|
|
970
973
|
},
|
|
971
974
|
{
|
|
972
|
-
name: "resolve",
|
|
975
|
+
name: "resolve", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
973
976
|
summary: "Record the Leader's semantic conflict decision.",
|
|
974
977
|
usage: "yui task integration resolve <task>/<integration> --option <manual-resolution|reject> --rationale <text>",
|
|
975
978
|
options: ["--option", "--rationale"],
|
|
976
979
|
optionValues: { "--option": ["manual-resolution", "reject"] }
|
|
977
980
|
},
|
|
978
981
|
{
|
|
979
|
-
name: "abort",
|
|
982
|
+
name: "abort", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
980
983
|
summary: "Abandon an unadvanced Integration while preserving evidence; reconcile an already-applied target.",
|
|
981
984
|
usage: "yui task integration abort <task>/<integration> --reason <text>",
|
|
982
985
|
options: ["--reason"]
|
|
983
986
|
},
|
|
984
987
|
{
|
|
985
|
-
name: "supersede",
|
|
988
|
+
name: "supersede", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
986
989
|
summary: "Mark a committed Integration as obsolete, retaining its evidence.",
|
|
987
990
|
usage: "yui task integration supersede <task>/<integration> --reason <text>",
|
|
988
991
|
options: ["--reason"]
|
|
989
992
|
},
|
|
990
|
-
{ name: "list", summary: "List Integration Attempts.", usage: "yui task integration list <task>" },
|
|
991
|
-
{ name: "show", summary: "Show one Integration Attempt.", usage: "yui task integration show <task>/<integration>" },
|
|
992
|
-
{ name: "cleanup", summary: "Remove a terminal Integration worktree and branch.", usage: "yui task integration cleanup <task>/<integration>" }
|
|
993
|
+
{ name: "list", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "List Integration Attempts.", usage: "yui task integration list <task>" },
|
|
994
|
+
{ name: "show", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Show one Integration Attempt.", usage: "yui task integration show <task>/<integration>" },
|
|
995
|
+
{ name: "cleanup", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Remove a terminal Integration worktree and branch.", usage: "yui task integration cleanup <task>/<integration>" }
|
|
993
996
|
]
|
|
994
997
|
},
|
|
995
998
|
{
|
|
996
|
-
name: "brief",
|
|
999
|
+
name: "brief", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
997
1000
|
summary: "Manage the Task Brief, the authoritative summary of current task state.",
|
|
998
1001
|
sections: [{ id: "manage", title: "Commands", entries: ["show", "update"] }],
|
|
999
1002
|
children: [
|
|
1000
|
-
{ name: "show", summary: "Show the Task Brief.", usage: "yui task brief show <task> [--cursor <cursor>]", options: ["--cursor"] },
|
|
1003
|
+
{ name: "show", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Show the Task Brief.", usage: "yui task brief show <task> [--cursor <cursor>]", options: ["--cursor"] },
|
|
1001
1004
|
{
|
|
1002
|
-
name: "update",
|
|
1005
|
+
name: "update", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1003
1006
|
summary: "Create or update the Task Brief.",
|
|
1004
1007
|
usage: "yui task brief update <task> [--objective <text>] [--boundary <text> ...] [--approach <text>] [--focus <text>] [--leader-summary <text>]",
|
|
1005
1008
|
options: ["--objective", "--boundary", "--approach", "--focus", "--leader-summary"]
|
|
@@ -1007,26 +1010,26 @@ const taskChildren = [
|
|
|
1007
1010
|
]
|
|
1008
1011
|
},
|
|
1009
1012
|
{
|
|
1010
|
-
name: "decision",
|
|
1013
|
+
name: "decision", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1011
1014
|
summary: "Record and supersede durable Task decisions.",
|
|
1012
1015
|
sections: [{ id: "manage", title: "Commands", entries: ["record", "list", "show", "supersede"] }],
|
|
1013
1016
|
children: [
|
|
1014
1017
|
{
|
|
1015
|
-
name: "record",
|
|
1018
|
+
name: "record", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1016
1019
|
summary: "Record a new active Decision.",
|
|
1017
1020
|
usage: "yui task decision record <task> --title <text> --rationale <text>",
|
|
1018
1021
|
options: ["--title", "--rationale"]
|
|
1019
1022
|
},
|
|
1020
1023
|
{
|
|
1021
|
-
name: "list",
|
|
1024
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] },
|
|
1022
1025
|
summary: "List Decisions for a Task.",
|
|
1023
1026
|
usage: "yui task decision list <task> [--status active|superseded] [--limit <1..100>] [--cursor <cursor>]",
|
|
1024
1027
|
options: ["--status", "--limit", "--cursor"],
|
|
1025
1028
|
optionValues: { "--status": ["active", "superseded"] }
|
|
1026
1029
|
},
|
|
1027
|
-
{ name: "show", summary: "Show one Decision.", usage: "yui task decision show <task> <decision> [--cursor <cursor>]", options: ["--cursor"] },
|
|
1030
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "Show one Decision.", usage: "yui task decision show <task> <decision> [--cursor <cursor>]", options: ["--cursor"] },
|
|
1028
1031
|
{
|
|
1029
|
-
name: "supersede",
|
|
1032
|
+
name: "supersede", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1030
1033
|
summary: "Mark a Decision as superseded.",
|
|
1031
1034
|
usage: "yui task decision supersede <task> <decision> --reason <text>",
|
|
1032
1035
|
options: ["--reason"]
|
|
@@ -1034,41 +1037,41 @@ const taskChildren = [
|
|
|
1034
1037
|
]
|
|
1035
1038
|
},
|
|
1036
1039
|
{
|
|
1037
|
-
name: "milestone",
|
|
1040
|
+
name: "milestone", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1038
1041
|
summary: "Append immutable Milestone records for completed progress.",
|
|
1039
1042
|
sections: [{ id: "manage", title: "Commands", entries: ["add", "list", "show"] }],
|
|
1040
1043
|
children: [
|
|
1041
1044
|
{
|
|
1042
|
-
name: "add",
|
|
1045
|
+
name: "add", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1043
1046
|
summary: "Append a Milestone to a Task.",
|
|
1044
1047
|
usage: "yui task milestone add <task> --title <text> --summary <text>",
|
|
1045
1048
|
options: ["--title", "--summary"]
|
|
1046
1049
|
},
|
|
1047
|
-
{ name: "list", summary: "List Milestones for a Task.", usage: "yui task milestone list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
1048
|
-
{ name: "show", summary: "Show one Milestone.", usage: "yui task milestone show <task> <milestone> [--cursor <cursor>]", options: ["--cursor"] }
|
|
1050
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "List Milestones for a Task.", usage: "yui task milestone list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
1051
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "Show one Milestone.", usage: "yui task milestone show <task> <milestone> [--cursor <cursor>]", options: ["--cursor"] }
|
|
1049
1052
|
]
|
|
1050
1053
|
},
|
|
1051
1054
|
{
|
|
1052
|
-
name: "event",
|
|
1055
|
+
name: "event", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1053
1056
|
summary: "Inspect the durable Task event history.",
|
|
1054
1057
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "show"] }],
|
|
1055
1058
|
children: [
|
|
1056
1059
|
{
|
|
1057
|
-
name: "list",
|
|
1060
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] },
|
|
1058
1061
|
summary: "List Task events.",
|
|
1059
1062
|
usage: "yui task event list <task> [--after <timestamp>] [--limit <1..100>] [--cursor <cursor>]",
|
|
1060
1063
|
options: ["--after", "--limit", "--cursor"]
|
|
1061
1064
|
},
|
|
1062
|
-
{ name: "show", summary: "Show one Task event.", usage: "yui task event show <task> <event> [--cursor <cursor>]", options: ["--cursor"] }
|
|
1065
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment"] }, summary: "Show one Task event.", usage: "yui task event show <task> <event> [--cursor <cursor>]", options: ["--cursor"] }
|
|
1063
1066
|
]
|
|
1064
1067
|
},
|
|
1065
1068
|
{
|
|
1066
|
-
name: "continuation",
|
|
1069
|
+
name: "continuation", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1067
1070
|
summary: "Inspect native Provider child continuations and their durability mode.",
|
|
1068
1071
|
sections: [{ id: "manage", title: "Commands", entries: ["list"] }],
|
|
1069
1072
|
children: [
|
|
1070
1073
|
{
|
|
1071
|
-
name: "list",
|
|
1074
|
+
name: "list", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1072
1075
|
summary: "List native child continuations for a Task.",
|
|
1073
1076
|
usage: "yui task continuation list <task> [--json]",
|
|
1074
1077
|
options: ["--json"]
|
|
@@ -1076,35 +1079,35 @@ const taskChildren = [
|
|
|
1076
1079
|
]
|
|
1077
1080
|
},
|
|
1078
1081
|
{
|
|
1079
|
-
name: "wake",
|
|
1082
|
+
name: "wake", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1080
1083
|
summary: "Inspect the durable Leader wake ledger and its delta content.",
|
|
1081
1084
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "show", "retry", "resolve"] }],
|
|
1082
1085
|
children: [
|
|
1083
|
-
{ name: "list", summary: "List recorded Leader wakes.", usage: "yui task wake list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
1084
|
-
{ name: "show", summary: "Show a fixed wake window and exact detail reads.", usage: "yui task wake show <task> <wake> [--cursor <cursor>]", options: ["--cursor"] },
|
|
1085
|
-
{ name: "retry", summary: "Retry a rejected notification after correcting its cause; preserve original input.",
|
|
1086
|
+
{ name: "list", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "List recorded Leader wakes.", usage: "yui task wake list <task> [--limit <1..100>] [--cursor <cursor>]", options: ["--limit", "--cursor"] },
|
|
1087
|
+
{ name: "show", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Show a fixed wake window and exact detail reads.", usage: "yui task wake show <task> <wake> [--cursor <cursor>]", options: ["--cursor"] },
|
|
1088
|
+
{ name: "retry", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Retry a rejected notification after correcting its cause; preserve original input.",
|
|
1086
1089
|
usage: "yui task wake retry <task> <wake> --reason <correction>", options: ["--reason"] },
|
|
1087
|
-
{ name: "resolve", summary: "Release an unknown notification claim after explicit quiescence evidence, without replay.",
|
|
1090
|
+
{ name: "resolve", discovery: { surface: "managed", audiences: ["operator", "leader"] }, summary: "Release an unknown notification claim after explicit quiescence evidence, without replay.",
|
|
1088
1091
|
usage: "yui task wake resolve <task> <wake> --reason <quiescence-evidence>", options: ["--reason"] }
|
|
1089
1092
|
]
|
|
1090
1093
|
},
|
|
1091
1094
|
{
|
|
1092
|
-
name: "overlap",
|
|
1095
|
+
name: "overlap", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1093
1096
|
summary: "Show read-only cross-Task overlap diagnostics.",
|
|
1094
1097
|
usage: "yui task overlap [--project <project>] [--base <sha>] [--task <task> ...]",
|
|
1095
1098
|
options: ["--project", "--base", "--task"]
|
|
1096
1099
|
},
|
|
1097
1100
|
{
|
|
1098
|
-
name: "change-set",
|
|
1101
|
+
name: "change-set", discovery: { surface: "managed", audiences: ["operator", "leader"] },
|
|
1099
1102
|
summary: "Inspect ChangeSets captured from WorkItem Candidates.",
|
|
1100
1103
|
sections: [{ id: "inspect", title: "Commands", entries: ["show"] }],
|
|
1101
1104
|
children: [
|
|
1102
|
-
{ name: "show", summary: "Show one ChangeSet.", usage: "yui task change-set show <task>/<change-set> [--cursor <cursor>]", options: ["--cursor"] }
|
|
1105
|
+
{ name: "show", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Show one ChangeSet.", usage: "yui task change-set show <task>/<change-set> [--cursor <cursor>]", options: ["--cursor"] }
|
|
1103
1106
|
]
|
|
1104
1107
|
},
|
|
1105
1108
|
];
|
|
1106
1109
|
export const ROOT_COMMAND = buildNode({
|
|
1107
|
-
name: "yui",
|
|
1110
|
+
name: "yui", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1108
1111
|
summary: "Coordinate durable, isolated Agent work.",
|
|
1109
1112
|
usage: "yui [--json] <command>",
|
|
1110
1113
|
examples: ["yui setup", "yui start", "yui operator enter", "yui task list"],
|
|
@@ -1112,7 +1115,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1112
1115
|
{ id: "general", title: "General", entries: [
|
|
1113
1116
|
"help", "version", "update", "upgrade", "setup", "start", "doctor"
|
|
1114
1117
|
] },
|
|
1115
|
-
{ id: "workflow", title: "Workflow", entries: ["operator", "role", "project", "task"] },
|
|
1118
|
+
{ id: "workflow", title: "Workflow", entries: ["agent", "operator", "role", "project", "task"] },
|
|
1116
1119
|
{ id: "configuration", title: "Configuration", entries: ["config"] },
|
|
1117
1120
|
{ id: "operations", title: "Operations", entries: ["web", "controller", "session", "execution", "capability", "job", "jobs", "telemetry", "release"] },
|
|
1118
1121
|
{ id: "resources", title: "Resources", entries: ["resources"] },
|
|
@@ -1120,72 +1123,91 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1120
1123
|
],
|
|
1121
1124
|
children: [
|
|
1122
1125
|
{
|
|
1123
|
-
name: "
|
|
1126
|
+
name: "agent", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1127
|
+
summary: "Run the independent coding Agent without a Controller or Yui Home.",
|
|
1128
|
+
sections: [{ id: "product", title: "Independent Agent", entries: ["check-config", "start", "run", ...catalogCommands] }],
|
|
1129
|
+
children: [
|
|
1130
|
+
{ name: "check-config", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1131
|
+
summary: "Validate explicit configuration without model requests or state initialization.",
|
|
1132
|
+
options: productConfigurationOptions, fileOptions: ["--config"] },
|
|
1133
|
+
{ name: "start", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1134
|
+
summary: "Open a foreground line UI; select --session ID to resume saved history.",
|
|
1135
|
+
options: [...productConfigurationOptions, "--session"], fileOptions: ["--config"] },
|
|
1136
|
+
{ name: "run", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1137
|
+
summary: "Submit one input and return real result/save evidence as JSON.",
|
|
1138
|
+
options: [...productConfigurationOptions, "--session", "--input"], fileOptions: ["--config"] },
|
|
1139
|
+
...catalogCommands.map(name => ({ name, discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1140
|
+
summary: "Use the real persistent Session catalog without starting execution.",
|
|
1141
|
+
options: catalogCommandOptions(name) }))
|
|
1142
|
+
]
|
|
1143
|
+
},
|
|
1144
|
+
{
|
|
1145
|
+
name: "role", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1124
1146
|
summary: "Queue input or control an exact current Global Role Turn.",
|
|
1125
1147
|
sections: [{ id: "input", title: "Input control", entries: ["message", "interrupt"] }],
|
|
1126
1148
|
children: [
|
|
1127
1149
|
{
|
|
1128
|
-
name: "message", summary: "Send durable input to a Global Role.",
|
|
1150
|
+
name: "message", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Send durable input to a Global Role.",
|
|
1129
1151
|
sections: [{ id: "input", title: "Input control", entries: ["queue", "steer", "list", "show"] }],
|
|
1130
1152
|
children: [
|
|
1131
1153
|
{
|
|
1132
|
-
name: "list", summary: "Discover Global Messages without consuming input.",
|
|
1154
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Discover Global Messages without consuming input.",
|
|
1133
1155
|
usage: "yui role message list <role> [--pending] [--limit <1..100>] [--cursor <cursor>]",
|
|
1134
1156
|
options: ["--pending", "--limit", "--cursor"]
|
|
1135
1157
|
},
|
|
1136
1158
|
{
|
|
1137
|
-
name: "show", summary: "Read one exact Global Message; follow contentPage.nextCursor for long content.",
|
|
1159
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Read one exact Global Message; follow contentPage.nextCursor for long content.",
|
|
1138
1160
|
usage: "yui role message show <role> <message-id> [--cursor <cursor>]",
|
|
1139
1161
|
options: ["--cursor"]
|
|
1140
1162
|
},
|
|
1141
1163
|
{
|
|
1142
|
-
name: "queue", summary: "Queue input for the next legal delivery opportunity.",
|
|
1164
|
+
name: "queue", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Queue input for the next legal delivery opportunity.",
|
|
1143
1165
|
usage: "yui role message queue <role> (<text>|--body-file <path|->) --request-id <id>",
|
|
1144
1166
|
options: ["--request-id", "--body-file"], fileOptions: ["--body-file"]
|
|
1145
1167
|
},
|
|
1146
1168
|
{
|
|
1147
|
-
name: "steer", summary: "Steer the exact current native Turn.",
|
|
1169
|
+
name: "steer", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Steer the exact current native Turn.",
|
|
1148
1170
|
usage: "yui role message steer <role> (<text>|--body-file <path|->) --request-id <id> --expected-target <turn>",
|
|
1149
1171
|
options: ["--request-id", "--expected-target", "--body-file"], fileOptions: ["--body-file"]
|
|
1150
1172
|
}
|
|
1151
1173
|
]
|
|
1152
1174
|
},
|
|
1153
1175
|
{
|
|
1154
|
-
name: "interrupt", summary: "Request cancellation of the exact current native Turn.",
|
|
1176
|
+
name: "interrupt", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Request cancellation of the exact current native Turn.",
|
|
1155
1177
|
usage: "yui role interrupt <role> --expected-target <turn> [--request-id <id>] [--then-message <message>]",
|
|
1156
1178
|
options: ["--request-id", "--expected-target", "--then-message"]
|
|
1157
1179
|
}
|
|
1158
1180
|
]
|
|
1159
1181
|
},
|
|
1160
|
-
{ name: "help", summary: "Show root or scoped command help.", usage: "yui help [command ...]", commandPathArguments: true },
|
|
1161
|
-
{ name: "version", summary: "Print the installed Yui version." },
|
|
1182
|
+
{ name: "help", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global", "unbound"] }, summary: "Show root or scoped command help.", usage: "yui help [command ...]", commandPathArguments: true },
|
|
1183
|
+
{ name: "version", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global", "unbound"] }, summary: "Print the installed Yui version." },
|
|
1162
1184
|
{
|
|
1163
|
-
name: "update",
|
|
1185
|
+
name: "update", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1164
1186
|
summary: "Install the latest or an exact published Yui version after storage preflight.",
|
|
1165
1187
|
usage: "yui update [--version <exact-version>]",
|
|
1166
1188
|
options: ["--version"]
|
|
1167
1189
|
},
|
|
1168
1190
|
{
|
|
1169
|
-
name: "upgrade",
|
|
1191
|
+
name: "upgrade", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1170
1192
|
summary: "Plan or apply supported storage migrations for this Home.",
|
|
1171
1193
|
usage: "yui upgrade [--dry-run]",
|
|
1172
1194
|
options: ["--dry-run"]
|
|
1173
1195
|
},
|
|
1174
1196
|
{
|
|
1175
|
-
name: "setup",
|
|
1197
|
+
name: "setup", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1176
1198
|
summary: "Initialize the minimum Operator and Leader configuration required to execute Tasks.",
|
|
1177
1199
|
examples: "yui setup"
|
|
1178
1200
|
},
|
|
1179
|
-
{ name: "start", summary: "Start the Controller and Codex shared runtime needed by active Roles." },
|
|
1180
|
-
{ name: "doctor", summary: "Check Yui dependencies and file state." },
|
|
1201
|
+
{ name: "start", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Start the Controller and Codex shared runtime needed by active Roles." },
|
|
1202
|
+
{ name: "doctor", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global", "unbound"] }, summary: "Check Yui dependencies and file state." },
|
|
1181
1203
|
{
|
|
1182
|
-
name: "web",
|
|
1204
|
+
name: "web", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1183
1205
|
summary: "Serve the control room using the running Controller's capability Host.",
|
|
1184
1206
|
usage: "yui web [--host <loopback>] [--port <port>] | --status | --stop",
|
|
1185
1207
|
options: ["--host", "--port", "--status", "--stop"]
|
|
1186
1208
|
},
|
|
1187
1209
|
{
|
|
1188
|
-
name: "controller",
|
|
1210
|
+
name: "controller", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1189
1211
|
summary: "Inspect and recover local Controller runtime resources.",
|
|
1190
1212
|
sections: [{
|
|
1191
1213
|
id: "lifecycle",
|
|
@@ -1194,34 +1216,34 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1194
1216
|
}],
|
|
1195
1217
|
children: [
|
|
1196
1218
|
{
|
|
1197
|
-
name: "status",
|
|
1219
|
+
name: "status", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1198
1220
|
summary: "Show Controller and AgentRuntime resources.",
|
|
1199
1221
|
usage: "yui controller status [--all] [--verbose]",
|
|
1200
1222
|
options: ["--all", "--verbose"]
|
|
1201
1223
|
},
|
|
1202
1224
|
{
|
|
1203
|
-
name: "cleanup",
|
|
1225
|
+
name: "cleanup", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1204
1226
|
summary: "Interactively clean confirmed unused runtime resources.",
|
|
1205
1227
|
usage: "yui controller cleanup [--all]",
|
|
1206
1228
|
options: ["--all"]
|
|
1207
1229
|
},
|
|
1208
1230
|
{
|
|
1209
|
-
name: "identity",
|
|
1231
|
+
name: "identity", discovery: { surface: "runtime", audiences: [] },
|
|
1210
1232
|
summary: "Read the stable runtime identity receipt (build, backend, worker).",
|
|
1211
1233
|
hidden: true
|
|
1212
1234
|
},
|
|
1213
1235
|
{
|
|
1214
|
-
name: "live-identity",
|
|
1236
|
+
name: "live-identity", discovery: { surface: "runtime", audiences: [] },
|
|
1215
1237
|
summary: "Read the authenticated live Controller runtime identity.",
|
|
1216
1238
|
hidden: true
|
|
1217
1239
|
},
|
|
1218
|
-
{ name: "start", summary: "Start the Controller for this Home without preparing Agent runtimes." },
|
|
1219
|
-
{ name: "stop", summary: "Stop the Controller." },
|
|
1220
|
-
{ name: "restart", summary: "Restart internal services without stopping tmux sessions." }
|
|
1240
|
+
{ name: "start", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Start the Controller for this Home without preparing Agent runtimes." },
|
|
1241
|
+
{ name: "stop", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Stop the Controller." },
|
|
1242
|
+
{ name: "restart", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Restart internal services without stopping tmux sessions." }
|
|
1221
1243
|
]
|
|
1222
1244
|
},
|
|
1223
1245
|
{
|
|
1224
|
-
name: "execution",
|
|
1246
|
+
name: "execution", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1225
1247
|
summary: "Read-only execution history audit.",
|
|
1226
1248
|
sections: [{
|
|
1227
1249
|
id: "reports",
|
|
@@ -1230,7 +1252,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1230
1252
|
}],
|
|
1231
1253
|
children: [
|
|
1232
1254
|
{
|
|
1233
|
-
name: "audit",
|
|
1255
|
+
name: "audit", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1234
1256
|
summary: "Report AgentRuns, wakes, Sessions, Reviews, Integrations, and telemetry volume.",
|
|
1235
1257
|
usage: "yui execution audit [--task <id>] [--since <iso>] [--until <iso>]",
|
|
1236
1258
|
options: ["--task", "--since", "--until"]
|
|
@@ -1238,7 +1260,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1238
1260
|
]
|
|
1239
1261
|
},
|
|
1240
1262
|
{
|
|
1241
|
-
name: "release",
|
|
1263
|
+
name: "release", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1242
1264
|
summary: "Install and activate immutable local runtime releases.",
|
|
1243
1265
|
sections: [{
|
|
1244
1266
|
id: "commands",
|
|
@@ -1247,25 +1269,25 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1247
1269
|
}],
|
|
1248
1270
|
children: [
|
|
1249
1271
|
{
|
|
1250
|
-
name: "install",
|
|
1272
|
+
name: "install", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1251
1273
|
summary: "Install a runtime package as an immutable release.",
|
|
1252
1274
|
usage: "yui release install <source-dir>"
|
|
1253
1275
|
},
|
|
1254
|
-
{ name: "list", summary: "List installed releases and the active pointer." },
|
|
1276
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "List installed releases and the active pointer." },
|
|
1255
1277
|
{
|
|
1256
|
-
name: "activate",
|
|
1278
|
+
name: "activate", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1257
1279
|
summary: "Activate a release via atomic Controller handover.",
|
|
1258
1280
|
usage: "yui release activate [release-id]"
|
|
1259
1281
|
}
|
|
1260
1282
|
]
|
|
1261
1283
|
},
|
|
1262
1284
|
{
|
|
1263
|
-
name: "resources",
|
|
1285
|
+
name: "resources", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1264
1286
|
summary: "Inspect and garbage-collect managed worktrees, deployments, and runtime artifacts.",
|
|
1265
1287
|
sections: [{ id: "gc", title: "Commands", entries: ["gc"] }],
|
|
1266
1288
|
children: [
|
|
1267
1289
|
{
|
|
1268
|
-
name: "gc",
|
|
1290
|
+
name: "gc", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1269
1291
|
summary: "Plan or apply resource garbage collection.",
|
|
1270
1292
|
usage: "yui resources gc [--dry-run|--apply|--purge|--restore] [--quarantine-ttl-hours <hours>]",
|
|
1271
1293
|
options: ["--dry-run", "--apply", "--purge", "--restore", "--quarantine-ttl-hours"]
|
|
@@ -1273,7 +1295,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1273
1295
|
]
|
|
1274
1296
|
},
|
|
1275
1297
|
{
|
|
1276
|
-
name: "config",
|
|
1298
|
+
name: "config", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1277
1299
|
summary: "Inspect, understand, and update all persistent Yui configuration.",
|
|
1278
1300
|
examples: [
|
|
1279
1301
|
"yui config show",
|
|
@@ -1292,12 +1314,12 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1292
1314
|
],
|
|
1293
1315
|
children: [
|
|
1294
1316
|
{
|
|
1295
|
-
name: "show",
|
|
1317
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] },
|
|
1296
1318
|
summary: "Show the complete effective Yui configuration.",
|
|
1297
1319
|
examples: ["yui config show", "yui --json config show"]
|
|
1298
1320
|
},
|
|
1299
1321
|
{
|
|
1300
|
-
name: "describe",
|
|
1322
|
+
name: "describe", discovery: { surface: "public", audiences: ["public", "operator", "leader", "assignment", "global"] },
|
|
1301
1323
|
summary: "Explain configuration effects, defaults, choices, and activation behavior.",
|
|
1302
1324
|
usage: `yui config describe [${[...CONFIG_DOMAINS, "agent", "role", "profile", "completion"].join("|")}]`,
|
|
1303
1325
|
examples: ["yui config describe", "yui --json config describe role"],
|
|
@@ -1305,7 +1327,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1305
1327
|
},
|
|
1306
1328
|
...CONFIG_DOMAINS.map(durableConfigDomainNode),
|
|
1307
1329
|
{
|
|
1308
|
-
name: "agent",
|
|
1330
|
+
name: "agent", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1309
1331
|
summary: "Manage configured native Agent CLIs; launch-setting changes apply to the next Session activation.",
|
|
1310
1332
|
examples: ["yui config agent list", "yui config agent capabilities codex"],
|
|
1311
1333
|
sections: [
|
|
@@ -1315,7 +1337,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1315
1337
|
children: agentChildren
|
|
1316
1338
|
},
|
|
1317
1339
|
{
|
|
1318
|
-
name: "profile",
|
|
1340
|
+
name: "profile", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1319
1341
|
summary: "Manage reusable Agent Profiles; updates affect future copies and do not rewrite existing Task Roles.",
|
|
1320
1342
|
examples: ["yui config profile list", "yui config profile show implementer"],
|
|
1321
1343
|
sections: [
|
|
@@ -1325,7 +1347,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1325
1347
|
children: profileChildren
|
|
1326
1348
|
},
|
|
1327
1349
|
{
|
|
1328
|
-
name: "role",
|
|
1350
|
+
name: "role", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1329
1351
|
summary: "Manage reusable global Roles and desired Agent launch configuration for the next Host process.",
|
|
1330
1352
|
examples: ["yui config role list", "yui config role show operator"],
|
|
1331
1353
|
sections: [
|
|
@@ -1335,7 +1357,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1335
1357
|
children: roleChildren
|
|
1336
1358
|
},
|
|
1337
1359
|
{
|
|
1338
|
-
name: "completion",
|
|
1360
|
+
name: "completion", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1339
1361
|
summary: "Interactively configure shell completion after confirming generated files and startup-file changes.",
|
|
1340
1362
|
executable: true,
|
|
1341
1363
|
acceptsArguments: false,
|
|
@@ -1350,7 +1372,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1350
1372
|
]
|
|
1351
1373
|
},
|
|
1352
1374
|
{
|
|
1353
|
-
name: "operator",
|
|
1375
|
+
name: "operator", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1354
1376
|
summary: "Use the persistent Operator Actor.",
|
|
1355
1377
|
sections: [{
|
|
1356
1378
|
id: "workflow",
|
|
@@ -1358,23 +1380,23 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1358
1380
|
entries: ["enter", "status", "new", "list", "resume", "submit"]
|
|
1359
1381
|
}],
|
|
1360
1382
|
children: [
|
|
1361
|
-
{ name: "enter", summary: "Enter the Operator's native session." },
|
|
1362
|
-
{ name: "status", summary: "Show the unique active writer and retained conversation history." },
|
|
1383
|
+
{ name: "enter", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Enter the Operator's native session." },
|
|
1384
|
+
{ name: "status", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Show the unique active writer and retained conversation history." },
|
|
1363
1385
|
{
|
|
1364
|
-
name: "new",
|
|
1386
|
+
name: "new", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1365
1387
|
summary: "Start a new Operator session.",
|
|
1366
1388
|
usage: "yui operator new [--agent <id>]",
|
|
1367
1389
|
options: ["--agent"]
|
|
1368
1390
|
},
|
|
1369
|
-
{ name: "list", summary: "List Operator session history." },
|
|
1391
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "List Operator session history." },
|
|
1370
1392
|
{
|
|
1371
|
-
name: "resume",
|
|
1393
|
+
name: "resume", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1372
1394
|
summary: "Resume a previous Operator session.",
|
|
1373
1395
|
usage: "yui operator resume [<ref> | --last]",
|
|
1374
1396
|
options: ["--last"]
|
|
1375
1397
|
},
|
|
1376
1398
|
{
|
|
1377
|
-
name: "submit",
|
|
1399
|
+
name: "submit", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1378
1400
|
summary: "Submit work through the Operator with a submission intent (record|discuss|develop); a task-less submit opens a Draft. An optional idempotency key makes a retry safe.",
|
|
1379
1401
|
usage: "yui operator submit (<body>|--body-file <path|->) [--task <id>] [--intent record|discuss|develop] [--request-id <key>]",
|
|
1380
1402
|
options: ["--task", "--body-file", "--intent", "--request-id"],
|
|
@@ -1386,7 +1408,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1386
1408
|
]
|
|
1387
1409
|
},
|
|
1388
1410
|
{
|
|
1389
|
-
name: "project",
|
|
1411
|
+
name: "project", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1390
1412
|
summary: "Manage Projects, stable checkouts, branches, and Yui knowledge.",
|
|
1391
1413
|
sections: [
|
|
1392
1414
|
{ id: "manage", title: "Commands", entries: ["add", "clone", "refresh", "diagnose", "migrate", "update", "discover", "list", "show", "knowledge"] },
|
|
@@ -1394,60 +1416,60 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1394
1416
|
],
|
|
1395
1417
|
children: [
|
|
1396
1418
|
{
|
|
1397
|
-
name: "add",
|
|
1419
|
+
name: "add", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1398
1420
|
summary: "Bind a Project to a stable Git checkout.",
|
|
1399
1421
|
usage: "yui project add <name> <path> [--alias <name> ...] [--remote <url>] [--stable <ref>] [--development <ref>]",
|
|
1400
1422
|
options: ["--alias", "--remote", "--stable", "--development"],
|
|
1401
1423
|
fileArguments: [1]
|
|
1402
1424
|
},
|
|
1403
1425
|
{
|
|
1404
|
-
name: "clone",
|
|
1426
|
+
name: "clone", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1405
1427
|
summary: "Clone and bind a Project after user confirmation.",
|
|
1406
1428
|
usage: "yui project clone <name> <remote> [--alias <name> ...] [--stable <ref>] [--development <ref>] [--external]",
|
|
1407
1429
|
options: ["--alias", "--stable", "--development", "--external"]
|
|
1408
1430
|
},
|
|
1409
1431
|
{
|
|
1410
|
-
name: "refresh",
|
|
1432
|
+
name: "refresh", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1411
1433
|
summary: "Fast-forward a clean stable checkout from its configured remote.",
|
|
1412
1434
|
usage: "yui project refresh <project>"
|
|
1413
1435
|
},
|
|
1414
1436
|
{
|
|
1415
|
-
name: "diagnose",
|
|
1437
|
+
name: "diagnose", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1416
1438
|
summary: "Show canonical HEAD vs remote head without mutating the checkout.",
|
|
1417
1439
|
usage: "yui project diagnose <project>"
|
|
1418
1440
|
},
|
|
1419
1441
|
{
|
|
1420
|
-
name: "migrate",
|
|
1442
|
+
name: "migrate", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1421
1443
|
summary: "Move an external Project into a Home-managed repository.",
|
|
1422
1444
|
usage: "yui project migrate <project> [--preflight]",
|
|
1423
1445
|
options: ["--preflight"]
|
|
1424
1446
|
},
|
|
1425
1447
|
{
|
|
1426
|
-
name: "reset",
|
|
1448
|
+
name: "reset", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1427
1449
|
summary: "Hard-reset a canonical checkout to its verified remote baseline (Operator authority).",
|
|
1428
1450
|
usage: "yui project reset <project> [--discard-local]",
|
|
1429
1451
|
options: ["--discard-local"]
|
|
1430
1452
|
},
|
|
1431
1453
|
{
|
|
1432
|
-
name: "replace",
|
|
1454
|
+
name: "replace", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1433
1455
|
summary: "Re-clone a Home-managed checkout from its remote, preserving Yui refs (Operator authority).",
|
|
1434
1456
|
usage: "yui project replace <project> --discard-local",
|
|
1435
1457
|
options: ["--discard-local"]
|
|
1436
1458
|
},
|
|
1437
1459
|
{
|
|
1438
|
-
name: "retire",
|
|
1460
|
+
name: "retire", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1439
1461
|
summary: "Soft-deprecate a Project; record and evidence are retained (Operator authority).",
|
|
1440
1462
|
usage: "yui project retire <project> --reason <text>",
|
|
1441
1463
|
options: ["--reason"]
|
|
1442
1464
|
},
|
|
1443
1465
|
{
|
|
1444
|
-
name: "delete",
|
|
1466
|
+
name: "delete", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1445
1467
|
summary: "Remove a retired Project's catalog record and optionally its checkout (Operator authority).",
|
|
1446
1468
|
usage: "yui project delete <project> [--checkout] --confirm <project-id>",
|
|
1447
1469
|
options: ["--checkout", "--confirm"]
|
|
1448
1470
|
},
|
|
1449
1471
|
{
|
|
1450
|
-
name: "update",
|
|
1472
|
+
name: "update", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1451
1473
|
summary: "Update a bound Project's aliases, remote, or branch refs.",
|
|
1452
1474
|
usage: "yui project update <project> [--alias <name> ...|--clear-aliases] [--remote <url>|--clear-remote] [--stable <ref>] [--development <ref>]",
|
|
1453
1475
|
options: [
|
|
@@ -1456,14 +1478,14 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1456
1478
|
]
|
|
1457
1479
|
},
|
|
1458
1480
|
{
|
|
1459
|
-
name: "discover",
|
|
1481
|
+
name: "discover", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1460
1482
|
summary: "Find Git projects directly under the configured workspace.",
|
|
1461
1483
|
usage: "yui project discover [name]"
|
|
1462
1484
|
},
|
|
1463
|
-
{ name: "list", summary: "List bound Projects." },
|
|
1464
|
-
{ name: "show", summary: "Show one Project.", usage: "yui project show <project>" },
|
|
1485
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "List bound Projects." },
|
|
1486
|
+
{ name: "show", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Show one Project.", usage: "yui project show <project>" },
|
|
1465
1487
|
{
|
|
1466
|
-
name: "knowledge",
|
|
1488
|
+
name: "knowledge", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1467
1489
|
summary: "Manage durable Project knowledge stored by Yui.",
|
|
1468
1490
|
sections: [
|
|
1469
1491
|
{
|
|
@@ -1474,29 +1496,29 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1474
1496
|
],
|
|
1475
1497
|
children: [
|
|
1476
1498
|
{
|
|
1477
|
-
name: "add",
|
|
1499
|
+
name: "add", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1478
1500
|
summary: "Add Project knowledge (Operator authority).",
|
|
1479
1501
|
usage: "yui project knowledge add <project> <title> --body <text>",
|
|
1480
1502
|
options: ["--body"]
|
|
1481
1503
|
},
|
|
1482
1504
|
{
|
|
1483
|
-
name: "retire",
|
|
1505
|
+
name: "retire", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1484
1506
|
summary: "Retire Project knowledge without deleting its record (Operator authority).",
|
|
1485
1507
|
usage: "yui project knowledge retire <project> <knowledge>"
|
|
1486
1508
|
},
|
|
1487
1509
|
{
|
|
1488
|
-
name: "list",
|
|
1510
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
1489
1511
|
summary: "List Project knowledge.",
|
|
1490
1512
|
usage: "yui project knowledge list <project> [--all]",
|
|
1491
1513
|
options: ["--all"]
|
|
1492
1514
|
},
|
|
1493
1515
|
{
|
|
1494
|
-
name: "show",
|
|
1516
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
1495
1517
|
summary: "Read one Project knowledge entry.",
|
|
1496
1518
|
usage: "yui project knowledge show <project> <knowledge>"
|
|
1497
1519
|
},
|
|
1498
1520
|
{
|
|
1499
|
-
name: "propose",
|
|
1521
|
+
name: "propose", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
1500
1522
|
summary: "Propose a Task conclusion for promotion into Project knowledge.",
|
|
1501
1523
|
usage: "yui project knowledge propose <project> --title <text> --body <text> --task <task>"
|
|
1502
1524
|
+ " [--decision <id>] [--milestone <id>] [--commit <sha>] [--scope <text>]"
|
|
@@ -1504,31 +1526,31 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1504
1526
|
options: ["--title", "--body", "--task", "--decision", "--milestone", "--commit", "--scope", "--expires-when", "--supersedes"]
|
|
1505
1527
|
},
|
|
1506
1528
|
{
|
|
1507
|
-
name: "proposals",
|
|
1529
|
+
name: "proposals", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1508
1530
|
summary: "List or show Knowledge promotion proposals.",
|
|
1509
1531
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "show"] }],
|
|
1510
1532
|
children: [
|
|
1511
1533
|
{
|
|
1512
|
-
name: "list",
|
|
1534
|
+
name: "list", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
1513
1535
|
summary: "List Knowledge promotion proposals (pending by default).",
|
|
1514
1536
|
usage: "yui project knowledge proposals list <project> [--status pending|accepted|rejected] [--all]",
|
|
1515
1537
|
options: ["--status", "--all"]
|
|
1516
1538
|
},
|
|
1517
1539
|
{
|
|
1518
|
-
name: "show",
|
|
1540
|
+
name: "show", discovery: { surface: "public", audiences: ["public", "operator", "leader"] },
|
|
1519
1541
|
summary: "Show one Knowledge promotion proposal.",
|
|
1520
1542
|
usage: "yui project knowledge proposals show <project> <proposal>"
|
|
1521
1543
|
}
|
|
1522
1544
|
]
|
|
1523
1545
|
},
|
|
1524
1546
|
{
|
|
1525
|
-
name: "accept",
|
|
1547
|
+
name: "accept", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1526
1548
|
summary: "Accept a Knowledge promotion proposal (Operator authority).",
|
|
1527
1549
|
usage: "yui project knowledge accept <project> <proposal> [--update <knowledge-id>]",
|
|
1528
1550
|
options: ["--update"]
|
|
1529
1551
|
},
|
|
1530
1552
|
{
|
|
1531
|
-
name: "reject",
|
|
1553
|
+
name: "reject", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1532
1554
|
summary: "Reject a Knowledge promotion proposal (Operator authority).",
|
|
1533
1555
|
usage: "yui project knowledge reject <project> <proposal> --reason <text>",
|
|
1534
1556
|
options: ["--reason"]
|
|
@@ -1538,7 +1560,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1538
1560
|
]
|
|
1539
1561
|
},
|
|
1540
1562
|
{
|
|
1541
|
-
name: "session",
|
|
1563
|
+
name: "session", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1542
1564
|
summary: "Enter, stop, and reconcile managed Role sessions.",
|
|
1543
1565
|
examples: [
|
|
1544
1566
|
"yui session context operator --json",
|
|
@@ -1554,7 +1576,7 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1554
1576
|
children: globalSessionChildren
|
|
1555
1577
|
},
|
|
1556
1578
|
{
|
|
1557
|
-
name: "task",
|
|
1579
|
+
name: "task", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1558
1580
|
summary: "Manage Tasks, WorkItems, AgentRuns, and integration.",
|
|
1559
1581
|
sections: [
|
|
1560
1582
|
{ id: "lifecycle", title: "Lifecycle", entries: ["create", "project", "base", "update", "activate", "activation", "execution", "complete", "cancel", "reopen", "retire", "list", "show", "context", "next-action", "remote-delivery", "archive-preflight", "archive", "replace", "reconcile", "upstream", "artifact"] },
|
|
@@ -1564,49 +1586,49 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1564
1586
|
children: taskChildren
|
|
1565
1587
|
},
|
|
1566
1588
|
{
|
|
1567
|
-
name: "capability",
|
|
1589
|
+
name: "capability", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] },
|
|
1568
1590
|
summary: "Discover and call authorized capabilities through the Controller.",
|
|
1569
1591
|
sections: [{ id: "entry", title: "Commands", entries: ["search", "commands", "panels", "describe", "call"] }],
|
|
1570
1592
|
children: [
|
|
1571
|
-
{ name: "search", summary: "Search the current authorized directory.", usage: "yui capability search [query] --task <id>" },
|
|
1572
|
-
{ name: "commands", summary: "List current command names, help and capability mappings; invoke via capability call.", usage: "yui capability commands --task <id>" },
|
|
1573
|
-
{ name: "panels", summary: "List authorized text/link or query-only JSON panel descriptors.", usage: "yui capability panels --task <id>" },
|
|
1574
|
-
{ name: "describe", summary: "Describe
|
|
1575
|
-
{ name: "call", summary: "Invoke one implementation under the current managed identity.", usage: "yui capability call <name> --task <id> --input <json> [--provider <id>] [--version <version>] [--request-id <id>]" }
|
|
1593
|
+
{ name: "search", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Search the current authorized directory.", usage: "yui capability search [query] --task <id>" },
|
|
1594
|
+
{ name: "commands", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "List current command names, help and capability mappings; invoke via capability call.", usage: "yui capability commands --task <id>" },
|
|
1595
|
+
{ name: "panels", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "List authorized text/link or query-only JSON panel descriptors.", usage: "yui capability panels --task <id>" },
|
|
1596
|
+
{ name: "describe", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Describe a template or assess exact authorization without executing it.", usage: "yui capability describe <name> --task <id> [--input <json>] [--provider <id>] [--version <version>]", options: ["--task", "--input", "--provider", "--version"] },
|
|
1597
|
+
{ name: "call", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Invoke one implementation under the current managed identity.", usage: "yui capability call <name> --task <id> --input <json> [--provider <id>] [--version <version>] [--request-id <id>]", options: ["--task", "--input", "--provider", "--version", "--request-id"] }
|
|
1576
1598
|
]
|
|
1577
1599
|
},
|
|
1578
1600
|
{
|
|
1579
|
-
name: "job",
|
|
1601
|
+
name: "job", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] },
|
|
1580
1602
|
summary: "Start, inspect, cancel, or acknowledge a Controller-managed DurableJob.",
|
|
1581
1603
|
sections: [{ id: "manage", title: "Commands", entries: ["start", "get", "cancel", "acknowledge"] }],
|
|
1582
1604
|
children: [
|
|
1583
|
-
{ name: "start", summary: "Start a DurableJob under an explicit request identity.", usage: "yui job start --request-id <id> --task <id> --project <project> --head <sha> --workspace <dir> --step <name>=<command> [--step ...] [--owner task|work-item:<id>|integration-attempt:<id>] [--env <k=v>...]" },
|
|
1584
|
-
{ name: "get", summary: "Show a DurableJob record and its terminal result.", usage: "yui job get --task <id> --job <job-id>" },
|
|
1585
|
-
{ name: "cancel", summary: "Request cancellation of a running or queued DurableJob.", usage: "yui job cancel --task <id> --job <job-id>" },
|
|
1586
|
-
{ name: "acknowledge", summary: "Acknowledge an unknown-needs-attention DurableJob so Task lifecycle gates can proceed.", usage: "yui job acknowledge --task <id> --job <job-id>" }
|
|
1605
|
+
{ name: "start", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Start a DurableJob under an explicit request identity.", usage: "yui job start --request-id <id> --task <id> --project <project> --head <sha> --workspace <dir> --step <name>=<command> [--step ...] [--owner task|work-item:<id>|integration-attempt:<id>] [--env <k=v>...]" },
|
|
1606
|
+
{ name: "get", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Show a DurableJob record and its terminal result.", usage: "yui job get --task <id> --job <job-id>" },
|
|
1607
|
+
{ name: "cancel", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Request cancellation of a running or queued DurableJob.", usage: "yui job cancel --task <id> --job <job-id>" },
|
|
1608
|
+
{ name: "acknowledge", discovery: { surface: "managed", audiences: ["operator", "leader", "assignment"] }, summary: "Acknowledge an unknown-needs-attention DurableJob so Task lifecycle gates can proceed.", usage: "yui job acknowledge --task <id> --job <job-id>" }
|
|
1587
1609
|
]
|
|
1588
1610
|
},
|
|
1589
1611
|
{
|
|
1590
|
-
name: "jobs",
|
|
1612
|
+
name: "jobs", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1591
1613
|
summary: "Inspect scheduler wake and recovery records.",
|
|
1592
1614
|
sections: [{ id: "manage", title: "Commands", entries: ["list", "retry"] }],
|
|
1593
1615
|
children: [
|
|
1594
|
-
{ name: "list", summary: "List scheduler wake and recovery records." },
|
|
1595
|
-
{ name: "retry", summary: "Retry a failed Leader recovery.", usage: "yui jobs retry <id>" }
|
|
1616
|
+
{ name: "list", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "List scheduler wake and recovery records." },
|
|
1617
|
+
{ name: "retry", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Retry a failed Leader recovery.", usage: "yui jobs retry <id>" }
|
|
1596
1618
|
]
|
|
1597
1619
|
},
|
|
1598
1620
|
{
|
|
1599
|
-
name: "telemetry",
|
|
1621
|
+
name: "telemetry", discovery: { surface: "public", audiences: ["public", "operator"] },
|
|
1600
1622
|
summary: "Inspect and compact the bounded provider-progress sidecar.",
|
|
1601
1623
|
sections: [{ id: "manage", title: "Commands", entries: ["status", "prune", "read"] }],
|
|
1602
1624
|
children: [
|
|
1603
|
-
{ name: "status", summary: "Show sidecar health, row counts, and retention settings.", usage: "yui telemetry status" },
|
|
1604
|
-
{ name: "prune", summary: "Apply terminal retention and active-AgentRun caps.", usage: "yui telemetry prune [--task <id>] [--keep <n>] [--dry-run]" },
|
|
1605
|
-
{ name: "read", summary: "Page through retained progress rows or read a AgentRun aggregate.", usage: "yui telemetry read --task <id> [--run <id>] [--aggregate] [--limit <n>] [--offset <n>]" }
|
|
1625
|
+
{ name: "status", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Show sidecar health, row counts, and retention settings.", usage: "yui telemetry status" },
|
|
1626
|
+
{ name: "prune", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Apply terminal retention and active-AgentRun caps.", usage: "yui telemetry prune [--task <id>] [--keep <n>] [--dry-run]" },
|
|
1627
|
+
{ name: "read", discovery: { surface: "public", audiences: ["public", "operator"] }, summary: "Page through retained progress rows or read a AgentRun aggregate.", usage: "yui telemetry read --task <id> [--run <id>] [--aggregate] [--limit <n>] [--offset <n>]" }
|
|
1606
1628
|
]
|
|
1607
1629
|
},
|
|
1608
1630
|
{
|
|
1609
|
-
name: "internal",
|
|
1631
|
+
name: "internal", discovery: { surface: "runtime", audiences: [] },
|
|
1610
1632
|
summary: "Internal Yui callbacks.",
|
|
1611
1633
|
hidden: true,
|
|
1612
1634
|
sections: [{
|
|
@@ -1616,17 +1638,17 @@ export const ROOT_COMMAND = buildNode({
|
|
|
1616
1638
|
}],
|
|
1617
1639
|
children: [
|
|
1618
1640
|
{
|
|
1619
|
-
name: "agent-host",
|
|
1641
|
+
name: "agent-host", discovery: { surface: "runtime", audiences: [] },
|
|
1620
1642
|
summary: "Run the persistent structured Provider host.",
|
|
1621
1643
|
usage: "yui internal agent-host <ticket>"
|
|
1622
1644
|
},
|
|
1623
1645
|
{
|
|
1624
|
-
name: "session-notify",
|
|
1646
|
+
name: "session-notify", discovery: { surface: "runtime", audiences: [] },
|
|
1625
1647
|
summary: "Record a structured native session notification.",
|
|
1626
1648
|
usage: "yui internal session-notify <payload>"
|
|
1627
1649
|
},
|
|
1628
1650
|
{
|
|
1629
|
-
name: "runtime-hook",
|
|
1651
|
+
name: "runtime-hook", discovery: { surface: "runtime", audiences: [] },
|
|
1630
1652
|
summary: "Record a managed Agent Driver observation from stdin.",
|
|
1631
1653
|
usage: "yui internal runtime-hook"
|
|
1632
1654
|
}
|
|
@@ -1661,8 +1683,8 @@ export function orderedImmediateTokens(node) {
|
|
|
1661
1683
|
export function findChild(node, name) {
|
|
1662
1684
|
return node.children.find((child) => child.name === name);
|
|
1663
1685
|
}
|
|
1664
|
-
export function findCommandNode(path) {
|
|
1665
|
-
let node =
|
|
1686
|
+
export function findCommandNode(path, root = ROOT_COMMAND) {
|
|
1687
|
+
let node = root;
|
|
1666
1688
|
for (const segment of path[0] === ROOT_COMMAND.name ? path.slice(1) : path) {
|
|
1667
1689
|
const child = findChild(node, segment);
|
|
1668
1690
|
if (child === undefined)
|
|
@@ -1698,6 +1720,13 @@ export function validateCommandCatalog(root) {
|
|
|
1698
1720
|
throw new Error(`Command examples are required: ${node.path.join(" ")}`);
|
|
1699
1721
|
}
|
|
1700
1722
|
const canonicalPath = node.path.join(" ");
|
|
1723
|
+
if (node.kind !== "group" && node.discovery === undefined) {
|
|
1724
|
+
throw new Error(`Executable command discovery must be explicit: ${canonicalPath}`);
|
|
1725
|
+
}
|
|
1726
|
+
for (const option of Object.keys(node.discovery?.optionAudiences ?? {})) {
|
|
1727
|
+
if (!node.options.includes(option))
|
|
1728
|
+
throw new Error(`Discovery references unknown option: ${canonicalPath} ${option}`);
|
|
1729
|
+
}
|
|
1701
1730
|
for (const example of node.examples) {
|
|
1702
1731
|
const normalized = example.replace(/^yui --json(?=\s|$)/, "yui");
|
|
1703
1732
|
if (normalized !== canonicalPath && !normalized.startsWith(`${canonicalPath} `)) {
|