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.
Files changed (238) hide show
  1. package/.agents/skills/blind-llm-agents/SKILL.md +50 -0
  2. package/.agents/skills/blind-llm-agents/references/counter-rea-matrix.md +28 -0
  3. package/DISCLAIMER.md +20 -0
  4. package/LICENSE +21 -0
  5. package/README.md +291 -2
  6. package/dist/bundler/index.d.ts +100 -0
  7. package/dist/bundler/index.d.ts.map +1 -0
  8. package/dist/bundler/index.js +124 -0
  9. package/dist/bundler/index.js.map +1 -0
  10. package/dist/cli.d.ts +25 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +342 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/core/detector.d.ts +7 -0
  15. package/dist/core/detector.d.ts.map +1 -0
  16. package/dist/core/detector.js +138 -0
  17. package/dist/core/detector.js.map +1 -0
  18. package/dist/core/output-path.d.ts +3 -0
  19. package/dist/core/output-path.d.ts.map +1 -0
  20. package/dist/core/output-path.js +51 -0
  21. package/dist/core/output-path.js.map +1 -0
  22. package/dist/core/prng.d.ts +18 -0
  23. package/dist/core/prng.d.ts.map +1 -0
  24. package/dist/core/prng.js +60 -0
  25. package/dist/core/prng.js.map +1 -0
  26. package/dist/core/release-exposure.d.ts +26 -0
  27. package/dist/core/release-exposure.d.ts.map +1 -0
  28. package/dist/core/release-exposure.js +213 -0
  29. package/dist/core/release-exposure.js.map +1 -0
  30. package/dist/core/sqlite-runtime.d.ts +4 -0
  31. package/dist/core/sqlite-runtime.d.ts.map +1 -0
  32. package/dist/core/sqlite-runtime.js +19 -0
  33. package/dist/core/sqlite-runtime.js.map +1 -0
  34. package/dist/core/token-estimator.d.ts +11 -0
  35. package/dist/core/token-estimator.d.ts.map +1 -0
  36. package/dist/core/token-estimator.js +87 -0
  37. package/dist/core/token-estimator.js.map +1 -0
  38. package/dist/core/types.d.ts +154 -0
  39. package/dist/core/types.d.ts.map +1 -0
  40. package/dist/core/types.js +2 -0
  41. package/dist/core/types.js.map +1 -0
  42. package/dist/engine/auditor.d.ts +6 -0
  43. package/dist/engine/auditor.d.ts.map +1 -0
  44. package/dist/engine/auditor.js +734 -0
  45. package/dist/engine/auditor.js.map +1 -0
  46. package/dist/engine/benchmark.d.ts +6 -0
  47. package/dist/engine/benchmark.d.ts.map +1 -0
  48. package/dist/engine/benchmark.js +345 -0
  49. package/dist/engine/benchmark.js.map +1 -0
  50. package/dist/engine/defender.d.ts +56 -0
  51. package/dist/engine/defender.d.ts.map +1 -0
  52. package/dist/engine/defender.js +124 -0
  53. package/dist/engine/defender.js.map +1 -0
  54. package/dist/engine/protector.d.ts +8 -0
  55. package/dist/engine/protector.d.ts.map +1 -0
  56. package/dist/engine/protector.js +359 -0
  57. package/dist/engine/protector.js.map +1 -0
  58. package/dist/engine/verifier.d.ts +6 -0
  59. package/dist/engine/verifier.d.ts.map +1 -0
  60. package/dist/engine/verifier.js +91 -0
  61. package/dist/engine/verifier.js.map +1 -0
  62. package/dist/identity.d.ts +70 -0
  63. package/dist/identity.d.ts.map +1 -0
  64. package/dist/identity.js +70 -0
  65. package/dist/identity.js.map +1 -0
  66. package/dist/index.d.ts +36 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +36 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/mcp/server.d.ts +174 -0
  71. package/dist/mcp/server.d.ts.map +1 -0
  72. package/dist/mcp/server.js +314 -0
  73. package/dist/mcp/server.js.map +1 -0
  74. package/dist/setup/clients.d.ts +10 -0
  75. package/dist/setup/clients.d.ts.map +1 -0
  76. package/dist/setup/clients.js +95 -0
  77. package/dist/setup/clients.js.map +1 -0
  78. package/dist/setup/doctor.d.ts +25 -0
  79. package/dist/setup/doctor.d.ts.map +1 -0
  80. package/dist/setup/doctor.js +45 -0
  81. package/dist/setup/doctor.js.map +1 -0
  82. package/dist/setup/setup.d.ts +29 -0
  83. package/dist/setup/setup.d.ts.map +1 -0
  84. package/dist/setup/setup.js +123 -0
  85. package/dist/setup/setup.js.map +1 -0
  86. package/dist/shields/chaff/chaff-generator.d.ts +17 -0
  87. package/dist/shields/chaff/chaff-generator.d.ts.map +1 -0
  88. package/dist/shields/chaff/chaff-generator.js +71 -0
  89. package/dist/shields/chaff/chaff-generator.js.map +1 -0
  90. package/dist/shields/deception/architecture-mirage.d.ts +16 -0
  91. package/dist/shields/deception/architecture-mirage.d.ts.map +1 -0
  92. package/dist/shields/deception/architecture-mirage.js +46 -0
  93. package/dist/shields/deception/architecture-mirage.js.map +1 -0
  94. package/dist/shields/deception/crash-trace-decoy.d.ts +16 -0
  95. package/dist/shields/deception/crash-trace-decoy.d.ts.map +1 -0
  96. package/dist/shields/deception/crash-trace-decoy.js +36 -0
  97. package/dist/shields/deception/crash-trace-decoy.js.map +1 -0
  98. package/dist/shields/deception/decompiler-illusion.d.ts +15 -0
  99. package/dist/shields/deception/decompiler-illusion.d.ts.map +1 -0
  100. package/dist/shields/deception/decompiler-illusion.js +29 -0
  101. package/dist/shields/deception/decompiler-illusion.js.map +1 -0
  102. package/dist/shields/deception/diff-noise-injector.d.ts +17 -0
  103. package/dist/shields/deception/diff-noise-injector.d.ts.map +1 -0
  104. package/dist/shields/deception/diff-noise-injector.js +29 -0
  105. package/dist/shields/deception/diff-noise-injector.js.map +1 -0
  106. package/dist/shields/deception/evidence-contract-poison.d.ts +25 -0
  107. package/dist/shields/deception/evidence-contract-poison.d.ts.map +1 -0
  108. package/dist/shields/deception/evidence-contract-poison.js +66 -0
  109. package/dist/shields/deception/evidence-contract-poison.js.map +1 -0
  110. package/dist/shields/deception/index.d.ts +27 -0
  111. package/dist/shields/deception/index.d.ts.map +1 -0
  112. package/dist/shields/deception/index.js +52 -0
  113. package/dist/shields/deception/index.js.map +1 -0
  114. package/dist/shields/deception/prompt-completion-poison.d.ts +18 -0
  115. package/dist/shields/deception/prompt-completion-poison.d.ts.map +1 -0
  116. package/dist/shields/deception/prompt-completion-poison.js +42 -0
  117. package/dist/shields/deception/prompt-completion-poison.js.map +1 -0
  118. package/dist/shields/deception/semantic-honeypot.d.ts +17 -0
  119. package/dist/shields/deception/semantic-honeypot.d.ts.map +1 -0
  120. package/dist/shields/deception/semantic-honeypot.js +45 -0
  121. package/dist/shields/deception/semantic-honeypot.js.map +1 -0
  122. package/dist/shields/deception/shadow-business-logic.d.ts +24 -0
  123. package/dist/shields/deception/shadow-business-logic.d.ts.map +1 -0
  124. package/dist/shields/deception/shadow-business-logic.js +66 -0
  125. package/dist/shields/deception/shadow-business-logic.js.map +1 -0
  126. package/dist/shields/exhaustion/asar-header-amplifier.d.ts +16 -0
  127. package/dist/shields/exhaustion/asar-header-amplifier.d.ts.map +1 -0
  128. package/dist/shields/exhaustion/asar-header-amplifier.js +37 -0
  129. package/dist/shields/exhaustion/asar-header-amplifier.js.map +1 -0
  130. package/dist/shields/exhaustion/bpe-token-amplifier.d.ts +21 -0
  131. package/dist/shields/exhaustion/bpe-token-amplifier.d.ts.map +1 -0
  132. package/dist/shields/exhaustion/bpe-token-amplifier.js +68 -0
  133. package/dist/shields/exhaustion/bpe-token-amplifier.js.map +1 -0
  134. package/dist/shields/exhaustion/callgraph-labyrinth.d.ts +20 -0
  135. package/dist/shields/exhaustion/callgraph-labyrinth.d.ts.map +1 -0
  136. package/dist/shields/exhaustion/callgraph-labyrinth.js +62 -0
  137. package/dist/shields/exhaustion/callgraph-labyrinth.js.map +1 -0
  138. package/dist/shields/exhaustion/cdp-shape-budget-breaker.d.ts +20 -0
  139. package/dist/shields/exhaustion/cdp-shape-budget-breaker.d.ts.map +1 -0
  140. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js +40 -0
  141. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js.map +1 -0
  142. package/dist/shields/exhaustion/frida-capture-saturation.d.ts +28 -0
  143. package/dist/shields/exhaustion/frida-capture-saturation.d.ts.map +1 -0
  144. package/dist/shields/exhaustion/frida-capture-saturation.js +45 -0
  145. package/dist/shields/exhaustion/frida-capture-saturation.js.map +1 -0
  146. package/dist/shields/exhaustion/index.d.ts +30 -0
  147. package/dist/shields/exhaustion/index.d.ts.map +1 -0
  148. package/dist/shields/exhaustion/index.js +43 -0
  149. package/dist/shields/exhaustion/index.js.map +1 -0
  150. package/dist/shields/exhaustion/obligation-flooder.d.ts +116 -0
  151. package/dist/shields/exhaustion/obligation-flooder.d.ts.map +1 -0
  152. package/dist/shields/exhaustion/obligation-flooder.js +133 -0
  153. package/dist/shields/exhaustion/obligation-flooder.js.map +1 -0
  154. package/dist/shields/exhaustion/rea-budget-matrix.d.ts +48 -0
  155. package/dist/shields/exhaustion/rea-budget-matrix.d.ts.map +1 -0
  156. package/dist/shields/exhaustion/rea-budget-matrix.js +177 -0
  157. package/dist/shields/exhaustion/rea-budget-matrix.js.map +1 -0
  158. package/dist/shields/exhaustion/regex-worker-tarpit.d.ts +23 -0
  159. package/dist/shields/exhaustion/regex-worker-tarpit.d.ts.map +1 -0
  160. package/dist/shields/exhaustion/regex-worker-tarpit.js +42 -0
  161. package/dist/shields/exhaustion/regex-worker-tarpit.js.map +1 -0
  162. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts +23 -0
  163. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts.map +1 -0
  164. package/dist/shields/exhaustion/wasm-interface-exhaustion.js +50 -0
  165. package/dist/shields/exhaustion/wasm-interface-exhaustion.js.map +1 -0
  166. package/dist/shields/formats/apple-plist.d.ts +31 -0
  167. package/dist/shields/formats/apple-plist.d.ts.map +1 -0
  168. package/dist/shields/formats/apple-plist.js +61 -0
  169. package/dist/shields/formats/apple-plist.js.map +1 -0
  170. package/dist/shields/formats/archive.d.ts +34 -0
  171. package/dist/shields/formats/archive.d.ts.map +1 -0
  172. package/dist/shields/formats/archive.js +167 -0
  173. package/dist/shields/formats/archive.js.map +1 -0
  174. package/dist/shields/formats/asar.d.ts +32 -0
  175. package/dist/shields/formats/asar.d.ts.map +1 -0
  176. package/dist/shields/formats/asar.js +117 -0
  177. package/dist/shields/formats/asar.js.map +1 -0
  178. package/dist/shields/formats/dotnet-managed.d.ts +21 -0
  179. package/dist/shields/formats/dotnet-managed.d.ts.map +1 -0
  180. package/dist/shields/formats/dotnet-managed.js +41 -0
  181. package/dist/shields/formats/dotnet-managed.js.map +1 -0
  182. package/dist/shields/formats/electron-fuses.d.ts +38 -0
  183. package/dist/shields/formats/electron-fuses.d.ts.map +1 -0
  184. package/dist/shields/formats/electron-fuses.js +117 -0
  185. package/dist/shields/formats/electron-fuses.js.map +1 -0
  186. package/dist/shields/formats/headers.d.ts +22 -0
  187. package/dist/shields/formats/headers.d.ts.map +1 -0
  188. package/dist/shields/formats/headers.js +153 -0
  189. package/dist/shields/formats/headers.js.map +1 -0
  190. package/dist/shields/formats/mobile-game.d.ts +38 -0
  191. package/dist/shields/formats/mobile-game.d.ts.map +1 -0
  192. package/dist/shields/formats/mobile-game.js +115 -0
  193. package/dist/shields/formats/mobile-game.js.map +1 -0
  194. package/dist/shields/formats/model.d.ts +52 -0
  195. package/dist/shields/formats/model.d.ts.map +1 -0
  196. package/dist/shields/formats/model.js +289 -0
  197. package/dist/shields/formats/model.js.map +1 -0
  198. package/dist/shields/formats/native.d.ts +47 -0
  199. package/dist/shields/formats/native.d.ts.map +1 -0
  200. package/dist/shields/formats/native.js +280 -0
  201. package/dist/shields/formats/native.js.map +1 -0
  202. package/dist/shields/formats/python.d.ts +41 -0
  203. package/dist/shields/formats/python.d.ts.map +1 -0
  204. package/dist/shields/formats/python.js +96 -0
  205. package/dist/shields/formats/python.js.map +1 -0
  206. package/dist/shields/formats/sourcemap.d.ts +22 -0
  207. package/dist/shields/formats/sourcemap.d.ts.map +1 -0
  208. package/dist/shields/formats/sourcemap.js +64 -0
  209. package/dist/shields/formats/sourcemap.js.map +1 -0
  210. package/dist/shields/formats/sqlite.d.ts +43 -0
  211. package/dist/shields/formats/sqlite.d.ts.map +1 -0
  212. package/dist/shields/formats/sqlite.js +193 -0
  213. package/dist/shields/formats/sqlite.js.map +1 -0
  214. package/dist/shields/formats/wasm.d.ts +32 -0
  215. package/dist/shields/formats/wasm.d.ts.map +1 -0
  216. package/dist/shields/formats/wasm.js +199 -0
  217. package/dist/shields/formats/wasm.js.map +1 -0
  218. package/dist/shields/javascript/ast-shield.d.ts +17 -0
  219. package/dist/shields/javascript/ast-shield.d.ts.map +1 -0
  220. package/dist/shields/javascript/ast-shield.js +275 -0
  221. package/dist/shields/javascript/ast-shield.js.map +1 -0
  222. package/dist/shields/runtime/runtime-shield.d.ts +28 -0
  223. package/dist/shields/runtime/runtime-shield.d.ts.map +1 -0
  224. package/dist/shields/runtime/runtime-shield.js +78 -0
  225. package/dist/shields/runtime/runtime-shield.js.map +1 -0
  226. package/dist/shields/tarpit/opaque-predicates.d.ts +10 -0
  227. package/dist/shields/tarpit/opaque-predicates.d.ts.map +1 -0
  228. package/dist/shields/tarpit/opaque-predicates.js +40 -0
  229. package/dist/shields/tarpit/opaque-predicates.js.map +1 -0
  230. package/dist/shields/tarpit/tarpit-generator.d.ts +26 -0
  231. package/dist/shields/tarpit/tarpit-generator.d.ts.map +1 -0
  232. package/dist/shields/tarpit/tarpit-generator.js +187 -0
  233. package/dist/shields/tarpit/tarpit-generator.js.map +1 -0
  234. package/dist/ui/reporter.d.ts +13 -0
  235. package/dist/ui/reporter.d.ts.map +1 -0
  236. package/dist/ui/reporter.js +197 -0
  237. package/dist/ui/reporter.js.map +1 -0
  238. 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -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"}