planfs-cli 1.3.0 → 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 +58 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +6 -544
- package/dist/cli.js.map +1 -1
- package/dist/commands/ai.d.ts +5 -1
- package/dist/commands/ai.js +93 -16
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/format.d.ts +9 -0
- package/dist/commands/format.js +98 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/inspect.d.ts +9 -0
- package/dist/commands/inspect.js +153 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/show.d.ts +2 -0
- package/dist/commands/show.js +27 -1
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/validate.d.ts +6 -0
- package/dist/commands/validate.js +44 -7
- package/dist/commands/validate.js.map +1 -1
- package/dist/entity-commands.d.ts +5 -0
- package/dist/entity-commands.js +230 -0
- package/dist/entity-commands.js.map +1 -0
- package/dist/planning-commands.d.ts +5 -0
- package/dist/planning-commands.js +259 -0
- package/dist/planning-commands.js.map +1 -0
- package/dist/workflow-commands.d.ts +5 -0
- package/dist/workflow-commands.js +222 -0
- package/dist/workflow-commands.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,15 @@
|
|
|
2
2
|
* Validate command
|
|
3
3
|
* Validates the repository for errors
|
|
4
4
|
*/
|
|
5
|
+
import type { CriterionCheckStatePolicy, SemanticValidationTier } from 'planfs-core';
|
|
5
6
|
export interface ValidateOptions {
|
|
6
7
|
verbose?: boolean;
|
|
7
8
|
strict?: boolean;
|
|
8
9
|
format?: 'text' | 'json';
|
|
10
|
+
semantic?: SemanticValidationTier;
|
|
11
|
+
lifecycle?: boolean;
|
|
12
|
+
criterionCheckState?: CriterionCheckStatePolicy;
|
|
13
|
+
nlp?: boolean;
|
|
14
|
+
language?: string;
|
|
9
15
|
}
|
|
10
16
|
export declare function validateCommand(rootPath: string, options: ValidateOptions): Promise<number>;
|
|
@@ -30,6 +30,16 @@ async function validateCommand(rootPath, options) {
|
|
|
30
30
|
console.log('\nValidating...');
|
|
31
31
|
}
|
|
32
32
|
const result = (0, planfs_core_1.validateRepositoryState)(repo);
|
|
33
|
+
const semanticTier = options.semantic ?? (options.lifecycle === true || options.nlp === true ? 'automation-ready' : undefined);
|
|
34
|
+
const semantic = semanticTier
|
|
35
|
+
? await (0, planfs_core_1.validateSemanticRepository)(repo, {
|
|
36
|
+
tier: semanticTier,
|
|
37
|
+
lifecycle: options.lifecycle,
|
|
38
|
+
criterionCheckState: options.criterionCheckState,
|
|
39
|
+
analysis: options.nlp,
|
|
40
|
+
language: options.language
|
|
41
|
+
})
|
|
42
|
+
: undefined;
|
|
33
43
|
const errors = result.errors.filter(e => e.severity === 'error');
|
|
34
44
|
const warnings = result.errors.filter(e => e.severity === 'warning');
|
|
35
45
|
const severityCounts = { errors: errors.length, warnings: warnings.length };
|
|
@@ -38,20 +48,25 @@ async function validateCommand(rootPath, options) {
|
|
|
38
48
|
counts[category] = (counts[category] ?? 0) + 1;
|
|
39
49
|
return counts;
|
|
40
50
|
}, {});
|
|
51
|
+
const semanticWarnings = semantic?.diagnostics.filter(diagnostic => diagnostic.severity === 'warning') ?? [];
|
|
52
|
+
const semanticErrors = semantic?.diagnostics.filter(diagnostic => diagnostic.severity === 'error') ?? [];
|
|
53
|
+
const overallValid = result.valid && semanticErrors.length === 0;
|
|
54
|
+
const strictFailure = options.strict === true && (warnings.length > 0 || semanticWarnings.length > 0);
|
|
41
55
|
if (format === 'json') {
|
|
42
56
|
writeJson({
|
|
43
|
-
valid:
|
|
57
|
+
valid: overallValid,
|
|
44
58
|
summary,
|
|
45
59
|
severityCounts,
|
|
46
60
|
categoryCounts,
|
|
47
|
-
result
|
|
61
|
+
result,
|
|
62
|
+
...(semantic ? { semantic } : {})
|
|
48
63
|
});
|
|
49
|
-
return
|
|
64
|
+
return overallValid && !strictFailure ? 0 : 1;
|
|
50
65
|
}
|
|
51
|
-
if (!
|
|
66
|
+
if (!overallValid) {
|
|
52
67
|
console.log('✗ Validation failed with errors:\n');
|
|
53
68
|
}
|
|
54
|
-
if (
|
|
69
|
+
if (overallValid)
|
|
55
70
|
console.log('✓ Repository is valid!');
|
|
56
71
|
console.log(`Warnings: ${warnings.length} | Errors: ${errors.length}`);
|
|
57
72
|
if (errors.length > 0) {
|
|
@@ -64,10 +79,12 @@ async function validateCommand(rootPath, options) {
|
|
|
64
79
|
for (const warning of warnings)
|
|
65
80
|
printDiagnostic('⚠', warning, options.verbose);
|
|
66
81
|
}
|
|
67
|
-
if (
|
|
82
|
+
if (semantic)
|
|
83
|
+
printSemanticValidation(semantic, options.verbose);
|
|
84
|
+
if (strictFailure && errors.length === 0 && semanticErrors.length === 0) {
|
|
68
85
|
console.log('✗ Strict validation failed because warnings are present.');
|
|
69
86
|
}
|
|
70
|
-
return errors.length > 0 ||
|
|
87
|
+
return errors.length > 0 || semanticErrors.length > 0 || strictFailure ? 1 : 0;
|
|
71
88
|
}
|
|
72
89
|
catch (error) {
|
|
73
90
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -109,4 +126,24 @@ function printDiagnostic(symbol, diagnostic, verbose) {
|
|
|
109
126
|
function writeJson(output) {
|
|
110
127
|
console.log(JSON.stringify(output, null, 2));
|
|
111
128
|
}
|
|
129
|
+
function printSemanticValidation(semantic, verbose) {
|
|
130
|
+
console.log(`\nSemantic content (${semantic.tier}${semantic.lifecycle ? ', lifecycle' : ''}${semantic.analysisEnabled ? ', local analysis' : ''}):`);
|
|
131
|
+
console.log(` Info: ${semantic.severityCounts.info} | Warnings: ${semantic.severityCounts.warning} | Errors: ${semantic.severityCounts.error}`);
|
|
132
|
+
if (semantic.diagnostics.length === 0) {
|
|
133
|
+
console.log(' ✓ No semantic content diagnostics.');
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
for (const diagnostic of semantic.diagnostics)
|
|
137
|
+
printSemanticDiagnostic(diagnostic, verbose);
|
|
138
|
+
}
|
|
139
|
+
function printSemanticDiagnostic(diagnostic, verbose) {
|
|
140
|
+
const symbol = diagnostic.severity === 'error' ? '✗' : diagnostic.severity === 'warning' ? '⚠' : 'ℹ';
|
|
141
|
+
const location = diagnostic.range
|
|
142
|
+
? `:${diagnostic.range.start.line}:${diagnostic.range.start.column}`
|
|
143
|
+
: '';
|
|
144
|
+
console.log(` ${symbol} [${diagnostic.entityId}] ${diagnostic.code}: ${diagnostic.message}`);
|
|
145
|
+
console.log(` ${diagnostic.filePath}${location}`);
|
|
146
|
+
if (verbose)
|
|
147
|
+
console.log(` Repair: ${diagnostic.repair.summary}`);
|
|
148
|
+
}
|
|
112
149
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI command registration.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerEntityCommands = registerEntityCommands;
|
|
7
|
+
const next_1 = require("./commands/next");
|
|
8
|
+
const list_1 = require("./commands/list");
|
|
9
|
+
const show_1 = require("./commands/show");
|
|
10
|
+
const inspect_1 = require("./commands/inspect");
|
|
11
|
+
const create_1 = require("./commands/create");
|
|
12
|
+
function registerEntityCommands(cli) {
|
|
13
|
+
return cli
|
|
14
|
+
.command('next', 'List ranked next-work candidates', (y) => y
|
|
15
|
+
.option('assignee', {
|
|
16
|
+
type: 'string',
|
|
17
|
+
description: 'Filter by assignee'
|
|
18
|
+
})
|
|
19
|
+
.option('epic', {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Filter by epic'
|
|
22
|
+
})
|
|
23
|
+
.option('milestone', {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Filter by milestone'
|
|
26
|
+
})
|
|
27
|
+
.option('tag', {
|
|
28
|
+
type: 'array',
|
|
29
|
+
string: true,
|
|
30
|
+
description: 'Filter by tag'
|
|
31
|
+
})
|
|
32
|
+
.option('status', {
|
|
33
|
+
type: 'array',
|
|
34
|
+
string: true,
|
|
35
|
+
choices: ['todo', 'in-progress', 'review', 'done'],
|
|
36
|
+
description: 'Filter by status'
|
|
37
|
+
})
|
|
38
|
+
.option('include-blocked', {
|
|
39
|
+
type: 'boolean',
|
|
40
|
+
default: false,
|
|
41
|
+
description: 'Include blocked and missing-dependency tasks'
|
|
42
|
+
})
|
|
43
|
+
.option('explain', {
|
|
44
|
+
type: 'boolean',
|
|
45
|
+
default: false,
|
|
46
|
+
description: 'Show all ranking reasons'
|
|
47
|
+
})
|
|
48
|
+
.option('limit', {
|
|
49
|
+
type: 'number',
|
|
50
|
+
description: 'Maximum number of candidates to show'
|
|
51
|
+
})
|
|
52
|
+
.option('format', {
|
|
53
|
+
type: 'string',
|
|
54
|
+
choices: ['text', 'json'],
|
|
55
|
+
default: 'text',
|
|
56
|
+
description: 'Output format'
|
|
57
|
+
}), async (args) => {
|
|
58
|
+
const exitCode = await (0, next_1.nextCommand)(process.cwd(), {
|
|
59
|
+
assignee: args.assignee,
|
|
60
|
+
epic: args.epic,
|
|
61
|
+
milestone: args.milestone,
|
|
62
|
+
tag: args.tag,
|
|
63
|
+
status: args.status,
|
|
64
|
+
includeBlocked: args.includeBlocked,
|
|
65
|
+
explain: args.explain,
|
|
66
|
+
limit: args.limit,
|
|
67
|
+
format: args.format
|
|
68
|
+
});
|
|
69
|
+
process.exit(exitCode);
|
|
70
|
+
})
|
|
71
|
+
.command('list [type]', 'List entities', (y) => y
|
|
72
|
+
.positional('type', {
|
|
73
|
+
describe: 'Entity type to list',
|
|
74
|
+
choices: ['tasks', 'epics', 'milestones', 'decisions'],
|
|
75
|
+
default: 'tasks'
|
|
76
|
+
})
|
|
77
|
+
.option('status', {
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'Filter by status'
|
|
80
|
+
})
|
|
81
|
+
.option('assignee', {
|
|
82
|
+
type: 'string',
|
|
83
|
+
description: 'Filter by assignee'
|
|
84
|
+
})
|
|
85
|
+
.option('epic', {
|
|
86
|
+
type: 'string',
|
|
87
|
+
description: 'Filter by epic'
|
|
88
|
+
})
|
|
89
|
+
.option('format', {
|
|
90
|
+
type: 'string',
|
|
91
|
+
choices: ['table', 'json'],
|
|
92
|
+
default: 'table',
|
|
93
|
+
description: 'Output format'
|
|
94
|
+
}), async (args) => {
|
|
95
|
+
const exitCode = await (0, list_1.listCommand)(process.cwd(), {
|
|
96
|
+
type: args.type,
|
|
97
|
+
status: args.status,
|
|
98
|
+
assignee: args.assignee,
|
|
99
|
+
epic: args.epic,
|
|
100
|
+
format: args.format
|
|
101
|
+
});
|
|
102
|
+
process.exit(exitCode);
|
|
103
|
+
})
|
|
104
|
+
.command('show <id>', 'Show entity details', (y) => y
|
|
105
|
+
.positional('id', {
|
|
106
|
+
describe: 'Entity ID to show'
|
|
107
|
+
})
|
|
108
|
+
.option('format', {
|
|
109
|
+
type: 'string',
|
|
110
|
+
choices: ['pretty', 'json'],
|
|
111
|
+
default: 'pretty'
|
|
112
|
+
})
|
|
113
|
+
.option('nlp', {
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
default: false,
|
|
116
|
+
description: 'Enable local advisory prose analysis'
|
|
117
|
+
})
|
|
118
|
+
.option('language', {
|
|
119
|
+
type: 'string',
|
|
120
|
+
default: 'en',
|
|
121
|
+
description: 'Language for advisory prose analysis'
|
|
122
|
+
}), async (args) => {
|
|
123
|
+
const exitCode = await (0, show_1.showCommand)(process.cwd(), args.id, {
|
|
124
|
+
format: args.format,
|
|
125
|
+
nlp: args.nlp,
|
|
126
|
+
language: args.language
|
|
127
|
+
});
|
|
128
|
+
process.exit(exitCode);
|
|
129
|
+
})
|
|
130
|
+
.command('inspect <id>', 'Inspect normalized semantic content and advisory suggestions', (y) => y
|
|
131
|
+
.positional('id', {
|
|
132
|
+
describe: 'Entity ID to inspect'
|
|
133
|
+
})
|
|
134
|
+
.option('format', {
|
|
135
|
+
type: 'string',
|
|
136
|
+
choices: ['pretty', 'json'],
|
|
137
|
+
default: 'pretty'
|
|
138
|
+
})
|
|
139
|
+
.option('view', {
|
|
140
|
+
type: 'string',
|
|
141
|
+
choices: [
|
|
142
|
+
'all',
|
|
143
|
+
'acceptance-criteria',
|
|
144
|
+
'findings',
|
|
145
|
+
'sections',
|
|
146
|
+
'mentions',
|
|
147
|
+
'relationships',
|
|
148
|
+
'raw'
|
|
149
|
+
],
|
|
150
|
+
default: 'all',
|
|
151
|
+
description: 'Select a focused semantic view'
|
|
152
|
+
})
|
|
153
|
+
.option('nlp', {
|
|
154
|
+
type: 'boolean',
|
|
155
|
+
default: true,
|
|
156
|
+
description: 'Run local advisory analysis (disable with --no-nlp)'
|
|
157
|
+
})
|
|
158
|
+
.option('language', {
|
|
159
|
+
type: 'string',
|
|
160
|
+
default: 'en',
|
|
161
|
+
description: 'Language for local advisory analysis'
|
|
162
|
+
}), async (args) => {
|
|
163
|
+
const exitCode = await (0, inspect_1.inspectCommand)(process.cwd(), args.id, {
|
|
164
|
+
format: args.format,
|
|
165
|
+
view: args.view,
|
|
166
|
+
nlp: args.nlp,
|
|
167
|
+
language: args.language
|
|
168
|
+
});
|
|
169
|
+
process.exitCode = exitCode;
|
|
170
|
+
})
|
|
171
|
+
.command('create <type>', 'Create new entity', (y) => y
|
|
172
|
+
.positional('type', {
|
|
173
|
+
describe: 'Entity type to create',
|
|
174
|
+
choices: ['task', 'epic', 'milestone', 'decision']
|
|
175
|
+
})
|
|
176
|
+
.option('title', {
|
|
177
|
+
alias: 't',
|
|
178
|
+
type: 'string',
|
|
179
|
+
description: 'Entity title'
|
|
180
|
+
})
|
|
181
|
+
.option('status', {
|
|
182
|
+
type: 'string',
|
|
183
|
+
description: 'Initial status'
|
|
184
|
+
})
|
|
185
|
+
.option('priority', {
|
|
186
|
+
type: 'string',
|
|
187
|
+
description: 'Priority (for tasks)'
|
|
188
|
+
})
|
|
189
|
+
.option('assignee', {
|
|
190
|
+
type: 'string',
|
|
191
|
+
description: 'Assignee'
|
|
192
|
+
})
|
|
193
|
+
.option('owner', {
|
|
194
|
+
type: 'string',
|
|
195
|
+
description: 'Owner for epics and milestones'
|
|
196
|
+
})
|
|
197
|
+
.option('description', {
|
|
198
|
+
type: 'string',
|
|
199
|
+
description: 'Description/body for epics and milestones'
|
|
200
|
+
})
|
|
201
|
+
.option('target-date', {
|
|
202
|
+
type: 'string',
|
|
203
|
+
description: 'Target date for milestones'
|
|
204
|
+
})
|
|
205
|
+
.option('dry-run', {
|
|
206
|
+
type: 'boolean',
|
|
207
|
+
default: false,
|
|
208
|
+
description: 'Preview created Markdown without writing files'
|
|
209
|
+
})
|
|
210
|
+
.option('format', {
|
|
211
|
+
type: 'string',
|
|
212
|
+
choices: ['text', 'json'],
|
|
213
|
+
default: 'text',
|
|
214
|
+
description: 'Output format'
|
|
215
|
+
}), async (args) => {
|
|
216
|
+
const exitCode = await (0, create_1.createCommand)(process.cwd(), args.type, {
|
|
217
|
+
title: args.title,
|
|
218
|
+
status: args.status,
|
|
219
|
+
priority: args.priority,
|
|
220
|
+
assignee: args.assignee,
|
|
221
|
+
owner: args.owner,
|
|
222
|
+
description: args.description,
|
|
223
|
+
targetDate: args.targetDate,
|
|
224
|
+
dryRun: args.dryRun,
|
|
225
|
+
format: args.format
|
|
226
|
+
});
|
|
227
|
+
process.exit(exitCode);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=entity-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-commands.js","sourceRoot":"","sources":["../src/entity-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CLI command registration.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerPlanningCommands = registerPlanningCommands;
|
|
7
|
+
const ai_1 = require("./commands/ai");
|
|
8
|
+
const init_1 = require("./commands/init");
|
|
9
|
+
const validate_1 = require("./commands/validate");
|
|
10
|
+
const doctor_1 = require("./commands/doctor");
|
|
11
|
+
const migrate_1 = require("./commands/migrate");
|
|
12
|
+
const format_1 = require("./commands/format");
|
|
13
|
+
function registerPlanningCommands(cli) {
|
|
14
|
+
return cli
|
|
15
|
+
.command('ai <action>', 'AI-oriented planning summary, semantic context, and update helpers', (y) => y
|
|
16
|
+
.positional('action', {
|
|
17
|
+
describe: 'AI helper to run',
|
|
18
|
+
choices: ['summary', 'context', 'update-task', 'bulk-update-tasks', 'initialize']
|
|
19
|
+
})
|
|
20
|
+
.option('id', {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Entity ID for context or task ID to update'
|
|
23
|
+
})
|
|
24
|
+
.option('ids', {
|
|
25
|
+
type: 'array',
|
|
26
|
+
string: true,
|
|
27
|
+
description: 'Task IDs to bulk update, comma-separated or repeated'
|
|
28
|
+
})
|
|
29
|
+
.option('assignee', {
|
|
30
|
+
type: 'string',
|
|
31
|
+
description: 'Scope summary or set task assignee'
|
|
32
|
+
})
|
|
33
|
+
.option('epic', {
|
|
34
|
+
type: 'string',
|
|
35
|
+
description: 'Scope summary or set task epic'
|
|
36
|
+
})
|
|
37
|
+
.option('milestone', {
|
|
38
|
+
type: 'string',
|
|
39
|
+
description: 'Scope summary or set task milestone'
|
|
40
|
+
})
|
|
41
|
+
.option('estimate', {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Set task estimate'
|
|
44
|
+
})
|
|
45
|
+
.option('status', {
|
|
46
|
+
type: 'array',
|
|
47
|
+
string: true,
|
|
48
|
+
choices: ['todo', 'in-progress', 'review', 'done'],
|
|
49
|
+
description: 'Scope summary by status or set task status'
|
|
50
|
+
})
|
|
51
|
+
.option('priority', {
|
|
52
|
+
type: 'string',
|
|
53
|
+
choices: ['low', 'medium', 'high', 'critical'],
|
|
54
|
+
description: 'Set task priority'
|
|
55
|
+
})
|
|
56
|
+
.option('refinement-state', {
|
|
57
|
+
type: 'array',
|
|
58
|
+
string: true,
|
|
59
|
+
choices: ['captured', 'needs-refinement', 'ready', 'deferred', 'discarded'],
|
|
60
|
+
description: 'Scope summary by refinement state or set task refinement state'
|
|
61
|
+
})
|
|
62
|
+
.option('due-date', {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Set task due date'
|
|
65
|
+
})
|
|
66
|
+
.option('tags', {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Set task tags as a comma-separated list'
|
|
69
|
+
})
|
|
70
|
+
.option('limit', {
|
|
71
|
+
type: 'number',
|
|
72
|
+
description: 'Maximum number of summary items per list'
|
|
73
|
+
})
|
|
74
|
+
.option('only', {
|
|
75
|
+
type: 'string',
|
|
76
|
+
choices: ['open', 'ready', 'blocked', 'review', 'stale', 'recent'],
|
|
77
|
+
description: 'Return only one planning summary section'
|
|
78
|
+
})
|
|
79
|
+
.option('compact', {
|
|
80
|
+
type: 'boolean',
|
|
81
|
+
default: false,
|
|
82
|
+
description: 'Emit minified JSON for lower-overhead agent context'
|
|
83
|
+
})
|
|
84
|
+
.option('nlp', {
|
|
85
|
+
type: 'boolean',
|
|
86
|
+
default: false,
|
|
87
|
+
description: 'Enable local advisory prose analysis for semantic context'
|
|
88
|
+
})
|
|
89
|
+
.option('language', {
|
|
90
|
+
type: 'string',
|
|
91
|
+
default: 'en',
|
|
92
|
+
description: 'Language for advisory semantic-context analysis'
|
|
93
|
+
})
|
|
94
|
+
.option('expected-updated-at', {
|
|
95
|
+
type: 'string',
|
|
96
|
+
description: 'Refuse a task update if updatedAt changed since preview (use none for an unset timestamp)'
|
|
97
|
+
})
|
|
98
|
+
.option('command', {
|
|
99
|
+
type: 'string',
|
|
100
|
+
description: 'CLI command written by ai initialize (default: planfs)'
|
|
101
|
+
})
|
|
102
|
+
.option('dry-run', {
|
|
103
|
+
type: 'boolean',
|
|
104
|
+
default: false,
|
|
105
|
+
description: 'Preview task updates or awareness initialization without writing files'
|
|
106
|
+
})
|
|
107
|
+
.option('file', {
|
|
108
|
+
type: 'string',
|
|
109
|
+
default: 'AGENTS.md',
|
|
110
|
+
description: 'Agent instruction file to create or update'
|
|
111
|
+
})
|
|
112
|
+
.option('format', {
|
|
113
|
+
type: 'string',
|
|
114
|
+
choices: ['json', 'text'],
|
|
115
|
+
default: 'json',
|
|
116
|
+
description: 'Output format'
|
|
117
|
+
}), async (args) => {
|
|
118
|
+
const exitCode = await (0, ai_1.aiCommand)(process.cwd(), args.action, {
|
|
119
|
+
id: args.id,
|
|
120
|
+
ids: args.ids,
|
|
121
|
+
assignee: args.assignee,
|
|
122
|
+
epic: args.epic,
|
|
123
|
+
milestone: args.milestone,
|
|
124
|
+
estimate: args.estimate,
|
|
125
|
+
status: args.status,
|
|
126
|
+
priority: args.priority,
|
|
127
|
+
refinementState: args.refinementState,
|
|
128
|
+
dueDate: args.dueDate,
|
|
129
|
+
tags: args.tags,
|
|
130
|
+
limit: args.limit,
|
|
131
|
+
dryRun: args.dryRun,
|
|
132
|
+
file: args.file,
|
|
133
|
+
format: args.format,
|
|
134
|
+
only: args.only,
|
|
135
|
+
compact: args.compact,
|
|
136
|
+
nlp: args.nlp,
|
|
137
|
+
language: args.language,
|
|
138
|
+
expectedUpdatedAt: args.expectedUpdatedAt,
|
|
139
|
+
command: args.command
|
|
140
|
+
});
|
|
141
|
+
process.exit(exitCode);
|
|
142
|
+
})
|
|
143
|
+
.command('init', 'Initialize PlanFS repository structure', (y) => y.option('format', {
|
|
144
|
+
type: 'string',
|
|
145
|
+
choices: ['text', 'json'],
|
|
146
|
+
default: 'text',
|
|
147
|
+
description: 'Output format'
|
|
148
|
+
}), async (args) => {
|
|
149
|
+
const exitCode = await (0, init_1.initCommand)(process.cwd(), {
|
|
150
|
+
format: args.format
|
|
151
|
+
});
|
|
152
|
+
process.exit(exitCode);
|
|
153
|
+
})
|
|
154
|
+
.command('validate', 'Validate the PlanFS repository', (y) => y
|
|
155
|
+
.option('verbose', {
|
|
156
|
+
alias: 'v',
|
|
157
|
+
type: 'boolean',
|
|
158
|
+
description: 'Show detailed output',
|
|
159
|
+
default: false
|
|
160
|
+
})
|
|
161
|
+
.option('strict', {
|
|
162
|
+
type: 'boolean',
|
|
163
|
+
default: false,
|
|
164
|
+
description: 'Fail when validation warnings are present'
|
|
165
|
+
})
|
|
166
|
+
.option('semantic', {
|
|
167
|
+
type: 'string',
|
|
168
|
+
choices: ['baseline', 'automation-ready'],
|
|
169
|
+
description: 'Explicitly validate a semantic Markdown content tier'
|
|
170
|
+
})
|
|
171
|
+
.option('lifecycle', {
|
|
172
|
+
type: 'boolean',
|
|
173
|
+
default: false,
|
|
174
|
+
description: 'Add read-only lifecycle-sensitive semantic policy checks'
|
|
175
|
+
})
|
|
176
|
+
.option('criterion-check-state', {
|
|
177
|
+
type: 'string',
|
|
178
|
+
choices: ['ignore', 'info', 'warning', 'error'],
|
|
179
|
+
default: 'warning',
|
|
180
|
+
description: 'Severity for ordinary criteria without [ ] or [x] markers'
|
|
181
|
+
})
|
|
182
|
+
.option('nlp', {
|
|
183
|
+
type: 'boolean',
|
|
184
|
+
default: false,
|
|
185
|
+
description: 'Include optional local advisory prose analysis'
|
|
186
|
+
})
|
|
187
|
+
.option('language', {
|
|
188
|
+
type: 'string',
|
|
189
|
+
default: 'en',
|
|
190
|
+
description: 'Language for optional advisory prose analysis'
|
|
191
|
+
})
|
|
192
|
+
.option('format', {
|
|
193
|
+
type: 'string',
|
|
194
|
+
choices: ['text', 'json'],
|
|
195
|
+
default: 'text',
|
|
196
|
+
description: 'Output format'
|
|
197
|
+
}), async (args) => {
|
|
198
|
+
const exitCode = await (0, validate_1.validateCommand)(process.cwd(), {
|
|
199
|
+
verbose: args.verbose,
|
|
200
|
+
strict: args.strict,
|
|
201
|
+
format: args.format,
|
|
202
|
+
semantic: args.semantic,
|
|
203
|
+
lifecycle: args.lifecycle,
|
|
204
|
+
criterionCheckState: args.criterionCheckState,
|
|
205
|
+
nlp: args.nlp,
|
|
206
|
+
language: args.language
|
|
207
|
+
});
|
|
208
|
+
process.exitCode = exitCode;
|
|
209
|
+
})
|
|
210
|
+
.command('doctor', 'Report actionable plan-health issues separately from historical references', (y) => y.option('format', { type: 'string', choices: ['text', 'json'], default: 'text' }), async (args) => {
|
|
211
|
+
process.exit(await (0, doctor_1.doctorCommand)(process.cwd(), { format: args.format }));
|
|
212
|
+
})
|
|
213
|
+
.command('migrate', 'Preview or apply a PlanFS format migration', (y) => y.option('apply', { type: 'boolean', default: false }).option('format', { type: 'string', choices: ['text', 'json'], default: 'text' }), async (args) => {
|
|
214
|
+
process.exit(await (0, migrate_1.migrateCommand)(process.cwd(), { apply: args.apply, format: args.format }));
|
|
215
|
+
})
|
|
216
|
+
.command('format [ids..]', 'Check, preview, or explicitly apply conservative semantic Markdown formatting', (y) => y
|
|
217
|
+
.positional('ids', {
|
|
218
|
+
type: 'string',
|
|
219
|
+
array: true,
|
|
220
|
+
description: 'Entity IDs to format (comma-separated or repeated)'
|
|
221
|
+
})
|
|
222
|
+
.option('all', {
|
|
223
|
+
type: 'boolean',
|
|
224
|
+
default: false,
|
|
225
|
+
description: 'Select every active repository entity'
|
|
226
|
+
})
|
|
227
|
+
.option('check', {
|
|
228
|
+
type: 'boolean',
|
|
229
|
+
default: false,
|
|
230
|
+
description: 'Exit non-zero when a selected file needs formatting'
|
|
231
|
+
})
|
|
232
|
+
.option('apply', {
|
|
233
|
+
type: 'boolean',
|
|
234
|
+
default: false,
|
|
235
|
+
description: 'Apply a previously previewed snapshot'
|
|
236
|
+
})
|
|
237
|
+
.option('expected-fingerprint', {
|
|
238
|
+
type: 'array',
|
|
239
|
+
string: true,
|
|
240
|
+
description: 'Required apply token: sha256:... for one entity or ENTITY-ID=sha256:... for a batch'
|
|
241
|
+
})
|
|
242
|
+
.option('format', {
|
|
243
|
+
type: 'string',
|
|
244
|
+
choices: ['text', 'json'],
|
|
245
|
+
default: 'text',
|
|
246
|
+
description: 'Output format'
|
|
247
|
+
}), async (args) => {
|
|
248
|
+
const exitCode = await (0, format_1.formatCommand)(process.cwd(), {
|
|
249
|
+
ids: args.ids,
|
|
250
|
+
all: args.all,
|
|
251
|
+
check: args.check,
|
|
252
|
+
apply: args.apply,
|
|
253
|
+
expectedFingerprint: args.expectedFingerprint,
|
|
254
|
+
format: args.format
|
|
255
|
+
});
|
|
256
|
+
process.exitCode = exitCode;
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=planning-commands.js.map
|