agents-reverse-engineer 0.1.1

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 (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +238 -0
  3. package/dist/change-detection/detector.d.ts +24 -0
  4. package/dist/change-detection/detector.d.ts.map +1 -0
  5. package/dist/change-detection/detector.js +114 -0
  6. package/dist/change-detection/detector.js.map +1 -0
  7. package/dist/change-detection/index.d.ts +9 -0
  8. package/dist/change-detection/index.d.ts.map +1 -0
  9. package/dist/change-detection/index.js +8 -0
  10. package/dist/change-detection/index.js.map +1 -0
  11. package/dist/change-detection/types.d.ts +39 -0
  12. package/dist/change-detection/types.d.ts.map +1 -0
  13. package/dist/change-detection/types.js +5 -0
  14. package/dist/change-detection/types.js.map +1 -0
  15. package/dist/cli/discover.d.ts +52 -0
  16. package/dist/cli/discover.d.ts.map +1 -0
  17. package/dist/cli/discover.js +125 -0
  18. package/dist/cli/discover.js.map +1 -0
  19. package/dist/cli/generate.d.ts +41 -0
  20. package/dist/cli/generate.d.ts.map +1 -0
  21. package/dist/cli/generate.js +179 -0
  22. package/dist/cli/generate.js.map +1 -0
  23. package/dist/cli/index.d.ts +12 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +182 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/init.d.ts +38 -0
  28. package/dist/cli/init.d.ts.map +1 -0
  29. package/dist/cli/init.js +94 -0
  30. package/dist/cli/init.js.map +1 -0
  31. package/dist/cli/update.d.ts +28 -0
  32. package/dist/cli/update.d.ts.map +1 -0
  33. package/dist/cli/update.js +296 -0
  34. package/dist/cli/update.js.map +1 -0
  35. package/dist/config/defaults.d.ts +38 -0
  36. package/dist/config/defaults.d.ts.map +1 -0
  37. package/dist/config/defaults.js +89 -0
  38. package/dist/config/defaults.js.map +1 -0
  39. package/dist/config/loader.d.ts +66 -0
  40. package/dist/config/loader.d.ts.map +1 -0
  41. package/dist/config/loader.js +158 -0
  42. package/dist/config/loader.js.map +1 -0
  43. package/dist/config/schema.d.ts +235 -0
  44. package/dist/config/schema.d.ts.map +1 -0
  45. package/dist/config/schema.js +80 -0
  46. package/dist/config/schema.js.map +1 -0
  47. package/dist/discovery/filters/binary.d.ts +46 -0
  48. package/dist/discovery/filters/binary.d.ts.map +1 -0
  49. package/dist/discovery/filters/binary.js +157 -0
  50. package/dist/discovery/filters/binary.js.map +1 -0
  51. package/dist/discovery/filters/custom.d.ts +26 -0
  52. package/dist/discovery/filters/custom.d.ts.map +1 -0
  53. package/dist/discovery/filters/custom.js +50 -0
  54. package/dist/discovery/filters/custom.js.map +1 -0
  55. package/dist/discovery/filters/gitignore.d.ts +24 -0
  56. package/dist/discovery/filters/gitignore.d.ts.map +1 -0
  57. package/dist/discovery/filters/gitignore.js +53 -0
  58. package/dist/discovery/filters/gitignore.js.map +1 -0
  59. package/dist/discovery/filters/index.d.ts +85 -0
  60. package/dist/discovery/filters/index.d.ts.map +1 -0
  61. package/dist/discovery/filters/index.js +98 -0
  62. package/dist/discovery/filters/index.js.map +1 -0
  63. package/dist/discovery/filters/vendor.d.ts +30 -0
  64. package/dist/discovery/filters/vendor.d.ts.map +1 -0
  65. package/dist/discovery/filters/vendor.js +57 -0
  66. package/dist/discovery/filters/vendor.js.map +1 -0
  67. package/dist/discovery/types.d.ts +66 -0
  68. package/dist/discovery/types.d.ts.map +1 -0
  69. package/dist/discovery/types.js +8 -0
  70. package/dist/discovery/types.js.map +1 -0
  71. package/dist/discovery/walker.d.ts +24 -0
  72. package/dist/discovery/walker.d.ts.map +1 -0
  73. package/dist/discovery/walker.js +35 -0
  74. package/dist/discovery/walker.js.map +1 -0
  75. package/dist/generation/budget/chunker.d.ts +38 -0
  76. package/dist/generation/budget/chunker.d.ts.map +1 -0
  77. package/dist/generation/budget/chunker.js +73 -0
  78. package/dist/generation/budget/chunker.js.map +1 -0
  79. package/dist/generation/budget/counter.d.ts +26 -0
  80. package/dist/generation/budget/counter.d.ts.map +1 -0
  81. package/dist/generation/budget/counter.js +45 -0
  82. package/dist/generation/budget/counter.js.map +1 -0
  83. package/dist/generation/budget/index.d.ts +4 -0
  84. package/dist/generation/budget/index.d.ts.map +1 -0
  85. package/dist/generation/budget/index.js +4 -0
  86. package/dist/generation/budget/index.js.map +1 -0
  87. package/dist/generation/budget/tracker.d.ts +63 -0
  88. package/dist/generation/budget/tracker.d.ts.map +1 -0
  89. package/dist/generation/budget/tracker.js +96 -0
  90. package/dist/generation/budget/tracker.js.map +1 -0
  91. package/dist/generation/complexity.d.ts +43 -0
  92. package/dist/generation/complexity.d.ts.map +1 -0
  93. package/dist/generation/complexity.js +156 -0
  94. package/dist/generation/complexity.js.map +1 -0
  95. package/dist/generation/detection/detector.d.ts +23 -0
  96. package/dist/generation/detection/detector.d.ts.map +1 -0
  97. package/dist/generation/detection/detector.js +62 -0
  98. package/dist/generation/detection/detector.js.map +1 -0
  99. package/dist/generation/detection/patterns.d.ts +21 -0
  100. package/dist/generation/detection/patterns.d.ts.map +1 -0
  101. package/dist/generation/detection/patterns.js +115 -0
  102. package/dist/generation/detection/patterns.js.map +1 -0
  103. package/dist/generation/executor.d.ts +95 -0
  104. package/dist/generation/executor.d.ts.map +1 -0
  105. package/dist/generation/executor.js +352 -0
  106. package/dist/generation/executor.js.map +1 -0
  107. package/dist/generation/orchestrator.d.ts +126 -0
  108. package/dist/generation/orchestrator.d.ts.map +1 -0
  109. package/dist/generation/orchestrator.js +222 -0
  110. package/dist/generation/orchestrator.js.map +1 -0
  111. package/dist/generation/prompts/builder.d.ts +31 -0
  112. package/dist/generation/prompts/builder.d.ts.map +1 -0
  113. package/dist/generation/prompts/builder.js +136 -0
  114. package/dist/generation/prompts/builder.js.map +1 -0
  115. package/dist/generation/prompts/index.d.ts +5 -0
  116. package/dist/generation/prompts/index.d.ts.map +1 -0
  117. package/dist/generation/prompts/index.js +4 -0
  118. package/dist/generation/prompts/index.js.map +1 -0
  119. package/dist/generation/prompts/templates.d.ts +11 -0
  120. package/dist/generation/prompts/templates.d.ts.map +1 -0
  121. package/dist/generation/prompts/templates.js +247 -0
  122. package/dist/generation/prompts/templates.js.map +1 -0
  123. package/dist/generation/prompts/types.d.ts +71 -0
  124. package/dist/generation/prompts/types.d.ts.map +1 -0
  125. package/dist/generation/prompts/types.js +23 -0
  126. package/dist/generation/prompts/types.js.map +1 -0
  127. package/dist/generation/types.d.ts +72 -0
  128. package/dist/generation/types.d.ts.map +1 -0
  129. package/dist/generation/types.js +5 -0
  130. package/dist/generation/types.js.map +1 -0
  131. package/dist/generation/writers/agents-md.d.ts +63 -0
  132. package/dist/generation/writers/agents-md.d.ts.map +1 -0
  133. package/dist/generation/writers/agents-md.js +235 -0
  134. package/dist/generation/writers/agents-md.js.map +1 -0
  135. package/dist/generation/writers/claude-md.d.ts +13 -0
  136. package/dist/generation/writers/claude-md.d.ts.map +1 -0
  137. package/dist/generation/writers/claude-md.js +33 -0
  138. package/dist/generation/writers/claude-md.js.map +1 -0
  139. package/dist/generation/writers/index.d.ts +5 -0
  140. package/dist/generation/writers/index.d.ts.map +1 -0
  141. package/dist/generation/writers/index.js +5 -0
  142. package/dist/generation/writers/index.js.map +1 -0
  143. package/dist/generation/writers/sum.d.ts +37 -0
  144. package/dist/generation/writers/sum.d.ts.map +1 -0
  145. package/dist/generation/writers/sum.js +98 -0
  146. package/dist/generation/writers/sum.js.map +1 -0
  147. package/dist/generation/writers/supplementary.d.ts +53 -0
  148. package/dist/generation/writers/supplementary.d.ts.map +1 -0
  149. package/dist/generation/writers/supplementary.js +195 -0
  150. package/dist/generation/writers/supplementary.js.map +1 -0
  151. package/dist/integration/detect.d.ts +28 -0
  152. package/dist/integration/detect.d.ts.map +1 -0
  153. package/dist/integration/detect.js +64 -0
  154. package/dist/integration/detect.js.map +1 -0
  155. package/dist/integration/generate.d.ts +36 -0
  156. package/dist/integration/generate.d.ts.map +1 -0
  157. package/dist/integration/generate.js +107 -0
  158. package/dist/integration/generate.js.map +1 -0
  159. package/dist/integration/templates.d.ts +42 -0
  160. package/dist/integration/templates.d.ts.map +1 -0
  161. package/dist/integration/templates.js +203 -0
  162. package/dist/integration/templates.js.map +1 -0
  163. package/dist/integration/types.d.ts +44 -0
  164. package/dist/integration/types.d.ts.map +1 -0
  165. package/dist/integration/types.js +8 -0
  166. package/dist/integration/types.js.map +1 -0
  167. package/dist/output/logger.d.ts +86 -0
  168. package/dist/output/logger.d.ts.map +1 -0
  169. package/dist/output/logger.js +107 -0
  170. package/dist/output/logger.js.map +1 -0
  171. package/dist/state/database.d.ts +9 -0
  172. package/dist/state/database.d.ts.map +1 -0
  173. package/dist/state/database.js +66 -0
  174. package/dist/state/database.js.map +1 -0
  175. package/dist/state/index.d.ts +8 -0
  176. package/dist/state/index.d.ts.map +1 -0
  177. package/dist/state/index.js +7 -0
  178. package/dist/state/index.js.map +1 -0
  179. package/dist/state/migrations.d.ts +12 -0
  180. package/dist/state/migrations.d.ts.map +1 -0
  181. package/dist/state/migrations.js +39 -0
  182. package/dist/state/migrations.js.map +1 -0
  183. package/dist/state/types.d.ts +54 -0
  184. package/dist/state/types.d.ts.map +1 -0
  185. package/dist/state/types.js +2 -0
  186. package/dist/state/types.js.map +1 -0
  187. package/dist/types/index.d.ts +39 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/index.js +5 -0
  190. package/dist/types/index.js.map +1 -0
  191. package/dist/update/index.d.ts +10 -0
  192. package/dist/update/index.d.ts.map +1 -0
  193. package/dist/update/index.js +9 -0
  194. package/dist/update/index.js.map +1 -0
  195. package/dist/update/orchestrator.d.ts +91 -0
  196. package/dist/update/orchestrator.d.ts.map +1 -0
  197. package/dist/update/orchestrator.js +204 -0
  198. package/dist/update/orchestrator.js.map +1 -0
  199. package/dist/update/orphan-cleaner.d.ts +30 -0
  200. package/dist/update/orphan-cleaner.d.ts.map +1 -0
  201. package/dist/update/orphan-cleaner.js +151 -0
  202. package/dist/update/orphan-cleaner.js.map +1 -0
  203. package/dist/update/types.d.ts +59 -0
  204. package/dist/update/types.d.ts.map +1 -0
  205. package/dist/update/types.js +2 -0
  206. package/dist/update/types.js.map +1 -0
  207. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAa,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAU,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtG,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAErD,8BAA8B;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGlB;IACA;IAHlB,YACE,OAAe,EACC,QAAgB,EAChB,KAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,aAAQ,GAAR,QAAQ,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAQ;QAG7B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3B,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;qBACtB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;qBAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,MAAM,IAAI,WAAW,CACnB,4BAA4B,UAAU,MAAM,MAAM,EAAE,EACpD,UAAU,EACV,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mCAAmC;QACnC,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,6BAA6B;QAC7B,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,mBAAmB;QACnB,MAAM,IAAI,WAAW,CACnB,mBAAmB,UAAU,KAAM,GAAa,CAAC,OAAO,EAAE,EAC1D,UAAU,EACV,GAAY,CACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAErD,6BAA6B;IAC7B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,wCAAwC;IACxC,MAAM,aAAa,GAAG;;;;;;;;;;;EAWtB,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;EAK3D,yBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;eAQpD,qBAAqB;iBACnB,qBAAqB;;;;;;;;;CASrC,CAAC;IAEA,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Zod schema for configuration validation
3
+ *
4
+ * This schema defines the structure of `.agents-reverse/config.yaml`
5
+ * and provides sensible defaults for all fields.
6
+ */
7
+ import { z } from 'zod';
8
+ /**
9
+ * Schema for exclusion configuration
10
+ */
11
+ declare const ExcludeSchema: z.ZodDefault<z.ZodObject<{
12
+ /** Custom glob patterns to exclude (e.g., ["*.log", "temp/**"]) */
13
+ patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
14
+ /** Vendor directories to exclude */
15
+ vendorDirs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
16
+ /** Binary file extensions to exclude */
17
+ binaryExtensions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ vendorDirs: string[];
20
+ patterns: string[];
21
+ binaryExtensions: string[];
22
+ }, {
23
+ vendorDirs?: string[] | undefined;
24
+ patterns?: string[] | undefined;
25
+ binaryExtensions?: string[] | undefined;
26
+ }>>;
27
+ /**
28
+ * Schema for options configuration
29
+ */
30
+ declare const OptionsSchema: z.ZodDefault<z.ZodObject<{
31
+ /** Whether to follow symbolic links during traversal */
32
+ followSymlinks: z.ZodDefault<z.ZodBoolean>;
33
+ /** Maximum file size in bytes (files larger than this are skipped) */
34
+ maxFileSize: z.ZodDefault<z.ZodNumber>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ maxFileSize: number;
37
+ followSymlinks: boolean;
38
+ }, {
39
+ maxFileSize?: number | undefined;
40
+ followSymlinks?: boolean | undefined;
41
+ }>>;
42
+ /**
43
+ * Schema for output configuration
44
+ */
45
+ declare const OutputSchema: z.ZodDefault<z.ZodObject<{
46
+ /** Whether to use colors in terminal output */
47
+ colors: z.ZodDefault<z.ZodBoolean>;
48
+ /** Whether to show verbose output (each file as processed) */
49
+ verbose: z.ZodDefault<z.ZodBoolean>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ colors: boolean;
52
+ verbose: boolean;
53
+ }, {
54
+ colors?: boolean | undefined;
55
+ verbose?: boolean | undefined;
56
+ }>>;
57
+ /**
58
+ * Schema for generation configuration
59
+ */
60
+ declare const GenerationSchema: z.ZodDefault<z.ZodObject<{
61
+ /** Token budget for entire project (default: 100,000) */
62
+ tokenBudget: z.ZodDefault<z.ZodNumber>;
63
+ /** Generate ARCHITECTURE.md when thresholds met (default: true) */
64
+ generateArchitecture: z.ZodDefault<z.ZodBoolean>;
65
+ /** Generate STACK.md from package.json (default: true) */
66
+ generateStack: z.ZodDefault<z.ZodBoolean>;
67
+ /** Output directory for supplementary docs (default: project root) */
68
+ supplementaryDocsDir: z.ZodOptional<z.ZodString>;
69
+ /** Chunk size for large files in tokens (default: 3000) */
70
+ chunkSize: z.ZodDefault<z.ZodNumber>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ tokenBudget: number;
73
+ generateArchitecture: boolean;
74
+ generateStack: boolean;
75
+ chunkSize: number;
76
+ supplementaryDocsDir?: string | undefined;
77
+ }, {
78
+ tokenBudget?: number | undefined;
79
+ generateArchitecture?: boolean | undefined;
80
+ generateStack?: boolean | undefined;
81
+ supplementaryDocsDir?: string | undefined;
82
+ chunkSize?: number | undefined;
83
+ }>>;
84
+ /**
85
+ * Main configuration schema for agents-reverse.
86
+ *
87
+ * All fields have sensible defaults, so an empty object `{}` is valid
88
+ * and will result in a fully populated configuration.
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * // Parse with defaults
93
+ * const config = ConfigSchema.parse({});
94
+ *
95
+ * // Parse with partial overrides
96
+ * const config = ConfigSchema.parse({
97
+ * exclude: { patterns: ['*.log'] }
98
+ * });
99
+ * ```
100
+ */
101
+ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
102
+ /** Exclusion rules for files and directories */
103
+ exclude: z.ZodDefault<z.ZodObject<{
104
+ /** Custom glob patterns to exclude (e.g., ["*.log", "temp/**"]) */
105
+ patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
106
+ /** Vendor directories to exclude */
107
+ vendorDirs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
108
+ /** Binary file extensions to exclude */
109
+ binaryExtensions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
110
+ }, "strip", z.ZodTypeAny, {
111
+ vendorDirs: string[];
112
+ patterns: string[];
113
+ binaryExtensions: string[];
114
+ }, {
115
+ vendorDirs?: string[] | undefined;
116
+ patterns?: string[] | undefined;
117
+ binaryExtensions?: string[] | undefined;
118
+ }>>;
119
+ /** Discovery options */
120
+ options: z.ZodDefault<z.ZodObject<{
121
+ /** Whether to follow symbolic links during traversal */
122
+ followSymlinks: z.ZodDefault<z.ZodBoolean>;
123
+ /** Maximum file size in bytes (files larger than this are skipped) */
124
+ maxFileSize: z.ZodDefault<z.ZodNumber>;
125
+ }, "strip", z.ZodTypeAny, {
126
+ maxFileSize: number;
127
+ followSymlinks: boolean;
128
+ }, {
129
+ maxFileSize?: number | undefined;
130
+ followSymlinks?: boolean | undefined;
131
+ }>>;
132
+ /** Output formatting options */
133
+ output: z.ZodDefault<z.ZodObject<{
134
+ /** Whether to use colors in terminal output */
135
+ colors: z.ZodDefault<z.ZodBoolean>;
136
+ /** Whether to show verbose output (each file as processed) */
137
+ verbose: z.ZodDefault<z.ZodBoolean>;
138
+ }, "strip", z.ZodTypeAny, {
139
+ colors: boolean;
140
+ verbose: boolean;
141
+ }, {
142
+ colors?: boolean | undefined;
143
+ verbose?: boolean | undefined;
144
+ }>>;
145
+ /** Generation options */
146
+ generation: z.ZodDefault<z.ZodObject<{
147
+ /** Token budget for entire project (default: 100,000) */
148
+ tokenBudget: z.ZodDefault<z.ZodNumber>;
149
+ /** Generate ARCHITECTURE.md when thresholds met (default: true) */
150
+ generateArchitecture: z.ZodDefault<z.ZodBoolean>;
151
+ /** Generate STACK.md from package.json (default: true) */
152
+ generateStack: z.ZodDefault<z.ZodBoolean>;
153
+ /** Output directory for supplementary docs (default: project root) */
154
+ supplementaryDocsDir: z.ZodOptional<z.ZodString>;
155
+ /** Chunk size for large files in tokens (default: 3000) */
156
+ chunkSize: z.ZodDefault<z.ZodNumber>;
157
+ }, "strip", z.ZodTypeAny, {
158
+ tokenBudget: number;
159
+ generateArchitecture: boolean;
160
+ generateStack: boolean;
161
+ chunkSize: number;
162
+ supplementaryDocsDir?: string | undefined;
163
+ }, {
164
+ tokenBudget?: number | undefined;
165
+ generateArchitecture?: boolean | undefined;
166
+ generateStack?: boolean | undefined;
167
+ supplementaryDocsDir?: string | undefined;
168
+ chunkSize?: number | undefined;
169
+ }>>;
170
+ }, "strip", z.ZodTypeAny, {
171
+ options: {
172
+ maxFileSize: number;
173
+ followSymlinks: boolean;
174
+ };
175
+ exclude: {
176
+ vendorDirs: string[];
177
+ patterns: string[];
178
+ binaryExtensions: string[];
179
+ };
180
+ output: {
181
+ colors: boolean;
182
+ verbose: boolean;
183
+ };
184
+ generation: {
185
+ tokenBudget: number;
186
+ generateArchitecture: boolean;
187
+ generateStack: boolean;
188
+ chunkSize: number;
189
+ supplementaryDocsDir?: string | undefined;
190
+ };
191
+ }, {
192
+ options?: {
193
+ maxFileSize?: number | undefined;
194
+ followSymlinks?: boolean | undefined;
195
+ } | undefined;
196
+ exclude?: {
197
+ vendorDirs?: string[] | undefined;
198
+ patterns?: string[] | undefined;
199
+ binaryExtensions?: string[] | undefined;
200
+ } | undefined;
201
+ output?: {
202
+ colors?: boolean | undefined;
203
+ verbose?: boolean | undefined;
204
+ } | undefined;
205
+ generation?: {
206
+ tokenBudget?: number | undefined;
207
+ generateArchitecture?: boolean | undefined;
208
+ generateStack?: boolean | undefined;
209
+ supplementaryDocsDir?: string | undefined;
210
+ chunkSize?: number | undefined;
211
+ } | undefined;
212
+ }>>;
213
+ /**
214
+ * Inferred TypeScript type from the schema.
215
+ * Use this type for function parameters and return types.
216
+ */
217
+ export type Config = z.infer<typeof ConfigSchema>;
218
+ /**
219
+ * Type for the exclude section of config
220
+ */
221
+ export type ExcludeConfig = z.infer<typeof ExcludeSchema>;
222
+ /**
223
+ * Type for the options section of config
224
+ */
225
+ export type OptionsConfig = z.infer<typeof OptionsSchema>;
226
+ /**
227
+ * Type for the output section of config
228
+ */
229
+ export type OutputConfig = z.infer<typeof OutputSchema>;
230
+ /**
231
+ * Type for the generation section of config
232
+ */
233
+ export type GenerationConfig = z.infer<typeof GenerationSchema>;
234
+ export {};
235
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;GAEG;AACH,QAAA,MAAM,aAAa;IACjB,mEAAmE;;IAEnE,oCAAoC;;IAEpC,wCAAwC;;;;;;;;;;GAE5B,CAAC;AAEf;;GAEG;AACH,QAAA,MAAM,aAAa;IACjB,wDAAwD;;IAExD,sEAAsE;;;;;;;;GAE1D,CAAC;AAEf;;GAEG;AACH,QAAA,MAAM,YAAY;IAChB,+CAA+C;;IAE/C,8DAA8D;;;;;;;;GAElD,CAAC;AAEf;;GAEG;AACH,QAAA,MAAM,gBAAgB;IACpB,yDAAyD;;IAEzD,mEAAmE;;IAEnE,0DAA0D;;IAE1D,sEAAsE;;IAEtE,2DAA2D;;;;;;;;;;;;;;GAE/C,CAAC;AAEf;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY;IACvB,gDAAgD;;QA9DhD,mEAAmE;;QAEnE,oCAAoC;;QAEpC,wCAAwC;;;;;;;;;;;IA4DxC,wBAAwB;;QApDxB,wDAAwD;;QAExD,sEAAsE;;;;;;;;;IAoDtE,gCAAgC;;QA5ChC,+CAA+C;;QAE/C,8DAA8D;;;;;;;;;IA4C9D,yBAAyB;;QApCzB,yDAAyD;;QAEzD,mEAAmE;;QAEnE,0DAA0D;;QAE1D,sEAAsE;;QAEtE,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8B/C,CAAC;AAEf;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Zod schema for configuration validation
3
+ *
4
+ * This schema defines the structure of `.agents-reverse/config.yaml`
5
+ * and provides sensible defaults for all fields.
6
+ */
7
+ import { z } from 'zod';
8
+ import { DEFAULT_VENDOR_DIRS, DEFAULT_BINARY_EXTENSIONS, DEFAULT_MAX_FILE_SIZE, } from './defaults.js';
9
+ /**
10
+ * Schema for exclusion configuration
11
+ */
12
+ const ExcludeSchema = z.object({
13
+ /** Custom glob patterns to exclude (e.g., ["*.log", "temp/**"]) */
14
+ patterns: z.array(z.string()).default([]),
15
+ /** Vendor directories to exclude */
16
+ vendorDirs: z.array(z.string()).default([...DEFAULT_VENDOR_DIRS]),
17
+ /** Binary file extensions to exclude */
18
+ binaryExtensions: z.array(z.string()).default([...DEFAULT_BINARY_EXTENSIONS]),
19
+ }).default({});
20
+ /**
21
+ * Schema for options configuration
22
+ */
23
+ const OptionsSchema = z.object({
24
+ /** Whether to follow symbolic links during traversal */
25
+ followSymlinks: z.boolean().default(false),
26
+ /** Maximum file size in bytes (files larger than this are skipped) */
27
+ maxFileSize: z.number().positive().default(DEFAULT_MAX_FILE_SIZE),
28
+ }).default({});
29
+ /**
30
+ * Schema for output configuration
31
+ */
32
+ const OutputSchema = z.object({
33
+ /** Whether to use colors in terminal output */
34
+ colors: z.boolean().default(true),
35
+ /** Whether to show verbose output (each file as processed) */
36
+ verbose: z.boolean().default(true),
37
+ }).default({});
38
+ /**
39
+ * Schema for generation configuration
40
+ */
41
+ const GenerationSchema = z.object({
42
+ /** Token budget for entire project (default: 100,000) */
43
+ tokenBudget: z.number().positive().default(100_000),
44
+ /** Generate ARCHITECTURE.md when thresholds met (default: true) */
45
+ generateArchitecture: z.boolean().default(true),
46
+ /** Generate STACK.md from package.json (default: true) */
47
+ generateStack: z.boolean().default(true),
48
+ /** Output directory for supplementary docs (default: project root) */
49
+ supplementaryDocsDir: z.string().optional(),
50
+ /** Chunk size for large files in tokens (default: 3000) */
51
+ chunkSize: z.number().positive().default(3000),
52
+ }).default({});
53
+ /**
54
+ * Main configuration schema for agents-reverse.
55
+ *
56
+ * All fields have sensible defaults, so an empty object `{}` is valid
57
+ * and will result in a fully populated configuration.
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * // Parse with defaults
62
+ * const config = ConfigSchema.parse({});
63
+ *
64
+ * // Parse with partial overrides
65
+ * const config = ConfigSchema.parse({
66
+ * exclude: { patterns: ['*.log'] }
67
+ * });
68
+ * ```
69
+ */
70
+ export const ConfigSchema = z.object({
71
+ /** Exclusion rules for files and directories */
72
+ exclude: ExcludeSchema,
73
+ /** Discovery options */
74
+ options: OptionsSchema,
75
+ /** Output formatting options */
76
+ output: OutputSchema,
77
+ /** Generation options */
78
+ generation: GenerationSchema,
79
+ }).default({});
80
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,oCAAoC;IACpC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;IACjE,wCAAwC;IACxC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC;CAC9E,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,wDAAwD;IACxD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC;CAClE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACjC,8DAA8D;IAC9D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,yDAAyD;IACzD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACnD,mEAAmE;IACnE,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,0DAA0D;IAC1D,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,sEAAsE;IACtE,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,2DAA2D;IAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAC/C,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEf;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,gDAAgD;IAChD,OAAO,EAAE,aAAa;IACtB,wBAAwB;IACxB,OAAO,EAAE,aAAa;IACtB,gCAAgC;IAChC,MAAM,EAAE,YAAY;IACpB,yBAAyB;IACzB,UAAU,EAAE,gBAAgB;CAC7B,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Binary file filter for file discovery.
3
+ *
4
+ * Uses extension-based detection as a fast path, falling back to content
5
+ * analysis via `isbinaryfile` for unknown extensions. Also handles large
6
+ * files by size threshold.
7
+ */
8
+ import type { FileFilter } from '../types.js';
9
+ /**
10
+ * Set of file extensions known to be binary.
11
+ * These are excluded without content analysis for performance.
12
+ */
13
+ export declare const BINARY_EXTENSIONS: Set<string>;
14
+ /**
15
+ * Options for the binary filter.
16
+ */
17
+ export interface BinaryFilterOptions {
18
+ /**
19
+ * Maximum file size in bytes. Files larger than this are excluded.
20
+ * Default: 1MB (1048576 bytes)
21
+ */
22
+ maxFileSize?: number;
23
+ /**
24
+ * Additional binary extensions to recognize beyond the defaults.
25
+ */
26
+ additionalExtensions?: string[];
27
+ }
28
+ /**
29
+ * Creates a binary filter that excludes binary files and files exceeding size limit.
30
+ *
31
+ * The filter uses a two-phase detection approach:
32
+ * 1. Fast path: Check extension against known binary extensions
33
+ * 2. Slow path: For unknown extensions, analyze file content with isbinaryfile
34
+ *
35
+ * @param options - Filter configuration options
36
+ * @returns A FileFilter that identifies binary files
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const filter = createBinaryFilter({ maxFileSize: 500000 });
41
+ * await filter.shouldExclude('/path/to/image.png'); // true (extension)
42
+ * await filter.shouldExclude('/path/to/unknown.xyz'); // checks content
43
+ * ```
44
+ */
45
+ export declare function createBinaryFilter(options?: BinaryFilterOptions): FileFilter;
46
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../src/discovery/filters/binary.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,aAyF5B,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAqChF"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Binary file filter for file discovery.
3
+ *
4
+ * Uses extension-based detection as a fast path, falling back to content
5
+ * analysis via `isbinaryfile` for unknown extensions. Also handles large
6
+ * files by size threshold.
7
+ */
8
+ import { isBinaryFile } from 'isbinaryfile';
9
+ import fs from 'node:fs/promises';
10
+ import path from 'node:path';
11
+ /**
12
+ * Set of file extensions known to be binary.
13
+ * These are excluded without content analysis for performance.
14
+ */
15
+ export const BINARY_EXTENSIONS = new Set([
16
+ // Images
17
+ '.png',
18
+ '.jpg',
19
+ '.jpeg',
20
+ '.gif',
21
+ '.bmp',
22
+ '.ico',
23
+ '.webp',
24
+ '.svg',
25
+ '.tiff',
26
+ '.tif',
27
+ '.psd',
28
+ '.raw',
29
+ '.heif',
30
+ '.heic',
31
+ // Archives
32
+ '.zip',
33
+ '.tar',
34
+ '.gz',
35
+ '.rar',
36
+ '.7z',
37
+ '.bz2',
38
+ '.xz',
39
+ '.tgz',
40
+ // Executables
41
+ '.exe',
42
+ '.dll',
43
+ '.so',
44
+ '.dylib',
45
+ '.bin',
46
+ '.msi',
47
+ '.app',
48
+ '.dmg',
49
+ // Media
50
+ '.mp3',
51
+ '.mp4',
52
+ '.wav',
53
+ '.avi',
54
+ '.mov',
55
+ '.mkv',
56
+ '.flac',
57
+ '.ogg',
58
+ '.webm',
59
+ '.m4a',
60
+ '.aac',
61
+ '.wma',
62
+ '.wmv',
63
+ '.flv',
64
+ // Documents (binary formats)
65
+ '.pdf',
66
+ '.doc',
67
+ '.docx',
68
+ '.xls',
69
+ '.xlsx',
70
+ '.ppt',
71
+ '.pptx',
72
+ '.odt',
73
+ '.ods',
74
+ '.odp',
75
+ // Fonts
76
+ '.woff',
77
+ '.woff2',
78
+ '.ttf',
79
+ '.eot',
80
+ '.otf',
81
+ // Compiled/bytecode
82
+ '.class',
83
+ '.pyc',
84
+ '.pyo',
85
+ '.o',
86
+ '.obj',
87
+ '.a',
88
+ '.lib',
89
+ '.wasm',
90
+ // Database
91
+ '.db',
92
+ '.sqlite',
93
+ '.sqlite3',
94
+ '.mdb',
95
+ // Other
96
+ '.ico',
97
+ '.icns',
98
+ '.cur',
99
+ '.deb',
100
+ '.rpm',
101
+ '.jar',
102
+ '.war',
103
+ '.ear',
104
+ ]);
105
+ /** Default maximum file size: 1MB */
106
+ const DEFAULT_MAX_FILE_SIZE = 1024 * 1024;
107
+ /**
108
+ * Creates a binary filter that excludes binary files and files exceeding size limit.
109
+ *
110
+ * The filter uses a two-phase detection approach:
111
+ * 1. Fast path: Check extension against known binary extensions
112
+ * 2. Slow path: For unknown extensions, analyze file content with isbinaryfile
113
+ *
114
+ * @param options - Filter configuration options
115
+ * @returns A FileFilter that identifies binary files
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * const filter = createBinaryFilter({ maxFileSize: 500000 });
120
+ * await filter.shouldExclude('/path/to/image.png'); // true (extension)
121
+ * await filter.shouldExclude('/path/to/unknown.xyz'); // checks content
122
+ * ```
123
+ */
124
+ export function createBinaryFilter(options = {}) {
125
+ const { maxFileSize = DEFAULT_MAX_FILE_SIZE, additionalExtensions = [] } = options;
126
+ // Create a combined set of all binary extensions
127
+ const binaryExtensions = new Set(BINARY_EXTENSIONS);
128
+ for (const ext of additionalExtensions) {
129
+ // Ensure extension has leading dot
130
+ binaryExtensions.add(ext.startsWith('.') ? ext : `.${ext}`);
131
+ }
132
+ return {
133
+ name: 'binary',
134
+ async shouldExclude(absolutePath) {
135
+ // Fast path: check extension
136
+ const ext = path.extname(absolutePath).toLowerCase();
137
+ if (binaryExtensions.has(ext)) {
138
+ return true;
139
+ }
140
+ // Check file size and content
141
+ try {
142
+ const stats = await fs.stat(absolutePath);
143
+ // Exclude files exceeding size limit
144
+ if (stats.size > maxFileSize) {
145
+ return true;
146
+ }
147
+ // Slow path: content analysis for unknown extensions
148
+ return await isBinaryFile(absolutePath);
149
+ }
150
+ catch {
151
+ // If we can't read it, skip it
152
+ return true;
153
+ }
154
+ },
155
+ };
156
+ }
157
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../src/discovery/filters/binary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Custom pattern filter for file discovery.
3
+ *
4
+ * Allows users to specify additional exclusion patterns in their configuration.
5
+ * Uses the `ignore` library for gitignore-style pattern matching.
6
+ */
7
+ import type { FileFilter } from '../types.js';
8
+ /**
9
+ * Creates a custom filter that excludes files matching user-provided patterns.
10
+ *
11
+ * Patterns use gitignore syntax and are checked against relative paths from
12
+ * the root directory. If no patterns are provided, the filter passes all files.
13
+ *
14
+ * @param patterns - Array of gitignore-style patterns to exclude
15
+ * @param root - Root directory for converting absolute paths to relative
16
+ * @returns A FileFilter that checks paths against custom patterns
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const filter = createCustomFilter(['*.log', 'tmp/**', 'secret.txt'], '/project');
21
+ * filter.shouldExclude('/project/debug.log'); // true
22
+ * filter.shouldExclude('/project/src/app.ts'); // false
23
+ * ```
24
+ */
25
+ export declare function createCustomFilter(patterns: string[], root: string): FileFilter;
26
+ //# sourceMappingURL=custom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../../src/discovery/filters/custom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CA6B/E"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Custom pattern filter for file discovery.
3
+ *
4
+ * Allows users to specify additional exclusion patterns in their configuration.
5
+ * Uses the `ignore` library for gitignore-style pattern matching.
6
+ */
7
+ import ignore from 'ignore';
8
+ import path from 'node:path';
9
+ /**
10
+ * Creates a custom filter that excludes files matching user-provided patterns.
11
+ *
12
+ * Patterns use gitignore syntax and are checked against relative paths from
13
+ * the root directory. If no patterns are provided, the filter passes all files.
14
+ *
15
+ * @param patterns - Array of gitignore-style patterns to exclude
16
+ * @param root - Root directory for converting absolute paths to relative
17
+ * @returns A FileFilter that checks paths against custom patterns
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const filter = createCustomFilter(['*.log', 'tmp/**', 'secret.txt'], '/project');
22
+ * filter.shouldExclude('/project/debug.log'); // true
23
+ * filter.shouldExclude('/project/src/app.ts'); // false
24
+ * ```
25
+ */
26
+ export function createCustomFilter(patterns, root) {
27
+ const ig = ignore();
28
+ const normalizedRoot = path.resolve(root);
29
+ // Add all patterns to the ignore instance
30
+ if (patterns.length > 0) {
31
+ ig.add(patterns);
32
+ }
33
+ return {
34
+ name: 'custom',
35
+ shouldExclude(absolutePath) {
36
+ // If no patterns, nothing to exclude
37
+ if (patterns.length === 0) {
38
+ return false;
39
+ }
40
+ // Convert to relative path (ignore library requires relative paths)
41
+ const relativePath = path.relative(normalizedRoot, absolutePath);
42
+ // If path is outside root (starts with ..) or is empty, don't exclude
43
+ if (!relativePath || relativePath.startsWith('..')) {
44
+ return false;
45
+ }
46
+ return ig.ignores(relativePath);
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=custom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/discovery/filters/custom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAuB,MAAM,QAAQ,CAAC;AAC7C,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAkB,EAAE,IAAY;IACjE,MAAM,EAAE,GAAW,MAAM,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C,0CAA0C;IAC1C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QAEd,aAAa,CAAC,YAAoB;YAChC,qCAAqC;YACrC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC;YAED,oEAAoE;YACpE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAEjE,sEAAsE;YACtE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Gitignore pattern filter for file discovery.
3
+ *
4
+ * Uses the `ignore` library to parse and match .gitignore patterns.
5
+ * This filter loads the root .gitignore file and checks paths against
6
+ * the patterns to determine exclusion.
7
+ */
8
+ import type { FileFilter } from '../types.js';
9
+ /**
10
+ * Creates a gitignore filter that excludes files matching .gitignore patterns.
11
+ *
12
+ * @param root - The root directory containing the .gitignore file
13
+ * @returns A FileFilter that checks paths against gitignore patterns
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const filter = await createGitignoreFilter('/path/to/project');
18
+ * if (filter.shouldExclude('/path/to/project/dist/bundle.js')) {
19
+ * console.log('File is gitignored');
20
+ * }
21
+ * ```
22
+ */
23
+ export declare function createGitignoreFilter(root: string): Promise<FileFilter>;
24
+ //# sourceMappingURL=gitignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../../src/discovery/filters/gitignore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA+B7E"}