scene-capability-engine 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +233 -233
- package/LICENSE +2 -2
- package/README.md +8 -11
- package/README.zh.md +7 -10
- package/bin/kse.js +1 -1
- package/bin/sce.js +1 -1
- package/bin/sco.js +1 -1
- package/docs/331-poc-adaptation-roadmap.md +25 -25
- package/docs/331-poc-dual-track-integration-guide.md +26 -26
- package/docs/331-poc-weekly-delivery-checklist.md +8 -8
- package/docs/OFFLINE_INSTALL.md +10 -10
- package/docs/README.md +24 -24
- package/docs/adopt-migration-guide.md +51 -51
- package/docs/adoption-guide.md +56 -56
- package/docs/agent-hooks-analysis.md +52 -52
- package/docs/architecture.md +6 -6
- package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +4 -4
- package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +9 -9
- package/docs/articles/ai-driven-development-philosophy-and-practice.md +10 -10
- package/docs/autonomous-control-guide.md +89 -89
- package/docs/command-reference.md +11 -11
- package/docs/community.md +4 -4
- package/docs/cross-tool-guide.md +47 -47
- package/docs/developer-guide.md +5 -5
- package/docs/document-governance.md +91 -91
- package/docs/environment-management-guide.md +53 -53
- package/docs/examples/add-export-command/design.md +2 -2
- package/docs/examples/add-export-command/requirements.md +5 -5
- package/docs/examples/add-export-command/tasks.md +2 -2
- package/docs/faq.md +69 -69
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +9 -9
- package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +3 -3
- package/docs/integration-modes.md +60 -60
- package/docs/integration-philosophy.md +48 -48
- package/docs/knowledge-management-guide.md +21 -21
- package/docs/manual-workflows-guide.md +20 -20
- package/docs/moqui-capability-matrix.md +22 -22
- package/docs/moqui-template-core-library-playbook.md +20 -20
- package/docs/multi-agent-coordination-guide.md +19 -19
- package/docs/multi-repo-management-guide.md +93 -93
- package/docs/quick-start-with-ai-tools.md +36 -36
- package/docs/quick-start.md +16 -16
- package/docs/release-checklist.md +7 -7
- package/docs/releases/v1.46.2-validation.md +1 -1
- package/docs/releases/v1.46.2.md +10 -10
- package/docs/scene-runtime-guide.md +42 -42
- package/docs/spec-collaboration-guide.md +43 -43
- package/docs/spec-locking-guide.md +26 -26
- package/docs/spec-numbering-guide.md +6 -6
- package/docs/spec-workflow.md +25 -25
- package/docs/steering-strategy-guide.md +36 -36
- package/docs/team-collaboration-guide.md +23 -23
- package/docs/testing-strategy.md +2 -2
- package/docs/tools/claude-guide.md +26 -26
- package/docs/tools/cursor-guide.md +31 -31
- package/docs/tools/generic-guide.md +22 -22
- package/docs/tools/kiro-guide.md +43 -43
- package/docs/tools/vscode-guide.md +18 -18
- package/docs/tools/windsurf-guide.md +50 -50
- package/docs/troubleshooting.md +116 -116
- package/docs/upgrade-guide.md +49 -49
- package/docs/value-observability-guide.md +6 -6
- package/docs/zh/README.md +22 -22
- package/docs/zh/quick-start.md +34 -34
- package/docs/zh/release-checklist.md +6 -6
- package/docs/zh/releases/v1.46.2-validation.md +1 -1
- package/docs/zh/releases/v1.46.2.md +9 -9
- package/docs/zh/spec-numbering-guide.md +6 -6
- package/docs/zh/tools/claude-guide.md +14 -14
- package/docs/zh/tools/cursor-guide.md +18 -18
- package/docs/zh/tools/generic-guide.md +40 -40
- package/docs/zh/tools/kiro-guide.md +50 -50
- package/docs/zh/tools/vscode-guide.md +20 -20
- package/docs/zh/tools/windsurf-guide.md +49 -49
- package/docs/zh/value-observability-guide.md +6 -6
- package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +4 -4
- package/lib/adoption/adoption-logger.js +1 -1
- package/lib/adoption/adoption-strategy.js +3 -3
- package/lib/adoption/detection-engine.js +1 -1
- package/lib/adoption/error-formatter.js +17 -17
- package/lib/adoption/progress-reporter.js +2 -2
- package/lib/adoption/smart-orchestrator.js +2 -2
- package/lib/adoption/strategy-selector.js +2 -2
- package/lib/adoption/summary-generator.js +3 -3
- package/lib/auto/autonomous-engine.js +2 -2
- package/lib/auto/close-loop-runner.js +9 -9
- package/lib/backup/backup-system.js +2 -2
- package/lib/collab/collab-manager.js +2 -2
- package/lib/commands/adopt.js +16 -16
- package/lib/commands/auto.js +93 -93
- package/lib/commands/collab.js +8 -8
- package/lib/commands/docs.js +26 -26
- package/lib/commands/doctor.js +2 -2
- package/lib/commands/env.js +14 -14
- package/lib/commands/knowledge.js +13 -13
- package/lib/commands/lock.js +6 -6
- package/lib/commands/ops.js +19 -19
- package/lib/commands/orchestrate.js +5 -5
- package/lib/commands/prompt.js +3 -3
- package/lib/commands/rollback.js +4 -4
- package/lib/commands/scene.js +29 -29
- package/lib/commands/spec-bootstrap.js +1 -1
- package/lib/commands/spec-gate.js +1 -1
- package/lib/commands/spec-pipeline.js +1 -1
- package/lib/commands/task.js +1 -1
- package/lib/commands/templates.js +27 -27
- package/lib/commands/upgrade.js +8 -8
- package/lib/commands/value.js +4 -4
- package/lib/commands/watch.js +9 -9
- package/lib/commands/workflows.js +5 -5
- package/lib/commands/workspace-multi.js +17 -17
- package/lib/commands/workspace.js +5 -5
- package/lib/context/context-exporter.js +1 -1
- package/lib/context/prompt-generator.js +1 -1
- package/lib/data/moqui-capability-lexicon.json +1 -1
- package/lib/environment/environment-manager.js +1 -1
- package/lib/gitignore/gitignore-detector.js +4 -4
- package/lib/gitignore/gitignore-integration.js +2 -2
- package/lib/gitignore/gitignore-transformer.js +3 -3
- package/lib/gitignore/layered-rules-template.js +2 -2
- package/lib/governance/diagnostic-engine.js +4 -4
- package/lib/governance/doc-reference-checker.js +1 -1
- package/lib/governance/hooks-manager.js +5 -5
- package/lib/governance/reporter.js +1 -1
- package/lib/knowledge/knowledge-manager.js +6 -6
- package/lib/orchestrator/agent-spawner.js +1 -1
- package/lib/orchestrator/bootstrap-prompt-builder.js +2 -2
- package/lib/repo/config-manager.js +2 -2
- package/lib/repo/handlers/init-handler.js +3 -3
- package/lib/scene-runtime/audit-emitter.js +2 -2
- package/lib/scene-runtime/binding-plugin-loader.js +1 -1
- package/lib/scene-runtime/moqui-adapter.js +2 -2
- package/lib/scene-runtime/moqui-extractor.js +3 -3
- package/lib/scene-runtime/scene-loader.js +3 -3
- package/lib/scene-runtime/scene-template-linter.js +1 -1
- package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +1 -1
- package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +1 -1
- package/lib/spec/multi-spec-orchestrate.js +1 -1
- package/lib/spec-gate/rules/default-rules.js +1 -1
- package/lib/steering/adoption-config.js +1 -1
- package/lib/steering/compliance-auto-fixer.js +1 -1
- package/lib/steering/compliance-cache.js +3 -3
- package/lib/steering/compliance-error-reporter.js +1 -1
- package/lib/steering/index.js +1 -1
- package/lib/steering/steering-manager.js +7 -7
- package/lib/task/task-claimer.js +2 -1
- package/lib/templates/metadata-collector.js +6 -6
- package/lib/templates/template-creator.js +2 -2
- package/lib/templates/template-exporter.js +12 -12
- package/lib/upgrade/migration-engine.js +4 -4
- package/lib/utils/tool-detector.js +25 -25
- package/lib/utils/validation.js +3 -3
- package/lib/version/version-checker.js +13 -13
- package/lib/version/version-manager.js +7 -7
- package/lib/watch/presets.js +4 -4
- package/lib/workspace/multi/path-utils.js +1 -1
- package/lib/workspace/multi/workspace-context-resolver.js +9 -9
- package/lib/workspace/multi/workspace-registry.js +2 -2
- package/lib/workspace/multi/workspace-state-manager.js +1 -1
- package/lib/workspace/multi/workspace.js +1 -1
- package/lib/workspace/workspace-sync.js +1 -1
- package/locales/en.json +1 -1
- package/locales/zh.json +1 -1
- package/package.json +3 -5
- package/template/.kiro/README.md +40 -40
- package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +3 -3
- package/template/.kiro/steering/CORE_PRINCIPLES.md +3 -3
- package/template/.kiro/steering/ENVIRONMENT.md +2 -2
- package/template/README.md +3 -3
- /package/bin/{kiro-spec-engine.js → scene-capability-engine.js} +0 -0
package/lib/commands/collab.js
CHANGED
|
@@ -12,7 +12,7 @@ function registerCollabCommands(program) {
|
|
|
12
12
|
.command('collab')
|
|
13
13
|
.description('Manage Spec-level collaboration for parallel development');
|
|
14
14
|
|
|
15
|
-
//
|
|
15
|
+
// sce collab init
|
|
16
16
|
collab
|
|
17
17
|
.command('init <master-spec>')
|
|
18
18
|
.description('Initialize a Master Spec with Sub-Specs')
|
|
@@ -61,7 +61,7 @@ function registerCollabCommands(program) {
|
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
-
//
|
|
64
|
+
// sce collab status
|
|
65
65
|
collab
|
|
66
66
|
.command('status [spec-name]')
|
|
67
67
|
.description('Display collaboration status for all specs or a specific spec')
|
|
@@ -123,10 +123,10 @@ function registerCollabCommands(program) {
|
|
|
123
123
|
}
|
|
124
124
|
});
|
|
125
125
|
|
|
126
|
-
//
|
|
126
|
+
// sce collab assign
|
|
127
127
|
collab
|
|
128
|
-
.command('assign <spec-name> <
|
|
129
|
-
.description('Assign a spec to a
|
|
128
|
+
.command('assign <spec-name> <SCE-instance>')
|
|
129
|
+
.description('Assign a spec to a SCE instance')
|
|
130
130
|
.action(async (specName, kiroInstance) => {
|
|
131
131
|
try {
|
|
132
132
|
const workspaceRoot = process.cwd();
|
|
@@ -146,7 +146,7 @@ function registerCollabCommands(program) {
|
|
|
146
146
|
}
|
|
147
147
|
});
|
|
148
148
|
|
|
149
|
-
//
|
|
149
|
+
// sce collab verify
|
|
150
150
|
collab
|
|
151
151
|
.command('verify <spec-name>')
|
|
152
152
|
.description('Verify interface contracts for a spec')
|
|
@@ -181,7 +181,7 @@ function registerCollabCommands(program) {
|
|
|
181
181
|
}
|
|
182
182
|
});
|
|
183
183
|
|
|
184
|
-
//
|
|
184
|
+
// sce collab integrate
|
|
185
185
|
collab
|
|
186
186
|
.command('integrate <spec-names...>')
|
|
187
187
|
.description('Run integration tests across specs')
|
|
@@ -216,7 +216,7 @@ function registerCollabCommands(program) {
|
|
|
216
216
|
}
|
|
217
217
|
});
|
|
218
218
|
|
|
219
|
-
//
|
|
219
|
+
// sce collab migrate
|
|
220
220
|
collab
|
|
221
221
|
.command('migrate <spec-name>')
|
|
222
222
|
.description('Convert a standalone Spec to collaborative mode')
|
package/lib/commands/docs.js
CHANGED
|
@@ -145,7 +145,7 @@ async function handleValidate(projectPath, config, reporter, options) {
|
|
|
145
145
|
async function handleArchive(projectPath, config, reporter, options) {
|
|
146
146
|
if (!options.spec) {
|
|
147
147
|
reporter.displayError('--spec option is required for archive command');
|
|
148
|
-
console.log('Usage:
|
|
148
|
+
console.log('Usage: sce docs archive --spec <spec-name> [--dry-run]');
|
|
149
149
|
return 2;
|
|
150
150
|
}
|
|
151
151
|
|
|
@@ -236,7 +236,7 @@ async function handleHooksUninstall(manager, reporter) {
|
|
|
236
236
|
console.log(chalk.red('❌ ' + result.message));
|
|
237
237
|
|
|
238
238
|
if (result.reason === 'not_our_hook') {
|
|
239
|
-
console.log(chalk.yellow('\nThe pre-commit hook was not installed by
|
|
239
|
+
console.log(chalk.yellow('\nThe pre-commit hook was not installed by scene-capability-engine.'));
|
|
240
240
|
console.log(chalk.gray('You may need to manually edit: .git/hooks/pre-commit\n'));
|
|
241
241
|
}
|
|
242
242
|
|
|
@@ -259,7 +259,7 @@ async function handleHooksStatus(manager, reporter) {
|
|
|
259
259
|
} else {
|
|
260
260
|
console.log(chalk.yellow('⚠️ Document governance hooks are not installed'));
|
|
261
261
|
console.log(chalk.gray(' Reason: ' + status.message));
|
|
262
|
-
console.log(chalk.cyan('\nTo install hooks:
|
|
262
|
+
console.log(chalk.cyan('\nTo install hooks: sce docs hooks install\n'));
|
|
263
263
|
return 1;
|
|
264
264
|
}
|
|
265
265
|
}
|
|
@@ -309,8 +309,8 @@ async function handleConfigDisplay(configManager, reporter) {
|
|
|
309
309
|
console.log();
|
|
310
310
|
|
|
311
311
|
console.log(chalk.gray('Configuration file: .kiro/config/docs.json'));
|
|
312
|
-
console.log(chalk.gray('To modify:
|
|
313
|
-
console.log(chalk.gray('To reset:
|
|
312
|
+
console.log(chalk.gray('To modify: sce docs config --set <key> <value>'));
|
|
313
|
+
console.log(chalk.gray('To reset: sce docs config --reset\n'));
|
|
314
314
|
|
|
315
315
|
return 0;
|
|
316
316
|
}
|
|
@@ -329,8 +329,8 @@ async function handleConfigSet(configManager, reporter, options) {
|
|
|
329
329
|
|
|
330
330
|
if (keyIndex >= args.length) {
|
|
331
331
|
reporter.displayError('Missing configuration key');
|
|
332
|
-
console.log(chalk.gray('Usage:
|
|
333
|
-
console.log(chalk.gray('Example:
|
|
332
|
+
console.log(chalk.gray('Usage: sce docs config --set <key> <value>'));
|
|
333
|
+
console.log(chalk.gray('Example: sce docs config --set root-allowed-files "README.md,CUSTOM.md"\n'));
|
|
334
334
|
return 2;
|
|
335
335
|
}
|
|
336
336
|
|
|
@@ -339,8 +339,8 @@ async function handleConfigSet(configManager, reporter, options) {
|
|
|
339
339
|
|
|
340
340
|
if (valueIndex >= args.length) {
|
|
341
341
|
reporter.displayError('Missing configuration value');
|
|
342
|
-
console.log(chalk.gray('Usage:
|
|
343
|
-
console.log(chalk.gray('Example:
|
|
342
|
+
console.log(chalk.gray('Usage: sce docs config --set <key> <value>'));
|
|
343
|
+
console.log(chalk.gray('Example: sce docs config --set root-allowed-files "README.md,CUSTOM.md"\n'));
|
|
344
344
|
return 2;
|
|
345
345
|
}
|
|
346
346
|
|
|
@@ -389,7 +389,7 @@ async function handleConfigReset(configManager, reporter) {
|
|
|
389
389
|
await configManager.reset();
|
|
390
390
|
|
|
391
391
|
console.log(chalk.green('✅ Configuration reset to defaults'));
|
|
392
|
-
console.log(chalk.gray(' Run "
|
|
392
|
+
console.log(chalk.gray(' Run "sce docs config" to view current configuration\n'));
|
|
393
393
|
|
|
394
394
|
return 0;
|
|
395
395
|
} catch (error) {
|
|
@@ -669,7 +669,7 @@ function generateMarkdownReport(stats, history) {
|
|
|
669
669
|
// Footer
|
|
670
670
|
lines.push('---');
|
|
671
671
|
lines.push('');
|
|
672
|
-
lines.push('*Generated by
|
|
672
|
+
lines.push('*Generated by scene-capability-engine document governance system*');
|
|
673
673
|
lines.push('');
|
|
674
674
|
|
|
675
675
|
return lines.join('\n');
|
|
@@ -682,7 +682,7 @@ function showHelp() {
|
|
|
682
682
|
console.log(chalk.bold.cyan('\n📋 Document Governance Commands\n'));
|
|
683
683
|
|
|
684
684
|
console.log(chalk.bold('Usage:'));
|
|
685
|
-
console.log('
|
|
685
|
+
console.log(' sce docs <subcommand> [options]\n');
|
|
686
686
|
|
|
687
687
|
console.log(chalk.bold('Subcommands:'));
|
|
688
688
|
console.log(' diagnose Scan project for document violations');
|
|
@@ -707,20 +707,20 @@ function showHelp() {
|
|
|
707
707
|
console.log(' --verbose Show detailed error information\n');
|
|
708
708
|
|
|
709
709
|
console.log(chalk.bold('Examples:'));
|
|
710
|
-
console.log('
|
|
711
|
-
console.log('
|
|
712
|
-
console.log('
|
|
713
|
-
console.log('
|
|
714
|
-
console.log('
|
|
715
|
-
console.log('
|
|
716
|
-
console.log('
|
|
717
|
-
console.log('
|
|
718
|
-
console.log('
|
|
719
|
-
console.log('
|
|
720
|
-
console.log('
|
|
721
|
-
console.log('
|
|
722
|
-
console.log('
|
|
723
|
-
console.log('
|
|
710
|
+
console.log(' sce docs diagnose');
|
|
711
|
+
console.log(' sce docs cleanup --dry-run');
|
|
712
|
+
console.log(' sce docs cleanup --spec my-spec');
|
|
713
|
+
console.log(' sce docs validate --all');
|
|
714
|
+
console.log(' sce docs archive --spec my-spec --dry-run');
|
|
715
|
+
console.log(' sce docs hooks install');
|
|
716
|
+
console.log(' sce docs hooks status');
|
|
717
|
+
console.log(' sce docs config');
|
|
718
|
+
console.log(' sce docs config --set root-allowed-files "README.md,CUSTOM.md"');
|
|
719
|
+
console.log(' sce docs config --reset');
|
|
720
|
+
console.log(' sce docs stats');
|
|
721
|
+
console.log(' sce docs report');
|
|
722
|
+
console.log(' sce docs check-refs');
|
|
723
|
+
console.log(' sce docs check-refs --report\n');
|
|
724
724
|
}
|
|
725
725
|
|
|
726
726
|
/**
|
package/lib/commands/doctor.js
CHANGED
|
@@ -124,7 +124,7 @@ function displayBriefCompliance(report) {
|
|
|
124
124
|
console.log(chalk.yellow(` ⚠ ${warningCount} warning(s) found`));
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
console.log(chalk.cyan(` → Run '
|
|
127
|
+
console.log(chalk.cyan(` → Run 'sce doctor --docs' for detailed diagnostics`));
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
|
|
@@ -230,7 +230,7 @@ async function fixGitignoreCommand() {
|
|
|
230
230
|
if (result.backupId) {
|
|
231
231
|
console.log();
|
|
232
232
|
console.log(chalk.blue('💾 Backup created:'), chalk.gray(result.backupId));
|
|
233
|
-
console.log(chalk.gray(' You can restore with:
|
|
233
|
+
console.log(chalk.gray(' You can restore with: sce rollback ' + result.backupId));
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
if (result.added && result.added.length > 0) {
|
package/lib/commands/env.js
CHANGED
|
@@ -59,7 +59,7 @@ class EnvironmentCLI {
|
|
|
59
59
|
if (environments.length === 0) {
|
|
60
60
|
console.log(chalk.yellow('\nNo environments registered.'));
|
|
61
61
|
console.log(chalk.gray('\nTo register an environment, create a configuration file and run:'));
|
|
62
|
-
console.log(chalk.gray('
|
|
62
|
+
console.log(chalk.gray(' sce env register <config-file>'));
|
|
63
63
|
console.log();
|
|
64
64
|
return 0;
|
|
65
65
|
}
|
|
@@ -93,7 +93,7 @@ class EnvironmentCLI {
|
|
|
93
93
|
|
|
94
94
|
if (!environmentName) {
|
|
95
95
|
console.log(chalk.red('\nError: Environment name is required'));
|
|
96
|
-
console.log(chalk.gray('\nUsage:
|
|
96
|
+
console.log(chalk.gray('\nUsage: sce env switch <name>'));
|
|
97
97
|
console.log();
|
|
98
98
|
return 1;
|
|
99
99
|
}
|
|
@@ -161,7 +161,7 @@ class EnvironmentCLI {
|
|
|
161
161
|
if (error.message.includes('No active environment')) {
|
|
162
162
|
console.log(chalk.yellow('\nNo active environment.'));
|
|
163
163
|
console.log(chalk.gray('\nTo activate an environment, run:'));
|
|
164
|
-
console.log(chalk.gray('
|
|
164
|
+
console.log(chalk.gray(' sce env switch <name>'));
|
|
165
165
|
console.log();
|
|
166
166
|
return 0;
|
|
167
167
|
}
|
|
@@ -179,7 +179,7 @@ class EnvironmentCLI {
|
|
|
179
179
|
|
|
180
180
|
if (!configFile) {
|
|
181
181
|
console.log(chalk.red('\nError: Configuration file is required'));
|
|
182
|
-
console.log(chalk.gray('\nUsage:
|
|
182
|
+
console.log(chalk.gray('\nUsage: sce env register <config-file>'));
|
|
183
183
|
console.log();
|
|
184
184
|
return 1;
|
|
185
185
|
}
|
|
@@ -225,7 +225,7 @@ class EnvironmentCLI {
|
|
|
225
225
|
|
|
226
226
|
if (!environmentName) {
|
|
227
227
|
console.log(chalk.red('\nError: Environment name is required'));
|
|
228
|
-
console.log(chalk.gray('\nUsage:
|
|
228
|
+
console.log(chalk.gray('\nUsage: sce env unregister <name> [--force]'));
|
|
229
229
|
console.log();
|
|
230
230
|
return 1;
|
|
231
231
|
}
|
|
@@ -335,7 +335,7 @@ class EnvironmentCLI {
|
|
|
335
335
|
|
|
336
336
|
if (!command) {
|
|
337
337
|
console.log(chalk.red('\nError: Command is required'));
|
|
338
|
-
console.log(chalk.gray('\nUsage:
|
|
338
|
+
console.log(chalk.gray('\nUsage: sce env run "<command>"'));
|
|
339
339
|
console.log();
|
|
340
340
|
return 1;
|
|
341
341
|
}
|
|
@@ -379,14 +379,14 @@ class EnvironmentCLI {
|
|
|
379
379
|
*/
|
|
380
380
|
static displayHelp() {
|
|
381
381
|
console.log(chalk.bold('\nEnvironment Management Commands:\n'));
|
|
382
|
-
console.log(chalk.white('
|
|
383
|
-
console.log(chalk.white('
|
|
384
|
-
console.log(chalk.white('
|
|
385
|
-
console.log(chalk.white('
|
|
386
|
-
console.log(chalk.white('
|
|
387
|
-
console.log(chalk.white('
|
|
388
|
-
console.log(chalk.white('
|
|
389
|
-
console.log(chalk.white('
|
|
382
|
+
console.log(chalk.white(' sce env list') + chalk.gray(' List all environments'));
|
|
383
|
+
console.log(chalk.white(' sce env switch <name>') + chalk.gray(' Switch to environment'));
|
|
384
|
+
console.log(chalk.white(' sce env info') + chalk.gray(' Show active environment details'));
|
|
385
|
+
console.log(chalk.white(' sce env register <config-file>') + chalk.gray(' Register new environment'));
|
|
386
|
+
console.log(chalk.white(' sce env unregister <name>') + chalk.gray(' Remove environment'));
|
|
387
|
+
console.log(chalk.white(' sce env rollback') + chalk.gray(' Restore from backup'));
|
|
388
|
+
console.log(chalk.white(' sce env verify') + chalk.gray(' Verify environment configuration'));
|
|
389
|
+
console.log(chalk.white(' sce env run "<command>"') + chalk.gray(' Run command in environment'));
|
|
390
390
|
console.log();
|
|
391
391
|
}
|
|
392
392
|
|
|
@@ -16,7 +16,7 @@ function registerKnowledgeCommands(program) {
|
|
|
16
16
|
.alias('kb')
|
|
17
17
|
.description('Manage personal knowledge base');
|
|
18
18
|
|
|
19
|
-
//
|
|
19
|
+
// sce knowledge init
|
|
20
20
|
knowledge
|
|
21
21
|
.command('init')
|
|
22
22
|
.description('Initialize knowledge base')
|
|
@@ -35,9 +35,9 @@ function registerKnowledgeCommands(program) {
|
|
|
35
35
|
console.log(chalk.green('✓ Knowledge base initialized'));
|
|
36
36
|
console.log(chalk.gray('\nDirectory: .kiro/knowledge/'));
|
|
37
37
|
console.log(chalk.gray('\nNext steps:'));
|
|
38
|
-
console.log(chalk.gray('
|
|
39
|
-
console.log(chalk.gray('
|
|
40
|
-
console.log(chalk.gray('
|
|
38
|
+
console.log(chalk.gray(' sce knowledge add pattern "My First Pattern"'));
|
|
39
|
+
console.log(chalk.gray(' sce knowledge list'));
|
|
40
|
+
console.log(chalk.gray(' sce knowledge --help'));
|
|
41
41
|
|
|
42
42
|
} catch (error) {
|
|
43
43
|
console.error(chalk.red(`Error: ${error.message}`));
|
|
@@ -45,7 +45,7 @@ function registerKnowledgeCommands(program) {
|
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
//
|
|
48
|
+
// sce knowledge add
|
|
49
49
|
knowledge
|
|
50
50
|
.command('add <type> <title>')
|
|
51
51
|
.description('Add new knowledge entry')
|
|
@@ -81,7 +81,7 @@ function registerKnowledgeCommands(program) {
|
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
//
|
|
84
|
+
// sce knowledge list
|
|
85
85
|
knowledge
|
|
86
86
|
.command('list')
|
|
87
87
|
.description('List all knowledge entries')
|
|
@@ -94,7 +94,7 @@ function registerKnowledgeCommands(program) {
|
|
|
94
94
|
const manager = new KnowledgeManager(process.cwd());
|
|
95
95
|
|
|
96
96
|
if (!await manager.isInitialized()) {
|
|
97
|
-
console.log(chalk.yellow('Knowledge base not initialized. Run:
|
|
97
|
+
console.log(chalk.yellow('Knowledge base not initialized. Run: sce knowledge init'));
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -137,7 +137,7 @@ function registerKnowledgeCommands(program) {
|
|
|
137
137
|
}
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
-
//
|
|
140
|
+
// sce knowledge search
|
|
141
141
|
knowledge
|
|
142
142
|
.command('search <keyword>')
|
|
143
143
|
.description('Search knowledge entries')
|
|
@@ -147,7 +147,7 @@ function registerKnowledgeCommands(program) {
|
|
|
147
147
|
const manager = new KnowledgeManager(process.cwd());
|
|
148
148
|
|
|
149
149
|
if (!await manager.isInitialized()) {
|
|
150
|
-
console.log(chalk.yellow('Knowledge base not initialized. Run:
|
|
150
|
+
console.log(chalk.yellow('Knowledge base not initialized. Run: sce knowledge init'));
|
|
151
151
|
return;
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -185,7 +185,7 @@ function registerKnowledgeCommands(program) {
|
|
|
185
185
|
}
|
|
186
186
|
});
|
|
187
187
|
|
|
188
|
-
//
|
|
188
|
+
// sce knowledge show
|
|
189
189
|
knowledge
|
|
190
190
|
.command('show <id>')
|
|
191
191
|
.description('Show knowledge entry')
|
|
@@ -218,7 +218,7 @@ function registerKnowledgeCommands(program) {
|
|
|
218
218
|
}
|
|
219
219
|
});
|
|
220
220
|
|
|
221
|
-
//
|
|
221
|
+
// sce knowledge delete
|
|
222
222
|
knowledge
|
|
223
223
|
.command('delete <id>')
|
|
224
224
|
.description('Delete knowledge entry')
|
|
@@ -257,7 +257,7 @@ function registerKnowledgeCommands(program) {
|
|
|
257
257
|
}
|
|
258
258
|
});
|
|
259
259
|
|
|
260
|
-
//
|
|
260
|
+
// sce knowledge stats
|
|
261
261
|
knowledge
|
|
262
262
|
.command('stats')
|
|
263
263
|
.description('Show knowledge base statistics')
|
|
@@ -266,7 +266,7 @@ function registerKnowledgeCommands(program) {
|
|
|
266
266
|
const manager = new KnowledgeManager(process.cwd());
|
|
267
267
|
|
|
268
268
|
if (!await manager.isInitialized()) {
|
|
269
|
-
console.log(chalk.yellow('Knowledge base not initialized. Run:
|
|
269
|
+
console.log(chalk.yellow('Knowledge base not initialized. Run: sce knowledge init'));
|
|
270
270
|
return;
|
|
271
271
|
}
|
|
272
272
|
|
package/lib/commands/lock.js
CHANGED
|
@@ -17,7 +17,7 @@ function registerLockCommands(program) {
|
|
|
17
17
|
.command('lock')
|
|
18
18
|
.description('Manage Spec locks for multi-user collaboration');
|
|
19
19
|
|
|
20
|
-
//
|
|
20
|
+
// sce lock <spec-name>
|
|
21
21
|
lockCmd
|
|
22
22
|
.command('acquire <spec-name>')
|
|
23
23
|
.alias('get')
|
|
@@ -28,7 +28,7 @@ function registerLockCommands(program) {
|
|
|
28
28
|
await acquireLock(specName, options);
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
-
//
|
|
31
|
+
// sce lock release <spec-name>
|
|
32
32
|
lockCmd
|
|
33
33
|
.command('release <spec-name>')
|
|
34
34
|
.description('Release a lock on a Spec')
|
|
@@ -37,7 +37,7 @@ function registerLockCommands(program) {
|
|
|
37
37
|
await releaseLock(specName, options);
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
//
|
|
40
|
+
// sce lock status [spec-name]
|
|
41
41
|
lockCmd
|
|
42
42
|
.command('status [spec-name]')
|
|
43
43
|
.description('Show lock status for Specs')
|
|
@@ -45,7 +45,7 @@ function registerLockCommands(program) {
|
|
|
45
45
|
await showLockStatus(specName);
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
//
|
|
48
|
+
// sce lock cleanup
|
|
49
49
|
lockCmd
|
|
50
50
|
.command('cleanup')
|
|
51
51
|
.description('Remove all stale locks')
|
|
@@ -53,7 +53,7 @@ function registerLockCommands(program) {
|
|
|
53
53
|
await cleanupStaleLocks();
|
|
54
54
|
});
|
|
55
55
|
|
|
56
|
-
//
|
|
56
|
+
// sce lock whoami
|
|
57
57
|
lockCmd
|
|
58
58
|
.command('whoami')
|
|
59
59
|
.description('Display current machine identifier')
|
|
@@ -61,7 +61,7 @@ function registerLockCommands(program) {
|
|
|
61
61
|
await showMachineInfo();
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
-
//
|
|
64
|
+
// sce unlock <spec-name> (alias)
|
|
65
65
|
program
|
|
66
66
|
.command('unlock <spec-name>')
|
|
67
67
|
.description('Release a lock on a Spec (alias for lock release)')
|
package/lib/commands/ops.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* Operations Commands
|
|
3
3
|
*
|
|
4
4
|
* CLI commands for DevOps integration foundation:
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
5
|
+
* - sce ops init: Initialize operations specs
|
|
6
|
+
* - sce ops validate: Validate operations specs
|
|
7
|
+
* - sce ops audit: Query audit logs
|
|
8
|
+
* - sce ops takeover: Manage takeover levels
|
|
9
|
+
* - sce ops feedback: Manage user feedback
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
const chalk = require('chalk');
|
|
@@ -44,7 +44,7 @@ async function initCommand(projectName, options = {}) {
|
|
|
44
44
|
console.log();
|
|
45
45
|
console.log(chalk.yellow('Next steps:'));
|
|
46
46
|
console.log(' 1. Fill in the operations spec documents');
|
|
47
|
-
console.log(' 2. Run:
|
|
47
|
+
console.log(' 2. Run: sce ops validate ' + projectName);
|
|
48
48
|
console.log(' 3. Commit the operations specs with your code');
|
|
49
49
|
|
|
50
50
|
} catch (error) {
|
|
@@ -86,7 +86,7 @@ async function validateCommand(projectName, options = {}) {
|
|
|
86
86
|
|
|
87
87
|
if (projects.length === 0) {
|
|
88
88
|
console.log(chalk.yellow('No operations specs found.'));
|
|
89
|
-
console.log(chalk.gray('Run:
|
|
89
|
+
console.log(chalk.gray('Run: sce ops init <project-name> to create one'));
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -239,13 +239,13 @@ async function takeoverCommand(action, projectName, options = {}) {
|
|
|
239
239
|
// Set takeover level
|
|
240
240
|
if (!level) {
|
|
241
241
|
console.error(chalk.red('❌ Error: --level is required for set action'));
|
|
242
|
-
console.log(chalk.gray('Usage:
|
|
242
|
+
console.log(chalk.gray('Usage: sce ops takeover set <project> --level <L1-L5> --reason <reason>'));
|
|
243
243
|
process.exit(1);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
if (!reason) {
|
|
247
247
|
console.error(chalk.red('❌ Error: --reason is required for set action'));
|
|
248
|
-
console.log(chalk.gray('Usage:
|
|
248
|
+
console.log(chalk.gray('Usage: sce ops takeover set <project> --level <L1-L5> --reason <reason>'));
|
|
249
249
|
process.exit(1);
|
|
250
250
|
}
|
|
251
251
|
|
|
@@ -319,13 +319,13 @@ async function feedbackCommand(action, options = {}) {
|
|
|
319
319
|
// Respond to feedback
|
|
320
320
|
if (!feedbackId) {
|
|
321
321
|
console.error(chalk.red('❌ Error: --feedback-id is required for respond action'));
|
|
322
|
-
console.log(chalk.gray('Usage:
|
|
322
|
+
console.log(chalk.gray('Usage: sce ops feedback respond --feedback-id <id> --message <message>'));
|
|
323
323
|
process.exit(1);
|
|
324
324
|
}
|
|
325
325
|
|
|
326
326
|
if (!message) {
|
|
327
327
|
console.error(chalk.red('❌ Error: --message is required for respond action'));
|
|
328
|
-
console.log(chalk.gray('Usage:
|
|
328
|
+
console.log(chalk.gray('Usage: sce ops feedback respond --feedback-id <id> --message <message>'));
|
|
329
329
|
process.exit(1);
|
|
330
330
|
}
|
|
331
331
|
|
|
@@ -361,7 +361,7 @@ async function opsCommand(subcommand, args = [], options = {}) {
|
|
|
361
361
|
case 'init':
|
|
362
362
|
if (args.length === 0) {
|
|
363
363
|
console.error(chalk.red('❌ Error: Project name is required'));
|
|
364
|
-
console.log(chalk.gray('Usage:
|
|
364
|
+
console.log(chalk.gray('Usage: sce ops init <project-name> [--template <template-name>]'));
|
|
365
365
|
process.exit(1);
|
|
366
366
|
}
|
|
367
367
|
await initCommand(args[0], options);
|
|
@@ -378,7 +378,7 @@ async function opsCommand(subcommand, args = [], options = {}) {
|
|
|
378
378
|
case 'takeover':
|
|
379
379
|
if (args.length < 2) {
|
|
380
380
|
console.error(chalk.red('❌ Error: Action and project name are required'));
|
|
381
|
-
console.log(chalk.gray('Usage:
|
|
381
|
+
console.log(chalk.gray('Usage: sce ops takeover <get|set> <project-name> [options]'));
|
|
382
382
|
process.exit(1);
|
|
383
383
|
}
|
|
384
384
|
await takeoverCommand(args[0], args[1], options);
|
|
@@ -387,7 +387,7 @@ async function opsCommand(subcommand, args = [], options = {}) {
|
|
|
387
387
|
case 'feedback':
|
|
388
388
|
if (args.length === 0) {
|
|
389
389
|
console.error(chalk.red('❌ Error: Action is required'));
|
|
390
|
-
console.log(chalk.gray('Usage:
|
|
390
|
+
console.log(chalk.gray('Usage: sce ops feedback <list|respond> [options]'));
|
|
391
391
|
process.exit(1);
|
|
392
392
|
}
|
|
393
393
|
await feedbackCommand(args[0], options);
|
|
@@ -397,11 +397,11 @@ async function opsCommand(subcommand, args = [], options = {}) {
|
|
|
397
397
|
console.log(chalk.red('❌ Unknown ops subcommand'));
|
|
398
398
|
console.log();
|
|
399
399
|
console.log(chalk.blue('Available commands:'));
|
|
400
|
-
console.log('
|
|
401
|
-
console.log('
|
|
402
|
-
console.log('
|
|
403
|
-
console.log('
|
|
404
|
-
console.log('
|
|
400
|
+
console.log(' sce ops init <project-name> - Initialize operations specs');
|
|
401
|
+
console.log(' sce ops validate [project] - Validate operations specs');
|
|
402
|
+
console.log(' sce ops audit [options] - Query audit logs');
|
|
403
|
+
console.log(' sce ops takeover <action> <project> - Manage takeover levels');
|
|
404
|
+
console.log(' sce ops feedback <action> - Manage user feedback');
|
|
405
405
|
process.exit(1);
|
|
406
406
|
}
|
|
407
407
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CLI commands for Agent Orchestration
|
|
3
3
|
*
|
|
4
|
-
* Provides `
|
|
4
|
+
* Provides `sce orchestrate run|status|stop` subcommands for managing
|
|
5
5
|
* parallel Spec execution via Codex CLI sub-agents.
|
|
6
6
|
*
|
|
7
7
|
* Requirements: 6.1 (run), 6.2 (status), 6.3 (stop), 6.4 (spec validation), 6.5 (maxParallel validation)
|
|
@@ -183,7 +183,7 @@ function registerOrchestrateCommands(program) {
|
|
|
183
183
|
.command('orchestrate')
|
|
184
184
|
.description('Manage agent orchestration for parallel Spec execution');
|
|
185
185
|
|
|
186
|
-
// ──
|
|
186
|
+
// ── sce orchestrate run ──────────────────────────────────────────
|
|
187
187
|
orchestrate
|
|
188
188
|
.command('run')
|
|
189
189
|
.description('Start orchestration for specified Specs')
|
|
@@ -202,7 +202,7 @@ function registerOrchestrateCommands(program) {
|
|
|
202
202
|
}
|
|
203
203
|
});
|
|
204
204
|
|
|
205
|
-
// ──
|
|
205
|
+
// ── sce orchestrate status ───────────────────────────────────────
|
|
206
206
|
orchestrate
|
|
207
207
|
.command('status')
|
|
208
208
|
.description('Show current orchestration status')
|
|
@@ -216,7 +216,7 @@ function registerOrchestrateCommands(program) {
|
|
|
216
216
|
if (options.json) {
|
|
217
217
|
console.log(JSON.stringify({ status: 'idle', message: 'No orchestration data found' }));
|
|
218
218
|
} else {
|
|
219
|
-
console.log(chalk.gray('No orchestration data found. Run `
|
|
219
|
+
console.log(chalk.gray('No orchestration data found. Run `sce orchestrate run` first.'));
|
|
220
220
|
}
|
|
221
221
|
return;
|
|
222
222
|
}
|
|
@@ -231,7 +231,7 @@ function registerOrchestrateCommands(program) {
|
|
|
231
231
|
}
|
|
232
232
|
});
|
|
233
233
|
|
|
234
|
-
// ──
|
|
234
|
+
// ── sce orchestrate stop ─────────────────────────────────────────
|
|
235
235
|
orchestrate
|
|
236
236
|
.command('stop')
|
|
237
237
|
.description('Stop all running agents')
|
package/lib/commands/prompt.js
CHANGED
|
@@ -13,7 +13,7 @@ const PromptGenerator = require('../context/prompt-generator');
|
|
|
13
13
|
* @param {string} specName - Spec name
|
|
14
14
|
* @param {string} taskId - Task ID
|
|
15
15
|
* @param {Object} options - Command options
|
|
16
|
-
* @param {string} options.tool - Target tool (generic, claude-code, cursor, codex,
|
|
16
|
+
* @param {string} options.tool - Target tool (generic, claude-code, cursor, codex, SCE)
|
|
17
17
|
* @param {number} options.maxLength - Maximum context length
|
|
18
18
|
* @returns {Promise<void>}
|
|
19
19
|
*/
|
|
@@ -73,8 +73,8 @@ async function generatePrompt(specName, taskId, options = {}) {
|
|
|
73
73
|
console.log(chalk.blue('💡 GitHub Copilot Tips:'));
|
|
74
74
|
console.log(' • Include the prompt in code comments');
|
|
75
75
|
console.log(' • Let Copilot suggest implementations');
|
|
76
|
-
} else if (targetTool === '
|
|
77
|
-
console.log(chalk.blue('💡
|
|
76
|
+
} else if (targetTool === 'SCE') {
|
|
77
|
+
console.log(chalk.blue('💡 AI IDE Tips:'));
|
|
78
78
|
console.log(' • Steering rules are loaded automatically');
|
|
79
79
|
console.log(' • Use #File to reference specific files');
|
|
80
80
|
}
|
package/lib/commands/rollback.js
CHANGED
|
@@ -21,7 +21,7 @@ async function rollbackCommand(options = {}) {
|
|
|
21
21
|
const { auto = false, backup: backupId = null } = options;
|
|
22
22
|
const projectPath = process.cwd();
|
|
23
23
|
|
|
24
|
-
console.log(chalk.red('🔥') + '
|
|
24
|
+
console.log(chalk.red('🔥') + ' Scene Capability Engine - Rollback');
|
|
25
25
|
console.log();
|
|
26
26
|
|
|
27
27
|
try {
|
|
@@ -35,8 +35,8 @@ async function rollbackCommand(options = {}) {
|
|
|
35
35
|
console.log(chalk.yellow('⚠️ No backups found'));
|
|
36
36
|
console.log();
|
|
37
37
|
console.log(chalk.gray('Backups are created automatically during:'));
|
|
38
|
-
console.log(' - Project adoption (
|
|
39
|
-
console.log(' - Version upgrades (
|
|
38
|
+
console.log(' - Project adoption (sce adopt)');
|
|
39
|
+
console.log(' - Version upgrades (sce upgrade)');
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -186,7 +186,7 @@ async function rollbackCommand(options = {}) {
|
|
|
186
186
|
console.log();
|
|
187
187
|
console.log(chalk.blue('💡 Next steps:'));
|
|
188
188
|
console.log(' 1. Verify your project is working correctly');
|
|
189
|
-
console.log(' 2. Check project status: ' + chalk.cyan('
|
|
189
|
+
console.log(' 2. Check project status: ' + chalk.cyan('sce status'));
|
|
190
190
|
console.log();
|
|
191
191
|
console.log(chalk.red('🔥') + ' Rollback complete!');
|
|
192
192
|
} else {
|