@mediaproc/core 1.2.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/branding/index.d.ts +2 -0
  2. package/dist/branding/index.d.ts.map +1 -0
  3. package/dist/branding/index.js +3 -0
  4. package/dist/branding/index.js.map +1 -0
  5. package/dist/errors/errorTypes.d.ts +63 -13
  6. package/dist/errors/errorTypes.d.ts.map +1 -1
  7. package/dist/errors/errorTypes.js +191 -18
  8. package/dist/errors/errorTypes.js.map +1 -1
  9. package/dist/errors/exitCodes.d.ts +23 -7
  10. package/dist/errors/exitCodes.d.ts.map +1 -1
  11. package/dist/errors/exitCodes.js +24 -7
  12. package/dist/errors/exitCodes.js.map +1 -1
  13. package/dist/errors/index.d.ts +3 -0
  14. package/dist/errors/index.d.ts.map +1 -0
  15. package/dist/errors/index.js +4 -0
  16. package/dist/errors/index.js.map +1 -0
  17. package/dist/{explainFlag.d.ts → explain/explainFlag.d.ts} +3 -3
  18. package/dist/explain/explainFlag.d.ts.map +1 -0
  19. package/dist/{explainFlag.js → explain/explainFlag.js} +91 -19
  20. package/dist/explain/explainFlag.js.map +1 -0
  21. package/dist/explain/hook/explainPreActionHook.d.ts +7 -0
  22. package/dist/explain/hook/explainPreActionHook.d.ts.map +1 -0
  23. package/dist/explain/hook/explainPreActionHook.js +29 -0
  24. package/dist/explain/hook/explainPreActionHook.js.map +1 -0
  25. package/dist/explain/index.d.ts +5 -0
  26. package/dist/explain/index.d.ts.map +1 -0
  27. package/dist/explain/index.js +6 -0
  28. package/dist/explain/index.js.map +1 -0
  29. package/dist/explain/templates/explainDetailsTemplate.d.ts +3 -0
  30. package/dist/explain/templates/explainDetailsTemplate.d.ts.map +1 -0
  31. package/dist/explain/templates/explainDetailsTemplate.js +139 -0
  32. package/dist/explain/templates/explainDetailsTemplate.js.map +1 -0
  33. package/dist/explain/templates/explainHumanTemplate.d.ts +3 -0
  34. package/dist/explain/templates/explainHumanTemplate.d.ts.map +1 -0
  35. package/dist/explain/templates/explainHumanTemplate.js +111 -0
  36. package/dist/explain/templates/explainHumanTemplate.js.map +1 -0
  37. package/dist/formatters/explainFormatter.d.ts +3 -4
  38. package/dist/formatters/explainFormatter.d.ts.map +1 -1
  39. package/dist/formatters/explainFormatter.js +11 -225
  40. package/dist/formatters/explainFormatter.js.map +1 -1
  41. package/dist/formatters/index.d.ts +3 -0
  42. package/dist/formatters/index.d.ts.map +1 -0
  43. package/dist/formatters/index.js +4 -0
  44. package/dist/formatters/index.js.map +1 -0
  45. package/dist/handlers/globalErrorHandler.d.ts +10 -0
  46. package/dist/handlers/globalErrorHandler.d.ts.map +1 -0
  47. package/dist/handlers/globalErrorHandler.js +45 -0
  48. package/dist/handlers/globalErrorHandler.js.map +1 -0
  49. package/dist/handlers/index.d.ts +2 -0
  50. package/dist/handlers/index.d.ts.map +1 -0
  51. package/dist/handlers/index.js +2 -0
  52. package/dist/handlers/index.js.map +1 -0
  53. package/dist/index.d.ts +8 -9
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +15 -9
  56. package/dist/index.js.map +1 -1
  57. package/dist/types/explainTypes.d.ts +15 -0
  58. package/dist/types/explainTypes.d.ts.map +1 -1
  59. package/dist/types/explainTypes.js +7 -1
  60. package/dist/types/explainTypes.js.map +1 -1
  61. package/dist/types/index.d.ts +3 -0
  62. package/dist/types/index.d.ts.map +1 -0
  63. package/dist/types/index.js +4 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/dist/utils/constants/supportedExtensions.d.ts.map +1 -0
  66. package/dist/utils/constants/supportedExtensions.js.map +1 -0
  67. package/dist/utils/index.d.ts +2 -0
  68. package/dist/utils/index.d.ts.map +1 -0
  69. package/dist/utils/index.js +3 -0
  70. package/dist/utils/index.js.map +1 -0
  71. package/dist/validators/index.d.ts +2 -0
  72. package/dist/validators/index.d.ts.map +1 -0
  73. package/dist/validators/index.js +3 -0
  74. package/dist/validators/index.js.map +1 -0
  75. package/dist/validators/pathValidator.js +1 -1
  76. package/dist/validators/pathValidator.js.map +1 -1
  77. package/package.json +3 -1
  78. package/dist/explainFlag.d.ts.map +0 -1
  79. package/dist/explainFlag.js.map +0 -1
  80. package/dist/validators/supportedExtensions.d.ts.map +0 -1
  81. package/dist/validators/supportedExtensions.js.map +0 -1
  82. /package/dist/{validators → utils/constants}/supportedExtensions.d.ts +0 -0
  83. /package/dist/{validators → utils/constants}/supportedExtensions.js +0 -0
@@ -1,12 +1,15 @@
1
1
  import chalk from 'chalk';
2
- import { explainFormatter } from './formatters/explainFormatter.js';
3
- import { getCliVersion, getVersion } from './branding/branding.js';
2
+ import { explainFormatter } from '../formatters/explainFormatter.js';
3
+ import { getCliVersion, getVersion } from '../branding/branding.js';
4
+ import { ExplainMode } from '../types/explainTypes.js';
4
5
  import os from 'os';
6
+ import fs from 'fs';
7
+ import path from 'path';
5
8
  /**
6
9
  * explainFlag - Automatically gathers command context, prints explanation, then runs the handler.
7
10
  * @param params - { commandName, args, options, handler }
8
11
  */
9
- export function explainFlag({ command, args = {}, options = {}, inputKeys = ['input', 'inputPath'], outputKeys = ['output', 'outputPath', 'o'], format = 'human', }) {
12
+ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['input', 'inputPath'], outputKeys = ['output', 'outputPath', 'o'], mode = ExplainMode.Human, }) {
10
13
  // Auto-detect command name
11
14
  const commandName = command?.name?.() || command?._name || 'unknown';
12
15
  const environment = {
@@ -15,35 +18,61 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
15
18
  nodeVersion: process.version,
16
19
  shell: process.env.SHELL || process.env.TERM || 'unknown',
17
20
  };
18
- // Detect input/output paths
21
+ // Detect input/output paths and gather all input/output arguments
19
22
  let inputPath = '';
20
23
  let outputPath = '';
24
+ let allInputs = {};
25
+ let allOutputs = {};
21
26
  for (const k of inputKeys) {
22
- if (args[k])
27
+ if (args[k]) {
23
28
  inputPath = args[k];
24
- if (options[k])
29
+ allInputs[k] = args[k];
30
+ }
31
+ if (options[k]) {
25
32
  inputPath = options[k];
33
+ allInputs[k] = options[k];
34
+ }
26
35
  }
27
36
  for (const k of outputKeys) {
28
- if (args[k])
37
+ if (args[k]) {
29
38
  outputPath = args[k];
30
- if (options[k])
39
+ allOutputs[k] = args[k];
40
+ }
41
+ if (options[k]) {
31
42
  outputPath = options[k];
43
+ allOutputs[k] = options[k];
44
+ }
32
45
  }
33
46
  // Gather used flags
34
47
  let explainValue = undefined;
48
+ let explainOnly = false;
35
49
  if (typeof options.explain === 'string') {
36
50
  explainValue = options.explain;
51
+ if (explainValue === 'only')
52
+ explainOnly = true;
37
53
  }
38
54
  else if (Array.isArray(args._) && args._.length > 0) {
39
55
  // Check for --explain details as positional
40
56
  const idx = args._.findIndex((v) => v === 'explain');
41
57
  if (idx !== -1 && args._[idx + 1]) {
42
58
  explainValue = args._[idx + 1];
59
+ if (explainValue === 'only')
60
+ explainOnly = true;
43
61
  }
44
62
  }
45
- if (explainValue === 'details' || explainValue === 'json' || explainValue === 'human') {
46
- format = explainValue;
63
+ if (explainValue === 'details') {
64
+ mode = ExplainMode.Details;
65
+ }
66
+ else if (explainValue === 'json') {
67
+ mode = ExplainMode.Json;
68
+ }
69
+ else if (explainValue === 'human') {
70
+ mode = ExplainMode.Human;
71
+ }
72
+ else if (explainValue) {
73
+ // fallback for unknown explain values
74
+ console.warn(chalk.yellow(`warn: unknown explain mode "${explainValue}", falling back to "human"`));
75
+ mode = ExplainMode.Human;
47
76
  }
48
77
  // Gather all possible flags from command (Commander.js API)
49
78
  const usedFlags = {};
@@ -53,13 +82,24 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
53
82
  const flagName = opt.attributeName || opt.long?.replace(/^--/, '') || opt.short?.replace(/^-/, '');
54
83
  if (!flagName)
55
84
  continue;
56
- const userValue = options[flagName];
85
+ let userValue = options[flagName];
86
+ // Handle boolean flags
87
+ if (typeof userValue === 'boolean')
88
+ userValue = userValue ? 'enabled' : 'disabled';
89
+ // Handle array flags
90
+ if (Array.isArray(userValue))
91
+ userValue = userValue.join(', ');
57
92
  if (userValue !== undefined) {
58
93
  usedFlags[flagName] = { value: userValue, source: 'user' };
59
94
  }
60
95
  else if (Object.prototype.hasOwnProperty.call(opt, 'defaultValue')) {
61
- usedFlags[flagName] = { value: opt.defaultValue, source: 'default' };
62
- omittedFlags[flagName] = { defaultValue: opt.defaultValue, source: 'default' };
96
+ let defVal = opt.defaultValue;
97
+ if (typeof defVal === 'boolean')
98
+ defVal = defVal ? 'enabled' : 'disabled';
99
+ if (Array.isArray(defVal))
100
+ defVal = defVal.join(', ');
101
+ usedFlags[flagName] = { value: defVal, source: 'default' };
102
+ omittedFlags[flagName] = { defaultValue: defVal, source: 'default' };
63
103
  }
64
104
  else {
65
105
  usedFlags[flagName] = { value: undefined, source: 'system' };
@@ -70,7 +110,12 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
70
110
  for (const [key, value] of Object.entries(options)) {
71
111
  if (key === 'explain')
72
112
  continue;
73
- usedFlags[key] = { value, source: value !== undefined ? 'user' : 'system' };
113
+ let val = value;
114
+ if (typeof val === 'boolean')
115
+ val = val ? 'enabled' : 'disabled';
116
+ if (Array.isArray(val))
117
+ val = val.join(', ');
118
+ usedFlags[key] = { value: val, source: val !== undefined ? 'user' : 'system' };
74
119
  }
75
120
  }
76
121
  // Build ExplainContext with plugin/command info and version
@@ -91,17 +136,28 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
91
136
  console.error(chalk.red('Error retrieving version information:'), error);
92
137
  }
93
138
  const context = {
139
+ schemaVersion: '1.0', // Tier 3 placeholder
94
140
  command: commandName,
95
141
  plugin: command?.parent?.name?.() || undefined,
96
142
  cliVersion,
97
143
  pluginVersion,
98
- inputs: { inputPath, outputPath },
144
+ // Context enrichment
145
+ timestamp: new Date().toISOString(),
146
+ user: process.env.USER || process.env.USERNAME || 'unknown',
147
+ platform: `${os.platform()} ${os.arch()}`,
148
+ mode,
149
+ summary: outputPath
150
+ ? `Resize/Process file(s) and write result to ${outputPath}`
151
+ : `Operation will complete (no output path specified)`,
152
+ inputs: { inputPath, outputPath, ...allInputs },
153
+ outputs: Object.keys(allOutputs).length > 0 ? allOutputs : undefined,
99
154
  usedFlags,
100
155
  omittedFlags: Object.keys(omittedFlags).length > 0 ? omittedFlags : undefined,
101
156
  decisions: Object.entries(usedFlags).map(([key, v]) => ({
102
157
  key,
103
158
  value: v.value,
104
159
  reason: v.source === 'user' ? 'user specified' : (v.source === 'default' ? 'default' : 'system'),
160
+ provenance: v.source,
105
161
  })),
106
162
  outcome: {
107
163
  result: outputPath ? `A new file will be created at ${outputPath}` : 'Operation will complete',
@@ -113,6 +169,11 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
113
169
  ],
114
170
  errors: [], // Placeholder for error reporting
115
171
  warnings: [], // Placeholder for warning reporting
172
+ confidence: 'high', // Tier 4 placeholder
173
+ whatWillNotHappen: [
174
+ 'Original files will not be modified',
175
+ 'No network requests will be made'
176
+ ]
116
177
  },
117
178
  explainFlow: [
118
179
  '1. Parse and validate all user-provided flags and arguments.',
@@ -123,6 +184,7 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
123
184
  '6. Show summary and any errors encountered.'
124
185
  ],
125
186
  environment,
187
+ explainOnly,
126
188
  technical: {
127
189
  library: 'sharp',
128
190
  tool: 'mediaproc',
@@ -132,14 +194,24 @@ export function explainFlag({ command, args = {}, options = {}, inputKeys = ['in
132
194
  estimatedTime: 'depends on input size and options',
133
195
  memoryUsage: 'depends on batch size and image dimensions',
134
196
  },
197
+ exitCode: 0, // Tier 3 placeholder
135
198
  };
136
199
  // Print explanation only
137
- const explanation = explainFormatter(context, format);
138
- if (format === 'json') {
200
+ const explanation = explainFormatter(context, mode);
201
+ if (mode === ExplainMode.Json) {
139
202
  // Add a styled header for JSON output
140
- // Print JSON with a clear header
141
203
  console.log(chalk.bold.bgBlueBright.white(' EXPLANATION (JSON) '));
142
- console.log(chalk.gray(JSON.stringify(explanation, null, 2)));
204
+ // Write JSON to file in output/explain/
205
+ const timestamp = context.timestamp?.replace(/[:.]/g, '-') || Date.now().toString();
206
+ const outDir = path.resolve(process.cwd(), 'output', 'explain');
207
+ if (!fs.existsSync(outDir)) {
208
+ fs.mkdirSync(outDir, { recursive: true });
209
+ }
210
+ const outFile = path.join(outDir, `explain-${timestamp}.json`);
211
+ fs.writeFileSync(outFile, JSON.stringify(context, null, 2), 'utf-8');
212
+ console.log(chalk.green(`Explanation JSON written to: ${outFile}`));
213
+ // Also print a preview to the console
214
+ console.log(chalk.gray(JSON.stringify(context, null, 2)));
143
215
  }
144
216
  else {
145
217
  console.log(explanation);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainFlag.js","sourceRoot":"","sources":["../../src/explain/explainFlag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * Global preAction hook for Commander.js to support --explain and --explain=only.
4
+ * Prints explanation before command runs. If --explain=only, exits after explanation.
5
+ */
6
+ export declare function explainPreActionHook(thisCmd: Command, actionCmd?: Command): void;
7
+ //# sourceMappingURL=explainPreActionHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainPreActionHook.d.ts","sourceRoot":"","sources":["../../../src/explain/hook/explainPreActionHook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAsBhF"}
@@ -0,0 +1,29 @@
1
+ import { explainFlag } from '../explainFlag.js';
2
+ /**
3
+ * Global preAction hook for Commander.js to support --explain and --explain=only.
4
+ * Prints explanation before command runs. If --explain=only, exits after explanation.
5
+ */
6
+ export function explainPreActionHook(thisCmd, actionCmd) {
7
+ // Commander passes the command instance as 'thisCmd', and the subcommand as 'actionCmd'.
8
+ // We'll use 'actionCmd' if available (for subcommands), otherwise 'thisCmd'.
9
+ const cmd = actionCmd || thisCmd;
10
+ const opts = cmd.opts ? cmd.opts() : {};
11
+ // Gather positional arguments if available (Commander stores them in cmd.args or cmd._args)
12
+ let positionalArgs = {};
13
+ if (Array.isArray(cmd.args) && cmd.args.length > 0) {
14
+ positionalArgs = { _: cmd.args };
15
+ }
16
+ // Support --explain, --explain=details, --explain=only, etc.
17
+ if (opts.explain) {
18
+ explainFlag({
19
+ command: cmd,
20
+ args: positionalArgs,
21
+ options: opts,
22
+ });
23
+ // If --explain=only, do not execute the command
24
+ if (opts.explain === 'only') {
25
+ process.exit(0);
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=explainPreActionHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainPreActionHook.js","sourceRoot":"","sources":["../../../src/explain/hook/explainPreActionHook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,SAAmB;IACxE,yFAAyF;IACzF,6EAA6E;IAC7E,MAAM,GAAG,GAAY,SAAS,IAAI,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,4FAA4F;IAC5F,IAAI,cAAc,GAAwB,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAE,GAAW,CAAC,IAAI,CAAC,IAAK,GAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,cAAc,GAAG,EAAE,CAAC,EAAG,GAAW,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,6DAA6D;IAC7D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,WAAW,CAAC;YACV,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,gDAAgD;QAChD,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './templates/explainHumanTemplate.js';
2
+ export * from './templates/explainDetailsTemplate.js';
3
+ export * from './explainFlag.js';
4
+ export * from './hook/explainPreActionHook.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/explain/index.ts"],"names":[],"mappings":"AACA,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,6 @@
1
+ // Explain System (Templates, Flag, Hook)
2
+ export * from './templates/explainHumanTemplate.js';
3
+ export * from './templates/explainDetailsTemplate.js';
4
+ export * from './explainFlag.js';
5
+ export * from './hook/explainPreActionHook.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/explain/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ExplainContext } from '../../types/explainTypes.js';
2
+ export declare function explainDetailsTemplate(context: ExplainContext): string;
3
+ //# sourceMappingURL=explainDetailsTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainDetailsTemplate.d.ts","sourceRoot":"","sources":["../../../src/explain/templates/explainDetailsTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA6JtE"}
@@ -0,0 +1,139 @@
1
+ import chalk from 'chalk';
2
+ import boxen from 'boxen';
3
+ export function explainDetailsTemplate(context) {
4
+ function safe(val) {
5
+ if (val === null || val === undefined || (typeof val === 'number' && Number.isNaN(val)))
6
+ return 'N/A';
7
+ if (typeof val === 'function')
8
+ return '[function]';
9
+ return String(val);
10
+ }
11
+ let lines = [];
12
+ // Gradient header
13
+ lines.push(chalk.bgMagentaBright.white.bold(' EXPLANATION (DETAILS) '));
14
+ // Explain-only mode
15
+ if (context.explainOnly) {
16
+ lines.push(chalk.bgYellow.black.bold(' [explain-only] No command will be executed '));
17
+ }
18
+ // Context enrichment
19
+ lines.push(chalk.bgWhiteBright.gray(` Timestamp: ${safe(context.timestamp)} | User: ${safe(context.user)} | Platform: ${safe(context.platform)} | Mode: ${safe(context.mode)} `));
20
+ // Plugin/command info
21
+ if (context.plugin || context.cliVersion || context.pluginVersion) {
22
+ lines.push(chalk.bgWhiteBright.magenta.bold(` Plugin: ${safe(context.plugin)} | CLI Version: ${safe(context.cliVersion)} | Plugin Version: ${safe(context.pluginVersion)} `));
23
+ }
24
+ // Inputs/Outputs
25
+ if ((context.inputs && Object.keys(context.inputs).length > 0) || (context.outputs && Object.keys(context.outputs).length > 0)) {
26
+ lines.push('');
27
+ lines.push(chalk.bgGray.white.bold(' Inputs & Outputs: '));
28
+ if (context.inputs && Object.keys(context.inputs).length > 0) {
29
+ lines.push(chalk.whiteBright(' Inputs:'));
30
+ for (const [k, v] of Object.entries(context.inputs)) {
31
+ lines.push(chalk.gray(` - ${k}: ${safe(v)}`));
32
+ }
33
+ }
34
+ if (context.outputs && Object.keys(context.outputs).length > 0) {
35
+ lines.push(chalk.whiteBright(' Outputs:'));
36
+ for (const [k, v] of Object.entries(context.outputs)) {
37
+ lines.push(chalk.gray(` - ${k}: ${safe(v)}`));
38
+ }
39
+ }
40
+ }
41
+ // Technical workflow
42
+ if (context.explainFlow && Array.isArray(context.explainFlow) && context.explainFlow.length > 0) {
43
+ lines.push('');
44
+ lines.push(chalk.bgCyanBright.black.bold(' Technical Workflow: '));
45
+ for (const step of context.explainFlow) {
46
+ let safeStep = (typeof step === 'function') ? '[function]' : safe(step);
47
+ lines.push(chalk.greenBright(` • ${safeStep}`));
48
+ }
49
+ }
50
+ // Flags used
51
+ if (context.usedFlags && Object.keys(context.usedFlags).length > 0) {
52
+ lines.push('');
53
+ lines.push(chalk.bgGray.white.bold(' Flags Used: '));
54
+ const userFlags = Object.entries(context.usedFlags).filter(([_, v]) => v.source === 'user');
55
+ const defaultFlags = Object.entries(context.usedFlags).filter(([_, v]) => v.source === 'default');
56
+ const systemFlags = Object.entries(context.usedFlags).filter(([_, v]) => v.source === 'system');
57
+ if (userFlags.length > 0) {
58
+ lines.push(chalk.bold(' User Flags:'));
59
+ for (const [k, v] of userFlags) {
60
+ let valueStr = safe(v.value);
61
+ lines.push(chalk.gray(` - ${k}: ${valueStr}`));
62
+ }
63
+ }
64
+ if (defaultFlags.length > 0) {
65
+ lines.push(chalk.bold(' Default Flags:'));
66
+ for (const [k, v] of defaultFlags) {
67
+ let valueStr = safe(v.value);
68
+ lines.push(chalk.gray(` - ${k}: ${valueStr}`));
69
+ }
70
+ }
71
+ if (systemFlags.length > 0) {
72
+ lines.push(chalk.bold(' System Flags:'));
73
+ for (const [k, v] of systemFlags) {
74
+ let valueStr = safe(v.value);
75
+ lines.push(chalk.gray(` - ${k}: ${valueStr}`));
76
+ }
77
+ }
78
+ }
79
+ // Errors and warnings
80
+ if (context.outcome && Array.isArray(context.outcome.errors) && context.outcome.errors.length > 0) {
81
+ lines.push('');
82
+ lines.push(chalk.bgRedBright.white.bold(' Errors: '));
83
+ for (const err of context.outcome.errors) {
84
+ lines.push(chalk.redBright(` - ${safe(err)}`));
85
+ }
86
+ }
87
+ if (context.outcome && Array.isArray(context.outcome.warnings) && context.outcome.warnings.length > 0) {
88
+ lines.push('');
89
+ lines.push(chalk.bgYellowBright.black.bold(' Warnings: '));
90
+ for (const warn of context.outcome.warnings) {
91
+ lines.push(chalk.yellowBright(` - ${safe(warn)}`));
92
+ }
93
+ }
94
+ // Developer/technical info
95
+ if (context.technical && typeof context.technical === 'object' && Object.keys(context.technical).length > 0) {
96
+ lines.push('');
97
+ lines.push(chalk.bgMagentaBright.white.bold(' Technical Details: '));
98
+ for (const [k, v] of Object.entries(context.technical)) {
99
+ let valueStr = safe(v);
100
+ lines.push(chalk.gray(` - ${k}: ${valueStr}`));
101
+ }
102
+ }
103
+ // Environment info
104
+ if (context.environment && typeof context.environment === 'object') {
105
+ lines.push('');
106
+ lines.push(chalk.bgGray.white.bold(' Environment: '));
107
+ lines.push(chalk.bold(` cwd: ${safe(context.environment.cwd)}`));
108
+ lines.push(chalk.bold(` OS: ${safe(context.environment.os)}`));
109
+ lines.push(chalk.bold(` Node: ${safe(context.environment.nodeVersion)}`));
110
+ lines.push(chalk.bold(` Shell: ${safe(context.environment.shell)}`));
111
+ }
112
+ // Custom plugin sections
113
+ if (context.customSections && Array.isArray(context.customSections)) {
114
+ for (const section of context.customSections) {
115
+ if (section.items && section.items.length > 0) {
116
+ lines.push('');
117
+ lines.push(chalk.bgMagentaBright.white.bold(` ${section.title} `));
118
+ for (const item of section.items) {
119
+ let safeItem = (typeof item === 'function') ? '[function]' : safe(item);
120
+ lines.push(chalk.magentaBright(` • ${safeItem}`));
121
+ }
122
+ }
123
+ }
124
+ }
125
+ // Diagram placeholder
126
+ lines.push('');
127
+ lines.push(chalk.bgWhiteBright.gray(' Diagram: [future diagram rendering here] '));
128
+ // Tip
129
+ lines.push('');
130
+ lines.push(chalk.bgWhiteBright.gray(' Tip: Use --explain for a simple summary. '));
131
+ // Wrap all in a single box with a magenta border
132
+ return boxen(lines.join('\n'), {
133
+ padding: 1,
134
+ borderColor: 'magenta',
135
+ borderStyle: 'round',
136
+ backgroundColor: 'black',
137
+ });
138
+ }
139
+ //# sourceMappingURL=explainDetailsTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainDetailsTemplate.js","sourceRoot":"","sources":["../../../src/explain/templates/explainDetailsTemplate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ExplainContext } from '../../types/explainTypes.js';
2
+ export declare function explainHumanTemplate(context: ExplainContext): string;
3
+ //# sourceMappingURL=explainHumanTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainHumanTemplate.d.ts","sourceRoot":"","sources":["../../../src/explain/templates/explainHumanTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAoHpE"}
@@ -0,0 +1,111 @@
1
+ import chalk from 'chalk';
2
+ import boxen from 'boxen';
3
+ export function explainHumanTemplate(context) {
4
+ let lines = [];
5
+ // Header
6
+ lines.push(chalk.bgBlueBright.white.bold(' EXPLANATION '));
7
+ // Summary
8
+ if (context.summary) {
9
+ lines.push(chalk.bgCyanBright.black.bold(' Summary: ') + chalk.bgCyanBright.white(' ' + context.summary + ' '));
10
+ }
11
+ // Explain-only mode
12
+ if (context.explainOnly) {
13
+ lines.push(chalk.bgYellow.black.bold(' [explain-only] No files were modified. '));
14
+ }
15
+ // Context enrichment
16
+ function safe(val) {
17
+ if (val === null || val === undefined || (typeof val === 'number' && Number.isNaN(val)))
18
+ return 'N/A';
19
+ if (typeof val === 'function')
20
+ return '[function]';
21
+ return String(val);
22
+ }
23
+ lines.push(chalk.bgWhiteBright.gray(` Timestamp: ${safe(context.timestamp)} | User: ${safe(context.user)} | Platform: ${safe(context.platform)} | Mode: ${safe(context.mode)} `));
24
+ // Plugin/command info
25
+ if (context.plugin) {
26
+ lines.push(chalk.bgWhiteBright.blue.bold(` This command uses the "${context.plugin}" plugin. `));
27
+ }
28
+ // What will happen
29
+ lines.push('');
30
+ lines.push(chalk.bgGreenBright.black.bold(' What will happen: '));
31
+ if (context.decisions && context.decisions.length > 0) {
32
+ for (const d of context.decisions) {
33
+ let valueStr = safe(d.value);
34
+ if (typeof valueStr === 'function')
35
+ valueStr = '[function]';
36
+ let src = d.provenance || d.reason || '';
37
+ lines.push(chalk.greenBright(` • ${d.key}: ${valueStr} (${src})`));
38
+ }
39
+ }
40
+ else {
41
+ lines.push(chalk.greenBright(' • The command will use default settings.'));
42
+ }
43
+ // Why these choices were made
44
+ if (context.decisions && context.decisions.length > 0) {
45
+ lines.push('');
46
+ lines.push(chalk.bgCyanBright.black.bold(' Why these choices were made: '));
47
+ for (const d of context.decisions) {
48
+ let src = d.provenance || d.reason || '';
49
+ lines.push(chalk.cyanBright(` • ${d.key}: ${src}`));
50
+ }
51
+ }
52
+ // Result/Outcome
53
+ if (context.outcome && context.outcome.result) {
54
+ lines.push('');
55
+ lines.push(chalk.bgYellowBright.black.bold(' Result: '));
56
+ let resultValue = safe(context.outcome.result);
57
+ if (typeof resultValue === 'function')
58
+ resultValue = '[function]';
59
+ lines.push(chalk.yellowBright(` • ${resultValue}`));
60
+ if (context.outcome.sideEffects && Array.isArray(context.outcome.sideEffects) && context.outcome.sideEffects.length > 0) {
61
+ for (const s of context.outcome.sideEffects) {
62
+ let side = safe(s);
63
+ if (typeof side === 'function')
64
+ side = '[function]';
65
+ lines.push(chalk.yellowBright(` • ${side}`));
66
+ }
67
+ }
68
+ }
69
+ // Placeholders for Tier 3/4
70
+ if (context.schemaVersion) {
71
+ lines.push(chalk.bgGray.white(`[schemaVersion: ${context.schemaVersion}]`));
72
+ }
73
+ if (context.exitCode !== undefined) {
74
+ lines.push(chalk.bgGray.white(`[exitCode: ${context.exitCode} // placeholder for future validation logic]`));
75
+ }
76
+ if (context.outcome && context.outcome.confidence) {
77
+ lines.push(chalk.bgGray.white(`[confidence: ${context.outcome.confidence} // placeholder for future confidence logic]`));
78
+ }
79
+ // What will NOT happen
80
+ if (context.outcome && context.outcome.whatWillNotHappen) {
81
+ lines.push('');
82
+ lines.push(chalk.bgRedBright.white.bold(' What will NOT happen: '));
83
+ for (const n of context.outcome.whatWillNotHappen) {
84
+ lines.push(chalk.redBright(` • ${n}`));
85
+ }
86
+ }
87
+ // Custom plugin sections
88
+ if (context.customSections && Array.isArray(context.customSections)) {
89
+ for (const section of context.customSections) {
90
+ if (section.items && section.items.length > 0) {
91
+ lines.push('');
92
+ lines.push(chalk.bgMagentaBright.white.bold(` ${section.title} `));
93
+ for (const item of section.items) {
94
+ let safeItem = (typeof item === 'function') ? '[function]' : item;
95
+ lines.push(chalk.magentaBright(` • ${safeItem}`));
96
+ }
97
+ }
98
+ }
99
+ }
100
+ // Tip
101
+ lines.push('');
102
+ lines.push(chalk.bgWhiteBright.gray(' Tip: Use --explain=details for a technical breakdown. '));
103
+ // Wrap all in a single box with a blue gradient border
104
+ return boxen(lines.join('\n'), {
105
+ padding: 1,
106
+ borderColor: 'blueBright',
107
+ borderStyle: 'round',
108
+ backgroundColor: 'black',
109
+ });
110
+ }
111
+ //# sourceMappingURL=explainHumanTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainHumanTemplate.js","sourceRoot":"","sources":["../../../src/explain/templates/explainHumanTemplate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IACxD,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,SAAS;IACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE7D,UAAU;IACV,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;IACpH,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,qBAAqB;IACjB,SAAS,IAAI,CAAC,GAAQ;QAClB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACtG,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,OAAO,YAAY,CAAC;QACnD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAC/B,eAAe,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAC9I,CAAC,CAAC;IAEP,sBAAsB;IACtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,OAAO,QAAQ,KAAK,UAAU;gBAAE,QAAQ,GAAG,YAAY,CAAC;YAC5D,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC5E,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,OAAO,WAAW,KAAK,UAAU;YAAE,WAAW,GAAG,YAAY,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtH,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,IAAI,KAAK,UAAU;oBAAE,IAAI,GAAG,YAAY,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,QAAQ,8CAA8C,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,CAAC,OAAO,CAAC,UAAU,8CAA8C,CAAC,CAAC,CAAC;IAC7H,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACnE,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC/B,IAAI,QAAQ,GAAG,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;oBAClE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM;IACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAC;IAEhG,uDAAuD;IACvD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC3B,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,OAAO;QACpB,eAAe,EAAE,OAAO;KAC3B,CAAC,CAAC;AACP,CAAC"}
@@ -1,7 +1,6 @@
1
- import { ExplainContext } from '../types/explainTypes.js';
2
- export type ExplainFormat = 'human' | 'details' | 'json';
1
+ import { ExplainContext, ExplainMode } from '../types/explainTypes.js';
3
2
  /**
4
- * Main explain formatter. Returns a string (or JSON) for the given context and format.
3
+ * Main explain formatter. Returns a string (or JSON) for the given context and mode.
5
4
  */
6
- export declare function explainFormatter(context: ExplainContext, format?: ExplainFormat, tense?: 'will' | 'would' | 'did'): string | object;
5
+ export declare function explainFormatter(context: ExplainContext, mode?: ExplainMode): string | object;
7
6
  //# sourceMappingURL=explainFormatter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"explainFormatter.d.ts","sourceRoot":"","sources":["../../src/formatters/explainFormatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD;;GAEG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,GAAE,aAAuB,EAC/B,KAAK,GAAE,MAAM,GAAG,OAAO,GAAG,KAAc,GACtC,MAAM,GAAG,MAAM,CAwMjB"}
1
+ {"version":3,"file":"explainFormatter.d.ts","sourceRoot":"","sources":["../../src/formatters/explainFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvE;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,cAAc,EACvB,IAAI,GAAE,WAA+B,GACpC,MAAM,GAAG,MAAM,CAYjB"}