@fission-ai/openspec 1.3.1 → 1.4.1
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 +9 -2
- package/bin/openspec.js +3 -1
- package/dist/cli/index.d.ts +4 -1
- package/dist/cli/index.js +65 -3
- package/dist/commands/completion.js +7 -0
- package/dist/commands/config.js +64 -5
- package/dist/commands/context-store.d.ts +3 -0
- package/dist/commands/context-store.js +475 -0
- package/dist/commands/initiative.d.ts +13 -0
- package/dist/commands/initiative.js +318 -0
- package/dist/commands/workflow/index.d.ts +2 -0
- package/dist/commands/workflow/index.js +1 -0
- package/dist/commands/workflow/initiative-link.d.ts +24 -0
- package/dist/commands/workflow/initiative-link.js +47 -0
- package/dist/commands/workflow/instructions.d.ts +1 -1
- package/dist/commands/workflow/instructions.js +28 -11
- package/dist/commands/workflow/new-change.d.ts +6 -0
- package/dist/commands/workflow/new-change.js +114 -17
- package/dist/commands/workflow/set-change.d.ts +13 -0
- package/dist/commands/workflow/set-change.js +87 -0
- package/dist/commands/workflow/shared.d.ts +4 -2
- package/dist/commands/workflow/shared.js +6 -6
- package/dist/commands/workflow/status.js +19 -4
- package/dist/commands/workspace/context-status.d.ts +4 -0
- package/dist/commands/workspace/context-status.js +59 -0
- package/dist/commands/workspace/open-target-selection.d.ts +13 -0
- package/dist/commands/workspace/open-target-selection.js +146 -0
- package/dist/commands/workspace/open-view.d.ts +62 -0
- package/dist/commands/workspace/open-view.js +249 -0
- package/dist/commands/workspace/open.d.ts +37 -0
- package/dist/commands/workspace/open.js +110 -0
- package/dist/commands/workspace/opener-selection.d.ts +11 -0
- package/dist/commands/workspace/opener-selection.js +98 -0
- package/dist/commands/workspace/operations.d.ts +29 -0
- package/dist/commands/workspace/operations.js +543 -0
- package/dist/commands/workspace/prompt-theme.d.ts +29 -0
- package/dist/commands/workspace/prompt-theme.js +24 -0
- package/dist/commands/workspace/registration.d.ts +13 -0
- package/dist/commands/workspace/registration.js +84 -0
- package/dist/commands/workspace/selection.d.ts +8 -0
- package/dist/commands/workspace/selection.js +104 -0
- package/dist/commands/workspace/setup-prompts.d.ts +13 -0
- package/dist/commands/workspace/setup-prompts.js +121 -0
- package/dist/commands/workspace/types.d.ts +103 -0
- package/dist/commands/workspace/types.js +36 -0
- package/dist/commands/workspace.d.ts +5 -0
- package/dist/commands/workspace.js +574 -0
- package/dist/core/artifact-graph/index.d.ts +2 -1
- package/dist/core/artifact-graph/instruction-loader.d.ts +41 -1
- package/dist/core/artifact-graph/instruction-loader.js +46 -6
- package/dist/core/artifact-graph/types.d.ts +0 -5
- package/dist/core/artifact-graph/types.js +0 -14
- package/dist/core/change-metadata/index.d.ts +2 -0
- package/dist/core/change-metadata/index.js +2 -0
- package/dist/core/change-metadata/schema.d.ts +18 -0
- package/dist/core/change-metadata/schema.js +28 -0
- package/dist/core/change-status-policy.d.ts +50 -0
- package/dist/core/change-status-policy.js +70 -0
- package/dist/core/collections/index.d.ts +3 -0
- package/dist/core/collections/index.js +3 -0
- package/dist/core/collections/initiatives/collection.d.ts +4 -0
- package/dist/core/collections/initiatives/collection.js +17 -0
- package/dist/core/collections/initiatives/index.d.ts +6 -0
- package/dist/core/collections/initiatives/index.js +6 -0
- package/dist/core/collections/initiatives/operations.d.ts +49 -0
- package/dist/core/collections/initiatives/operations.js +175 -0
- package/dist/core/collections/initiatives/resolution.d.ts +87 -0
- package/dist/core/collections/initiatives/resolution.js +374 -0
- package/dist/core/collections/initiatives/schema.d.ts +41 -0
- package/dist/core/collections/initiatives/schema.js +134 -0
- package/dist/core/collections/initiatives/templates.d.ts +12 -0
- package/dist/core/collections/initiatives/templates.js +90 -0
- package/dist/core/collections/runtime.d.ts +46 -0
- package/dist/core/collections/runtime.js +194 -0
- package/dist/core/completions/command-registry.d.ts +1 -5
- package/dist/core/completions/command-registry.js +532 -32
- package/dist/core/completions/completion-provider.d.ts +11 -0
- package/dist/core/completions/completion-provider.js +27 -0
- package/dist/core/completions/generators/bash-generator.d.ts +3 -0
- package/dist/core/completions/generators/bash-generator.js +60 -4
- package/dist/core/completions/generators/fish-generator.js +3 -0
- package/dist/core/completions/generators/powershell-generator.d.ts +3 -0
- package/dist/core/completions/generators/powershell-generator.js +63 -4
- package/dist/core/completions/generators/zsh-generator.d.ts +3 -0
- package/dist/core/completions/generators/zsh-generator.js +46 -22
- package/dist/core/completions/installers/zsh-installer.d.ts +0 -8
- package/dist/core/completions/installers/zsh-installer.js +3 -31
- package/dist/core/completions/shared-flags.d.ts +12 -0
- package/dist/core/completions/shared-flags.js +28 -0
- package/dist/core/completions/templates/bash-templates.d.ts +1 -1
- package/dist/core/completions/templates/bash-templates.js +6 -0
- package/dist/core/completions/templates/fish-templates.d.ts +1 -1
- package/dist/core/completions/templates/fish-templates.js +6 -0
- package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
- package/dist/core/completions/templates/powershell-templates.js +9 -0
- package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
- package/dist/core/completions/templates/zsh-templates.js +9 -0
- package/dist/core/completions/types.d.ts +23 -1
- package/dist/core/config.js +3 -1
- package/dist/core/context-store/binding.d.ts +53 -0
- package/dist/core/context-store/binding.js +197 -0
- package/dist/core/context-store/errors.d.ts +20 -0
- package/dist/core/context-store/errors.js +22 -0
- package/dist/core/context-store/foundation.d.ts +55 -0
- package/dist/core/context-store/foundation.js +321 -0
- package/dist/core/context-store/index.d.ts +6 -0
- package/dist/core/context-store/index.js +6 -0
- package/dist/core/context-store/operations.d.ts +85 -0
- package/dist/core/context-store/operations.js +528 -0
- package/dist/core/context-store/registry.d.ts +45 -0
- package/dist/core/context-store/registry.js +229 -0
- package/dist/core/global-config.d.ts +6 -1
- package/dist/core/global-config.js +15 -16
- package/dist/core/index.d.ts +5 -1
- package/dist/core/index.js +4 -0
- package/dist/core/parsers/requirement-blocks.js +5 -5
- package/dist/core/parsers/spec-structure.js +1 -1
- package/dist/core/planning-home.d.ts +21 -0
- package/dist/core/planning-home.js +108 -0
- package/dist/core/profiles.d.ts +1 -1
- package/dist/core/profiles.js +1 -1
- package/dist/core/specs-apply.js +1 -1
- package/dist/core/templates/workflows/apply-change.js +6 -0
- package/dist/core/templates/workflows/archive-change.js +21 -15
- package/dist/core/templates/workflows/bulk-archive-change.js +14 -10
- package/dist/core/templates/workflows/continue-change.js +6 -4
- package/dist/core/templates/workflows/explore.js +8 -10
- package/dist/core/templates/workflows/ff-change.js +8 -6
- package/dist/core/templates/workflows/new-change.js +6 -6
- package/dist/core/templates/workflows/onboard.js +13 -15
- package/dist/core/templates/workflows/propose.js +8 -6
- package/dist/core/templates/workflows/sync-specs.js +28 -10
- package/dist/core/templates/workflows/verify-change.js +10 -4
- package/dist/core/update.d.ts +5 -0
- package/dist/core/update.js +20 -0
- package/dist/core/validation/validator.d.ts +11 -0
- package/dist/core/validation/validator.js +19 -2
- package/dist/core/workspace/foundation.d.ts +67 -0
- package/dist/core/workspace/foundation.js +295 -0
- package/dist/core/workspace/index.d.ts +8 -0
- package/dist/core/workspace/index.js +8 -0
- package/dist/core/workspace/legacy-state.d.ts +28 -0
- package/dist/core/workspace/legacy-state.js +200 -0
- package/dist/core/workspace/link-input.d.ts +9 -0
- package/dist/core/workspace/link-input.js +32 -0
- package/dist/core/workspace/open-surface.d.ts +45 -0
- package/dist/core/workspace/open-surface.js +215 -0
- package/dist/core/workspace/openers.d.ts +21 -0
- package/dist/core/workspace/openers.js +124 -0
- package/dist/core/workspace/registry.d.ts +24 -0
- package/dist/core/workspace/registry.js +146 -0
- package/dist/core/workspace/skills.d.ts +57 -0
- package/dist/core/workspace/skills.js +334 -0
- package/dist/core/workspace/state-io.d.ts +10 -0
- package/dist/core/workspace/state-io.js +121 -0
- package/dist/utils/change-metadata.d.ts +5 -2
- package/dist/utils/change-metadata.js +7 -13
- package/dist/utils/change-utils.d.ts +9 -0
- package/dist/utils/change-utils.js +7 -5
- package/package.json +2 -1
- package/schemas/workspace-planning/schema.yaml +72 -0
- package/schemas/workspace-planning/templates/design.md +33 -0
- package/schemas/workspace-planning/templates/proposal.md +28 -0
- package/schemas/workspace-planning/templates/spec.md +9 -0
- package/schemas/workspace-planning/templates/tasks.md +15 -0
|
@@ -1,46 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
* Common flags used across multiple commands
|
|
3
|
-
*/
|
|
4
|
-
const COMMON_FLAGS = {
|
|
5
|
-
json: {
|
|
6
|
-
name: 'json',
|
|
7
|
-
description: 'Output as JSON',
|
|
8
|
-
},
|
|
9
|
-
jsonValidation: {
|
|
10
|
-
name: 'json',
|
|
11
|
-
description: 'Output validation results as JSON',
|
|
12
|
-
},
|
|
13
|
-
strict: {
|
|
14
|
-
name: 'strict',
|
|
15
|
-
description: 'Enable strict validation mode',
|
|
16
|
-
},
|
|
17
|
-
noInteractive: {
|
|
18
|
-
name: 'no-interactive',
|
|
19
|
-
description: 'Disable interactive prompts',
|
|
20
|
-
},
|
|
21
|
-
type: {
|
|
22
|
-
name: 'type',
|
|
23
|
-
description: 'Specify item type when ambiguous',
|
|
24
|
-
takesValue: true,
|
|
25
|
-
values: ['change', 'spec'],
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Registry of all OpenSpec CLI commands with their flags and metadata.
|
|
30
|
-
* This registry is used to generate shell completion scripts.
|
|
31
|
-
*/
|
|
1
|
+
import { COMMON_FLAGS } from './shared-flags.js';
|
|
32
2
|
export const COMMAND_REGISTRY = [
|
|
33
3
|
{
|
|
34
4
|
name: 'init',
|
|
35
5
|
description: 'Initialize OpenSpec in your project',
|
|
36
6
|
acceptsPositional: true,
|
|
37
7
|
positionalType: 'path',
|
|
8
|
+
positionals: [{ name: 'path', type: 'path', optional: true }],
|
|
38
9
|
flags: [
|
|
39
10
|
{
|
|
40
11
|
name: 'tools',
|
|
41
12
|
description: 'Configure AI tools non-interactively (e.g., "all", "none", or comma-separated tool IDs)',
|
|
42
13
|
takesValue: true,
|
|
43
14
|
},
|
|
15
|
+
{
|
|
16
|
+
name: 'force',
|
|
17
|
+
description: 'Auto-cleanup legacy files without prompting',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'profile',
|
|
21
|
+
description: 'Override global config profile (core or custom)',
|
|
22
|
+
takesValue: true,
|
|
23
|
+
values: ['core', 'custom'],
|
|
24
|
+
},
|
|
44
25
|
],
|
|
45
26
|
},
|
|
46
27
|
{
|
|
@@ -48,7 +29,13 @@ export const COMMAND_REGISTRY = [
|
|
|
48
29
|
description: 'Update OpenSpec instruction files',
|
|
49
30
|
acceptsPositional: true,
|
|
50
31
|
positionalType: 'path',
|
|
51
|
-
|
|
32
|
+
positionals: [{ name: 'path', type: 'path', optional: true }],
|
|
33
|
+
flags: [
|
|
34
|
+
{
|
|
35
|
+
name: 'force',
|
|
36
|
+
description: 'Force update even when tools are up to date',
|
|
37
|
+
},
|
|
38
|
+
],
|
|
52
39
|
},
|
|
53
40
|
{
|
|
54
41
|
name: 'list',
|
|
@@ -62,6 +49,13 @@ export const COMMAND_REGISTRY = [
|
|
|
62
49
|
name: 'changes',
|
|
63
50
|
description: 'List changes explicitly (default)',
|
|
64
51
|
},
|
|
52
|
+
{
|
|
53
|
+
name: 'sort',
|
|
54
|
+
description: 'Sort order: "recent" (default) or "name"',
|
|
55
|
+
takesValue: true,
|
|
56
|
+
values: ['recent', 'name'],
|
|
57
|
+
},
|
|
58
|
+
COMMON_FLAGS.json,
|
|
65
59
|
],
|
|
66
60
|
},
|
|
67
61
|
{
|
|
@@ -74,6 +68,7 @@ export const COMMAND_REGISTRY = [
|
|
|
74
68
|
description: 'Validate changes and specs',
|
|
75
69
|
acceptsPositional: true,
|
|
76
70
|
positionalType: 'change-or-spec-id',
|
|
71
|
+
positionals: [{ name: 'item-name', type: 'change-or-spec-id', optional: true }],
|
|
77
72
|
flags: [
|
|
78
73
|
{
|
|
79
74
|
name: 'all',
|
|
@@ -103,6 +98,7 @@ export const COMMAND_REGISTRY = [
|
|
|
103
98
|
description: 'Show a change or spec',
|
|
104
99
|
acceptsPositional: true,
|
|
105
100
|
positionalType: 'change-or-spec-id',
|
|
101
|
+
positionals: [{ name: 'item-name', type: 'change-or-spec-id', optional: true }],
|
|
106
102
|
flags: [
|
|
107
103
|
COMMON_FLAGS.json,
|
|
108
104
|
COMMON_FLAGS.type,
|
|
@@ -136,6 +132,7 @@ export const COMMAND_REGISTRY = [
|
|
|
136
132
|
description: 'Archive a completed change and update main specs',
|
|
137
133
|
acceptsPositional: true,
|
|
138
134
|
positionalType: 'change-id',
|
|
135
|
+
positionals: [{ name: 'change-name', type: 'change-id', optional: true }],
|
|
139
136
|
flags: [
|
|
140
137
|
{
|
|
141
138
|
name: 'yes',
|
|
@@ -152,10 +149,494 @@ export const COMMAND_REGISTRY = [
|
|
|
152
149
|
},
|
|
153
150
|
],
|
|
154
151
|
},
|
|
152
|
+
{
|
|
153
|
+
name: 'status',
|
|
154
|
+
description: 'Display artifact completion status for a change',
|
|
155
|
+
flags: [
|
|
156
|
+
{
|
|
157
|
+
name: 'change',
|
|
158
|
+
description: 'Change name to show status for',
|
|
159
|
+
takesValue: true,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: 'schema',
|
|
163
|
+
description: 'Schema override',
|
|
164
|
+
takesValue: true,
|
|
165
|
+
},
|
|
166
|
+
COMMON_FLAGS.json,
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
name: 'instructions',
|
|
171
|
+
description: 'Output enriched instructions for creating an artifact or applying tasks',
|
|
172
|
+
acceptsPositional: true,
|
|
173
|
+
positionals: [{ name: 'artifact', optional: true }],
|
|
174
|
+
flags: [
|
|
175
|
+
{
|
|
176
|
+
name: 'change',
|
|
177
|
+
description: 'Change name',
|
|
178
|
+
takesValue: true,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: 'schema',
|
|
182
|
+
description: 'Schema override',
|
|
183
|
+
takesValue: true,
|
|
184
|
+
},
|
|
185
|
+
COMMON_FLAGS.json,
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
name: 'templates',
|
|
190
|
+
description: 'Show resolved template paths for all artifacts in a schema',
|
|
191
|
+
flags: [
|
|
192
|
+
{
|
|
193
|
+
name: 'schema',
|
|
194
|
+
description: 'Schema to use',
|
|
195
|
+
takesValue: true,
|
|
196
|
+
},
|
|
197
|
+
COMMON_FLAGS.json,
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: 'schemas',
|
|
202
|
+
description: 'List available workflow schemas with descriptions',
|
|
203
|
+
flags: [
|
|
204
|
+
COMMON_FLAGS.json,
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
name: 'new',
|
|
209
|
+
description: 'Create new items',
|
|
210
|
+
flags: [],
|
|
211
|
+
subcommands: [
|
|
212
|
+
{
|
|
213
|
+
name: 'change',
|
|
214
|
+
description: 'Create a new change directory',
|
|
215
|
+
acceptsPositional: true,
|
|
216
|
+
positionals: [{ name: 'name' }],
|
|
217
|
+
flags: [
|
|
218
|
+
{
|
|
219
|
+
name: 'description',
|
|
220
|
+
description: 'Description to add to README.md',
|
|
221
|
+
takesValue: true,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
name: 'goal',
|
|
225
|
+
description: 'Workspace product goal to store with the change',
|
|
226
|
+
takesValue: true,
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: 'areas',
|
|
230
|
+
description: 'Comma-separated affected workspace link names',
|
|
231
|
+
takesValue: true,
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: 'initiative',
|
|
235
|
+
description: 'Link the repo-local change to an initiative',
|
|
236
|
+
takesValue: true,
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: 'store',
|
|
240
|
+
description: 'Context store id for --initiative',
|
|
241
|
+
takesValue: true,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
name: 'store-path',
|
|
245
|
+
description: 'Existing local context store root for --initiative',
|
|
246
|
+
takesValue: true,
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
name: 'schema',
|
|
250
|
+
description: 'Workflow schema to use',
|
|
251
|
+
takesValue: true,
|
|
252
|
+
},
|
|
253
|
+
COMMON_FLAGS.json,
|
|
254
|
+
],
|
|
255
|
+
},
|
|
256
|
+
],
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
name: 'set',
|
|
260
|
+
description: 'Set checked-in OpenSpec metadata',
|
|
261
|
+
flags: [],
|
|
262
|
+
subcommands: [
|
|
263
|
+
{
|
|
264
|
+
name: 'change',
|
|
265
|
+
description: 'Set repo-local change metadata',
|
|
266
|
+
acceptsPositional: true,
|
|
267
|
+
positionalType: 'change-id',
|
|
268
|
+
positionals: [{ name: 'name', type: 'change-id' }],
|
|
269
|
+
flags: [
|
|
270
|
+
{
|
|
271
|
+
name: 'initiative',
|
|
272
|
+
description: 'Link the repo-local change to an initiative',
|
|
273
|
+
takesValue: true,
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: 'store',
|
|
277
|
+
description: 'Context store id for --initiative',
|
|
278
|
+
takesValue: true,
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: 'store-path',
|
|
282
|
+
description: 'Existing local context store root for --initiative',
|
|
283
|
+
takesValue: true,
|
|
284
|
+
},
|
|
285
|
+
COMMON_FLAGS.json,
|
|
286
|
+
],
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
name: 'workspace',
|
|
292
|
+
description: 'Set up and inspect coordination workspaces',
|
|
293
|
+
flags: [],
|
|
294
|
+
subcommands: [
|
|
295
|
+
{
|
|
296
|
+
name: 'setup',
|
|
297
|
+
description: 'Set up a workspace and link existing repos or folders',
|
|
298
|
+
flags: [
|
|
299
|
+
{
|
|
300
|
+
name: 'name',
|
|
301
|
+
description: 'Workspace name',
|
|
302
|
+
takesValue: true,
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: 'link',
|
|
306
|
+
description: 'Repo or folder link. Use <path> or <name>=<path>',
|
|
307
|
+
takesValue: true,
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
name: 'opener',
|
|
311
|
+
description: 'Preferred opener: codex-cli, claude, github-copilot, or editor',
|
|
312
|
+
takesValue: true,
|
|
313
|
+
values: ['codex-cli', 'claude', 'github-copilot', 'editor'],
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
name: 'tools',
|
|
317
|
+
description: 'Install OpenSpec skills for agents (all, none, or comma-separated tool IDs)',
|
|
318
|
+
takesValue: true,
|
|
319
|
+
},
|
|
320
|
+
COMMON_FLAGS.json,
|
|
321
|
+
COMMON_FLAGS.noInteractive,
|
|
322
|
+
],
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
name: 'list',
|
|
326
|
+
description: 'List known OpenSpec workspaces',
|
|
327
|
+
flags: [
|
|
328
|
+
COMMON_FLAGS.json,
|
|
329
|
+
],
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
name: 'ls',
|
|
333
|
+
description: 'List known OpenSpec workspaces',
|
|
334
|
+
flags: [
|
|
335
|
+
COMMON_FLAGS.json,
|
|
336
|
+
],
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: 'link',
|
|
340
|
+
description: 'Link an existing repo or folder to a workspace',
|
|
341
|
+
acceptsPositional: true,
|
|
342
|
+
positionals: [
|
|
343
|
+
{ name: 'name-or-path', type: 'path', optional: true },
|
|
344
|
+
{ name: 'path', type: 'path', optional: true },
|
|
345
|
+
],
|
|
346
|
+
flags: [
|
|
347
|
+
{
|
|
348
|
+
name: 'workspace',
|
|
349
|
+
description: 'Workspace name from local workspace views',
|
|
350
|
+
takesValue: true,
|
|
351
|
+
},
|
|
352
|
+
COMMON_FLAGS.json,
|
|
353
|
+
COMMON_FLAGS.noInteractive,
|
|
354
|
+
],
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
name: 'relink',
|
|
358
|
+
description: 'Update the local path for an existing workspace link',
|
|
359
|
+
acceptsPositional: true,
|
|
360
|
+
positionals: [
|
|
361
|
+
{ name: 'name' },
|
|
362
|
+
{ name: 'path', type: 'path' },
|
|
363
|
+
],
|
|
364
|
+
flags: [
|
|
365
|
+
{
|
|
366
|
+
name: 'workspace',
|
|
367
|
+
description: 'Workspace name from local workspace views',
|
|
368
|
+
takesValue: true,
|
|
369
|
+
},
|
|
370
|
+
COMMON_FLAGS.json,
|
|
371
|
+
COMMON_FLAGS.noInteractive,
|
|
372
|
+
],
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
name: 'doctor',
|
|
376
|
+
description: 'Check what a workspace can resolve on this machine',
|
|
377
|
+
flags: [
|
|
378
|
+
{
|
|
379
|
+
name: 'workspace',
|
|
380
|
+
description: 'Workspace name from local workspace views',
|
|
381
|
+
takesValue: true,
|
|
382
|
+
},
|
|
383
|
+
COMMON_FLAGS.json,
|
|
384
|
+
COMMON_FLAGS.noInteractive,
|
|
385
|
+
],
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
name: 'update',
|
|
389
|
+
description: 'Refresh workspace-local OpenSpec guidance and agent skills',
|
|
390
|
+
acceptsPositional: true,
|
|
391
|
+
positionals: [{ name: 'name', optional: true }],
|
|
392
|
+
flags: [
|
|
393
|
+
{
|
|
394
|
+
name: 'workspace',
|
|
395
|
+
description: 'Workspace name from local workspace views',
|
|
396
|
+
takesValue: true,
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
name: 'tools',
|
|
400
|
+
description: 'Select agents for workspace skills-only delivery; global profile selects workflows',
|
|
401
|
+
takesValue: true,
|
|
402
|
+
},
|
|
403
|
+
COMMON_FLAGS.json,
|
|
404
|
+
COMMON_FLAGS.noInteractive,
|
|
405
|
+
],
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
name: 'open',
|
|
409
|
+
description: 'Open a workspace in an agent or VS Code editor',
|
|
410
|
+
acceptsPositional: true,
|
|
411
|
+
positionals: [{ name: 'name', optional: true }],
|
|
412
|
+
flags: [
|
|
413
|
+
{
|
|
414
|
+
name: 'workspace',
|
|
415
|
+
description: 'Workspace name from local workspace views',
|
|
416
|
+
takesValue: true,
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
name: 'initiative',
|
|
420
|
+
description: 'Open an initiative as a local workspace view',
|
|
421
|
+
takesValue: true,
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
name: 'store',
|
|
425
|
+
description: 'Context store id for --initiative',
|
|
426
|
+
takesValue: true,
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
name: 'store-path',
|
|
430
|
+
description: 'Existing local context store root for --initiative',
|
|
431
|
+
takesValue: true,
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: 'agent',
|
|
435
|
+
description: 'Use an agent for this session: codex-cli, claude, or github-copilot',
|
|
436
|
+
takesValue: true,
|
|
437
|
+
values: ['codex-cli', 'claude', 'github-copilot'],
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: 'editor',
|
|
441
|
+
description: 'Open the workspace in VS Code editor mode',
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
name: 'prepare-only',
|
|
445
|
+
description: 'Unsupported: preview surfaces belong to a future context/query command',
|
|
446
|
+
},
|
|
447
|
+
COMMON_FLAGS.json,
|
|
448
|
+
{
|
|
449
|
+
name: 'change',
|
|
450
|
+
description: 'Unsupported: change-scoped open belongs to future workspace change planning',
|
|
451
|
+
takesValue: true,
|
|
452
|
+
},
|
|
453
|
+
COMMON_FLAGS.noInteractive,
|
|
454
|
+
],
|
|
455
|
+
},
|
|
456
|
+
],
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
name: 'context-store',
|
|
460
|
+
description: 'Set up and inspect context stores',
|
|
461
|
+
flags: [],
|
|
462
|
+
subcommands: [
|
|
463
|
+
{
|
|
464
|
+
name: 'setup',
|
|
465
|
+
description: 'Create or register a local context store',
|
|
466
|
+
acceptsPositional: true,
|
|
467
|
+
positionals: [{ name: 'id', optional: true }],
|
|
468
|
+
flags: [
|
|
469
|
+
{
|
|
470
|
+
name: 'path',
|
|
471
|
+
description: 'Directory to use for the context store',
|
|
472
|
+
takesValue: true,
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
name: 'init-git',
|
|
476
|
+
description: 'Initialize a Git repository in the context store',
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: 'no-init-git',
|
|
480
|
+
description: 'Skip Git repository initialization',
|
|
481
|
+
},
|
|
482
|
+
COMMON_FLAGS.json,
|
|
483
|
+
],
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
name: 'register',
|
|
487
|
+
description: 'Register an existing context store directory',
|
|
488
|
+
acceptsPositional: true,
|
|
489
|
+
positionals: [{ name: 'path', type: 'path', optional: true }],
|
|
490
|
+
flags: [
|
|
491
|
+
{
|
|
492
|
+
name: 'id',
|
|
493
|
+
description: 'Context store id',
|
|
494
|
+
takesValue: true,
|
|
495
|
+
},
|
|
496
|
+
COMMON_FLAGS.json,
|
|
497
|
+
],
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
name: 'unregister',
|
|
501
|
+
description: 'Forget a local context-store registration without deleting files',
|
|
502
|
+
acceptsPositional: true,
|
|
503
|
+
positionals: [{ name: 'id' }],
|
|
504
|
+
flags: [
|
|
505
|
+
COMMON_FLAGS.json,
|
|
506
|
+
],
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
name: 'remove',
|
|
510
|
+
description: 'Forget a local context-store registration and delete its local folder',
|
|
511
|
+
acceptsPositional: true,
|
|
512
|
+
positionals: [{ name: 'id' }],
|
|
513
|
+
flags: [
|
|
514
|
+
{
|
|
515
|
+
name: 'yes',
|
|
516
|
+
description: 'Confirm local context-store folder deletion',
|
|
517
|
+
},
|
|
518
|
+
COMMON_FLAGS.json,
|
|
519
|
+
],
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
name: 'list',
|
|
523
|
+
description: 'List registered context stores',
|
|
524
|
+
flags: [
|
|
525
|
+
COMMON_FLAGS.json,
|
|
526
|
+
],
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
name: 'ls',
|
|
530
|
+
description: 'List registered context stores',
|
|
531
|
+
flags: [
|
|
532
|
+
COMMON_FLAGS.json,
|
|
533
|
+
],
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
name: 'doctor',
|
|
537
|
+
description: 'Check local context-store registration and metadata',
|
|
538
|
+
acceptsPositional: true,
|
|
539
|
+
positionals: [{ name: 'id', optional: true }],
|
|
540
|
+
flags: [
|
|
541
|
+
COMMON_FLAGS.json,
|
|
542
|
+
],
|
|
543
|
+
},
|
|
544
|
+
],
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
name: 'initiative',
|
|
548
|
+
description: 'Create and list coordinated initiatives',
|
|
549
|
+
flags: [],
|
|
550
|
+
subcommands: [
|
|
551
|
+
{
|
|
552
|
+
name: 'create',
|
|
553
|
+
description: 'Create an initiative in a context store',
|
|
554
|
+
acceptsPositional: true,
|
|
555
|
+
positionals: [{ name: 'id', optional: true }],
|
|
556
|
+
flags: [
|
|
557
|
+
{
|
|
558
|
+
name: 'store',
|
|
559
|
+
description: 'Context store id from the local context-store registry',
|
|
560
|
+
takesValue: true,
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
name: 'store-path',
|
|
564
|
+
description: 'Existing local context store root',
|
|
565
|
+
takesValue: true,
|
|
566
|
+
},
|
|
567
|
+
{
|
|
568
|
+
name: 'title',
|
|
569
|
+
description: 'Initiative title',
|
|
570
|
+
takesValue: true,
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
name: 'summary',
|
|
574
|
+
description: 'Initiative summary',
|
|
575
|
+
takesValue: true,
|
|
576
|
+
},
|
|
577
|
+
COMMON_FLAGS.json,
|
|
578
|
+
],
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
name: 'show',
|
|
582
|
+
description: 'Show where an initiative lives and how to read it',
|
|
583
|
+
acceptsPositional: true,
|
|
584
|
+
positionals: [{ name: 'id' }],
|
|
585
|
+
flags: [
|
|
586
|
+
{
|
|
587
|
+
name: 'store',
|
|
588
|
+
description: 'Context store id from the local context-store registry',
|
|
589
|
+
takesValue: true,
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
name: 'store-path',
|
|
593
|
+
description: 'Existing local context store root',
|
|
594
|
+
takesValue: true,
|
|
595
|
+
},
|
|
596
|
+
COMMON_FLAGS.json,
|
|
597
|
+
],
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
name: 'list',
|
|
601
|
+
description: 'List initiatives across registered context stores',
|
|
602
|
+
flags: [
|
|
603
|
+
{
|
|
604
|
+
name: 'store',
|
|
605
|
+
description: 'Context store id from the local context-store registry',
|
|
606
|
+
takesValue: true,
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
name: 'store-path',
|
|
610
|
+
description: 'Existing local context store root',
|
|
611
|
+
takesValue: true,
|
|
612
|
+
},
|
|
613
|
+
COMMON_FLAGS.json,
|
|
614
|
+
],
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
name: 'ls',
|
|
618
|
+
description: 'List initiatives across registered context stores',
|
|
619
|
+
flags: [
|
|
620
|
+
{
|
|
621
|
+
name: 'store',
|
|
622
|
+
description: 'Context store id from the local context-store registry',
|
|
623
|
+
takesValue: true,
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
name: 'store-path',
|
|
627
|
+
description: 'Existing local context store root',
|
|
628
|
+
takesValue: true,
|
|
629
|
+
},
|
|
630
|
+
COMMON_FLAGS.json,
|
|
631
|
+
],
|
|
632
|
+
},
|
|
633
|
+
],
|
|
634
|
+
},
|
|
155
635
|
{
|
|
156
636
|
name: 'feedback',
|
|
157
637
|
description: 'Submit feedback about OpenSpec',
|
|
158
638
|
acceptsPositional: true,
|
|
639
|
+
positionals: [{ name: 'message' }],
|
|
159
640
|
flags: [
|
|
160
641
|
{
|
|
161
642
|
name: 'body',
|
|
@@ -174,6 +655,7 @@ export const COMMAND_REGISTRY = [
|
|
|
174
655
|
description: 'Show a change proposal',
|
|
175
656
|
acceptsPositional: true,
|
|
176
657
|
positionalType: 'change-id',
|
|
658
|
+
positionals: [{ name: 'change-name', type: 'change-id', optional: true }],
|
|
177
659
|
flags: [
|
|
178
660
|
COMMON_FLAGS.json,
|
|
179
661
|
{
|
|
@@ -203,6 +685,7 @@ export const COMMAND_REGISTRY = [
|
|
|
203
685
|
description: 'Validate a change proposal',
|
|
204
686
|
acceptsPositional: true,
|
|
205
687
|
positionalType: 'change-id',
|
|
688
|
+
positionals: [{ name: 'change-name', type: 'change-id', optional: true }],
|
|
206
689
|
flags: [
|
|
207
690
|
COMMON_FLAGS.strict,
|
|
208
691
|
COMMON_FLAGS.jsonValidation,
|
|
@@ -221,6 +704,7 @@ export const COMMAND_REGISTRY = [
|
|
|
221
704
|
description: 'Show a specification',
|
|
222
705
|
acceptsPositional: true,
|
|
223
706
|
positionalType: 'spec-id',
|
|
707
|
+
positionals: [{ name: 'spec-id', type: 'spec-id', optional: true }],
|
|
224
708
|
flags: [
|
|
225
709
|
COMMON_FLAGS.json,
|
|
226
710
|
{
|
|
@@ -256,6 +740,7 @@ export const COMMAND_REGISTRY = [
|
|
|
256
740
|
description: 'Validate a specification',
|
|
257
741
|
acceptsPositional: true,
|
|
258
742
|
positionalType: 'spec-id',
|
|
743
|
+
positionals: [{ name: 'spec-id', type: 'spec-id', optional: true }],
|
|
259
744
|
flags: [
|
|
260
745
|
COMMON_FLAGS.strict,
|
|
261
746
|
COMMON_FLAGS.jsonValidation,
|
|
@@ -274,6 +759,7 @@ export const COMMAND_REGISTRY = [
|
|
|
274
759
|
description: 'Generate completion script for a shell (outputs to stdout)',
|
|
275
760
|
acceptsPositional: true,
|
|
276
761
|
positionalType: 'shell',
|
|
762
|
+
positionals: [{ name: 'shell', type: 'shell', optional: true }],
|
|
277
763
|
flags: [],
|
|
278
764
|
},
|
|
279
765
|
{
|
|
@@ -281,6 +767,7 @@ export const COMMAND_REGISTRY = [
|
|
|
281
767
|
description: 'Install completion script for a shell',
|
|
282
768
|
acceptsPositional: true,
|
|
283
769
|
positionalType: 'shell',
|
|
770
|
+
positionals: [{ name: 'shell', type: 'shell', optional: true }],
|
|
284
771
|
flags: [
|
|
285
772
|
{
|
|
286
773
|
name: 'verbose',
|
|
@@ -293,6 +780,7 @@ export const COMMAND_REGISTRY = [
|
|
|
293
780
|
description: 'Uninstall completion script for a shell',
|
|
294
781
|
acceptsPositional: true,
|
|
295
782
|
positionalType: 'shell',
|
|
783
|
+
positionals: [{ name: 'shell', type: 'shell', optional: true }],
|
|
296
784
|
flags: [
|
|
297
785
|
{
|
|
298
786
|
name: 'yes',
|
|
@@ -331,12 +819,14 @@ export const COMMAND_REGISTRY = [
|
|
|
331
819
|
name: 'get',
|
|
332
820
|
description: 'Get a specific value (raw, scriptable)',
|
|
333
821
|
acceptsPositional: true,
|
|
822
|
+
positionals: [{ name: 'key' }],
|
|
334
823
|
flags: [],
|
|
335
824
|
},
|
|
336
825
|
{
|
|
337
826
|
name: 'set',
|
|
338
827
|
description: 'Set a value (auto-coerce types)',
|
|
339
828
|
acceptsPositional: true,
|
|
829
|
+
positionals: [{ name: 'key' }, { name: 'value' }],
|
|
340
830
|
flags: [
|
|
341
831
|
{
|
|
342
832
|
name: 'string',
|
|
@@ -352,6 +842,7 @@ export const COMMAND_REGISTRY = [
|
|
|
352
842
|
name: 'unset',
|
|
353
843
|
description: 'Remove a key (revert to default)',
|
|
354
844
|
acceptsPositional: true,
|
|
845
|
+
positionals: [{ name: 'key' }],
|
|
355
846
|
flags: [],
|
|
356
847
|
},
|
|
357
848
|
{
|
|
@@ -377,6 +868,8 @@ export const COMMAND_REGISTRY = [
|
|
|
377
868
|
{
|
|
378
869
|
name: 'profile',
|
|
379
870
|
description: 'Configure workflow profile (interactive picker or preset shortcut)',
|
|
871
|
+
acceptsPositional: true,
|
|
872
|
+
positionals: [{ name: 'preset', optional: true }],
|
|
380
873
|
flags: [],
|
|
381
874
|
},
|
|
382
875
|
],
|
|
@@ -391,6 +884,7 @@ export const COMMAND_REGISTRY = [
|
|
|
391
884
|
description: 'Show where a schema resolves from',
|
|
392
885
|
acceptsPositional: true,
|
|
393
886
|
positionalType: 'schema-name',
|
|
887
|
+
positionals: [{ name: 'name', type: 'schema-name', optional: true }],
|
|
394
888
|
flags: [
|
|
395
889
|
COMMON_FLAGS.json,
|
|
396
890
|
{
|
|
@@ -404,6 +898,7 @@ export const COMMAND_REGISTRY = [
|
|
|
404
898
|
description: 'Validate a schema structure and templates',
|
|
405
899
|
acceptsPositional: true,
|
|
406
900
|
positionalType: 'schema-name',
|
|
901
|
+
positionals: [{ name: 'name', type: 'schema-name', optional: true }],
|
|
407
902
|
flags: [
|
|
408
903
|
COMMON_FLAGS.json,
|
|
409
904
|
{
|
|
@@ -417,6 +912,10 @@ export const COMMAND_REGISTRY = [
|
|
|
417
912
|
description: 'Copy an existing schema to project for customization',
|
|
418
913
|
acceptsPositional: true,
|
|
419
914
|
positionalType: 'schema-name',
|
|
915
|
+
positionals: [
|
|
916
|
+
{ name: 'source', type: 'schema-name' },
|
|
917
|
+
{ name: 'name', optional: true },
|
|
918
|
+
],
|
|
420
919
|
flags: [
|
|
421
920
|
COMMON_FLAGS.json,
|
|
422
921
|
{
|
|
@@ -429,6 +928,7 @@ export const COMMAND_REGISTRY = [
|
|
|
429
928
|
name: 'init',
|
|
430
929
|
description: 'Create a new project-local schema',
|
|
431
930
|
acceptsPositional: true,
|
|
931
|
+
positionals: [{ name: 'name' }],
|
|
432
932
|
flags: [
|
|
433
933
|
COMMON_FLAGS.json,
|
|
434
934
|
{
|