@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.
- package/LICENSE +674 -0
- package/README.md +720 -0
- package/dist/archive-extractor.d.ts +46 -0
- package/dist/archive-extractor.d.ts.map +1 -0
- package/dist/archive-extractor.js +268 -0
- package/dist/archive-extractor.js.map +1 -0
- package/dist/catalog/index.d.ts +40 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +114 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +154 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/archive-passwords.txt +3 -0
- package/dist/connectors/docker.d.ts +13 -0
- package/dist/connectors/docker.d.ts.map +1 -0
- package/dist/connectors/docker.js +201 -0
- package/dist/connectors/docker.js.map +1 -0
- package/dist/connectors/index.d.ts +27 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +23 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/local.d.ts +10 -0
- package/dist/connectors/local.d.ts.map +1 -0
- package/dist/connectors/local.js +105 -0
- package/dist/connectors/local.js.map +1 -0
- package/dist/connectors/ssh.d.ts +21 -0
- package/dist/connectors/ssh.d.ts.map +1 -0
- package/dist/connectors/ssh.js +237 -0
- package/dist/connectors/ssh.js.map +1 -0
- package/dist/errors/error-mapper.d.ts +9 -0
- package/dist/errors/error-mapper.d.ts.map +1 -0
- package/dist/errors/error-mapper.js +24 -0
- package/dist/errors/error-mapper.js.map +1 -0
- package/dist/errors/remnux-error.d.ts +14 -0
- package/dist/errors/remnux-error.d.ts.map +1 -0
- package/dist/errors/remnux-error.js +19 -0
- package/dist/errors/remnux-error.js.map +1 -0
- package/dist/file-type-mappings.d.ts +30 -0
- package/dist/file-type-mappings.d.ts.map +1 -0
- package/dist/file-type-mappings.js +136 -0
- package/dist/file-type-mappings.js.map +1 -0
- package/dist/file-upload.d.ts +44 -0
- package/dist/file-upload.d.ts.map +1 -0
- package/dist/file-upload.js +170 -0
- package/dist/file-upload.js.map +1 -0
- package/dist/handlers/analyze-file.d.ts +10 -0
- package/dist/handlers/analyze-file.d.ts.map +1 -0
- package/dist/handlers/analyze-file.js +149 -0
- package/dist/handlers/analyze-file.js.map +1 -0
- package/dist/handlers/check-tools.d.ts +9 -0
- package/dist/handlers/check-tools.d.ts.map +1 -0
- package/dist/handlers/check-tools.js +47 -0
- package/dist/handlers/check-tools.js.map +1 -0
- package/dist/handlers/download-file.d.ts +10 -0
- package/dist/handlers/download-file.d.ts.map +1 -0
- package/dist/handlers/download-file.js +113 -0
- package/dist/handlers/download-file.js.map +1 -0
- package/dist/handlers/download-from-url.d.ts +30 -0
- package/dist/handlers/download-from-url.d.ts.map +1 -0
- package/dist/handlers/download-from-url.js +295 -0
- package/dist/handlers/download-from-url.js.map +1 -0
- package/dist/handlers/extract-archive.d.ts +10 -0
- package/dist/handlers/extract-archive.d.ts.map +1 -0
- package/dist/handlers/extract-archive.js +57 -0
- package/dist/handlers/extract-archive.js.map +1 -0
- package/dist/handlers/extract-iocs.d.ts +10 -0
- package/dist/handlers/extract-iocs.d.ts.map +1 -0
- package/dist/handlers/extract-iocs.js +21 -0
- package/dist/handlers/extract-iocs.js.map +1 -0
- package/dist/handlers/get-file-info.d.ts +10 -0
- package/dist/handlers/get-file-info.d.ts.map +1 -0
- package/dist/handlers/get-file-info.js +89 -0
- package/dist/handlers/get-file-info.js.map +1 -0
- package/dist/handlers/list-files.d.ts +10 -0
- package/dist/handlers/list-files.d.ts.map +1 -0
- package/dist/handlers/list-files.js +60 -0
- package/dist/handlers/list-files.js.map +1 -0
- package/dist/handlers/run-tool.d.ts +10 -0
- package/dist/handlers/run-tool.d.ts.map +1 -0
- package/dist/handlers/run-tool.js +99 -0
- package/dist/handlers/run-tool.js.map +1 -0
- package/dist/handlers/suggest-tools.d.ts +10 -0
- package/dist/handlers/suggest-tools.d.ts.map +1 -0
- package/dist/handlers/suggest-tools.js +202 -0
- package/dist/handlers/suggest-tools.js.map +1 -0
- package/dist/handlers/types.d.ts +15 -0
- package/dist/handlers/types.d.ts.map +1 -0
- package/dist/handlers/types.js +2 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/handlers/upload-file.d.ts +10 -0
- package/dist/handlers/upload-file.d.ts.map +1 -0
- package/dist/handlers/upload-file.js +33 -0
- package/dist/handlers/upload-file.js.map +1 -0
- package/dist/handlers/upload-from-host.d.ts +10 -0
- package/dist/handlers/upload-from-host.d.ts.map +1 -0
- package/dist/handlers/upload-from-host.js +33 -0
- package/dist/handlers/upload-from-host.js.map +1 -0
- package/dist/handlers/upload-sample.d.ts +10 -0
- package/dist/handlers/upload-sample.d.ts.map +1 -0
- package/dist/handlers/upload-sample.js +26 -0
- package/dist/handlers/upload-sample.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/ioc/extractor.d.ts +21 -0
- package/dist/ioc/extractor.d.ts.map +1 -0
- package/dist/ioc/extractor.js +91 -0
- package/dist/ioc/extractor.js.map +1 -0
- package/dist/ioc/known-values.d.ts +7 -0
- package/dist/ioc/known-values.d.ts.map +1 -0
- package/dist/ioc/known-values.js +43 -0
- package/dist/ioc/known-values.js.map +1 -0
- package/dist/ioc/noise.d.ts +6 -0
- package/dist/ioc/noise.d.ts.map +1 -0
- package/dist/ioc/noise.js +170 -0
- package/dist/ioc/noise.js.map +1 -0
- package/dist/ioc/patterns.d.ts +10 -0
- package/dist/ioc/patterns.d.ts.map +1 -0
- package/dist/ioc/patterns.js +65 -0
- package/dist/ioc/patterns.js.map +1 -0
- package/dist/ioc/scoring.d.ts +6 -0
- package/dist/ioc/scoring.d.ts.map +1 -0
- package/dist/ioc/scoring.js +69 -0
- package/dist/ioc/scoring.js.map +1 -0
- package/dist/parsers/capa.d.ts +9 -0
- package/dist/parsers/capa.d.ts.map +1 -0
- package/dist/parsers/capa.js +55 -0
- package/dist/parsers/capa.js.map +1 -0
- package/dist/parsers/diec.d.ts +9 -0
- package/dist/parsers/diec.d.ts.map +1 -0
- package/dist/parsers/diec.js +53 -0
- package/dist/parsers/diec.js.map +1 -0
- package/dist/parsers/floss.d.ts +14 -0
- package/dist/parsers/floss.d.ts.map +1 -0
- package/dist/parsers/floss.js +89 -0
- package/dist/parsers/floss.js.map +1 -0
- package/dist/parsers/index.d.ts +16 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +46 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/oleid.d.ts +8 -0
- package/dist/parsers/oleid.d.ts.map +1 -0
- package/dist/parsers/oleid.js +94 -0
- package/dist/parsers/oleid.js.map +1 -0
- package/dist/parsers/olevba.d.ts +8 -0
- package/dist/parsers/olevba.d.ts.map +1 -0
- package/dist/parsers/olevba.js +83 -0
- package/dist/parsers/olevba.js.map +1 -0
- package/dist/parsers/passthrough.d.ts +6 -0
- package/dist/parsers/passthrough.d.ts.map +1 -0
- package/dist/parsers/passthrough.js +13 -0
- package/dist/parsers/passthrough.js.map +1 -0
- package/dist/parsers/pdf-parser.d.ts +9 -0
- package/dist/parsers/pdf-parser.d.ts.map +1 -0
- package/dist/parsers/pdf-parser.js +76 -0
- package/dist/parsers/pdf-parser.js.map +1 -0
- package/dist/parsers/pdfid.d.ts +9 -0
- package/dist/parsers/pdfid.d.ts.map +1 -0
- package/dist/parsers/pdfid.js +56 -0
- package/dist/parsers/pdfid.js.map +1 -0
- package/dist/parsers/peframe.d.ts +8 -0
- package/dist/parsers/peframe.d.ts.map +1 -0
- package/dist/parsers/peframe.js +76 -0
- package/dist/parsers/peframe.js.map +1 -0
- package/dist/parsers/readelf.d.ts +8 -0
- package/dist/parsers/readelf.d.ts.map +1 -0
- package/dist/parsers/readelf.js +50 -0
- package/dist/parsers/readelf.js.map +1 -0
- package/dist/parsers/types.d.ts +30 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +5 -0
- package/dist/parsers/types.js.map +1 -0
- package/dist/parsers/yara.d.ts +8 -0
- package/dist/parsers/yara.d.ts.map +1 -0
- package/dist/parsers/yara.js +88 -0
- package/dist/parsers/yara.js.map +1 -0
- package/dist/response.d.ts +44 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/response.js +48 -0
- package/dist/response.js.map +1 -0
- package/dist/schemas/tools.d.ts +135 -0
- package/dist/schemas/tools.d.ts.map +1 -0
- package/dist/schemas/tools.js +53 -0
- package/dist/schemas/tools.js.map +1 -0
- package/dist/security/blocklist.d.ts +69 -0
- package/dist/security/blocklist.d.ts.map +1 -0
- package/dist/security/blocklist.js +148 -0
- package/dist/security/blocklist.js.map +1 -0
- package/dist/state/session.d.ts +35 -0
- package/dist/state/session.d.ts.map +1 -0
- package/dist/state/session.js +45 -0
- package/dist/state/session.js.map +1 -0
- package/dist/tools/definitions.d.ts +9 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +708 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/invoker.d.ts +17 -0
- package/dist/tools/invoker.d.ts.map +1 -0
- package/dist/tools/invoker.js +44 -0
- package/dist/tools/invoker.js.map +1 -0
- package/dist/tools/registry.d.ts +62 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +53 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/workflows/engine.d.ts +27 -0
- package/dist/workflows/engine.d.ts.map +1 -0
- package/dist/workflows/engine.js +224 -0
- package/dist/workflows/engine.js.map +1 -0
- package/dist/workflows/loader.d.ts +33 -0
- package/dist/workflows/loader.d.ts.map +1 -0
- package/dist/workflows/loader.js +130 -0
- package/dist/workflows/loader.js.map +1 -0
- package/dist/workflows/types.d.ts +109 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- 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"}
|