@mmnto/cli 1.3.16 → 1.3.18

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 (59) hide show
  1. package/dist/assets/compiled-baseline.js +4 -4
  2. package/dist/commands/audit-templates.d.ts +16 -0
  3. package/dist/commands/audit-templates.d.ts.map +1 -0
  4. package/dist/commands/audit-templates.js +57 -0
  5. package/dist/commands/audit-templates.js.map +1 -0
  6. package/dist/commands/audit.d.ts +2 -5
  7. package/dist/commands/audit.d.ts.map +1 -1
  8. package/dist/commands/audit.js +2 -56
  9. package/dist/commands/audit.js.map +1 -1
  10. package/dist/commands/compile.d.ts.map +1 -1
  11. package/dist/commands/compile.js +31 -0
  12. package/dist/commands/compile.js.map +1 -1
  13. package/dist/commands/eject.d.ts +15 -0
  14. package/dist/commands/eject.d.ts.map +1 -1
  15. package/dist/commands/eject.js +52 -18
  16. package/dist/commands/eject.js.map +1 -1
  17. package/dist/commands/eject.test.js +147 -1
  18. package/dist/commands/eject.test.js.map +1 -1
  19. package/dist/commands/extract-templates.d.ts +7 -0
  20. package/dist/commands/extract-templates.d.ts.map +1 -0
  21. package/dist/commands/extract-templates.js +46 -0
  22. package/dist/commands/extract-templates.js.map +1 -0
  23. package/dist/commands/extract.d.ts +5 -43
  24. package/dist/commands/extract.d.ts.map +1 -1
  25. package/dist/commands/extract.js +23 -209
  26. package/dist/commands/extract.js.map +1 -1
  27. package/dist/commands/install-hooks.d.ts +2 -0
  28. package/dist/commands/install-hooks.d.ts.map +1 -1
  29. package/dist/commands/install-hooks.js +64 -12
  30. package/dist/commands/install-hooks.js.map +1 -1
  31. package/dist/commands/install-hooks.test.js +86 -2
  32. package/dist/commands/install-hooks.test.js.map +1 -1
  33. package/dist/commands/shield-templates.d.ts +14 -0
  34. package/dist/commands/shield-templates.d.ts.map +1 -0
  35. package/dist/commands/shield-templates.js +125 -0
  36. package/dist/commands/shield-templates.js.map +1 -0
  37. package/dist/commands/shield.d.ts +1 -4
  38. package/dist/commands/shield.d.ts.map +1 -1
  39. package/dist/commands/shield.js +3 -122
  40. package/dist/commands/shield.js.map +1 -1
  41. package/dist/commands/sync.d.ts +1 -0
  42. package/dist/commands/sync.d.ts.map +1 -1
  43. package/dist/commands/sync.js +9 -1
  44. package/dist/commands/sync.js.map +1 -1
  45. package/dist/commands/sync.test.d.ts +2 -0
  46. package/dist/commands/sync.test.d.ts.map +1 -0
  47. package/dist/commands/sync.test.js +68 -0
  48. package/dist/commands/sync.test.js.map +1 -0
  49. package/dist/index.js +1 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/parse-nits.d.ts +12 -0
  52. package/dist/parse-nits.d.ts.map +1 -0
  53. package/dist/parse-nits.js +73 -0
  54. package/dist/parse-nits.js.map +1 -0
  55. package/dist/parse-nits.test.d.ts +2 -0
  56. package/dist/parse-nits.test.d.ts.map +1 -0
  57. package/dist/parse-nits.test.js +148 -0
  58. package/dist/parse-nits.test.js.map +1 -0
  59. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-nits.d.ts","sourceRoot":"","sources":["../src/parse-nits.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoDH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB1D"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Extract nit content from CodeRabbit review bodies.
3
+ * Parses <details><summary>... Nitpick ...</summary>...</details> blocks
4
+ * and returns the inner content as clean text.
5
+ */
6
+ /**
7
+ * Given a position right after a `<details>...<summary>...</summary>`,
8
+ * find the matching `</details>` accounting for nesting, and return
9
+ * the inner content between the end of the summary and the closing tag.
10
+ */
11
+ function extractNestedBlock(body, startPos) {
12
+ let depth = 1;
13
+ let pos = startPos;
14
+ while (depth > 0 && pos < body.length) {
15
+ // Create fresh regexes each iteration to avoid global state corruption
16
+ const openRe = /<details>/gi;
17
+ const closeRe = /<\/details>/gi;
18
+ openRe.lastIndex = pos;
19
+ closeRe.lastIndex = pos;
20
+ const openMatch = openRe.exec(body);
21
+ const closeMatch = closeRe.exec(body);
22
+ if (!closeMatch) {
23
+ // No closing tag found — malformed HTML, bail out
24
+ return null;
25
+ }
26
+ if (openMatch && openMatch.index < closeMatch.index) {
27
+ // Found a nested <details> before the next </details>
28
+ depth++;
29
+ pos = openMatch.index + openMatch[0].length;
30
+ }
31
+ else {
32
+ // Found a </details>
33
+ depth--;
34
+ if (depth === 0) {
35
+ return body.slice(startPos, closeMatch.index);
36
+ }
37
+ pos = closeMatch.index + closeMatch[0].length;
38
+ }
39
+ }
40
+ return null;
41
+ }
42
+ /** Strip wrapper HTML tags (<details>, <summary>, <blockquote>) but keep inner content. */
43
+ function stripWrapperTags(html) {
44
+ return html
45
+ .replace(/<\/?details>/gi, '')
46
+ .replace(/<summary>[\s\S]*?<\/summary>/gi, '')
47
+ .replace(/<\/?blockquote>/gi, '')
48
+ .trim();
49
+ }
50
+ /**
51
+ * Extract nit content from CodeRabbit review bodies.
52
+ * Finds all `<details>` blocks whose `<summary>` contains "Nitpick", "nitpick", or the broom emoji.
53
+ * Returns an array of cleaned nit text strings.
54
+ */
55
+ export function parseCodeRabbitNits(body) {
56
+ // Strip fenced code blocks to avoid extracting fake nits from examples
57
+ const stripped = body.replace(/```[\s\S]*?```/g, '');
58
+ const nits = [];
59
+ const nitpickRe = /<details>\s*<summary>[^<]*(?:nitpick|🧹)[^<]*<\/summary>/gi;
60
+ let match;
61
+ while ((match = nitpickRe.exec(stripped)) !== null) {
62
+ const afterSummary = match.index + match[0].length;
63
+ const innerContent = extractNestedBlock(stripped, afterSummary);
64
+ if (innerContent) {
65
+ const cleaned = stripWrapperTags(innerContent);
66
+ if (cleaned) {
67
+ nits.push(cleaned);
68
+ }
69
+ }
70
+ }
71
+ return nits;
72
+ }
73
+ //# sourceMappingURL=parse-nits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-nits.js","sourceRoot":"","sources":["../src/parse-nits.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,QAAgB;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,QAAQ,CAAC;IAEnB,OAAO,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACtC,uEAAuE;QACvE,MAAM,MAAM,GAAG,aAAa,CAAC;QAC7B,MAAM,OAAO,GAAG,eAAe,CAAC;QAChC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QACvB,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;QAExB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,kDAAkD;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;YACpD,sDAAsD;YACtD,KAAK,EAAE,CAAC;YACR,GAAG,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YAChD,CAAC;YACD,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2FAA2F;AAC3F,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC;SAC7C,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,uEAAuE;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,4DAA4D,CAAC;IAC/E,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnD,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parse-nits.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-nits.test.d.ts","sourceRoot":"","sources":["../src/parse-nits.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { parseCodeRabbitNits } from './parse-nits.js';
3
+ // ─── Sample CodeRabbit nit block ─────────────────────────
4
+ const SAMPLE_NIT_BLOCK = `<details>
5
+ <summary>🧹 Nitpick comments (2)</summary><blockquote>
6
+
7
+ <details>
8
+ <summary>packages/cli/src/commands/docs.ts (1)</summary><blockquote>
9
+
10
+ \`194-206\`: **Hardcoded path and fragile counting method.**
11
+
12
+ Two observations about the baseline counting logic.
13
+
14
+ </blockquote></details>
15
+ <details>
16
+ <summary>packages/core/src/rule-tester.ts (1)</summary><blockquote>
17
+
18
+ \`103-103\`: **Consider propagating \`onWarn\` to \`matchAstGrepPattern\` calls.**
19
+
20
+ Both calls omit the optional \`onWarn\` parameter.
21
+
22
+ </blockquote></details>
23
+
24
+ </blockquote></details>`;
25
+ // ─── parseCodeRabbitNits ─────────────────────────────────
26
+ describe('parseCodeRabbitNits', () => {
27
+ it('extracts nit content from a standard CodeRabbit review body', () => {
28
+ const nits = parseCodeRabbitNits(SAMPLE_NIT_BLOCK);
29
+ expect(nits).toHaveLength(1);
30
+ expect(nits[0]).toContain('Hardcoded path and fragile counting method');
31
+ expect(nits[0]).toContain('Consider propagating');
32
+ expect(nits[0]).toContain('Both calls omit the optional');
33
+ });
34
+ it('returns empty array when no nit section exists', () => {
35
+ const body = `## Summary
36
+
37
+ This PR adds a new feature. No nitpick blocks here.
38
+
39
+ <details>
40
+ <summary>Some other section</summary>
41
+ Content that is not nits.
42
+ </details>`;
43
+ const nits = parseCodeRabbitNits(body);
44
+ expect(nits).toHaveLength(0);
45
+ });
46
+ it('handles multiple nit blocks', () => {
47
+ const body = `<details>
48
+ <summary>🧹 Nitpick comments (1)</summary><blockquote>
49
+
50
+ First batch of nits.
51
+
52
+ </blockquote></details>
53
+
54
+ Some text in between.
55
+
56
+ <details>
57
+ <summary>🧹 Nitpick comments (1)</summary><blockquote>
58
+
59
+ Second batch of nits.
60
+
61
+ </blockquote></details>`;
62
+ const nits = parseCodeRabbitNits(body);
63
+ expect(nits).toHaveLength(2);
64
+ expect(nits[0]).toContain('First batch of nits');
65
+ expect(nits[1]).toContain('Second batch of nits');
66
+ });
67
+ it('strips HTML wrapper tags but preserves content', () => {
68
+ const nits = parseCodeRabbitNits(SAMPLE_NIT_BLOCK);
69
+ expect(nits).toHaveLength(1);
70
+ // Wrapper tags should be stripped
71
+ expect(nits[0]).not.toMatch(/<\/?details>/);
72
+ expect(nits[0]).not.toMatch(/<\/?blockquote>/);
73
+ expect(nits[0]).not.toMatch(/<summary>/);
74
+ // Content should be preserved
75
+ expect(nits[0]).toContain('Hardcoded path');
76
+ expect(nits[0]).toContain('Two observations about the baseline counting logic');
77
+ });
78
+ it('matches case-insensitively on "Nitpick"', () => {
79
+ const body = `<details>
80
+ <summary>nitpick comments (1)</summary>
81
+
82
+ A lowercase nit.
83
+
84
+ </details>`;
85
+ const nits = parseCodeRabbitNits(body);
86
+ expect(nits).toHaveLength(1);
87
+ expect(nits[0]).toContain('A lowercase nit');
88
+ });
89
+ it('matches on broom emoji without the word "nitpick"', () => {
90
+ const body = `<details>
91
+ <summary>🧹 Minor comments (1)</summary>
92
+
93
+ A broom-emoji nit.
94
+
95
+ </details>`;
96
+ const nits = parseCodeRabbitNits(body);
97
+ expect(nits).toHaveLength(1);
98
+ expect(nits[0]).toContain('A broom-emoji nit');
99
+ });
100
+ it('returns empty array for empty string', () => {
101
+ expect(parseCodeRabbitNits('')).toEqual([]);
102
+ });
103
+ it('does not catastrophically backtrack on large inputs', () => {
104
+ // Build a large body with no matching blocks
105
+ const large = 'x'.repeat(100_000);
106
+ const start = performance.now();
107
+ const nits = parseCodeRabbitNits(large);
108
+ const elapsed = performance.now() - start;
109
+ expect(nits).toHaveLength(0);
110
+ // Should complete in well under 1 second
111
+ expect(elapsed).toBeLessThan(1000);
112
+ });
113
+ it('handles nit block embedded in a larger review body', () => {
114
+ const body = `## Walkthrough
115
+
116
+ This PR refactors the compiler module.
117
+
118
+ ## Changes
119
+
120
+ | File | Summary |
121
+ |------|---------|
122
+ | compiler.ts | Extracted utility |
123
+
124
+ <details>
125
+ <summary>🧹 Nitpick comments (1)</summary><blockquote>
126
+
127
+ \`42-50\`: **Consider using a Map instead of a plain object.**
128
+
129
+ Maps provide better iteration guarantees.
130
+
131
+ </blockquote></details>
132
+
133
+ ## Assessment
134
+
135
+ Overall looks good.`;
136
+ const nits = parseCodeRabbitNits(body);
137
+ expect(nits).toHaveLength(1);
138
+ expect(nits[0]).toContain('Consider using a Map');
139
+ });
140
+ it('skips blocks with empty content after stripping tags', () => {
141
+ const body = `<details>
142
+ <summary>🧹 Nitpick comments (0)</summary><blockquote>
143
+ </blockquote></details>`;
144
+ const nits = parseCodeRabbitNits(body);
145
+ expect(nits).toHaveLength(0);
146
+ });
147
+ });
148
+ //# sourceMappingURL=parse-nits.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-nits.test.js","sourceRoot":"","sources":["../src/parse-nits.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmnto/cli",
3
- "version": "1.3.16",
3
+ "version": "1.3.18",
4
4
  "description": "CLI for Totem — AI persistent memory and context layer",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,7 +21,7 @@
21
21
  "ora": "^9.3.0",
22
22
  "picocolors": "^1.1.1",
23
23
  "zod": "^3.24.0",
24
- "@mmnto/totem": "1.3.16"
24
+ "@mmnto/totem": "1.3.18"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@anthropic-ai/sdk": "^0.78.0",