@mmnto/cli 1.5.1 → 1.5.4

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 (181) hide show
  1. package/dist/commands/add-lesson.d.ts.map +1 -1
  2. package/dist/commands/add-lesson.js +33 -18
  3. package/dist/commands/add-lesson.js.map +1 -1
  4. package/dist/commands/add-lesson.test.d.ts +2 -0
  5. package/dist/commands/add-lesson.test.d.ts.map +1 -0
  6. package/dist/commands/add-lesson.test.js +63 -0
  7. package/dist/commands/add-lesson.test.js.map +1 -0
  8. package/dist/commands/add-secret.d.ts +5 -0
  9. package/dist/commands/add-secret.d.ts.map +1 -0
  10. package/dist/commands/add-secret.js +85 -0
  11. package/dist/commands/add-secret.js.map +1 -0
  12. package/dist/commands/add-secret.test.d.ts +2 -0
  13. package/dist/commands/add-secret.test.d.ts.map +1 -0
  14. package/dist/commands/add-secret.test.js +97 -0
  15. package/dist/commands/add-secret.test.js.map +1 -0
  16. package/dist/commands/audit.d.ts.map +1 -1
  17. package/dist/commands/audit.js +4 -4
  18. package/dist/commands/audit.js.map +1 -1
  19. package/dist/commands/bridge.d.ts +1 -1
  20. package/dist/commands/bridge.d.ts.map +1 -1
  21. package/dist/commands/bridge.js +7 -7
  22. package/dist/commands/bridge.js.map +1 -1
  23. package/dist/commands/briefing.d.ts.map +1 -1
  24. package/dist/commands/briefing.js +8 -6
  25. package/dist/commands/briefing.js.map +1 -1
  26. package/dist/commands/compile-templates.d.ts +1 -1
  27. package/dist/commands/compile-templates.d.ts.map +1 -1
  28. package/dist/commands/compile-templates.js +4 -3
  29. package/dist/commands/compile-templates.js.map +1 -1
  30. package/dist/commands/compile.d.ts.map +1 -1
  31. package/dist/commands/compile.js +2 -2
  32. package/dist/commands/compile.js.map +1 -1
  33. package/dist/commands/docs.d.ts.map +1 -1
  34. package/dist/commands/docs.js +22 -14
  35. package/dist/commands/docs.js.map +1 -1
  36. package/dist/commands/doctor.d.ts +1 -0
  37. package/dist/commands/doctor.d.ts.map +1 -1
  38. package/dist/commands/doctor.js +36 -1
  39. package/dist/commands/doctor.js.map +1 -1
  40. package/dist/commands/doctor.test.js +86 -2
  41. package/dist/commands/doctor.test.js.map +1 -1
  42. package/dist/commands/drift.d.ts.map +1 -1
  43. package/dist/commands/drift.js +3 -3
  44. package/dist/commands/drift.js.map +1 -1
  45. package/dist/commands/eject.d.ts.map +1 -1
  46. package/dist/commands/eject.js +3 -3
  47. package/dist/commands/eject.js.map +1 -1
  48. package/dist/commands/explain.d.ts.map +1 -1
  49. package/dist/commands/explain.js +4 -4
  50. package/dist/commands/explain.js.map +1 -1
  51. package/dist/commands/extract.d.ts.map +1 -1
  52. package/dist/commands/extract.js +8 -5
  53. package/dist/commands/extract.js.map +1 -1
  54. package/dist/commands/extract.test.js +53 -0
  55. package/dist/commands/extract.test.js.map +1 -1
  56. package/dist/commands/handoff.d.ts.map +1 -1
  57. package/dist/commands/handoff.js +4 -3
  58. package/dist/commands/handoff.js.map +1 -1
  59. package/dist/commands/init.d.ts +1 -2
  60. package/dist/commands/init.d.ts.map +1 -1
  61. package/dist/commands/init.js +24 -6
  62. package/dist/commands/init.js.map +1 -1
  63. package/dist/commands/install-hooks.d.ts.map +1 -1
  64. package/dist/commands/install-hooks.js +15 -0
  65. package/dist/commands/install-hooks.js.map +1 -1
  66. package/dist/commands/install-hooks.test.js +20 -0
  67. package/dist/commands/install-hooks.test.js.map +1 -1
  68. package/dist/commands/link.d.ts.map +1 -1
  69. package/dist/commands/link.js +1 -1
  70. package/dist/commands/link.js.map +1 -1
  71. package/dist/commands/lint.d.ts.map +1 -1
  72. package/dist/commands/lint.js +22 -1
  73. package/dist/commands/lint.js.map +1 -1
  74. package/dist/commands/lint.test.d.ts +2 -0
  75. package/dist/commands/lint.test.d.ts.map +1 -0
  76. package/dist/commands/lint.test.js +107 -0
  77. package/dist/commands/lint.test.js.map +1 -0
  78. package/dist/commands/list-secrets.d.ts +15 -0
  79. package/dist/commands/list-secrets.d.ts.map +1 -0
  80. package/dist/commands/list-secrets.js +104 -0
  81. package/dist/commands/list-secrets.js.map +1 -0
  82. package/dist/commands/list-secrets.test.d.ts +2 -0
  83. package/dist/commands/list-secrets.test.d.ts.map +1 -0
  84. package/dist/commands/list-secrets.test.js +85 -0
  85. package/dist/commands/list-secrets.test.js.map +1 -0
  86. package/dist/commands/list.d.ts.map +1 -1
  87. package/dist/commands/list.js +1 -1
  88. package/dist/commands/list.js.map +1 -1
  89. package/dist/commands/migrate-lessons.d.ts.map +1 -1
  90. package/dist/commands/migrate-lessons.js +6 -6
  91. package/dist/commands/migrate-lessons.js.map +1 -1
  92. package/dist/commands/remove-secret.d.ts +2 -0
  93. package/dist/commands/remove-secret.d.ts.map +1 -0
  94. package/dist/commands/remove-secret.js +53 -0
  95. package/dist/commands/remove-secret.js.map +1 -0
  96. package/dist/commands/remove-secret.test.d.ts +2 -0
  97. package/dist/commands/remove-secret.test.d.ts.map +1 -0
  98. package/dist/commands/remove-secret.test.js +85 -0
  99. package/dist/commands/remove-secret.test.js.map +1 -0
  100. package/dist/commands/review-learn-templates.d.ts +7 -0
  101. package/dist/commands/review-learn-templates.d.ts.map +1 -0
  102. package/dist/commands/review-learn-templates.js +36 -0
  103. package/dist/commands/review-learn-templates.js.map +1 -0
  104. package/dist/commands/review-learn-templates.test.d.ts +2 -0
  105. package/dist/commands/review-learn-templates.test.d.ts.map +1 -0
  106. package/dist/commands/review-learn-templates.test.js +29 -0
  107. package/dist/commands/review-learn-templates.test.js.map +1 -0
  108. package/dist/commands/review-learn.d.ts +13 -0
  109. package/dist/commands/review-learn.d.ts.map +1 -0
  110. package/dist/commands/review-learn.js +260 -0
  111. package/dist/commands/review-learn.js.map +1 -0
  112. package/dist/commands/review-learn.test.d.ts +2 -0
  113. package/dist/commands/review-learn.test.d.ts.map +1 -0
  114. package/dist/commands/review-learn.test.js +218 -0
  115. package/dist/commands/review-learn.test.js.map +1 -0
  116. package/dist/commands/run-compiled-rules.d.ts +2 -0
  117. package/dist/commands/run-compiled-rules.d.ts.map +1 -1
  118. package/dist/commands/run-compiled-rules.js +53 -8
  119. package/dist/commands/run-compiled-rules.js.map +1 -1
  120. package/dist/commands/run-compiled-rules.test.js +107 -1
  121. package/dist/commands/run-compiled-rules.test.js.map +1 -1
  122. package/dist/commands/search.d.ts.map +1 -1
  123. package/dist/commands/search.js +3 -3
  124. package/dist/commands/search.js.map +1 -1
  125. package/dist/commands/shield-classify.d.ts +10 -0
  126. package/dist/commands/shield-classify.d.ts.map +1 -0
  127. package/dist/commands/shield-classify.js +137 -0
  128. package/dist/commands/shield-classify.js.map +1 -0
  129. package/dist/commands/shield-classify.test.d.ts +2 -0
  130. package/dist/commands/shield-classify.test.d.ts.map +1 -0
  131. package/dist/commands/shield-classify.test.js +180 -0
  132. package/dist/commands/shield-classify.test.js.map +1 -0
  133. package/dist/commands/shield-hints.d.ts +16 -2
  134. package/dist/commands/shield-hints.d.ts.map +1 -1
  135. package/dist/commands/shield-hints.js +35 -20
  136. package/dist/commands/shield-hints.js.map +1 -1
  137. package/dist/commands/shield-hints.test.js +70 -1
  138. package/dist/commands/shield-hints.test.js.map +1 -1
  139. package/dist/commands/shield-templates.d.ts +66 -0
  140. package/dist/commands/shield-templates.d.ts.map +1 -1
  141. package/dist/commands/shield-templates.js +122 -0
  142. package/dist/commands/shield-templates.js.map +1 -1
  143. package/dist/commands/shield.d.ts +23 -4
  144. package/dist/commands/shield.d.ts.map +1 -1
  145. package/dist/commands/shield.js +232 -65
  146. package/dist/commands/shield.js.map +1 -1
  147. package/dist/commands/shield.test.js +225 -1
  148. package/dist/commands/shield.test.js.map +1 -1
  149. package/dist/commands/spec.d.ts +2 -3
  150. package/dist/commands/spec.d.ts.map +1 -1
  151. package/dist/commands/spec.js +11 -8
  152. package/dist/commands/spec.js.map +1 -1
  153. package/dist/commands/spec.test.js +18 -18
  154. package/dist/commands/spec.test.js.map +1 -1
  155. package/dist/commands/stats.d.ts.map +1 -1
  156. package/dist/commands/stats.js +3 -3
  157. package/dist/commands/stats.js.map +1 -1
  158. package/dist/commands/sync.d.ts.map +1 -1
  159. package/dist/commands/sync.js +14 -8
  160. package/dist/commands/sync.js.map +1 -1
  161. package/dist/commands/triage.d.ts.map +1 -1
  162. package/dist/commands/triage.js +5 -4
  163. package/dist/commands/triage.js.map +1 -1
  164. package/dist/commands/wrap.d.ts.map +1 -1
  165. package/dist/commands/wrap.js +1 -1
  166. package/dist/commands/wrap.js.map +1 -1
  167. package/dist/index.js +62 -3
  168. package/dist/index.js.map +1 -1
  169. package/dist/parsers/bot-review-parser.d.ts +48 -0
  170. package/dist/parsers/bot-review-parser.d.ts.map +1 -0
  171. package/dist/parsers/bot-review-parser.js +139 -0
  172. package/dist/parsers/bot-review-parser.js.map +1 -0
  173. package/dist/parsers/bot-review-parser.test.d.ts +2 -0
  174. package/dist/parsers/bot-review-parser.test.d.ts.map +1 -0
  175. package/dist/parsers/bot-review-parser.test.js +240 -0
  176. package/dist/parsers/bot-review-parser.test.js.map +1 -0
  177. package/dist/utils.d.ts +5 -1
  178. package/dist/utils.d.ts.map +1 -1
  179. package/dist/utils.js +4 -3
  180. package/dist/utils.js.map +1 -1
  181. package/package.json +2 -2
@@ -1,10 +1,6 @@
1
- import * as path from 'node:path';
2
- import { getDiffForReview } from '../git.js';
3
1
  import { bold, errorColor, log, success as successColor } from '../ui.js';
4
2
  import { formatLessonSection, formatResults, getSystemPrompt, loadConfig, loadEnv, partitionLessons, requireEmbedding, resolveConfigPath, runOrchestrator, sanitize, wrapXml, writeOutput, } from '../utils.js';
5
- import { appendLessons, flagSuspiciousLessons, parseLessons, selectLessons } from './extract.js';
6
- import { extractShieldHints } from './shield-hints.js';
7
- import { MAX_CODE_RESULTS, MAX_DIFF_CHARS, MAX_LESSONS, MAX_SESSION_RESULTS, MAX_SPEC_RESULTS, QUERY_DIFF_TRUNCATE, SHIELD_LEARN_SYSTEM_PROMPT, SPEC_SEARCH_POOL, STRUCTURAL_SYSTEM_PROMPT, SYSTEM_PROMPT, TAG, VERDICT_RE, } from './shield-templates.js';
3
+ import { MAX_CODE_RESULTS, MAX_DIFF_CHARS, MAX_LESSONS, MAX_SESSION_RESULTS, MAX_SPEC_RESULTS, QUERY_DIFF_TRUNCATE, SHIELD_LEARN_SYSTEM_PROMPT, ShieldStructuredVerdictSchema, SPEC_SEARCH_POOL, STRUCTURAL_SYSTEM_PROMPT_V2, SYSTEM_PROMPT_V2, TAG, VERDICT_RE, } from './shield-templates.js';
8
4
  // Re-export constants & prompts so existing consumers are not broken
9
5
  export { MAX_DIFF_CHARS, SHIELD_LEARN_SYSTEM_PROMPT, STRUCTURAL_SYSTEM_PROMPT, } from './shield-templates.js';
10
6
  async function retrieveContext(query, store) {
@@ -17,7 +13,8 @@ async function retrieveContext(query, store) {
17
13
  const { lessons, specs } = partitionLessons(allSpecs, MAX_LESSONS, MAX_SPEC_RESULTS);
18
14
  return { specs, sessions, code, lessons };
19
15
  }
20
- function buildSearchQuery(changedFiles, diff) {
16
+ async function buildSearchQuery(changedFiles, diff) {
17
+ const path = await import('node:path');
21
18
  const fileNames = changedFiles.map((f) => path.basename(f)).join(' ');
22
19
  const diffSnippet = diff.slice(0, QUERY_DIFF_TRUNCATE);
23
20
  return `${fileNames} ${diffSnippet}`.trim();
@@ -93,15 +90,126 @@ export function parseVerdict(content) {
93
90
  return null;
94
91
  return { pass: match[1] === 'PASS', reason: match[2].trim() };
95
92
  }
93
+ // ─── V2 Structured verdict parsing ───────────────────
94
+ /**
95
+ * Three-layer JSON extraction from LLM plain-text response.
96
+ * Layer 1: XML tags, Layer 2: markdown code fences, Layer 3: bare JSON.
97
+ * Returns null if all layers fail (caller falls back to V1 regex parseVerdict).
98
+ */
99
+ export function extractStructuredVerdict(content) {
100
+ // Layer 1 — XML tags (primary)
101
+ const xmlMatch = content.match(/<shield_verdict>([\s\S]*?)<\/shield_verdict>/);
102
+ if (xmlMatch) {
103
+ try {
104
+ const parsed = JSON.parse(xmlMatch[1]);
105
+ const result = ShieldStructuredVerdictSchema.safeParse(parsed);
106
+ if (result.success)
107
+ return result.data;
108
+ }
109
+ catch {
110
+ // Move to next layer
111
+ }
112
+ }
113
+ // Layer 2 — Markdown code fences (fallback)
114
+ const fenceMatch = content.match(/(?:```|~~~)(?:json)?\s*\n([\s\S]*?)\n\s*(?:```|~~~)/);
115
+ if (fenceMatch) {
116
+ try {
117
+ const parsed = JSON.parse(fenceMatch[1]);
118
+ const result = ShieldStructuredVerdictSchema.safeParse(parsed);
119
+ if (result.success)
120
+ return result.data;
121
+ }
122
+ catch {
123
+ // Move to next layer
124
+ }
125
+ }
126
+ // Layer 3 — Bare JSON (last resort, guarded by "findings" keyword)
127
+ const firstBrace = content.indexOf('{');
128
+ const lastBrace = content.lastIndexOf('}');
129
+ if (firstBrace !== -1 && lastBrace > firstBrace && content.includes('"findings"')) {
130
+ try {
131
+ const parsed = JSON.parse(content.slice(firstBrace, lastBrace + 1));
132
+ const result = ShieldStructuredVerdictSchema.safeParse(parsed);
133
+ if (result.success)
134
+ return result.data;
135
+ }
136
+ catch {
137
+ // All layers exhausted
138
+ }
139
+ }
140
+ return null;
141
+ }
142
+ /**
143
+ * Deterministic pass/fail based on findings.
144
+ * CRITICAL = fail, WARN/INFO = pass with advisory.
145
+ */
146
+ export function computeVerdict(verdict) {
147
+ const criticalCount = verdict.findings.filter((f) => f.severity === 'CRITICAL').length;
148
+ const warnCount = verdict.findings.filter((f) => f.severity === 'WARN').length;
149
+ const infoCount = verdict.findings.filter((f) => f.severity === 'INFO').length;
150
+ const pass = criticalCount === 0;
151
+ let reason;
152
+ if (pass && warnCount === 0 && infoCount === 0) {
153
+ reason = 'No issues found';
154
+ }
155
+ else if (pass) {
156
+ const parts = [];
157
+ if (warnCount > 0)
158
+ parts.push(`${warnCount} warning${warnCount !== 1 ? 's' : ''}`);
159
+ if (infoCount > 0)
160
+ parts.push(`${infoCount} info`);
161
+ reason = `No critical issues (${parts.join(', ')})`;
162
+ }
163
+ else {
164
+ const parts = [];
165
+ parts.push(`${criticalCount} critical`);
166
+ if (warnCount > 0)
167
+ parts.push(`${warnCount} warning${warnCount !== 1 ? 's' : ''}`);
168
+ reason = `${parts.join(', ')} found`;
169
+ }
170
+ return { pass, reason };
171
+ }
172
+ /**
173
+ * Human-readable output for stderr.
174
+ * Groups findings by severity (CRITICAL → WARN → INFO) with colored header.
175
+ */
176
+ export function formatVerdictForDisplay(verdict, pass) {
177
+ const lines = [];
178
+ // Header
179
+ const verdictLabel = pass ? successColor(bold('PASS')) : errorColor(bold('FAIL'));
180
+ lines.push(`Shield Review — ${verdictLabel}`);
181
+ lines.push('');
182
+ // Summary
183
+ lines.push(`Summary: ${verdict.summary}`);
184
+ // Group findings by severity order
185
+ const severityOrder = ['CRITICAL', 'WARN', 'INFO'];
186
+ const sorted = [...verdict.findings].sort((a, b) => severityOrder.indexOf(a.severity) - severityOrder.indexOf(b.severity));
187
+ if (sorted.length > 0) {
188
+ lines.push('');
189
+ for (const finding of sorted) {
190
+ let location = '';
191
+ if (finding.file) {
192
+ location = finding.line ? `${finding.file}:${finding.line} ` : `${finding.file} `;
193
+ }
194
+ lines.push(` ${finding.severity} [${finding.confidence}] ${location}— ${finding.message}`);
195
+ }
196
+ }
197
+ // Reason line
198
+ lines.push('');
199
+ const { reason } = computeVerdict(verdict);
200
+ lines.push(reason);
201
+ return lines.join('\n');
202
+ }
96
203
  /**
97
204
  * Write the .shield-passed gate flag on PASS so pre-push hooks can verify.
98
205
  */
99
- export async function writeShieldPassedFlag(cwd, totemDir) {
206
+ export async function writeShieldPassedFlag(cwd, totemDir, configRoot) {
100
207
  try {
208
+ const path = await import('node:path');
101
209
  const fs = await import('node:fs');
102
210
  const { execSync } = await import('node:child_process');
103
211
  const head = execSync('git rev-parse HEAD', { cwd, encoding: 'utf-8' }).trim();
104
- const cacheDir = path.join(cwd, totemDir, 'cache');
212
+ const cacheDir = path.join(configRoot ?? cwd, totemDir, 'cache');
105
213
  if (!fs.existsSync(cacheDir))
106
214
  fs.mkdirSync(cacheDir, { recursive: true });
107
215
  fs.writeFileSync(path.join(cacheDir, '.shield-passed'), head);
@@ -116,7 +224,9 @@ export async function writeShieldPassedFlag(cwd, totemDir) {
116
224
  }
117
225
  // ─── Deterministic mode (delegates to shared engine) ─
118
226
  // ─── Learn: extract lessons from failed verdict ─────
119
- export async function learnFromVerdict(verdictContent, diff, options, config, cwd) {
227
+ export async function learnFromVerdict(verdictContent, diff, options, config, cwd, configRoot) {
228
+ const path = await import('node:path');
229
+ const { appendLessons, flagSuspiciousLessons, parseLessons, selectLessons } = await import('./extract.js');
120
230
  log.info(TAG, 'Extracting lessons from failed verdict...'); // totem-ignore: hardcoded string
121
231
  // Assemble extraction prompt: shield verdict + diff as context
122
232
  const systemPrompt = getSystemPrompt('shield-learn', SHIELD_LEARN_SYSTEM_PROMPT, cwd, config.totemDir);
@@ -155,7 +265,15 @@ export async function learnFromVerdict(verdictContent, diff, options, config, cw
155
265
  }
156
266
  const prompt = sections.join('\n');
157
267
  log.dim(TAG, `Learn prompt: ${(prompt.length / 1024).toFixed(0)}KB`);
158
- const content = await runOrchestrator({ prompt, tag: TAG, options, config, cwd, temperature: 0 });
268
+ const content = await runOrchestrator({
269
+ prompt,
270
+ tag: TAG,
271
+ options,
272
+ config,
273
+ cwd,
274
+ configRoot,
275
+ temperature: 0,
276
+ });
159
277
  if (content == null)
160
278
  return; // --raw mode
161
279
  const lessons = parseLessons(content);
@@ -214,14 +332,63 @@ export async function learnFromVerdict(verdictContent, diff, options, config, cw
214
332
  log.warn(TAG, `Sync failed (lessons saved but not yet indexed): ${msg}`); // totem-ignore: msg from Error.message
215
333
  }
216
334
  }
335
+ // ─── Shared verdict handler ─────────────────────────
336
+ async function handleVerdictResult(content, diff, options, config, cwd, configRoot, modeLabel) {
337
+ const { TotemError } = await import('@mmnto/totem');
338
+ writeOutput(content, options.out);
339
+ if (options.out)
340
+ log.success(TAG, `Written to ${options.out}`);
341
+ if (options.raw)
342
+ return;
343
+ // Try structured parsing first (V2)
344
+ const structured = extractStructuredVerdict(content);
345
+ if (structured) {
346
+ const verdict = computeVerdict(structured);
347
+ const display = formatVerdictForDisplay(structured, verdict.pass);
348
+ console.error(display);
349
+ if (verdict.pass) {
350
+ await writeShieldPassedFlag(cwd, config.totemDir, configRoot);
351
+ }
352
+ else {
353
+ if (options.learn) {
354
+ await learnFromVerdict(JSON.stringify(structured, null, 2), diff, options, config, cwd, configRoot);
355
+ }
356
+ throw new TotemError('SHIELD_FAILED', `Shield ${modeLabel} review failed: ${verdict.reason}`, 'Fix the issues identified in the review above, then re-run `totem shield`.');
357
+ }
358
+ return;
359
+ }
360
+ // Fallback: V1 regex parsing (custom prompt overrides)
361
+ const verdict = parseVerdict(content);
362
+ if (verdict) {
363
+ const verdictLabel = verdict.pass ? successColor(bold('PASS')) : errorColor(bold('FAIL'));
364
+ const reason = verdict.reason ? ` — ${verdict.reason}` : '';
365
+ log.info(TAG, `Verdict: ${verdictLabel}${reason}`);
366
+ if (verdict.pass) {
367
+ await writeShieldPassedFlag(cwd, config.totemDir, configRoot);
368
+ }
369
+ else {
370
+ if (options.learn)
371
+ await learnFromVerdict(content, diff, options, config, cwd, configRoot);
372
+ throw new TotemError('SHIELD_FAILED', `Shield ${modeLabel} review failed: ${verdict.reason || 'no reason given'}`, 'Fix the issues identified in the review above, then re-run `totem shield`.');
373
+ }
374
+ }
375
+ else {
376
+ throw new TotemError('SHIELD_FAILED', 'Verdict not found in LLM output (defaulting to FAIL).', 'Fix LLM output format — expected structured JSON or VERDICT: PASS/FAIL.');
377
+ }
378
+ }
217
379
  // ─── Main command ───────────────────────────────────
218
380
  export async function shieldCommand(options) {
381
+ const path = await import('node:path');
219
382
  const { TotemConfigError, TotemError } = await import('@mmnto/totem');
383
+ const { filterDiffByPatterns, getDiffForReview } = await import('../git.js');
384
+ const { classifyChangedFiles } = await import('./shield-classify.js');
385
+ const { extractShieldContextAnnotations, extractShieldHints } = await import('./shield-hints.js');
220
386
  if (options.mode && options.mode !== 'standard' && options.mode !== 'structural') {
221
387
  throw new TotemConfigError(`Invalid --mode "${options.mode}". Use "standard" or "structural".`, 'Check `totem shield --help` for valid options.', 'CONFIG_INVALID');
222
388
  }
223
389
  const cwd = process.cwd();
224
390
  const configPath = resolveConfigPath(cwd);
391
+ const configRoot = path.dirname(configPath);
225
392
  loadEnv(cwd);
226
393
  const config = await loadConfig(configPath);
227
394
  // Get git diff — shared helper merges ignore patterns, tries staged/all
@@ -229,20 +396,61 @@ export async function shieldCommand(options) {
229
396
  const diffResult = await getDiffForReview(options, config, cwd, TAG);
230
397
  if (!diffResult) {
231
398
  // No changes = trivial pass — stamp so pre-push hooks don't block
232
- await writeShieldPassedFlag(cwd, config.totemDir);
399
+ await writeShieldPassedFlag(cwd, config.totemDir, configRoot);
233
400
  return;
234
401
  }
235
402
  const { diff, changedFiles } = diffResult;
236
- // Auto-detect smart review hints from the diff
237
- const smartHints = extractShieldHints(diff, changedFiles, cwd);
403
+ // Stage 1: Classify files fast-path for non-code-only diffs
404
+ const classification = classifyChangedFiles(changedFiles);
405
+ if (classification.allNonCode) {
406
+ log.info(TAG, 'Deterministic fast-path: all changed files are non-code');
407
+ log.dim(TAG, `Skipped: ${changedFiles.join(', ')}`);
408
+ await writeShieldPassedFlag(cwd, config.totemDir, configRoot);
409
+ return;
410
+ }
411
+ // Stage 2: Filter diff to code-only files for mixed diffs
412
+ let filteredDiff = diff;
413
+ let filteredFiles = changedFiles;
414
+ if (!classification.allCode && classification.nonCodeFiles.length > 0) {
415
+ filteredDiff = await filterDiffByPatterns(diff, classification.nonCodeFiles);
416
+ filteredFiles = classification.codeFiles;
417
+ if (!filteredDiff.trim()) {
418
+ // After filtering, no code diff remains — fast-path PASS
419
+ log.info(TAG, 'Deterministic fast-path: no code changes after filtering non-code files');
420
+ await writeShieldPassedFlag(cwd, config.totemDir, configRoot);
421
+ return;
422
+ }
423
+ log.dim(TAG, `Filtered ${classification.nonCodeFiles.length} non-code file(s) from diff`);
424
+ }
425
+ // Extract annotations once (shared between hints and ledger)
426
+ const annotations = extractShieldContextAnnotations(filteredFiles, cwd);
427
+ // Auto-detect smart review hints from the filtered diff
428
+ const smartHints = extractShieldHints(filteredDiff, filteredFiles, cwd, annotations);
238
429
  if (smartHints.length > 0) {
239
430
  log.dim(TAG, `${smartHints.length} smart hint(s) detected`);
240
431
  }
432
+ // Trap Ledger: record override events for shield-context / totem-context annotations
433
+ if (annotations.length > 0) {
434
+ const { appendLedgerEvent } = await import('@mmnto/totem');
435
+ const resolvedTotemDir = path.join(configRoot, config.totemDir);
436
+ for (const ann of annotations) {
437
+ appendLedgerEvent(resolvedTotemDir, {
438
+ timestamp: new Date().toISOString(),
439
+ type: 'override',
440
+ ruleId: 'shield-context',
441
+ file: ann.file,
442
+ line: ann.line,
443
+ justification: ann.text,
444
+ source: 'shield',
445
+ }, (msg) => log.dim(TAG, msg));
446
+ }
447
+ log.dim(TAG, `${annotations.length} annotation(s) recorded in Trap Ledger`);
448
+ }
241
449
  // Structural mode — context-blind LLM review, no embeddings, no Totem knowledge
242
450
  if (options.mode === 'structural') {
243
451
  log.info(TAG, 'Running structural review (context-blind, no Totem knowledge)...');
244
- const systemPrompt = getSystemPrompt('shield-structural', STRUCTURAL_SYSTEM_PROMPT, cwd, config.totemDir);
245
- const prompt = assembleStructuralPrompt(diff, changedFiles, systemPrompt, smartHints);
452
+ const systemPrompt = getSystemPrompt('shield-structural', STRUCTURAL_SYSTEM_PROMPT_V2, cwd, config.totemDir);
453
+ const prompt = assembleStructuralPrompt(filteredDiff, filteredFiles, systemPrompt, smartHints);
246
454
  log.dim(TAG, `Prompt: ${(prompt.length / 1024).toFixed(0)}KB`);
247
455
  const content = await runOrchestrator({
248
456
  prompt,
@@ -250,34 +458,14 @@ export async function shieldCommand(options) {
250
458
  options,
251
459
  config,
252
460
  cwd,
461
+ configRoot,
253
462
  temperature: 0,
254
463
  });
255
464
  if (content == null && !options.raw) {
256
465
  throw new TotemError('SHIELD_FAILED', 'Orchestrator returned no content (defaulting to FAIL).', 'Check your orchestrator API key and model configuration.');
257
466
  }
258
467
  if (content != null) {
259
- writeOutput(content, options.out);
260
- if (options.out)
261
- log.success(TAG, `Written to ${options.out}`);
262
- if (!options.raw) {
263
- const verdict = parseVerdict(content);
264
- if (verdict) {
265
- const verdictLabel = verdict.pass ? successColor(bold('PASS')) : errorColor(bold('FAIL'));
266
- const reason = verdict.reason ? ` — ${verdict.reason}` : '';
267
- log.info(TAG, `Verdict: ${verdictLabel}${reason}`);
268
- if (verdict.pass) {
269
- await writeShieldPassedFlag(cwd, config.totemDir);
270
- }
271
- else {
272
- if (options.learn)
273
- await learnFromVerdict(content, diff, options, config, cwd);
274
- throw new TotemError('SHIELD_FAILED', `Shield structural review failed: ${verdict.reason || 'no reason given'}`, 'Fix the issues identified in the review above, then re-run `totem shield`.');
275
- }
276
- }
277
- else {
278
- throw new TotemError('SHIELD_FAILED', 'Verdict not found in LLM output (defaulting to FAIL).', 'Fix LLM output format — expected VERDICT: PASS/FAIL.');
279
- }
280
- }
468
+ await handleVerdictResult(content, diff, options, config, cwd, configRoot, 'structural');
281
469
  }
282
470
  return;
283
471
  }
@@ -288,16 +476,16 @@ export async function shieldCommand(options) {
288
476
  const embedder = createEmbedder(embedding);
289
477
  const store = new Store(path.join(cwd, config.lanceDir), embedder);
290
478
  await store.connect();
291
- // Retrieve context from LanceDB
292
- const query = buildSearchQuery(changedFiles, diff);
479
+ // Retrieve context from LanceDB — use original changedFiles for better search relevance
480
+ const query = await buildSearchQuery(changedFiles, diff);
293
481
  log.info(TAG, 'Querying Totem index...');
294
482
  const context = await retrieveContext(query, store);
295
483
  const totalResults = context.specs.length + context.sessions.length + context.code.length + context.lessons.length;
296
484
  log.info(TAG, `Found: ${context.specs.length} specs, ${context.sessions.length} sessions, ${context.code.length} code, ${context.lessons.length} lessons`);
297
485
  // Resolve system prompt (allow .totem/prompts/shield.md override)
298
- const systemPrompt = getSystemPrompt('shield', SYSTEM_PROMPT, cwd, config.totemDir);
299
- // Assemble prompt
300
- const prompt = assemblePrompt(diff, changedFiles, context, systemPrompt, smartHints);
486
+ const systemPrompt = getSystemPrompt('shield', SYSTEM_PROMPT_V2, cwd, config.totemDir);
487
+ // Assemble prompt — use filtered diff/files for LLM review
488
+ const prompt = assemblePrompt(filteredDiff, filteredFiles, context, systemPrompt, smartHints);
301
489
  log.dim(TAG, `Prompt: ${(prompt.length / 1024).toFixed(0)}KB`);
302
490
  const content = await runOrchestrator({
303
491
  prompt,
@@ -305,33 +493,12 @@ export async function shieldCommand(options) {
305
493
  options,
306
494
  config,
307
495
  cwd,
496
+ configRoot,
308
497
  totalResults,
309
498
  temperature: 0,
310
499
  });
311
500
  if (content != null) {
312
- writeOutput(content, options.out);
313
- if (options.out)
314
- log.success(TAG, `Written to ${options.out}`);
315
- // Parse verdict and gate on failure (skip in --raw mode — no LLM output)
316
- if (!options.raw) {
317
- const verdict = parseVerdict(content);
318
- if (verdict) {
319
- const verdictLabel = verdict.pass ? successColor(bold('PASS')) : errorColor(bold('FAIL'));
320
- const reason = verdict.reason ? ` — ${verdict.reason}` : '';
321
- log.info(TAG, `Verdict: ${verdictLabel}${reason}`);
322
- if (verdict.pass) {
323
- await writeShieldPassedFlag(cwd, config.totemDir);
324
- }
325
- else {
326
- if (options.learn)
327
- await learnFromVerdict(content, diff, options, config, cwd);
328
- throw new TotemError('SHIELD_FAILED', `Shield review failed: ${verdict.reason || 'no reason given'}`, 'Fix the issues identified in the review above, then re-run `totem shield`.');
329
- }
330
- }
331
- else {
332
- throw new TotemError('SHIELD_FAILED', 'Verdict not found in LLM output (defaulting to FAIL).', 'Fix LLM output format — expected VERDICT: PASS/FAIL.');
333
- }
334
- }
501
+ await handleVerdictResult(content, diff, options, config, cwd, configRoot, 'standard');
335
502
  }
336
503
  }
337
504
  //# sourceMappingURL=shield.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shield.js","sourceRoot":"","sources":["../../src/commands/shield.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shield.js","sourceRoot":"","sources":["../../src/commands/shield.ts"],"names":[],"mappings":"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"}