@remnux/mcp-server 0.1.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 (220) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +720 -0
  3. package/dist/archive-extractor.d.ts +46 -0
  4. package/dist/archive-extractor.d.ts.map +1 -0
  5. package/dist/archive-extractor.js +268 -0
  6. package/dist/archive-extractor.js.map +1 -0
  7. package/dist/catalog/index.d.ts +40 -0
  8. package/dist/catalog/index.d.ts.map +1 -0
  9. package/dist/catalog/index.js +114 -0
  10. package/dist/catalog/index.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +154 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config/archive-passwords.txt +3 -0
  16. package/dist/connectors/docker.d.ts +13 -0
  17. package/dist/connectors/docker.d.ts.map +1 -0
  18. package/dist/connectors/docker.js +201 -0
  19. package/dist/connectors/docker.js.map +1 -0
  20. package/dist/connectors/index.d.ts +27 -0
  21. package/dist/connectors/index.d.ts.map +1 -0
  22. package/dist/connectors/index.js +23 -0
  23. package/dist/connectors/index.js.map +1 -0
  24. package/dist/connectors/local.d.ts +10 -0
  25. package/dist/connectors/local.d.ts.map +1 -0
  26. package/dist/connectors/local.js +105 -0
  27. package/dist/connectors/local.js.map +1 -0
  28. package/dist/connectors/ssh.d.ts +21 -0
  29. package/dist/connectors/ssh.d.ts.map +1 -0
  30. package/dist/connectors/ssh.js +237 -0
  31. package/dist/connectors/ssh.js.map +1 -0
  32. package/dist/errors/error-mapper.d.ts +9 -0
  33. package/dist/errors/error-mapper.d.ts.map +1 -0
  34. package/dist/errors/error-mapper.js +24 -0
  35. package/dist/errors/error-mapper.js.map +1 -0
  36. package/dist/errors/remnux-error.d.ts +14 -0
  37. package/dist/errors/remnux-error.d.ts.map +1 -0
  38. package/dist/errors/remnux-error.js +19 -0
  39. package/dist/errors/remnux-error.js.map +1 -0
  40. package/dist/file-type-mappings.d.ts +30 -0
  41. package/dist/file-type-mappings.d.ts.map +1 -0
  42. package/dist/file-type-mappings.js +136 -0
  43. package/dist/file-type-mappings.js.map +1 -0
  44. package/dist/file-upload.d.ts +44 -0
  45. package/dist/file-upload.d.ts.map +1 -0
  46. package/dist/file-upload.js +170 -0
  47. package/dist/file-upload.js.map +1 -0
  48. package/dist/handlers/analyze-file.d.ts +10 -0
  49. package/dist/handlers/analyze-file.d.ts.map +1 -0
  50. package/dist/handlers/analyze-file.js +149 -0
  51. package/dist/handlers/analyze-file.js.map +1 -0
  52. package/dist/handlers/check-tools.d.ts +9 -0
  53. package/dist/handlers/check-tools.d.ts.map +1 -0
  54. package/dist/handlers/check-tools.js +47 -0
  55. package/dist/handlers/check-tools.js.map +1 -0
  56. package/dist/handlers/download-file.d.ts +10 -0
  57. package/dist/handlers/download-file.d.ts.map +1 -0
  58. package/dist/handlers/download-file.js +113 -0
  59. package/dist/handlers/download-file.js.map +1 -0
  60. package/dist/handlers/download-from-url.d.ts +30 -0
  61. package/dist/handlers/download-from-url.d.ts.map +1 -0
  62. package/dist/handlers/download-from-url.js +295 -0
  63. package/dist/handlers/download-from-url.js.map +1 -0
  64. package/dist/handlers/extract-archive.d.ts +10 -0
  65. package/dist/handlers/extract-archive.d.ts.map +1 -0
  66. package/dist/handlers/extract-archive.js +57 -0
  67. package/dist/handlers/extract-archive.js.map +1 -0
  68. package/dist/handlers/extract-iocs.d.ts +10 -0
  69. package/dist/handlers/extract-iocs.d.ts.map +1 -0
  70. package/dist/handlers/extract-iocs.js +21 -0
  71. package/dist/handlers/extract-iocs.js.map +1 -0
  72. package/dist/handlers/get-file-info.d.ts +10 -0
  73. package/dist/handlers/get-file-info.d.ts.map +1 -0
  74. package/dist/handlers/get-file-info.js +89 -0
  75. package/dist/handlers/get-file-info.js.map +1 -0
  76. package/dist/handlers/list-files.d.ts +10 -0
  77. package/dist/handlers/list-files.d.ts.map +1 -0
  78. package/dist/handlers/list-files.js +60 -0
  79. package/dist/handlers/list-files.js.map +1 -0
  80. package/dist/handlers/run-tool.d.ts +10 -0
  81. package/dist/handlers/run-tool.d.ts.map +1 -0
  82. package/dist/handlers/run-tool.js +99 -0
  83. package/dist/handlers/run-tool.js.map +1 -0
  84. package/dist/handlers/suggest-tools.d.ts +10 -0
  85. package/dist/handlers/suggest-tools.d.ts.map +1 -0
  86. package/dist/handlers/suggest-tools.js +202 -0
  87. package/dist/handlers/suggest-tools.js.map +1 -0
  88. package/dist/handlers/types.d.ts +15 -0
  89. package/dist/handlers/types.d.ts.map +1 -0
  90. package/dist/handlers/types.js +2 -0
  91. package/dist/handlers/types.js.map +1 -0
  92. package/dist/handlers/upload-file.d.ts +10 -0
  93. package/dist/handlers/upload-file.d.ts.map +1 -0
  94. package/dist/handlers/upload-file.js +33 -0
  95. package/dist/handlers/upload-file.js.map +1 -0
  96. package/dist/handlers/upload-from-host.d.ts +10 -0
  97. package/dist/handlers/upload-from-host.d.ts.map +1 -0
  98. package/dist/handlers/upload-from-host.js +33 -0
  99. package/dist/handlers/upload-from-host.js.map +1 -0
  100. package/dist/handlers/upload-sample.d.ts +10 -0
  101. package/dist/handlers/upload-sample.d.ts.map +1 -0
  102. package/dist/handlers/upload-sample.js +26 -0
  103. package/dist/handlers/upload-sample.js.map +1 -0
  104. package/dist/index.d.ts +15 -0
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +254 -0
  107. package/dist/index.js.map +1 -0
  108. package/dist/ioc/extractor.d.ts +21 -0
  109. package/dist/ioc/extractor.d.ts.map +1 -0
  110. package/dist/ioc/extractor.js +91 -0
  111. package/dist/ioc/extractor.js.map +1 -0
  112. package/dist/ioc/known-values.d.ts +7 -0
  113. package/dist/ioc/known-values.d.ts.map +1 -0
  114. package/dist/ioc/known-values.js +43 -0
  115. package/dist/ioc/known-values.js.map +1 -0
  116. package/dist/ioc/noise.d.ts +6 -0
  117. package/dist/ioc/noise.d.ts.map +1 -0
  118. package/dist/ioc/noise.js +170 -0
  119. package/dist/ioc/noise.js.map +1 -0
  120. package/dist/ioc/patterns.d.ts +10 -0
  121. package/dist/ioc/patterns.d.ts.map +1 -0
  122. package/dist/ioc/patterns.js +65 -0
  123. package/dist/ioc/patterns.js.map +1 -0
  124. package/dist/ioc/scoring.d.ts +6 -0
  125. package/dist/ioc/scoring.d.ts.map +1 -0
  126. package/dist/ioc/scoring.js +69 -0
  127. package/dist/ioc/scoring.js.map +1 -0
  128. package/dist/parsers/capa.d.ts +9 -0
  129. package/dist/parsers/capa.d.ts.map +1 -0
  130. package/dist/parsers/capa.js +55 -0
  131. package/dist/parsers/capa.js.map +1 -0
  132. package/dist/parsers/diec.d.ts +9 -0
  133. package/dist/parsers/diec.d.ts.map +1 -0
  134. package/dist/parsers/diec.js +53 -0
  135. package/dist/parsers/diec.js.map +1 -0
  136. package/dist/parsers/floss.d.ts +14 -0
  137. package/dist/parsers/floss.d.ts.map +1 -0
  138. package/dist/parsers/floss.js +89 -0
  139. package/dist/parsers/floss.js.map +1 -0
  140. package/dist/parsers/index.d.ts +16 -0
  141. package/dist/parsers/index.d.ts.map +1 -0
  142. package/dist/parsers/index.js +46 -0
  143. package/dist/parsers/index.js.map +1 -0
  144. package/dist/parsers/oleid.d.ts +8 -0
  145. package/dist/parsers/oleid.d.ts.map +1 -0
  146. package/dist/parsers/oleid.js +94 -0
  147. package/dist/parsers/oleid.js.map +1 -0
  148. package/dist/parsers/olevba.d.ts +8 -0
  149. package/dist/parsers/olevba.d.ts.map +1 -0
  150. package/dist/parsers/olevba.js +83 -0
  151. package/dist/parsers/olevba.js.map +1 -0
  152. package/dist/parsers/passthrough.d.ts +6 -0
  153. package/dist/parsers/passthrough.d.ts.map +1 -0
  154. package/dist/parsers/passthrough.js +13 -0
  155. package/dist/parsers/passthrough.js.map +1 -0
  156. package/dist/parsers/pdf-parser.d.ts +9 -0
  157. package/dist/parsers/pdf-parser.d.ts.map +1 -0
  158. package/dist/parsers/pdf-parser.js +76 -0
  159. package/dist/parsers/pdf-parser.js.map +1 -0
  160. package/dist/parsers/pdfid.d.ts +9 -0
  161. package/dist/parsers/pdfid.d.ts.map +1 -0
  162. package/dist/parsers/pdfid.js +56 -0
  163. package/dist/parsers/pdfid.js.map +1 -0
  164. package/dist/parsers/peframe.d.ts +8 -0
  165. package/dist/parsers/peframe.d.ts.map +1 -0
  166. package/dist/parsers/peframe.js +76 -0
  167. package/dist/parsers/peframe.js.map +1 -0
  168. package/dist/parsers/readelf.d.ts +8 -0
  169. package/dist/parsers/readelf.d.ts.map +1 -0
  170. package/dist/parsers/readelf.js +50 -0
  171. package/dist/parsers/readelf.js.map +1 -0
  172. package/dist/parsers/types.d.ts +30 -0
  173. package/dist/parsers/types.d.ts.map +1 -0
  174. package/dist/parsers/types.js +5 -0
  175. package/dist/parsers/types.js.map +1 -0
  176. package/dist/parsers/yara.d.ts +8 -0
  177. package/dist/parsers/yara.d.ts.map +1 -0
  178. package/dist/parsers/yara.js +88 -0
  179. package/dist/parsers/yara.js.map +1 -0
  180. package/dist/response.d.ts +44 -0
  181. package/dist/response.d.ts.map +1 -0
  182. package/dist/response.js +48 -0
  183. package/dist/response.js.map +1 -0
  184. package/dist/schemas/tools.d.ts +135 -0
  185. package/dist/schemas/tools.d.ts.map +1 -0
  186. package/dist/schemas/tools.js +53 -0
  187. package/dist/schemas/tools.js.map +1 -0
  188. package/dist/security/blocklist.d.ts +69 -0
  189. package/dist/security/blocklist.d.ts.map +1 -0
  190. package/dist/security/blocklist.js +148 -0
  191. package/dist/security/blocklist.js.map +1 -0
  192. package/dist/state/session.d.ts +35 -0
  193. package/dist/state/session.d.ts.map +1 -0
  194. package/dist/state/session.js +45 -0
  195. package/dist/state/session.js.map +1 -0
  196. package/dist/tools/definitions.d.ts +9 -0
  197. package/dist/tools/definitions.d.ts.map +1 -0
  198. package/dist/tools/definitions.js +708 -0
  199. package/dist/tools/definitions.js.map +1 -0
  200. package/dist/tools/invoker.d.ts +17 -0
  201. package/dist/tools/invoker.d.ts.map +1 -0
  202. package/dist/tools/invoker.js +44 -0
  203. package/dist/tools/invoker.js.map +1 -0
  204. package/dist/tools/registry.d.ts +62 -0
  205. package/dist/tools/registry.d.ts.map +1 -0
  206. package/dist/tools/registry.js +53 -0
  207. package/dist/tools/registry.js.map +1 -0
  208. package/dist/workflows/engine.d.ts +27 -0
  209. package/dist/workflows/engine.d.ts.map +1 -0
  210. package/dist/workflows/engine.js +224 -0
  211. package/dist/workflows/engine.js.map +1 -0
  212. package/dist/workflows/loader.d.ts +33 -0
  213. package/dist/workflows/loader.d.ts.map +1 -0
  214. package/dist/workflows/loader.js +130 -0
  215. package/dist/workflows/loader.js.map +1 -0
  216. package/dist/workflows/types.d.ts +109 -0
  217. package/dist/workflows/types.d.ts.map +1 -0
  218. package/dist/workflows/types.js +5 -0
  219. package/dist/workflows/types.js.map +1 -0
  220. package/package.json +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Tool Invoker — builds shell commands from ToolDefinition entries.
3
+ *
4
+ * Builds shell commands from ToolDefinition entries,
5
+ * handling all inputStyle variants (positional, flag, stdin).
6
+ */
7
+ import type { ToolDefinition } from "./registry.js";
8
+ /**
9
+ * Build a shell command string from a tool definition and file path.
10
+ *
11
+ * Examples:
12
+ * positional: peframe '/path/to/file.exe'
13
+ * flag: sometool --input '/path/to/file.exe'
14
+ * stdin: sometool < '/path/to/file.exe'
15
+ */
16
+ export declare function buildCommandFromDefinition(tool: ToolDefinition, filePath: string): string;
17
+ //# sourceMappingURL=invoker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoker.d.ts","sourceRoot":"","sources":["../../src/tools/invoker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAUpD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAyBR"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tool Invoker — builds shell commands from ToolDefinition entries.
3
+ *
4
+ * Builds shell commands from ToolDefinition entries,
5
+ * handling all inputStyle variants (positional, flag, stdin).
6
+ */
7
+ /**
8
+ * Escape a value for safe inclusion in a single-quoted shell string.
9
+ * Handles embedded single quotes: file's → file'\''s
10
+ */
11
+ function shellEscape(value) {
12
+ return `'${value.replace(/'/g, "'\\''")}'`;
13
+ }
14
+ /**
15
+ * Build a shell command string from a tool definition and file path.
16
+ *
17
+ * Examples:
18
+ * positional: peframe '/path/to/file.exe'
19
+ * flag: sometool --input '/path/to/file.exe'
20
+ * stdin: sometool < '/path/to/file.exe'
21
+ */
22
+ export function buildCommandFromDefinition(tool, filePath) {
23
+ const escaped = shellEscape(filePath);
24
+ const parts = [tool.command];
25
+ if (tool.fixedArgs) {
26
+ parts.push(...tool.fixedArgs);
27
+ }
28
+ switch (tool.inputStyle) {
29
+ case "positional":
30
+ parts.push(escaped);
31
+ break;
32
+ case "flag":
33
+ parts.push(tool.inputFlag ?? "--input", escaped);
34
+ break;
35
+ case "stdin":
36
+ parts.push("<", escaped);
37
+ break;
38
+ }
39
+ if (tool.suffixArgs) {
40
+ parts.push(...tool.suffixArgs);
41
+ }
42
+ return parts.join(" ");
43
+ }
44
+ //# sourceMappingURL=invoker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoker.js","sourceRoot":"","sources":["../../src/tools/invoker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAoB,EACpB,QAAgB;IAEhB,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,YAAY;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM;QACR,KAAK,OAAO;YACV,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACzB,MAAM;IACV,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Tool Registry — normalized tool definitions with lookup and filtering.
3
+ *
4
+ * All analysis tools are registered here with metadata about how to invoke them,
5
+ * what file types they support, and what depth tier they belong to.
6
+ */
7
+ import type { DepthTier } from "../file-type-mappings.js";
8
+ export type InputStyle = "positional" | "flag" | "stdin";
9
+ export type OutputFormat = "text" | "json";
10
+ export type { DepthTier };
11
+ export interface ToolDefinition {
12
+ /** Unique tool identifier (e.g., "peframe", "capa") */
13
+ name: string;
14
+ /** One-line description of what the tool does */
15
+ description: string;
16
+ /** Base command to execute (without arguments) */
17
+ command: string;
18
+ /** How the input file is passed to the command */
19
+ inputStyle: InputStyle;
20
+ /** Flag name when inputStyle is "flag" (e.g., "--input") */
21
+ inputFlag?: string;
22
+ /** Additional fixed arguments prepended before the file path */
23
+ fixedArgs?: string[];
24
+ /** Arguments appended after the file path (e.g., vol3 plugin names) */
25
+ suffixArgs?: string[];
26
+ /** Whether the tool requires an absolute path (vs relative) */
27
+ requiresAbsolutePath?: boolean;
28
+ /** Expected output format */
29
+ outputFormat: OutputFormat;
30
+ /** Per-tool timeout in seconds */
31
+ timeout: number;
32
+ /** Fallback tool names if this tool is not installed */
33
+ alternatives?: string[];
34
+ /** Tags for search/filtering (e.g., ["pe", "strings", "decompilation"]) */
35
+ tags?: string[];
36
+ /** Minimum depth tier that includes this tool */
37
+ tier: DepthTier;
38
+ }
39
+ /**
40
+ * In-memory tool registry built from static definitions.
41
+ */
42
+ declare class ToolRegistry {
43
+ private tools;
44
+ constructor(definitions: ToolDefinition[]);
45
+ /** Get a tool by name. */
46
+ get(name: string): ToolDefinition | undefined;
47
+ /** Get all tool definitions. */
48
+ all(): ToolDefinition[];
49
+ /** Filter tools by tag. */
50
+ byTag(tag: string): ToolDefinition[];
51
+ /** Filter tools by depth tier (includes all tools at or below the given tier). */
52
+ byTier(tier: DepthTier): ToolDefinition[];
53
+ /** Filter tools by tag AND depth tier. */
54
+ byTagAndTier(tag: string, tier: DepthTier): ToolDefinition[];
55
+ /** Check if a tool exists in the registry. */
56
+ has(name: string): boolean;
57
+ /** Total number of registered tools. */
58
+ get size(): number;
59
+ }
60
+ /** Singleton registry instance. */
61
+ export declare const toolRegistry: ToolRegistry;
62
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3C,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,UAAU,EAAE,UAAU,CAAC;IACvB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6BAA6B;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iDAAiD;IACjD,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;GAEG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAA8B;gBAE/B,WAAW,EAAE,cAAc,EAAE;IAOzC,0BAA0B;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7C,gCAAgC;IAChC,GAAG,IAAI,cAAc,EAAE;IAIvB,2BAA2B;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;IAIpC,kFAAkF;IAClF,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc,EAAE;IAKzC,0CAA0C;IAC1C,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,cAAc,EAAE;IAO5D,8CAA8C;IAC9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,wCAAwC;IACxC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED,mCAAmC;AACnC,eAAO,MAAM,YAAY,cAAqC,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Tool Registry — normalized tool definitions with lookup and filtering.
3
+ *
4
+ * All analysis tools are registered here with metadata about how to invoke them,
5
+ * what file types they support, and what depth tier they belong to.
6
+ */
7
+ import { TOOL_DEFINITIONS } from "./definitions.js";
8
+ import { DEPTH_TIER_ORDER } from "../file-type-mappings.js";
9
+ /**
10
+ * In-memory tool registry built from static definitions.
11
+ */
12
+ class ToolRegistry {
13
+ tools;
14
+ constructor(definitions) {
15
+ this.tools = new Map();
16
+ for (const def of definitions) {
17
+ this.tools.set(def.name, def);
18
+ }
19
+ }
20
+ /** Get a tool by name. */
21
+ get(name) {
22
+ return this.tools.get(name);
23
+ }
24
+ /** Get all tool definitions. */
25
+ all() {
26
+ return [...this.tools.values()];
27
+ }
28
+ /** Filter tools by tag. */
29
+ byTag(tag) {
30
+ return this.all().filter((t) => t.tags?.includes(tag));
31
+ }
32
+ /** Filter tools by depth tier (includes all tools at or below the given tier). */
33
+ byTier(tier) {
34
+ const maxIndex = DEPTH_TIER_ORDER.indexOf(tier);
35
+ return this.all().filter((t) => DEPTH_TIER_ORDER.indexOf(t.tier) <= maxIndex);
36
+ }
37
+ /** Filter tools by tag AND depth tier. */
38
+ byTagAndTier(tag, tier) {
39
+ const maxIndex = DEPTH_TIER_ORDER.indexOf(tier);
40
+ return this.all().filter((t) => t.tags?.includes(tag) && DEPTH_TIER_ORDER.indexOf(t.tier) <= maxIndex);
41
+ }
42
+ /** Check if a tool exists in the registry. */
43
+ has(name) {
44
+ return this.tools.has(name);
45
+ }
46
+ /** Total number of registered tools. */
47
+ get size() {
48
+ return this.tools.size;
49
+ }
50
+ }
51
+ /** Singleton registry instance. */
52
+ export const toolRegistry = new ToolRegistry(TOOL_DEFINITIONS);
53
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAoC5D;;GAEG;AACH,MAAM,YAAY;IACR,KAAK,CAA8B;IAE3C,YAAY,WAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,gCAAgC;IAChC,GAAG;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,GAAW;QACf,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,IAAe;QACpB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;IAChF,CAAC;IAED,0CAA0C;IAC1C,YAAY,CAAC,GAAW,EAAE,IAAe;QACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAC7E,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,wCAAwC;IACxC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Workflow Engine — execute workflow definitions step by step.
3
+ *
4
+ * Condition evaluation supports depth-tier checks and step-result references
5
+ * (success, skipped, exitCode, output contains/matches). Unknown conditions
6
+ * return false (deny-by-default).
7
+ */
8
+ import type { Connector } from "../connectors/index.js";
9
+ import type { DepthTier } from "../file-type-mappings.js";
10
+ import type { WorkflowDefinition, WorkflowResult } from "./types.js";
11
+ export interface WorkflowExecutionContext {
12
+ /** REMnux connector for executing commands */
13
+ connector: Connector;
14
+ /** Full path to the input file */
15
+ filePath: string;
16
+ /** Samples directory (cwd for tool execution) */
17
+ samplesDir: string;
18
+ /** Depth tier for this execution */
19
+ depth: DepthTier;
20
+ /** Parameter values (from workflow parameters) */
21
+ params?: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Execute a complete workflow definition.
25
+ */
26
+ export declare function executeWorkflow(workflow: WorkflowDefinition, context: WorkflowExecutionContext): Promise<WorkflowResult>;
27
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/workflows/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACV,kBAAkB,EAGlB,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,SAAS,EAAE,SAAS,CAAC;IACrB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAqOD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC,CA2BzB"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Workflow Engine — execute workflow definitions step by step.
3
+ *
4
+ * Condition evaluation supports depth-tier checks and step-result references
5
+ * (success, skipped, exitCode, output contains/matches). Unknown conditions
6
+ * return false (deny-by-default).
7
+ */
8
+ import { DEPTH_TIER_ORDER } from "../file-type-mappings.js";
9
+ /**
10
+ * Evaluate a simple condition string against the execution context.
11
+ *
12
+ * Supported patterns (intentionally limited for now):
13
+ * - "depth in ['standard', 'deep']" — check depth tier
14
+ * - "depth == 'deep'" — exact depth match
15
+ * - "step.success" / "!step.success" / "step.skipped" — boolean check
16
+ * - "step.exitCode == N" — numeric comparison (==, !=, <, >, <=, >=)
17
+ * - "step.output contains 'text'" — case-sensitive substring match
18
+ * - "step.output matches 'regex'" — regex test on output
19
+ * - Always returns true for empty/undefined conditions
20
+ */
21
+ function evaluateCondition(condition, context, stepResults) {
22
+ if (!condition)
23
+ return true;
24
+ // Depth tier checks
25
+ const depthInMatch = condition.match(/depth\s+in\s+\[([^\]]+)\]/);
26
+ if (depthInMatch) {
27
+ const values = depthInMatch[1]
28
+ .split(",")
29
+ .map((v) => v.trim().replace(/['"]/g, ""));
30
+ return values.includes(context.depth);
31
+ }
32
+ const depthEqMatch = condition.match(/depth\s*==\s*['"](\w+)['"]/);
33
+ if (depthEqMatch) {
34
+ return context.depth === depthEqMatch[1];
35
+ }
36
+ // Step depth checks
37
+ const depthMinMatch = condition.match(/depth\s*>=\s*['"](\w+)['"]/);
38
+ if (depthMinMatch) {
39
+ return (DEPTH_TIER_ORDER.indexOf(context.depth) >=
40
+ DEPTH_TIER_ORDER.indexOf(depthMinMatch[1]));
41
+ }
42
+ // Step-result conditions: "{step_name}.{field} ..."
43
+ const STEP_NAME = "[a-zA-Z_][a-zA-Z0-9_]*";
44
+ // Negated boolean: "!step.success" / "!step.skipped"
45
+ const negBoolMatch = condition.match(new RegExp(`^!(${STEP_NAME})\\.(success|skipped)$`));
46
+ if (negBoolMatch) {
47
+ const ref = stepResults.get(negBoolMatch[1]);
48
+ if (!ref)
49
+ return false;
50
+ return !ref[negBoolMatch[2]];
51
+ }
52
+ // Boolean: "step.success" / "step.skipped"
53
+ const boolMatch = condition.match(new RegExp(`^(${STEP_NAME})\\.(success|skipped)$`));
54
+ if (boolMatch) {
55
+ const ref = stepResults.get(boolMatch[1]);
56
+ if (!ref)
57
+ return false;
58
+ return !!ref[boolMatch[2]];
59
+ }
60
+ // Numeric: "step.exitCode == 0"
61
+ const numMatch = condition.match(new RegExp(`^(${STEP_NAME})\\.exitCode\\s*(==|!=|<|>|<=|>=)\\s*(-?\\d+)$`));
62
+ if (numMatch) {
63
+ const ref = stepResults.get(numMatch[1]);
64
+ if (!ref || ref.exitCode === undefined)
65
+ return false;
66
+ const left = ref.exitCode;
67
+ const right = Number(numMatch[3]);
68
+ switch (numMatch[2]) {
69
+ case "==": return left === right;
70
+ case "!=": return left !== right;
71
+ case "<": return left < right;
72
+ case ">": return left > right;
73
+ case "<=": return left <= right;
74
+ case ">=": return left >= right;
75
+ default: return false;
76
+ }
77
+ }
78
+ // Substring: "step.output contains 'text'"
79
+ const containsMatch = condition.match(new RegExp(`^(${STEP_NAME})\\.output\\s+contains\\s+'(.*)'$`));
80
+ if (containsMatch) {
81
+ const ref = stepResults.get(containsMatch[1]);
82
+ if (!ref || !ref.output)
83
+ return false;
84
+ return ref.output.includes(containsMatch[2]);
85
+ }
86
+ // Regex: "step.output matches 'pattern'"
87
+ const matchesMatch = condition.match(new RegExp(`^(${STEP_NAME})\\.output\\s+matches\\s+'(.*)'$`));
88
+ if (matchesMatch) {
89
+ const ref = stepResults.get(matchesMatch[1]);
90
+ if (!ref || !ref.output)
91
+ return false;
92
+ try {
93
+ return new RegExp(matchesMatch[2]).test(ref.output);
94
+ }
95
+ catch {
96
+ return false; // invalid regex — deny-by-default
97
+ }
98
+ }
99
+ // Unknown condition — default to false (deny-by-default: skip unrecognized conditions
100
+ // rather than running steps that may have been gated intentionally)
101
+ return false;
102
+ }
103
+ /**
104
+ * Interpolate template variables in step arguments.
105
+ *
106
+ * Replaces:
107
+ * - {input_file} → filePath
108
+ * - {param_name} → parameter value
109
+ */
110
+ function interpolateArgs(args, context) {
111
+ if (!args)
112
+ return [];
113
+ return args.map((arg) => {
114
+ let result = arg.replace(/\{input_file\}/g, context.filePath);
115
+ // Parameter interpolation — escape key to prevent regex injection
116
+ if (context.params) {
117
+ for (const [key, value] of Object.entries(context.params)) {
118
+ const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
119
+ result = result.replace(new RegExp(`\\{${escapedKey}\\}`, "g"), String(value));
120
+ }
121
+ }
122
+ return result;
123
+ });
124
+ }
125
+ /**
126
+ * Execute a single workflow step.
127
+ */
128
+ async function executeStep(step, context, stepResults) {
129
+ const startTime = Date.now();
130
+ // Check depth tier — skip if step requires higher depth
131
+ if (step.depth) {
132
+ if (DEPTH_TIER_ORDER.indexOf(step.depth) > DEPTH_TIER_ORDER.indexOf(context.depth)) {
133
+ return {
134
+ name: step.name,
135
+ tool: step.tool,
136
+ success: true,
137
+ skipped: true,
138
+ elapsed_ms: Date.now() - startTime,
139
+ };
140
+ }
141
+ }
142
+ // Evaluate condition
143
+ if (!evaluateCondition(step.condition, context, stepResults)) {
144
+ return {
145
+ name: step.name,
146
+ tool: step.tool,
147
+ success: true,
148
+ skipped: true,
149
+ elapsed_ms: Date.now() - startTime,
150
+ };
151
+ }
152
+ // Build command
153
+ const args = interpolateArgs(step.args, context);
154
+ const command = [step.tool, ...args].join(" ");
155
+ const timeoutSec = step.timeout ?? context.params?.timeout_per_tool ?? 60;
156
+ const timeout = timeoutSec * 1000;
157
+ const maxAttempts = step.on_error === "retry" ? (step.retries ?? 2) + 1 : 1;
158
+ const retryDelay = (step.retry_delay ?? 1) * 1000;
159
+ let lastResult;
160
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
161
+ try {
162
+ const result = await context.connector.executeShell(command, {
163
+ timeout,
164
+ cwd: context.samplesDir,
165
+ });
166
+ lastResult = {
167
+ name: step.name,
168
+ tool: step.tool,
169
+ command,
170
+ success: result.exitCode === 0,
171
+ output: result.stdout || result.stderr || "",
172
+ exitCode: result.exitCode,
173
+ retries: attempt > 1 ? attempt - 1 : undefined,
174
+ elapsed_ms: Date.now() - startTime,
175
+ };
176
+ }
177
+ catch (error) {
178
+ lastResult = {
179
+ name: step.name,
180
+ tool: step.tool,
181
+ command,
182
+ success: false,
183
+ error: error instanceof Error ? error.message : String(error),
184
+ retries: attempt > 1 ? attempt - 1 : undefined,
185
+ elapsed_ms: Date.now() - startTime,
186
+ };
187
+ }
188
+ if (lastResult.success || attempt === maxAttempts) {
189
+ return lastResult;
190
+ }
191
+ // Delay before next retry
192
+ await new Promise((resolve) => setTimeout(resolve, retryDelay));
193
+ }
194
+ // Unreachable, but satisfies TypeScript
195
+ return lastResult;
196
+ }
197
+ /**
198
+ * Execute a complete workflow definition.
199
+ */
200
+ export async function executeWorkflow(workflow, context) {
201
+ const startTime = Date.now();
202
+ const stepResults = new Map();
203
+ const results = [];
204
+ for (const step of workflow.steps) {
205
+ const result = await executeStep(step, context, stepResults);
206
+ stepResults.set(step.name, result);
207
+ results.push(result);
208
+ // Handle abort on failure
209
+ if (!result.success && !result.skipped) {
210
+ const onError = step.on_error ?? "continue";
211
+ if (onError === "abort") {
212
+ break;
213
+ }
214
+ }
215
+ }
216
+ const allSucceeded = results.every((r) => r.success || r.skipped);
217
+ return {
218
+ workflow: workflow.name,
219
+ success: allSucceeded,
220
+ steps: results,
221
+ elapsed_ms: Date.now() - startTime,
222
+ };
223
+ }
224
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/workflows/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Workflow Loader — load and validate YAML workflow definitions.
3
+ */
4
+ import type { WorkflowDefinition } from "./types.js";
5
+ /**
6
+ * Validate a parsed workflow definition has required fields.
7
+ * Returns an array of validation error messages (empty = valid).
8
+ */
9
+ export declare function validateWorkflow(def: unknown): string[];
10
+ /**
11
+ * Load a single workflow YAML file. Throws on parse or validation errors.
12
+ */
13
+ export declare function loadWorkflowFile(filePath: string): WorkflowDefinition;
14
+ /**
15
+ * Load all workflow YAML files from a directory.
16
+ * Returns loaded workflows and any errors encountered.
17
+ */
18
+ export declare function loadWorkflowDirectory(dirPath: string): {
19
+ workflows: WorkflowDefinition[];
20
+ errors: Array<{
21
+ file: string;
22
+ error: string;
23
+ }>;
24
+ };
25
+ /**
26
+ * Find a workflow matching a file type category name.
27
+ */
28
+ export declare function findWorkflowForCategory(workflows: WorkflowDefinition[], categoryName: string): WorkflowDefinition | undefined;
29
+ /**
30
+ * Find a workflow matching a MIME type or file extension.
31
+ */
32
+ export declare function findWorkflowForFileType(workflows: WorkflowDefinition[], fileType: string): WorkflowDefinition | undefined;
33
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/workflows/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAsEvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAUrE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IACtD,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAyBA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,kBAAkB,EAAE,EAC/B,YAAY,EAAE,MAAM,GACnB,kBAAkB,GAAG,SAAS,CAIhC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,kBAAkB,EAAE,EAC/B,QAAQ,EAAE,MAAM,GACf,kBAAkB,GAAG,SAAS,CAKhC"}