@amirdaraee/namewise 0.8.0 → 0.10.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 (123) hide show
  1. package/.claude/agents/test-writer.md +39 -0
  2. package/.claude/settings.json +41 -0
  3. package/.claude/skills/new-command/SKILL.md +77 -0
  4. package/.claude/skills/release/SKILL.md +48 -0
  5. package/CHANGELOG.md +46 -0
  6. package/README.md +86 -21
  7. package/dist/cli/apply.d.ts.map +1 -1
  8. package/dist/cli/apply.js +10 -4
  9. package/dist/cli/apply.js.map +1 -1
  10. package/dist/cli/clean-empty.d.ts.map +1 -1
  11. package/dist/cli/clean-empty.js +9 -3
  12. package/dist/cli/clean-empty.js.map +1 -1
  13. package/dist/cli/commands.d.ts.map +1 -1
  14. package/dist/cli/commands.js +54 -32
  15. package/dist/cli/commands.js.map +1 -1
  16. package/dist/cli/config-cmd.d.ts.map +1 -1
  17. package/dist/cli/config-cmd.js +6 -5
  18. package/dist/cli/config-cmd.js.map +1 -1
  19. package/dist/cli/dedup.d.ts.map +1 -1
  20. package/dist/cli/dedup.js +8 -7
  21. package/dist/cli/dedup.js.map +1 -1
  22. package/dist/cli/diff.d.ts.map +1 -1
  23. package/dist/cli/diff.js +9 -8
  24. package/dist/cli/diff.js.map +1 -1
  25. package/dist/cli/find.d.ts.map +1 -1
  26. package/dist/cli/find.js +3 -2
  27. package/dist/cli/find.js.map +1 -1
  28. package/dist/cli/flatten.d.ts.map +1 -1
  29. package/dist/cli/flatten.js +9 -3
  30. package/dist/cli/flatten.js.map +1 -1
  31. package/dist/cli/info.d.ts.map +1 -1
  32. package/dist/cli/info.js +3 -2
  33. package/dist/cli/info.js.map +1 -1
  34. package/dist/cli/init.d.ts.map +1 -1
  35. package/dist/cli/init.js +8 -7
  36. package/dist/cli/init.js.map +1 -1
  37. package/dist/cli/organize.d.ts.map +1 -1
  38. package/dist/cli/organize.js +9 -3
  39. package/dist/cli/organize.js.map +1 -1
  40. package/dist/cli/rename.d.ts.map +1 -1
  41. package/dist/cli/rename.js +129 -61
  42. package/dist/cli/rename.js.map +1 -1
  43. package/dist/cli/sanitize.d.ts.map +1 -1
  44. package/dist/cli/sanitize.js +9 -3
  45. package/dist/cli/sanitize.js.map +1 -1
  46. package/dist/cli/stats.d.ts.map +1 -1
  47. package/dist/cli/stats.js +6 -5
  48. package/dist/cli/stats.js.map +1 -1
  49. package/dist/cli/tree.d.ts.map +1 -1
  50. package/dist/cli/tree.js +2 -1
  51. package/dist/cli/tree.js.map +1 -1
  52. package/dist/cli/undo.d.ts.map +1 -1
  53. package/dist/cli/undo.js +13 -12
  54. package/dist/cli/undo.js.map +1 -1
  55. package/dist/cli/watch.d.ts.map +1 -1
  56. package/dist/cli/watch.js +7 -6
  57. package/dist/cli/watch.js.map +1 -1
  58. package/dist/errors.d.ts +35 -0
  59. package/dist/errors.d.ts.map +1 -0
  60. package/dist/errors.js +75 -0
  61. package/dist/errors.js.map +1 -0
  62. package/dist/index.js +3 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/parsers/excel-parser.d.ts.map +1 -1
  65. package/dist/parsers/excel-parser.js +5 -1
  66. package/dist/parsers/excel-parser.js.map +1 -1
  67. package/dist/parsers/factory.d.ts +1 -1
  68. package/dist/parsers/factory.d.ts.map +1 -1
  69. package/dist/parsers/factory.js +1 -1
  70. package/dist/parsers/factory.js.map +1 -1
  71. package/dist/parsers/pdf-parser.d.ts.map +1 -1
  72. package/dist/parsers/pdf-parser.js +35 -30
  73. package/dist/parsers/pdf-parser.js.map +1 -1
  74. package/dist/parsers/text-parser.d.ts.map +1 -1
  75. package/dist/parsers/text-parser.js +5 -1
  76. package/dist/parsers/text-parser.js.map +1 -1
  77. package/dist/parsers/word-parser.d.ts.map +1 -1
  78. package/dist/parsers/word-parser.js +5 -1
  79. package/dist/parsers/word-parser.js.map +1 -1
  80. package/dist/services/ai-factory.d.ts.map +1 -1
  81. package/dist/services/ai-factory.js +4 -3
  82. package/dist/services/ai-factory.js.map +1 -1
  83. package/dist/services/claude-service.d.ts.map +1 -1
  84. package/dist/services/claude-service.js +14 -3
  85. package/dist/services/claude-service.js.map +1 -1
  86. package/dist/services/file-renamer.d.ts +1 -1
  87. package/dist/services/file-renamer.d.ts.map +1 -1
  88. package/dist/services/file-renamer.js +13 -32
  89. package/dist/services/file-renamer.js.map +1 -1
  90. package/dist/services/lmstudio-service.d.ts.map +1 -1
  91. package/dist/services/lmstudio-service.js +15 -7
  92. package/dist/services/lmstudio-service.js.map +1 -1
  93. package/dist/services/ollama-service.d.ts.map +1 -1
  94. package/dist/services/ollama-service.js +15 -7
  95. package/dist/services/ollama-service.js.map +1 -1
  96. package/dist/services/openai-service.d.ts.map +1 -1
  97. package/dist/services/openai-service.js +14 -3
  98. package/dist/services/openai-service.js.map +1 -1
  99. package/dist/utils/ai-prompts.d.ts.map +1 -1
  100. package/dist/utils/ai-prompts.js +2 -0
  101. package/dist/utils/ai-prompts.js.map +1 -1
  102. package/dist/utils/config-loader.d.ts +1 -0
  103. package/dist/utils/config-loader.d.ts.map +1 -1
  104. package/dist/utils/config-loader.js +1 -1
  105. package/dist/utils/config-loader.js.map +1 -1
  106. package/dist/utils/file-templates.js +1 -1
  107. package/dist/utils/file-templates.js.map +1 -1
  108. package/dist/utils/logger.d.ts +30 -0
  109. package/dist/utils/logger.d.ts.map +1 -0
  110. package/dist/utils/logger.js +99 -0
  111. package/dist/utils/logger.js.map +1 -0
  112. package/dist/utils/pdf-to-image.d.ts.map +1 -1
  113. package/dist/utils/pdf-to-image.js +1 -7
  114. package/dist/utils/pdf-to-image.js.map +1 -1
  115. package/dist/utils/sanitizer.d.ts.map +1 -1
  116. package/dist/utils/sanitizer.js +1 -0
  117. package/dist/utils/sanitizer.js.map +1 -1
  118. package/dist/utils/ui.d.ts +35 -0
  119. package/dist/utils/ui.d.ts.map +1 -0
  120. package/dist/utils/ui.js +125 -0
  121. package/dist/utils/ui.js.map +1 -0
  122. package/eslint.config.js +27 -0
  123. package/package.json +9 -1
package/dist/cli/stats.js CHANGED
@@ -2,19 +2,20 @@ import { promises as fs } from 'fs';
2
2
  import path from 'path';
3
3
  import { computeStats } from '../utils/stats.js';
4
4
  import { formatBytes } from '../utils/fs-collect.js';
5
+ import * as ui from '../utils/ui.js';
5
6
  export async function statsCommand(directory, options = {}) {
6
7
  const stat = await fs.stat(directory);
7
8
  if (!stat.isDirectory())
8
9
  throw new Error(`${directory} is not a directory`);
9
10
  const stats = await computeStats(directory, options.recursive ?? false);
10
11
  if (stats.totalFiles === 0) {
11
- console.log('No files found.');
12
+ ui.info('No files found.');
12
13
  return;
13
14
  }
14
15
  const absDir = path.resolve(directory);
15
- console.log(`\nDirectory: ${absDir}`);
16
- console.log(`Total: ${stats.totalFiles} file(s) · ${formatBytes(stats.totalBytes)}\n`);
17
- console.log('By type:');
16
+ ui.info(`\nDirectory: ${absDir}`);
17
+ ui.info(`Total: ${stats.totalFiles} file(s) · ${formatBytes(stats.totalBytes)}\n`);
18
+ ui.info('By type:');
18
19
  for (const t of stats.byType) {
19
20
  const pct = stats.totalBytes > 0
20
21
  ? ` (${Math.round((t.bytes / stats.totalBytes) * 100)}%)`
@@ -25,7 +26,7 @@ export async function statsCommand(directory, options = {}) {
25
26
  console.log(` ${extLabel} ${countLabel} ${sizeLabel}${pct}`);
26
27
  }
27
28
  if (stats.largest.length > 0) {
28
- console.log('\nLargest files:');
29
+ ui.info('\nLargest files:');
29
30
  for (const f of stats.largest.slice(0, 5)) {
30
31
  const name = path.relative(directory, f.path);
31
32
  console.log(` ${name.padEnd(40)} ${formatBytes(f.bytes)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/cli/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,UAAmC,EAAE;IAErC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,qBAAqB,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IAExE,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,UAAU,cAAc,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEvF,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,UAAU,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/cli/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,UAAmC,EAAE;IAErC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,qBAAqB,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IAExE,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;IAClC,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,UAAU,cAAc,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEnF,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC;YAC9B,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,IAAI;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,UAAU,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/cli/tree.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/cli/tree.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CAOf"}
package/dist/cli/tree.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import path from 'path';
3
3
  import { formatBytes } from '../utils/fs-collect.js';
4
+ import * as ui from '../utils/ui.js';
4
5
  export async function treeCommand(directory, options = {}) {
5
6
  const stat = await fs.stat(directory);
6
7
  if (!stat.isDirectory())
7
8
  throw new Error(`${directory} is not a directory`);
8
9
  const maxDepth = options.depth ?? Infinity;
9
- console.log(`\n${path.resolve(directory)}`);
10
+ ui.info(`\n${path.resolve(directory)}`);
10
11
  await printTree(directory, '', 0, maxDepth);
11
12
  }
12
13
  async function printTree(dir, prefix, depth, maxDepth) {
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/cli/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/cli/tree.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/cli/undo.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAC9B,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC,IAAI,CAAC,CAyCf"}
1
+ {"version":3,"file":"undo.d.ts","sourceRoot":"","sources":["../../src/cli/undo.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAC9B,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC,IAAI,CAAC,CAyCf"}
package/dist/cli/undo.js CHANGED
@@ -2,18 +2,19 @@ import { promises as fs } from 'fs';
2
2
  import path from 'path';
3
3
  import inquirer from 'inquirer';
4
4
  import { readHistory, appendHistory } from '../utils/history.js';
5
+ import * as ui from '../utils/ui.js';
5
6
  export async function undoRename(sessionId, options = {}) {
6
7
  if (options.list) {
7
8
  const history = await readHistory();
8
9
  const recent = history.slice(-10).reverse();
9
10
  if (recent.length === 0) {
10
- console.log('No rename history found.');
11
+ ui.info('No rename history found.');
11
12
  return;
12
13
  }
13
- console.log('Recent rename sessions:');
14
+ ui.info('Recent rename sessions:');
14
15
  recent.forEach(entry => {
15
16
  const label = entry.dryRun ? ' [dry-run]' : '';
16
- console.log(` ${entry.id}${label} — ${entry.renames.length} file(s) in ${entry.directory}`);
17
+ ui.dim(` ${entry.id}${label} — ${entry.renames.length} file(s) in ${entry.directory}`);
17
18
  });
18
19
  return;
19
20
  }
@@ -31,12 +32,12 @@ export async function undoRename(sessionId, options = {}) {
31
32
  else {
32
33
  entry = [...history].reverse().find(e => !e.dryRun);
33
34
  if (!entry) {
34
- console.log('No undo-able rename sessions found.');
35
+ ui.info('No undo-able rename sessions found.');
35
36
  return;
36
37
  }
37
38
  }
38
39
  if (entry.dryRun) {
39
- console.log(`Session ${entry.id} was a dry run — nothing to undo.`);
40
+ ui.info(`Session ${entry.id} was a dry run — nothing to undo.`);
40
41
  return;
41
42
  }
42
43
  await undoSession(entry);
@@ -49,12 +50,12 @@ async function undoSession(entry) {
49
50
  try {
50
51
  await fs.access(rename.newPath);
51
52
  await fs.rename(rename.newPath, rename.originalPath);
52
- console.log(`Restored: ${path.basename(rename.newPath)} → ${path.basename(rename.originalPath)}`);
53
+ ui.success(`Restored: ${path.basename(rename.newPath)} → ${path.basename(rename.originalPath)}`);
53
54
  succeeded++;
54
55
  }
55
56
  catch (error) {
56
57
  if (error.code === 'ENOENT') {
57
- console.warn(`Skipped: ${path.basename(rename.newPath)} not found`);
58
+ ui.warn(`Skipped: ${path.basename(rename.newPath)} not found`);
58
59
  skipped++;
59
60
  }
60
61
  else {
@@ -69,14 +70,14 @@ async function undoSession(entry) {
69
70
  dryRun: false,
70
71
  renames: reversed.map(r => ({ originalPath: r.newPath, newPath: r.originalPath }))
71
72
  });
72
- console.log(`\nUndo complete: ${succeeded} restored, ${skipped} skipped.`);
73
+ ui.info(`\nUndo complete: ${succeeded} restored, ${skipped} skipped.`);
73
74
  return { succeeded, skipped };
74
75
  }
75
76
  async function undoAll() {
76
77
  const history = await readHistory();
77
78
  const sessions = [...history].reverse().filter(e => !e.dryRun);
78
79
  if (sessions.length === 0) {
79
- console.log('No undo-able rename sessions found.');
80
+ ui.info('No undo-able rename sessions found.');
80
81
  return;
81
82
  }
82
83
  if (sessions.length > 1) {
@@ -87,17 +88,17 @@ async function undoAll() {
87
88
  default: false
88
89
  }]);
89
90
  if (!confirm) {
90
- console.log('Cancelled.');
91
+ ui.info('Cancelled.');
91
92
  return;
92
93
  }
93
94
  }
94
95
  for (const session of sessions) {
95
- console.log(`\nUndoing session: ${session.id}`);
96
+ ui.dim(`\nUndoing session: ${session.id}`);
96
97
  try {
97
98
  await undoSession(session);
98
99
  }
99
100
  catch (error) {
100
- console.error(`Error: Failed to undo session ${session.id}: ${error instanceof Error ? error.message : 'Unknown error'}`);
101
+ ui.error(`Failed to undo session ${session.id}: ${error instanceof Error ? error.message : 'Unknown error'}`);
101
102
  }
102
103
  }
103
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/cli/undo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/cli/undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAkB,EAClB,UAA6C,EAAE;IAE/C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,GAAG,KAAK,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,eAAe,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,IAAI,KAA+B,CAAC;IAEpC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,mCAAmC,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAmB;IAC5C,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YACrD,EAAE,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACjG,SAAS,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,EAAE,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC/D,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,CAAC;QAClB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;KACnF,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,oBAAoB,SAAS,cAAc,OAAO,WAAW,CAAC,CAAC;IACvE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,YAAY,QAAQ,CAAC,MAAM,qBAAqB;gBACzD,OAAO,EAAE,KAAK;aACf,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,EAAE,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAUA,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAkInF"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAWA,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAkInF"}
package/dist/cli/watch.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import path from 'path';
2
2
  import { promises as fs } from 'fs';
3
3
  import chokidar from 'chokidar';
4
+ import * as ui from '../utils/ui.js';
4
5
  import { DocumentParserFactory } from '../parsers/factory.js';
5
6
  import { AIServiceFactory } from '../services/ai-factory.js';
6
7
  import { FileRenamer } from '../services/file-renamer.js';
@@ -70,11 +71,11 @@ export async function watchDirectory(directory, options) {
70
71
  return !supportedExtensions.includes(ext);
71
72
  }
72
73
  });
73
- console.log(`Watching ${absDir} for new files...`);
74
+ ui.info(`Watching ${absDir} for new files…`);
74
75
  // Handle new file events
75
76
  watcher.on('add', async (filePath) => {
76
77
  const fileName = path.basename(filePath);
77
- console.log(`Detected new file: ${fileName}`);
78
+ ui.dim(`Detected: ${fileName}`);
78
79
  try {
79
80
  const fileStat = await fs.stat(filePath);
80
81
  const extension = path.extname(fileName).toLowerCase();
@@ -97,7 +98,7 @@ export async function watchDirectory(directory, options) {
97
98
  const result = results[0];
98
99
  if (result?.success && result.newPath !== result.originalPath) {
99
100
  const newName = path.basename(result.newPath);
100
- console.log(`Renamed: ${fileName} ${newName}`);
101
+ ui.success(`${fileName} ${newName}`);
101
102
  await appendHistory({
102
103
  id: new Date().toISOString(),
103
104
  timestamp: new Date().toISOString(),
@@ -107,17 +108,17 @@ export async function watchDirectory(directory, options) {
107
108
  });
108
109
  }
109
110
  else if (result?.success) {
110
- console.log(`No rename needed for: ${fileName}`);
111
+ ui.dim(`No rename needed for: ${fileName}`);
111
112
  }
112
113
  }
113
114
  catch (error) {
114
- console.error(`Error processing ${fileName}:`, error instanceof Error ? error.message : 'Unknown error');
115
+ ui.error(`Error processing ${fileName}: ${error instanceof Error ? error.message : 'Unknown error'}`);
115
116
  }
116
117
  });
117
118
  // Keep the process alive until shutdown signal
118
119
  await new Promise((resolve) => {
119
120
  const shutdown = async () => {
120
- console.log('\nStopping watcher...');
121
+ ui.dim('\nStopping watcher');
121
122
  await watcher.close();
122
123
  resolve();
123
124
  };
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAiB,EAAE,OAAY;IAClE,qBAAqB;IACrB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,qBAAqB,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvC,6BAA6B;IAC7B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAE5C,mBAAmB;IACnB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAyB,CAAC;IAE/F,kCAAkC;IAClC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5B,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC;IACvF,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC3F,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACvE,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/D,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACtC,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,MAAM,GAAW;QACrB,UAAU,EAAE,QAAQ;QACpB,MAAM;QACN,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;QAC1F,mBAAmB,EAAE,IAAI,qBAAqB,EAAE,CAAC,sBAAsB,EAAE;QACzE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,gBAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,YAAY,CAA+B;QACjG,eAAe,EAAE;YACf,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,IAAI,SAAS,CAAiB;YAChF,YAAY,EAAE,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;YAC7C,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,MAAM,CAAe;SACtE;QACD,cAAc,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO;YAC9C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;SACzC;QACD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK;QAC7D,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK;QAC/E,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;QACnF,UAAU,EAAE,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM;QAC/C,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,KAAK;KAC3B,CAAC;IAEF,yDAAyD;IACzD,MAAM,aAAa,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,mBAAmB,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC;IAEnE,oDAAoD;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACtH,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,SAAgB,EAAE,MAAM,CAAC,CAAC;IAEzE,8BAA8B;IAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE;QACrC,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,2EAA2E;YAC3E,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YACvB,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,mBAAmB,CAAC,CAAC;IAEnD,yBAAyB;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzE,MAAM,QAAQ,GAAa;gBACzB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,SAAS;gBACT,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,UAAU,EAAE,QAAQ,CAAC,KAAK;gBAC1B,UAAU,EAAE,QAAQ,CAAC,KAAK;gBAC1B,YAAY;gBACZ,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChC,gBAAgB,EAAE,SAAS;aAC5B,CAAC;YAEF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAM,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,MAAM,OAAO,EAAE,CAAC,CAAC;gBACjD,MAAM,aAAa,CAAC;oBAClB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,MAAM;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;iBAC1E,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,GAAG,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export interface NamewiseErrorOptions {
2
+ hint?: string;
3
+ details?: Record<string, unknown>;
4
+ cause?: unknown;
5
+ }
6
+ export declare class NamewiseError extends Error {
7
+ readonly hint?: string;
8
+ readonly details?: Record<string, unknown>;
9
+ constructor(message: string, opts?: NamewiseErrorOptions);
10
+ }
11
+ export declare class AuthError extends NamewiseError {
12
+ constructor(message: string, opts?: NamewiseErrorOptions);
13
+ }
14
+ export declare class NetworkError extends NamewiseError {
15
+ constructor(message: string, opts?: NamewiseErrorOptions);
16
+ }
17
+ export declare class RateLimitError extends NamewiseError {
18
+ constructor(message: string, opts?: NamewiseErrorOptions);
19
+ }
20
+ export declare class ParseError extends NamewiseError {
21
+ constructor(message: string, opts?: NamewiseErrorOptions);
22
+ }
23
+ export declare class FileSizeError extends NamewiseError {
24
+ constructor(message: string, opts?: NamewiseErrorOptions);
25
+ }
26
+ export declare class UnsupportedTypeError extends NamewiseError {
27
+ constructor(message: string, opts?: NamewiseErrorOptions);
28
+ }
29
+ export declare class ConfigError extends NamewiseError {
30
+ constructor(message: string, opts?: NamewiseErrorOptions);
31
+ }
32
+ export declare class VisionError extends NamewiseError {
33
+ constructor(message: string, opts?: NamewiseErrorOptions);
34
+ }
35
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,SAAU,SAAQ,aAAa;gBAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,YAAa,SAAQ,aAAa;gBACjC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,cAAe,SAAQ,aAAa;gBACnC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,UAAW,SAAQ,aAAa;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,aAAc,SAAQ,aAAa;gBAClC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,oBAAqB,SAAQ,aAAa;gBACzC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,WAAY,SAAQ,aAAa;gBAChC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD;AAED,qBAAa,WAAY,SAAQ,aAAa;gBAChC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB;CAMzD"}
package/dist/errors.js ADDED
@@ -0,0 +1,75 @@
1
+ export class NamewiseError extends Error {
2
+ hint;
3
+ details;
4
+ constructor(message, opts) {
5
+ super(message, { cause: opts?.cause });
6
+ this.name = this.constructor.name;
7
+ this.hint = opts?.hint;
8
+ this.details = opts?.details;
9
+ }
10
+ }
11
+ export class AuthError extends NamewiseError {
12
+ constructor(message, opts) {
13
+ super(message, {
14
+ hint: 'Check your API key — ensure ANTHROPIC_API_KEY or OPENAI_API_KEY is set, or run: namewise config set apiKey YOUR_KEY',
15
+ ...opts
16
+ });
17
+ }
18
+ }
19
+ export class NetworkError extends NamewiseError {
20
+ constructor(message, opts) {
21
+ super(message, {
22
+ hint: 'Check your internet connection or try --provider ollama for local processing',
23
+ ...opts
24
+ });
25
+ }
26
+ }
27
+ export class RateLimitError extends NamewiseError {
28
+ constructor(message, opts) {
29
+ super(message, {
30
+ hint: 'You have hit the provider rate limit — wait a moment and try again, or reduce concurrency with --concurrency 1',
31
+ ...opts
32
+ });
33
+ }
34
+ }
35
+ export class ParseError extends NamewiseError {
36
+ constructor(message, opts) {
37
+ super(message, {
38
+ hint: 'The file may be corrupt or in an unsupported format',
39
+ ...opts
40
+ });
41
+ }
42
+ }
43
+ export class FileSizeError extends NamewiseError {
44
+ constructor(message, opts) {
45
+ super(message, {
46
+ hint: 'Use --max-size to increase the limit, e.g. --max-size 20',
47
+ ...opts
48
+ });
49
+ }
50
+ }
51
+ export class UnsupportedTypeError extends NamewiseError {
52
+ constructor(message, opts) {
53
+ super(message, {
54
+ hint: 'Run namewise info <file> to see which file types are supported',
55
+ ...opts
56
+ });
57
+ }
58
+ }
59
+ export class ConfigError extends NamewiseError {
60
+ constructor(message, opts) {
61
+ super(message, {
62
+ hint: 'Run namewise config list to see valid configuration keys and values',
63
+ ...opts
64
+ });
65
+ }
66
+ }
67
+ export class VisionError extends NamewiseError {
68
+ constructor(message, opts) {
69
+ super(message, {
70
+ hint: 'Use --provider claude or --provider openai for vision support',
71
+ ...opts
72
+ });
73
+ }
74
+ }
75
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAU;IACd,OAAO,CAA2B;IAE3C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,aAAa;IAC1C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,qHAAqH;YAC3H,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,8EAA8E;YACpF,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,aAAa;IAC/C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,gHAAgH;YACtH,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,aAAa;IAC3C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,qDAAqD;YAC3D,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,0DAA0D;YAChE,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IACrD,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,gEAAgE;YACtE,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,qEAAqE;YAC3E,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C,YAAY,OAAe,EAAE,IAA2B;QACtD,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,EAAE,+DAA+D;YACrE,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/index.js CHANGED
@@ -1,11 +1,13 @@
1
1
  #!/usr/bin/env node
2
+ import { readFileSync } from 'fs';
2
3
  import { program } from 'commander';
3
4
  import { setupCommands } from './cli/commands.js';
5
+ const { version } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
4
6
  async function main() {
5
7
  program
6
8
  .name('namewise')
7
9
  .description('🤖 AI-powered CLI tool that intelligently renames, organises, and cleans up files')
8
- .version('0.8.0')
10
+ .version(version)
9
11
  .addHelpText('after', `
10
12
 
11
13
  📋 Supported File Types:
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,KAAK,UAAU,IAAI;IACjB,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,mFAAmF,CAAC;SAChG,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CzB,CAAC,CAAC;IAED,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,mFAAmF,CAAC;SAChG,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CzB,CAAC,CAAC;IAED,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"excel-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/excel-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAElF,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK7B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAuDpD"}
1
+ {"version":3,"file":"excel-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/excel-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAGlF,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK7B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAyDpD"}
@@ -1,5 +1,6 @@
1
1
  import path from 'path';
2
2
  import Excel from 'exceljs';
3
+ import { ParseError } from '../errors.js';
3
4
  export class ExcelParser {
4
5
  supports(filePath) {
5
6
  const ext = path.extname(filePath).toLowerCase();
@@ -50,7 +51,10 @@ export class ExcelParser {
50
51
  return { content, metadata };
51
52
  }
52
53
  catch (error) {
53
- throw new Error(`Failed to parse Excel file: ${error instanceof Error ? error.message : 'Unknown error'}`);
54
+ // Re-throw if already typed prevents double-wrapping by future nested calls
55
+ if (error instanceof ParseError)
56
+ throw error;
57
+ throw new ParseError(`Failed to parse Excel file: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
54
58
  }
55
59
  }
56
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"excel-parser.js","sourceRoot":"","sources":["../../src/parsers/excel-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excel-parser.js","sourceRoot":"","sources":["../../src/parsers/excel-parser.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { DocumentParser, Config } from '../types/index.js';
2
2
  export declare class DocumentParserFactory {
3
3
  private parsers;
4
- constructor(config?: Config);
4
+ constructor(_config?: Config);
5
5
  getParser(filePath: string): DocumentParser | null;
6
6
  getSupportedExtensions(): string[];
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAmB;gBAEtB,MAAM,CAAC,EAAE,MAAM;IAU3B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIlD,sBAAsB,IAAI,MAAM,EAAE;CASnC"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAO3D,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,CAAC,EAAE,MAAM;IAU5B,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIlD,sBAAsB,IAAI,MAAM,EAAE;CASnC"}
@@ -5,7 +5,7 @@ import { TextParser } from './text-parser.js';
5
5
  import { ImageParser } from './image-parser.js';
6
6
  export class DocumentParserFactory {
7
7
  parsers;
8
- constructor(config) {
8
+ constructor(_config) {
9
9
  this.parsers = [
10
10
  new PDFParser(),
11
11
  new WordParser(),
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,OAAO,qBAAqB;IACxB,OAAO,CAAmB;IAElC,YAAY,MAAe;QACzB,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,SAAS,EAAE;YACf,IAAI,UAAU,EAAE;YAChB,IAAI,WAAW,EAAE;YACjB,IAAI,UAAU,EAAE;YAChB,IAAI,WAAW,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC;IACxE,CAAC;IAED,sBAAsB;QACpB,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;SACnE,CAAC;QACF,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/parsers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,OAAO,qBAAqB;IACxB,OAAO,CAAmB;IAElC,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,SAAS,EAAE;YACf,IAAI,UAAU,EAAE;YAChB,IAAI,WAAW,EAAE;YACjB,IAAI,UAAU,EAAE;YAChB,IAAI,WAAW,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC;IACxE,CAAC;IAED,sBAAsB;QACpB,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;SACnE,CAAC;QACF,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/pdf-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAGlF,qBAAa,SAAU,YAAW,cAAc;;IAK9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiEnD,OAAO,CAAC,SAAS;CAmBlB"}
1
+ {"version":3,"file":"pdf-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/pdf-parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAIlF,qBAAa,SAAU,YAAW,cAAc;;IAK9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7B,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA4DnD,OAAO,CAAC,SAAS;CAmBlB"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { PDFToImageConverter } from '../utils/pdf-to-image.js';
4
+ import { ParseError } from '../errors.js';
4
5
  export class PDFParser {
5
6
  constructor() {
6
7
  // No constructor parameters needed anymore
@@ -10,30 +11,37 @@ export class PDFParser {
10
11
  }
11
12
  async parse(filePath) {
12
13
  try {
13
- // Dynamic import for pdf-extraction (default export)
14
14
  const pdfExtraction = await import('pdf-extraction');
15
15
  const extract = pdfExtraction.default;
16
16
  const dataBuffer = fs.readFileSync(filePath);
17
- const data = await extract(dataBuffer, {});
18
- let content = data.text?.trim() || '';
19
- // Check if this is a scanned PDF and convert to image for AI analysis
20
- if (PDFToImageConverter.isScannedPDF(content)) {
21
- try {
22
- console.log('🔍 Detected scanned PDF, converting to image for AI analysis...');
23
- const imageBase64 = await PDFToImageConverter.convertFirstPageToBase64(dataBuffer);
24
- // Store the image data as a special marker for the AI service to detect
25
- content = `[SCANNED_PDF_IMAGE]:${imageBase64}`;
26
- console.log('PDF converted to image successfully');
27
- }
28
- catch (conversionError) {
29
- console.warn('PDF to image conversion failed:', conversionError instanceof Error ? conversionError.message : 'Unknown error');
30
- console.log('💡 PDF-poppler requires system dependencies. Falling back to empty content.');
31
- // Continue with empty content - AI services will handle this gracefully
17
+ // Suppress pdfjs noise (both stderr and console.warn) for the entire PDF
18
+ // pipeline the "TT: undefined function" warning can come from either
19
+ // pdf-extraction (text path) or pdf-to-png-converter (scanned path).
20
+ const origStderrWrite = process.stderr.write?.bind(process.stderr);
21
+ const origConsoleWarn = console.warn;
22
+ process.stderr.write = () => true;
23
+ console.warn = () => { };
24
+ let data;
25
+ let content = '';
26
+ try {
27
+ data = await extract(dataBuffer, {});
28
+ content = data.text?.trim() || '';
29
+ if (PDFToImageConverter.isScannedPDF(content)) {
30
+ try {
31
+ const imageBase64 = await PDFToImageConverter.convertFirstPageToBase64(dataBuffer);
32
+ content = `[SCANNED_PDF_IMAGE]:${imageBase64}`;
33
+ }
34
+ catch {
35
+ // Conversion failed; continue with empty content — AI handles gracefully
36
+ }
32
37
  }
33
38
  }
34
- // Extract PDF metadata if available
39
+ finally {
40
+ if (origStderrWrite)
41
+ process.stderr.write = origStderrWrite;
42
+ console.warn = origConsoleWarn;
43
+ }
35
44
  const metadata = {};
36
- // Cast data to any to access potentially existing metadata properties
37
45
  const pdfData = data;
38
46
  if (pdfData.meta) {
39
47
  if (pdfData.meta.info) {
@@ -41,26 +49,23 @@ export class PDFParser {
41
49
  metadata.author = pdfData.meta.info.Author;
42
50
  metadata.creator = pdfData.meta.info.Creator;
43
51
  metadata.subject = pdfData.meta.info.Subject;
44
- // Parse dates if available
45
- if (pdfData.meta.info.CreationDate) {
52
+ if (pdfData.meta.info.CreationDate)
46
53
  metadata.creationDate = this.parseDate(pdfData.meta.info.CreationDate);
47
- }
48
- if (pdfData.meta.info.ModDate) {
54
+ if (pdfData.meta.info.ModDate)
49
55
  metadata.modificationDate = this.parseDate(pdfData.meta.info.ModDate);
50
- }
51
56
  }
52
- if (pdfData.numpages) {
57
+ if (pdfData.numpages)
53
58
  metadata.pages = pdfData.numpages;
54
- }
55
- }
56
- // Estimate word count from text content
57
- if (content) {
58
- metadata.wordCount = content.split(/\s+/).filter(word => word.length > 0).length;
59
59
  }
60
+ if (content)
61
+ metadata.wordCount = content.split(/\s+/).filter((w) => w.length > 0).length;
60
62
  return { content, metadata };
61
63
  }
62
64
  catch (error) {
63
- throw new Error(`Failed to parse PDF file: ${error instanceof Error ? error.message : 'Unknown error'}`);
65
+ // Re-throw if already typed prevents double-wrapping by future nested calls
66
+ if (error instanceof ParseError)
67
+ throw error;
68
+ throw new ParseError(`Failed to parse PDF: ${error instanceof Error ? error.message : 'Unknown error'}`, { cause: error });
64
69
  }
65
70
  }
66
71
  parseDate(dateStr) {