@jshookmcp/jshook 0.2.9 → 0.3.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 (187) hide show
  1. package/README.md +2 -2
  2. package/README.zh.md +2 -2
  3. package/dist/{AntiCheatDetector-BNk-EoBt.mjs → AntiCheatDetector-CqGDXmfc.mjs} +159 -53
  4. package/dist/{CodeInjector-Cq8q01kp.mjs → CodeInjector-BdjRfNx7.mjs} +5 -5
  5. package/dist/{ConsoleMonitor-CPVQW1Y-.mjs → ConsoleMonitor-DykL3IAw.mjs} +85 -17
  6. package/dist/{DetailedDataManager-BQQcxh64.mjs → DetailedDataManager-HT49OrvF.mjs} +1 -1
  7. package/dist/{ExtensionManager-CWYgw0YW.mjs → ExtensionManager-BDMsY2Dz.mjs} +15 -8
  8. package/dist/{HardwareBreakpoint-B9gZCdFP.mjs → HardwareBreakpoint-Cc2AFq1Y.mjs} +3 -3
  9. package/dist/{HeapAnalyzer-BLDH0dCv.mjs → HeapAnalyzer-DruMgsgj.mjs} +20 -20
  10. package/dist/{HookGeneratorBuilders.core.generators.storage-CtcdK78Q.mjs → HookGeneratorBuilders.core.generators.storage-CTbB4Lcx.mjs} +1 -74
  11. package/dist/{InstrumentationSession-CvPC7Jwy.mjs → InstrumentationSession-DLH0vd-z.mjs} +2 -2
  12. package/dist/{MemoryController-CbVdCIJF.mjs → MemoryController-CMtviNW_.mjs} +3 -3
  13. package/dist/{MemoryScanSession-BsDZbLYm.mjs → MemoryScanSession-ITgb_NMi.mjs} +2 -2
  14. package/dist/{MemoryScanner-Bcpml6II.mjs → MemoryScanner-CiL7Z3ey.mjs} +12 -9
  15. package/dist/{NativeMemoryManager.impl-dZtA1ZGn.mjs → NativeMemoryManager.impl-D9Lkovvn.mjs} +13 -10
  16. package/dist/{NativeMemoryManager.utils-B-FjA2mJ.mjs → NativeMemoryManager.utils-BBlAixF5.mjs} +1 -1
  17. package/dist/{PEAnalyzer-D1lzJ_VG.mjs → PEAnalyzer-DMQ44gen.mjs} +15 -15
  18. package/dist/{PageController-Bqm2kZ_X.mjs → PageController-BPJNqqBN.mjs} +18 -4
  19. package/dist/{PointerChainEngine-BOhyVsjx.mjs → PointerChainEngine-K7wN8Z-w.mjs} +10 -7
  20. package/dist/ProcessRegistry-zGg12QbE.mjs +74 -0
  21. package/dist/{ResponseBuilder-D3iFYx2N.mjs → ResponseBuilder-CJXWmWNw.mjs} +10 -10
  22. package/dist/{ScriptManager-aHHq0X7U.mjs → ScriptManager-ZuWD-0Jg.mjs} +195 -192
  23. package/dist/{Speedhack-CqdIFlQl.mjs → Speedhack-D-z0umeT.mjs} +2 -2
  24. package/dist/{StructureAnalyzer-DhFaPvRO.mjs → StructureAnalyzer-Cav5AVSL.mjs} +9 -6
  25. package/dist/{ToolCatalog-C0JGZoOm.mjs → ToolCatalog-5OJdMiF0.mjs} +81 -81
  26. package/dist/{ToolProbe-oC7aPrkv.mjs → ToolProbe-DbCFGyrg.mjs} +1 -1
  27. package/dist/{ToolRegistry-BjaF4oNz.mjs → ToolRegistry-B9krbTtI.mjs} +51 -2
  28. package/dist/{ToolRouter.policy-BWV67ZK-.mjs → ToolRouter.policy-BGDAGyeH.mjs} +60 -20
  29. package/dist/TraceRecorder-B41Z5XBj.mjs +1286 -0
  30. package/dist/{Win32API-CePkipZY.mjs → Win32API-C2kjj0ze.mjs} +18 -12
  31. package/dist/{Win32Debug-BvKs-gxc.mjs → Win32Debug-CKrGOTpo.mjs} +2 -2
  32. package/dist/{WorkflowEngine-CuvkZtWu.mjs → WorkflowEngine-DJ6M4opp.mjs} +226 -255
  33. package/dist/analysis-BHeJW2Nb.mjs +1234 -0
  34. package/dist/{antidebug-CqDTB_uk.mjs → antidebug-BRKeyt27.mjs} +3 -3
  35. package/dist/{artifactRetention-CFEprwPw.mjs → artifactRetention-CPXkUJXp.mjs} +13 -6
  36. package/dist/{artifacts-Bk2-_uPq.mjs → artifacts-DkfosXH3.mjs} +1 -1
  37. package/dist/authorization-schema-DRqyJMSk.mjs +31 -0
  38. package/dist/{binary-instrument-CXfpx6fT.mjs → binary-instrument--V3MAhJ4.mjs} +19 -27
  39. package/dist/bind-helpers-ClV34xdn.mjs +42 -0
  40. package/dist/{boringssl-inspector-BH2D3VKc.mjs → boringssl-inspector-Bo_LOLaS.mjs} +1 -1
  41. package/dist/{browser-BpOr5PEx.mjs → browser-Dx3_S2cG.mjs} +324 -37
  42. package/dist/capabilities-CcHlvWgK.mjs +33 -0
  43. package/dist/{constants-B0OANIBL.mjs → constants-CDZLOoVv.mjs} +18 -3
  44. package/dist/{coordination-qUbyF8KU.mjs → coordination-DgItD9DL.mjs} +2 -2
  45. package/dist/{debugger-gnKxRSN0.mjs → debugger-RS3RSAqs.mjs} +30 -13
  46. package/dist/definitions-BEoYofW5.mjs +47 -0
  47. package/dist/{definitions-bAhHQJq9.mjs → definitions-BRaefg3u.mjs} +11 -5
  48. package/dist/{definitions-DVGfrn7y.mjs → definitions-BbkvZkiv.mjs} +2 -2
  49. package/dist/definitions-BtWSHJ3o.mjs +17 -0
  50. package/dist/{definitions-BMfYXoNC.mjs → definitions-C1gCHO0i.mjs} +1 -1
  51. package/dist/{definitions-C1UvM5Iy.mjs → definitions-CDOg_b-l.mjs} +14 -2
  52. package/dist/definitions-CVPD9hzZ.mjs +54 -0
  53. package/dist/{definitions-Cke7zEb8.mjs → definitions-Cea8Lgl7.mjs} +1 -1
  54. package/dist/definitions-DAgIyjxM.mjs +10 -0
  55. package/dist/{definitions-B4rAvHNZ.mjs → definitions-DJA27nsL.mjs} +12 -9
  56. package/dist/{definitions-ClJLzsJQ.mjs → definitions-DKPFU3LW.mjs} +1 -1
  57. package/dist/{definitions-D3VsGcvz.mjs → definitions-DPRpZQ96.mjs} +7 -7
  58. package/dist/{definitions-B18eyf0B.mjs → definitions-DUE5gmdn.mjs} +1 -1
  59. package/dist/definitions-DYVjOtxa.mjs +26 -0
  60. package/dist/{definitions-BB_4jnmy.mjs → definitions-DcYLVLCo.mjs} +1 -1
  61. package/dist/{definitions-Beid2EB3.mjs → definitions-Pp5LI2H4.mjs} +1 -1
  62. package/dist/definitions-j9KdHVNR.mjs +14 -0
  63. package/dist/definitions-uzkjBwa7.mjs +258 -0
  64. package/dist/{definitions-Cq-zroAU.mjs → definitions-va-AnLuQ.mjs} +4 -4
  65. package/dist/{encoding-Bvz5jLRv.mjs → encoding-DJeqHmpd.mjs} +18 -4
  66. package/dist/{evidence-graph-bridge-C_fv9PuC.mjs → evidence-graph-bridge-DcYizFk2.mjs} +1 -0
  67. package/dist/{factory-DxlGh9Xf.mjs → factory-C90tBff6.mjs} +6 -6
  68. package/dist/flat-target-session-Dgax2Cy3.mjs +29 -0
  69. package/dist/{graphql-DYWzJ29s.mjs → graphql-CoHrhweh.mjs} +205 -34
  70. package/dist/{handlers-C67ktuRN.mjs → handlers-4jmR0nMs.mjs} +220 -32
  71. package/dist/{handlers-DlCJN4Td.mjs → handlers-BAHPxcch.mjs} +122 -90
  72. package/dist/{handlers-9sAbfIg-.mjs → handlers-BOs9b907.mjs} +849 -801
  73. package/dist/{handlers-DxGIq15_2.mjs → handlers-BWXEy6ef.mjs} +16 -16
  74. package/dist/{handlers-tB9Mp9ZK.mjs → handlers-Bndn6QvE.mjs} +31 -4
  75. package/dist/{handlers-CTsDAO6p.mjs → handlers-BqC4bD4s.mjs} +1 -1
  76. package/dist/{handlers-C87g8oCe.mjs → handlers-BtYq60bM2.mjs} +1 -1
  77. package/dist/{handlers-DeLOCd5m.mjs → handlers-BzgcB4iv.mjs} +17 -17
  78. package/dist/{handlers-Cgyg6c0U.mjs → handlers-CRyRWj2b.mjs} +237 -23
  79. package/dist/{handlers-U6L4xhuF.mjs → handlers-CVv2H1uq.mjs} +24 -17
  80. package/dist/{handlers-tiy7EIBp.mjs → handlers-Dl5a7JS4.mjs} +3 -3
  81. package/dist/{handlers-D6j6yka7.mjs → handlers-Dx2d7jt7.mjs} +1893 -1480
  82. package/dist/{handlers-Bl8zkwz1.mjs → handlers-Dz9PYsCa.mjs} +95 -6
  83. package/dist/handlers-HujRKC3b.mjs +661 -0
  84. package/dist/{handlers.impl-DS0d9fUw.mjs → handlers.impl-XWXkQfyi.mjs} +70 -24
  85. package/dist/{hooks-CzCWByww.mjs → hooks-B1B8NRHL.mjs} +3 -3
  86. package/dist/index.mjs +154 -144
  87. package/dist/{maintenance-P7ePRXQC.mjs → maintenance-PRMkLVRW.mjs} +35 -30
  88. package/dist/manifest-67Bok-Si.mjs +58 -0
  89. package/dist/{manifest-B3QVVeBS.mjs → manifest-6lNTMZAB2.mjs} +33 -28
  90. package/dist/manifest-B2duEHiH.mjs +90 -0
  91. package/dist/manifest-B6EY9Vm8.mjs +57 -0
  92. package/dist/{manifest-gZ4s_UtG.mjs → manifest-B6nKSbyY.mjs} +32 -33
  93. package/dist/{manifest-2ToTpjv8.mjs → manifest-BL8AQNPF.mjs} +31 -31
  94. package/dist/{manifest-DzwvxPJX.mjs → manifest-BSZvJJmV.mjs} +23 -14
  95. package/dist/{manifest-Sc_0JQ13.mjs → manifest-BU7qzUyX.mjs} +23 -23
  96. package/dist/{manifest-CT7zZBV1.mjs → manifest-Bl62e8WK.mjs} +24 -23
  97. package/dist/manifest-Bo5cXjdt.mjs +82 -0
  98. package/dist/manifest-BpS4gtUK.mjs +1347 -0
  99. package/dist/manifest-Bv65_e2W.mjs +101 -0
  100. package/dist/manifest-BytNIF4Z.mjs +117 -0
  101. package/dist/{manifest-BqrQ4Tpj.mjs → manifest-C-xtsjS3.mjs} +23 -23
  102. package/dist/{manifest-NXctwWQq.mjs → manifest-CDYl7OhA.mjs} +36 -38
  103. package/dist/manifest-CRZ3xmkD.mjs +61 -0
  104. package/dist/manifest-CoW6u4Tp.mjs +132 -0
  105. package/dist/manifest-Cq5zN_8A.mjs +50 -0
  106. package/dist/{manifest-CAhOuvSl.mjs → manifest-D7YZM_2e.mjs} +75 -85
  107. package/dist/{manifest-DCyjf4n2.mjs → manifest-DE_VrAeQ.mjs} +27 -7
  108. package/dist/manifest-DGsXSCpT.mjs +39 -0
  109. package/dist/{manifest-BB2J8IMJ.mjs → manifest-DJ2vfEuW.mjs} +48 -41
  110. package/dist/{manifest-3g71z6Bg.mjs → manifest-DPXDYhEu.mjs} +26 -25
  111. package/dist/manifest-Dd4fQb0a.mjs +322 -0
  112. package/dist/{manifest-CXsRWjjI.mjs → manifest-Deq6opGg.mjs} +95 -96
  113. package/dist/{manifest-C9RT5nk32.mjs → manifest-DfJTafJK.mjs} +14 -11
  114. package/dist/manifest-DgOdgN_j.mjs +50 -0
  115. package/dist/{manifest-BmtZzQiQ2.mjs → manifest-DlbMW4v4.mjs} +17 -15
  116. package/dist/{manifest-DrbmZcFl2.mjs → manifest-DmVfbH0w.mjs} +212 -91
  117. package/dist/manifest-Dog6Ddjr.mjs +109 -0
  118. package/dist/manifest-DvgU5FWb.mjs +58 -0
  119. package/dist/manifest-HsfDBs7j.mjs +50 -0
  120. package/dist/manifest-I8oQHvCG.mjs +186 -0
  121. package/dist/manifest-NvH_a-av.mjs +786 -0
  122. package/dist/{manifest-Dh8WBmEW.mjs → manifest-cEJU1v0Z.mjs} +24 -24
  123. package/dist/manifest-wOl5XLB12.mjs +112 -0
  124. package/dist/{modules-C184v-S9.mjs → modules-tZozf0LQ.mjs} +130 -860
  125. package/dist/{mojo-ipc-B_H61Afw.mjs → mojo-ipc-DXNEXEqb.mjs} +141 -26
  126. package/dist/{network-671Cw6hV.mjs → network-CPVvwvFg.mjs} +1329 -823
  127. package/dist/{outputPaths-B1uGmrWZ.mjs → outputPaths-um7lCRY3.mjs} +4 -8
  128. package/dist/{platform-WmNn8Sxb.mjs → platform-CYeFoTWp.mjs} +101 -10
  129. package/dist/{process-QcbIy5Zq.mjs → process-BTbgcVc6.mjs} +251 -346
  130. package/dist/{proxy-DqNs0bAd.mjs → proxy-r8YN6nP1.mjs} +30 -8
  131. package/dist/{registry-D-6e18lB.mjs → registry-Bl8ZQW61.mjs} +3 -3
  132. package/dist/{response-BQVP-xUn.mjs → response-CWhh2aLo.mjs} +7 -1
  133. package/dist/{shared-state-board-DV-dpHFJ.mjs → shared-state-board-BoZnSoj-.mjs} +2 -2
  134. package/dist/{sourcemap-Dq8ez8vS.mjs → sourcemap-BIDHUVXy.mjs} +350 -66
  135. package/dist/{streaming-BUQ0VJsg.mjs → streaming-Dal6utPp.mjs} +13 -13
  136. package/dist/{tool-builder-DCbIC5Eo.mjs → tool-builder-BHJp32mV.mjs} +1 -1
  137. package/dist/{transform-CiYJfNX0.mjs → transform-DRVgGG90.mjs} +18 -14
  138. package/dist/wasm-BYx5UOeG.mjs +1044 -0
  139. package/dist/webcrack-Be0_FccV.mjs +747 -0
  140. package/dist/{workflow-f3xJOcjx.mjs → workflow-BpuKEtvn.mjs} +8 -8
  141. package/package.json +76 -43
  142. package/dist/TraceRecorder-DgxyVbdQ.mjs +0 -519
  143. package/dist/analysis-CL9uACt9.mjs +0 -463
  144. package/dist/bind-helpers-xFfRF-qm.mjs +0 -22
  145. package/dist/definitions-6M-eejaT.mjs +0 -53
  146. package/dist/definitions-B3QdlrHv.mjs +0 -34
  147. package/dist/definitions-CXEI7QC72.mjs +0 -216
  148. package/dist/definitions-C_4r7Fo-2.mjs +0 -14
  149. package/dist/definitions-CkFDALoa.mjs +0 -26
  150. package/dist/definitions-Cy3Sl6gV.mjs +0 -34
  151. package/dist/definitions-LKpC3-nL.mjs +0 -9
  152. package/dist/handlers-DdFzXLvF.mjs +0 -446
  153. package/dist/manifest-82baTv4U.mjs +0 -45
  154. package/dist/manifest-BKbgbSiY.mjs +0 -60
  155. package/dist/manifest-Bcf-TJzH.mjs +0 -848
  156. package/dist/manifest-Bnd7kqEY.mjs +0 -55
  157. package/dist/manifest-BqQX6OQC2.mjs +0 -65
  158. package/dist/manifest-Br4RPFt5.mjs +0 -370
  159. package/dist/manifest-C5qDjysN.mjs +0 -107
  160. package/dist/manifest-CBYWCUBJ.mjs +0 -51
  161. package/dist/manifest-CFADCRa1.mjs +0 -37
  162. package/dist/manifest-CQVhavRF.mjs +0 -114
  163. package/dist/manifest-CV12bcrF.mjs +0 -121
  164. package/dist/manifest-CZLUCfG02.mjs +0 -95
  165. package/dist/manifest-D6phHKFd.mjs +0 -131
  166. package/dist/manifest-DHsnKgP6.mjs +0 -60
  167. package/dist/manifest-Df_dliIe.mjs +0 -55
  168. package/dist/manifest-DhKRAT8_.mjs +0 -92
  169. package/dist/manifest-DlpTj4ic2.mjs +0 -193
  170. package/dist/manifest-DuwHjUa5.mjs +0 -70
  171. package/dist/manifest-qSleDqdO.mjs +0 -1023
  172. package/dist/wasm-DQTnHDs4.mjs +0 -531
  173. /package/dist/{CacheAdapters-CDe5WPSV.mjs → CacheAdapters-jJFy20G-.mjs} +0 -0
  174. /package/dist/{DarwinAPI-BNPxu0RH.mjs → DarwinAPI-ETyy0xyo.mjs} +0 -0
  175. /package/dist/{EventBus-DgPmwpeu.mjs → EventBus-DFKvADm3.mjs} +0 -0
  176. /package/dist/{EvidenceGraphBridge-SFesNera.mjs → EvidenceGraphBridge-318Oi0Lf.mjs} +0 -0
  177. /package/dist/{FingerprintManager-gzWtkKuf.mjs → FingerprintManager-BN4UQWnX.mjs} +0 -0
  178. /package/dist/{PrerequisiteError-Dl33Svkz.mjs → PrerequisiteError-TuyZIs6n.mjs} +0 -0
  179. /package/dist/{ReverseEvidenceGraph-Dlsk94LC.mjs → ReverseEvidenceGraph-C02-gXOh.mjs} +0 -0
  180. /package/dist/{StealthVerifier-Bo4T3bz8.mjs → StealthVerifier-BWmPgQsv.mjs} +0 -0
  181. /package/dist/{VersionDetector-CwVLVdDM.mjs → VersionDetector-K3V4vGsw.mjs} +0 -0
  182. /package/dist/{betterSqlite3-0pqusHHH.mjs → betterSqlite3-DLSBZodi.mjs} +0 -0
  183. /package/dist/{concurrency-Bt0yv1kJ.mjs → concurrency-Drev_Vz9.mjs} +0 -0
  184. /package/dist/{formatAddress-DVkj9kpI.mjs → formatAddress-nnMvEohD.mjs} +0 -0
  185. /package/dist/{parse-args-BlRjqlkL.mjs → parse-args-B4cY5Vx5.mjs} +0 -0
  186. /package/dist/{ssrf-policy-ZaUfvhq7.mjs → ssrf-policy-Dsqd-DTX.mjs} +0 -0
  187. /package/dist/{types-CPhOReNX.mjs → types-DDBWs9UP.mjs} +0 -0
@@ -1,11 +1,12 @@
1
- import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
- import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
- import { t as tool } from "./tool-builder-DCbIC5Eo.mjs";
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
4
  //#region src/server/domains/binary-instrument/definitions.ts
5
5
  const binaryInstrumentTools = [
6
- tool("frida_attach", (t) => t.desc("Attach Frida to a local process, PID, or binary path and create a binary inst...").string("target", "Process name, PID, or binary path to attach to").required("target")),
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")),
7
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()),
8
- tool("ghidra_analyze", (t) => t.desc("Run binary metadata analysis with Ghidra headless when available, with struct...").number("timeout", "Optional timeout in milliseconds for headless analysis").required("binaryPath")),
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")),
9
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", {
10
11
  includeArgs: {
11
12
  type: "boolean",
@@ -16,16 +17,16 @@ const binaryInstrumentTools = [
16
17
  description: "Emit return-address logging on function entry"
17
18
  }
18
19
  }, "Optional Frida hook generation flags").required("symbols")),
19
- tool("unidbg_emulate", (t) => t.desc("Attempt to emulate a native function with unidbg, or return structured mock o...").string("functionName", "Function name to emulate").array("args", { type: "string" }, "Optional string arguments forwarded to emulation").required("binaryPath", "functionName")),
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")),
20
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")),
21
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")),
22
23
  tool("frida_list_sessions", (t) => t.desc("List all active Frida sessions.").query()),
23
- tool("frida_generate_script", (t) => t.desc("Generate a Frida interceptor script from templates (trace, intercept, replace, log).").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")),
24
- tool("get_available_plugins", (t) => t.desc("List all available binary analysis plugins (frida, ghidra, ida, jadx).").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()),
25
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")),
26
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")),
27
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")),
28
- tool("unidbg_launch", (t) => t.desc("Launch an ARM/ARM64 .so library in the Unidbg emulator. First call ~3-5s warmup.").string("soPath", "Path to the .so library file").string("arch", "Architecture: arm or arm64").required("soPath")),
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")),
29
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")),
30
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")),
31
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")),
@@ -36,122 +37,111 @@ const binaryInstrumentTools = [
36
37
  //#region src/server/domains/binary-instrument/manifest.ts
37
38
  const DOMAIN = "binary-instrument";
38
39
  const DEP_KEY = "binaryInstrumentHandlers";
39
- const toolByName = toolLookup(binaryInstrumentTools);
40
- const bind = (invoke) => bindByDepKey(DEP_KEY, invoke);
41
- async function ensure(ctx) {
42
- const { BinaryInstrumentHandlers } = await import("./handlers-Cgyg6c0U.mjs");
43
- const { GhidraAnalyzer, HookGenerator } = await import("./binary-instrument-CXfpx6fT.mjs").then((n) => n.t);
44
- let handlers = ctx.getDomainInstance(DEP_KEY);
45
- if (!handlers) {
46
- handlers = new BinaryInstrumentHandlers(ctx, new GhidraAnalyzer(), new HookGenerator());
47
- ctx.setDomainInstance(DEP_KEY, handlers);
48
- }
49
- return handlers;
50
- }
51
- const manifest = {
52
- kind: "domain-manifest",
53
- version: 1,
40
+ const registrations = defineMethodRegistrations({
54
41
  domain: DOMAIN,
55
42
  depKey: DEP_KEY,
56
- profiles: ["full"],
57
- ensure,
58
- registrations: [
43
+ lookup: toolLookup(binaryInstrumentTools),
44
+ entries: [
45
+ {
46
+ tool: "binary_instrument_capabilities",
47
+ method: "handleBinaryInstrumentCapabilities"
48
+ },
59
49
  {
60
- tool: toolByName("frida_attach"),
61
- domain: DOMAIN,
62
- bind: bind((handlers, args) => handlers.handleFridaAttach(args))
50
+ tool: "frida_attach",
51
+ method: "handleFridaAttach"
63
52
  },
64
53
  {
65
- tool: toolByName("frida_enumerate_modules"),
66
- domain: DOMAIN,
67
- bind: bind((handlers, args) => handlers.handleFridaEnumerateModules(args))
54
+ tool: "frida_enumerate_modules",
55
+ method: "handleFridaEnumerateModules"
68
56
  },
69
57
  {
70
- tool: toolByName("ghidra_analyze"),
71
- domain: DOMAIN,
72
- bind: bind((handlers, args) => handlers.handleGhidraAnalyze(args))
58
+ tool: "ghidra_analyze",
59
+ method: "handleGhidraAnalyze"
73
60
  },
74
61
  {
75
- tool: toolByName("generate_hooks"),
76
- domain: DOMAIN,
77
- bind: bind((handlers, args) => handlers.handleGenerateHooks(args))
62
+ tool: "generate_hooks",
63
+ method: "handleGenerateHooks"
78
64
  },
79
65
  {
80
- tool: toolByName("unidbg_emulate"),
81
- domain: DOMAIN,
82
- bind: bind((handlers, args) => handlers.handleUnidbgEmulate(args))
66
+ tool: "unidbg_emulate",
67
+ method: "handleUnidbgEmulate"
83
68
  },
84
69
  {
85
- tool: toolByName("frida_run_script"),
86
- domain: DOMAIN,
87
- bind: bind((handlers, args) => handlers.handleFridaRunScript(args))
70
+ tool: "frida_run_script",
71
+ method: "handleFridaRunScript"
88
72
  },
89
73
  {
90
- tool: toolByName("frida_detach"),
91
- domain: DOMAIN,
92
- bind: bind((handlers, args) => handlers.handleFridaDetach(args))
74
+ tool: "frida_detach",
75
+ method: "handleFridaDetach"
93
76
  },
94
77
  {
95
- tool: toolByName("frida_list_sessions"),
96
- domain: DOMAIN,
97
- bind: bind((handlers, args) => handlers.handleFridaListSessions(args))
78
+ tool: "frida_list_sessions",
79
+ method: "handleFridaListSessions"
98
80
  },
99
81
  {
100
- tool: toolByName("frida_generate_script"),
101
- domain: DOMAIN,
102
- bind: bind((handlers, args) => handlers.handleFridaGenerateScript(args))
82
+ tool: "frida_generate_script",
83
+ method: "handleFridaGenerateScript"
103
84
  },
104
85
  {
105
- tool: toolByName("get_available_plugins"),
106
- domain: DOMAIN,
107
- bind: bind((handlers, args) => handlers.handleGetAvailablePlugins(args))
86
+ tool: "get_available_plugins",
87
+ method: "handleGetAvailablePlugins"
108
88
  },
109
89
  {
110
- tool: toolByName("ghidra_decompile"),
111
- domain: DOMAIN,
112
- bind: bind((handlers, args) => handlers.handleGhidraDecompile(args))
90
+ tool: "ghidra_decompile",
91
+ method: "handleGhidraDecompile"
113
92
  },
114
93
  {
115
- tool: toolByName("ida_decompile"),
116
- domain: DOMAIN,
117
- bind: bind((handlers, args) => handlers.handleIdaDecompile(args))
94
+ tool: "ida_decompile",
95
+ method: "handleIdaDecompile"
118
96
  },
119
97
  {
120
- tool: toolByName("jadx_decompile"),
121
- domain: DOMAIN,
122
- bind: bind((handlers, args) => handlers.handleJadxDecompile(args))
98
+ tool: "jadx_decompile",
99
+ method: "handleJadxDecompile"
123
100
  },
124
101
  {
125
- tool: toolByName("unidbg_launch"),
126
- domain: DOMAIN,
127
- bind: bind((handlers, args) => handlers.handleUnidbgLaunch(args))
102
+ tool: "unidbg_launch",
103
+ method: "handleUnidbgLaunch"
128
104
  },
129
105
  {
130
- tool: toolByName("unidbg_call"),
131
- domain: DOMAIN,
132
- bind: bind((handlers, args) => handlers.handleUnidbgCall(args))
106
+ tool: "unidbg_call",
107
+ method: "handleUnidbgCall"
133
108
  },
134
109
  {
135
- tool: toolByName("unidbg_trace"),
136
- domain: DOMAIN,
137
- bind: bind((handlers, args) => handlers.handleUnidbgTrace(args))
110
+ tool: "unidbg_trace",
111
+ method: "handleUnidbgTrace"
138
112
  },
139
113
  {
140
- tool: toolByName("export_hook_script"),
141
- domain: DOMAIN,
142
- bind: bind((handlers, args) => handlers.handleExportHookScript(args))
114
+ tool: "export_hook_script",
115
+ method: "handleExportHookScript"
143
116
  },
144
117
  {
145
- tool: toolByName("frida_enumerate_functions"),
146
- domain: DOMAIN,
147
- bind: bind((handlers, args) => handlers.handleFridaEnumerateFunctions(args))
118
+ tool: "frida_enumerate_functions",
119
+ method: "handleFridaEnumerateFunctions"
148
120
  },
149
121
  {
150
- tool: toolByName("frida_find_symbols"),
151
- domain: DOMAIN,
152
- bind: bind((handlers, args) => handlers.handleFridaFindSymbols(args))
122
+ tool: "frida_find_symbols",
123
+ method: "handleFridaFindSymbols"
153
124
  }
154
- ],
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,
155
145
  workflowRule: {
156
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],
157
147
  priority: 88,
@@ -1,7 +1,7 @@
1
1
  import { t as logger } from "./logger-Dh_xb7_2.mjs";
2
- import { t as createProgressDebouncer } from "./EventBus-DgPmwpeu.mjs";
3
- import { n as toolLookup, t as ensureBrowserCore } from "./registry-D-6e18lB.mjs";
4
- import { t as coreTools } from "./definitions-C1UvM5Iy.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
5
  //#region src/modules/deobfuscator/LLMDeobfuscator.ts
6
6
  /** Maximum code snippet size sent to the LLM (chars) to avoid token overflow */
7
7
  const MAX_CODE_SNIPPET = 2e3;
@@ -117,9 +117,9 @@ function bindWithProgress(invoke) {
117
117
  return (deps) => {
118
118
  const handler = deps[DEP_KEY];
119
119
  return (args) => {
120
- const _meta = args._meta;
120
+ const meta = args._meta;
121
121
  let onProgress;
122
- if (_meta?.progressToken !== void 0 && globalContext) onProgress = createProgressDebouncer(globalContext.eventBus, _meta.progressToken);
122
+ if (meta?.progressToken !== void 0 && globalContext) onProgress = createProgressDebouncer(globalContext.eventBus, meta.progressToken);
123
123
  return invoke(handler, {
124
124
  ...args,
125
125
  onProgress
@@ -129,8 +129,8 @@ function bindWithProgress(invoke) {
129
129
  }
130
130
  const b = bindWithProgress;
131
131
  async function ensure(ctx) {
132
- const { Deobfuscator, AdvancedDeobfuscator, ObfuscationDetector, CodeAnalyzer, CryptoDetector, HookManager } = await import("./modules-C184v-S9.mjs").then((n) => n.t);
133
- const { CoreAnalysisHandlers } = await import("./analysis-CL9uACt9.mjs");
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
134
  globalContext = ctx;
135
135
  await ensureBrowserCore(ctx);
136
136
  if (!ctx.deobfuscator || !ctx.advancedDeobfuscator || !ctx.obfuscationDetector || !ctx.analyzer || !ctx.cryptoDetector || !ctx.hookManager || !ctx.coreAnalysisHandlers) {
@@ -287,6 +287,26 @@ const manifest = {
287
287
  })
288
288
  }] };
289
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))
290
310
  }
291
311
  ]
292
312
  };
@@ -0,0 +1,39 @@
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 };
@@ -1,6 +1,6 @@
1
- import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
- import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
- import { t as tool } from "./tool-builder-DCbIC5Eo.mjs";
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
4
  //#region src/server/domains/syscall-hook/definitions.ts
5
5
  const BACKEND_OPTIONS = [
6
6
  "etw",
@@ -12,7 +12,7 @@ const SYSCALL_EVENT_SCHEMA = {
12
12
  properties: {
13
13
  timestamp: {
14
14
  type: "number",
15
- description: "Unix timestamp in milliseconds"
15
+ description: "Relative elapsed time in milliseconds since bpftrace start"
16
16
  },
17
17
  pid: {
18
18
  type: "number",
@@ -44,7 +44,7 @@ const SYSCALL_EVENT_SCHEMA = {
44
44
  ]
45
45
  };
46
46
  const syscallHookToolDefinitions = [
47
- tool("syscall_start_monitor", (t) => t.desc("Start syscall monitoring using ETW, strace, or dtrace.").enum("backend", BACKEND_OPTIONS, "Syscall capture backend").number("pid", "Optional PID to scope monitoring to a single process").required("backend")),
47
+ tool("syscall_start_monitor", (t) => t.desc("Start syscall monitoring using ETW, strace, or dtrace.").enum("backend", BACKEND_OPTIONS, "Syscall capture backend").number("pid", "Optional PID to scope monitoring to a single process").boolean("simulate", "Use synthetic events instead of a real system tracer", { default: false }).required("backend")),
48
48
  tool("syscall_stop_monitor", (t) => t.desc("Stop syscall monitoring.").idempotent()),
49
49
  tool("syscall_capture_events", (t) => t.desc("Capture syscall events from the active or last monitoring session.").prop("filter", {
50
50
  type: "object",
@@ -63,61 +63,68 @@ const syscallHookToolDefinitions = [
63
63
  }).query()),
64
64
  tool("syscall_correlate_js", (t) => t.desc("Correlate captured syscalls with likely JavaScript functions.").array("syscallEvents", SYSCALL_EVENT_SCHEMA, "Syscall events to correlate").required("syscallEvents").query()),
65
65
  tool("syscall_filter", (t) => t.desc("Filter captured syscall events by syscall name.").array("names", { type: "string" }, "Syscall names to keep").query()),
66
- tool("syscall_get_stats", (t) => t.desc("Get syscall monitoring statistics.").query())
66
+ tool("syscall_get_stats", (t) => t.desc("Get syscall monitoring statistics.").query()),
67
+ tool("syscall_ebpf_trace", (t) => t.desc("Trace syscalls via Linux eBPF/bpftrace. Requires root or CAP_BPF.").number("pid", "Process ID to trace. 0 = trace all.", { default: 0 }).array("syscalls", { type: "string" }, "Specific syscall names to trace (empty = all)").number("durationSec", "Trace duration in seconds", {
68
+ default: 10,
69
+ minimum: 1,
70
+ maximum: 300
71
+ }).boolean("simulate", "Use synthetic events when bpftrace is unavailable", { default: false }).query())
67
72
  ];
68
73
  //#endregion
69
74
  //#region src/server/domains/syscall-hook/manifest.ts
70
75
  const DOMAIN = "syscall-hook";
71
76
  const DEP_KEY = "syscallHookHandlers";
72
- const lookupTool = toolLookup(syscallHookToolDefinitions);
73
- const bindTool = (invoke) => bindByDepKey(DEP_KEY, invoke);
74
- async function ensure(ctx) {
75
- const { SyscallHookHandlers } = await import("./handlers-C67ktuRN.mjs");
76
- const existing = ctx.getDomainInstance(DEP_KEY);
77
- if (existing) return existing;
78
- const handlers = new SyscallHookHandlers(void 0, void 0, ctx.eventBus);
79
- ctx.setDomainInstance(DEP_KEY, handlers);
80
- return handlers;
81
- }
82
- const manifest = {
83
- kind: "domain-manifest",
84
- version: 1,
77
+ const registrations = defineMethodRegistrations({
85
78
  domain: DOMAIN,
86
79
  depKey: DEP_KEY,
87
- profiles: ["full"],
88
- ensure,
89
- registrations: [
80
+ lookup: toolLookup(syscallHookToolDefinitions),
81
+ entries: [
90
82
  {
91
- tool: lookupTool("syscall_start_monitor"),
92
- domain: DOMAIN,
93
- bind: bindTool((handlers, args) => handlers.handleSyscallStartMonitor(args))
83
+ tool: "syscall_start_monitor",
84
+ method: "handleSyscallStartMonitor"
94
85
  },
95
86
  {
96
- tool: lookupTool("syscall_stop_monitor"),
97
- domain: DOMAIN,
98
- bind: bindTool((handlers) => handlers.handleSyscallStopMonitor())
87
+ tool: "syscall_stop_monitor",
88
+ method: "handleSyscallStopMonitor"
99
89
  },
100
90
  {
101
- tool: lookupTool("syscall_capture_events"),
102
- domain: DOMAIN,
103
- bind: bindTool((handlers, args) => handlers.handleSyscallCaptureEvents(args))
91
+ tool: "syscall_capture_events",
92
+ method: "handleSyscallCaptureEvents"
104
93
  },
105
94
  {
106
- tool: lookupTool("syscall_correlate_js"),
107
- domain: DOMAIN,
108
- bind: bindTool((handlers, args) => handlers.handleSyscallCorrelateJs(args))
95
+ tool: "syscall_correlate_js",
96
+ method: "handleSyscallCorrelateJs"
109
97
  },
110
98
  {
111
- tool: lookupTool("syscall_filter"),
112
- domain: DOMAIN,
113
- bind: bindTool((handlers, args) => handlers.handleSyscallFilter(args))
99
+ tool: "syscall_filter",
100
+ method: "handleSyscallFilter"
114
101
  },
115
102
  {
116
- tool: lookupTool("syscall_get_stats"),
117
- domain: DOMAIN,
118
- bind: bindTool((handlers) => handlers.handleSyscallGetStats())
103
+ tool: "syscall_get_stats",
104
+ method: "handleSyscallGetStats"
105
+ },
106
+ {
107
+ tool: "syscall_ebpf_trace",
108
+ method: "handleSyscallEbpfTrace"
119
109
  }
120
- ],
110
+ ]
111
+ });
112
+ async function ensure(ctx) {
113
+ const { SyscallHookHandlers } = await import("./handlers-4jmR0nMs.mjs");
114
+ const existing = ctx.getDomainInstance(DEP_KEY);
115
+ if (existing) return existing;
116
+ const handlers = new SyscallHookHandlers(void 0, void 0, ctx.eventBus);
117
+ ctx.setDomainInstance(DEP_KEY, handlers);
118
+ return handlers;
119
+ }
120
+ const manifest = {
121
+ kind: "domain-manifest",
122
+ version: 1,
123
+ domain: DOMAIN,
124
+ depKey: DEP_KEY,
125
+ profiles: ["full"],
126
+ ensure,
127
+ registrations,
121
128
  workflowRule: {
122
129
  patterns: [/\b(syscall|etw|strace|dtrace|kernel|system\s?call)\b/i, /(syscall|kernel).*(trace|monitor|capture|filter)/i],
123
130
  priority: 78,
@@ -1,6 +1,6 @@
1
- import { n as toolLookup } from "./registry-D-6e18lB.mjs";
2
- import { t as bindByDepKey } from "./bind-helpers-xFfRF-qm.mjs";
3
- import { t as tool } from "./tool-builder-DCbIC5Eo.mjs";
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
4
  import { resolve } from "node:path";
5
5
  //#region src/server/domains/evidence/definitions.ts
6
6
  const evidenceTools = [
@@ -16,12 +16,29 @@ const evidenceTools = [
16
16
  //#region src/server/domains/evidence/manifest.ts
17
17
  const DOMAIN = "evidence";
18
18
  const DEP_KEY = "evidenceHandlers";
19
- const t = toolLookup(evidenceTools);
20
- const b = (invoke) => bindByDepKey(DEP_KEY, invoke);
19
+ const registrations = defineMethodRegistrations({
20
+ domain: DOMAIN,
21
+ depKey: DEP_KEY,
22
+ lookup: toolLookup(evidenceTools),
23
+ entries: [
24
+ {
25
+ tool: "evidence_query",
26
+ method: "handleQueryDispatch"
27
+ },
28
+ {
29
+ tool: "evidence_export",
30
+ method: "handleExportDispatch"
31
+ },
32
+ {
33
+ tool: "evidence_chain",
34
+ method: "handleChain"
35
+ }
36
+ ]
37
+ });
21
38
  async function ensure(ctx) {
22
- const { ReverseEvidenceGraph } = await import("./ReverseEvidenceGraph-Dlsk94LC.mjs").then((n) => n.t);
23
- const { EvidenceGraphBridge } = await import("./EvidenceGraphBridge-SFesNera.mjs");
24
- const { EvidenceHandlers } = await import("./handlers-tB9Mp9ZK.mjs");
39
+ const { ReverseEvidenceGraph } = await import("./ReverseEvidenceGraph-C02-gXOh.mjs").then((n) => n.t);
40
+ const { EvidenceGraphBridge } = await import("./EvidenceGraphBridge-318Oi0Lf.mjs");
41
+ const { EvidenceHandlers } = await import("./handlers-Bndn6QvE.mjs");
25
42
  let graph = ctx.getDomainInstance("evidenceGraph");
26
43
  if (!graph) {
27
44
  graph = new ReverseEvidenceGraph();
@@ -57,23 +74,7 @@ const manifest = {
57
74
  tools: ["evidence_query", "evidence_export"],
58
75
  hint: "Evidence graph: query by URL/function/scriptId → get provenance chain → export as JSON or Markdown report"
59
76
  },
60
- registrations: [
61
- {
62
- tool: t("evidence_query"),
63
- domain: DOMAIN,
64
- bind: b(async (h, a) => h.handleQueryDispatch(a))
65
- },
66
- {
67
- tool: t("evidence_export"),
68
- domain: DOMAIN,
69
- bind: b(async (h, a) => h.handleExportDispatch(a))
70
- },
71
- {
72
- tool: t("evidence_chain"),
73
- domain: DOMAIN,
74
- bind: b(async (h, a) => h.handleChain(a))
75
- }
76
- ]
77
+ registrations
77
78
  };
78
79
  //#endregion
79
80
  export { manifest as default };