bla-agents 0.0.0-stage → 1.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/.agents/skills/blind-llm-agents/SKILL.md +50 -0
- package/.agents/skills/blind-llm-agents/references/counter-rea-matrix.md +28 -0
- package/DISCLAIMER.md +20 -0
- package/LICENSE +21 -0
- package/README.md +291 -2
- package/dist/bundler/index.d.ts +100 -0
- package/dist/bundler/index.d.ts.map +1 -0
- package/dist/bundler/index.js +124 -0
- package/dist/bundler/index.js.map +1 -0
- package/dist/cli.d.ts +25 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +342 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/detector.d.ts +7 -0
- package/dist/core/detector.d.ts.map +1 -0
- package/dist/core/detector.js +138 -0
- package/dist/core/detector.js.map +1 -0
- package/dist/core/output-path.d.ts +3 -0
- package/dist/core/output-path.d.ts.map +1 -0
- package/dist/core/output-path.js +51 -0
- package/dist/core/output-path.js.map +1 -0
- package/dist/core/prng.d.ts +18 -0
- package/dist/core/prng.d.ts.map +1 -0
- package/dist/core/prng.js +60 -0
- package/dist/core/prng.js.map +1 -0
- package/dist/core/release-exposure.d.ts +26 -0
- package/dist/core/release-exposure.d.ts.map +1 -0
- package/dist/core/release-exposure.js +213 -0
- package/dist/core/release-exposure.js.map +1 -0
- package/dist/core/sqlite-runtime.d.ts +4 -0
- package/dist/core/sqlite-runtime.d.ts.map +1 -0
- package/dist/core/sqlite-runtime.js +19 -0
- package/dist/core/sqlite-runtime.js.map +1 -0
- package/dist/core/token-estimator.d.ts +11 -0
- package/dist/core/token-estimator.d.ts.map +1 -0
- package/dist/core/token-estimator.js +87 -0
- package/dist/core/token-estimator.js.map +1 -0
- package/dist/core/types.d.ts +154 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/engine/auditor.d.ts +6 -0
- package/dist/engine/auditor.d.ts.map +1 -0
- package/dist/engine/auditor.js +734 -0
- package/dist/engine/auditor.js.map +1 -0
- package/dist/engine/benchmark.d.ts +6 -0
- package/dist/engine/benchmark.d.ts.map +1 -0
- package/dist/engine/benchmark.js +345 -0
- package/dist/engine/benchmark.js.map +1 -0
- package/dist/engine/defender.d.ts +56 -0
- package/dist/engine/defender.d.ts.map +1 -0
- package/dist/engine/defender.js +124 -0
- package/dist/engine/defender.js.map +1 -0
- package/dist/engine/protector.d.ts +8 -0
- package/dist/engine/protector.d.ts.map +1 -0
- package/dist/engine/protector.js +359 -0
- package/dist/engine/protector.js.map +1 -0
- package/dist/engine/verifier.d.ts +6 -0
- package/dist/engine/verifier.d.ts.map +1 -0
- package/dist/engine/verifier.js +91 -0
- package/dist/engine/verifier.js.map +1 -0
- package/dist/identity.d.ts +70 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +70 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +174 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +314 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/setup/clients.d.ts +10 -0
- package/dist/setup/clients.d.ts.map +1 -0
- package/dist/setup/clients.js +95 -0
- package/dist/setup/clients.js.map +1 -0
- package/dist/setup/doctor.d.ts +25 -0
- package/dist/setup/doctor.d.ts.map +1 -0
- package/dist/setup/doctor.js +45 -0
- package/dist/setup/doctor.js.map +1 -0
- package/dist/setup/setup.d.ts +29 -0
- package/dist/setup/setup.d.ts.map +1 -0
- package/dist/setup/setup.js +123 -0
- package/dist/setup/setup.js.map +1 -0
- package/dist/shields/chaff/chaff-generator.d.ts +17 -0
- package/dist/shields/chaff/chaff-generator.d.ts.map +1 -0
- package/dist/shields/chaff/chaff-generator.js +71 -0
- package/dist/shields/chaff/chaff-generator.js.map +1 -0
- package/dist/shields/deception/architecture-mirage.d.ts +16 -0
- package/dist/shields/deception/architecture-mirage.d.ts.map +1 -0
- package/dist/shields/deception/architecture-mirage.js +46 -0
- package/dist/shields/deception/architecture-mirage.js.map +1 -0
- package/dist/shields/deception/crash-trace-decoy.d.ts +16 -0
- package/dist/shields/deception/crash-trace-decoy.d.ts.map +1 -0
- package/dist/shields/deception/crash-trace-decoy.js +36 -0
- package/dist/shields/deception/crash-trace-decoy.js.map +1 -0
- package/dist/shields/deception/decompiler-illusion.d.ts +15 -0
- package/dist/shields/deception/decompiler-illusion.d.ts.map +1 -0
- package/dist/shields/deception/decompiler-illusion.js +29 -0
- package/dist/shields/deception/decompiler-illusion.js.map +1 -0
- package/dist/shields/deception/diff-noise-injector.d.ts +17 -0
- package/dist/shields/deception/diff-noise-injector.d.ts.map +1 -0
- package/dist/shields/deception/diff-noise-injector.js +29 -0
- package/dist/shields/deception/diff-noise-injector.js.map +1 -0
- package/dist/shields/deception/evidence-contract-poison.d.ts +25 -0
- package/dist/shields/deception/evidence-contract-poison.d.ts.map +1 -0
- package/dist/shields/deception/evidence-contract-poison.js +66 -0
- package/dist/shields/deception/evidence-contract-poison.js.map +1 -0
- package/dist/shields/deception/index.d.ts +27 -0
- package/dist/shields/deception/index.d.ts.map +1 -0
- package/dist/shields/deception/index.js +52 -0
- package/dist/shields/deception/index.js.map +1 -0
- package/dist/shields/deception/prompt-completion-poison.d.ts +18 -0
- package/dist/shields/deception/prompt-completion-poison.d.ts.map +1 -0
- package/dist/shields/deception/prompt-completion-poison.js +42 -0
- package/dist/shields/deception/prompt-completion-poison.js.map +1 -0
- package/dist/shields/deception/semantic-honeypot.d.ts +17 -0
- package/dist/shields/deception/semantic-honeypot.d.ts.map +1 -0
- package/dist/shields/deception/semantic-honeypot.js +45 -0
- package/dist/shields/deception/semantic-honeypot.js.map +1 -0
- package/dist/shields/deception/shadow-business-logic.d.ts +24 -0
- package/dist/shields/deception/shadow-business-logic.d.ts.map +1 -0
- package/dist/shields/deception/shadow-business-logic.js +66 -0
- package/dist/shields/deception/shadow-business-logic.js.map +1 -0
- package/dist/shields/exhaustion/asar-header-amplifier.d.ts +16 -0
- package/dist/shields/exhaustion/asar-header-amplifier.d.ts.map +1 -0
- package/dist/shields/exhaustion/asar-header-amplifier.js +37 -0
- package/dist/shields/exhaustion/asar-header-amplifier.js.map +1 -0
- package/dist/shields/exhaustion/bpe-token-amplifier.d.ts +21 -0
- package/dist/shields/exhaustion/bpe-token-amplifier.d.ts.map +1 -0
- package/dist/shields/exhaustion/bpe-token-amplifier.js +68 -0
- package/dist/shields/exhaustion/bpe-token-amplifier.js.map +1 -0
- package/dist/shields/exhaustion/callgraph-labyrinth.d.ts +20 -0
- package/dist/shields/exhaustion/callgraph-labyrinth.d.ts.map +1 -0
- package/dist/shields/exhaustion/callgraph-labyrinth.js +62 -0
- package/dist/shields/exhaustion/callgraph-labyrinth.js.map +1 -0
- package/dist/shields/exhaustion/cdp-shape-budget-breaker.d.ts +20 -0
- package/dist/shields/exhaustion/cdp-shape-budget-breaker.d.ts.map +1 -0
- package/dist/shields/exhaustion/cdp-shape-budget-breaker.js +40 -0
- package/dist/shields/exhaustion/cdp-shape-budget-breaker.js.map +1 -0
- package/dist/shields/exhaustion/frida-capture-saturation.d.ts +28 -0
- package/dist/shields/exhaustion/frida-capture-saturation.d.ts.map +1 -0
- package/dist/shields/exhaustion/frida-capture-saturation.js +45 -0
- package/dist/shields/exhaustion/frida-capture-saturation.js.map +1 -0
- package/dist/shields/exhaustion/index.d.ts +30 -0
- package/dist/shields/exhaustion/index.d.ts.map +1 -0
- package/dist/shields/exhaustion/index.js +43 -0
- package/dist/shields/exhaustion/index.js.map +1 -0
- package/dist/shields/exhaustion/obligation-flooder.d.ts +116 -0
- package/dist/shields/exhaustion/obligation-flooder.d.ts.map +1 -0
- package/dist/shields/exhaustion/obligation-flooder.js +133 -0
- package/dist/shields/exhaustion/obligation-flooder.js.map +1 -0
- package/dist/shields/exhaustion/rea-budget-matrix.d.ts +48 -0
- package/dist/shields/exhaustion/rea-budget-matrix.d.ts.map +1 -0
- package/dist/shields/exhaustion/rea-budget-matrix.js +177 -0
- package/dist/shields/exhaustion/rea-budget-matrix.js.map +1 -0
- package/dist/shields/exhaustion/regex-worker-tarpit.d.ts +23 -0
- package/dist/shields/exhaustion/regex-worker-tarpit.d.ts.map +1 -0
- package/dist/shields/exhaustion/regex-worker-tarpit.js +42 -0
- package/dist/shields/exhaustion/regex-worker-tarpit.js.map +1 -0
- package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts +23 -0
- package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts.map +1 -0
- package/dist/shields/exhaustion/wasm-interface-exhaustion.js +50 -0
- package/dist/shields/exhaustion/wasm-interface-exhaustion.js.map +1 -0
- package/dist/shields/formats/apple-plist.d.ts +31 -0
- package/dist/shields/formats/apple-plist.d.ts.map +1 -0
- package/dist/shields/formats/apple-plist.js +61 -0
- package/dist/shields/formats/apple-plist.js.map +1 -0
- package/dist/shields/formats/archive.d.ts +34 -0
- package/dist/shields/formats/archive.d.ts.map +1 -0
- package/dist/shields/formats/archive.js +167 -0
- package/dist/shields/formats/archive.js.map +1 -0
- package/dist/shields/formats/asar.d.ts +32 -0
- package/dist/shields/formats/asar.d.ts.map +1 -0
- package/dist/shields/formats/asar.js +117 -0
- package/dist/shields/formats/asar.js.map +1 -0
- package/dist/shields/formats/dotnet-managed.d.ts +21 -0
- package/dist/shields/formats/dotnet-managed.d.ts.map +1 -0
- package/dist/shields/formats/dotnet-managed.js +41 -0
- package/dist/shields/formats/dotnet-managed.js.map +1 -0
- package/dist/shields/formats/electron-fuses.d.ts +38 -0
- package/dist/shields/formats/electron-fuses.d.ts.map +1 -0
- package/dist/shields/formats/electron-fuses.js +117 -0
- package/dist/shields/formats/electron-fuses.js.map +1 -0
- package/dist/shields/formats/headers.d.ts +22 -0
- package/dist/shields/formats/headers.d.ts.map +1 -0
- package/dist/shields/formats/headers.js +153 -0
- package/dist/shields/formats/headers.js.map +1 -0
- package/dist/shields/formats/mobile-game.d.ts +38 -0
- package/dist/shields/formats/mobile-game.d.ts.map +1 -0
- package/dist/shields/formats/mobile-game.js +115 -0
- package/dist/shields/formats/mobile-game.js.map +1 -0
- package/dist/shields/formats/model.d.ts +52 -0
- package/dist/shields/formats/model.d.ts.map +1 -0
- package/dist/shields/formats/model.js +289 -0
- package/dist/shields/formats/model.js.map +1 -0
- package/dist/shields/formats/native.d.ts +47 -0
- package/dist/shields/formats/native.d.ts.map +1 -0
- package/dist/shields/formats/native.js +280 -0
- package/dist/shields/formats/native.js.map +1 -0
- package/dist/shields/formats/python.d.ts +41 -0
- package/dist/shields/formats/python.d.ts.map +1 -0
- package/dist/shields/formats/python.js +96 -0
- package/dist/shields/formats/python.js.map +1 -0
- package/dist/shields/formats/sourcemap.d.ts +22 -0
- package/dist/shields/formats/sourcemap.d.ts.map +1 -0
- package/dist/shields/formats/sourcemap.js +64 -0
- package/dist/shields/formats/sourcemap.js.map +1 -0
- package/dist/shields/formats/sqlite.d.ts +43 -0
- package/dist/shields/formats/sqlite.d.ts.map +1 -0
- package/dist/shields/formats/sqlite.js +193 -0
- package/dist/shields/formats/sqlite.js.map +1 -0
- package/dist/shields/formats/wasm.d.ts +32 -0
- package/dist/shields/formats/wasm.d.ts.map +1 -0
- package/dist/shields/formats/wasm.js +199 -0
- package/dist/shields/formats/wasm.js.map +1 -0
- package/dist/shields/javascript/ast-shield.d.ts +17 -0
- package/dist/shields/javascript/ast-shield.d.ts.map +1 -0
- package/dist/shields/javascript/ast-shield.js +275 -0
- package/dist/shields/javascript/ast-shield.js.map +1 -0
- package/dist/shields/runtime/runtime-shield.d.ts +28 -0
- package/dist/shields/runtime/runtime-shield.d.ts.map +1 -0
- package/dist/shields/runtime/runtime-shield.js +78 -0
- package/dist/shields/runtime/runtime-shield.js.map +1 -0
- package/dist/shields/tarpit/opaque-predicates.d.ts +10 -0
- package/dist/shields/tarpit/opaque-predicates.d.ts.map +1 -0
- package/dist/shields/tarpit/opaque-predicates.js +40 -0
- package/dist/shields/tarpit/opaque-predicates.js.map +1 -0
- package/dist/shields/tarpit/tarpit-generator.d.ts +26 -0
- package/dist/shields/tarpit/tarpit-generator.d.ts.map +1 -0
- package/dist/shields/tarpit/tarpit-generator.js +187 -0
- package/dist/shields/tarpit/tarpit-generator.js.map +1 -0
- package/dist/ui/reporter.d.ts +13 -0
- package/dist/ui/reporter.d.ts.map +1 -0
- package/dist/ui/reporter.js +197 -0
- package/dist/ui/reporter.js.map +1 -0
- package/package.json +82 -4
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { SeededPrng } from "../core/prng.js";
|
|
2
|
+
import { generateChaffPayloads } from "../shields/chaff/chaff-generator.js";
|
|
3
|
+
import { generateHoneySourceMap } from "../shields/formats/sourcemap.js";
|
|
4
|
+
import { transformJavaScriptWithBlaShield } from "../shields/javascript/ast-shield.js";
|
|
5
|
+
/**
|
|
6
|
+
* Vite & Rollup plugin (`blaVitePlugin` / `blaRollupPlugin`) that automatically
|
|
7
|
+
* injects BLA's three-stage adversarial shield into generated JS chunks during `renderChunk`.
|
|
8
|
+
*
|
|
9
|
+
* Usage in `vite.config.ts`:
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { defineConfig } from "vite";
|
|
12
|
+
* import { blaVitePlugin } from "bla-shield";
|
|
13
|
+
*
|
|
14
|
+
* export default defineConfig({
|
|
15
|
+
* plugins: [blaVitePlugin({ intensity: "bankrupt" })],
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function blaRollupPlugin(options = {}) {
|
|
20
|
+
const intensity = options.intensity ?? "balanced";
|
|
21
|
+
const include = options.include ?? /\.(?:m?js|cjs)$/i;
|
|
22
|
+
const emitMap = options.honeySourceMap ?? true;
|
|
23
|
+
return {
|
|
24
|
+
name: "bla-shield-rollup-plugin",
|
|
25
|
+
renderChunk(code, chunk) {
|
|
26
|
+
if (!include.test(chunk.fileName)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const seed = `${options.seed ?? "bla-rollup"}:${chunk.fileName}`;
|
|
30
|
+
const transformed = transformJavaScriptWithBlaShield(code, {
|
|
31
|
+
intensity,
|
|
32
|
+
seed,
|
|
33
|
+
filename: chunk.fileName,
|
|
34
|
+
});
|
|
35
|
+
if (!emitMap) {
|
|
36
|
+
return { code: transformed.code, map: null };
|
|
37
|
+
}
|
|
38
|
+
const prng = new SeededPrng(seed);
|
|
39
|
+
const chaff = generateChaffPayloads(prng, intensity);
|
|
40
|
+
const lineCount = transformed.code.split("\n").length;
|
|
41
|
+
const honeyMap = generateHoneySourceMap(chunk.fileName, lineCount, prng, chaff);
|
|
42
|
+
return {
|
|
43
|
+
code: transformed.code,
|
|
44
|
+
map: honeyMap.mapObject,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Alias of `blaRollupPlugin` with `enforce: "post"` for Vite 4/5/6.
|
|
51
|
+
*/
|
|
52
|
+
export function blaVitePlugin(options = {}) {
|
|
53
|
+
return {
|
|
54
|
+
...blaRollupPlugin(options),
|
|
55
|
+
name: "vite-plugin-bla-shield",
|
|
56
|
+
enforce: "post",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Webpack 5 / Rspack plugin class (`BlaWebpackPlugin`) that shields emitted JS assets.
|
|
61
|
+
*/
|
|
62
|
+
export class BlaWebpackPlugin {
|
|
63
|
+
options;
|
|
64
|
+
constructor(options = {}) {
|
|
65
|
+
this.options = options;
|
|
66
|
+
}
|
|
67
|
+
apply(compiler) {
|
|
68
|
+
const intensity = this.options.intensity ?? "balanced";
|
|
69
|
+
const include = this.options.include ?? /\.(?:m?js|cjs)$/i;
|
|
70
|
+
compiler.hooks.compilation.tap("BlaWebpackPlugin", (compilation) => {
|
|
71
|
+
compilation.hooks.processAssets.tap({
|
|
72
|
+
name: "BlaWebpackPlugin",
|
|
73
|
+
stage: 400, // PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE
|
|
74
|
+
}, (assets) => {
|
|
75
|
+
for (const assetName of Object.keys(assets)) {
|
|
76
|
+
if (!include.test(assetName))
|
|
77
|
+
continue;
|
|
78
|
+
const rawAsset = assets[assetName];
|
|
79
|
+
if (!rawAsset)
|
|
80
|
+
continue;
|
|
81
|
+
const rawSource = rawAsset.source().toString("utf8");
|
|
82
|
+
const transformed = transformJavaScriptWithBlaShield(rawSource, {
|
|
83
|
+
intensity,
|
|
84
|
+
seed: `${this.options.seed ?? "bla-webpack"}:${assetName}`,
|
|
85
|
+
filename: assetName,
|
|
86
|
+
});
|
|
87
|
+
const shieldedCode = transformed.code;
|
|
88
|
+
compilation.updateAsset(assetName, {
|
|
89
|
+
source: () => shieldedCode,
|
|
90
|
+
size: () => Buffer.byteLength(shieldedCode, "utf8"),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* esbuild plugin (`blaEsbuildPlugin`) that shields JS/TS entrypoints or output files.
|
|
99
|
+
*/
|
|
100
|
+
export function blaEsbuildPlugin(options = {}) {
|
|
101
|
+
const intensity = options.intensity ?? "balanced";
|
|
102
|
+
const include = options.include ?? /\.(?:[cm]?[jt]sx?)$/i;
|
|
103
|
+
return {
|
|
104
|
+
name: "bla-shield-esbuild-plugin",
|
|
105
|
+
setup(build) {
|
|
106
|
+
build.onLoad({ filter: include }, async (args) => {
|
|
107
|
+
if (args.path.includes("node_modules"))
|
|
108
|
+
return null;
|
|
109
|
+
const fs = await import("node:fs/promises");
|
|
110
|
+
const source = await fs.readFile(args.path, "utf8");
|
|
111
|
+
const transformed = transformJavaScriptWithBlaShield(source, {
|
|
112
|
+
intensity,
|
|
113
|
+
seed: `${options.seed ?? "bla-esbuild"}:${args.path}`,
|
|
114
|
+
filename: args.path,
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
contents: transformed.code,
|
|
118
|
+
loader: args.path.endsWith(".ts") || args.path.endsWith(".tsx") ? "ts" : "js",
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bundler/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import type { ProtectionIntensity } from "./core/types.js";
|
|
3
|
+
import { type NativeHeaderLanguage } from "./shields/formats/headers.js";
|
|
4
|
+
import { type SupportedAgentClientId } from "./setup/clients.js";
|
|
5
|
+
interface ParsedCliArgs {
|
|
6
|
+
readonly command: string;
|
|
7
|
+
readonly positionals: string[];
|
|
8
|
+
readonly output?: string;
|
|
9
|
+
readonly inPlace: boolean;
|
|
10
|
+
readonly intensity: ProtectionIntensity;
|
|
11
|
+
readonly seed?: string;
|
|
12
|
+
readonly lang: NativeHeaderLanguage;
|
|
13
|
+
readonly clients: SupportedAgentClientId[];
|
|
14
|
+
readonly allDetected: boolean;
|
|
15
|
+
readonly dryRun: boolean;
|
|
16
|
+
readonly yes: boolean;
|
|
17
|
+
readonly json: boolean;
|
|
18
|
+
readonly honeyMaps: boolean;
|
|
19
|
+
readonly help: boolean;
|
|
20
|
+
readonly version: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function parseCliArgs(argv: readonly string[]): ParsedCliArgs;
|
|
23
|
+
export declare function runCli(argv?: readonly string[]): Promise<number>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3D,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAqDjE,UAAU,aAAa;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CA8EnE;AAED,wBAAsB,MAAM,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CA8K7F"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { writeFileSync } from "node:fs";
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
|
+
import { BLA_IDENTITY } from "./identity.js";
|
|
5
|
+
import { inspectReleaseExposure } from "./core/release-exposure.js";
|
|
6
|
+
import { auditTarget } from "./engine/auditor.js";
|
|
7
|
+
import { protectTarget } from "./engine/protector.js";
|
|
8
|
+
import { verifyTarget } from "./engine/verifier.js";
|
|
9
|
+
import { defendTarget } from "./engine/defender.js";
|
|
10
|
+
import { runShowcaseBenchmark } from "./engine/benchmark.js";
|
|
11
|
+
import { emitCompileTimeNativeHeader, } from "./shields/formats/headers.js";
|
|
12
|
+
import { runSetup, runUninstall } from "./setup/setup.js";
|
|
13
|
+
import { runDoctor } from "./setup/doctor.js";
|
|
14
|
+
import { startMcpStdioServer } from "./mcp/server.js";
|
|
15
|
+
import { formatAuditReport, formatBanner, formatBenchmarkReport, formatDoctorReport, formatOneClickDefenseReport, formatProtectionResult, formatSetupReport, formatVerificationReport, } from "./ui/reporter.js";
|
|
16
|
+
function printHelp() {
|
|
17
|
+
console.log(`${formatBanner()}
|
|
18
|
+
|
|
19
|
+
Usage:
|
|
20
|
+
npx bla-agents <command> [options]
|
|
21
|
+
npx bla-shield <command> [options]
|
|
22
|
+
bla <command> [options]
|
|
23
|
+
|
|
24
|
+
Commands:
|
|
25
|
+
setup Configure agent MCP integrations & install the BLA skill
|
|
26
|
+
defend <target> One-click full Counter-REA pipeline (inspect -> audit -> bankrupt protect -> verify)
|
|
27
|
+
inspect-release <target> Read-only local source-map & symbol exposure check
|
|
28
|
+
audit <target> Pre-flight REA exposure & vulnerability scan
|
|
29
|
+
protect <target> Inject multi-layer Counter-REA adversarial shield
|
|
30
|
+
verify <target> [original] Verify Counter-REA defense invariants & token amplification
|
|
31
|
+
benchmark Run the 8-target Counter-REA Showcase Benchmark suite
|
|
32
|
+
emit-headers Generate compile-time C/C++, Rust, or Go defense headers
|
|
33
|
+
doctor Check readiness of BLA engines & agent registrations
|
|
34
|
+
update Update global bla-shield installation & print setup refresh instructions
|
|
35
|
+
uninstall Remove BLA MCP configuration & skill files
|
|
36
|
+
mcp Start the BLA Model Context Protocol (MCP) server over stdio
|
|
37
|
+
|
|
38
|
+
Options:
|
|
39
|
+
-o, --output <path> Output file or directory path (for protect / emit-headers)
|
|
40
|
+
--in-place Overwrite input target in-place (for protect)
|
|
41
|
+
--intensity <preset> Protection preset: stealth | balanced | maximum | bankrupt (default: balanced)
|
|
42
|
+
--seed <seed> Deterministic PRNG seed for reproducible protection
|
|
43
|
+
--lang <c|rust|go> Target language for emit-headers (default: c)
|
|
44
|
+
--client <id> Agent client ID for setup (repeatable: claude_code, cursor, codex, etc.)
|
|
45
|
+
--all-detected Configure all detected coding agents on this machine
|
|
46
|
+
--dry-run Preview planned setup changes without writing files
|
|
47
|
+
-y, --yes Approve setup actions without interactive confirmation
|
|
48
|
+
--json Emit structured JSON output
|
|
49
|
+
-v, --version Print BLA version
|
|
50
|
+
-h, --help Print this help guide
|
|
51
|
+
`);
|
|
52
|
+
}
|
|
53
|
+
export function parseCliArgs(argv) {
|
|
54
|
+
let command = "";
|
|
55
|
+
const positionals = [];
|
|
56
|
+
let output;
|
|
57
|
+
let inPlace = false;
|
|
58
|
+
let intensity = "balanced";
|
|
59
|
+
let seed;
|
|
60
|
+
let lang = "c";
|
|
61
|
+
const clients = [];
|
|
62
|
+
let allDetected = false;
|
|
63
|
+
let dryRun = false;
|
|
64
|
+
let yes = false;
|
|
65
|
+
let json = false;
|
|
66
|
+
let honeyMaps = true;
|
|
67
|
+
let help = false;
|
|
68
|
+
let version = false;
|
|
69
|
+
for (let i = 0; i < argv.length; i++) {
|
|
70
|
+
const arg = argv[i];
|
|
71
|
+
if (arg === "-h" || arg === "--help") {
|
|
72
|
+
help = true;
|
|
73
|
+
}
|
|
74
|
+
else if (arg === "-v" || arg === "--version") {
|
|
75
|
+
version = true;
|
|
76
|
+
}
|
|
77
|
+
else if (arg === "--json") {
|
|
78
|
+
json = true;
|
|
79
|
+
}
|
|
80
|
+
else if (arg === "-y" || arg === "--yes") {
|
|
81
|
+
yes = true;
|
|
82
|
+
}
|
|
83
|
+
else if (arg === "--dry-run") {
|
|
84
|
+
dryRun = true;
|
|
85
|
+
}
|
|
86
|
+
else if (arg === "--all-detected") {
|
|
87
|
+
allDetected = true;
|
|
88
|
+
}
|
|
89
|
+
else if (arg === "--in-place") {
|
|
90
|
+
inPlace = true;
|
|
91
|
+
}
|
|
92
|
+
else if (arg === "--no-honey-maps") {
|
|
93
|
+
honeyMaps = false;
|
|
94
|
+
}
|
|
95
|
+
else if (arg === "--mcp") {
|
|
96
|
+
command = "mcp";
|
|
97
|
+
}
|
|
98
|
+
else if (arg === "--update") {
|
|
99
|
+
command = "update";
|
|
100
|
+
}
|
|
101
|
+
else if ((arg === "-o" || arg === "--output") && i + 1 < argv.length) {
|
|
102
|
+
output = argv[++i];
|
|
103
|
+
}
|
|
104
|
+
else if (arg === "--intensity" && i + 1 < argv.length) {
|
|
105
|
+
const val = argv[++i];
|
|
106
|
+
if (["stealth", "balanced", "maximum", "bankrupt"].includes(val)) {
|
|
107
|
+
intensity = val;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (arg === "--seed" && i + 1 < argv.length) {
|
|
111
|
+
seed = argv[++i];
|
|
112
|
+
}
|
|
113
|
+
else if (arg === "--lang" && i + 1 < argv.length) {
|
|
114
|
+
const val = argv[++i];
|
|
115
|
+
if (["c", "rust", "go"].includes(val)) {
|
|
116
|
+
lang = val;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (arg === "--client" && i + 1 < argv.length) {
|
|
120
|
+
clients.push(argv[++i]);
|
|
121
|
+
}
|
|
122
|
+
else if (!arg.startsWith("-")) {
|
|
123
|
+
if (!command)
|
|
124
|
+
command = arg;
|
|
125
|
+
else
|
|
126
|
+
positionals.push(arg);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
command,
|
|
131
|
+
positionals,
|
|
132
|
+
...(output !== undefined ? { output } : {}),
|
|
133
|
+
inPlace,
|
|
134
|
+
intensity,
|
|
135
|
+
...(seed !== undefined ? { seed } : {}),
|
|
136
|
+
lang,
|
|
137
|
+
clients,
|
|
138
|
+
allDetected,
|
|
139
|
+
dryRun,
|
|
140
|
+
yes,
|
|
141
|
+
json,
|
|
142
|
+
honeyMaps,
|
|
143
|
+
help,
|
|
144
|
+
version,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export async function runCli(argv = process.argv.slice(2)) {
|
|
148
|
+
const parsed = parseCliArgs(argv);
|
|
149
|
+
if (parsed.version) {
|
|
150
|
+
console.log(BLA_IDENTITY.version);
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
if (parsed.command === "mcp") {
|
|
154
|
+
startMcpStdioServer();
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
if (parsed.help || !parsed.command) {
|
|
158
|
+
printHelp();
|
|
159
|
+
return 0;
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
switch (parsed.command) {
|
|
163
|
+
case "setup": {
|
|
164
|
+
const res = runSetup({
|
|
165
|
+
...(parsed.clients.length > 0 ? { clientIds: parsed.clients } : {}),
|
|
166
|
+
allDetected: parsed.allDetected,
|
|
167
|
+
dryRun: parsed.dryRun,
|
|
168
|
+
yes: parsed.yes,
|
|
169
|
+
});
|
|
170
|
+
if (parsed.json)
|
|
171
|
+
console.log(JSON.stringify(res, null, 2));
|
|
172
|
+
else
|
|
173
|
+
console.log(formatSetupReport(res));
|
|
174
|
+
return 0;
|
|
175
|
+
}
|
|
176
|
+
case "doctor": {
|
|
177
|
+
const doc = runDoctor();
|
|
178
|
+
if (parsed.json)
|
|
179
|
+
console.log(JSON.stringify(doc, null, 2));
|
|
180
|
+
else
|
|
181
|
+
console.log(formatDoctorReport(doc));
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
case "update": {
|
|
185
|
+
const updateInfo = {
|
|
186
|
+
currentVersion: BLA_IDENTITY.version,
|
|
187
|
+
package: BLA_IDENTITY.packageName,
|
|
188
|
+
packageAlias: BLA_IDENTITY.packageAlias,
|
|
189
|
+
refreshSetupCommand: "npx bla-agents@latest setup",
|
|
190
|
+
globalUpdateCommand: "npm install --global bla-agents@latest",
|
|
191
|
+
};
|
|
192
|
+
if (parsed.json) {
|
|
193
|
+
console.log(JSON.stringify(updateInfo, null, 2));
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
console.log(`${formatBanner()}\n\nBLA v${BLA_IDENTITY.version} update workflow:\n • Global CLI update: npm install --global bla-agents@latest\n • Agent MCP refresh: npx bla-agents@latest setup\n`);
|
|
197
|
+
}
|
|
198
|
+
return 0;
|
|
199
|
+
}
|
|
200
|
+
case "uninstall": {
|
|
201
|
+
const res = runUninstall();
|
|
202
|
+
if (parsed.json)
|
|
203
|
+
console.log(JSON.stringify(res, null, 2));
|
|
204
|
+
else
|
|
205
|
+
console.log(`Removed BLA configuration from ${res.removedClients.length} client(s).`);
|
|
206
|
+
return 0;
|
|
207
|
+
}
|
|
208
|
+
case "inspect-release": {
|
|
209
|
+
const target = parsed.positionals[0];
|
|
210
|
+
if (!target) {
|
|
211
|
+
console.error("Error: Missing <target> path for `bla inspect-release <target>`.");
|
|
212
|
+
return 1;
|
|
213
|
+
}
|
|
214
|
+
const report = inspectReleaseExposure(target);
|
|
215
|
+
console.log(JSON.stringify(report, null, 2));
|
|
216
|
+
return report.status === "complete" ? 0 : 2;
|
|
217
|
+
}
|
|
218
|
+
case "defend": {
|
|
219
|
+
const target = parsed.positionals[0];
|
|
220
|
+
if (!target) {
|
|
221
|
+
console.error("Error: Missing <target> path for `bla defend <target>`.");
|
|
222
|
+
return 1;
|
|
223
|
+
}
|
|
224
|
+
const explicitIntensity = argv.includes("--intensity")
|
|
225
|
+
? parsed.intensity
|
|
226
|
+
: "bankrupt";
|
|
227
|
+
const report = defendTarget({
|
|
228
|
+
inputPath: target,
|
|
229
|
+
...(parsed.output !== undefined ? { outputPath: parsed.output } : {}),
|
|
230
|
+
inPlace: parsed.inPlace,
|
|
231
|
+
intensity: explicitIntensity,
|
|
232
|
+
...(parsed.seed !== undefined ? { seed: parsed.seed } : {}),
|
|
233
|
+
emitManifest: argv.includes("--manifest"),
|
|
234
|
+
});
|
|
235
|
+
if (parsed.json)
|
|
236
|
+
console.log(JSON.stringify(report, null, 2));
|
|
237
|
+
else
|
|
238
|
+
console.log(formatOneClickDefenseReport(report));
|
|
239
|
+
return report.overallSuccess ? 0 : 2;
|
|
240
|
+
}
|
|
241
|
+
case "audit": {
|
|
242
|
+
const target = parsed.positionals[0];
|
|
243
|
+
if (!target) {
|
|
244
|
+
console.error("Error: Missing <target> path for `bla audit <target>`.");
|
|
245
|
+
return 1;
|
|
246
|
+
}
|
|
247
|
+
const report = auditTarget(target);
|
|
248
|
+
if (parsed.json)
|
|
249
|
+
console.log(JSON.stringify(report, null, 2));
|
|
250
|
+
else
|
|
251
|
+
console.log(formatAuditReport(report));
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
254
|
+
case "protect": {
|
|
255
|
+
const target = parsed.positionals[0];
|
|
256
|
+
if (!target) {
|
|
257
|
+
console.error("Error: Missing <target> path for `bla protect <target>`.");
|
|
258
|
+
return 1;
|
|
259
|
+
}
|
|
260
|
+
const res = protectTarget({
|
|
261
|
+
inputPath: target,
|
|
262
|
+
...(parsed.output !== undefined ? { outputPath: parsed.output } : {}),
|
|
263
|
+
inPlace: parsed.inPlace,
|
|
264
|
+
intensity: parsed.intensity,
|
|
265
|
+
...(parsed.seed !== undefined ? { seed: parsed.seed } : {}),
|
|
266
|
+
honeySourceMaps: parsed.honeyMaps,
|
|
267
|
+
});
|
|
268
|
+
if (parsed.json)
|
|
269
|
+
console.log(JSON.stringify(res, null, 2));
|
|
270
|
+
else
|
|
271
|
+
console.log(formatProtectionResult(res));
|
|
272
|
+
return 0;
|
|
273
|
+
}
|
|
274
|
+
case "verify": {
|
|
275
|
+
const target = parsed.positionals[0];
|
|
276
|
+
if (!target) {
|
|
277
|
+
console.error("Error: Missing <target> path for `bla verify <target> [original]`.");
|
|
278
|
+
return 1;
|
|
279
|
+
}
|
|
280
|
+
const report = verifyTarget(target, parsed.positionals[1]);
|
|
281
|
+
if (parsed.json)
|
|
282
|
+
console.log(JSON.stringify(report, null, 2));
|
|
283
|
+
else
|
|
284
|
+
console.log(formatVerificationReport(report));
|
|
285
|
+
return report.overallPassed ? 0 : 2;
|
|
286
|
+
}
|
|
287
|
+
case "benchmark": {
|
|
288
|
+
const bench = await runShowcaseBenchmark();
|
|
289
|
+
if (parsed.json)
|
|
290
|
+
console.log(JSON.stringify(bench, null, 2));
|
|
291
|
+
else
|
|
292
|
+
console.log(formatBenchmarkReport(bench));
|
|
293
|
+
return 0;
|
|
294
|
+
}
|
|
295
|
+
case "emit-headers": {
|
|
296
|
+
const emitted = emitCompileTimeNativeHeader(parsed.lang, {
|
|
297
|
+
intensity: parsed.intensity,
|
|
298
|
+
...(parsed.seed !== undefined ? { seed: parsed.seed } : {}),
|
|
299
|
+
});
|
|
300
|
+
if (parsed.output) {
|
|
301
|
+
const outPath = resolve(parsed.output);
|
|
302
|
+
writeFileSync(outPath, emitted.content, "utf8");
|
|
303
|
+
if (parsed.json) {
|
|
304
|
+
console.log(JSON.stringify({ ...emitted, outputPath: outPath }, null, 2));
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
console.log(`Emitted ${emitted.language.toUpperCase()} defense header to ${outPath} (${emitted.decoyFunctionsCount} decoy tarpit functions).`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else if (parsed.json) {
|
|
311
|
+
console.log(JSON.stringify(emitted, null, 2));
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
console.log(emitted.content);
|
|
315
|
+
}
|
|
316
|
+
return 0;
|
|
317
|
+
}
|
|
318
|
+
default:
|
|
319
|
+
console.error(`Unknown command: ${parsed.command}. Run "bla --help" for available commands.`);
|
|
320
|
+
return 1;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
325
|
+
return 1;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Run when invoked directly
|
|
329
|
+
const isDirectExecution = process.argv[1] !== undefined &&
|
|
330
|
+
(process.argv[1].endsWith("cli.js") ||
|
|
331
|
+
process.argv[1].endsWith("cli.ts") ||
|
|
332
|
+
process.argv[1].endsWith("bla") ||
|
|
333
|
+
process.argv[1].endsWith("bla-agents") ||
|
|
334
|
+
process.argv[1].endsWith("bla-shield"));
|
|
335
|
+
if (isDirectExecution) {
|
|
336
|
+
runCli().then((code) => {
|
|
337
|
+
if (process.argv[2] !== "mcp" && !process.argv.includes("--mcp")) {
|
|
338
|
+
process.exitCode = code;
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EACL,2BAA2B,GAE5B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkC9B,CAAC,CAAC;AACH,CAAC;AAoBD,MAAM,UAAU,YAAY,CAAC,IAAuB;IAClD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,MAA0B,CAAC;IAC/B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAAS,GAAwB,UAAU,CAAC;IAChD,IAAI,IAAwB,CAAC;IAC7B,IAAI,IAAI,GAAyB,GAAG,CAAC;IACrC,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/C,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3C,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACpC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACvE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAyB,CAAC;YAC9C,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjE,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAA0B,CAAC;YAC/C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAA4B,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO;gBAAE,OAAO,GAAG,GAAG,CAAC;;gBACvB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO;QACP,WAAW;QACX,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO;QACP,SAAS;QACT,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,IAAI;QACJ,OAAO;QACP,WAAW;QACX,MAAM;QACN,GAAG;QACH,IAAI;QACJ,SAAS;QACT,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA0B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC7B,mBAAmB,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,GAAG,GAAG,QAAQ,CAAC;oBACnB,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnE,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;iBAChB,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzC,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1C,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,UAAU,GAAG;oBACjB,cAAc,EAAE,YAAY,CAAC,OAAO;oBACpC,OAAO,EAAE,YAAY,CAAC,WAAW;oBACjC,YAAY,EAAE,YAAY,CAAC,YAAY;oBACvC,mBAAmB,EAAE,6BAA6B;oBAClD,mBAAmB,EAAE,wCAAwC;iBAC9D,CAAC;gBACF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,YAAY,YAAY,CAAC,OAAO,4IAA4I,CAAC,CAAC;gBAC7M,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACtD,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,cAAc,CAAC,MAAM,aAAa,CAAC,CAAC;gBAC3F,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;oBAClF,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;oBACzE,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBACpD,CAAC,CAAC,MAAM,CAAC,SAAS;oBAClB,CAAC,CAAC,UAAU,CAAC;gBACf,MAAM,MAAM,GAAG,YAAY,CAAC;oBAC1B,SAAS,EAAE,MAAM;oBACjB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,SAAS,EAAE,iBAAiB;oBAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;iBAC1C,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACzD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtD,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;oBACxE,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACnC,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;oBAC1E,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,GAAG,GAAG,aAAa,CAAC;oBACxB,SAAS,EAAE,MAAM;oBACjB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,eAAe,EAAE,MAAM,CAAC,SAAS;iBAClC,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACtD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9C,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;oBACpF,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnD,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,KAAK,GAAG,MAAM,oBAAoB,EAAE,CAAC;gBAC3C,IAAI,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;oBACxD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,CAAC;YACX,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,EAAE;oBACvD,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5D,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACvC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAChD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC5E,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,OAAO,KAAK,OAAO,CAAC,mBAAmB,2BAA2B,CAAC,CAAC;oBACjJ,CAAC;gBACH,CAAC;qBAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC/B,CAAC;gBACD,OAAO,CAAC,CAAC;YACX,CAAC;YAED;gBACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,OAAO,4CAA4C,CAAC,CAAC;gBAC9F,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,4BAA4B;AAC5B,MAAM,iBAAiB,GACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;IAC7B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAE5C,IAAI,iBAAiB,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ArtifactFormat } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Format-aware detector that inspects both magic bytes and file extensions
|
|
4
|
+
* to route targets accurately across all 19 REA-supported artifact formats.
|
|
5
|
+
*/
|
|
6
|
+
export declare function detectArtifactFormat(targetPath: string): ArtifactFormat;
|
|
7
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/core/detector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CA4JvE"}
|