@nahisaho/musubix-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/musubix.js +18 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +27 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/auth/auth-manager.d.ts +320 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +580 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/cli/base.d.ts +58 -0
- package/dist/cli/base.d.ts.map +1 -0
- package/dist/cli/base.js +93 -0
- package/dist/cli/base.js.map +1 -0
- package/dist/cli/commands/help.d.ts +17 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +228 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/index.d.ts +14 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +25 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +38 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +258 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/codegen/coding-standards.d.ts +250 -0
- package/dist/codegen/coding-standards.d.ts.map +1 -0
- package/dist/codegen/coding-standards.js +976 -0
- package/dist/codegen/coding-standards.js.map +1 -0
- package/dist/codegen/coverage-reporter.d.ts +264 -0
- package/dist/codegen/coverage-reporter.d.ts.map +1 -0
- package/dist/codegen/coverage-reporter.js +697 -0
- package/dist/codegen/coverage-reporter.js.map +1 -0
- package/dist/codegen/dependency-analyzer.d.ts +271 -0
- package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
- package/dist/codegen/dependency-analyzer.js +661 -0
- package/dist/codegen/dependency-analyzer.js.map +1 -0
- package/dist/codegen/generator.d.ts +275 -0
- package/dist/codegen/generator.d.ts.map +1 -0
- package/dist/codegen/generator.js +781 -0
- package/dist/codegen/generator.js.map +1 -0
- package/dist/codegen/index.d.ts +18 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +27 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/integration-test-generator.d.ts +312 -0
- package/dist/codegen/integration-test-generator.d.ts.map +1 -0
- package/dist/codegen/integration-test-generator.js +765 -0
- package/dist/codegen/integration-test-generator.js.map +1 -0
- package/dist/codegen/pattern-conformance.d.ts +309 -0
- package/dist/codegen/pattern-conformance.d.ts.map +1 -0
- package/dist/codegen/pattern-conformance.js +590 -0
- package/dist/codegen/pattern-conformance.js.map +1 -0
- package/dist/codegen/quality-metrics.d.ts +235 -0
- package/dist/codegen/quality-metrics.d.ts.map +1 -0
- package/dist/codegen/quality-metrics.js +439 -0
- package/dist/codegen/quality-metrics.js.map +1 -0
- package/dist/codegen/security-scanner.d.ts +179 -0
- package/dist/codegen/security-scanner.d.ts.map +1 -0
- package/dist/codegen/security-scanner.js +495 -0
- package/dist/codegen/security-scanner.js.map +1 -0
- package/dist/codegen/static-analyzer.d.ts +188 -0
- package/dist/codegen/static-analyzer.d.ts.map +1 -0
- package/dist/codegen/static-analyzer.js +490 -0
- package/dist/codegen/static-analyzer.js.map +1 -0
- package/dist/codegen/unit-test-generator.d.ts +289 -0
- package/dist/codegen/unit-test-generator.d.ts.map +1 -0
- package/dist/codegen/unit-test-generator.js +634 -0
- package/dist/codegen/unit-test-generator.js.map +1 -0
- package/dist/design/adr-generator.d.ts +227 -0
- package/dist/design/adr-generator.d.ts.map +1 -0
- package/dist/design/adr-generator.js +423 -0
- package/dist/design/adr-generator.js.map +1 -0
- package/dist/design/c4-generator.d.ts +267 -0
- package/dist/design/c4-generator.d.ts.map +1 -0
- package/dist/design/c4-generator.js +453 -0
- package/dist/design/c4-generator.js.map +1 -0
- package/dist/design/framework-optimizer.d.ts +190 -0
- package/dist/design/framework-optimizer.d.ts.map +1 -0
- package/dist/design/framework-optimizer.js +589 -0
- package/dist/design/framework-optimizer.js.map +1 -0
- package/dist/design/index.d.ts +12 -0
- package/dist/design/index.d.ts.map +1 -0
- package/dist/design/index.js +13 -0
- package/dist/design/index.js.map +1 -0
- package/dist/design/pattern-detector.d.ts +270 -0
- package/dist/design/pattern-detector.d.ts.map +1 -0
- package/dist/design/pattern-detector.js +621 -0
- package/dist/design/pattern-detector.js.map +1 -0
- package/dist/design/solid-validator.d.ts +188 -0
- package/dist/design/solid-validator.d.ts.map +1 -0
- package/dist/design/solid-validator.js +579 -0
- package/dist/design/solid-validator.js.map +1 -0
- package/dist/error/data-persistence.d.ts +311 -0
- package/dist/error/data-persistence.d.ts.map +1 -0
- package/dist/error/data-persistence.js +586 -0
- package/dist/error/data-persistence.js.map +1 -0
- package/dist/error/graceful-degradation.d.ts +309 -0
- package/dist/error/graceful-degradation.d.ts.map +1 -0
- package/dist/error/graceful-degradation.js +510 -0
- package/dist/error/graceful-degradation.js.map +1 -0
- package/dist/error/index.d.ts +11 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +19 -0
- package/dist/error/index.js.map +1 -0
- package/dist/explanation/explanation-generator.d.ts +228 -0
- package/dist/explanation/explanation-generator.d.ts.map +1 -0
- package/dist/explanation/explanation-generator.js +662 -0
- package/dist/explanation/explanation-generator.js.map +1 -0
- package/dist/explanation/index.d.ts +11 -0
- package/dist/explanation/index.d.ts.map +1 -0
- package/dist/explanation/index.js +19 -0
- package/dist/explanation/index.js.map +1 -0
- package/dist/explanation/reasoning-chain.d.ts +314 -0
- package/dist/explanation/reasoning-chain.d.ts.map +1 -0
- package/dist/explanation/reasoning-chain.js +414 -0
- package/dist/explanation/reasoning-chain.js.map +1 -0
- package/dist/explanation/visual-explanation.d.ts +315 -0
- package/dist/explanation/visual-explanation.d.ts.map +1 -0
- package/dist/explanation/visual-explanation.js +667 -0
- package/dist/explanation/visual-explanation.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/requirements/decomposer.d.ts +235 -0
- package/dist/requirements/decomposer.d.ts.map +1 -0
- package/dist/requirements/decomposer.js +587 -0
- package/dist/requirements/decomposer.js.map +1 -0
- package/dist/requirements/related-finder.d.ts +261 -0
- package/dist/requirements/related-finder.d.ts.map +1 -0
- package/dist/requirements/related-finder.js +629 -0
- package/dist/requirements/related-finder.js.map +1 -0
- package/dist/traceability/impact.d.ts +196 -0
- package/dist/traceability/impact.d.ts.map +1 -0
- package/dist/traceability/impact.js +438 -0
- package/dist/traceability/impact.js.map +1 -0
- package/dist/traceability/index.d.ts +9 -0
- package/dist/traceability/index.d.ts.map +1 -0
- package/dist/traceability/index.js +10 -0
- package/dist/traceability/index.js.map +1 -0
- package/dist/traceability/manager.d.ts +266 -0
- package/dist/traceability/manager.d.ts.map +1 -0
- package/dist/traceability/manager.js +412 -0
- package/dist/traceability/manager.js.map +1 -0
- package/dist/types/common.d.ts +294 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +15 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/ears.d.ts +158 -0
- package/dist/types/ears.d.ts.map +1 -0
- package/dist/types/ears.js +33 -0
- package/dist/types/ears.js.map +1 -0
- package/dist/types/errors.d.ts +176 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +55 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/data-protector.d.ts +122 -0
- package/dist/utils/data-protector.d.ts.map +1 -0
- package/dist/utils/data-protector.js +275 -0
- package/dist/utils/data-protector.js.map +1 -0
- package/dist/utils/error-handler.d.ts +101 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +324 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/i18n-manager.d.ts +259 -0
- package/dist/utils/i18n-manager.d.ts.map +1 -0
- package/dist/utils/i18n-manager.js +554 -0
- package/dist/utils/i18n-manager.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +120 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +237 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/performance-profiler.d.ts +251 -0
- package/dist/utils/performance-profiler.d.ts.map +1 -0
- package/dist/utils/performance-profiler.js +458 -0
- package/dist/utils/performance-profiler.js.map +1 -0
- package/dist/utils/scalability-optimizer.d.ts +294 -0
- package/dist/utils/scalability-optimizer.d.ts.map +1 -0
- package/dist/utils/scalability-optimizer.js +606 -0
- package/dist/utils/scalability-optimizer.js.map +1 -0
- package/dist/utils/structured-logger.d.ts +294 -0
- package/dist/utils/structured-logger.d.ts.map +1 -0
- package/dist/utils/structured-logger.js +630 -0
- package/dist/utils/structured-logger.js.map +1 -0
- package/dist/utils/version-compatibility.d.ts +217 -0
- package/dist/utils/version-compatibility.d.ts.map +1 -0
- package/dist/utils/version-compatibility.js +443 -0
- package/dist/utils/version-compatibility.js.map +1 -0
- package/dist/validators/ears-validator.d.ts +182 -0
- package/dist/validators/ears-validator.d.ts.map +1 -0
- package/dist/validators/ears-validator.js +357 -0
- package/dist/validators/ears-validator.js.map +1 -0
- package/dist/validators/index.d.ts +8 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +9 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/version.d.ts +8 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/package.json +100 -0
package/dist/cli/base.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Base Module
|
|
3
|
+
*
|
|
4
|
+
* Provides the foundation for MUSUBIX command-line interface
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module cli
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-ARC-002 - CLI Interface
|
|
10
|
+
* @see DES-MUSUBIX-001 Section 3.2 - CLI Interface Design
|
|
11
|
+
*/
|
|
12
|
+
import { Command } from 'commander';
|
|
13
|
+
import { VERSION } from '../index.js';
|
|
14
|
+
/**
|
|
15
|
+
* Exit codes for CLI commands
|
|
16
|
+
* @see DES-MUSUBIX-001 Section 3.2.3
|
|
17
|
+
*/
|
|
18
|
+
export const ExitCode = {
|
|
19
|
+
SUCCESS: 0,
|
|
20
|
+
GENERAL_ERROR: 1,
|
|
21
|
+
ARGUMENT_ERROR: 2,
|
|
22
|
+
FILE_NOT_FOUND: 3,
|
|
23
|
+
VALIDATION_ERROR: 4,
|
|
24
|
+
SERVICE_ERROR: 5,
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Create the main CLI program
|
|
28
|
+
*/
|
|
29
|
+
export function createProgram() {
|
|
30
|
+
const program = new Command();
|
|
31
|
+
program
|
|
32
|
+
.name('musubix')
|
|
33
|
+
.description('MUSUBIX - Neuro-Symbolic AI Coding System')
|
|
34
|
+
.version(VERSION, '-v, --version', 'Display version number')
|
|
35
|
+
.option('--verbose', 'Enable verbose output', false)
|
|
36
|
+
.option('--json', 'Output in JSON format', false)
|
|
37
|
+
.option('--config <path>', 'Path to configuration file')
|
|
38
|
+
.option('-q, --quiet', 'Suppress non-essential output', false)
|
|
39
|
+
.configureHelp({
|
|
40
|
+
sortSubcommands: true,
|
|
41
|
+
sortOptions: true,
|
|
42
|
+
});
|
|
43
|
+
return program;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get global options from command
|
|
47
|
+
*/
|
|
48
|
+
export function getGlobalOptions(command) {
|
|
49
|
+
const opts = command.optsWithGlobals();
|
|
50
|
+
return {
|
|
51
|
+
verbose: opts.verbose ?? false,
|
|
52
|
+
json: opts.json ?? false,
|
|
53
|
+
config: opts.config,
|
|
54
|
+
quiet: opts.quiet ?? false,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Output result based on format option
|
|
59
|
+
*/
|
|
60
|
+
export function outputResult(data, options) {
|
|
61
|
+
if (options.quiet) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (options.json) {
|
|
65
|
+
console.log(JSON.stringify(data, null, 2));
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
console.log(data);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Handle CLI errors
|
|
73
|
+
*/
|
|
74
|
+
export function handleError(error, options) {
|
|
75
|
+
if (options.json) {
|
|
76
|
+
console.error(JSON.stringify({
|
|
77
|
+
success: false,
|
|
78
|
+
error: {
|
|
79
|
+
name: error.name,
|
|
80
|
+
message: error.message,
|
|
81
|
+
stack: options.verbose ? error.stack : undefined,
|
|
82
|
+
},
|
|
83
|
+
}, null, 2));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.error(`Error: ${error.message}`);
|
|
87
|
+
if (options.verbose && error.stack) {
|
|
88
|
+
console.error(error.stack);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
process.exit(ExitCode.GENERAL_ERROR);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/cli/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,aAAa,EAAE,CAAC;CACR,CAAC;AAmBX;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,2CAA2C,CAAC;SACxD,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,uBAAuB,EAAE,KAAK,CAAC;SACnD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,KAAK,CAAC;SAChD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,aAAa,EAAE,+BAA+B,EAAE,KAAK,CAAC;SAC7D,aAAa,CAAC;QACb,eAAe,EAAE,IAAI;QACrB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;QAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;QACxB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAO,EACP,OAA4C;IAE5C,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,OAAsB;IAC9D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACjD;SACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACf,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Command
|
|
3
|
+
*
|
|
4
|
+
* Provides extended help information for MUSUBIX CLI
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module cli/commands/help
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-ARC-002 - CLI Interface
|
|
10
|
+
* @see DES-MUSUBIX-001 Section 3.2.2 - CLI Commands
|
|
11
|
+
*/
|
|
12
|
+
import type { Command } from 'commander';
|
|
13
|
+
/**
|
|
14
|
+
* Register help command
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerHelpCommand(program: Command): void;
|
|
17
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+HzC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY1D"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Command
|
|
3
|
+
*
|
|
4
|
+
* Provides extended help information for MUSUBIX CLI
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module cli/commands/help
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-ARC-002 - CLI Interface
|
|
10
|
+
* @see DES-MUSUBIX-001 Section 3.2.2 - CLI Commands
|
|
11
|
+
*/
|
|
12
|
+
import { VERSION } from '../../index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Extended help content
|
|
15
|
+
*/
|
|
16
|
+
const COMMAND_HELP = {
|
|
17
|
+
init: {
|
|
18
|
+
name: 'init',
|
|
19
|
+
description: 'Initialize a new MUSUBIX project with steering documents and configuration',
|
|
20
|
+
usage: 'musubix init [path] [options]',
|
|
21
|
+
examples: [
|
|
22
|
+
'musubix init # Initialize in current directory',
|
|
23
|
+
'musubix init my-project # Initialize in my-project directory',
|
|
24
|
+
'musubix init . --name "MyApp" # Initialize with custom name',
|
|
25
|
+
'musubix init . --force # Overwrite existing configuration',
|
|
26
|
+
],
|
|
27
|
+
options: [
|
|
28
|
+
'-n, --name <name> Project name',
|
|
29
|
+
'-t, --template <name> Project template (default: default)',
|
|
30
|
+
'-f, --force Overwrite existing files',
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
requirements: {
|
|
34
|
+
name: 'requirements',
|
|
35
|
+
description: 'Analyze and validate requirements using EARS format',
|
|
36
|
+
usage: 'musubix requirements <subcommand> [options]',
|
|
37
|
+
examples: [
|
|
38
|
+
'musubix requirements analyze input.md # Analyze natural language requirements',
|
|
39
|
+
'musubix requirements validate spec.md # Validate EARS syntax',
|
|
40
|
+
'musubix requirements map spec.md # Map to ontology',
|
|
41
|
+
'musubix requirements search "login" # Search related requirements',
|
|
42
|
+
],
|
|
43
|
+
options: [
|
|
44
|
+
'analyze <file> Analyze natural language → EARS',
|
|
45
|
+
'validate <file> Validate EARS syntax',
|
|
46
|
+
'map <file> Map to ontology',
|
|
47
|
+
'search <query> Search related requirements',
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
design: {
|
|
51
|
+
name: 'design',
|
|
52
|
+
description: 'Generate and validate system designs',
|
|
53
|
+
usage: 'musubix design <subcommand> [options]',
|
|
54
|
+
examples: [
|
|
55
|
+
'musubix design generate req.md # Generate design from requirements',
|
|
56
|
+
'musubix design patterns context # Detect applicable patterns',
|
|
57
|
+
'musubix design validate design.md # Validate SOLID compliance',
|
|
58
|
+
'musubix design c4 design.md # Generate C4 diagrams',
|
|
59
|
+
],
|
|
60
|
+
options: [
|
|
61
|
+
'generate <file> Generate design from requirements',
|
|
62
|
+
'patterns <ctx> Detect applicable patterns',
|
|
63
|
+
'validate <file> Validate SOLID compliance',
|
|
64
|
+
'c4 <file> Generate C4 diagrams',
|
|
65
|
+
'adr <decision> Generate ADR',
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
codegen: {
|
|
69
|
+
name: 'codegen',
|
|
70
|
+
description: 'Generate and analyze code',
|
|
71
|
+
usage: 'musubix codegen <subcommand> [options]',
|
|
72
|
+
examples: [
|
|
73
|
+
'musubix codegen generate design.md # Generate code from design',
|
|
74
|
+
'musubix codegen analyze src/index.ts # Static analysis',
|
|
75
|
+
'musubix codegen security src/ # Security scan',
|
|
76
|
+
],
|
|
77
|
+
options: [
|
|
78
|
+
'generate <file> Generate code from design',
|
|
79
|
+
'analyze <file> Static analysis',
|
|
80
|
+
'security <path> Security scan',
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
test: {
|
|
84
|
+
name: 'test',
|
|
85
|
+
description: 'Generate tests and measure coverage',
|
|
86
|
+
usage: 'musubix test <subcommand> [options]',
|
|
87
|
+
examples: [
|
|
88
|
+
'musubix test generate src/index.ts # Generate tests for file',
|
|
89
|
+
'musubix test coverage tests/ # Measure coverage',
|
|
90
|
+
],
|
|
91
|
+
options: [
|
|
92
|
+
'generate <file> Generate tests',
|
|
93
|
+
'coverage <dir> Measure coverage',
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
trace: {
|
|
97
|
+
name: 'trace',
|
|
98
|
+
description: 'Manage traceability between artifacts',
|
|
99
|
+
usage: 'musubix trace <subcommand> [options]',
|
|
100
|
+
examples: [
|
|
101
|
+
'musubix trace matrix # Generate traceability matrix',
|
|
102
|
+
'musubix trace impact REQ-001 # Impact analysis',
|
|
103
|
+
'musubix trace validate # Validate all links',
|
|
104
|
+
],
|
|
105
|
+
options: [
|
|
106
|
+
'matrix Generate traceability matrix',
|
|
107
|
+
'impact <id> Impact analysis',
|
|
108
|
+
'validate Validate links',
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
explain: {
|
|
112
|
+
name: 'explain',
|
|
113
|
+
description: 'Generate explanations for decisions',
|
|
114
|
+
usage: 'musubix explain <subcommand> [options]',
|
|
115
|
+
examples: [
|
|
116
|
+
'musubix explain why DES-001 # Explain design decision',
|
|
117
|
+
'musubix explain graph DES-001 # Generate reasoning graph',
|
|
118
|
+
],
|
|
119
|
+
options: [
|
|
120
|
+
'why <id> Explain reasoning',
|
|
121
|
+
'graph <id> Generate reasoning graph',
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Register help command
|
|
127
|
+
*/
|
|
128
|
+
export function registerHelpCommand(program) {
|
|
129
|
+
program
|
|
130
|
+
.command('help')
|
|
131
|
+
.description('Display help for a specific command')
|
|
132
|
+
.argument('[command]', 'Command to get help for')
|
|
133
|
+
.action((commandName) => {
|
|
134
|
+
if (commandName) {
|
|
135
|
+
displayCommandHelp(commandName);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
displayGeneralHelp();
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Display help for a specific command
|
|
144
|
+
*/
|
|
145
|
+
function displayCommandHelp(commandName) {
|
|
146
|
+
const help = COMMAND_HELP[commandName];
|
|
147
|
+
if (!help) {
|
|
148
|
+
console.log(`Unknown command: ${commandName}`);
|
|
149
|
+
console.log('');
|
|
150
|
+
console.log('Available commands:');
|
|
151
|
+
Object.keys(COMMAND_HELP).forEach(cmd => {
|
|
152
|
+
console.log(` ${cmd}`);
|
|
153
|
+
});
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
console.log(`
|
|
157
|
+
${bold('Command:')} ${help.name}
|
|
158
|
+
${bold('Description:')} ${help.description}
|
|
159
|
+
|
|
160
|
+
${bold('Usage:')}
|
|
161
|
+
${help.usage}
|
|
162
|
+
|
|
163
|
+
${bold('Examples:')}
|
|
164
|
+
${help.examples.map(ex => ` ${ex}`).join('\n')}
|
|
165
|
+
`);
|
|
166
|
+
if (help.options && help.options.length > 0) {
|
|
167
|
+
console.log(`${bold('Options/Subcommands:')}`);
|
|
168
|
+
help.options.forEach(opt => {
|
|
169
|
+
console.log(` ${opt}`);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Display general help
|
|
175
|
+
*/
|
|
176
|
+
function displayGeneralHelp() {
|
|
177
|
+
console.log(`
|
|
178
|
+
${bold('MUSUBIX')} - Neuro-Symbolic AI Coding System
|
|
179
|
+
${dim(`Version ${VERSION}`)}
|
|
180
|
+
|
|
181
|
+
${bold('Usage:')}
|
|
182
|
+
musubix <command> [options]
|
|
183
|
+
|
|
184
|
+
${bold('Commands:')}
|
|
185
|
+
init Initialize a new MUSUBIX project
|
|
186
|
+
requirements Analyze and validate requirements (EARS format)
|
|
187
|
+
design Generate and validate system designs
|
|
188
|
+
codegen Generate and analyze code
|
|
189
|
+
test Generate tests and measure coverage
|
|
190
|
+
trace Manage traceability between artifacts
|
|
191
|
+
explain Generate explanations for decisions
|
|
192
|
+
help Display help for a specific command
|
|
193
|
+
|
|
194
|
+
${bold('Global Options:')}
|
|
195
|
+
-v, --version Display version number
|
|
196
|
+
--verbose Enable verbose output
|
|
197
|
+
--json Output in JSON format
|
|
198
|
+
--config <path> Path to configuration file
|
|
199
|
+
-q, --quiet Suppress non-essential output
|
|
200
|
+
-h, --help Display help
|
|
201
|
+
|
|
202
|
+
${bold('Examples:')}
|
|
203
|
+
musubix init my-project
|
|
204
|
+
musubix requirements analyze spec.md
|
|
205
|
+
musubix design generate requirements.md
|
|
206
|
+
musubix help requirements
|
|
207
|
+
|
|
208
|
+
${bold('Documentation:')}
|
|
209
|
+
https://github.com/nahisaho/MUSUBIX
|
|
210
|
+
|
|
211
|
+
${bold('Constitutional Articles:')}
|
|
212
|
+
This project follows 9 Constitutional Articles
|
|
213
|
+
See: steering/rules/constitution.md
|
|
214
|
+
`);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Bold text formatting
|
|
218
|
+
*/
|
|
219
|
+
function bold(text) {
|
|
220
|
+
return `\x1b[1m${text}\x1b[0m`;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Dim text formatting
|
|
224
|
+
*/
|
|
225
|
+
function dim(text) {
|
|
226
|
+
return `\x1b[2m${text}\x1b[0m`;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/commands/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands Index
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module cli/commands
|
|
6
|
+
*/
|
|
7
|
+
import type { Command } from 'commander';
|
|
8
|
+
/**
|
|
9
|
+
* Register all CLI commands
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerCommands(program: Command): void;
|
|
12
|
+
export { registerInitCommand } from './init.js';
|
|
13
|
+
export { registerHelpCommand } from './help.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAWvD;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Commands Index
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module cli/commands
|
|
6
|
+
*/
|
|
7
|
+
import { registerInitCommand } from './init.js';
|
|
8
|
+
import { registerHelpCommand } from './help.js';
|
|
9
|
+
/**
|
|
10
|
+
* Register all CLI commands
|
|
11
|
+
*/
|
|
12
|
+
export function registerCommands(program) {
|
|
13
|
+
registerInitCommand(program);
|
|
14
|
+
registerHelpCommand(program);
|
|
15
|
+
// Future commands will be registered here:
|
|
16
|
+
// registerRequirementsCommand(program);
|
|
17
|
+
// registerDesignCommand(program);
|
|
18
|
+
// registerCodegenCommand(program);
|
|
19
|
+
// registerTestCommand(program);
|
|
20
|
+
// registerTraceCommand(program);
|
|
21
|
+
// registerExplainCommand(program);
|
|
22
|
+
}
|
|
23
|
+
export { registerInitCommand } from './init.js';
|
|
24
|
+
export { registerHelpCommand } from './help.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE7B,2CAA2C;IAC3C,wCAAwC;IACxC,kCAAkC;IAClC,mCAAmC;IACnC,gCAAgC;IAChC,iCAAiC;IACjC,mCAAmC;AACrC,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init Command
|
|
3
|
+
*
|
|
4
|
+
* Initializes a new MUSUBIX project
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
* @module cli/commands/init
|
|
8
|
+
*
|
|
9
|
+
* @see REQ-ARC-002 - CLI Interface
|
|
10
|
+
* @see DES-MUSUBIX-001 Section 3.2.2 - CLI Commands
|
|
11
|
+
*/
|
|
12
|
+
import type { Command } from 'commander';
|
|
13
|
+
/**
|
|
14
|
+
* Init command options
|
|
15
|
+
*/
|
|
16
|
+
export interface InitOptions {
|
|
17
|
+
name?: string;
|
|
18
|
+
template?: string;
|
|
19
|
+
force: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Init result
|
|
23
|
+
*/
|
|
24
|
+
export interface InitResult {
|
|
25
|
+
success: boolean;
|
|
26
|
+
projectPath: string;
|
|
27
|
+
filesCreated: string[];
|
|
28
|
+
message: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register init command
|
|
32
|
+
*/
|
|
33
|
+
export declare function registerInitCommand(program: Command): void;
|
|
34
|
+
/**
|
|
35
|
+
* Execute init command
|
|
36
|
+
*/
|
|
37
|
+
export declare function executeInit(targetPath: string, options: InitOptions): Promise<InitResult>;
|
|
38
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAyCD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2B1D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAmDrB"}
|