@mmnto/cli 1.6.0 → 1.6.2

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 (104) hide show
  1. package/dist/adapters/gh-utils.d.ts.map +1 -1
  2. package/dist/adapters/gh-utils.js +1 -0
  3. package/dist/adapters/gh-utils.js.map +1 -1
  4. package/dist/adapters/github-cli-pr.d.ts.map +1 -1
  5. package/dist/adapters/github-cli-pr.js +1 -0
  6. package/dist/adapters/github-cli-pr.js.map +1 -1
  7. package/dist/adapters/github-cli.d.ts.map +1 -1
  8. package/dist/adapters/github-cli.js +1 -0
  9. package/dist/adapters/github-cli.js.map +1 -1
  10. package/dist/commands/check.js +2 -2
  11. package/dist/commands/check.test.js +9 -8
  12. package/dist/commands/check.test.js.map +1 -1
  13. package/dist/commands/compile-templates.d.ts +1 -1
  14. package/dist/commands/compile-templates.d.ts.map +1 -1
  15. package/dist/commands/compile-templates.js +5 -2
  16. package/dist/commands/compile-templates.js.map +1 -1
  17. package/dist/commands/compile.d.ts +1 -0
  18. package/dist/commands/compile.d.ts.map +1 -1
  19. package/dist/commands/compile.js +16 -0
  20. package/dist/commands/compile.js.map +1 -1
  21. package/dist/commands/config-drift.test.js +5 -4
  22. package/dist/commands/config-drift.test.js.map +1 -1
  23. package/dist/commands/config.d.ts +4 -0
  24. package/dist/commands/config.d.ts.map +1 -0
  25. package/dist/commands/config.js +39 -0
  26. package/dist/commands/config.js.map +1 -0
  27. package/dist/commands/config.test.d.ts +2 -0
  28. package/dist/commands/config.test.d.ts.map +1 -0
  29. package/dist/commands/config.test.js +117 -0
  30. package/dist/commands/config.test.js.map +1 -0
  31. package/dist/commands/docs.d.ts +1 -1
  32. package/dist/commands/docs.js +2 -2
  33. package/dist/commands/eject.d.ts.map +1 -1
  34. package/dist/commands/eject.js +1 -1
  35. package/dist/commands/eject.js.map +1 -1
  36. package/dist/commands/exemption.d.ts +7 -0
  37. package/dist/commands/exemption.d.ts.map +1 -0
  38. package/dist/commands/exemption.js +166 -0
  39. package/dist/commands/exemption.js.map +1 -0
  40. package/dist/commands/exemption.test.d.ts +2 -0
  41. package/dist/commands/exemption.test.d.ts.map +1 -0
  42. package/dist/commands/exemption.test.js +258 -0
  43. package/dist/commands/exemption.test.js.map +1 -0
  44. package/dist/commands/init-templates.d.ts +4 -4
  45. package/dist/commands/init-templates.js +5 -5
  46. package/dist/commands/init.d.ts.map +1 -1
  47. package/dist/commands/init.js +5 -3
  48. package/dist/commands/init.js.map +1 -1
  49. package/dist/commands/install-hooks.d.ts +8 -1
  50. package/dist/commands/install-hooks.d.ts.map +1 -1
  51. package/dist/commands/install-hooks.js +123 -24
  52. package/dist/commands/install-hooks.js.map +1 -1
  53. package/dist/commands/install-hooks.test.js +347 -54
  54. package/dist/commands/install-hooks.test.js.map +1 -1
  55. package/dist/commands/lesson.d.ts +3 -0
  56. package/dist/commands/lesson.d.ts.map +1 -0
  57. package/dist/commands/lesson.js +90 -0
  58. package/dist/commands/lesson.js.map +1 -0
  59. package/dist/commands/lesson.test.d.ts +2 -0
  60. package/dist/commands/lesson.test.d.ts.map +1 -0
  61. package/dist/commands/lesson.test.js +187 -0
  62. package/dist/commands/lesson.test.js.map +1 -0
  63. package/dist/commands/lint.d.ts.map +1 -1
  64. package/dist/commands/lint.js +52 -0
  65. package/dist/commands/lint.js.map +1 -1
  66. package/dist/commands/review-alias.test.d.ts +2 -0
  67. package/dist/commands/review-alias.test.d.ts.map +1 -0
  68. package/dist/commands/review-alias.test.js +49 -0
  69. package/dist/commands/review-alias.test.js.map +1 -0
  70. package/dist/commands/review-learn.js +1 -1
  71. package/dist/commands/review-learn.js.map +1 -1
  72. package/dist/commands/rule.d.ts +4 -0
  73. package/dist/commands/rule.d.ts.map +1 -0
  74. package/dist/commands/rule.js +154 -0
  75. package/dist/commands/rule.js.map +1 -0
  76. package/dist/commands/rule.test.d.ts +2 -0
  77. package/dist/commands/rule.test.d.ts.map +1 -0
  78. package/dist/commands/rule.test.js +315 -0
  79. package/dist/commands/rule.test.js.map +1 -0
  80. package/dist/commands/run-compiled-rules.d.ts.map +1 -1
  81. package/dist/commands/run-compiled-rules.js +22 -0
  82. package/dist/commands/run-compiled-rules.js.map +1 -1
  83. package/dist/commands/run-compiled-rules.test.js +75 -0
  84. package/dist/commands/run-compiled-rules.test.js.map +1 -1
  85. package/dist/commands/shield-hints.d.ts.map +1 -1
  86. package/dist/commands/shield-hints.js +6 -0
  87. package/dist/commands/shield-hints.js.map +1 -1
  88. package/dist/commands/shield-hints.test.js +16 -0
  89. package/dist/commands/shield-hints.test.js.map +1 -1
  90. package/dist/commands/shield.d.ts.map +1 -1
  91. package/dist/commands/shield.js +8 -3
  92. package/dist/commands/shield.js.map +1 -1
  93. package/dist/commands/spec-templates.d.ts +1 -1
  94. package/dist/commands/spec-templates.js +1 -1
  95. package/dist/commands/triage-pr.d.ts.map +1 -1
  96. package/dist/commands/triage-pr.js +13 -10
  97. package/dist/commands/triage-pr.js.map +1 -1
  98. package/dist/index.js +227 -37
  99. package/dist/index.js.map +1 -1
  100. package/dist/parsers/bot-review-parser.d.ts +2 -0
  101. package/dist/parsers/bot-review-parser.d.ts.map +1 -1
  102. package/dist/parsers/bot-review-parser.js +2 -0
  103. package/dist/parsers/bot-review-parser.js.map +1 -1
  104. package/package.json +2 -2
@@ -0,0 +1,117 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ // ─── Mock utils to bypass real config loading ───────────
3
+ const MOCK_CONFIG = {
4
+ targets: [{ glob: '**/*.ts' }, { glob: '**/*.js' }],
5
+ totemDir: '.totem',
6
+ ignorePatterns: ['node_modules'],
7
+ orchestrator: {
8
+ defaultModel: 'gemini-3-flash-preview',
9
+ temperature: 0,
10
+ },
11
+ strictGovernance: true,
12
+ };
13
+ vi.mock('../utils.js', async () => {
14
+ const actual = await vi.importActual('../utils.js');
15
+ return {
16
+ ...actual,
17
+ resolveConfigPath: () => '/fake/totem.config.ts',
18
+ loadConfig: async () => MOCK_CONFIG,
19
+ };
20
+ });
21
+ // ─── Tests ──────────────────────────────────────────────
22
+ describe('getNestedValue', () => {
23
+ let getNestedValue;
24
+ beforeEach(async () => {
25
+ ({ getNestedValue } = await import('./config.js'));
26
+ });
27
+ it('resolves simple top-level key', () => {
28
+ expect(getNestedValue({ foo: 'bar' }, 'foo')).toBe('bar');
29
+ });
30
+ it('resolves nested dot-path', () => {
31
+ const obj = { orchestrator: { defaultModel: 'gpt-4' } };
32
+ expect(getNestedValue(obj, 'orchestrator.defaultModel')).toBe('gpt-4');
33
+ });
34
+ it('resolves array index', () => {
35
+ const obj = { targets: [{ glob: '**/*.ts' }, { glob: '**/*.js' }] };
36
+ expect(getNestedValue(obj, 'targets.0.glob')).toBe('**/*.ts');
37
+ });
38
+ it('returns undefined for missing intermediate key', () => {
39
+ expect(getNestedValue({ foo: 'bar' }, 'baz.qux')).toBeUndefined();
40
+ });
41
+ it('returns undefined for empty path', () => {
42
+ expect(getNestedValue({ foo: 'bar' }, '')).toBeUndefined();
43
+ });
44
+ it('returns full object when key points to an object', () => {
45
+ const obj = { orchestrator: { defaultModel: 'gpt-4', temperature: 0 } };
46
+ expect(getNestedValue(obj, 'orchestrator')).toEqual({
47
+ defaultModel: 'gpt-4',
48
+ temperature: 0,
49
+ });
50
+ });
51
+ });
52
+ describe('configGetCommand', () => {
53
+ let savedExitCode;
54
+ beforeEach(() => {
55
+ savedExitCode = process.exitCode;
56
+ process.exitCode = undefined;
57
+ });
58
+ afterEach(() => {
59
+ process.exitCode = savedExitCode;
60
+ vi.restoreAllMocks();
61
+ });
62
+ it('prints primitive value to stdout', async () => {
63
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
64
+ vi.spyOn(console, 'error').mockImplementation(() => { });
65
+ const { configGetCommand } = await import('./config.js');
66
+ await configGetCommand('totemDir');
67
+ expect(logSpy).toHaveBeenCalledWith('.totem');
68
+ });
69
+ it('prints boolean value to stdout', async () => {
70
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
71
+ vi.spyOn(console, 'error').mockImplementation(() => { });
72
+ const { configGetCommand } = await import('./config.js');
73
+ await configGetCommand('strictGovernance');
74
+ expect(logSpy).toHaveBeenCalledWith('true');
75
+ });
76
+ it('prints nested primitive value to stdout', async () => {
77
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
78
+ vi.spyOn(console, 'error').mockImplementation(() => { });
79
+ const { configGetCommand } = await import('./config.js');
80
+ await configGetCommand('orchestrator.defaultModel');
81
+ expect(logSpy).toHaveBeenCalledWith('gemini-3-flash-preview');
82
+ });
83
+ it('prints object value as JSON', async () => {
84
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
85
+ vi.spyOn(console, 'error').mockImplementation(() => { });
86
+ const { configGetCommand } = await import('./config.js');
87
+ await configGetCommand('orchestrator');
88
+ const output = logSpy.mock.calls[0]?.[0];
89
+ const parsed = JSON.parse(output);
90
+ expect(parsed).toEqual({
91
+ defaultModel: 'gemini-3-flash-preview',
92
+ temperature: 0,
93
+ });
94
+ });
95
+ it('prints array value as JSON', async () => {
96
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
97
+ vi.spyOn(console, 'error').mockImplementation(() => { });
98
+ const { configGetCommand } = await import('./config.js');
99
+ await configGetCommand('targets');
100
+ const output = logSpy.mock.calls[0]?.[0];
101
+ const parsed = JSON.parse(output);
102
+ expect(parsed).toEqual([{ glob: '**/*.ts' }, { glob: '**/*.js' }]);
103
+ });
104
+ it('throws TotemConfigError for missing key', async () => {
105
+ vi.spyOn(console, 'log').mockImplementation(() => { });
106
+ vi.spyOn(console, 'error').mockImplementation(() => { });
107
+ const { configGetCommand } = await import('./config.js');
108
+ await expect(configGetCommand('nonexistent.key')).rejects.toThrow('nonexistent.key');
109
+ });
110
+ });
111
+ describe('configSetCommand', () => {
112
+ it('throws TotemConfigError with not-implemented message', async () => {
113
+ const { configSetCommand } = await import('./config.js');
114
+ await expect(configSetCommand('foo', 'bar')).rejects.toThrow('not yet implemented');
115
+ });
116
+ });
117
+ //# sourceMappingURL=config.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/commands/config.test.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import type { DocTarget } from '@mmnto/totem';
5
5
  * Explicit `userFacing` flag wins; otherwise falls back to readme.md detection.
6
6
  */
7
7
  export declare function resolveIsUserFacing(doc: DocTarget): boolean;
8
- export declare const DOCS_SYSTEM_PROMPT = "# Docs System Prompt \u2014 Automated Documentation Sync\n\n## Identity & Role\nYou are a meticulous Technical Writer responsible for keeping project documentation accurate and up-to-date. You rewrite documentation files to reflect the latest project state.\n\n## Core Mission\nGiven a documentation file, its purpose, and recent project changes (git log, closed issues), produce an updated version of the entire file that accurately reflects the current state.\n\n## Critical Rules\n- **Full Rewrite:** Output the ENTIRE updated file content \u2014 not a diff, not a patch, the complete file.\n- **Preserve Structure:** Maintain the existing document's structure, tone, and formatting conventions unless changes require restructuring.\n- **Evidence-Based:** Only update information that is supported by the provided git log, closed issues, or active work context. Do NOT invent features or status changes.\n- **Phase Numbering:** If the document references phases, use ONLY the phase numbering from the provided active_work.md context. Do NOT change or renumber phases.\n- **Staleness Protocol:** The provided active_work context is the Ground Truth for what is currently in progress. If the existing document references tickets, milestones, or features as \"upcoming\", \"planned\", or \"in progress\" but they DO NOT appear in the active_work context, treat them as completed or removed. Aggressively rewrite forward-looking sections (roadmaps, active work, upcoming features) to match the Ground Truth. Preserve historical sections (changelogs, completed milestones) as-is.\n- **Empty Context Safety:** If the active_work context is not provided, do not delete roadmap sections. Instead, preserve existing content and add a note that the information may be stale.\n- **Manual Content:** If `<manual_content>` blocks are provided, include them VERBATIM in the appropriate section of the document. Do NOT rewrite, summarize, or omit any part of manual content. These are hand-written by the maintainer and must survive regeneration.\n- **Checkbox Integrity:** NEVER change the checked/unchecked state of markdown checkboxes (`[x]` / `[ ]`) unless the commit history explicitly contains a revert, deprecation, or re-opening of the referenced item. Priority rankings in active_work.md are NOT evidence of completion status.\n- **XML Wrapper (MANDATORY):** Wrap your ENTIRE output inside `<updated_document>` and `</updated_document>` tags. No text before or after the tags. No markdown code fences. Example:\n\n```\n<updated_document>\n# My Document\nUpdated content here...\n</updated_document>\n```\n\n## Pinned Content (DO NOT change)\n- **README hook**: The opening italic is: \"AI coding agents are brilliant goldfish. Totem gives them a memory.\" Do not remove or rephrase this line.\n- **README value prop**: The core pitch ends with: \"Write what you learned in plain English. Totem compiles it into a rule. That mistake physically cannot happen again.\" Do not weaken this language.\n- **Flywheel diagram**: The mermaid diagram showing Observe \u2192 Learn \u2192 Enforce must remain. Do not remove or replace it.\n- **Performance claim**: The rule count changes with each compile. Read the current count from the LIVE METRICS section if available, otherwise keep the existing number.\n- **COSS Covenant**: The \"Open Core Covenant\" section near the bottom links to COVENANT.md. Do not remove it.\n\n## Command Glossary (DO NOT confuse these)\n- **`totem lint`**: Runs compiled AST/regex rules against a diff. Zero LLM. Fast (~2s). No API keys needed. Used in pre-push hooks and CI. Lives in the Lite configuration tier.\n- **`totem shield`**: AI-powered code review. Queries LanceDB for context, sends diff + knowledge to an LLM. Slow (~18s). Requires API keys. Used before opening PRs. Lives in the Full configuration tier.\n- These are DIFFERENT commands with DIFFERENT purposes. Never describe `shield` as \"deterministic\" or `lint` as \"AI-powered.\"\n\n## Writing Style (MANDATORY)\n- **No Marketing Language:** NEVER use marketing-centric terms: \"comprehensive\", \"robust\", \"seamless\", \"cutting-edge\", \"state-of-the-art\", \"revolutionary\", \"guarantee\", \"guarantees\". Use objective, factual descriptions instead. Say what the feature does, not how impressive it is.\n\n## Formatting Rules\n- **Sub-Bullet Threshold:** When a feature list exceeds 3 items, use nested sub-bullets instead of comma-separated inline lists. Group related items into named categories (e.g., \"Security:\", \"DX:\", \"Orchestration:\").\n- **Completed Phase Summary:** Phases marked `[x]` should be summarized in 1-2 sentences max. Do NOT expand completed phases with every PR number \u2014 use categorized sub-bullets for the key capability areas only.\n- **Line Length:** No single bullet point should exceed two short sentences. If it does, break it into sub-bullets or summarize. Readability is more important than completeness.\n- **No Issue/PR References:** NEVER include GitHub issue or PR references (e.g., `#714`, `(#801)`, `(#714, #801)`) in user-facing documentation. These are internal tracking artifacts. Describe features by what they do, not by which ticket shipped them.\n- **No Internal Jargon:** Do not use internal terms like \"Pipeline 1\", \"Pipeline 2\", \"ADR-058\", or \"Proposal 186\" in user-facing copy. Use plain language that a new user would understand.\n- **No Maintenance Comments:** Do not include comments about how documentation is maintained, generated, or structured. The output is the final document, not a template.\n";
8
+ export declare const DOCS_SYSTEM_PROMPT = "# Docs System Prompt \u2014 Automated Documentation Sync\n\n## Identity & Role\nYou are a meticulous Technical Writer responsible for keeping project documentation accurate and up-to-date. You rewrite documentation files to reflect the latest project state.\n\n## Core Mission\nGiven a documentation file, its purpose, and recent project changes (git log, closed issues), produce an updated version of the entire file that accurately reflects the current state.\n\n## Critical Rules\n- **Full Rewrite:** Output the ENTIRE updated file content \u2014 not a diff, not a patch, the complete file.\n- **Preserve Structure:** Maintain the existing document's structure, tone, and formatting conventions unless changes require restructuring.\n- **Evidence-Based:** Only update information that is supported by the provided git log, closed issues, or active work context. Do NOT invent features or status changes.\n- **Phase Numbering:** If the document references phases, use ONLY the phase numbering from the provided active_work.md context. Do NOT change or renumber phases.\n- **Staleness Protocol:** The provided active_work context is the Ground Truth for what is currently in progress. If the existing document references tickets, milestones, or features as \"upcoming\", \"planned\", or \"in progress\" but they DO NOT appear in the active_work context, treat them as completed or removed. Aggressively rewrite forward-looking sections (roadmaps, active work, upcoming features) to match the Ground Truth. Preserve historical sections (changelogs, completed milestones) as-is.\n- **Empty Context Safety:** If the active_work context is not provided, do not delete roadmap sections. Instead, preserve existing content and add a note that the information may be stale.\n- **Manual Content:** If `<manual_content>` blocks are provided, include them VERBATIM in the appropriate section of the document. Do NOT rewrite, summarize, or omit any part of manual content. These are hand-written by the maintainer and must survive regeneration.\n- **Checkbox Integrity:** NEVER change the checked/unchecked state of markdown checkboxes (`[x]` / `[ ]`) unless the commit history explicitly contains a revert, deprecation, or re-opening of the referenced item. Priority rankings in active_work.md are NOT evidence of completion status.\n- **XML Wrapper (MANDATORY):** Wrap your ENTIRE output inside `<updated_document>` and `</updated_document>` tags. No text before or after the tags. No markdown code fences. Example:\n\n```\n<updated_document>\n# My Document\nUpdated content here...\n</updated_document>\n```\n\n## Pinned Content (DO NOT change)\n- **README hook**: The opening italic is: \"AI coding agents are brilliant goldfish. Totem gives them a memory.\" Do not remove or rephrase this line.\n- **README value prop**: The core pitch ends with: \"Write what you learned in plain English. Totem compiles it into a rule. That mistake physically cannot happen again.\" Do not weaken this language.\n- **Flywheel diagram**: The mermaid diagram showing Observe \u2192 Learn \u2192 Enforce must remain. Do not remove or replace it.\n- **Performance claim**: The rule count changes with each compile. Read the current count from the LIVE METRICS section if available, otherwise keep the existing number.\n- **COSS Covenant**: The \"Open Core Covenant\" section near the bottom links to COVENANT.md. Do not remove it.\n\n## Command Glossary (DO NOT confuse these)\n- **`totem lint`**: Runs compiled AST/regex rules against a diff. Zero LLM. Fast (~2s). No API keys needed. Used in pre-push hooks and CI. Lives in the Lite configuration tier.\n- **`totem review`**: AI-powered code review. Queries LanceDB for context, sends diff + knowledge to an LLM. Slow (~18s). Requires API keys. Used before opening PRs. Lives in the Full configuration tier.\n- These are DIFFERENT commands with DIFFERENT purposes. Never describe `review` as \"deterministic\" or `lint` as \"AI-powered.\"\n\n## Writing Style (MANDATORY)\n- **No Marketing Language:** NEVER use marketing-centric terms: \"comprehensive\", \"robust\", \"seamless\", \"cutting-edge\", \"state-of-the-art\", \"revolutionary\", \"guarantee\", \"guarantees\". Use objective, factual descriptions instead. Say what the feature does, not how impressive it is.\n\n## Formatting Rules\n- **Sub-Bullet Threshold:** When a feature list exceeds 3 items, use nested sub-bullets instead of comma-separated inline lists. Group related items into named categories (e.g., \"Security:\", \"DX:\", \"Orchestration:\").\n- **Completed Phase Summary:** Phases marked `[x]` should be summarized in 1-2 sentences max. Do NOT expand completed phases with every PR number \u2014 use categorized sub-bullets for the key capability areas only.\n- **Line Length:** No single bullet point should exceed two short sentences. If it does, break it into sub-bullets or summarize. Readability is more important than completeness.\n- **No Issue/PR References:** NEVER include GitHub issue or PR references (e.g., `#714`, `(#801)`, `(#714, #801)`) in user-facing documentation. These are internal tracking artifacts. Describe features by what they do, not by which ticket shipped them.\n- **No Internal Jargon:** Do not use internal terms like \"Pipeline 1\", \"Pipeline 2\", \"ADR-058\", or \"Proposal 186\" in user-facing copy. Use plain language that a new user would understand.\n- **No Maintenance Comments:** Do not include comments about how documentation is maintained, generated, or structured. The output is the final document, not a template.\n";
9
9
  interface ReleaseContext {
10
10
  tag: string | null;
11
11
  gitLog: string;
@@ -52,8 +52,8 @@ Updated content here...
52
52
 
53
53
  ## Command Glossary (DO NOT confuse these)
54
54
  - **\`totem lint\`**: Runs compiled AST/regex rules against a diff. Zero LLM. Fast (~2s). No API keys needed. Used in pre-push hooks and CI. Lives in the Lite configuration tier.
55
- - **\`totem shield\`**: AI-powered code review. Queries LanceDB for context, sends diff + knowledge to an LLM. Slow (~18s). Requires API keys. Used before opening PRs. Lives in the Full configuration tier.
56
- - These are DIFFERENT commands with DIFFERENT purposes. Never describe \`shield\` as "deterministic" or \`lint\` as "AI-powered."
55
+ - **\`totem review\`**: AI-powered code review. Queries LanceDB for context, sends diff + knowledge to an LLM. Slow (~18s). Requires API keys. Used before opening PRs. Lives in the Full configuration tier.
56
+ - These are DIFFERENT commands with DIFFERENT purposes. Never describe \`review\` as "deterministic" or \`lint\` as "AI-powered."
57
57
 
58
58
  ## Writing Style (MANDATORY)
59
59
  - **No Marketing Language:** NEVER use marketing-centric terms: "comprehensive", "robust", "seamless", "cutting-edge", "state-of-the-art", "revolutionary", "guarantee", "guarantees". Use objective, factual descriptions instead. Say what the feature does, not how impressive it is.
@@ -1 +1 @@
1
- {"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA4ED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAE9E;AAqJD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEvE"}
1
+ {"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA4ED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAE9E;AAuJD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEvE"}
@@ -144,7 +144,7 @@ function scrubClaudeSettings(cwd, summary) {
144
144
  : h && typeof h === 'object'
145
145
  ? (h.command ?? '')
146
146
  : '';
147
- return cmd.includes('shield-gate') || cmd.includes('totem shield');
147
+ return (cmd.includes('shield-gate') || cmd.includes('totem shield') || cmd.includes('totem review'));
148
148
  });
149
149
  });
150
150
  if (filtered.length === preToolUse.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"eject.js","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,2DAA2D;AAE3D,MAAM,GAAG,GAAG,OAAO,CAAC;AACpB,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AACpD,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAChD,MAAM,qBAAqB,GAAG,4BAA4B,CAAC;AAC3D,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AACvD,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAEtD,qEAAqE;AACrE,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAEnD,sEAAsE;AACtE,MAAM,sBAAsB,GAAG;IAC7B,+BAA+B;IAC/B,6BAA6B;IAC7B,yBAAyB;IACzB,8BAA8B;CAC/B,CAAC;AAUF;;;GAGG;AACH,SAAS,SAAS,CAChB,GAAW,EACX,OAAqB,EACrB,QAAgB,EAChB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,YAAY,GAAG,cAAc,QAAQ,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,cAAc,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,qBAAqB,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,SAAS,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,YAAY,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,YAAY,EAAE,CAAC;gBACjB,4DAA4D;gBAC5D,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;oBAChC,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,0DAA0D;YAC1D,IACE,IAAI,KAAK,EAAE;gBACX,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAClB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EACpB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,4DAA4D;YAC5D,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC5C,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,OAAqB;IACnE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,OAAqB;IACtE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;AACtF,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,GAAW,EAAE,OAAqB;IAC/D,KAAK,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACtF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,oBAAoB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAW,EAAE,OAAqB;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAA8C,CAAC;IACpE,MAAM,UAAU,GAAG,KAAK,EAAE,UAEb,CAAC;IACd,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,GAAG,GACP,OAAO,CAAC,KAAK,QAAQ;gBACnB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;oBAC1B,CAAC,CAAC,CAAE,CAA0B,CAAC,OAAO,IAAI,EAAE,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,KAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;IAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAM,CAAC,UAAU,CAAC;IAC3B,CAAC;IACD,8BAA8B;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,GAAW,EAAE,OAAqB;IAC1D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,mFAAmF;QACnF,MAAM,aAAa,GAAG,uDAAuD,CAAC;QAC9E,MAAM,SAAS,GAAG,qCAAqC,CAAC;QACxD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW,EAAE,OAAqB;IACzD,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,wBAAwB,GAAG,GAAG,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC9B,yFAAyF,CAC1F,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;gBACjF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAC1B,OAAO;YACT,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEzE,qBAAqB;IACrB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjC,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEpC,gDAAgD;IAChD,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEpC,sCAAsC;IACtC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAElC,gDAAgD;IAChD,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE/B,sBAAsB;IACtB,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE9B,gBAAgB;IAChB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACnC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,mDAAmD,CAAC,CAAC;QACnE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,4CAA4C,CAAC,CAAC;IAC9D,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,2CAA2C,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"eject.js","sourceRoot":"","sources":["../../src/commands/eject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function exemptionListCommand(): Promise<void>;
2
+ export declare function exemptionAddCommand(options: {
3
+ rule: string;
4
+ reason: string;
5
+ }): Promise<void>;
6
+ export declare function exemptionAuditCommand(): Promise<void>;
7
+ //# sourceMappingURL=exemption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exemption.d.ts","sourceRoot":"","sources":["../../src/commands/exemption.ts"],"names":[],"mappings":"AAoDA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuE1D;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDhB;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0D3D"}
@@ -0,0 +1,166 @@
1
+ import { PROMOTION_THRESHOLD } from '../exemptions/exemption-schema.js';
2
+ const TAG = 'Exemption';
3
+ // ─── Helpers ───────────────────────────────────────────
4
+ function truncate(text, max) {
5
+ return text.length > max ? text.slice(0, max - 1) + '\u2026' : text;
6
+ }
7
+ /** Strip control characters from user input before persistence/display. */
8
+ function sanitizeInput(text) {
9
+ // eslint-disable-next-line no-control-regex -- intentional: stripping control chars from user input (#1074)
10
+ return text.replace(/[\x00-\x1f\x7f]/g, '');
11
+ }
12
+ async function resolveTotemPaths() {
13
+ const path = await import('node:path');
14
+ const { loadConfig, resolveConfigPath } = await import('../utils.js');
15
+ const cwd = process.cwd();
16
+ const configPath = resolveConfigPath(cwd);
17
+ const config = await loadConfig(configPath);
18
+ const totemDir = path.join(cwd, config.totemDir);
19
+ const cacheDir = path.join(totemDir, 'cache');
20
+ return { totemDir, cacheDir };
21
+ }
22
+ async function loadExemptions() {
23
+ const { log } = await import('../ui.js');
24
+ const { readSharedExemptions, readLocalExemptions } = await import('../exemptions/exemption-store.js');
25
+ const { totemDir, cacheDir } = await resolveTotemPaths();
26
+ const shared = readSharedExemptions(totemDir, (msg) => log.dim(TAG, msg));
27
+ const local = readLocalExemptions(cacheDir, (msg) => log.dim(TAG, msg));
28
+ return { shared, local, totemDir, cacheDir };
29
+ }
30
+ // ─── Subcommands ───────────────────────────────────────
31
+ export async function exemptionListCommand() {
32
+ const { log, dim, bold } = await import('../ui.js');
33
+ const { shared, local } = await loadExemptions();
34
+ const hasShared = shared.exemptions.length > 0;
35
+ const hasLocal = Object.keys(local.patterns).length > 0;
36
+ if (!hasShared && !hasLocal) {
37
+ log.info(TAG, 'No active exemptions.');
38
+ return;
39
+ }
40
+ // Shared exemptions table
41
+ if (hasShared) {
42
+ console.error('');
43
+ log.info(TAG, bold('Shared exemptions (committed, team-wide):'));
44
+ const idW = 12;
45
+ const labelW = 25;
46
+ const reasonW = 30;
47
+ const byW = 8;
48
+ console.error(dim(` ${'PATTERN-ID'.padEnd(idW)}${'LABEL'.padEnd(labelW)}${'REASON'.padEnd(reasonW)}${'BY'.padEnd(byW)}PROMOTED-AT`));
49
+ console.error(dim(' ' + '\u2500'.repeat(idW + labelW + reasonW + byW + 24)));
50
+ for (const entry of shared.exemptions) {
51
+ const id = truncate(entry.patternId, idW).padEnd(idW);
52
+ const label = truncate(entry.label, labelW).padEnd(labelW);
53
+ const reason = truncate(entry.reason, reasonW).padEnd(reasonW);
54
+ const by = entry.promotedBy.padEnd(byW);
55
+ const at = entry.promotedAt.slice(0, 10);
56
+ console.error(` ${id}${label}${reason}${by}${at}`);
57
+ }
58
+ console.error('');
59
+ log.info(TAG, `${bold(String(shared.exemptions.length))} shared exemption(s)`);
60
+ }
61
+ // Local exemptions table
62
+ if (hasLocal) {
63
+ console.error('');
64
+ log.info(TAG, bold('Local exemptions (per-developer tracking):'));
65
+ const idW = 12;
66
+ const countW = 7;
67
+ const sourcesW = 15;
68
+ console.error(dim(` ${'PATTERN-ID'.padEnd(idW)}${'COUNT'.padEnd(countW)}${'SOURCES'.padEnd(sourcesW)}LAST-SEEN`));
69
+ console.error(dim(' ' + '\u2500'.repeat(idW + countW + sourcesW + 24)));
70
+ for (const [patternId, pattern] of Object.entries(local.patterns)) {
71
+ const id = truncate(patternId, idW).padEnd(idW);
72
+ const count = String(pattern.count).padEnd(countW);
73
+ const sources = pattern.sources.join(', ').padEnd(sourcesW);
74
+ const lastSeen = pattern.lastSeenAt.slice(0, 10);
75
+ console.error(` ${id}${count}${sources}${lastSeen}`);
76
+ }
77
+ console.error('');
78
+ log.info(TAG, `${bold(String(Object.keys(local.patterns).length))} local pattern(s)`);
79
+ }
80
+ }
81
+ export async function exemptionAddCommand(options) {
82
+ const { log } = await import('../ui.js');
83
+ const { addManualSuppression } = await import('../exemptions/exemption-engine.js');
84
+ const { readSharedExemptions, writeSharedExemptions } = await import('../exemptions/exemption-store.js');
85
+ const { appendLedgerEvent } = await import('@mmnto/totem');
86
+ if (!options.rule || !options.rule.trim()) {
87
+ log.error('Totem Error', 'Missing required flag: --rule <label>');
88
+ process.exitCode = 1;
89
+ return;
90
+ }
91
+ if (!options.reason || !options.reason.trim()) {
92
+ log.error('Totem Error', 'Missing required flag: --reason <text>');
93
+ process.exitCode = 1;
94
+ return;
95
+ }
96
+ const { totemDir } = await resolveTotemPaths();
97
+ const before = readSharedExemptions(totemDir, (msg) => log.dim(TAG, msg));
98
+ const safeRule = sanitizeInput(options.rule.trim());
99
+ const safeReason = sanitizeInput(options.reason.trim());
100
+ if (!safeRule || !safeReason) {
101
+ log.error('Totem Error', 'Rule label and reason must contain printable characters.');
102
+ process.exitCode = 1;
103
+ return;
104
+ }
105
+ const after = addManualSuppression(before, safeRule, safeReason);
106
+ if (after.exemptions.length === before.exemptions.length) {
107
+ log.dim(TAG, `Exemption for '${safeRule}' already exists — skipping.`);
108
+ return;
109
+ }
110
+ writeSharedExemptions(totemDir, after, (msg) => log.dim(TAG, msg));
111
+ appendLedgerEvent(totemDir, {
112
+ timestamp: new Date().toISOString(),
113
+ type: 'exemption',
114
+ ruleId: 'exemption-manual',
115
+ file: '(exemption add)',
116
+ justification: `--rule ${safeRule} --reason ${safeReason}`,
117
+ source: 'shield',
118
+ }, (msg) => log.dim(TAG, msg));
119
+ log.success(TAG, `Exemption added for '${safeRule}'`);
120
+ }
121
+ export async function exemptionAuditCommand() {
122
+ const { log, bold, dim } = await import('../ui.js');
123
+ const { readLedgerEvents } = await import('@mmnto/totem');
124
+ const { shared, local, totemDir } = await loadExemptions();
125
+ const sharedCount = shared.exemptions.length;
126
+ const localCount = Object.keys(local.patterns).length;
127
+ const autoCount = shared.exemptions.filter((e) => e.promotedBy === 'auto').length;
128
+ const manualCount = shared.exemptions.filter((e) => e.promotedBy === 'manual').length;
129
+ console.error('');
130
+ log.info(TAG, bold('Exemption Audit Report'));
131
+ console.error(dim(' ' + '\u2500'.repeat(50)));
132
+ log.info(TAG, `Total shared exemptions: ${bold(String(sharedCount))}`);
133
+ log.info(TAG, `Total local patterns: ${bold(String(localCount))}`);
134
+ log.info(TAG, ` Auto-promoted: ${autoCount}`);
135
+ log.info(TAG, ` Manual: ${manualCount}`);
136
+ // Promotion candidates (approaching threshold)
137
+ const candidates = Object.entries(local.patterns).filter(([patternId, pattern]) => pattern.count > 0 &&
138
+ pattern.count < PROMOTION_THRESHOLD &&
139
+ !shared.exemptions.some((e) => e.patternId === patternId));
140
+ if (candidates.length > 0) {
141
+ console.error('');
142
+ log.info(TAG, bold('Promotion candidates (approaching threshold):'));
143
+ for (const [patternId, pattern] of candidates) {
144
+ log.info(TAG, ` ${truncate(patternId, 40)} — ${pattern.count}/${PROMOTION_THRESHOLD} strikes`);
145
+ }
146
+ }
147
+ // Recent ledger events
148
+ const events = readLedgerEvents(totemDir, (msg) => log.dim(TAG, msg));
149
+ const exemptionEvents = events.filter((e) => e.type === 'exemption' || e.type === 'override');
150
+ const recent = exemptionEvents.slice(-10).reverse();
151
+ if (recent.length > 0) {
152
+ console.error('');
153
+ log.info(TAG, bold('Recent exemption/override events (last 10):'));
154
+ for (const event of recent) {
155
+ const ts = event.timestamp.slice(0, 19).replace('T', ' ');
156
+ const just = truncate(event.justification || '(none)', 50);
157
+ log.info(TAG, ` ${dim(ts)} ${event.type.padEnd(10)} ${just}`);
158
+ }
159
+ }
160
+ else {
161
+ console.error('');
162
+ log.dim(TAG, 'No exemption-related events in the ledger.');
163
+ }
164
+ console.error('');
165
+ }
166
+ //# sourceMappingURL=exemption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exemption.js","sourceRoot":"","sources":["../../src/commands/exemption.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exemption.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exemption.test.d.ts","sourceRoot":"","sources":["../../src/commands/exemption.test.ts"],"names":[],"mappings":""}