bla-agents 0.0.0-stage → 1.5.3

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 (330) hide show
  1. package/.agents/skills/blind-llm-agents/SKILL.md +56 -0
  2. package/.agents/skills/blind-llm-agents/references/counter-rea-matrix.md +28 -0
  3. package/DISCLAIMER.md +28 -0
  4. package/LICENSE +21 -0
  5. package/README.md +246 -2
  6. package/dist/bundler/index.d.ts +117 -0
  7. package/dist/bundler/index.d.ts.map +1 -0
  8. package/dist/bundler/index.js +167 -0
  9. package/dist/bundler/index.js.map +1 -0
  10. package/dist/cli.d.ts +30 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +447 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/core/config.d.ts +54 -0
  15. package/dist/core/config.d.ts.map +1 -0
  16. package/dist/core/config.js +160 -0
  17. package/dist/core/config.js.map +1 -0
  18. package/dist/core/coverage-contract.d.ts +97 -0
  19. package/dist/core/coverage-contract.d.ts.map +1 -0
  20. package/dist/core/coverage-contract.js +164 -0
  21. package/dist/core/coverage-contract.js.map +1 -0
  22. package/dist/core/debug-posture.d.ts +40 -0
  23. package/dist/core/debug-posture.d.ts.map +1 -0
  24. package/dist/core/debug-posture.js +197 -0
  25. package/dist/core/debug-posture.js.map +1 -0
  26. package/dist/core/detector.d.ts +7 -0
  27. package/dist/core/detector.d.ts.map +1 -0
  28. package/dist/core/detector.js +190 -0
  29. package/dist/core/detector.js.map +1 -0
  30. package/dist/core/identifiers.d.ts +32 -0
  31. package/dist/core/identifiers.d.ts.map +1 -0
  32. package/dist/core/identifiers.js +263 -0
  33. package/dist/core/identifiers.js.map +1 -0
  34. package/dist/core/llm-directives.d.ts +12 -0
  35. package/dist/core/llm-directives.d.ts.map +1 -0
  36. package/dist/core/llm-directives.js +23 -0
  37. package/dist/core/llm-directives.js.map +1 -0
  38. package/dist/core/output-path.d.ts +3 -0
  39. package/dist/core/output-path.d.ts.map +1 -0
  40. package/dist/core/output-path.js +51 -0
  41. package/dist/core/output-path.js.map +1 -0
  42. package/dist/core/prng.d.ts +27 -0
  43. package/dist/core/prng.d.ts.map +1 -0
  44. package/dist/core/prng.js +85 -0
  45. package/dist/core/prng.js.map +1 -0
  46. package/dist/core/release-exposure.d.ts +26 -0
  47. package/dist/core/release-exposure.d.ts.map +1 -0
  48. package/dist/core/release-exposure.js +213 -0
  49. package/dist/core/release-exposure.js.map +1 -0
  50. package/dist/core/release-plan.d.ts +68 -0
  51. package/dist/core/release-plan.d.ts.map +1 -0
  52. package/dist/core/release-plan.js +235 -0
  53. package/dist/core/release-plan.js.map +1 -0
  54. package/dist/core/sarif.d.ts +53 -0
  55. package/dist/core/sarif.d.ts.map +1 -0
  56. package/dist/core/sarif.js +91 -0
  57. package/dist/core/sarif.js.map +1 -0
  58. package/dist/core/sqlite-runtime.d.ts +17 -0
  59. package/dist/core/sqlite-runtime.d.ts.map +1 -0
  60. package/dist/core/sqlite-runtime.js +49 -0
  61. package/dist/core/sqlite-runtime.js.map +1 -0
  62. package/dist/core/token-estimator.d.ts +11 -0
  63. package/dist/core/token-estimator.d.ts.map +1 -0
  64. package/dist/core/token-estimator.js +87 -0
  65. package/dist/core/token-estimator.js.map +1 -0
  66. package/dist/core/types.d.ts +159 -0
  67. package/dist/core/types.d.ts.map +1 -0
  68. package/dist/core/types.js +2 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/engine/auditor.d.ts +6 -0
  71. package/dist/engine/auditor.d.ts.map +1 -0
  72. package/dist/engine/auditor.js +977 -0
  73. package/dist/engine/auditor.js.map +1 -0
  74. package/dist/engine/benchmark.d.ts +6 -0
  75. package/dist/engine/benchmark.d.ts.map +1 -0
  76. package/dist/engine/benchmark.js +425 -0
  77. package/dist/engine/benchmark.js.map +1 -0
  78. package/dist/engine/defender.d.ts +57 -0
  79. package/dist/engine/defender.d.ts.map +1 -0
  80. package/dist/engine/defender.js +130 -0
  81. package/dist/engine/defender.js.map +1 -0
  82. package/dist/engine/harden.d.ts +61 -0
  83. package/dist/engine/harden.d.ts.map +1 -0
  84. package/dist/engine/harden.js +292 -0
  85. package/dist/engine/harden.js.map +1 -0
  86. package/dist/engine/protector.d.ts +8 -0
  87. package/dist/engine/protector.d.ts.map +1 -0
  88. package/dist/engine/protector.js +500 -0
  89. package/dist/engine/protector.js.map +1 -0
  90. package/dist/engine/verifier.d.ts +6 -0
  91. package/dist/engine/verifier.d.ts.map +1 -0
  92. package/dist/engine/verifier.js +91 -0
  93. package/dist/engine/verifier.js.map +1 -0
  94. package/dist/identity.d.ts +180 -0
  95. package/dist/identity.d.ts.map +1 -0
  96. package/dist/identity.js +180 -0
  97. package/dist/identity.js.map +1 -0
  98. package/dist/index.d.ts +53 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +53 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/mcp/server.d.ts +81 -0
  103. package/dist/mcp/server.d.ts.map +1 -0
  104. package/dist/mcp/server.js +730 -0
  105. package/dist/mcp/server.js.map +1 -0
  106. package/dist/setup/clients.d.ts +58 -0
  107. package/dist/setup/clients.d.ts.map +1 -0
  108. package/dist/setup/clients.js +1268 -0
  109. package/dist/setup/clients.js.map +1 -0
  110. package/dist/setup/doctor.d.ts +69 -0
  111. package/dist/setup/doctor.d.ts.map +1 -0
  112. package/dist/setup/doctor.js +339 -0
  113. package/dist/setup/doctor.js.map +1 -0
  114. package/dist/setup/setup.d.ts +99 -0
  115. package/dist/setup/setup.d.ts.map +1 -0
  116. package/dist/setup/setup.js +652 -0
  117. package/dist/setup/setup.js.map +1 -0
  118. package/dist/shields/chaff/chaff-generator.d.ts +17 -0
  119. package/dist/shields/chaff/chaff-generator.d.ts.map +1 -0
  120. package/dist/shields/chaff/chaff-generator.js +80 -0
  121. package/dist/shields/chaff/chaff-generator.js.map +1 -0
  122. package/dist/shields/deception/architecture-mirage.d.ts +16 -0
  123. package/dist/shields/deception/architecture-mirage.d.ts.map +1 -0
  124. package/dist/shields/deception/architecture-mirage.js +46 -0
  125. package/dist/shields/deception/architecture-mirage.js.map +1 -0
  126. package/dist/shields/deception/canary-honeypot.d.ts +33 -0
  127. package/dist/shields/deception/canary-honeypot.d.ts.map +1 -0
  128. package/dist/shields/deception/canary-honeypot.js +95 -0
  129. package/dist/shields/deception/canary-honeypot.js.map +1 -0
  130. package/dist/shields/deception/cognitive-armor-trigger.d.ts +43 -0
  131. package/dist/shields/deception/cognitive-armor-trigger.d.ts.map +1 -0
  132. package/dist/shields/deception/cognitive-armor-trigger.js +204 -0
  133. package/dist/shields/deception/cognitive-armor-trigger.js.map +1 -0
  134. package/dist/shields/deception/crash-trace-decoy.d.ts +16 -0
  135. package/dist/shields/deception/crash-trace-decoy.d.ts.map +1 -0
  136. package/dist/shields/deception/crash-trace-decoy.js +36 -0
  137. package/dist/shields/deception/crash-trace-decoy.js.map +1 -0
  138. package/dist/shields/deception/decompiler-illusion.d.ts +15 -0
  139. package/dist/shields/deception/decompiler-illusion.d.ts.map +1 -0
  140. package/dist/shields/deception/decompiler-illusion.js +29 -0
  141. package/dist/shields/deception/decompiler-illusion.js.map +1 -0
  142. package/dist/shields/deception/diff-noise-injector.d.ts +17 -0
  143. package/dist/shields/deception/diff-noise-injector.d.ts.map +1 -0
  144. package/dist/shields/deception/diff-noise-injector.js +29 -0
  145. package/dist/shields/deception/diff-noise-injector.js.map +1 -0
  146. package/dist/shields/deception/evidence-contract-poison.d.ts +25 -0
  147. package/dist/shields/deception/evidence-contract-poison.d.ts.map +1 -0
  148. package/dist/shields/deception/evidence-contract-poison.js +66 -0
  149. package/dist/shields/deception/evidence-contract-poison.js.map +1 -0
  150. package/dist/shields/deception/format-payloads.d.ts +21 -0
  151. package/dist/shields/deception/format-payloads.d.ts.map +1 -0
  152. package/dist/shields/deception/format-payloads.js +24 -0
  153. package/dist/shields/deception/format-payloads.js.map +1 -0
  154. package/dist/shields/deception/index.d.ts +35 -0
  155. package/dist/shields/deception/index.d.ts.map +1 -0
  156. package/dist/shields/deception/index.js +69 -0
  157. package/dist/shields/deception/index.js.map +1 -0
  158. package/dist/shields/deception/prompt-completion-poison.d.ts +19 -0
  159. package/dist/shields/deception/prompt-completion-poison.d.ts.map +1 -0
  160. package/dist/shields/deception/prompt-completion-poison.js +45 -0
  161. package/dist/shields/deception/prompt-completion-poison.js.map +1 -0
  162. package/dist/shields/deception/semantic-honeypot.d.ts +17 -0
  163. package/dist/shields/deception/semantic-honeypot.d.ts.map +1 -0
  164. package/dist/shields/deception/semantic-honeypot.js +45 -0
  165. package/dist/shields/deception/semantic-honeypot.js.map +1 -0
  166. package/dist/shields/deception/shadow-business-logic.d.ts +24 -0
  167. package/dist/shields/deception/shadow-business-logic.d.ts.map +1 -0
  168. package/dist/shields/deception/shadow-business-logic.js +66 -0
  169. package/dist/shields/deception/shadow-business-logic.js.map +1 -0
  170. package/dist/shields/deception/system-diagnostic-decoy.d.ts +36 -0
  171. package/dist/shields/deception/system-diagnostic-decoy.d.ts.map +1 -0
  172. package/dist/shields/deception/system-diagnostic-decoy.js +101 -0
  173. package/dist/shields/deception/system-diagnostic-decoy.js.map +1 -0
  174. package/dist/shields/exhaustion/asar-header-amplifier.d.ts +25 -0
  175. package/dist/shields/exhaustion/asar-header-amplifier.d.ts.map +1 -0
  176. package/dist/shields/exhaustion/asar-header-amplifier.js +59 -0
  177. package/dist/shields/exhaustion/asar-header-amplifier.js.map +1 -0
  178. package/dist/shields/exhaustion/bpe-token-amplifier.d.ts +21 -0
  179. package/dist/shields/exhaustion/bpe-token-amplifier.d.ts.map +1 -0
  180. package/dist/shields/exhaustion/bpe-token-amplifier.js +68 -0
  181. package/dist/shields/exhaustion/bpe-token-amplifier.js.map +1 -0
  182. package/dist/shields/exhaustion/callgraph-labyrinth.d.ts +20 -0
  183. package/dist/shields/exhaustion/callgraph-labyrinth.d.ts.map +1 -0
  184. package/dist/shields/exhaustion/callgraph-labyrinth.js +62 -0
  185. package/dist/shields/exhaustion/callgraph-labyrinth.js.map +1 -0
  186. package/dist/shields/exhaustion/cdp-shape-budget-breaker.d.ts +20 -0
  187. package/dist/shields/exhaustion/cdp-shape-budget-breaker.d.ts.map +1 -0
  188. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js +40 -0
  189. package/dist/shields/exhaustion/cdp-shape-budget-breaker.js.map +1 -0
  190. package/dist/shields/exhaustion/frida-capture-saturation.d.ts +33 -0
  191. package/dist/shields/exhaustion/frida-capture-saturation.d.ts.map +1 -0
  192. package/dist/shields/exhaustion/frida-capture-saturation.js +58 -0
  193. package/dist/shields/exhaustion/frida-capture-saturation.js.map +1 -0
  194. package/dist/shields/exhaustion/index.d.ts +30 -0
  195. package/dist/shields/exhaustion/index.d.ts.map +1 -0
  196. package/dist/shields/exhaustion/index.js +43 -0
  197. package/dist/shields/exhaustion/index.js.map +1 -0
  198. package/dist/shields/exhaustion/obligation-flooder.d.ts +128 -0
  199. package/dist/shields/exhaustion/obligation-flooder.d.ts.map +1 -0
  200. package/dist/shields/exhaustion/obligation-flooder.js +145 -0
  201. package/dist/shields/exhaustion/obligation-flooder.js.map +1 -0
  202. package/dist/shields/exhaustion/rea-budget-matrix.d.ts +54 -0
  203. package/dist/shields/exhaustion/rea-budget-matrix.d.ts.map +1 -0
  204. package/dist/shields/exhaustion/rea-budget-matrix.js +300 -0
  205. package/dist/shields/exhaustion/rea-budget-matrix.js.map +1 -0
  206. package/dist/shields/exhaustion/regex-worker-tarpit.d.ts +23 -0
  207. package/dist/shields/exhaustion/regex-worker-tarpit.d.ts.map +1 -0
  208. package/dist/shields/exhaustion/regex-worker-tarpit.js +43 -0
  209. package/dist/shields/exhaustion/regex-worker-tarpit.js.map +1 -0
  210. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts +26 -0
  211. package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts.map +1 -0
  212. package/dist/shields/exhaustion/wasm-interface-exhaustion.js +59 -0
  213. package/dist/shields/exhaustion/wasm-interface-exhaustion.js.map +1 -0
  214. package/dist/shields/formats/android-dex-xref.d.ts +19 -0
  215. package/dist/shields/formats/android-dex-xref.d.ts.map +1 -0
  216. package/dist/shields/formats/android-dex-xref.js +427 -0
  217. package/dist/shields/formats/android-dex-xref.js.map +1 -0
  218. package/dist/shields/formats/android-manifest.d.ts +44 -0
  219. package/dist/shields/formats/android-manifest.d.ts.map +1 -0
  220. package/dist/shields/formats/android-manifest.js +240 -0
  221. package/dist/shields/formats/android-manifest.js.map +1 -0
  222. package/dist/shields/formats/android-r8.d.ts +44 -0
  223. package/dist/shields/formats/android-r8.d.ts.map +1 -0
  224. package/dist/shields/formats/android-r8.js +246 -0
  225. package/dist/shields/formats/android-r8.js.map +1 -0
  226. package/dist/shields/formats/apple-plist.d.ts +46 -0
  227. package/dist/shields/formats/apple-plist.d.ts.map +1 -0
  228. package/dist/shields/formats/apple-plist.js +119 -0
  229. package/dist/shields/formats/apple-plist.js.map +1 -0
  230. package/dist/shields/formats/archive.d.ts +55 -0
  231. package/dist/shields/formats/archive.d.ts.map +1 -0
  232. package/dist/shields/formats/archive.js +369 -0
  233. package/dist/shields/formats/archive.js.map +1 -0
  234. package/dist/shields/formats/asar.d.ts +72 -0
  235. package/dist/shields/formats/asar.d.ts.map +1 -0
  236. package/dist/shields/formats/asar.js +343 -0
  237. package/dist/shields/formats/asar.js.map +1 -0
  238. package/dist/shields/formats/bun-standalone.d.ts +78 -0
  239. package/dist/shields/formats/bun-standalone.d.ts.map +1 -0
  240. package/dist/shields/formats/bun-standalone.js +272 -0
  241. package/dist/shields/formats/bun-standalone.js.map +1 -0
  242. package/dist/shields/formats/dotnet-managed.d.ts +30 -0
  243. package/dist/shields/formats/dotnet-managed.d.ts.map +1 -0
  244. package/dist/shields/formats/dotnet-managed.js +66 -0
  245. package/dist/shields/formats/dotnet-managed.js.map +1 -0
  246. package/dist/shields/formats/electron-fuses.d.ts +93 -0
  247. package/dist/shields/formats/electron-fuses.d.ts.map +1 -0
  248. package/dist/shields/formats/electron-fuses.js +349 -0
  249. package/dist/shields/formats/electron-fuses.js.map +1 -0
  250. package/dist/shields/formats/erlang-beam.d.ts +34 -0
  251. package/dist/shields/formats/erlang-beam.d.ts.map +1 -0
  252. package/dist/shields/formats/erlang-beam.js +319 -0
  253. package/dist/shields/formats/erlang-beam.js.map +1 -0
  254. package/dist/shields/formats/evm-bytecode.d.ts +28 -0
  255. package/dist/shields/formats/evm-bytecode.d.ts.map +1 -0
  256. package/dist/shields/formats/evm-bytecode.js +124 -0
  257. package/dist/shields/formats/evm-bytecode.js.map +1 -0
  258. package/dist/shields/formats/go-flutter-exhaustion.d.ts +55 -0
  259. package/dist/shields/formats/go-flutter-exhaustion.d.ts.map +1 -0
  260. package/dist/shields/formats/go-flutter-exhaustion.js +346 -0
  261. package/dist/shields/formats/go-flutter-exhaustion.js.map +1 -0
  262. package/dist/shields/formats/gpu-ptx.d.ts +40 -0
  263. package/dist/shields/formats/gpu-ptx.d.ts.map +1 -0
  264. package/dist/shields/formats/gpu-ptx.js +62 -0
  265. package/dist/shields/formats/gpu-ptx.js.map +1 -0
  266. package/dist/shields/formats/headers.d.ts +22 -0
  267. package/dist/shields/formats/headers.d.ts.map +1 -0
  268. package/dist/shields/formats/headers.js +193 -0
  269. package/dist/shields/formats/headers.js.map +1 -0
  270. package/dist/shields/formats/jvm-bytecode.d.ts +20 -0
  271. package/dist/shields/formats/jvm-bytecode.d.ts.map +1 -0
  272. package/dist/shields/formats/jvm-bytecode.js +134 -0
  273. package/dist/shields/formats/jvm-bytecode.js.map +1 -0
  274. package/dist/shields/formats/mobile-game.d.ts +42 -0
  275. package/dist/shields/formats/mobile-game.d.ts.map +1 -0
  276. package/dist/shields/formats/mobile-game.js +131 -0
  277. package/dist/shields/formats/mobile-game.js.map +1 -0
  278. package/dist/shields/formats/model.d.ts +66 -0
  279. package/dist/shields/formats/model.d.ts.map +1 -0
  280. package/dist/shields/formats/model.js +461 -0
  281. package/dist/shields/formats/model.js.map +1 -0
  282. package/dist/shields/formats/native.d.ts +101 -0
  283. package/dist/shields/formats/native.d.ts.map +1 -0
  284. package/dist/shields/formats/native.js +585 -0
  285. package/dist/shields/formats/native.js.map +1 -0
  286. package/dist/shields/formats/pcap-capture.d.ts +27 -0
  287. package/dist/shields/formats/pcap-capture.d.ts.map +1 -0
  288. package/dist/shields/formats/pcap-capture.js +201 -0
  289. package/dist/shields/formats/pcap-capture.js.map +1 -0
  290. package/dist/shields/formats/python.d.ts +62 -0
  291. package/dist/shields/formats/python.d.ts.map +1 -0
  292. package/dist/shields/formats/python.js +637 -0
  293. package/dist/shields/formats/python.js.map +1 -0
  294. package/dist/shields/formats/sourcemap.d.ts +22 -0
  295. package/dist/shields/formats/sourcemap.d.ts.map +1 -0
  296. package/dist/shields/formats/sourcemap.js +66 -0
  297. package/dist/shields/formats/sourcemap.js.map +1 -0
  298. package/dist/shields/formats/sqlite.d.ts +115 -0
  299. package/dist/shields/formats/sqlite.d.ts.map +1 -0
  300. package/dist/shields/formats/sqlite.js +528 -0
  301. package/dist/shields/formats/sqlite.js.map +1 -0
  302. package/dist/shields/formats/wasm.d.ts +38 -0
  303. package/dist/shields/formats/wasm.d.ts.map +1 -0
  304. package/dist/shields/formats/wasm.js +314 -0
  305. package/dist/shields/formats/wasm.js.map +1 -0
  306. package/dist/shields/javascript/ast-shield.d.ts +37 -0
  307. package/dist/shields/javascript/ast-shield.d.ts.map +1 -0
  308. package/dist/shields/javascript/ast-shield.js +645 -0
  309. package/dist/shields/javascript/ast-shield.js.map +1 -0
  310. package/dist/shields/runtime/memory-diff-shield.d.ts +56 -0
  311. package/dist/shields/runtime/memory-diff-shield.d.ts.map +1 -0
  312. package/dist/shields/runtime/memory-diff-shield.js +170 -0
  313. package/dist/shields/runtime/memory-diff-shield.js.map +1 -0
  314. package/dist/shields/runtime/runtime-shield.d.ts +24 -0
  315. package/dist/shields/runtime/runtime-shield.d.ts.map +1 -0
  316. package/dist/shields/runtime/runtime-shield.js +84 -0
  317. package/dist/shields/runtime/runtime-shield.js.map +1 -0
  318. package/dist/shields/tarpit/opaque-predicates.d.ts +10 -0
  319. package/dist/shields/tarpit/opaque-predicates.d.ts.map +1 -0
  320. package/dist/shields/tarpit/opaque-predicates.js +40 -0
  321. package/dist/shields/tarpit/opaque-predicates.js.map +1 -0
  322. package/dist/shields/tarpit/tarpit-generator.d.ts +31 -0
  323. package/dist/shields/tarpit/tarpit-generator.d.ts.map +1 -0
  324. package/dist/shields/tarpit/tarpit-generator.js +194 -0
  325. package/dist/shields/tarpit/tarpit-generator.js.map +1 -0
  326. package/dist/ui/reporter.d.ts +13 -0
  327. package/dist/ui/reporter.d.ts.map +1 -0
  328. package/dist/ui/reporter.js +197 -0
  329. package/dist/ui/reporter.js.map +1 -0
  330. package/package.json +89 -4
@@ -0,0 +1,197 @@
1
+ import { existsSync, readFileSync, statSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ /**
4
+ * Read-only production debug exposure inspector (Issue #19).
5
+ *
6
+ * Inspects authorized local build/deployment configuration files to identify
7
+ * unnecessary debug/inspector entry points (`--inspect`, `--remote-debugging-port`,
8
+ * `com.apple.security.get-task-allow`, `android:debuggable="true"`).
9
+ *
10
+ * Never probes network ports, never attaches to processes, and never claims that
11
+ * client-side JS markers can block Frida/GDB/CDP when the observer holds OS privileges.
12
+ */
13
+ export function inspectProductionDebugPosture(options) {
14
+ const rootDir = resolve(options.targetDir);
15
+ const pkgPath = options.packageJsonPath
16
+ ? resolve(options.packageJsonPath)
17
+ : join(rootDir, "package.json");
18
+ const envPath = options.envFilePath
19
+ ? resolve(options.envFilePath)
20
+ : join(rootDir, ".env.production");
21
+ const entitlementsPath = options.macosEntitlementsPath
22
+ ? resolve(options.macosEntitlementsPath)
23
+ : join(rootDir, "entitlements.plist");
24
+ const androidManifestPath = options.androidManifestPath
25
+ ? resolve(options.androidManifestPath)
26
+ : join(rootDir, "AndroidManifest.xml");
27
+ const checks = [];
28
+ // 1. Node CLI inspector & NODE_OPTIONS check
29
+ {
30
+ const sources = [];
31
+ const exposedFlags = [];
32
+ if (existsSync(pkgPath) && statSync(pkgPath).isFile()) {
33
+ try {
34
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
35
+ if (pkg.scripts && typeof pkg.scripts === "object") {
36
+ for (const [name, cmd] of Object.entries(pkg.scripts)) {
37
+ if (typeof cmd !== "string")
38
+ continue;
39
+ // Focus on production/start/serve/pack scripts or all scripts
40
+ if (/(^|[\s"'])(--inspect(?:-brk|-port)?|ELECTRON_RUN_AS_NODE=1)\b/.test(cmd)) {
41
+ exposedFlags.push(`package.json#scripts.${name}: "${cmd}"`);
42
+ }
43
+ }
44
+ sources.push("package.json#scripts");
45
+ }
46
+ }
47
+ catch {
48
+ // Ignore malformed package.json here; status falls back if no valid sources
49
+ }
50
+ }
51
+ if (existsSync(envPath) && statSync(envPath).isFile()) {
52
+ const envText = readFileSync(envPath, "utf8");
53
+ sources.push(".env.production");
54
+ if (/(--inspect(?:-brk|-port)?|ELECTRON_RUN_AS_NODE\s*=\s*1)/.test(envText)) {
55
+ exposedFlags.push(`.env.production contains inspector/run-as-node directive`);
56
+ }
57
+ }
58
+ const status = exposedFlags.length > 0
59
+ ? "exposed"
60
+ : sources.length > 0
61
+ ? "not-observed"
62
+ : "unknown";
63
+ checks.push({
64
+ id: "node-cli-inspector-exposure",
65
+ platform: "cross-platform",
66
+ status,
67
+ observedConfig: exposedFlags.length > 0
68
+ ? exposedFlags.join("; ")
69
+ : sources.length > 0
70
+ ? `Inspected ${sources.join(", ")}; no --inspect or ELECTRON_RUN_AS_NODE flags found.`
71
+ : "No package.json or .env.production found to verify Node launch flags.",
72
+ restrictedChannel: "Node.js V8 Inspector WebSocket (--inspect / NODE_OPTIONS)",
73
+ remediation: "Remove --inspect, --inspect-brk, and ELECTRON_RUN_AS_NODE=1 from production start scripts and environment files, and disable RunAsNode / EnableNodeCliInspectArguments in Electron fuses.",
74
+ });
75
+ }
76
+ // 2. Chromium / WebView remote debugging port exposure
77
+ {
78
+ const sources = [];
79
+ const exposedFlags = [];
80
+ if (existsSync(pkgPath) && statSync(pkgPath).isFile()) {
81
+ try {
82
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
83
+ if (pkg.scripts && typeof pkg.scripts === "object") {
84
+ for (const [name, cmd] of Object.entries(pkg.scripts)) {
85
+ if (typeof cmd !== "string")
86
+ continue;
87
+ if (/--remote-debugging-(?:port|pipe|address)|--remote-allow-origins/.test(cmd)) {
88
+ exposedFlags.push(`package.json#scripts.${name}: "${cmd}"`);
89
+ }
90
+ }
91
+ sources.push("package.json#scripts");
92
+ }
93
+ }
94
+ catch {
95
+ // Ignore
96
+ }
97
+ }
98
+ const status = exposedFlags.length > 0
99
+ ? "exposed"
100
+ : sources.length > 0
101
+ ? "not-observed"
102
+ : "unknown";
103
+ checks.push({
104
+ id: "chromium-remote-debugging-exposure",
105
+ platform: "cross-platform",
106
+ status,
107
+ observedConfig: exposedFlags.length > 0
108
+ ? exposedFlags.join("; ")
109
+ : sources.length > 0
110
+ ? `Inspected ${sources.join(", ")}; no --remote-debugging-port flags found.`
111
+ : "No launch configuration found to verify Chromium remote debugging flags.",
112
+ restrictedChannel: "Chrome DevTools Protocol (CDP) HTTP/WebSocket endpoint",
113
+ remediation: "Remove --remote-debugging-port and --remote-allow-origins from production launch scripts and BrowserWindow startup switches.",
114
+ });
115
+ }
116
+ // 3. macOS Entitlements / Hardened Runtime debug posture
117
+ {
118
+ if (existsSync(entitlementsPath) && statSync(entitlementsPath).isFile()) {
119
+ const xml = readFileSync(entitlementsPath, "utf8");
120
+ const riskyKeys = [
121
+ "com.apple.security.get-task-allow",
122
+ "com.apple.security.cs.allow-dyld-environment-variables",
123
+ "com.apple.security.cs.disable-library-validation",
124
+ "com.apple.security.cs.allow-unsigned-executable-memory",
125
+ ];
126
+ const enabledKeys = riskyKeys.filter((key) => {
127
+ const regex = new RegExp(`<key>\\s*${key.replace(/\./g, "\\.")}\\s*</key>\\s*<true\\s*/>`, "i");
128
+ return regex.test(xml);
129
+ });
130
+ checks.push({
131
+ id: "macos-entitlements-debug-posture",
132
+ platform: "macos",
133
+ status: enabledKeys.length > 0 ? "exposed" : "not-observed",
134
+ observedConfig: enabledKeys.length > 0
135
+ ? `Enabled debug/injection entitlements in ${entitlementsPath}: ${enabledKeys.join(", ")}`
136
+ : `Inspected ${entitlementsPath}; get-task-allow and dyld injection entitlements are not enabled.`,
137
+ restrictedChannel: "macOS task_for_pid / LLDB / Frida attach & DYLD_INSERT_LIBRARIES",
138
+ remediation: "Set com.apple.security.get-task-allow, allow-dyld-environment-variables, and disable-library-validation to false (or remove them) in production release entitlements with Hardened Runtime enabled.",
139
+ });
140
+ }
141
+ else {
142
+ checks.push({
143
+ id: "macos-entitlements-debug-posture",
144
+ platform: "macos",
145
+ status: "unknown",
146
+ observedConfig: "No macOS entitlements.plist provided or discovered in target directory.",
147
+ restrictedChannel: "macOS task_for_pid / LLDB / Frida attach & DYLD_INSERT_LIBRARIES",
148
+ remediation: "Provide macosEntitlementsPath to verify that com.apple.security.get-task-allow is omitted in release builds.",
149
+ });
150
+ }
151
+ }
152
+ // 4. Android Manifest debuggable posture
153
+ {
154
+ if (existsSync(androidManifestPath) && statSync(androidManifestPath).isFile()) {
155
+ const xml = readFileSync(androidManifestPath, "utf8");
156
+ const isDebuggable = /android:debuggable\s*=\s*["']true["']/i.test(xml);
157
+ checks.push({
158
+ id: "android-manifest-debuggable-posture",
159
+ platform: "android",
160
+ status: isDebuggable ? "exposed" : "not-observed",
161
+ observedConfig: isDebuggable
162
+ ? `android:debuggable="true" observed in ${androidManifestPath}`
163
+ : `Inspected ${androidManifestPath}; android:debuggable="true" is not set.`,
164
+ restrictedChannel: "Android JDWP / run-as / Frida gadget attach on non-rooted devices",
165
+ remediation: "Ensure android:debuggable=\"false\" in release buildTypes in build.gradle / AndroidManifest.xml.",
166
+ });
167
+ }
168
+ else {
169
+ checks.push({
170
+ id: "android-manifest-debuggable-posture",
171
+ platform: "android",
172
+ status: "unknown",
173
+ observedConfig: "No AndroidManifest.xml provided or discovered in target directory.",
174
+ restrictedChannel: "Android JDWP / run-as / Frida gadget attach on non-rooted devices",
175
+ remediation: "Provide androidManifestPath to verify that android:debuggable is false in release builds.",
176
+ });
177
+ }
178
+ }
179
+ const overallPosture = checks.some((c) => c.status === "exposed")
180
+ ? "exposed"
181
+ : checks.some((c) => c.status === "not-observed")
182
+ ? "not-observed"
183
+ : "unknown";
184
+ return {
185
+ targetPath: rootDir,
186
+ overallPosture,
187
+ checks,
188
+ runtimeBoundaryContract: {
189
+ shadowObjectsClassification: "decorative-deception-signal",
190
+ absenceOfRuntimeMarkersImpliesNoDebugger: false,
191
+ blocksFridaOrGdbWithLocalPrivileges: false,
192
+ blocksRuntimeStateRecovery: false,
193
+ secretStorageGuidance: "BLA JavaScript runtime shields cannot guarantee confidentiality of plaintext or decryption keys held by a client process when the observer has OS-level debugging/instrumentation permissions (e.g., Frida, GDB, LLDB, or root/admin access). Keep authoritative access control and long-lived secrets in trusted server or hardware boundaries.",
194
+ },
195
+ };
196
+ }
197
+ //# sourceMappingURL=debug-posture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-posture.js","sourceRoot":"","sources":["../../src/core/debug-posture.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,CAmNvE"}
@@ -0,0 +1,190 @@
1
+ import { statSync, openSync, readSync, closeSync } from "node:fs";
2
+ import { extname } from "node:path";
3
+ /**
4
+ * Format-aware detector that inspects both magic bytes and file extensions
5
+ * to route targets accurately across all 19 REA-supported artifact formats.
6
+ */
7
+ export function detectArtifactFormat(targetPath) {
8
+ let stats;
9
+ try {
10
+ stats = statSync(targetPath);
11
+ }
12
+ catch {
13
+ return "unknown";
14
+ }
15
+ if (stats.isDirectory()) {
16
+ return "directory";
17
+ }
18
+ const ext = extname(targetPath).toLowerCase();
19
+ // Read up to 4096 header bytes for binary magic & CLR metadata inspection
20
+ const header = Buffer.alloc(Math.min(4096, stats.size));
21
+ if (header.length > 0) {
22
+ const fd = openSync(targetPath, "r");
23
+ try {
24
+ readSync(fd, header, 0, header.length, 0);
25
+ }
26
+ finally {
27
+ closeSync(fd);
28
+ }
29
+ }
30
+ // 0. Apple Binary PropertyList (`bplist00` / `bplist01`)
31
+ if (header.length >= 8 &&
32
+ header.subarray(0, 6).toString("latin1") === "bplist") {
33
+ return "apple-plist";
34
+ }
35
+ // 1. SQLite 3 database: `SQLite format 3\0`
36
+ if (header.length >= 16 &&
37
+ header.subarray(0, 16).toString("latin1") === "SQLite format 3\0") {
38
+ return "sqlite";
39
+ }
40
+ // 2. GGUF model artifact: `GGUF` (0x47 0x47 0x55 0x46)
41
+ if (header.length >= 4 &&
42
+ header[0] === 0x47 &&
43
+ header[1] === 0x47 &&
44
+ header[2] === 0x55 &&
45
+ header[3] === 0x46) {
46
+ return "model-gguf";
47
+ }
48
+ // 3. Android Dalvik Executable (`.dex`): `dex\n` (0x64 0x65 0x78 0x0a)
49
+ if (header.length >= 4 &&
50
+ header[0] === 0x64 &&
51
+ header[1] === 0x65 &&
52
+ header[2] === 0x78 &&
53
+ header[3] === 0x0a) {
54
+ return "android-dex";
55
+ }
56
+ // 4. Unity IL2CPP `global-metadata.dat`: magic 0xFAB11BAF (little-endian: AF 1B B1 FA)
57
+ if (header.length >= 4 && header.readUInt32LE(0) === 0xfab11baf) {
58
+ return "il2cpp-metadata";
59
+ }
60
+ // 5. WebAssembly binary: `\0asm` (0x00 0x61 0x73 0x6d)
61
+ if (header.length >= 4 &&
62
+ header[0] === 0x00 &&
63
+ header[1] === 0x61 &&
64
+ header[2] === 0x73 &&
65
+ header[3] === 0x6d) {
66
+ return "wasm";
67
+ }
68
+ // 6. ELF binary: `\x7fELF`
69
+ if (header.length >= 4 &&
70
+ header[0] === 0x7f &&
71
+ header[1] === 0x45 &&
72
+ header[2] === 0x4c &&
73
+ header[3] === 0x46) {
74
+ return "native-elf";
75
+ }
76
+ // 7. JVM `.class` vs Mach-O binary (thin 32/64 BE/LE or fat universal)
77
+ if (header.length >= 4) {
78
+ const magicBE = header.readUInt32BE(0);
79
+ if (magicBE === 0xcafebabe) {
80
+ if (ext === ".class")
81
+ return "jvm-class";
82
+ // In Mach-O universal fat binaries, uint32BE(4) is nfat_arch (1..20).
83
+ // In JVM .class files, uint16BE(4) is minor_version and uint16BE(6) is major_version (>= 45).
84
+ if (header.length >= 8) {
85
+ const nfatOrVersion = header.readUInt32BE(4);
86
+ const majorVersion = header.readUInt16BE(6);
87
+ if (nfatOrVersion > 30 && majorVersion >= 45 && majorVersion <= 90) {
88
+ return "jvm-class";
89
+ }
90
+ }
91
+ return "native-macho";
92
+ }
93
+ if (magicBE === 0xfeedface ||
94
+ magicBE === 0xcefaedfe ||
95
+ magicBE === 0xfeedfacf ||
96
+ magicBE === 0xcffaedfe ||
97
+ magicBE === 0xbebafeca) {
98
+ return "native-macho";
99
+ }
100
+ }
101
+ // 8. PE binary (`MZ`) or .NET Managed CLR assembly (contains `BSJB` metadata root)
102
+ if (header.length >= 2 && header[0] === 0x4d && header[1] === 0x5a) {
103
+ if (header.includes(Buffer.from("BSJB", "ascii"))) {
104
+ return "dotnet-managed";
105
+ }
106
+ return "native-pe";
107
+ }
108
+ // 9. Electron ASAR archive: Pickles header (uint32LE(0) === 4, uint32LE(12) === jsonLen)
109
+ if (ext === ".asar" ||
110
+ (header.length >= 16 &&
111
+ header.readUInt32LE(0) === 4 &&
112
+ header.subarray(16).toString("utf8").trimStart().startsWith('{"files"'))) {
113
+ return "electron-asar";
114
+ }
115
+ // 10. Safetensors model artifact: `.safetensors` or 8-byte uint64 LE header size followed by `{"`
116
+ if (ext === ".safetensors" ||
117
+ (header.length >= 10 &&
118
+ header[8] === 0x7b &&
119
+ header[9] === 0x22 &&
120
+ header.readUInt32LE(4) === 0 &&
121
+ header.readUInt32LE(0) > 2 &&
122
+ header.readUInt32LE(0) < 100_000_000)) {
123
+ return "model-safetensors";
124
+ }
125
+ // 11. ZIP / APK archive: `PK\x03\x04`
126
+ if (header.length >= 4 &&
127
+ header[0] === 0x50 &&
128
+ header[1] === 0x4b &&
129
+ header[2] === 0x03 &&
130
+ header[3] === 0x04) {
131
+ return ext === ".apk" ? "android-apk" : "archive-zip";
132
+ }
133
+ // 12. CPython `.pyc` bytecode (magic bytes 0x0d 0x0a at offset 2..3)
134
+ if (ext === ".pyc" ||
135
+ (header.length >= 16 && header[2] === 0x0d && header[3] === 0x0a)) {
136
+ return "python-pyc";
137
+ }
138
+ // 13. Erlang BEAM IFF: `FOR1....BEAM`
139
+ if (header.length >= 12 &&
140
+ header.subarray(0, 4).toString("latin1") === "FOR1" &&
141
+ header.subarray(8, 12).toString("latin1") === "BEAM") {
142
+ return "erlang-beam";
143
+ }
144
+ // 14. Classic libpcap / pcapng magic
145
+ if (header.length >= 4) {
146
+ const magicLE = header.readUInt32LE(0);
147
+ if (magicLE === 0xa1b2c3d4 ||
148
+ magicLE === 0xa1b23c4d ||
149
+ magicLE === 0xd4c3b2a1) {
150
+ return "pcap-capture";
151
+ }
152
+ // pcapng section header block
153
+ if (magicLE === 0x0a0d0d0a) {
154
+ return "pcap-capture";
155
+ }
156
+ }
157
+ // 15. Extension-based formats
158
+ if ([".js", ".mjs", ".cjs", ".jsx"].includes(ext))
159
+ return "javascript";
160
+ if ([".ts", ".mts", ".cts", ".tsx"].includes(ext))
161
+ return "typescript";
162
+ if (ext === ".map")
163
+ return "sourcemap";
164
+ if ([".html", ".htm"].includes(ext))
165
+ return "html-bundle";
166
+ if ([".py", ".pyw"].includes(ext))
167
+ return "python-source";
168
+ if (ext === ".wasm")
169
+ return "wasm";
170
+ if ([".sqlite", ".sqlite3", ".db"].includes(ext))
171
+ return "sqlite";
172
+ if (ext === ".gguf")
173
+ return "model-gguf";
174
+ if (ext === ".dex")
175
+ return "android-dex";
176
+ if ([".plist", ".entitlements", ".mobileprovision"].includes(ext))
177
+ return "apple-plist";
178
+ if (ext === ".class")
179
+ return "jvm-class";
180
+ if (ext === ".beam")
181
+ return "erlang-beam";
182
+ if ([".evm", ".bin-evm", ".solidity-bin"].includes(ext))
183
+ return "evm-bytecode";
184
+ if ([".pcap", ".pcapng", ".cap"].includes(ext))
185
+ return "pcap-capture";
186
+ if (ext === ".ptx")
187
+ return "gpu-ptx";
188
+ return "unknown";
189
+ }
190
+ //# sourceMappingURL=detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/core/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { SeededPrng } from "./prng.js";
2
+ export type IdentifierStyle = "camel" | "pascal" | "snake" | "privateCamel" | "earlySort";
3
+ export interface RealisticIdentifierOptions {
4
+ readonly style?: IdentifierStyle;
5
+ /** Extra suffix entropy hex length (default 3). */
6
+ readonly entropy?: number;
7
+ /** Optional semantic stem forced into the name (still mixed with vocabulary). */
8
+ readonly hint?: string;
9
+ }
10
+ /**
11
+ * Draw a realistic identifier from a seeded distribution.
12
+ * Guarantees: no `_bla`, `__bla`, `$00_AAA` substring; valid JS/TS/Python ident.
13
+ */
14
+ export declare function realisticIdentifier(prng: SeededPrng, options?: RealisticIdentifierOptions): string;
15
+ /**
16
+ * Draw N unique realistic identifiers (retry on collision within the batch).
17
+ */
18
+ export declare function realisticIdentifierBatch(prng: SeededPrng, count: number, options?: RealisticIdentifierOptions): string[];
19
+ /** Shared honey-table names for SQLite (no `_bla_` prefix; probe looks these up by name). */
20
+ export declare const SQLITE_HONEY_TABLES: Readonly<{
21
+ readonly keyHierarchy: "enclave_key_hierarchy";
22
+ readonly attestationLedger: "tpm2_attestation_ledger";
23
+ readonly sessionLeases: "zero_trust_session_leases";
24
+ readonly canaryTransport: "canary_transport_redaction";
25
+ readonly systemDiagnostic: "system_diagnostic_log";
26
+ readonly activeTopologyView: "v_enclave_active_topology";
27
+ }>;
28
+ export declare const SQLITE_HONEY_TABLE_NAME_SET: ReadonlySet<string>;
29
+ /** Forbidden greppable marker substrings that must NEVER appear in emitted artifacts. */
30
+ export declare const FORBIDDEN_EMITTED_MARKERS: readonly RegExp[];
31
+ export declare function assertNoForbiddenMarkers(emitted: string, context?: string): void;
32
+ //# sourceMappingURL=identifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../src/core/identifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAiL5C,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,QAAQ,GACR,OAAO,GACP,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,0BAA+B,GACvC,MAAM,CAiDR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,0BAA+B,GACvC,MAAM,EAAE,CAeV;AAED,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB;;;;;;;EAOrB,CAAC;AAEZ,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAE3D,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAIrD,CAAC;AAEH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,SAAqB,GAC3B,IAAI,CAQN"}