@jshookmcp/jshook 0.3.0 → 0.3.1

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 (321) hide show
  1. package/README.md +25 -50
  2. package/README.zh.md +25 -48
  3. package/dist/AntiCheatDetector-CGVGNfy5.mjs +1 -0
  4. package/dist/CacheAdapters-CdAxBmVW.mjs +1 -0
  5. package/dist/CodeInjector-BlgyqTOk.mjs +1 -0
  6. package/dist/ConsoleMonitor-Dkqc0HNi.mjs +490 -0
  7. package/dist/DOMInspector-BYY_EJ0C.mjs +95 -0
  8. package/dist/DarwinAPI-DC4HGGLl.mjs +1 -0
  9. package/dist/DetailedDataManager-BniBJlVv.mjs +1 -0
  10. package/dist/EventBus-DgciURGg.mjs +1 -0
  11. package/dist/EvidenceGraphBridge-BIfgB7HP.mjs +1 -0
  12. package/dist/ExtensionManager-erMpqcLk.mjs +1 -0
  13. package/dist/FingerprintManager-N7BZqjxP.mjs +1 -0
  14. package/dist/HardwareBreakpoint-OcJqNFVc.mjs +1 -0
  15. package/dist/HeapAnalyzer-CqAxZzeS.mjs +1 -0
  16. package/dist/{HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs → HookGeneratorBuilders.core.generators.storage-Bf1fbrNK.mjs} +66 -101
  17. package/dist/InstrumentationSession-DxXs0sCp.mjs +1 -0
  18. package/dist/MCPServer.search.handlers.domain-DVbWL1bT.mjs +1 -0
  19. package/dist/MemoryController-BaqstM5w.mjs +2 -0
  20. package/dist/MemoryScanSession-CaxAjZJf.mjs +1 -0
  21. package/dist/MemoryScanner-BLYnMJy6.mjs +1 -0
  22. package/dist/NativeMemoryManager.impl-CI554XbY.mjs +1 -0
  23. package/dist/NativeMemoryManager.utils-DM4NC3FE.mjs +1 -0
  24. package/dist/PEAnalyzer-DJyaJTQJ.mjs +1 -0
  25. package/dist/PageController-D9jVkH0i.mjs +1 -0
  26. package/dist/PointerChainEngine-5nF9eNlu.mjs +1 -0
  27. package/dist/PrerequisiteError-Bl3dK8XA.mjs +1 -0
  28. package/dist/ProcessRegistry-Hf12LlR9.mjs +1 -0
  29. package/dist/ResponseBuilder-B2lu4KEl.mjs +1 -0
  30. package/dist/ReverseEvidenceGraph-B931HeoW.mjs +2 -0
  31. package/dist/ScriptManager-fgqiALgj.mjs +7 -0
  32. package/dist/Speedhack-l6s8L2Qw.mjs +1 -0
  33. package/dist/StealthVerifier-Dhbj4B4P.mjs +1 -0
  34. package/dist/StructureAnalyzer-A-WamfYE.mjs +2 -0
  35. package/dist/ToolCatalog-D_IKl1Hu.mjs +1 -0
  36. package/dist/ToolError-DWU_z7gp.mjs +1 -0
  37. package/dist/ToolProbe-xsfALmN3.mjs +1 -0
  38. package/dist/ToolRegistry-B0Zs-phN.mjs +1 -0
  39. package/dist/ToolRouter.policy-CFHoN_Lw.mjs +4 -0
  40. package/dist/TraceRecorder-Dd8jLXpi.mjs +272 -0
  41. package/dist/VersionDetector-DMoUWyNm.mjs +9 -0
  42. package/dist/Win32API-Bhi5xFBe.mjs +1 -0
  43. package/dist/Win32Debug-CQteFL4F.mjs +1 -0
  44. package/dist/WorkflowEngine-CxEp2WXH.mjs +1 -0
  45. package/dist/analysis-BuR-NgX8.mjs +5 -0
  46. package/dist/{antidebug-BRKeyt27.mjs → antidebug-BOTZH6-0.mjs} +8 -259
  47. package/dist/artifactRetention-NBdncOEW.mjs +1 -0
  48. package/dist/artifacts-B5xQuEa_.mjs +1 -0
  49. package/dist/authorization-schema-B40obG1A.mjs +1 -0
  50. package/dist/betterSqlite3-CGaxz4AX.mjs +1 -0
  51. package/dist/binary-instrument-Cf9qqLlM.mjs +7 -0
  52. package/dist/bind-helpers-BlAOQrFQ.mjs +1 -0
  53. package/dist/boringssl-inspector-BST5vtKx.mjs +2 -0
  54. package/dist/browser-C4Le3xqA.mjs +11 -0
  55. package/dist/capabilities-DbYCv-HF.mjs +1 -0
  56. package/dist/chunk-C_pMuVsO.mjs +1 -0
  57. package/dist/collector-CKO8RPK8.mjs +1 -0
  58. package/dist/concurrency-CcK46d0h.mjs +1 -0
  59. package/dist/constants-Cp6hBrrx.mjs +1 -0
  60. package/dist/coordination-BbijHEHH.mjs +1 -0
  61. package/dist/debugger-CRJq_krh.mjs +1 -0
  62. package/dist/definitions-BGobEDQa.mjs +1 -0
  63. package/dist/definitions-BGwNSkVm.mjs +1 -0
  64. package/dist/definitions-BbxOUiP-.mjs +1 -0
  65. package/dist/definitions-CCP9gphV.mjs +1 -0
  66. package/dist/definitions-CIO9O-Sw.mjs +1 -0
  67. package/dist/definitions-CYFbewnd.mjs +1 -0
  68. package/dist/definitions-CdWEuIkI.mjs +1 -0
  69. package/dist/definitions-CoQFbggH.mjs +1 -0
  70. package/dist/definitions-CuJRsJ6N.mjs +1 -0
  71. package/dist/definitions-DI9YXsJk.mjs +1 -0
  72. package/dist/definitions-DJklW2sS.mjs +1 -0
  73. package/dist/definitions-DZ8uKusP.mjs +1 -0
  74. package/dist/definitions-Dds_zrWx.mjs +1 -0
  75. package/dist/definitions-Dgrg7f3D.mjs +1 -0
  76. package/dist/definitions-DtE0XLrT.mjs +1 -0
  77. package/dist/definitions-LaYTuwQd.mjs +26 -0
  78. package/dist/definitions-NoVp_9Pm.mjs +1 -0
  79. package/dist/definitions-OvGsfxdt.mjs +1 -0
  80. package/dist/definitions-jXPaVy4P.mjs +1 -0
  81. package/dist/encoding-DGcr6Aj_.mjs +2 -0
  82. package/dist/ensure-browser-core-Buls24LQ.mjs +1 -0
  83. package/dist/evidence-graph-bridge-B0yhGPcs.mjs +1 -0
  84. package/dist/factory-Cx_1LorX.mjs +1 -0
  85. package/dist/flat-target-session-CO5g78k3.mjs +1 -0
  86. package/dist/formatAddress-C7j2fDlM.mjs +1 -0
  87. package/dist/graphql-HLf3MS8H.mjs +62 -0
  88. package/dist/handlers-BLMa4X7l.mjs +54 -0
  89. package/dist/handlers-BP12ZsWc.mjs +4 -0
  90. package/dist/handlers-BZoPla6E.mjs +1 -0
  91. package/dist/handlers-BggKiVx9.mjs +2 -0
  92. package/dist/handlers-D3iev8g1.mjs +1 -0
  93. package/dist/handlers-D49r1-1P.mjs +1 -0
  94. package/dist/handlers-DCE45Ww8.mjs +2 -0
  95. package/dist/handlers-DW5AbYs5.mjs +5 -0
  96. package/dist/handlers-De5u62Ga2.mjs +1 -0
  97. package/dist/handlers-DmQzIc44.mjs +31 -0
  98. package/dist/handlers-DnJRGp7t.mjs +302 -0
  99. package/dist/handlers-Dv_runVv.mjs +2 -0
  100. package/dist/handlers-S9Ws0IGy.mjs +2 -0
  101. package/dist/{handlers-Dz9PYsCa.mjs → handlers-pVNpaw4A.mjs} +118 -904
  102. package/dist/handlers.impl-CD2_kOcC.mjs +1 -0
  103. package/dist/hooks-DDKppogd.mjs +600 -0
  104. package/dist/index.mjs +12 -5235
  105. package/dist/logger-sBC6IdRT.mjs +1 -0
  106. package/dist/maintenance-CutEO84j.mjs +1 -0
  107. package/dist/manifest-BFGxlDRh.mjs +123 -0
  108. package/dist/manifest-BPuE6oH2.mjs +1 -0
  109. package/dist/manifest-BXry5N09.mjs +1 -0
  110. package/dist/manifest-BeP_zJGb2.mjs +1 -0
  111. package/dist/manifest-C0g67k6U.mjs +1 -0
  112. package/dist/manifest-C1nZkTkO.mjs +1 -0
  113. package/dist/manifest-C7qV1z7F.mjs +1 -0
  114. package/dist/manifest-CDeUZGUZ.mjs +1 -0
  115. package/dist/manifest-CDiCtaQT.mjs +1 -0
  116. package/dist/manifest-CFn0359q2.mjs +1 -0
  117. package/dist/manifest-CGq4NpqH2.mjs +1 -0
  118. package/dist/manifest-CJMGt7Qy.mjs +1 -0
  119. package/dist/manifest-CRIJq4Hs.mjs +1 -0
  120. package/dist/manifest-C_hEIjSx.mjs +1 -0
  121. package/dist/manifest-CeQmtQOY.mjs +1 -0
  122. package/dist/manifest-Cq0j7GZt.mjs +1 -0
  123. package/dist/manifest-CtPmHAdn.mjs +1 -0
  124. package/dist/manifest-Cx2IVMUY.mjs +1 -0
  125. package/dist/manifest-D16xPXro.mjs +1 -0
  126. package/dist/manifest-D44TaRJU.mjs +1 -0
  127. package/dist/manifest-D610kxZr.mjs +2 -0
  128. package/dist/manifest-DC-SMF6b.mjs +1 -0
  129. package/dist/manifest-DD3rtxvV.mjs +1 -0
  130. package/dist/manifest-DKUorv5M.mjs +1 -0
  131. package/dist/manifest-DMJlcsTR.mjs +1 -0
  132. package/dist/manifest-DWUUWBz0.mjs +1 -0
  133. package/dist/manifest-De-6Wf2R.mjs +1 -0
  134. package/dist/manifest-Dgh0uDW-.mjs +1 -0
  135. package/dist/manifest-Dm0o3i2U.mjs +1 -0
  136. package/dist/manifest-DsVh7Y4U.mjs +1 -0
  137. package/dist/manifest-DtEFSRaq.mjs +1 -0
  138. package/dist/manifest-H-EpAyZQ.mjs +1 -0
  139. package/dist/manifest-ais9Afrw.mjs +1 -0
  140. package/dist/manifest-tmb54wmA.mjs +1 -0
  141. package/dist/manifest-yu2xiQqe.mjs +1 -0
  142. package/dist/manifest-zrbrpKCC.mjs +1 -0
  143. package/dist/matchesWildcardPattern-BGqLSmEs.mjs +1 -0
  144. package/dist/modules-p-PUNv9r.mjs +332 -0
  145. package/dist/mojo-ipc-VGlv3Qyp.mjs +9 -0
  146. package/dist/network-BjZ1Y-GB.mjs +7 -0
  147. package/dist/outputPaths-BonGThuc.mjs +2 -0
  148. package/dist/parse-args-Cuk7-xUt.mjs +1 -0
  149. package/dist/platform-C446Lf97.mjs +93 -0
  150. package/dist/playwright-cdp-fallback-BwVR-_T3.mjs +1 -0
  151. package/dist/process-C9f2A5zk.mjs +962 -0
  152. package/dist/proxy-CvRepxgV.mjs +1 -0
  153. package/dist/registry-DUHIPE-v.mjs +1 -0
  154. package/dist/response-C7rKQst4.mjs +1 -0
  155. package/dist/search-defaults-D2bY-rzH.mjs +1 -0
  156. package/dist/server/plugin-api.mjs +1 -293
  157. package/dist/shared-state-board-Cyg-xh_k.mjs +1 -0
  158. package/dist/sourcemap-D6Q1UuAp.mjs +1 -0
  159. package/dist/ssrf-policy-T96MR3r6.mjs +1 -0
  160. package/dist/streaming-CTX58tbb.mjs +1 -0
  161. package/dist/tool-builder-CI9914Tf.mjs +1 -0
  162. package/dist/transform-Cv9P2vVD.mjs +103 -0
  163. package/dist/types-CuyefmGT.mjs +1 -0
  164. package/dist/types-DtThH00r.mjs +1 -0
  165. package/dist/wasm-DaJa8J0V.mjs +174 -0
  166. package/dist/webcrack-CsLLJIs9.mjs +46 -0
  167. package/dist/workflow-CYIXtrWD.mjs +101 -0
  168. package/package.json +50 -78
  169. package/dist/AntiCheatDetector-CqGDXmfc.mjs +0 -350
  170. package/dist/CacheAdapters-jJFy20G-.mjs +0 -80
  171. package/dist/CodeInjector-BdjRfNx7.mjs +0 -150
  172. package/dist/ConsoleMonitor-DykL3IAw.mjs +0 -2269
  173. package/dist/DarwinAPI-ETyy0xyo.mjs +0 -363
  174. package/dist/DetailedDataManager-HT49OrvF.mjs +0 -217
  175. package/dist/EventBus-DFKvADm3.mjs +0 -141
  176. package/dist/EvidenceGraphBridge-318Oi0Lf.mjs +0 -153
  177. package/dist/ExtensionManager-BDMsY2Dz.mjs +0 -721
  178. package/dist/FingerprintManager-BN4UQWnX.mjs +0 -96
  179. package/dist/HardwareBreakpoint-Cc2AFq1Y.mjs +0 -239
  180. package/dist/HeapAnalyzer-DruMgsgj.mjs +0 -284
  181. package/dist/InstrumentationSession-DLH0vd-z.mjs +0 -244
  182. package/dist/MemoryController-CMtviNW_.mjs +0 -167
  183. package/dist/MemoryScanSession-ITgb_NMi.mjs +0 -278
  184. package/dist/MemoryScanner-CiL7Z3ey.mjs +0 -428
  185. package/dist/NativeMemoryManager.impl-D9Lkovvn.mjs +0 -485
  186. package/dist/NativeMemoryManager.utils-BBlAixF5.mjs +0 -165
  187. package/dist/PEAnalyzer-DMQ44gen.mjs +0 -385
  188. package/dist/PageController-BPJNqqBN.mjs +0 -431
  189. package/dist/PointerChainEngine-K7wN8Z-w.mjs +0 -325
  190. package/dist/PrerequisiteError-TuyZIs6n.mjs +0 -20
  191. package/dist/ProcessRegistry-zGg12QbE.mjs +0 -74
  192. package/dist/ResponseBuilder-CJXWmWNw.mjs +0 -143
  193. package/dist/ReverseEvidenceGraph-C02-gXOh.mjs +0 -269
  194. package/dist/ScriptManager-ZuWD-0Jg.mjs +0 -3003
  195. package/dist/Speedhack-D-z0umeT.mjs +0 -156
  196. package/dist/StealthVerifier-BWmPgQsv.mjs +0 -135
  197. package/dist/StructureAnalyzer-Cav5AVSL.mjs +0 -429
  198. package/dist/ToolCatalog-5OJdMiF0.mjs +0 -582
  199. package/dist/ToolError-jh9whhMd.mjs +0 -15
  200. package/dist/ToolProbe-DbCFGyrg.mjs +0 -45
  201. package/dist/ToolRegistry-B9krbTtI.mjs +0 -180
  202. package/dist/ToolRouter.policy-BGDAGyeH.mjs +0 -344
  203. package/dist/TraceRecorder-B41Z5XBj.mjs +0 -1286
  204. package/dist/VersionDetector-K3V4vGsw.mjs +0 -104
  205. package/dist/Win32API-C2kjj0ze.mjs +0 -346
  206. package/dist/Win32Debug-CKrGOTpo.mjs +0 -274
  207. package/dist/WorkflowEngine-DJ6M4opp.mjs +0 -569
  208. package/dist/analysis-BHeJW2Nb.mjs +0 -1234
  209. package/dist/artifactRetention-CPXkUJXp.mjs +0 -598
  210. package/dist/artifacts-DkfosXH3.mjs +0 -59
  211. package/dist/authorization-schema-DRqyJMSk.mjs +0 -31
  212. package/dist/betterSqlite3-DLSBZodi.mjs +0 -74
  213. package/dist/binary-instrument--V3MAhJ4.mjs +0 -971
  214. package/dist/bind-helpers-ClV34xdn.mjs +0 -42
  215. package/dist/boringssl-inspector-Bo_LOLaS.mjs +0 -180
  216. package/dist/browser-Dx3_S2cG.mjs +0 -4369
  217. package/dist/capabilities-CcHlvWgK.mjs +0 -33
  218. package/dist/chunk-CjcI7cDX.mjs +0 -15
  219. package/dist/concurrency-Drev_Vz9.mjs +0 -41
  220. package/dist/constants-CDZLOoVv.mjs +0 -534
  221. package/dist/coordination-DgItD9DL.mjs +0 -259
  222. package/dist/debugger-RS3RSAqs.mjs +0 -1288
  223. package/dist/definitions-BEoYofW5.mjs +0 -47
  224. package/dist/definitions-BRaefg3u.mjs +0 -365
  225. package/dist/definitions-BbkvZkiv.mjs +0 -96
  226. package/dist/definitions-BtWSHJ3o.mjs +0 -17
  227. package/dist/definitions-C1gCHO0i.mjs +0 -43
  228. package/dist/definitions-CDOg_b-l.mjs +0 -138
  229. package/dist/definitions-CVPD9hzZ.mjs +0 -54
  230. package/dist/definitions-Cea8Lgl7.mjs +0 -94
  231. package/dist/definitions-DAgIyjxM.mjs +0 -10
  232. package/dist/definitions-DJA27nsL.mjs +0 -66
  233. package/dist/definitions-DKPFU3LW.mjs +0 -25
  234. package/dist/definitions-DPRpZQ96.mjs +0 -47
  235. package/dist/definitions-DUE5gmdn.mjs +0 -18
  236. package/dist/definitions-DYVjOtxa.mjs +0 -26
  237. package/dist/definitions-DcYLVLCo.mjs +0 -37
  238. package/dist/definitions-Pp5LI2H4.mjs +0 -27
  239. package/dist/definitions-j9KdHVNR.mjs +0 -14
  240. package/dist/definitions-uzkjBwa7.mjs +0 -258
  241. package/dist/definitions-va-AnLuQ.mjs +0 -28
  242. package/dist/encoding-DJeqHmpd.mjs +0 -1079
  243. package/dist/evidence-graph-bridge-DcYizFk2.mjs +0 -136
  244. package/dist/factory-C90tBff6.mjs +0 -575
  245. package/dist/flat-target-session-Dgax2Cy3.mjs +0 -29
  246. package/dist/formatAddress-nnMvEohD.mjs +0 -17
  247. package/dist/graphql-CoHrhweh.mjs +0 -1197
  248. package/dist/handlers-4jmR0nMs.mjs +0 -898
  249. package/dist/handlers-BAHPxcch.mjs +0 -789
  250. package/dist/handlers-BOs9b907.mjs +0 -2600
  251. package/dist/handlers-BWXEy6ef.mjs +0 -917
  252. package/dist/handlers-Bndn6QvE.mjs +0 -111
  253. package/dist/handlers-BqC4bD4s.mjs +0 -681
  254. package/dist/handlers-BtYq60bM2.mjs +0 -276
  255. package/dist/handlers-BzgcB4iv.mjs +0 -799
  256. package/dist/handlers-CRyRWj2b.mjs +0 -859
  257. package/dist/handlers-CVv2H1uq.mjs +0 -592
  258. package/dist/handlers-Dl5a7JS4.mjs +0 -572
  259. package/dist/handlers-Dx2d7jt7.mjs +0 -2537
  260. package/dist/handlers-HujRKC3b.mjs +0 -661
  261. package/dist/handlers.impl-XWXkQfyi.mjs +0 -807
  262. package/dist/hooks-B1B8NRHL.mjs +0 -898
  263. package/dist/logger-Dh_xb7_2.mjs +0 -93
  264. package/dist/maintenance-PRMkLVRW.mjs +0 -835
  265. package/dist/manifest-67Bok-Si.mjs +0 -58
  266. package/dist/manifest-6lNTMZAB2.mjs +0 -87
  267. package/dist/manifest-B2duEHiH.mjs +0 -90
  268. package/dist/manifest-B6EY9Vm8.mjs +0 -57
  269. package/dist/manifest-B6nKSbyY.mjs +0 -95
  270. package/dist/manifest-BL8AQNPF.mjs +0 -106
  271. package/dist/manifest-BSZvJJmV.mjs +0 -47
  272. package/dist/manifest-BU7qzUyX.mjs +0 -418
  273. package/dist/manifest-Bl62e8WK.mjs +0 -49
  274. package/dist/manifest-Bo5cXjdt.mjs +0 -82
  275. package/dist/manifest-BpS4gtUK.mjs +0 -1347
  276. package/dist/manifest-Bv65_e2W.mjs +0 -101
  277. package/dist/manifest-BytNIF4Z.mjs +0 -117
  278. package/dist/manifest-C-xtsjS3.mjs +0 -81
  279. package/dist/manifest-CDYl7OhA.mjs +0 -66
  280. package/dist/manifest-CRZ3xmkD.mjs +0 -61
  281. package/dist/manifest-CoW6u4Tp.mjs +0 -132
  282. package/dist/manifest-Cq5zN_8A.mjs +0 -50
  283. package/dist/manifest-D7YZM_2e.mjs +0 -194
  284. package/dist/manifest-DE_VrAeQ.mjs +0 -314
  285. package/dist/manifest-DGsXSCpT.mjs +0 -39
  286. package/dist/manifest-DJ2vfEuW.mjs +0 -156
  287. package/dist/manifest-DPXDYhEu.mjs +0 -80
  288. package/dist/manifest-Dd4fQb0a.mjs +0 -322
  289. package/dist/manifest-Deq6opGg.mjs +0 -223
  290. package/dist/manifest-DfJTafJK.mjs +0 -37
  291. package/dist/manifest-DgOdgN_j.mjs +0 -50
  292. package/dist/manifest-DlbMW4v4.mjs +0 -47
  293. package/dist/manifest-DmVfbH0w.mjs +0 -374
  294. package/dist/manifest-Dog6Ddjr.mjs +0 -109
  295. package/dist/manifest-DvgU5FWb.mjs +0 -58
  296. package/dist/manifest-HsfDBs7j.mjs +0 -50
  297. package/dist/manifest-I8oQHvCG.mjs +0 -186
  298. package/dist/manifest-NvH_a-av.mjs +0 -786
  299. package/dist/manifest-cEJU1v0Z.mjs +0 -129
  300. package/dist/manifest-wOl5XLB12.mjs +0 -112
  301. package/dist/modules-tZozf0LQ.mjs +0 -10635
  302. package/dist/mojo-ipc-DXNEXEqb.mjs +0 -640
  303. package/dist/network-CPVvwvFg.mjs +0 -3852
  304. package/dist/outputPaths-um7lCRY3.mjs +0 -1141
  305. package/dist/parse-args-B4cY5Vx5.mjs +0 -39
  306. package/dist/platform-CYeFoTWp.mjs +0 -2161
  307. package/dist/process-BTbgcVc6.mjs +0 -1306
  308. package/dist/proxy-r8YN6nP1.mjs +0 -192
  309. package/dist/registry-Bl8ZQW61.mjs +0 -34
  310. package/dist/response-CWhh2aLo.mjs +0 -34
  311. package/dist/shared-state-board-BoZnSoj-.mjs +0 -586
  312. package/dist/sourcemap-BIDHUVXy.mjs +0 -934
  313. package/dist/ssrf-policy-Dsqd-DTX.mjs +0 -166
  314. package/dist/streaming-Dal6utPp.mjs +0 -725
  315. package/dist/tool-builder-BHJp32mV.mjs +0 -186
  316. package/dist/transform-DRVgGG90.mjs +0 -1011
  317. package/dist/types-Bx92KJfT.mjs +0 -4
  318. package/dist/types-DDBWs9UP.mjs +0 -37
  319. package/dist/wasm-BYx5UOeG.mjs +0 -1044
  320. package/dist/webcrack-Be0_FccV.mjs +0 -747
  321. package/dist/workflow-BpuKEtvn.mjs +0 -725
@@ -1,194 +0,0 @@
1
- import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
2
- import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
3
- import { t as tool } from "./tool-builder-BHJp32mV.mjs";
4
- //#region src/server/domains/binary-instrument/definitions.ts
5
- const binaryInstrumentTools = [
6
- tool("binary_instrument_capabilities", (t) => t.desc("Report binary instrumentation backend availability.").query()),
7
- tool("frida_attach", (t) => t.desc("Attach Frida to a local target and open a session.").string("target", "Process name, PID, or binary path to attach to").required("target")),
8
- tool("frida_enumerate_modules", (t) => t.desc("Enumerate modules for an attached Frida session.").string("sessionId", "Session id returned by frida_attach").required("sessionId").query()),
9
- tool("ghidra_analyze", (t) => t.desc("Analyze a binary and return metadata.").string("binaryPath", "Path to the binary file").number("timeout", "Optional timeout in milliseconds for headless analysis").required("binaryPath")),
10
- tool("generate_hooks", (t) => t.desc("Generate a Frida interceptor script for a list of symbols.").array("symbols", { type: "string" }, "Symbol names to hook").object("options", {
11
- includeArgs: {
12
- type: "boolean",
13
- description: "Emit argument logging on function entry"
14
- },
15
- includeRetAddr: {
16
- type: "boolean",
17
- description: "Emit return-address logging on function entry"
18
- }
19
- }, "Optional Frida hook generation flags").required("symbols")),
20
- tool("unidbg_emulate", (t) => t.desc("Emulate a native function with Unidbg when available.").string("binaryPath", "Path to the binary file").string("functionName", "Function name to emulate").array("args", { type: "string" }, "Optional string arguments forwarded to emulation").required("binaryPath", "functionName")),
21
- tool("frida_run_script", (t) => t.desc("Execute a Frida JavaScript snippet inside an attached Frida session.").string("sessionId", "Session id returned by frida_attach").string("script", "Frida JavaScript to execute").required("sessionId", "script")),
22
- tool("frida_detach", (t) => t.desc("Detach from a Frida session and clean up resources.").string("sessionId", "Session id returned by frida_attach").required("sessionId")),
23
- tool("frida_list_sessions", (t) => t.desc("List all active Frida sessions.").query()),
24
- tool("frida_generate_script", (t) => t.desc("Generate a Frida hook script from a template.").string("target", "Target binary or module name").string("template", "Hook template type: trace, intercept, replace, log").string("functionName", "Function name to generate hook for").required("target", "template")),
25
- tool("get_available_plugins", (t) => t.desc("List installed binary analysis plugins.").query()),
26
- tool("ghidra_decompile", (t) => t.desc("Decompile a specific function using Ghidra headless analysis.").string("binaryPath", "Path to the binary file").string("functionName", "Function name to decompile").required("binaryPath", "functionName")),
27
- tool("ida_decompile", (t) => t.desc("Decompile a function using IDA Pro via plugin bridge.").string("binaryPath", "Path to the binary file").string("functionName", "Function name to decompile").required("binaryPath", "functionName")),
28
- tool("jadx_decompile", (t) => t.desc("Decompile an APK class or method using JADX via plugin bridge.").string("apkPath", "Path to the APK file").string("className", "Fully qualified class name").string("methodName", "Method name to decompile").required("apkPath", "className")),
29
- tool("unidbg_launch", (t) => t.desc("Launch a shared library in Unidbg.").string("soPath", "Path to the .so library file").string("arch", "Architecture: arm or arm64").required("soPath")),
30
- tool("unidbg_call", (t) => t.desc("Call a JNI function in a running Unidbg emulator session.").string("sessionId", "Session id from unidbg_launch").string("functionName", "JNI function name to call").required("sessionId", "functionName")),
31
- tool("unidbg_trace", (t) => t.desc("Get an execution trace from an Unidbg session (full/basic/instruction modes).").string("sessionId", "Session id from unidbg_launch").required("sessionId")),
32
- tool("export_hook_script", (t) => t.desc("Export generated hook templates as a complete, runnable Frida script.").string("hookTemplates", "JSON array of hook template objects")),
33
- tool("frida_enumerate_functions", (t) => t.desc("Enumerate exported functions for a specific module in a Frida session.").string("sessionId", "Session id returned by frida_attach").string("moduleName", "Module name to enumerate exports from").required("sessionId", "moduleName").query()),
34
- tool("frida_find_symbols", (t) => t.desc("Search for symbols matching a pattern in a Frida session using ApiResolver.").string("sessionId", "Session id returned by frida_attach").string("pattern", "Symbol search pattern (e.g. \"exports:*libssl*SSL*\")").required("sessionId", "pattern").query())
35
- ];
36
- //#endregion
37
- //#region src/server/domains/binary-instrument/manifest.ts
38
- const DOMAIN = "binary-instrument";
39
- const DEP_KEY = "binaryInstrumentHandlers";
40
- const registrations = defineMethodRegistrations({
41
- domain: DOMAIN,
42
- depKey: DEP_KEY,
43
- lookup: toolLookup(binaryInstrumentTools),
44
- entries: [
45
- {
46
- tool: "binary_instrument_capabilities",
47
- method: "handleBinaryInstrumentCapabilities"
48
- },
49
- {
50
- tool: "frida_attach",
51
- method: "handleFridaAttach"
52
- },
53
- {
54
- tool: "frida_enumerate_modules",
55
- method: "handleFridaEnumerateModules"
56
- },
57
- {
58
- tool: "ghidra_analyze",
59
- method: "handleGhidraAnalyze"
60
- },
61
- {
62
- tool: "generate_hooks",
63
- method: "handleGenerateHooks"
64
- },
65
- {
66
- tool: "unidbg_emulate",
67
- method: "handleUnidbgEmulate"
68
- },
69
- {
70
- tool: "frida_run_script",
71
- method: "handleFridaRunScript"
72
- },
73
- {
74
- tool: "frida_detach",
75
- method: "handleFridaDetach"
76
- },
77
- {
78
- tool: "frida_list_sessions",
79
- method: "handleFridaListSessions"
80
- },
81
- {
82
- tool: "frida_generate_script",
83
- method: "handleFridaGenerateScript"
84
- },
85
- {
86
- tool: "get_available_plugins",
87
- method: "handleGetAvailablePlugins"
88
- },
89
- {
90
- tool: "ghidra_decompile",
91
- method: "handleGhidraDecompile"
92
- },
93
- {
94
- tool: "ida_decompile",
95
- method: "handleIdaDecompile"
96
- },
97
- {
98
- tool: "jadx_decompile",
99
- method: "handleJadxDecompile"
100
- },
101
- {
102
- tool: "unidbg_launch",
103
- method: "handleUnidbgLaunch"
104
- },
105
- {
106
- tool: "unidbg_call",
107
- method: "handleUnidbgCall"
108
- },
109
- {
110
- tool: "unidbg_trace",
111
- method: "handleUnidbgTrace"
112
- },
113
- {
114
- tool: "export_hook_script",
115
- method: "handleExportHookScript"
116
- },
117
- {
118
- tool: "frida_enumerate_functions",
119
- method: "handleFridaEnumerateFunctions"
120
- },
121
- {
122
- tool: "frida_find_symbols",
123
- method: "handleFridaFindSymbols"
124
- }
125
- ]
126
- });
127
- async function ensure(ctx) {
128
- const { BinaryInstrumentHandlers } = await import("./handlers-CRyRWj2b.mjs");
129
- const { GhidraAnalyzer, HookGenerator } = await import("./binary-instrument--V3MAhJ4.mjs").then((n) => n.t);
130
- let handlers = ctx.getDomainInstance(DEP_KEY);
131
- if (!handlers) {
132
- handlers = new BinaryInstrumentHandlers(ctx, new GhidraAnalyzer(), new HookGenerator());
133
- ctx.setDomainInstance(DEP_KEY, handlers);
134
- }
135
- return handlers;
136
- }
137
- const manifest = {
138
- kind: "domain-manifest",
139
- version: 1,
140
- domain: DOMAIN,
141
- depKey: DEP_KEY,
142
- profiles: ["full"],
143
- ensure,
144
- registrations,
145
- workflowRule: {
146
- patterns: [/\b(frida|ghidra|ida|unidbg|jadx|binary|disassemb|decompil|dump\s?so)\b/i, /(binary|native|so|dll|elf|apk).*(analyze|hook|instrument|decompile)/i],
147
- priority: 88,
148
- tools: [
149
- "frida_attach",
150
- "ghidra_analyze",
151
- "generate_hooks",
152
- "unidbg_launch"
153
- ],
154
- hint: "Binary analysis pipeline: attach Frida → decompile (Ghidra/IDA/JADX) → generate hook scripts → emulate with Unidbg."
155
- },
156
- prerequisites: {
157
- frida_attach: [{
158
- condition: "plugin_frida_bridge must be installed and frida-server reachable",
159
- fix: "Install @jshookmcpextension/plugin-frida-bridge; launch frida-server on the target"
160
- }],
161
- frida_run_script: [{
162
- condition: "A Frida session must be active",
163
- fix: "Call frida_attach before running a script"
164
- }],
165
- ghidra_analyze: [{
166
- condition: "plugin_ghidra_bridge must be installed with Ghidra headless available",
167
- fix: "Install @jshookmcpextension/plugin-ghidra-bridge and configure Ghidra path"
168
- }],
169
- ida_decompile: [{
170
- condition: "plugin_ida_bridge must be installed",
171
- fix: "Install @jshookmcpextension/plugin-ida-bridge and provide IDA Pro license"
172
- }],
173
- jadx_decompile: [{
174
- condition: "plugin_jadx_bridge must be installed",
175
- fix: "Install @jshookmcpextension/plugin-jadx-bridge"
176
- }],
177
- unidbg_launch: [{
178
- condition: "Java 17+ and unidbg JAR must be reachable",
179
- fix: "Install JDK 17+ and download unidbg from its official release"
180
- }],
181
- generate_hooks: [{
182
- condition: "Ghidra analysis output required",
183
- fix: "Run ghidra_analyze first and pass the output to generate_hooks"
184
- }]
185
- },
186
- toolDependencies: [{
187
- from: "process",
188
- to: "binary-instrument",
189
- relation: "uses",
190
- weight: .6
191
- }]
192
- };
193
- //#endregion
194
- export { manifest as default };
@@ -1,314 +0,0 @@
1
- import { t as logger } from "./logger-Dh_xb7_2.mjs";
2
- import { t as createProgressDebouncer } from "./EventBus-DFKvADm3.mjs";
3
- import { n as toolLookup, t as ensureBrowserCore } from "./registry-Bl8ZQW61.mjs";
4
- import { t as coreTools } from "./definitions-CDOg_b-l.mjs";
5
- //#region src/modules/deobfuscator/LLMDeobfuscator.ts
6
- /** Maximum code snippet size sent to the LLM (chars) to avoid token overflow */
7
- const MAX_CODE_SNIPPET = 2e3;
8
- /** Maximum number of identifiers to send in one request */
9
- const MAX_IDENTIFIERS = 20;
10
- var LLMDeobfuscator = class {
11
- constructor(bridge) {
12
- this.bridge = bridge;
13
- }
14
- /**
15
- * Check if the underlying sampling bridge supports LLM delegation.
16
- */
17
- isAvailable() {
18
- return this.bridge.isSamplingSupported();
19
- }
20
- /**
21
- * Use the client's LLM to suggest meaningful names for obfuscated identifiers.
22
- *
23
- * @param code - The obfuscated code snippet (truncated to MAX_CODE_SNIPPET)
24
- * @param identifiers - Array of obfuscated identifier names to rename
25
- * @returns Map of old → new names, or `null` if sampling unavailable/failed
26
- */
27
- async suggestVariableNames(code, identifiers) {
28
- if (!this.bridge.isSamplingSupported()) {
29
- logger.debug("LLMDeobfuscator: sampling not available, skipping name suggestion");
30
- return null;
31
- }
32
- const trimmedIds = identifiers.slice(0, MAX_IDENTIFIERS);
33
- const trimmedCode = code.slice(0, MAX_CODE_SNIPPET);
34
- const userMessage = [
35
- "Given this obfuscated JavaScript code, suggest meaningful variable/function names",
36
- `for these identifiers: ${trimmedIds.join(", ")}`,
37
- "",
38
- "```javascript",
39
- trimmedCode,
40
- "```",
41
- "",
42
- "Respond ONLY with a valid JSON array of objects with fields:",
43
- " { \"original\": \"<old_name>\", \"suggested\": \"<new_name>\", \"confidence\": \"high\"|\"medium\"|\"low\" }",
44
- "",
45
- "Rules:",
46
- "- Use camelCase for variables/functions, PascalCase for classes",
47
- "- If uncertain, use confidence \"low\"",
48
- "- If the name is already meaningful, keep it and mark confidence \"high\""
49
- ].join("\n");
50
- const result = await this.bridge.sampleText({
51
- systemPrompt: "You are an expert JavaScript reverse engineer. You specialize in deobfuscation and renaming obfuscated identifiers to semantically meaningful names. Output only valid JSON.",
52
- userMessage,
53
- maxTokens: 256,
54
- temperature: .3,
55
- modelHint: "haiku"
56
- });
57
- if (!result) return null;
58
- return this.parseNameSuggestions(result, trimmedIds);
59
- }
60
- /**
61
- * Use the client's LLM to infer the purpose of a function from its code.
62
- *
63
- * @param code - The function's code snippet
64
- * @returns A brief description of the function's purpose, or null
65
- */
66
- async inferFunctionPurpose(code) {
67
- if (!this.bridge.isSamplingSupported()) return null;
68
- const trimmedCode = code.slice(0, MAX_CODE_SNIPPET);
69
- return (await this.bridge.sampleText({
70
- systemPrompt: "You are a JavaScript reverse engineer. Analyze code and describe its purpose in one concise sentence.",
71
- userMessage: `What does this function do?\n\n\`\`\`javascript\n${trimmedCode}\n\`\`\`\n\nRespond with a single sentence.`,
72
- maxTokens: 100,
73
- temperature: .2,
74
- modelHint: "haiku"
75
- }))?.trim() ?? null;
76
- }
77
- /**
78
- * Parse the LLM's JSON response into structured name suggestions.
79
- * Robust against malformed output.
80
- */
81
- parseNameSuggestions(rawResponse, expectedIds) {
82
- try {
83
- const jsonMatch = rawResponse.match(/\[[\s\S]*\]/);
84
- if (!jsonMatch) {
85
- logger.warn("LLMDeobfuscator: no JSON array found in LLM response");
86
- return [];
87
- }
88
- const parsed = JSON.parse(jsonMatch[0]);
89
- if (!Array.isArray(parsed)) return [];
90
- const expectedSet = new Set(expectedIds);
91
- return parsed.filter((item) => typeof item === "object" && item !== null && typeof item.original === "string" && typeof item.suggested === "string").filter((item) => expectedSet.has(item.original)).map((item) => ({
92
- original: item.original,
93
- suggested: item.suggested,
94
- confidence: [
95
- "high",
96
- "medium",
97
- "low"
98
- ].includes(item.confidence) ? item.confidence : "low"
99
- }));
100
- } catch (error) {
101
- logger.warn("LLMDeobfuscator: failed to parse LLM response:", error);
102
- return [];
103
- }
104
- }
105
- };
106
- //#endregion
107
- //#region src/server/domains/analysis/manifest.ts
108
- const DOMAIN = "core";
109
- const DEP_KEY = "coreAnalysisHandlers";
110
- const t = toolLookup(coreTools);
111
- let globalContext = null;
112
- /**
113
- * Analysis-domain bind helper that threads `_meta.progressToken` into
114
- * a throttled `onProgress` callback — same pattern as memory/manifest.ts.
115
- */
116
- function bindWithProgress(invoke) {
117
- return (deps) => {
118
- const handler = deps[DEP_KEY];
119
- return (args) => {
120
- const meta = args._meta;
121
- let onProgress;
122
- if (meta?.progressToken !== void 0 && globalContext) onProgress = createProgressDebouncer(globalContext.eventBus, meta.progressToken);
123
- return invoke(handler, {
124
- ...args,
125
- onProgress
126
- });
127
- };
128
- };
129
- }
130
- const b = bindWithProgress;
131
- async function ensure(ctx) {
132
- const { Deobfuscator, AdvancedDeobfuscator, ObfuscationDetector, CodeAnalyzer, CryptoDetector, HookManager } = await import("./modules-tZozf0LQ.mjs").then((n) => n.t);
133
- const { CoreAnalysisHandlers } = await import("./analysis-BHeJW2Nb.mjs");
134
- globalContext = ctx;
135
- await ensureBrowserCore(ctx);
136
- if (!ctx.deobfuscator || !ctx.advancedDeobfuscator || !ctx.obfuscationDetector || !ctx.analyzer || !ctx.cryptoDetector || !ctx.hookManager || !ctx.coreAnalysisHandlers) {
137
- if (!ctx.deobfuscator) ctx.deobfuscator = new Deobfuscator();
138
- if (!ctx.advancedDeobfuscator) ctx.advancedDeobfuscator = new AdvancedDeobfuscator();
139
- if (!ctx.obfuscationDetector) ctx.obfuscationDetector = new ObfuscationDetector();
140
- if (!ctx.analyzer) ctx.analyzer = new CodeAnalyzer();
141
- if (!ctx.cryptoDetector) ctx.cryptoDetector = new CryptoDetector();
142
- if (!ctx.hookManager) ctx.hookManager = new HookManager();
143
- if (!ctx.coreAnalysisHandlers) ctx.coreAnalysisHandlers = new CoreAnalysisHandlers({
144
- collector: ctx.collector,
145
- scriptManager: ctx.scriptManager,
146
- deobfuscator: ctx.deobfuscator,
147
- advancedDeobfuscator: ctx.advancedDeobfuscator,
148
- obfuscationDetector: ctx.obfuscationDetector,
149
- analyzer: ctx.analyzer,
150
- cryptoDetector: ctx.cryptoDetector,
151
- hookManager: ctx.hookManager
152
- });
153
- }
154
- return ctx.coreAnalysisHandlers;
155
- }
156
- const manifest = {
157
- kind: "domain-manifest",
158
- version: 1,
159
- domain: DOMAIN,
160
- depKey: DEP_KEY,
161
- profiles: ["workflow", "full"],
162
- ensure,
163
- workflowRule: {
164
- patterns: [/(deobfuscate|deobfusc|beautify|analyze).*(javascript|js|script|code)/i, /(反混淆|美化|分析).*(javascript|js|脚本|代码)/i],
165
- priority: 85,
166
- tools: [
167
- "deobfuscate",
168
- "extract_function_tree",
169
- "llm_suggest_names"
170
- ],
171
- hint: "JavaScript analysis workflow: collect -> deobfuscate -> inspect function tree | LLM-powered naming"
172
- },
173
- prerequisites: { collect_code: [{
174
- condition: "Browser must be launched",
175
- fix: "Call browser_launch or browser_attach first"
176
- }] },
177
- registrations: [
178
- {
179
- tool: t("collect_code"),
180
- domain: DOMAIN,
181
- bind: b((h, a) => h.handleCollectCode(a))
182
- },
183
- {
184
- tool: t("search_in_scripts"),
185
- domain: DOMAIN,
186
- profiles: [
187
- "search",
188
- "workflow",
189
- "full"
190
- ],
191
- bind: b((h, a) => h.handleSearchInScripts(a))
192
- },
193
- {
194
- tool: t("extract_function_tree"),
195
- domain: DOMAIN,
196
- bind: b((h, a) => h.handleExtractFunctionTree(a))
197
- },
198
- {
199
- tool: t("deobfuscate"),
200
- domain: DOMAIN,
201
- bind: b((h, a) => h.handleDeobfuscate(a))
202
- },
203
- {
204
- tool: t("understand_code"),
205
- domain: DOMAIN,
206
- profiles: [
207
- "search",
208
- "workflow",
209
- "full"
210
- ],
211
- bind: b((h, a) => h.handleUnderstandCode(a))
212
- },
213
- {
214
- tool: t("detect_crypto"),
215
- domain: DOMAIN,
216
- profiles: [
217
- "search",
218
- "workflow",
219
- "full"
220
- ],
221
- bind: b((h, a) => h.handleDetectCrypto(a))
222
- },
223
- {
224
- tool: t("manage_hooks"),
225
- domain: DOMAIN,
226
- bind: b((h, a) => h.handleManageHooks(a))
227
- },
228
- {
229
- tool: t("detect_obfuscation"),
230
- domain: DOMAIN,
231
- profiles: [
232
- "search",
233
- "workflow",
234
- "full"
235
- ],
236
- bind: b((h, a) => h.handleDetectObfuscation(a))
237
- },
238
- {
239
- tool: t("webcrack_unpack"),
240
- domain: DOMAIN,
241
- bind: b((h, a) => h.handleWebcrackUnpack(a))
242
- },
243
- {
244
- tool: t("clear_collected_data"),
245
- domain: DOMAIN,
246
- bind: b((h) => h.handleClearCollectedData())
247
- },
248
- {
249
- tool: t("get_collection_stats"),
250
- domain: DOMAIN,
251
- bind: b((h) => h.handleGetCollectionStats())
252
- },
253
- {
254
- tool: t("webpack_enumerate"),
255
- domain: DOMAIN,
256
- bind: b((h, a) => h.handleWebpackEnumerate(a))
257
- },
258
- {
259
- tool: t("llm_suggest_names"),
260
- domain: DOMAIN,
261
- bind: bindWithProgress(async (_h, args) => {
262
- if (!globalContext) return { content: [{
263
- type: "text",
264
- text: JSON.stringify({
265
- success: false,
266
- error: "Server context not initialized"
267
- })
268
- }] };
269
- const deob = new LLMDeobfuscator(globalContext.samplingBridge);
270
- if (!deob.isAvailable()) return { content: [{
271
- type: "text",
272
- text: JSON.stringify({
273
- success: false,
274
- error: "Sampling not supported by this client",
275
- hint: "The connected MCP client does not declare sampling capabilities. Try using Claude Desktop or another sampling-capable client."
276
- })
277
- }] };
278
- const code = typeof args.code === "string" ? args.code : "";
279
- const identifiers = Array.isArray(args.identifiers) ? args.identifiers.filter((id) => typeof id === "string") : [];
280
- const suggestions = await deob.suggestVariableNames(code, identifiers);
281
- return { content: [{
282
- type: "text",
283
- text: JSON.stringify({
284
- success: true,
285
- suggestions: suggestions ?? [],
286
- samplingUsed: true
287
- })
288
- }] };
289
- })
290
- },
291
- {
292
- tool: t("js_deobfuscate_jsvmp"),
293
- domain: DOMAIN,
294
- bind: b((h, a) => h.handleJsDeobfuscateJsvmp(a))
295
- },
296
- {
297
- tool: t("js_deobfuscate_pipeline"),
298
- domain: DOMAIN,
299
- bind: b((h, a) => h.handleJsDeobfuscatePipeline(a))
300
- },
301
- {
302
- tool: t("js_analyze_vm"),
303
- domain: DOMAIN,
304
- bind: b((h, a) => h.handleJsAnalyzeVm(a))
305
- },
306
- {
307
- tool: t("js_solve_constraints"),
308
- domain: DOMAIN,
309
- bind: b((h, a) => h.handleJsSolveConstraints(a))
310
- }
311
- ]
312
- };
313
- //#endregion
314
- export { manifest as default };
@@ -1,39 +0,0 @@
1
- import { n as toolLookup } from "./registry-Bl8ZQW61.mjs";
2
- import { n as defineMethodRegistrations } from "./bind-helpers-ClV34xdn.mjs";
3
- import { t as antidebugTools } from "./definitions-DUE5gmdn.mjs";
4
- //#region src/server/domains/antidebug/manifest.ts
5
- const DOMAIN = "antidebug";
6
- const DEP_KEY = "antidebugHandlers";
7
- const registrations = defineMethodRegistrations({
8
- domain: DOMAIN,
9
- depKey: DEP_KEY,
10
- lookup: toolLookup(antidebugTools),
11
- entries: [{
12
- tool: "antidebug_bypass",
13
- method: "handleAntidebugBypass"
14
- }, {
15
- tool: "antidebug_detect_protections",
16
- method: "handleAntiDebugDetectProtections"
17
- }]
18
- });
19
- async function ensure(ctx) {
20
- const { CodeCollector } = await import("./modules-tZozf0LQ.mjs").then((n) => n.t);
21
- const { AntiDebugToolHandlers } = await import("./antidebug-BRKeyt27.mjs");
22
- if (!ctx.collector) {
23
- ctx.collector = new CodeCollector(ctx.config.puppeteer);
24
- ctx.registerCaches();
25
- }
26
- if (!ctx.antidebugHandlers) ctx.antidebugHandlers = new AntiDebugToolHandlers(ctx.collector);
27
- return ctx.antidebugHandlers;
28
- }
29
- const manifest = {
30
- kind: "domain-manifest",
31
- version: 1,
32
- domain: DOMAIN,
33
- depKey: DEP_KEY,
34
- profiles: ["full"],
35
- ensure,
36
- registrations
37
- };
38
- //#endregion
39
- export { manifest as default };