@mmnto/cli 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/adapters/gh-utils.test.js +2 -0
  2. package/dist/adapters/gh-utils.test.js.map +1 -1
  3. package/dist/adapters/github-cli-pr.test.js +2 -0
  4. package/dist/adapters/github-cli-pr.test.js.map +1 -1
  5. package/dist/adapters/github-cli.test.js +2 -0
  6. package/dist/adapters/github-cli.test.js.map +1 -1
  7. package/dist/assets/compiled-baseline.d.ts.map +1 -1
  8. package/dist/assets/compiled-baseline.js +47 -8
  9. package/dist/assets/compiled-baseline.js.map +1 -1
  10. package/dist/commands/compile.d.ts.map +1 -1
  11. package/dist/commands/compile.js +110 -0
  12. package/dist/commands/compile.js.map +1 -1
  13. package/dist/commands/docs.d.ts +1 -1
  14. package/dist/commands/docs.d.ts.map +1 -1
  15. package/dist/commands/docs.js +22 -15
  16. package/dist/commands/docs.js.map +1 -1
  17. package/dist/commands/docs.test.js +4 -3
  18. package/dist/commands/docs.test.js.map +1 -1
  19. package/dist/commands/explain.d.ts +2 -0
  20. package/dist/commands/explain.d.ts.map +1 -0
  21. package/dist/commands/explain.js +99 -0
  22. package/dist/commands/explain.js.map +1 -0
  23. package/dist/commands/init.d.ts +3 -1
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +235 -217
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/lint.d.ts.map +1 -1
  28. package/dist/commands/lint.js +29 -3
  29. package/dist/commands/lint.js.map +1 -1
  30. package/dist/commands/run-compiled-rules.d.ts.map +1 -1
  31. package/dist/commands/run-compiled-rules.js +12 -3
  32. package/dist/commands/run-compiled-rules.js.map +1 -1
  33. package/dist/commands/spec.d.ts +1 -1
  34. package/dist/commands/spec.d.ts.map +1 -1
  35. package/dist/commands/spec.js +36 -7
  36. package/dist/commands/spec.js.map +1 -1
  37. package/dist/commands/test-rules.d.ts.map +1 -1
  38. package/dist/commands/test-rules.js +1 -1
  39. package/dist/commands/test-rules.js.map +1 -1
  40. package/dist/git.test.js +2 -0
  41. package/dist/git.test.js.map +1 -1
  42. package/dist/index.js +15 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/orchestrators/conformance.test.js +1 -0
  45. package/dist/orchestrators/conformance.test.js.map +1 -1
  46. package/dist/orchestrators/shell-orchestrator.test.js +1 -0
  47. package/dist/orchestrators/shell-orchestrator.test.js.map +1 -1
  48. package/package.json +2 -2
@@ -0,0 +1,99 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { bold, dim, log } from '../ui.js';
4
+ import { loadConfig, resolveConfigPath } from '../utils.js';
5
+ const TAG = '[Explain]';
6
+ export async function explainCommand(hash) {
7
+ const { loadCompiledRules } = await import('@mmnto/totem');
8
+ const cwd = process.cwd();
9
+ const configPath = resolveConfigPath(cwd);
10
+ const config = await loadConfig(configPath);
11
+ const totemDir = path.join(cwd, config.totemDir);
12
+ // Load compiled rules
13
+ const rulesPath = path.join(totemDir, 'compiled-rules.json');
14
+ const rules = loadCompiledRules(rulesPath);
15
+ if (rules.length === 0) {
16
+ log.error('Totem Error', 'No compiled rules found. Run `totem compile` first.');
17
+ return;
18
+ }
19
+ // Find matching rule(s) — support partial hash prefix
20
+ const lowerHash = hash.toLowerCase();
21
+ const matches = rules.filter((r) => r.lessonHash.toLowerCase().startsWith(lowerHash));
22
+ if (matches.length === 0) {
23
+ log.error('Totem Error', `No rule found matching hash "${hash}".`);
24
+ log.dim(TAG, 'Run `totem compile` to ensure your rules are up to date.');
25
+ return;
26
+ }
27
+ if (matches.length > 1) {
28
+ log.warn(TAG, `Ambiguous hash "${hash}" matches ${matches.length} rules:`);
29
+ for (const m of matches) {
30
+ log.info(TAG, ` ${bold(m.lessonHash)} — ${m.lessonHeading}`);
31
+ }
32
+ log.dim(TAG, 'Use a longer prefix to disambiguate.');
33
+ return;
34
+ }
35
+ const rule = matches[0];
36
+ // Display rule details
37
+ process.stderr.write('\n');
38
+ log.info(TAG, `Rule: ${bold(rule.lessonHash)}`);
39
+ log.info(TAG, `Heading: ${bold(rule.lessonHeading)}`);
40
+ log.info(TAG, `Engine: ${rule.engine} | Severity: ${rule.severity ?? 'warning'} | Category: ${rule.category ?? 'uncategorized'}`);
41
+ log.info(TAG, `Pattern: ${dim(rule.pattern)}`);
42
+ if (rule.astQuery) {
43
+ log.info(TAG, `AST Query: ${dim(rule.astQuery)}`);
44
+ }
45
+ process.stderr.write('\n');
46
+ log.info(TAG, `Message: ${rule.message}`);
47
+ // Try to find the source lesson file
48
+ const lessonsDir = path.join(totemDir, 'lessons');
49
+ const lessonFile = path.join(lessonsDir, `lesson-${rule.lessonHash}.md`);
50
+ if (fs.existsSync(lessonFile)) {
51
+ process.stderr.write('\n');
52
+ log.info(TAG, `${bold('Source lesson:')} .totem/lessons/lesson-${rule.lessonHash}.md`);
53
+ process.stderr.write('\n');
54
+ const content = fs.readFileSync(lessonFile, 'utf-8');
55
+ // Print lesson content with light formatting
56
+ process.stderr.write(content.trim() + '\n');
57
+ }
58
+ else {
59
+ // Try searching all lesson files for the heading
60
+ let found = false;
61
+ if (fs.existsSync(lessonsDir)) {
62
+ const files = fs.readdirSync(lessonsDir).filter((f) => f.endsWith('.md'));
63
+ for (const file of files) {
64
+ const content = fs.readFileSync(path.join(lessonsDir, file), 'utf-8');
65
+ if (content.includes(rule.lessonHeading)) {
66
+ process.stderr.write('\n');
67
+ log.info(TAG, `${bold('Found in:')} .totem/lessons/${file}`);
68
+ // Extract the relevant section
69
+ const lines = content.split('\n');
70
+ const headingIdx = lines.findIndex((l) => l.includes(rule.lessonHeading));
71
+ if (headingIdx >= 0) {
72
+ // Print from heading to next heading or end
73
+ const section = [];
74
+ for (let i = headingIdx; i < lines.length; i++) {
75
+ if (i > headingIdx && lines[i].startsWith('## '))
76
+ break;
77
+ section.push(lines[i]);
78
+ }
79
+ process.stderr.write('\n');
80
+ process.stderr.write(section.join('\n').trim() + '\n');
81
+ }
82
+ found = true;
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ if (!found) {
88
+ process.stderr.write('\n');
89
+ log.dim(TAG, 'Source lesson file not found. It may have been manually removed.');
90
+ }
91
+ }
92
+ // File glob info
93
+ if (rule.fileGlobs && rule.fileGlobs.length > 0) {
94
+ process.stderr.write('\n');
95
+ log.info(TAG, `${bold('Applies to:')} ${rule.fileGlobs.join(', ')}`);
96
+ }
97
+ process.stderr.write('\n');
98
+ }
99
+ //# sourceMappingURL=explain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/commands/explain.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,8 @@ export declare function upgradeReflexes(content: string): {
62
62
  content: string;
63
63
  clean: boolean;
64
64
  };
65
- export declare function initCommand(): Promise<void>;
65
+ export declare function initCommand(options?: {
66
+ bare?: boolean;
67
+ }): Promise<void>;
66
68
  export {};
67
69
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAcjD,eAAO,MAAM,cAAc,IAAI,CAAC;AAMhC,eAAO,MAAM,eAAe,gvJA4C3B,CAAC;AAaF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAUD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAInF;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAA0B,GACjC;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAqB5D;AAuID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAuDA;AAgFD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAoD5D;AAyFD,KAAK,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAuG7D,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EAAE,EACvB,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAY9D;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,QAAQ,CAAC,SAAS,GACrB,OAAO,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC,CAiC7C;AAID,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAchE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CA+BpF;AAgCD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0WjD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAcjD,eAAO,MAAM,cAAc,IAAI,CAAC;AAMhC,eAAO,MAAM,eAAe,gvJA4C3B,CAAC;AAaF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAUD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAInF;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAA0B,GACjC;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAqB5D;AAuID;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG;IACrD,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAuDA;AAgFD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC;IAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAoD5D;AAyFD,KAAK,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAuG7D,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EAAE,EACvB,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAY9D;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,QAAQ,CAAC,SAAS,GACrB,OAAO,CAAC,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC,CAiC7C;AAID,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAchE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CA+BpF;AAgCD,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8X7E"}