bla-agents 1.1.0 → 1.6.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 (279) hide show
  1. package/.agents/skills/blind-llm-agents/SKILL.md +20 -14
  2. package/DISCLAIMER.md +15 -7
  3. package/README.md +153 -198
  4. package/dist/bundler/index.d.ts +19 -2
  5. package/dist/bundler/index.d.ts.map +1 -1
  6. package/dist/bundler/index.js +47 -4
  7. package/dist/bundler/index.js.map +1 -1
  8. package/dist/cli.d.ts +5 -0
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +123 -18
  11. package/dist/cli.js.map +1 -1
  12. package/dist/core/config.d.ts +54 -0
  13. package/dist/core/config.d.ts.map +1 -0
  14. package/dist/core/config.js +160 -0
  15. package/dist/core/config.js.map +1 -0
  16. package/dist/core/coverage-contract.d.ts +97 -0
  17. package/dist/core/coverage-contract.d.ts.map +1 -0
  18. package/dist/core/coverage-contract.js +164 -0
  19. package/dist/core/coverage-contract.js.map +1 -0
  20. package/dist/core/debug-posture.d.ts +40 -0
  21. package/dist/core/debug-posture.d.ts.map +1 -0
  22. package/dist/core/debug-posture.js +197 -0
  23. package/dist/core/debug-posture.js.map +1 -0
  24. package/dist/core/detector.d.ts.map +1 -1
  25. package/dist/core/detector.js +58 -6
  26. package/dist/core/detector.js.map +1 -1
  27. package/dist/core/identifiers.d.ts +32 -0
  28. package/dist/core/identifiers.d.ts.map +1 -0
  29. package/dist/core/identifiers.js +263 -0
  30. package/dist/core/identifiers.js.map +1 -0
  31. package/dist/core/llm-directives.d.ts +12 -0
  32. package/dist/core/llm-directives.d.ts.map +1 -0
  33. package/dist/core/llm-directives.js +23 -0
  34. package/dist/core/llm-directives.js.map +1 -0
  35. package/dist/core/prng.d.ts +10 -1
  36. package/dist/core/prng.d.ts.map +1 -1
  37. package/dist/core/prng.js +27 -2
  38. package/dist/core/prng.js.map +1 -1
  39. package/dist/core/release-exposure.d.ts.map +1 -1
  40. package/dist/core/release-exposure.js +13 -2
  41. package/dist/core/release-exposure.js.map +1 -1
  42. package/dist/core/release-plan.d.ts +68 -0
  43. package/dist/core/release-plan.d.ts.map +1 -0
  44. package/dist/core/release-plan.js +244 -0
  45. package/dist/core/release-plan.js.map +1 -0
  46. package/dist/core/sarif.d.ts +53 -0
  47. package/dist/core/sarif.d.ts.map +1 -0
  48. package/dist/core/sarif.js +95 -0
  49. package/dist/core/sarif.js.map +1 -0
  50. package/dist/core/sqlite-runtime.d.ts +13 -0
  51. package/dist/core/sqlite-runtime.d.ts.map +1 -1
  52. package/dist/core/sqlite-runtime.js +38 -8
  53. package/dist/core/sqlite-runtime.js.map +1 -1
  54. package/dist/core/types.d.ts +7 -2
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/engine/auditor.d.ts.map +1 -1
  57. package/dist/engine/auditor.js +380 -19
  58. package/dist/engine/auditor.js.map +1 -1
  59. package/dist/engine/benchmark.d.ts +1 -1
  60. package/dist/engine/benchmark.d.ts.map +1 -1
  61. package/dist/engine/benchmark.js +121 -41
  62. package/dist/engine/benchmark.js.map +1 -1
  63. package/dist/engine/defender.d.ts +1 -0
  64. package/dist/engine/defender.d.ts.map +1 -1
  65. package/dist/engine/defender.js +7 -1
  66. package/dist/engine/defender.js.map +1 -1
  67. package/dist/engine/harden.d.ts +61 -0
  68. package/dist/engine/harden.d.ts.map +1 -0
  69. package/dist/engine/harden.js +294 -0
  70. package/dist/engine/harden.js.map +1 -0
  71. package/dist/engine/protector.d.ts.map +1 -1
  72. package/dist/engine/protector.js +242 -26
  73. package/dist/engine/protector.js.map +1 -1
  74. package/dist/identity.d.ts +112 -2
  75. package/dist/identity.d.ts.map +1 -1
  76. package/dist/identity.js +112 -2
  77. package/dist/identity.js.map +1 -1
  78. package/dist/index.d.ts +26 -9
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +26 -9
  81. package/dist/index.js.map +1 -1
  82. package/dist/mcp/server.d.ts +59 -152
  83. package/dist/mcp/server.d.ts.map +1 -1
  84. package/dist/mcp/server.js +466 -50
  85. package/dist/mcp/server.js.map +1 -1
  86. package/dist/setup/clients.d.ts +49 -1
  87. package/dist/setup/clients.d.ts.map +1 -1
  88. package/dist/setup/clients.js +1193 -20
  89. package/dist/setup/clients.js.map +1 -1
  90. package/dist/setup/doctor.d.ts +58 -14
  91. package/dist/setup/doctor.d.ts.map +1 -1
  92. package/dist/setup/doctor.js +316 -22
  93. package/dist/setup/doctor.js.map +1 -1
  94. package/dist/setup/setup.d.ts +77 -7
  95. package/dist/setup/setup.d.ts.map +1 -1
  96. package/dist/setup/setup.js +591 -62
  97. package/dist/setup/setup.js.map +1 -1
  98. package/dist/shields/chaff/chaff-generator.d.ts.map +1 -1
  99. package/dist/shields/chaff/chaff-generator.js +12 -3
  100. package/dist/shields/chaff/chaff-generator.js.map +1 -1
  101. package/dist/shields/deception/architecture-mirage.js +1 -1
  102. package/dist/shields/deception/architecture-mirage.js.map +1 -1
  103. package/dist/shields/deception/canary-honeypot.d.ts +33 -0
  104. package/dist/shields/deception/canary-honeypot.d.ts.map +1 -0
  105. package/dist/shields/deception/canary-honeypot.js +95 -0
  106. package/dist/shields/deception/canary-honeypot.js.map +1 -0
  107. package/dist/shields/deception/cognitive-armor-trigger.d.ts +43 -0
  108. package/dist/shields/deception/cognitive-armor-trigger.d.ts.map +1 -0
  109. package/dist/shields/deception/cognitive-armor-trigger.js +204 -0
  110. package/dist/shields/deception/cognitive-armor-trigger.js.map +1 -0
  111. package/dist/shields/deception/crash-trace-decoy.js +1 -1
  112. package/dist/shields/deception/crash-trace-decoy.js.map +1 -1
  113. package/dist/shields/deception/decompiler-illusion.js +1 -1
  114. package/dist/shields/deception/decompiler-illusion.js.map +1 -1
  115. package/dist/shields/deception/diff-noise-injector.js +1 -1
  116. package/dist/shields/deception/diff-noise-injector.js.map +1 -1
  117. package/dist/shields/deception/evidence-contract-poison.js +5 -5
  118. package/dist/shields/deception/evidence-contract-poison.js.map +1 -1
  119. package/dist/shields/deception/format-payloads.d.ts +21 -0
  120. package/dist/shields/deception/format-payloads.d.ts.map +1 -0
  121. package/dist/shields/deception/format-payloads.js +24 -0
  122. package/dist/shields/deception/format-payloads.js.map +1 -0
  123. package/dist/shields/deception/index.d.ts +10 -2
  124. package/dist/shields/deception/index.d.ts.map +1 -1
  125. package/dist/shields/deception/index.js +20 -3
  126. package/dist/shields/deception/index.js.map +1 -1
  127. package/dist/shields/deception/prompt-completion-poison.d.ts +3 -2
  128. package/dist/shields/deception/prompt-completion-poison.d.ts.map +1 -1
  129. package/dist/shields/deception/prompt-completion-poison.js +6 -3
  130. package/dist/shields/deception/prompt-completion-poison.js.map +1 -1
  131. package/dist/shields/deception/shadow-business-logic.js +4 -4
  132. package/dist/shields/deception/shadow-business-logic.js.map +1 -1
  133. package/dist/shields/deception/system-diagnostic-decoy.d.ts +36 -0
  134. package/dist/shields/deception/system-diagnostic-decoy.d.ts.map +1 -0
  135. package/dist/shields/deception/system-diagnostic-decoy.js +101 -0
  136. package/dist/shields/deception/system-diagnostic-decoy.js.map +1 -0
  137. package/dist/shields/exhaustion/asar-header-amplifier.d.ts +12 -3
  138. package/dist/shields/exhaustion/asar-header-amplifier.d.ts.map +1 -1
  139. package/dist/shields/exhaustion/asar-header-amplifier.js +30 -8
  140. package/dist/shields/exhaustion/asar-header-amplifier.js.map +1 -1
  141. package/dist/shields/exhaustion/bpe-token-amplifier.js +2 -2
  142. package/dist/shields/exhaustion/bpe-token-amplifier.js.map +1 -1
  143. package/dist/shields/exhaustion/callgraph-labyrinth.js +2 -2
  144. package/dist/shields/exhaustion/callgraph-labyrinth.js.map +1 -1
  145. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js +1 -1
  146. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js.map +1 -1
  147. package/dist/shields/exhaustion/frida-capture-saturation.d.ts +10 -5
  148. package/dist/shields/exhaustion/frida-capture-saturation.d.ts.map +1 -1
  149. package/dist/shields/exhaustion/frida-capture-saturation.js +21 -8
  150. package/dist/shields/exhaustion/frida-capture-saturation.js.map +1 -1
  151. package/dist/shields/exhaustion/index.d.ts +2 -2
  152. package/dist/shields/exhaustion/index.d.ts.map +1 -1
  153. package/dist/shields/exhaustion/index.js +2 -2
  154. package/dist/shields/exhaustion/index.js.map +1 -1
  155. package/dist/shields/exhaustion/obligation-flooder.d.ts +23 -6
  156. package/dist/shields/exhaustion/obligation-flooder.d.ts.map +1 -1
  157. package/dist/shields/exhaustion/obligation-flooder.js +29 -12
  158. package/dist/shields/exhaustion/obligation-flooder.js.map +1 -1
  159. package/dist/shields/exhaustion/rea-budget-matrix.d.ts +8 -2
  160. package/dist/shields/exhaustion/rea-budget-matrix.d.ts.map +1 -1
  161. package/dist/shields/exhaustion/rea-budget-matrix.js +139 -16
  162. package/dist/shields/exhaustion/rea-budget-matrix.js.map +1 -1
  163. package/dist/shields/exhaustion/regex-worker-tarpit.d.ts.map +1 -1
  164. package/dist/shields/exhaustion/regex-worker-tarpit.js +2 -1
  165. package/dist/shields/exhaustion/regex-worker-tarpit.js.map +1 -1
  166. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts +7 -4
  167. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts.map +1 -1
  168. package/dist/shields/exhaustion/wasm-interface-exhaustion.js +16 -7
  169. package/dist/shields/exhaustion/wasm-interface-exhaustion.js.map +1 -1
  170. package/dist/shields/formats/android-dex-xref.d.ts +19 -0
  171. package/dist/shields/formats/android-dex-xref.d.ts.map +1 -0
  172. package/dist/shields/formats/android-dex-xref.js +427 -0
  173. package/dist/shields/formats/android-dex-xref.js.map +1 -0
  174. package/dist/shields/formats/android-manifest.d.ts +44 -0
  175. package/dist/shields/formats/android-manifest.d.ts.map +1 -0
  176. package/dist/shields/formats/android-manifest.js +240 -0
  177. package/dist/shields/formats/android-manifest.js.map +1 -0
  178. package/dist/shields/formats/android-r8.d.ts +44 -0
  179. package/dist/shields/formats/android-r8.d.ts.map +1 -0
  180. package/dist/shields/formats/android-r8.js +246 -0
  181. package/dist/shields/formats/android-r8.js.map +1 -0
  182. package/dist/shields/formats/apple-plist.d.ts +15 -0
  183. package/dist/shields/formats/apple-plist.d.ts.map +1 -1
  184. package/dist/shields/formats/apple-plist.js +59 -1
  185. package/dist/shields/formats/apple-plist.js.map +1 -1
  186. package/dist/shields/formats/archive.d.ts +27 -6
  187. package/dist/shields/formats/archive.d.ts.map +1 -1
  188. package/dist/shields/formats/archive.js +247 -45
  189. package/dist/shields/formats/archive.js.map +1 -1
  190. package/dist/shields/formats/asar.d.ts +50 -10
  191. package/dist/shields/formats/asar.d.ts.map +1 -1
  192. package/dist/shields/formats/asar.js +265 -39
  193. package/dist/shields/formats/asar.js.map +1 -1
  194. package/dist/shields/formats/bun-standalone.d.ts +78 -0
  195. package/dist/shields/formats/bun-standalone.d.ts.map +1 -0
  196. package/dist/shields/formats/bun-standalone.js +272 -0
  197. package/dist/shields/formats/bun-standalone.js.map +1 -0
  198. package/dist/shields/formats/dotnet-managed.d.ts +9 -0
  199. package/dist/shields/formats/dotnet-managed.d.ts.map +1 -1
  200. package/dist/shields/formats/dotnet-managed.js +26 -1
  201. package/dist/shields/formats/dotnet-managed.js.map +1 -1
  202. package/dist/shields/formats/electron-fuses.d.ts +63 -8
  203. package/dist/shields/formats/electron-fuses.d.ts.map +1 -1
  204. package/dist/shields/formats/electron-fuses.js +297 -65
  205. package/dist/shields/formats/electron-fuses.js.map +1 -1
  206. package/dist/shields/formats/erlang-beam.d.ts +34 -0
  207. package/dist/shields/formats/erlang-beam.d.ts.map +1 -0
  208. package/dist/shields/formats/erlang-beam.js +319 -0
  209. package/dist/shields/formats/erlang-beam.js.map +1 -0
  210. package/dist/shields/formats/evm-bytecode.d.ts +28 -0
  211. package/dist/shields/formats/evm-bytecode.d.ts.map +1 -0
  212. package/dist/shields/formats/evm-bytecode.js +124 -0
  213. package/dist/shields/formats/evm-bytecode.js.map +1 -0
  214. package/dist/shields/formats/go-flutter-exhaustion.d.ts +55 -0
  215. package/dist/shields/formats/go-flutter-exhaustion.d.ts.map +1 -0
  216. package/dist/shields/formats/go-flutter-exhaustion.js +346 -0
  217. package/dist/shields/formats/go-flutter-exhaustion.js.map +1 -0
  218. package/dist/shields/formats/gpu-ptx.d.ts +40 -0
  219. package/dist/shields/formats/gpu-ptx.d.ts.map +1 -0
  220. package/dist/shields/formats/gpu-ptx.js +62 -0
  221. package/dist/shields/formats/gpu-ptx.js.map +1 -0
  222. package/dist/shields/formats/headers.d.ts.map +1 -1
  223. package/dist/shields/formats/headers.js +54 -14
  224. package/dist/shields/formats/headers.js.map +1 -1
  225. package/dist/shields/formats/jvm-bytecode.d.ts +20 -0
  226. package/dist/shields/formats/jvm-bytecode.d.ts.map +1 -0
  227. package/dist/shields/formats/jvm-bytecode.js +134 -0
  228. package/dist/shields/formats/jvm-bytecode.js.map +1 -0
  229. package/dist/shields/formats/mobile-game.d.ts +4 -0
  230. package/dist/shields/formats/mobile-game.d.ts.map +1 -1
  231. package/dist/shields/formats/mobile-game.js +16 -0
  232. package/dist/shields/formats/mobile-game.js.map +1 -1
  233. package/dist/shields/formats/model.d.ts +22 -8
  234. package/dist/shields/formats/model.d.ts.map +1 -1
  235. package/dist/shields/formats/model.js +231 -59
  236. package/dist/shields/formats/model.js.map +1 -1
  237. package/dist/shields/formats/native.d.ts +74 -11
  238. package/dist/shields/formats/native.d.ts.map +1 -1
  239. package/dist/shields/formats/native.js +557 -109
  240. package/dist/shields/formats/native.js.map +1 -1
  241. package/dist/shields/formats/pcap-capture.d.ts +27 -0
  242. package/dist/shields/formats/pcap-capture.d.ts.map +1 -0
  243. package/dist/shields/formats/pcap-capture.js +201 -0
  244. package/dist/shields/formats/pcap-capture.js.map +1 -0
  245. package/dist/shields/formats/python.d.ts +22 -1
  246. package/dist/shields/formats/python.d.ts.map +1 -1
  247. package/dist/shields/formats/python.js +568 -27
  248. package/dist/shields/formats/python.js.map +1 -1
  249. package/dist/shields/formats/sourcemap.d.ts.map +1 -1
  250. package/dist/shields/formats/sourcemap.js +2 -0
  251. package/dist/shields/formats/sourcemap.js.map +1 -1
  252. package/dist/shields/formats/sqlite.d.ts +87 -15
  253. package/dist/shields/formats/sqlite.d.ts.map +1 -1
  254. package/dist/shields/formats/sqlite.js +377 -42
  255. package/dist/shields/formats/sqlite.js.map +1 -1
  256. package/dist/shields/formats/wasm.d.ts +6 -0
  257. package/dist/shields/formats/wasm.d.ts.map +1 -1
  258. package/dist/shields/formats/wasm.js +118 -3
  259. package/dist/shields/formats/wasm.js.map +1 -1
  260. package/dist/shields/javascript/ast-shield.d.ts +26 -5
  261. package/dist/shields/javascript/ast-shield.d.ts.map +1 -1
  262. package/dist/shields/javascript/ast-shield.js +748 -104
  263. package/dist/shields/javascript/ast-shield.js.map +1 -1
  264. package/dist/shields/runtime/memory-diff-shield.d.ts +56 -0
  265. package/dist/shields/runtime/memory-diff-shield.d.ts.map +1 -0
  266. package/dist/shields/runtime/memory-diff-shield.js +170 -0
  267. package/dist/shields/runtime/memory-diff-shield.js.map +1 -0
  268. package/dist/shields/runtime/runtime-shield.d.ts +12 -16
  269. package/dist/shields/runtime/runtime-shield.d.ts.map +1 -1
  270. package/dist/shields/runtime/runtime-shield.js +30 -24
  271. package/dist/shields/runtime/runtime-shield.js.map +1 -1
  272. package/dist/shields/tarpit/opaque-predicates.d.ts.map +1 -1
  273. package/dist/shields/tarpit/opaque-predicates.js +3 -3
  274. package/dist/shields/tarpit/opaque-predicates.js.map +1 -1
  275. package/dist/shields/tarpit/tarpit-generator.d.ts +9 -4
  276. package/dist/shields/tarpit/tarpit-generator.d.ts.map +1 -1
  277. package/dist/shields/tarpit/tarpit-generator.js +30 -23
  278. package/dist/shields/tarpit/tarpit-generator.js.map +1 -1
  279. package/package.json +13 -6
@@ -1,32 +1,72 @@
1
+ export declare class UnsupportedAsarError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export interface AsarFileIntegrity {
5
+ readonly algorithm: "SHA256";
6
+ readonly hash: string;
7
+ readonly blockSize: number;
8
+ readonly blocks: readonly string[];
9
+ }
1
10
  export interface AsarFileEntry {
2
11
  readonly offset: string;
3
12
  readonly size: number;
4
13
  readonly unpacked?: boolean;
5
14
  readonly executable?: boolean;
6
- readonly integrity?: {
7
- readonly algorithm: "SHA256";
8
- readonly hash: string;
9
- readonly blockSize: number;
10
- readonly blocks: readonly string[];
11
- };
15
+ readonly integrity?: AsarFileIntegrity;
16
+ }
17
+ export interface AsarUnpackedFileNode {
18
+ readonly size: number;
19
+ readonly unpacked: true;
20
+ readonly executable?: boolean;
21
+ readonly integrity?: AsarFileIntegrity;
22
+ }
23
+ export interface AsarLinkNode {
24
+ readonly link: string;
12
25
  }
13
26
  export interface AsarDirectoryNode {
14
- readonly files: Record<string, AsarNode>;
27
+ readonly files: Record<string, AsarHeaderNode>;
15
28
  }
16
- export type AsarNode = AsarFileEntry | AsarDirectoryNode;
29
+ export type AsarHeaderNode = AsarFileEntry | AsarUnpackedFileNode | AsarLinkNode | AsarDirectoryNode;
30
+ export type AsarNode = AsarHeaderNode;
17
31
  export interface VirtualAsarFile {
18
32
  readonly relativePath: string;
19
33
  readonly content: Buffer;
20
34
  readonly executable?: boolean;
35
+ readonly unpacked?: boolean;
36
+ readonly link?: string;
37
+ readonly size?: number;
38
+ }
39
+ export interface AsarValidationOptions {
40
+ readonly allowUnpacked?: boolean;
41
+ readonly allowLinks?: boolean;
42
+ readonly rejectUnpacked?: boolean;
43
+ readonly rejectLinks?: boolean;
21
44
  }
22
45
  /**
23
46
  * Unpacks an Electron `.asar` archive buffer into an in-memory array of virtual files.
24
47
  * Follows Chromium Pickle framing used by `@electron/asar` and `morluto/rea`.
48
+ * Strictly validates node shapes, offsets, sizes, bounds, unpacked entries, and link targets.
49
+ */
50
+ export declare function unpackAsarBuffer(asarBytes: Buffer, options?: AsarValidationOptions): readonly VirtualAsarFile[];
51
+ /**
52
+ * Validates an ASAR archive buffer and returns its virtual entries.
53
+ */
54
+ export declare function validateAsarBuffer(bytes: Buffer, options?: {
55
+ readonly allowUnpacked?: boolean;
56
+ readonly allowLinks?: boolean;
57
+ }): readonly VirtualAsarFile[];
58
+ /**
59
+ * Validates an ASAR archive before standalone protection.
60
+ * Fails closed (`UnsupportedAsarError`) when the archive contains external `unpacked: true`
61
+ * entries unless `allowUnpacked: true` (companion `.asar.unpacked` synchronization) is enabled.
25
62
  */
26
- export declare function unpackAsarBuffer(asarBytes: Buffer): readonly VirtualAsarFile[];
63
+ export declare function validateAsarProtectionInput(bytes: Buffer, options?: {
64
+ readonly allowUnpacked?: boolean;
65
+ readonly allowLinks?: boolean;
66
+ }): readonly VirtualAsarFile[];
27
67
  /**
28
68
  * Packs an array of virtual files into a valid Electron `.asar` archive buffer
29
- * with full SHA-256 block integrity metadata.
69
+ * with full SHA-256 block integrity metadata, preserving `executable`, `unpacked`, and `link` nodes.
30
70
  */
31
71
  export declare function packAsarBuffer(files: readonly VirtualAsarFile[]): Buffer;
32
72
  //# sourceMappingURL=asar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asar.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/asar.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AA2BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CA4C9E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CA8CxE"}
1
+ {"version":3,"file":"asar.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/asar.ts"],"names":[],"mappings":"AAGA,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,cAAc,GACtB,aAAa,GACb,oBAAoB,GACpB,YAAY,GACZ,iBAAiB,CAAC;AAEtB,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEtC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AA4GD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,qBAA0B,GAClC,SAAS,eAAe,EAAE,CAkM5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAChF,SAAS,eAAe,EAAE,CAK5B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAChF,SAAS,eAAe,EAAE,CAK5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAmFxE"}
@@ -1,7 +1,76 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { posix } from "node:path";
3
+ export class UnsupportedAsarError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "UnsupportedAsarError";
7
+ }
8
+ }
2
9
  const ASAR_BLOCK_SIZE = 4 * 1024 * 1024;
10
+ const ALLOWED_NODE_KEYS = new Set([
11
+ "files",
12
+ "link",
13
+ "size",
14
+ "offset",
15
+ "unpacked",
16
+ "executable",
17
+ "integrity",
18
+ ]);
19
+ function isPlainObject(value) {
20
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
21
+ return false;
22
+ }
23
+ const proto = Object.getPrototypeOf(value);
24
+ return proto === Object.prototype || proto === null;
25
+ }
3
26
  function isDirectoryNode(node) {
4
- return typeof node.files === "object" && node.files !== null;
27
+ return isPlainObject(node) && isPlainObject(node.files);
28
+ }
29
+ function validateEntrySegment(segment) {
30
+ if (segment.length === 0 ||
31
+ segment === "." ||
32
+ segment === ".." ||
33
+ segment.includes("/") ||
34
+ segment.includes("\\") ||
35
+ segment.includes("\0")) {
36
+ throw new UnsupportedAsarError(`Invalid ASAR path segment: ${JSON.stringify(segment)}`);
37
+ }
38
+ }
39
+ function validateRelativeLinkTarget(relativePath, linkTarget) {
40
+ if (typeof linkTarget !== "string" ||
41
+ linkTarget.length === 0 ||
42
+ linkTarget.includes("\0") ||
43
+ linkTarget.includes("\\") ||
44
+ posix.isAbsolute(linkTarget)) {
45
+ throw new UnsupportedAsarError(`Invalid or absolute ASAR link target at ${relativePath}: ${String(linkTarget)}`);
46
+ }
47
+ const parentSegments = relativePath.split("/").slice(0, -1).filter(Boolean);
48
+ let depth = parentSegments.length;
49
+ const targetSegments = linkTarget.split("/");
50
+ for (const seg of targetSegments) {
51
+ if (seg === "" || seg === ".") {
52
+ continue;
53
+ }
54
+ if (seg === "..") {
55
+ depth -= 1;
56
+ if (depth < 0) {
57
+ throw new UnsupportedAsarError(`Escaping ASAR link target at ${relativePath}: ${linkTarget}`);
58
+ }
59
+ }
60
+ else {
61
+ depth += 1;
62
+ }
63
+ }
64
+ const parentDir = posix.dirname(relativePath);
65
+ const resolved = posix.normalize(parentDir === "." ? linkTarget : posix.join(parentDir, linkTarget));
66
+ if (resolved === "" ||
67
+ resolved === "." ||
68
+ resolved === ".." ||
69
+ resolved.startsWith("../") ||
70
+ resolved.startsWith("/")) {
71
+ throw new UnsupportedAsarError(`Escaping or invalid ASAR link target at ${relativePath}: ${linkTarget}`);
72
+ }
73
+ return linkTarget;
5
74
  }
6
75
  function computeAsarIntegrity(content) {
7
76
  const hash = createHash("sha256").update(content).digest("hex");
@@ -25,72 +94,229 @@ function computeAsarIntegrity(content) {
25
94
  /**
26
95
  * Unpacks an Electron `.asar` archive buffer into an in-memory array of virtual files.
27
96
  * Follows Chromium Pickle framing used by `@electron/asar` and `morluto/rea`.
97
+ * Strictly validates node shapes, offsets, sizes, bounds, unpacked entries, and link targets.
28
98
  */
29
- export function unpackAsarBuffer(asarBytes) {
99
+ export function unpackAsarBuffer(asarBytes, options = {}) {
30
100
  if (asarBytes.length < 16) {
31
- throw new Error("Invalid ASAR archive: buffer shorter than 16-byte pickle header");
101
+ throw new UnsupportedAsarError("Invalid ASAR archive: buffer shorter than 16-byte pickle header");
32
102
  }
33
103
  const sizePicklePayload = asarBytes.readUInt32LE(0);
34
104
  if (sizePicklePayload !== 4) {
35
- throw new Error(`Invalid ASAR header: expected outer pickle payload size 4, got ${sizePicklePayload}`);
105
+ throw new UnsupportedAsarError(`Invalid ASAR header: expected outer pickle payload size 4, got ${sizePicklePayload}`);
36
106
  }
37
107
  const headerSize = asarBytes.readUInt32LE(4);
108
+ const innerPickleSize = asarBytes.readUInt32LE(8);
38
109
  const jsonStringSize = asarBytes.readUInt32LE(12);
39
110
  const dataOffsetBase = 8 + headerSize;
40
- if (16 + jsonStringSize > asarBytes.length || dataOffsetBase > asarBytes.length) {
41
- throw new Error("Invalid ASAR archive: header exceeds buffer bounds");
111
+ if (headerSize < 8 ||
112
+ innerPickleSize < 4 ||
113
+ jsonStringSize === 0 ||
114
+ 16 + jsonStringSize > dataOffsetBase ||
115
+ 16 + jsonStringSize > asarBytes.length ||
116
+ dataOffsetBase > asarBytes.length) {
117
+ throw new UnsupportedAsarError("Invalid ASAR archive: header exceeds buffer bounds");
42
118
  }
43
119
  const headerJson = asarBytes.subarray(16, 16 + jsonStringSize).toString("utf8");
44
- const root = JSON.parse(headerJson);
120
+ let rootRaw;
121
+ try {
122
+ rootRaw = JSON.parse(headerJson);
123
+ }
124
+ catch {
125
+ throw new UnsupportedAsarError("Invalid ASAR archive: malformed JSON header");
126
+ }
127
+ if (!isPlainObject(rootRaw) ||
128
+ !isPlainObject(rootRaw.files) ||
129
+ "size" in rootRaw ||
130
+ "offset" in rootRaw ||
131
+ "link" in rootRaw ||
132
+ "unpacked" in rootRaw) {
133
+ throw new UnsupportedAsarError("Invalid ASAR archive: root must be a directory node");
134
+ }
135
+ const rejectUnpacked = options.rejectUnpacked === true || options.allowUnpacked === false;
136
+ const rejectLinks = options.rejectLinks === true || options.allowLinks === false;
45
137
  const files = [];
46
- const walk = (node, prefix) => {
47
- if (isDirectoryNode(node)) {
48
- for (const [name, child] of Object.entries(node.files)) {
49
- const nextPath = prefix ? `${prefix}/${name}` : name;
50
- walk(child, nextPath);
138
+ const walkDirectory = (dirFiles, prefix) => {
139
+ for (const [name, child] of Object.entries(dirFiles)) {
140
+ validateEntrySegment(name);
141
+ const nextPath = prefix ? `${prefix}/${name}` : name;
142
+ if (!isPlainObject(child)) {
143
+ throw new UnsupportedAsarError(`Malformed ASAR node at ${nextPath}`);
51
144
  }
52
- return;
53
- }
54
- if (node.unpacked)
55
- return;
56
- const offset = Number.parseInt(node.offset, 10);
57
- const start = dataOffsetBase + offset;
58
- const end = start + node.size;
59
- if (start < dataOffsetBase || end > asarBytes.length) {
60
- throw new Error(`Invalid ASAR file entry bounds for ${prefix}`);
145
+ const childKeys = Object.keys(child);
146
+ if (childKeys.length === 0) {
147
+ throw new UnsupportedAsarError(`Empty ASAR node at ${nextPath}`);
148
+ }
149
+ for (const k of childKeys) {
150
+ if (!ALLOWED_NODE_KEYS.has(k)) {
151
+ throw new UnsupportedAsarError(`Unknown or unsupported ASAR node property '${k}' at ${nextPath}`);
152
+ }
153
+ }
154
+ const hasFiles = child.files !== undefined;
155
+ const hasLink = child.link !== undefined;
156
+ const hasSize = child.size !== undefined;
157
+ const hasOffset = child.offset !== undefined;
158
+ const isUnpacked = child.unpacked === true;
159
+ if (hasFiles) {
160
+ if (!isPlainObject(child.files) ||
161
+ hasLink ||
162
+ hasSize ||
163
+ hasOffset ||
164
+ child.unpacked !== undefined ||
165
+ child.executable !== undefined) {
166
+ throw new UnsupportedAsarError(`Malformed ASAR directory node at ${nextPath}`);
167
+ }
168
+ walkDirectory(child.files, nextPath);
169
+ continue;
170
+ }
171
+ if (hasLink) {
172
+ if (hasSize || hasOffset || child.unpacked !== undefined || child.executable !== undefined) {
173
+ throw new UnsupportedAsarError(`Conflicting ASAR link node properties at ${nextPath}`);
174
+ }
175
+ const validatedLink = validateRelativeLinkTarget(nextPath, child.link);
176
+ if (rejectLinks) {
177
+ throw new UnsupportedAsarError(`ASAR link node at ${nextPath} requires link-preserving pipeline`);
178
+ }
179
+ files.push({
180
+ relativePath: nextPath,
181
+ content: Buffer.alloc(0),
182
+ link: validatedLink,
183
+ });
184
+ continue;
185
+ }
186
+ if (child.executable !== undefined && typeof child.executable !== "boolean") {
187
+ throw new UnsupportedAsarError(`Invalid ASAR executable flag at ${nextPath}`);
188
+ }
189
+ if (isUnpacked) {
190
+ if (typeof child.size !== "number" ||
191
+ !Number.isSafeInteger(child.size) ||
192
+ child.size < 0) {
193
+ throw new UnsupportedAsarError(`Invalid ASAR unpacked file size at ${nextPath}`);
194
+ }
195
+ if (rejectUnpacked) {
196
+ throw new UnsupportedAsarError(`ASAR unpacked node at ${nextPath} requires companion .asar.unpacked directory preservation`);
197
+ }
198
+ files.push({
199
+ relativePath: nextPath,
200
+ content: Buffer.alloc(0),
201
+ unpacked: true,
202
+ size: child.size,
203
+ ...(child.executable ? { executable: true } : {}),
204
+ });
205
+ continue;
206
+ }
207
+ if (child.unpacked !== undefined && child.unpacked !== false) {
208
+ throw new UnsupportedAsarError(`Invalid ASAR unpacked property at ${nextPath}`);
209
+ }
210
+ if (typeof child.size !== "number" ||
211
+ !Number.isSafeInteger(child.size) ||
212
+ child.size < 0) {
213
+ throw new UnsupportedAsarError(`Invalid ASAR file size at ${nextPath}: ${String(child.size)}`);
214
+ }
215
+ if (typeof child.offset !== "string" ||
216
+ !/^(0|[1-9]\d*)$/.test(child.offset)) {
217
+ throw new UnsupportedAsarError(`Invalid ASAR file offset at ${nextPath}: ${String(child.offset)}`);
218
+ }
219
+ const offset = Number(child.offset);
220
+ if (!Number.isSafeInteger(offset) || offset < 0) {
221
+ throw new UnsupportedAsarError(`Unsafe ASAR file offset at ${nextPath}: ${child.offset}`);
222
+ }
223
+ const start = dataOffsetBase + offset;
224
+ const end = start + child.size;
225
+ if (!Number.isSafeInteger(start) ||
226
+ !Number.isSafeInteger(end) ||
227
+ start < dataOffsetBase ||
228
+ end < start ||
229
+ end > asarBytes.length) {
230
+ throw new UnsupportedAsarError(`ASAR file offset/size out of bounds for ${nextPath}`);
231
+ }
232
+ files.push({
233
+ relativePath: nextPath,
234
+ content: Buffer.from(asarBytes.subarray(start, end)),
235
+ size: child.size,
236
+ ...(child.executable ? { executable: true } : {}),
237
+ });
61
238
  }
62
- files.push({
63
- relativePath: prefix,
64
- content: Buffer.from(asarBytes.subarray(start, end)),
65
- ...(node.executable ? { executable: true } : {}),
66
- });
67
239
  };
68
- walk(root, "");
240
+ walkDirectory(rootRaw.files, "");
69
241
  return files;
70
242
  }
243
+ /**
244
+ * Validates an ASAR archive buffer and returns its virtual entries.
245
+ */
246
+ export function validateAsarBuffer(bytes, options = {}) {
247
+ return unpackAsarBuffer(bytes, {
248
+ rejectUnpacked: options.allowUnpacked === false,
249
+ rejectLinks: options.allowLinks === false,
250
+ });
251
+ }
252
+ /**
253
+ * Validates an ASAR archive before standalone protection.
254
+ * Fails closed (`UnsupportedAsarError`) when the archive contains external `unpacked: true`
255
+ * entries unless `allowUnpacked: true` (companion `.asar.unpacked` synchronization) is enabled.
256
+ */
257
+ export function validateAsarProtectionInput(bytes, options = {}) {
258
+ return unpackAsarBuffer(bytes, {
259
+ rejectUnpacked: options.allowUnpacked !== true,
260
+ rejectLinks: options.allowLinks === false,
261
+ });
262
+ }
71
263
  /**
72
264
  * Packs an array of virtual files into a valid Electron `.asar` archive buffer
73
- * with full SHA-256 block integrity metadata.
265
+ * with full SHA-256 block integrity metadata, preserving `executable`, `unpacked`, and `link` nodes.
74
266
  */
75
267
  export function packAsarBuffer(files) {
76
268
  const root = { files: {} };
77
269
  const payloadChunks = [];
78
270
  let currentOffset = 0;
79
271
  for (const file of files) {
80
- const segments = file.relativePath.replace(/^\/+/, "").split("/").filter(Boolean);
81
- if (segments.length === 0)
272
+ if (file.relativePath.includes("\\") || file.relativePath.includes("\0")) {
273
+ throw new UnsupportedAsarError(`Invalid ASAR file relativePath: ${file.relativePath}`);
274
+ }
275
+ const rawSegments = file.relativePath.replace(/^\/+/, "").split("/");
276
+ if (rawSegments.length === 0 || (rawSegments.length === 1 && rawSegments[0] === "")) {
82
277
  continue;
278
+ }
279
+ for (const seg of rawSegments) {
280
+ validateEntrySegment(seg);
281
+ }
282
+ const normalizedPath = rawSegments.join("/");
83
283
  let currentDir = root;
84
- for (let i = 0; i < segments.length - 1; i++) {
85
- const seg = segments[i];
86
- let existing = currentDir.files[seg];
87
- if (!existing || !isDirectoryNode(existing)) {
88
- existing = { files: {} };
89
- currentDir.files[seg] = existing;
90
- }
91
- currentDir = existing;
284
+ for (let i = 0; i < rawSegments.length - 1; i++) {
285
+ const seg = rawSegments[i];
286
+ const existing = currentDir.files[seg];
287
+ if (!existing) {
288
+ const nextDir = { files: {} };
289
+ currentDir.files[seg] = nextDir;
290
+ currentDir = nextDir;
291
+ }
292
+ else if (isDirectoryNode(existing)) {
293
+ currentDir = existing;
294
+ }
295
+ else {
296
+ throw new UnsupportedAsarError(`ASAR path conflict at ${seg}: cannot create directory over non-directory entry`);
297
+ }
298
+ }
299
+ const leafName = rawSegments[rawSegments.length - 1];
300
+ if (file.link !== undefined) {
301
+ const validatedLink = validateRelativeLinkTarget(normalizedPath, file.link);
302
+ currentDir.files[leafName] = {
303
+ link: validatedLink,
304
+ };
305
+ continue;
306
+ }
307
+ if (file.unpacked === true) {
308
+ const unpackedSize = file.size !== undefined ? file.size : file.content.length;
309
+ if (!Number.isSafeInteger(unpackedSize) || unpackedSize < 0) {
310
+ throw new UnsupportedAsarError(`Invalid unpacked file size for ${normalizedPath}`);
311
+ }
312
+ currentDir.files[leafName] = {
313
+ size: unpackedSize,
314
+ unpacked: true,
315
+ ...(file.executable ? { executable: true } : {}),
316
+ ...(file.content.length > 0 ? { integrity: computeAsarIntegrity(file.content) } : {}),
317
+ };
318
+ continue;
92
319
  }
93
- const leafName = segments[segments.length - 1];
94
320
  currentDir.files[leafName] = {
95
321
  offset: String(currentOffset),
96
322
  size: file.content.length,
@@ -1 +1 @@
1
- {"version":3,"file":"asar.js","sourceRoot":"","sources":["../../../src/shields/formats/asar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asar.js","sourceRoot":"","sources":["../../../src/shields/formats/asar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { SeededPrng } from "../../core/prng.js";
2
+ import type { ProtectionIntensity } from "../../core/types.js";
3
+ /**
4
+ * Bun standalone executable (`bun build --compile`) support — counters REA
5
+ * #6998 (`BunStandaloneArtifactReader` / `BunModuleGraphLayout`), which
6
+ * inventories and extracts the embedded `/$bunfs/` module graph from Mach-O
7
+ * `__BUN,__bun`, PE/ELF `.bun` sections and the appended EOF trailer.
8
+ *
9
+ * Two halves:
10
+ * 1. Red-line guard: Bun locates an appended graph relative to EOF at
11
+ * runtime, so anything appended after `\n---- Bun! ----\n` (or after its
12
+ * 8-byte total-size footer) would break the developer's real program.
13
+ * `detectBunStandaloneGraph` lets the native shield refuse to append.
14
+ * 2. Deception: `generateBunStandaloneDecoyGraph` emits a byte-exact,
15
+ * REA-admissible Bun 1.3.9 (52-byte record) module graph whose modules
16
+ * are canary / diagnostic / cognitive-armor honeypots, with deep virtual
17
+ * names past REA's 256-part logical-path allowance, unsafe and duplicate
18
+ * names, non-UTF-8 names, unknown loader discriminants and decoy
19
+ * sourcemap / bytecode / module-info regions.
20
+ */
21
+ export declare const BUN_TRAILER: Buffer<ArrayBuffer>;
22
+ export type BunCarrierDetection = {
23
+ readonly kind: "none";
24
+ } | {
25
+ readonly kind: "appended-trailer" | "appended-trailer-sized";
26
+ /** Byte offset where the graph payload begins. */
27
+ readonly payloadOffset: number;
28
+ readonly payloadLength: number;
29
+ } | {
30
+ readonly kind: "embedded-sentinel";
31
+ readonly sentinelOffset: number;
32
+ };
33
+ /**
34
+ * Cheap, allocation-free detection mirroring REA's appended-trailer probe.
35
+ * `embedded-sentinel` means a section-carried graph (or a bare sentinel) —
36
+ * EOF appends do not move it, but callers should still report it.
37
+ */
38
+ export declare function detectBunStandaloneGraph(bytes: Buffer): BunCarrierDetection;
39
+ export interface BunDecoyModule {
40
+ readonly name: Buffer;
41
+ readonly contents: Buffer;
42
+ readonly sourcemap?: Buffer;
43
+ readonly bytecode?: Buffer;
44
+ readonly moduleInfo?: Buffer;
45
+ readonly bytecodeOrigin?: Buffer;
46
+ readonly encoding: number;
47
+ readonly loader: number;
48
+ readonly moduleFormat: number;
49
+ readonly side: number;
50
+ }
51
+ export interface BunDecoyGraphResult {
52
+ /** Complete appended-trailer graph: data ‖ Offsets(32) ‖ trailer(16). */
53
+ readonly buffer: Buffer;
54
+ readonly moduleCount: number;
55
+ readonly entryPointId: number;
56
+ readonly deepNameModules: number;
57
+ readonly unsafeNameModules: number;
58
+ readonly duplicateNameModules: number;
59
+ readonly nonUtf8NameModules: number;
60
+ readonly unknownLoaderModules: number;
61
+ readonly canaryTokensEmbedded: number;
62
+ readonly diagnosticsEmbedded: number;
63
+ readonly chaffPayloadsEmbedded: number;
64
+ }
65
+ /** Serialize modules exactly as Bun's StandaloneModuleGraph does (1.3.9+ record). */
66
+ export declare function serializeBunModuleGraph(input: {
67
+ readonly modules: readonly BunDecoyModule[];
68
+ readonly entryPointId: number;
69
+ readonly compileExecArgv: Buffer;
70
+ readonly flags?: number;
71
+ }): Buffer;
72
+ /**
73
+ * Builds a REA-admissible decoy Bun module graph full of honeypot modules.
74
+ * The output is a NEW sidecar artifact; it is never spliced into the
75
+ * developer's real executable.
76
+ */
77
+ export declare function generateBunStandaloneDecoyGraph(prng: SeededPrng, intensity?: ProtectionIntensity): BunDecoyGraphResult;
78
+ //# sourceMappingURL=bun-standalone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-standalone.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/bun-standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK/D;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,WAAW,qBAA8C,CAAC;AAMvE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,wBAAwB,CAAC;IAC7D,kDAAkD;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAsB3E;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AA0BD,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAyDT;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,UAAU,EAChB,SAAS,GAAE,mBAAgC,GAC1C,mBAAmB,CA4IrB"}