@mmnto/cli 1.114.0 → 1.116.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/dist/commands/doctor-compliance.test.js +17 -0
- package/dist/commands/doctor-compliance.test.js.map +1 -1
- package/dist/commands/doctor-seat-identity.d.ts +87 -0
- package/dist/commands/doctor-seat-identity.d.ts.map +1 -0
- package/dist/commands/doctor-seat-identity.js +427 -0
- package/dist/commands/doctor-seat-identity.js.map +1 -0
- package/dist/commands/doctor-seat-identity.test.d.ts +13 -0
- package/dist/commands/doctor-seat-identity.test.d.ts.map +1 -0
- package/dist/commands/doctor-seat-identity.test.js +390 -0
- package/dist/commands/doctor-seat-identity.test.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +1 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/ecl-gc.d.ts.map +1 -1
- package/dist/commands/ecl-gc.js +18 -7
- package/dist/commands/ecl-gc.js.map +1 -1
- package/dist/commands/ecl-gc.test.js +63 -1
- package/dist/commands/ecl-gc.test.js.map +1 -1
- package/dist/commands/eject.d.ts +62 -3
- package/dist/commands/eject.d.ts.map +1 -1
- package/dist/commands/eject.js +382 -47
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/eject.test.js +557 -7
- package/dist/commands/eject.test.js.map +1 -1
- package/dist/commands/gemini-beforetool-contract.test.d.ts +2 -0
- package/dist/commands/gemini-beforetool-contract.test.d.ts.map +1 -0
- package/dist/commands/gemini-beforetool-contract.test.js +106 -0
- package/dist/commands/gemini-beforetool-contract.test.js.map +1 -0
- package/dist/commands/gemini-sessionstart-contract.test.d.ts +2 -0
- package/dist/commands/gemini-sessionstart-contract.test.d.ts.map +1 -0
- package/dist/commands/gemini-sessionstart-contract.test.js +199 -0
- package/dist/commands/gemini-sessionstart-contract.test.js.map +1 -0
- package/dist/commands/init-templates.d.ts +4 -4
- package/dist/commands/init-templates.d.ts.map +1 -1
- package/dist/commands/init-templates.js +279 -16
- package/dist/commands/init-templates.js.map +1 -1
- package/dist/commands/init.test.js +25 -7
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/install-hooks-exit-contract.test.js +5 -0
- package/dist/commands/install-hooks-exit-contract.test.js.map +1 -1
- package/dist/commands/mail-degraded-e4.test.js +126 -0
- package/dist/commands/mail-degraded-e4.test.js.map +1 -1
- package/dist/commands/mail.d.ts +19 -1
- package/dist/commands/mail.d.ts.map +1 -1
- package/dist/commands/mail.js +195 -30
- package/dist/commands/mail.js.map +1 -1
- package/dist/commands/mail.test.js +291 -3
- package/dist/commands/mail.test.js.map +1 -1
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +82 -0
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/orient.test.js +144 -1
- package/dist/commands/orient.test.js.map +1 -1
- package/dist/commands/retrospect.d.ts.map +1 -1
- package/dist/commands/retrospect.js +7 -3
- package/dist/commands/retrospect.js.map +1 -1
- package/dist/commands/seat-cli-wiring.test.d.ts +20 -0
- package/dist/commands/seat-cli-wiring.test.d.ts.map +1 -0
- package/dist/commands/seat-cli-wiring.test.js +147 -0
- package/dist/commands/seat-cli-wiring.test.js.map +1 -0
- package/dist/commands/seat-poll-chain.test.d.ts +13 -0
- package/dist/commands/seat-poll-chain.test.d.ts.map +1 -0
- package/dist/commands/seat-poll-chain.test.js +103 -0
- package/dist/commands/seat-poll-chain.test.js.map +1 -0
- package/dist/commands/seat.d.ts +92 -0
- package/dist/commands/seat.d.ts.map +1 -0
- package/dist/commands/seat.js +649 -0
- package/dist/commands/seat.js.map +1 -0
- package/dist/commands/seat.test.d.ts +19 -0
- package/dist/commands/seat.test.d.ts.map +1 -0
- package/dist/commands/seat.test.js +532 -0
- package/dist/commands/seat.test.js.map +1 -0
- package/dist/commands/sessionstart-manifest-contract.test.d.ts +2 -0
- package/dist/commands/sessionstart-manifest-contract.test.d.ts.map +1 -0
- package/dist/commands/sessionstart-manifest-contract.test.js +186 -0
- package/dist/commands/sessionstart-manifest-contract.test.js.map +1 -0
- package/dist/commands/triage-pr.d.ts.map +1 -1
- package/dist/commands/triage-pr.js +2 -0
- package/dist/commands/triage-pr.js.map +1 -1
- package/dist/hooks/__tests__/auto-context.test.js +20 -0
- package/dist/hooks/__tests__/auto-context.test.js.map +1 -1
- package/dist/hooks/auto-context.d.ts +19 -0
- package/dist/hooks/auto-context.d.ts.map +1 -1
- package/dist/hooks/auto-context.js +22 -4
- package/dist/hooks/auto-context.js.map +1 -1
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers/bot-review-parser.d.ts +8 -1
- package/dist/parsers/bot-review-parser.d.ts.map +1 -1
- package/dist/parsers/bot-review-parser.js +21 -1
- package/dist/parsers/bot-review-parser.js.map +1 -1
- package/dist/parsers/bot-review-parser.test.js +23 -0
- package/dist/parsers/bot-review-parser.test.js.map +1 -1
- package/dist/parsers/triage-severity-mapper.d.ts.map +1 -1
- package/dist/parsers/triage-severity-mapper.js +32 -1
- package/dist/parsers/triage-severity-mapper.js.map +1 -1
- package/dist/parsers/triage-severity-mapper.test.js +57 -0
- package/dist/parsers/triage-severity-mapper.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage-severity-mapper.d.ts","sourceRoot":"","sources":["../../src/parsers/triage-severity-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,UAkB7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAcjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAY/B,CAAC;AAEF,eAAO,MAAM,YAAY,UAcxB,CAAC;
|
|
1
|
+
{"version":3,"file":"triage-severity-mapper.d.ts","sourceRoot":"","sources":["../../src/parsers/triage-severity-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,UAkB7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAcjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAY/B,CAAC;AAEF,eAAO,MAAM,YAAY,UAcxB,CAAC;AAsCF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,CAiBjF"}
|
|
@@ -61,6 +61,37 @@ export const NIT_KEYWORDS = [
|
|
|
61
61
|
'whitespace',
|
|
62
62
|
'trailing',
|
|
63
63
|
];
|
|
64
|
+
/**
|
|
65
|
+
* Category keyword matching is deliberately ASYMMETRIC by bucket
|
|
66
|
+
* (mmnto-ai/totem#2626, three falsification rounds):
|
|
67
|
+
*
|
|
68
|
+
* - SECURITY / ARCHITECTURE / CONVENTION keep plain substring matching — the
|
|
69
|
+
* long-standing behavior. Their lists carry deliberate stem prefixes
|
|
70
|
+
* ('sanitiz', 'authenticat') whose real hits are letter-joined on EITHER
|
|
71
|
+
* side ("unsanitized", "unauthorized", "sanitized"), and over-matching
|
|
72
|
+
* into a higher-priority bucket cuts the safe way: a finding surfaces too
|
|
73
|
+
* prominently instead of being buried.
|
|
74
|
+
* - NIT requires the keyword to START outside word context. Innocent
|
|
75
|
+
* containments — `nit` inside "defi**nit**ions" (ghcq's stock closing
|
|
76
|
+
* boilerplate, 5 of the 7 real in-org ghcq findings), "u**nit** test",
|
|
77
|
+
* "is_minor_bump" — demoted real findings into the lowest bucket, the
|
|
78
|
+
* unsafe direction. Blocked word-context is letters, numbers, combining
|
|
79
|
+
* marks (NFD text; also VS16-bearing emoji-adjacent tokens), and `_`
|
|
80
|
+
* (snake_case identifiers; also markdown-italic `_nit_` — both false
|
|
81
|
+
* negatives fall in the safe upward direction); real CodeRabbit severity
|
|
82
|
+
* markup keeps a space or emoji before the token (`_🟡 Minor_` — see the
|
|
83
|
+
* `\s*` in parse-nits.ts's severity regex), so it still matches.
|
|
84
|
+
* The trail stays open so inflections keep matching ('nits', 'typos').
|
|
85
|
+
*
|
|
86
|
+
* Net effect vs the pre-#2626 behavior: the NITS bucket only narrows
|
|
87
|
+
* (leading-restriction only ⇒ boundary matches ⊆ substring matches, modulo
|
|
88
|
+
* the `u` flag's Unicode simple case folding on exotic codepoints like
|
|
89
|
+
* U+017F LONG S — practically unreachable in bot prose) and the other three
|
|
90
|
+
* buckets are byte-for-byte unchanged.
|
|
91
|
+
*/
|
|
92
|
+
function matchesNitKeyword(text, keywords) {
|
|
93
|
+
return keywords.some((kw) => new RegExp(`(?<![\\p{L}\\p{N}\\p{M}_])${kw.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}`, 'iu').test(text));
|
|
94
|
+
}
|
|
64
95
|
export function mapToTriageCategory(finding) {
|
|
65
96
|
// Only search the body for keywords — NOT severity, which would cause
|
|
66
97
|
// 'minor' severity to match NIT_KEYWORDS and misbucket
|
|
@@ -72,7 +103,7 @@ export function mapToTriageCategory(finding) {
|
|
|
72
103
|
return 'architecture';
|
|
73
104
|
if (CONVENTION_KEYWORDS.some((kw) => text.includes(kw)))
|
|
74
105
|
return 'convention';
|
|
75
|
-
if (
|
|
106
|
+
if (matchesNitKeyword(text, NIT_KEYWORDS))
|
|
76
107
|
return 'nit';
|
|
77
108
|
// Fall back to bot-assigned severity
|
|
78
109
|
if (finding.severity === 'critical' || finding.severity === 'high')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage-severity-mapper.js","sourceRoot":"","sources":["../../src/parsers/triage-severity-mapper.ts"],"names":[],"mappings":"AAGA,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW;IACX,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,eAAe;IACf,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,SAAS;IACT,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa;IACb,YAAY;IACZ,KAAK;IACL,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK;IACL,WAAW;IACX,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW;IACX,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,KAAK;IACL,OAAO;IACP,UAAU;IACV,MAAM;IACN,UAAU;IACV,YAAY;IACZ,UAAU;CACX,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,sEAAsE;IACtE,uDAAuD;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAExC,2CAA2C;IAC3C,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACzE,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,cAAc,CAAC;IACjF,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7E,IAAI,
|
|
1
|
+
{"version":3,"file":"triage-severity-mapper.js","sourceRoot":"","sources":["../../src/parsers/triage-severity-mapper.ts"],"names":[],"mappings":"AAGA,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW;IACX,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,eAAe;IACf,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,SAAS;IACT,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa;IACb,YAAY;IACZ,KAAK;IACL,aAAa;IACb,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,YAAY;IACZ,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK;IACL,WAAW;IACX,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,YAAY;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,WAAW;IACX,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;IACV,SAAS;IACT,KAAK;IACL,OAAO;IACP,UAAU;IACV,MAAM;IACN,UAAU;IACV,YAAY;IACZ,UAAU;CACX,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,QAA2B;IAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAC1B,IAAI,MAAM,CAAC,6BAA6B,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAC7F,IAAI,CACL,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,sEAAsE;IACtE,uDAAuD;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAExC,2CAA2C;IAC3C,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACzE,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,cAAc,CAAC;IACjF,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7E,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAExD,qCAAqC;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IACtF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC;IACzF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,YAAY,CAAC;IAEpF,OAAO,cAAc,CAAC,CAAC,mDAAmD;AAC5E,CAAC"}
|
|
@@ -46,6 +46,63 @@ describe('mapToTriageCategory', () => {
|
|
|
46
46
|
const finding = makeFinding({ body: 'Trailing whitespace on line 42' });
|
|
47
47
|
expect(mapToTriageCategory(finding)).toBe('nit');
|
|
48
48
|
});
|
|
49
|
+
it('the NITS bucket ignores keywords inside word context (mmnto-ai/totem#2626 falsification rounds)', () => {
|
|
50
|
+
// ghcq's stock closing boilerplate contains "defi-nit-ions"; a bare
|
|
51
|
+
// substring match routed 5 of the 7 in-org ghcq findings to NITS. With no
|
|
52
|
+
// other keyword hit, both bodies fall to the architecture default —
|
|
53
|
+
// pinned exactly, not merely not-nit.
|
|
54
|
+
const ghcqBoilerplate = makeFinding({
|
|
55
|
+
tool: 'ghcq',
|
|
56
|
+
body: '## Unused variable\n\nNo imports, new methods, or new definitions are needed.',
|
|
57
|
+
});
|
|
58
|
+
expect(mapToTriageCategory(ghcqBoilerplate)).toBe('architecture');
|
|
59
|
+
// "u-nit test" is the same containment class for every bot.
|
|
60
|
+
const unitTest = makeFinding({ body: 'Missing unit test for the new branch' });
|
|
61
|
+
expect(mapToTriageCategory(unitTest)).toBe('architecture');
|
|
62
|
+
// snake_case identifiers are word context too — `_` is in the blocked
|
|
63
|
+
// class (round-3 catch: "is_minor_bump" bucketed to nit).
|
|
64
|
+
expect(mapToTriageCategory(makeFinding({ body: 'the is_minor_bump flag is never read' }))).toBe('architecture');
|
|
65
|
+
// Non-ASCII letters are word context. Both normalization forms are pinned
|
|
66
|
+
// (round-3 catch: an NFC-only fixture hid the decomposed-form leak — the
|
|
67
|
+
// combining mark U+0308 is neither letter nor number, so \p{M} must be in
|
|
68
|
+
// the blocked class; GitHub does not normalize comment bodies). These two
|
|
69
|
+
// fixture bodies are built via fromCharCode so their source form is
|
|
70
|
+
// deterministic — an editor normalizing a literal NFD body would silently
|
|
71
|
+
// re-hide the leak.
|
|
72
|
+
const nfcBody = String.fromCharCode(0x00fc) + 'nit coverage discussion';
|
|
73
|
+
expect(mapToTriageCategory(makeFinding({ body: nfcBody }))).toBe('architecture');
|
|
74
|
+
const nfdBody = 'u' + String.fromCharCode(0x0308) + 'nit coverage discussion';
|
|
75
|
+
expect(mapToTriageCategory(makeFinding({ body: nfdBody }))).toBe('architecture');
|
|
76
|
+
// Boundary-anchored NIT keywords still match when legitimately present,
|
|
77
|
+
// including CodeRabbit's real severity markup, which keeps a space or
|
|
78
|
+
// emoji before the token (parse-nits.ts `\s*`).
|
|
79
|
+
expect(mapToTriageCategory(makeFinding({ body: 'nit: prefer const here' }))).toBe('nit');
|
|
80
|
+
expect(mapToTriageCategory(makeFinding({ body: 'de quality_ | _🟡 minor_ | _⚡ quick' }))).toBe('nit');
|
|
81
|
+
// Inflections keep matching under the open trail.
|
|
82
|
+
expect(mapToTriageCategory(makeFinding({ body: 'two typos in this paragraph' }))).toBe('nit');
|
|
83
|
+
});
|
|
84
|
+
it('security/architecture/convention keep substring semantics — stems, inflections, negations (rounds 2–3 regression guards)', () => {
|
|
85
|
+
// The security list deliberately carries stems ('sanitiz', 'authenticat');
|
|
86
|
+
// round 2 proved a trailing \b killed every inflection, and round 3 proved
|
|
87
|
+
// a leading boundary killed the negation class — substring keeps both.
|
|
88
|
+
expect(mapToTriageCategory(makeFinding({ body: 'Please sanitize the user input' }))).toBe('security');
|
|
89
|
+
expect(mapToTriageCategory(makeFinding({ body: 'unsanitized input reaches the sink' }))).toBe('security');
|
|
90
|
+
expect(mapToTriageCategory(makeFinding({ body: 'unauthorized access is possible' }))).toBe('security');
|
|
91
|
+
expect(mapToTriageCategory(makeFinding({ body: 'authentication bypass possible' }))).toBe('security');
|
|
92
|
+
// Non-vacuous inflection guard: the body carries a nit-decoy ('Consider')
|
|
93
|
+
// AND a 'minor' severity, so if 'race condition' stops matching inside
|
|
94
|
+
// 'race conditions' the result is 'nit' (keyword path) or 'convention'
|
|
95
|
+
// (severity fallback) — observable either way; only a real architecture
|
|
96
|
+
// keyword hit yields the expected value. (Round-4 catch: with the default
|
|
97
|
+
// 'info' severity, the all-predicates-off mutant fell through to the
|
|
98
|
+
// architecture default and still passed.)
|
|
99
|
+
expect(mapToTriageCategory(makeFinding({ body: 'Consider the race conditions in the write path', severity: 'minor' }))).toBe('architecture');
|
|
100
|
+
// Architecture/convention leading-openness pinned (round-4 catch: this
|
|
101
|
+
// guard's title claimed three buckets but only security could fail):
|
|
102
|
+
// mid-word containments are DELIBERATE matches in these buckets.
|
|
103
|
+
expect(mapToTriageCategory(makeFinding({ body: 'decoupling the parser from the CLI' }))).toBe('architecture');
|
|
104
|
+
expect(mapToTriageCategory(makeFinding({ body: 'renaming this helper would read better' }))).toBe('convention');
|
|
105
|
+
});
|
|
49
106
|
it('falls back to architecture for unknown findings', () => {
|
|
50
107
|
const finding = makeFinding({ body: 'Something unusual happened here' });
|
|
51
108
|
expect(mapToTriageCategory(finding)).toBe('architecture');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage-severity-mapper.test.js","sourceRoot":"","sources":["../../src/parsers/triage-severity-mapper.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"triage-severity-mapper.test.js","sourceRoot":"","sources":["../../src/parsers/triage-severity-mapper.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
|
+
"version": "1.116.0",
|
|
4
4
|
"description": "Totem: local-first toolkit that keeps AI-agent work queryable, enforceable, and derivable as plain files in your codebase",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"smol-toml": "^1.6.1",
|
|
29
29
|
"yaml": "^2.4.0",
|
|
30
30
|
"zod": "^3.24.0",
|
|
31
|
-
"@mmnto/totem": "1.
|
|
31
|
+
"@mmnto/totem": "1.116.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@anthropic-ai/sdk": "^0.98.0",
|