@jshookmcp/jshook 0.3.1 → 0.3.2
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.
- package/LICENSE +661 -661
- package/README.md +11 -3
- package/README.zh.md +11 -3
- package/dist/{AntiCheatDetector-CGVGNfy5.mjs → AntiCheatDetector-B6d4Qe9D.mjs} +1 -1
- package/dist/BrowserSessionCoordinator-BJ-HOxo0.mjs +1 -0
- package/dist/{CodeInjector-BlgyqTOk.mjs → CodeInjector-Cll_7bLJ.mjs} +1 -1
- package/dist/ConsoleMonitor-CxDJV15E.mjs +306 -0
- package/dist/DOMInspector-C19J4zeq.mjs +95 -0
- package/dist/DetailedDataManager-DmQ1LT-W.mjs +1 -0
- package/dist/ExtensionManager-BD724zkO.mjs +1 -0
- package/dist/ExtensionManager.tools-oVMJgPcN.mjs +1 -0
- package/dist/{HardwareBreakpoint-OcJqNFVc.mjs → HardwareBreakpoint-BUfPdp0f.mjs} +1 -1
- package/dist/{HeapAnalyzer-CqAxZzeS.mjs → HeapAnalyzer-B_aqY8oj.mjs} +1 -1
- package/dist/MCPServer.search.handlers.domain-BbS-6LnX.mjs +1 -0
- package/dist/MemoryController-X1XNSn1n.mjs +2 -0
- package/dist/{MemoryScanSession-CaxAjZJf.mjs → MemoryScanSession-DG_F-PjE.mjs} +1 -1
- package/dist/{MemoryScanner-BLYnMJy6.mjs → MemoryScanner-g1_L1ub5.mjs} +1 -1
- package/dist/{NativeMemoryManager.impl-CI554XbY.mjs → NativeMemoryManager.impl-DniBe2wf.mjs} +1 -1
- package/dist/{NativeMemoryManager.utils-DM4NC3FE.mjs → NativeMemoryManager.utils-BHy1P_jM.mjs} +1 -1
- package/dist/NetworkMonitor-B_-au6aV.mjs +185 -0
- package/dist/{PEAnalyzer-DJyaJTQJ.mjs → PEAnalyzer-yWQaGrcx.mjs} +1 -1
- package/dist/PageController-Dfsm1_o7.mjs +1 -0
- package/dist/{PointerChainEngine-5nF9eNlu.mjs → PointerChainEngine-BhCUkmxY.mjs} +1 -1
- package/dist/ProcessRegistry-C-bN48oR.mjs +1 -0
- package/dist/{ResponseBuilder-B2lu4KEl.mjs → ResponseBuilder-BfWP-uaT.mjs} +1 -1
- package/dist/RingBuffer-Dm54ELKT.mjs +1 -0
- package/dist/{ScriptManager-fgqiALgj.mjs → ScriptManager-LWGPTdvD.mjs} +1 -1
- package/dist/ServerRuntimeState-D2bWHqEE.mjs +1 -0
- package/dist/{Speedhack-l6s8L2Qw.mjs → Speedhack-yseDPSZ9.mjs} +1 -1
- package/dist/{StructureAnalyzer-A-WamfYE.mjs → StructureAnalyzer-C5lpuZkg.mjs} +1 -1
- package/dist/ToolCatalog-CYdD9F5f.mjs +1 -0
- package/dist/ToolProbe-C7ZU2x7M.mjs +1 -0
- package/dist/ToolRegistry-C5oB8KP8.mjs +1 -0
- package/dist/{ToolRouter.policy-CFHoN_Lw.mjs → ToolRouter.policy-CfhJczkt.mjs} +2 -2
- package/dist/{TraceRecorder-Dd8jLXpi.mjs → TraceRecorder-BiJWBXHX.mjs} +1 -1
- package/dist/{Win32Debug-CQteFL4F.mjs → Win32Debug-CYrIQBvr.mjs} +1 -1
- package/dist/{WorkflowEngine-CxEp2WXH.mjs → WorkflowEngine-D876meOO.mjs} +1 -1
- package/dist/analysis-D4swdMvq.mjs +6 -0
- package/dist/{antidebug-BOTZH6-0.mjs → antidebug-7L3ygj_9.mjs} +4 -4
- package/dist/apk-packer-BqXcInnX.mjs +1 -0
- package/dist/{artifactRetention-NBdncOEW.mjs → artifactRetention-BCPQASm7.mjs} +1 -1
- package/dist/{artifacts-B5xQuEa_.mjs → artifacts-CkodUM4j.mjs} +1 -1
- package/dist/betterSqlite3-Brtq-SIQ.mjs +1 -0
- package/dist/{binary-instrument-Cf9qqLlM.mjs → binary-instrument-DU7V6TUM.mjs} +1 -1
- package/dist/binary-secrets-PdMVoyt0.mjs +1 -0
- package/dist/{boringssl-inspector-BST5vtKx.mjs → boringssl-inspector-BBaJwwkU.mjs} +1 -1
- package/dist/browser-Qqco2rOT.mjs +11 -0
- package/dist/collector-Bpl6qy2L.mjs +1 -0
- package/dist/constants-BYj8Xek8.mjs +1 -0
- package/dist/{coordination-BbijHEHH.mjs → coordination-CWXW1o8K.mjs} +1 -1
- package/dist/dart-inspector-7AkPeZ_Q.mjs +0 -0
- package/dist/{debugger-CRJq_krh.mjs → debugger-DyALjYMk.mjs} +1 -1
- package/dist/{definitions-DZ8uKusP.mjs → definitions-BWxBke3r.mjs} +1 -1
- package/dist/{definitions-CYFbewnd.mjs → definitions-BYwATKc-.mjs} +1 -1
- package/dist/{definitions-DJklW2sS.mjs → definitions-B_83XfNQ.mjs} +1 -1
- package/dist/definitions-Bf3H1EwV.mjs +1 -0
- package/dist/{definitions-BGobEDQa.mjs → definitions-BftdXgXI.mjs} +1 -1
- package/dist/definitions-Bio5XJYy.mjs +1 -0
- package/dist/definitions-C3qNgSn1.mjs +1 -0
- package/dist/{definitions-NoVp_9Pm.mjs → definitions-CB6vmOer.mjs} +1 -1
- package/dist/{definitions-CoQFbggH.mjs → definitions-CMZRSy3k.mjs} +1 -1
- package/dist/{definitions-DI9YXsJk.mjs → definitions-CQd7yCQH.mjs} +1 -1
- package/dist/{definitions-CIO9O-Sw.mjs → definitions-CT8ln6GQ.mjs} +1 -1
- package/dist/{definitions-BGwNSkVm.mjs → definitions-Cenu6mxo.mjs} +1 -1
- package/dist/definitions-D4g-MS10.mjs +1 -0
- package/dist/{definitions-CuJRsJ6N.mjs → definitions-D5wl_8HN.mjs} +1 -1
- package/dist/{definitions-jXPaVy4P.mjs → definitions-DAQm1Xar.mjs} +1 -1
- package/dist/definitions-DP1vgxEY.mjs +1 -0
- package/dist/{definitions-Dds_zrWx.mjs → definitions-DxFNRQNK2.mjs} +1 -1
- package/dist/{definitions-DtE0XLrT.mjs → definitions-Ibci7e_L.mjs} +1 -1
- package/dist/{definitions-CCP9gphV.mjs → definitions-OeLvmlQy.mjs} +1 -1
- package/dist/{definitions-BbxOUiP-.mjs → definitions-RZYGD_Ey.mjs} +1 -1
- package/dist/definitions-Tls8c0A0.mjs +1 -0
- package/dist/{definitions-LaYTuwQd.mjs → definitions-bybDvnG0.mjs} +1 -1
- package/dist/{definitions-Dgrg7f3D.mjs → definitions-l7TjdE6V.mjs} +1 -1
- package/dist/{encoding-DGcr6Aj_.mjs → encoding-ycOaz8Vr.mjs} +1 -1
- package/dist/{ensure-browser-core-Buls24LQ.mjs → ensure-browser-core-DxWC-NTp.mjs} +1 -1
- package/dist/{factory-Cx_1LorX.mjs → factory-CKr4fAE1.mjs} +1 -1
- package/dist/{graphql-HLf3MS8H.mjs → graphql-B2TiPEow.mjs} +4 -4
- package/dist/{handlers-D49r1-1P.mjs → handlers-8zN_vBIz.mjs} +1 -1
- package/dist/handlers-B62K4FTc.mjs +1 -0
- package/dist/{handlers-BZoPla6E.mjs → handlers-BpDlVVVU.mjs} +1 -1
- package/dist/{handlers-DmQzIc44.mjs → handlers-CMJK7m1c.mjs} +1 -1
- package/dist/{handlers-BLMa4X7l.mjs → handlers-D2ZOul9p.mjs} +2 -2
- package/dist/{handlers-DW5AbYs5.mjs → handlers-D5E40ssn.mjs} +3 -3
- package/dist/{handlers-BP12ZsWc.mjs → handlers-DGbdQAgD.mjs} +2 -2
- package/dist/handlers-DHO3rjsW.mjs +1 -0
- package/dist/{handlers-DCE45Ww8.mjs → handlers-FJ80VzUI.mjs} +1 -1
- package/dist/handlers-VHWrxbM_.mjs +1 -0
- package/dist/{handlers-BggKiVx9.mjs → handlers-l8QIKqBj.mjs} +1 -1
- package/dist/{handlers-DnJRGp7t.mjs → handlers-mPFiNPe8.mjs} +1 -1
- package/dist/{handlers-pVNpaw4A.mjs → handlers-yo_xYzT8.mjs} +1 -1
- package/dist/handlers.impl-D9Hh8Bgl.mjs +1 -0
- package/dist/{hooks-DDKppogd.mjs → hooks-D4XLfgtV.mjs} +1 -1
- package/dist/index.mjs +11 -15
- package/dist/jadx-search-B_Yse0Zh.mjs +5 -0
- package/dist/maintenance-BUpIukhg.mjs +1 -0
- package/dist/{manifest-yu2xiQqe.mjs → manifest-0Jpt_AQa.mjs} +1 -1
- package/dist/{manifest-DMJlcsTR.mjs → manifest-B3fZbSWR.mjs} +1 -1
- package/dist/{manifest-De-6Wf2R.mjs → manifest-B7NB2rh2.mjs} +1 -1
- package/dist/manifest-BDi4nbH1.mjs +1 -0
- package/dist/{manifest-ais9Afrw.mjs → manifest-BLDfkE7n.mjs} +1 -1
- package/dist/manifest-BcXbB4gf.mjs +1 -0
- package/dist/{manifest-DsVh7Y4U.mjs → manifest-Bdnc_vrc.mjs} +1 -1
- package/dist/manifest-BuYKgCnp.mjs +1 -0
- package/dist/{manifest-Cx2IVMUY.mjs → manifest-CBfNnGPV.mjs} +1 -1
- package/dist/{manifest-DC-SMF6b.mjs → manifest-CPS1Xv69.mjs} +1 -1
- package/dist/{manifest-CGq4NpqH2.mjs → manifest-CQH9FhwI.mjs} +1 -1
- package/dist/{manifest-CRIJq4Hs.mjs → manifest-CRryuZF4.mjs} +1 -1
- package/dist/manifest-CctIumog.mjs +1 -0
- package/dist/manifest-CvTe5ZGV2.mjs +1 -0
- package/dist/{manifest-H-EpAyZQ.mjs → manifest-D-5GH0DV.mjs} +1 -1
- package/dist/{manifest-CtPmHAdn.mjs → manifest-D3Ssf3IC.mjs} +1 -1
- package/dist/{manifest-BeP_zJGb2.mjs → manifest-D5ck3NvC.mjs} +1 -1
- package/dist/{manifest-CeQmtQOY.mjs → manifest-D9jUUJAu.mjs} +1 -1
- package/dist/{manifest-C7qV1z7F.mjs → manifest-DCx6w2XV.mjs} +1 -1
- package/dist/{manifest-CFn0359q2.mjs → manifest-DG19q-Ld.mjs} +1 -1
- package/dist/{manifest-CJMGt7Qy.mjs → manifest-DLMlD0Zc.mjs} +1 -1
- package/dist/{manifest-CDeUZGUZ.mjs → manifest-DYpn8w_h.mjs} +1 -1
- package/dist/manifest-DYzWI8Xs.mjs +1 -0
- package/dist/{manifest-DKUorv5M.mjs → manifest-D_obs5F4.mjs} +1 -1
- package/dist/{manifest-D610kxZr.mjs → manifest-DujQqEQR.mjs} +2 -2
- package/dist/manifest-DwL2ik8P.mjs +1 -0
- package/dist/manifest-ItF5P8A12.mjs +1 -0
- package/dist/{manifest-tmb54wmA.mjs → manifest-KZphqIyX.mjs} +1 -1
- package/dist/{manifest-BPuE6oH2.mjs → manifest-LG42zPLY2.mjs} +1 -1
- package/dist/{manifest-D44TaRJU.mjs → manifest-LLdI5m4T.mjs} +1 -1
- package/dist/{manifest-Dgh0uDW-.mjs → manifest-QYbQXJn0.mjs} +1 -1
- package/dist/{manifest-BFGxlDRh.mjs → manifest-RcpX_MyZ.mjs} +2 -2
- package/dist/{manifest-CDiCtaQT.mjs → manifest-YgVd8Sgz.mjs} +1 -1
- package/dist/{manifest-D16xPXro.mjs → manifest-Zy7Odg5J.mjs} +1 -1
- package/dist/manifest-ff1H7Pdp.mjs +1 -0
- package/dist/{manifest-C_hEIjSx.mjs → manifest-iuhF6pTL2.mjs} +1 -1
- package/dist/{manifest-DWUUWBz0.mjs → manifest-nXHmtMSp2.mjs} +1 -1
- package/dist/{manifest-C1nZkTkO.mjs → manifest-xWfu6iLo.mjs} +1 -1
- package/dist/{manifest-C0g67k6U.mjs → manifest-yC16OhL2.mjs} +1 -1
- package/dist/manifest-ztWJoXy4.mjs +1 -0
- package/dist/modules-BPBcSaM-.mjs +333 -0
- package/dist/{mojo-ipc-VGlv3Qyp.mjs → mojo-ipc-BhwsdVUW.mjs} +1 -1
- package/dist/native/scripts/linux/enum-windows.sh +12 -12
- package/dist/native/scripts/macos/enum-windows.applescript +22 -22
- package/dist/native-j8l473zn.mjs +961 -0
- package/dist/network-T0VRwNPd.mjs +7 -0
- package/dist/{outputPaths-BonGThuc.mjs → outputPaths-B4Ic4RZh.mjs} +2 -2
- package/dist/platform-CzaQtISh.mjs +93 -0
- package/dist/process-CWhsCWrf.mjs +2 -0
- package/dist/proxy-DZFlDsG3.mjs +2 -0
- package/dist/{registry-DUHIPE-v.mjs → registry-DH4sc1dt.mjs} +1 -1
- package/dist/renderer-pid-9tJnZ_9N.mjs +1 -0
- package/dist/{search-defaults-D2bY-rzH.mjs → search-defaults-lYBVn_3L.mjs} +1 -1
- package/dist/server/plugin-api.d.mts +19 -36
- package/dist/server/plugin-api.mjs +1 -1
- package/dist/{shared-state-board-Cyg-xh_k.mjs → shared-state-board-BSjXLUV1.mjs} +1 -1
- package/dist/{sourcemap-D6Q1UuAp.mjs → sourcemap-Dh3Ai_ur.mjs} +1 -1
- package/dist/streaming-BcJ0B6ao.mjs +1 -0
- package/dist/transform-DOxzeWPB.mjs +103 -0
- package/dist/wasm-CZ_HTfKR.mjs +174 -0
- package/dist/{webcrack-CsLLJIs9.mjs → webcrack-C1iYG_EX.mjs} +3 -3
- package/dist/{workflow-CYIXtrWD.mjs → workflow-BdwQmARn.mjs} +4 -4
- package/package.json +16 -15
- package/src/native/scripts/linux/enum-windows.sh +12 -12
- package/src/native/scripts/macos/enum-windows.applescript +22 -22
- package/dist/ConsoleMonitor-Dkqc0HNi.mjs +0 -490
- package/dist/DOMInspector-BYY_EJ0C.mjs +0 -95
- package/dist/DetailedDataManager-BniBJlVv.mjs +0 -1
- package/dist/ExtensionManager-erMpqcLk.mjs +0 -1
- package/dist/MCPServer.search.handlers.domain-DVbWL1bT.mjs +0 -1
- package/dist/MemoryController-BaqstM5w.mjs +0 -2
- package/dist/PageController-D9jVkH0i.mjs +0 -1
- package/dist/ProcessRegistry-Hf12LlR9.mjs +0 -1
- package/dist/ToolCatalog-D_IKl1Hu.mjs +0 -1
- package/dist/ToolProbe-xsfALmN3.mjs +0 -1
- package/dist/ToolRegistry-B0Zs-phN.mjs +0 -1
- package/dist/analysis-BuR-NgX8.mjs +0 -5
- package/dist/betterSqlite3-CGaxz4AX.mjs +0 -1
- package/dist/browser-C4Le3xqA.mjs +0 -11
- package/dist/collector-CKO8RPK8.mjs +0 -1
- package/dist/constants-Cp6hBrrx.mjs +0 -1
- package/dist/definitions-CdWEuIkI.mjs +0 -1
- package/dist/definitions-OvGsfxdt.mjs +0 -1
- package/dist/handlers-D3iev8g1.mjs +0 -1
- package/dist/handlers-De5u62Ga2.mjs +0 -1
- package/dist/handlers-S9Ws0IGy.mjs +0 -2
- package/dist/handlers.impl-CD2_kOcC.mjs +0 -1
- package/dist/maintenance-CutEO84j.mjs +0 -1
- package/dist/manifest-BXry5N09.mjs +0 -1
- package/dist/manifest-Cq0j7GZt.mjs +0 -1
- package/dist/manifest-DD3rtxvV.mjs +0 -1
- package/dist/manifest-Dm0o3i2U.mjs +0 -1
- package/dist/manifest-DtEFSRaq.mjs +0 -1
- package/dist/manifest-zrbrpKCC.mjs +0 -1
- package/dist/modules-p-PUNv9r.mjs +0 -332
- package/dist/network-BjZ1Y-GB.mjs +0 -7
- package/dist/platform-C446Lf97.mjs +0 -93
- package/dist/process-C9f2A5zk.mjs +0 -962
- package/dist/proxy-CvRepxgV.mjs +0 -1
- package/dist/streaming-CTX58tbb.mjs +0 -1
- package/dist/transform-Cv9P2vVD.mjs +0 -103
- package/dist/wasm-DaJa8J0V.mjs +0 -174
- /package/dist/{CacheAdapters-CdAxBmVW.mjs → CacheAdapters-CsNtQIR8.mjs} +0 -0
- /package/dist/{DarwinAPI-DC4HGGLl.mjs → DarwinAPI-ZfQdpLNI.mjs} +0 -0
- /package/dist/{EventBus-DgciURGg.mjs → EventBus-DL8iLA09.mjs} +0 -0
- /package/dist/{EvidenceGraphBridge-BIfgB7HP.mjs → EvidenceGraphBridge-BtbwXsLC.mjs} +0 -0
- /package/dist/{FingerprintManager-N7BZqjxP.mjs → FingerprintManager-DT0EAUEo.mjs} +0 -0
- /package/dist/{HookGeneratorBuilders.core.generators.storage-Bf1fbrNK.mjs → HookGeneratorBuilders.core.generators.storage-DzD6dIJd.mjs} +0 -0
- /package/dist/{InstrumentationSession-DxXs0sCp.mjs → InstrumentationSession-D_G1ZPyd.mjs} +0 -0
- /package/dist/{PrerequisiteError-Bl3dK8XA.mjs → PrerequisiteError-BjCQA-gK.mjs} +0 -0
- /package/dist/{ReverseEvidenceGraph-B931HeoW.mjs → ReverseEvidenceGraph-BhSYYdiI.mjs} +0 -0
- /package/dist/{StealthVerifier-Dhbj4B4P.mjs → StealthVerifier-BmcxfwSF.mjs} +0 -0
- /package/dist/{VersionDetector-DMoUWyNm.mjs → VersionDetector-CHT36Az0.mjs} +0 -0
- /package/dist/{Win32API-Bhi5xFBe.mjs → Win32API-eUCF57l_.mjs} +0 -0
- /package/dist/{authorization-schema-B40obG1A.mjs → authorization-schema-BOFwSXUN.mjs} +0 -0
- /package/dist/{bind-helpers-BlAOQrFQ.mjs → bind-helpers-m2U8glkF.mjs} +0 -0
- /package/dist/{capabilities-DbYCv-HF.mjs → capabilities-CyXuKUl1.mjs} +0 -0
- /package/dist/{concurrency-CcK46d0h.mjs → concurrency-DCr8WQ2M.mjs} +0 -0
- /package/dist/{evidence-graph-bridge-B0yhGPcs.mjs → evidence-graph-bridge-CV_UdYqj.mjs} +0 -0
- /package/dist/{flat-target-session-CO5g78k3.mjs → flat-target-session-DvcQX7J5.mjs} +0 -0
- /package/dist/{formatAddress-C7j2fDlM.mjs → formatAddress-vLA_hOJt.mjs} +0 -0
- /package/dist/{handlers-Dv_runVv.mjs → handlers-0yKLRIfo.mjs} +0 -0
- /package/dist/{matchesWildcardPattern-BGqLSmEs.mjs → matchesWildcardPattern-BAG6LvX5.mjs} +0 -0
- /package/dist/{parse-args-Cuk7-xUt.mjs → parse-args-Bw413PlW.mjs} +0 -0
- /package/dist/{playwright-cdp-fallback-BwVR-_T3.mjs → playwright-cdp-fallback-DqFdx9-s.mjs} +0 -0
- /package/dist/{ssrf-policy-T96MR3r6.mjs → ssrf-policy-CsIJGkpd.mjs} +0 -0
- /package/dist/{tool-builder-CI9914Tf.mjs → tool-builder-qif8M9-K.mjs} +0 -0
- /package/dist/{types-DtThH00r.mjs → types-D9EiE5o9.mjs} +0 -0
- /package/dist/{types-CuyefmGT.mjs → types-Fz69RzbZ.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./tool-builder-qif8M9-K.mjs";const r=[n(`trace_recording`,e=>e.desc(`Start or stop trace recording into a SQLite database.`).enum(`action`,[`start`,`stop`],`Recording action`).array(`cdpDomains`,{type:`string`},`CDP domains to record (default: Debugger, Runtime, Network, Page)`).boolean(`recordMemoryDeltas`,`Record memory write deltas`,{default:!0}).boolean(`recordResponseBodies`,`Persist response bodies when available.`,{default:!0}).boolean(`streamResponseChunks`,`Capture response chunks when the browser supports it.`,{default:!0}).number(`networkBodyMaxBytes`,`Maximum response body bytes to persist per request`,{default:10485760,minimum:1024,maximum:104857600}).number(`networkInlineBodyBytes`,`Bodies up to this size are stored inline in SQLite; larger ones go to artifacts`,{default:262144,minimum:1024,maximum:10485760}).required(`action`).idempotent()),n(`start_trace_recording`,e=>e.desc(`Start recording debugger traces into a SQLite database for time-travel.`).array(`cdpDomains`,{type:`string`},`CDP domains to record (default: Debugger, Runtime, Network, Page)`).boolean(`recordMemoryDeltas`,`Record memory write deltas`,{default:!0}).boolean(`recordResponseBodies`,`Persist response bodies when available.`,{default:!0}).boolean(`streamResponseChunks`,`Capture response chunks when the browser supports it.`,{default:!0}).number(`networkBodyMaxBytes`,`Maximum response body bytes to persist per request`,{default:10485760,minimum:1024,maximum:104857600}).number(`networkInlineBodyBytes`,`Bodies up to this size are stored inline in SQLite; larger ones go to artifacts`,{default:262144,minimum:1024,maximum:10485760}).idempotent()),n(`stop_trace_recording`,e=>e.desc(`Stop trace recording and return the final session summary.`).idempotent()),n(`query_trace_sql`,e=>e.desc(`Execute a read-only SQL query against a trace database.`).string(`sql`,`SQL query to execute (SELECT only — write operations are rejected)`).string(`dbPath`,`Path to trace DB file. Uses the active recording if omitted.`).required(`sql`).query()),n(`seek_to_timestamp`,e=>e.desc(`Reconstruct trace state at a specific timestamp.`).number(`timestamp`,`Target timestamp in milliseconds`).string(`dbPath`,`Path to trace DB file. Uses the active recording if omitted.`).number(`windowMs`,`Time window around timestamp to include in ms`,{default:100}).enum(`timeDomain`,[`wall`,`monotonic`],`Interpret timestamp using wall or monotonic time`,{default:`wall`}).required(`timestamp`).query()),n(`trace_get_network_flow`,e=>e.desc(`Get a recorded request-scoped network flow from a trace.`).string(`requestId`,`Network requestId to retrieve from the trace`).string(`dbPath`,`Path to trace DB file. Uses the active recording if omitted.`).boolean(`includeBody`,`Include persisted response body metadata/content when available`,{default:!0}).boolean(`includeChunks`,`Include recorded response chunk timing data`,{default:!0}).boolean(`includeEvents`,`Include related network events from the trace`,{default:!0}).number(`chunkLimit`,`Maximum number of chunks to return`,{default:200,minimum:1,maximum:5e3}).number(`maxBodyBytes`,`Maximum response body bytes to inline before summarizing`,{default:1e5,minimum:1024,maximum:52428800}).boolean(`returnSummary`,`Return body summary even when body is within maxBodyBytes`,{default:!1}).required(`requestId`).query()),n(`diff_heap_snapshots`,e=>e.desc(`Compare two heap snapshots from a trace.`).number(`snapshotId1`,`First snapshot ID (earlier)`).number(`snapshotId2`,`Second snapshot ID (later)`).string(`dbPath`,`Path to trace DB file. Uses the active recording if omitted.`).required(`snapshotId1`,`snapshotId2`).query()),n(`export_trace`,e=>e.desc(`Export a trace database to Chrome Trace Event JSON.`).string(`dbPath`,`Path to trace DB file. Uses the active recording if omitted.`).string(`outputPath`,`Output JSON file path. Auto-generated if omitted.`).idempotent()),n(`summarize_trace`,e=>e.desc(`Generate a compact summary of a trace database.`).enum(`detail`,[`compact`,`balanced`,`full`],`Summary detail level`,{default:`balanced`}).string(`dbPath`,`Path to trace DB file. Uses the active recording if omitted.`).query())],i=`trace`,a=`traceHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`trace_recording`,method:`handleTraceRecording`},{tool:`start_trace_recording`,method:`handleStartTraceRecording`},{tool:`stop_trace_recording`,method:`handleStopTraceRecording`},{tool:`query_trace_sql`,method:`handleQueryTraceSql`},{tool:`seek_to_timestamp`,method:`handleSeekToTimestamp`},{tool:`trace_get_network_flow`,method:`handleGetTraceNetworkFlow`},{tool:`diff_heap_snapshots`,method:`handleDiffHeapSnapshots`},{tool:`export_trace`,method:`handleExportTrace`},{tool:`summarize_trace`,method:`handleSummarizeTrace`}]});async function s(e){let{TraceRecorder:t}=await import(`./TraceRecorder-BiJWBXHX.mjs`),{TraceToolHandlers:n}=await import(`./handlers-CMJK7m1c.mjs`);return(!e.traceRecorder||!e.traceHandlers)&&(e.traceRecorder||=new t,e.traceHandlers||=new n(e.traceRecorder,e)),e.traceHandlers}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`full`],ensure:s,prerequisites:{},workflowRule:{patterns:[/trace/i,/time.?travel/i,/replay/i,/recorded?\s+events?/i],priority:70,tools:[`trace_recording`,`start_trace_recording`,`stop_trace_recording`,`query_trace_sql`,`seek_to_timestamp`,`trace_get_network_flow`,`diff_heap_snapshots`,`export_trace`,`summarize_trace`],hint:`Start recording → perform actions → stop recording → summarize/query/seek/diff/export`},registrations:o};export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./definitions-B_83XfNQ.mjs";const r=`platform`,i=`platformHandlers`,a=t({domain:r,depKey:i,lookup:e(n),entries:[{tool:`platform_capabilities`,method:`handlePlatformCapabilities`},{tool:`miniapp_pkg_scan`,method:`handleMiniappPkgScan`},{tool:`miniapp_pkg_unpack`,method:`handleMiniappPkgUnpack`},{tool:`miniapp_pkg_analyze`,method:`handleMiniappPkgAnalyze`},{tool:`asar_extract`,method:`handleAsarExtract`},{tool:`electron_inspect_app`,method:`handleElectronInspectApp`},{tool:`electron_scan_userdata`,method:`handleElectronScanUserdata`},{tool:`asar_search`,method:`handleAsarSearch`},{tool:`electron_check_fuses`,method:`handleElectronCheckFuses`},{tool:`electron_patch_fuses`,method:`handleElectronPatchFuses`},{tool:`v8_bytecode_decompile`,method:`handleV8BytecodeDecompile`},{tool:`electron_launch_debug`,method:`handleElectronLaunchDebug`},{tool:`electron_debug_status`,method:`handleElectronDebugStatus`},{tool:`electron_ipc_sniff`,method:`handleElectronIPCSniff`}]});async function o(e){let{CodeCollector:t}=await import(`./collector-Bpl6qy2L.mjs`),{PlatformToolHandlers:n}=await import(`./platform-CzaQtISh.mjs`);return e.collector||(e.collector=new t(e.config.puppeteer),e.registerCaches()),e.platformHandlers||=new n(e.collector),e.platformHandlers}const s={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`full`],ensure:o,registrations:a};export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./tool-builder-qif8M9-K.mjs";const r=[`etw`,`strace`,`dtrace`],i={type:`object`,properties:{timestamp:{type:`number`,description:`Relative elapsed time in milliseconds since bpftrace start`},pid:{type:`number`,description:`Process identifier`},syscall:{type:`string`,description:`Observed syscall name`},args:{type:`array`,description:`Stringified syscall arguments`,items:{type:`string`}},returnValue:{type:`number`,description:`Numeric syscall return value if available`},duration:{type:`number`,description:`Execution duration in milliseconds if available`}},required:[`timestamp`,`pid`,`syscall`,`args`]},a=[n(`syscall_start_monitor`,e=>e.desc(`Start syscall monitoring.`).enum(`backend`,r,`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:!1}).required(`backend`)),n(`syscall_stop_monitor`,e=>e.desc(`Stop syscall interception and release all captured events.`).idempotent()),n(`syscall_capture_events`,e=>e.desc(`Capture syscall events from the active or last monitoring session.`).prop(`filter`,{type:`object`,description:`Optional event filter`,properties:{name:{type:`array`,description:`Restrict events to specific syscall names`,items:{type:`string`}},pid:{type:`number`,description:`Restrict events to a specific process ID`}}}).query()),n(`syscall_correlate_js`,e=>e.desc(`Correlate captured syscalls with likely JavaScript functions.`).array(`syscallEvents`,i,`Syscall events to correlate`).required(`syscallEvents`).query()),n(`syscall_filter`,e=>e.desc(`Filter captured syscall events by name, PID, or return value.`).array(`names`,{type:`string`},`Syscall names to keep`).query()),n(`syscall_get_stats`,e=>e.desc(`Get syscall monitoring statistics.`).query()),n(`syscall_ebpf_trace`,e=>e.desc(`Trace syscalls on Linux with eBPF. 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`,{default:10,minimum:1,maximum:300}).boolean(`simulate`,`Use synthetic events when bpftrace is unavailable`,{default:!1}).query())],o=`syscall-hook`,s=`syscallHookHandlers`,c=t({domain:o,depKey:s,lookup:e(a),entries:[{tool:`syscall_start_monitor`,method:`handleSyscallStartMonitor`},{tool:`syscall_stop_monitor`,method:`handleSyscallStopMonitor`},{tool:`syscall_capture_events`,method:`handleSyscallCaptureEvents`},{tool:`syscall_correlate_js`,method:`handleSyscallCorrelateJs`},{tool:`syscall_filter`,method:`handleSyscallFilter`},{tool:`syscall_get_stats`,method:`handleSyscallGetStats`},{tool:`syscall_ebpf_trace`,method:`handleSyscallEbpfTrace`}]});async function l(e){let{SyscallHookHandlers:t}=await import(`./handlers-D2ZOul9p.mjs`),n=e.getDomainInstance(s);if(n)return n;let r=new t(void 0,void 0,e.eventBus);return e.setDomainInstance(s,r),r}const u={kind:`domain-manifest`,version:1,domain:o,depKey:s,profiles:[`full`],ensure:l,registrations:c,workflowRule:{patterns:[/\b(syscall|etw|strace|dtrace|kernel|system\s?call)\b/i,/(syscall|kernel).*(trace|monitor|capture|filter)/i],priority:78,tools:[`syscall_start_monitor`,`syscall_capture_events`,`syscall_correlate_js`],hint:`Syscall tracing: start monitor (ETW/strace/dtrace) → capture events → correlate with JS stacks.`},prerequisites:{syscall_start_monitor:[{condition:`Administrator/root privileges required for ETW and dtrace; Linux strace needs ptrace_scope=0`,fix:`Run the MCP server with elevated privileges, or relax kernel restrictions on Linux`}],syscall_correlate_js:[{condition:`A debugger or v8-inspector session must expose JS stacks`,fix:`Attach the debugger or v8-inspector domain before correlating`}]},toolDependencies:[{from:`memory`,to:`syscall-hook`,relation:`uses`,weight:.5}]};export{u as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./VersionDetector-
|
|
1
|
+
import{t as e}from"./VersionDetector-CHT36Az0.mjs";import{a as t,r as n,t as r}from"./parse-args-Bw413PlW.mjs";import{t as i}from"./bind-helpers-m2U8glkF.mjs";import{t as a}from"./tool-builder-qif8M9-K.mjs";import{spawn as o}from"node:child_process";function s(e){return typeof e==`object`&&!!e}function c(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function l(e){return s(e)?`value`in e?l(e.value):`result`in e?l(e.result):e:e}function u(e){let t=l(e),n=typeof t==`string`?(()=>{try{return JSON.parse(t)}catch{return null}})():t;if(!s(n))return null;let r=c(n.jsHeapSizeUsed)??c(n.usedSize),i=c(n.jsHeapSizeTotal)??c(n.totalSize),a=c(n.jsHeapSizeLimit)??0;if(r===null&&i===null&&a===0)return null;let o={};return r!==null&&(o.jsHeapSizeUsed=r),i!==null&&(o.jsHeapSizeTotal=i),a>0&&(o.jsHeapSizeLimit=a),o}function d(e){return e.jsHeapSizeUsed>0||e.jsHeapSizeTotal>0||e.jsHeapSizeLimit>0}function f(e,t){if(!e&&!t)return null;let n={jsHeapSizeUsed:t?.jsHeapSizeUsed??e?.jsHeapSizeUsed??0,jsHeapSizeTotal:t?.jsHeapSizeTotal??e?.jsHeapSizeTotal??0,jsHeapSizeLimit:t?.jsHeapSizeLimit??e?.jsHeapSizeLimit??0};return d(n)?n:null}function ee(e){let t=l(e);if(!s(t)||!Array.isArray(t.metrics))return null;let n=new Map;for(let e of t.metrics){if(!s(e))continue;let t=typeof e.name==`string`?e.name:null,r=c(e.value);!t||r===null||n.set(t,r)}let r=n.get(`JSHeapUsedSize`)??0,i=n.get(`JSHeapTotalSize`)??0;return r===0&&i===0?null:{jsHeapSizeUsed:r,jsHeapSizeTotal:i}}function p(e){return s(e)&&typeof e.createCDPSession==`function`}function m(e){return s(e)&&typeof e.send==`function`&&typeof e.detach==`function`}var h=class{getPage;session=null;constructor(e){this.getPage=e}async enableHeapProfiler(){let e=await this.createSession();if(!e)throw Error(`V8InspectorClient: cannot create CDP session`);await e.send(`HeapProfiler.enable`),this.session=e}async takeHeapSnapshot(e){this.session||await this.enableHeapProfiler();let t=this.session;if(!t)throw Error(`V8InspectorClient: session not available for heap snapshot`);return new Promise((n,r)=>{let i=[],a=0,o=t=>{let n=t?.chunk;typeof n==`string`&&(i.push(n),a+=Buffer.byteLength(n,`utf8`),e?.(n))};t.on(`HeapProfiler.addHeapSnapshotChunk`,o),t.send(`HeapProfiler.takeHeapSnapshot`,{reportProgress:!1}).then(()=>{t.off(`HeapProfiler.addHeapSnapshotChunk`,o),n(a)}).catch(e=>{t.off(`HeapProfiler.addHeapSnapshotChunk`,o),r(e)})})}async getObjectByObjectId(e){let t=await this.createSession();if(!t)return null;try{let n=await t.send(`Runtime.getProperties`,{objectId:e,ownProperties:!0,accessorPropertiesOnly:!1,generatePreview:!0});if(Array.isArray(n.result))return{kind:`runtime-object`,properties:n.result,internalProperties:Array.isArray(n.internalProperties)?n.internalProperties:[],privateProperties:Array.isArray(n.privateProperties)?n.privateProperties:[],...n.exceptionDetails?{exceptionDetails:n.exceptionDetails}:{}}}catch{}try{return await t.send(`HeapProfiler.getObjectByHeapObjectId`,{objectId:e})}catch{return null}}async getHeapUsage(){this.session||await this.enableHeapProfiler();let e=this.session;if(!e)throw Error(`V8InspectorClient: session not available for heap usage`);let t=null;try{let n=await e.send(`Runtime.getHeapUsage`);t=f(t,u(n))}catch{}try{let n=await e.send(`HeapProfiler.getHeapUsage`);t=f(t,u(n))}catch{}try{let n=await e.send(`Performance.getMetrics`);t=f(t,ee(n))}catch{}try{let n=await e.send(`Runtime.evaluate`,{expression:`
|
|
2
2
|
(() => {
|
|
3
3
|
const m = performance.memory;
|
|
4
4
|
return m
|
|
@@ -120,4 +120,4 @@ if (typeof ${T} !== 'function') {
|
|
|
120
120
|
return null;
|
|
121
121
|
}
|
|
122
122
|
})()
|
|
123
|
-
`,returnByValue:!0,awaitPromise:!1});return W(n)?K(n.result):null}catch{return null}finally{await t.detach().catch(()=>void 0)}}async createSession(){if(!this.getPage)return null;try{let e=await this.getPage();return G(e)?await e.createCDPSession():null}catch{return null}}};async function oe(e,i){let a=t(e,`scriptId`,``).trim(),o=n(e,`functionOffset`),s=r(e,`includeSourceFallback`,!1);if(a.length===0)return{success:!1,error:`scriptId is required`};let c=new U(i?.getPage),l=await c.attemptNativeBytecodeExtraction(a,o??void 0);if(!l)return{success:!1,error:`Unable to inspect bytecode for scriptId "${a}"`};let u=await c.findHiddenClasses(a);if(l.available&&l.bytecode){let e={functionName:l.functionName,bytecode:l.bytecode,sourcePosition:l.sourcePosition};return{success:!0,scriptId:a,functionOffset:o??null,mode:`native`,bytecodeAvailable:!0,format:l.format,rawIgnitionBytecodeAvailable:l.rawIgnitionBytecodeAvailable,supportsNativesSyntax:l.supportsNativesSyntax,reason:l.reason,extraction:e,disassembly:c.disassembleBytecode(l.bytecode),hiddenClasses:u,sourceFallback:null}}let d=s?await c.extractBytecode(a,o??void 0):null;return{success:!0,scriptId:a,functionOffset:o??null,mode:d?`source-fallback`:`unavailable`,bytecodeAvailable:!1,format:null,rawIgnitionBytecodeAvailable:l.rawIgnitionBytecodeAvailable,supportsNativesSyntax:l.supportsNativesSyntax,reason:l.reason,extraction:null,disassembly:[],hiddenClasses:u,sourceFallback:d?{format:`pseudo-bytecode`,extraction:d,disassembly:c.disassembleBytecode(d.bytecode)}:null}}async function se(e,n){let r=t(e,`scriptId`,``).trim();if(r.length===0)return{success:!1,error:`scriptId is required`};let i=await new J(n?.getPage).inspectJIT(r);return{success:!0,scriptId:r,inspectionMode:i.inspectionMode,supportsNativesSyntax:i.supportsNativesSyntax,functions:i.functions}}function ce(e){return{kind:`runtime-object`,source:`debugger-session`,propertyCount:e.length,properties:e}}function Y(e,t){let n=e[t];if(typeof n!=`string`||n.length===0)throw Error(`${t} is required`);return n}function X(e){let t=e.pageController;if(!t)throw Error(`PageController not available`);return t}function Z(e){return new h(Q(e))}function Q(e){let t=X(e);return async()=>await t.getPage()}var $=class{deps;currentSnapshotId=null;constructor(e){this.deps=e}async handle(e,t){let n={v8_heap_snapshot_capture:e=>this.v8_heap_snapshot_capture(e),v8_heap_snapshot_analyze:e=>this.v8_heap_snapshot_analyze(e),v8_heap_diff:e=>this.v8_heap_diff(e),v8_object_inspect:e=>this.v8_object_inspect(e),v8_heap_stats:e=>this.v8_heap_stats(e),v8_bytecode_extract:e=>this.v8_bytecode_extract(e),v8_version_detect:e=>this.v8_version_detect(e),v8_jit_inspect:e=>this.v8_jit_inspect(e)}[e];if(!n)throw Error(`Unknown v8-inspector tool: ${e}`);return n(t)}async v8_heap_snapshot_capture(e){X(this.deps.ctx);let t=await C(e,{getPage:Q(this.deps.ctx),getSnapshot:()=>this.currentSnapshotId,setSnapshot:e=>{this.currentSnapshotId=e},client:this.deps.client});return t.success&&t.snapshotId&&this.deps.ctx.eventBus.emit(`v8:heap_captured`,{snapshotId:t.snapshotId,sizeBytes:t.sizeBytes,timestamp:t.capturedAt}),t}async v8_heap_snapshot_analyze(e){let t=Y(e,`snapshotId`),n=y(t);if(!n)throw Error(`Snapshot ${t} not found`);return{success:!0,snapshotId:t,summary:{chunkCount:n.chunks.length,sizeBytes:n.sizeBytes},objectAddress:`0x${n.sizeBytes.toString(16)}`}}async v8_heap_diff(e){let t=typeof e.beforeSnapshotId==`string`?e.beforeSnapshotId:void 0,n=typeof e.afterSnapshotId==`string`?e.afterSnapshotId:void 0;if(!t||!n)throw Error(`Both beforeSnapshotId and afterSnapshotId are required`);let r=y(t);if(!r)throw Error(`Snapshot ${t} not found`);let i=y(n);if(!i)throw Error(`Snapshot ${n} not found`);return{success:!0,beforeSnapshotId:t,afterSnapshotId:n,sizeDeltaBytes:i.sizeBytes-r.sizeBytes}}async v8_object_inspect(e){let t=Y(e,`address`),n=await this.inspectObjectViaDebugger(t);if(!n)try{n=await this.deps.client.getObjectByObjectId(t)??void 0}catch{}return{success:!0,address:t,...n?{objectData:n}:{}}}async v8_heap_stats(e){X(this.deps.ctx);let t;try{t=await this.deps.client.getHeapUsage()}catch{}return{success:!0,snapshotCount:te().size,...t?{heapUsage:t}:{}}}async v8_bytecode_extract(e){return oe(e,{getPage:this.deps.ctx.pageController?Q(this.deps.ctx):void 0})}async v8_version_detect(e){if(!this.deps.ctx.pageController)return
|
|
123
|
+
`,returnByValue:!0,awaitPromise:!1});return W(n)?K(n.result):null}catch{return null}finally{await t.detach().catch(()=>void 0)}}async createSession(){if(!this.getPage)return null;try{let e=await this.getPage();return G(e)?await e.createCDPSession():null}catch{return null}}};async function oe(e,i){let a=t(e,`scriptId`,``).trim(),o=n(e,`functionOffset`),s=r(e,`includeSourceFallback`,!1);if(a.length===0)return{success:!1,error:`scriptId is required`};let c=new U(i?.getPage),l=await c.attemptNativeBytecodeExtraction(a,o??void 0);if(!l)return{success:!1,error:`Unable to inspect bytecode for scriptId "${a}"`};let u=await c.findHiddenClasses(a);if(l.available&&l.bytecode){let e={functionName:l.functionName,bytecode:l.bytecode,sourcePosition:l.sourcePosition};return{success:!0,scriptId:a,functionOffset:o??null,mode:`native`,bytecodeAvailable:!0,format:l.format,rawIgnitionBytecodeAvailable:l.rawIgnitionBytecodeAvailable,supportsNativesSyntax:l.supportsNativesSyntax,reason:l.reason,extraction:e,disassembly:c.disassembleBytecode(l.bytecode),hiddenClasses:u,sourceFallback:null}}let d=s?await c.extractBytecode(a,o??void 0):null;return{success:!0,scriptId:a,functionOffset:o??null,mode:d?`source-fallback`:`unavailable`,bytecodeAvailable:!1,format:null,rawIgnitionBytecodeAvailable:l.rawIgnitionBytecodeAvailable,supportsNativesSyntax:l.supportsNativesSyntax,reason:l.reason,extraction:null,disassembly:[],hiddenClasses:u,sourceFallback:d?{format:`pseudo-bytecode`,extraction:d,disassembly:c.disassembleBytecode(d.bytecode)}:null}}async function se(e,n){let r=t(e,`scriptId`,``).trim();if(r.length===0)return{success:!1,error:`scriptId is required`};let i=await new J(n?.getPage).inspectJIT(r);return{success:!0,scriptId:r,inspectionMode:i.inspectionMode,supportsNativesSyntax:i.supportsNativesSyntax,functions:i.functions}}function ce(e){return{kind:`runtime-object`,source:`debugger-session`,propertyCount:e.length,properties:e}}function Y(e,t){let n=e[t];if(typeof n!=`string`||n.length===0)throw Error(`${t} is required`);return n}function X(e){let t=e.pageController;if(!t)throw Error(`PageController not available`);return t}function Z(e){return{success:!1,error:`${e}: PageController not available`,capability:`page-controller`,fix:`Call browser_launch or browser_attach first, and select a tab that exposes a stable Page handle.`}}function le(e){return new h(e.pageController?Q(e):void 0)}function Q(e){let t=X(e);return async()=>await t.getPage()}var $=class{deps;currentSnapshotId=null;constructor(e){this.deps=e}async handle(e,t){let n={v8_heap_snapshot_capture:e=>this.v8_heap_snapshot_capture(e),v8_heap_snapshot_analyze:e=>this.v8_heap_snapshot_analyze(e),v8_heap_diff:e=>this.v8_heap_diff(e),v8_object_inspect:e=>this.v8_object_inspect(e),v8_heap_stats:e=>this.v8_heap_stats(e),v8_bytecode_extract:e=>this.v8_bytecode_extract(e),v8_version_detect:e=>this.v8_version_detect(e),v8_jit_inspect:e=>this.v8_jit_inspect(e)}[e];if(!n)throw Error(`Unknown v8-inspector tool: ${e}`);return n(t)}async v8_heap_snapshot_capture(e){X(this.deps.ctx);let t=await C(e,{getPage:Q(this.deps.ctx),getSnapshot:()=>this.currentSnapshotId,setSnapshot:e=>{this.currentSnapshotId=e},client:this.deps.client});return t.success&&t.snapshotId&&this.deps.ctx.eventBus.emit(`v8:heap_captured`,{snapshotId:t.snapshotId,sizeBytes:t.sizeBytes,timestamp:t.capturedAt}),t}async v8_heap_snapshot_analyze(e){let t=Y(e,`snapshotId`),n=y(t);if(!n)throw Error(`Snapshot ${t} not found`);return{success:!0,snapshotId:t,summary:{chunkCount:n.chunks.length,sizeBytes:n.sizeBytes},objectAddress:`0x${n.sizeBytes.toString(16)}`}}async v8_heap_diff(e){let t=typeof e.beforeSnapshotId==`string`?e.beforeSnapshotId:void 0,n=typeof e.afterSnapshotId==`string`?e.afterSnapshotId:void 0;if(!t||!n)throw Error(`Both beforeSnapshotId and afterSnapshotId are required`);let r=y(t);if(!r)throw Error(`Snapshot ${t} not found`);let i=y(n);if(!i)throw Error(`Snapshot ${n} not found`);return{success:!0,beforeSnapshotId:t,afterSnapshotId:n,sizeDeltaBytes:i.sizeBytes-r.sizeBytes}}async v8_object_inspect(e){let t=Y(e,`address`),n=await this.inspectObjectViaDebugger(t);if(!n)try{n=await this.deps.client.getObjectByObjectId(t)??void 0}catch{}return{success:!0,address:t,...n?{objectData:n}:{}}}async v8_heap_stats(e){X(this.deps.ctx);let t;try{t=await this.deps.client.getHeapUsage()}catch{}return{success:!0,snapshotCount:te().size,...t?{heapUsage:t}:{}}}async v8_bytecode_extract(e){return oe(e,{getPage:this.deps.ctx.pageController?Q(this.deps.ctx):void 0})}async v8_version_detect(e){if(!this.deps.ctx.pageController)return Z(`v8_version_detect`);let{VersionDetector:t}=await import(`./VersionDetector-CHT36Az0.mjs`).then(e=>e.n),n=new t(Q(this.deps.ctx));return{success:!0,version:await n.detectV8Version(),features:{nativesSyntax:await n.supportsNativesSyntax()}}}async v8_jit_inspect(e){return se(e,{getPage:this.deps.ctx.pageController?Q(this.deps.ctx):void 0})}async inspectObjectViaDebugger(e){let t=this.deps.ctx.debuggerManager;if(!(!t||typeof t.getObjectPropertiesById!=`function`))try{let n=await t.getObjectPropertiesById(e);return Array.isArray(n)?ce(n):void 0}catch{return}}};const ue=g.map(e=>({tool:e,domain:`v8-inspector`,bind:i(`v8InspectorHandlers`,(t,n)=>t.handle(e.name,n))}));async function de(e){let t=new $({ctx:e,client:le(e)});return e.v8InspectorHandlers=t,t}const fe={kind:`domain-manifest`,version:1,domain:`v8-inspector`,depKey:`v8InspectorHandlers`,profiles:[`workflow`,`full`],registrations:ue,ensure:de,prerequisites:{v8_heap_snapshot_capture:[{condition:`Browser must be connected`,fix:`Call browser_launch or browser_attach first`}],v8_heap_snapshot_analyze:[{condition:`A snapshotId must be provided`,fix:`Capture a heap snapshot before analysis`}],v8_heap_diff:[{condition:`Both snapshot identifiers are required`,fix:`Capture before/after snapshots before diffing`}]},toolDependencies:[{from:`v8_heap_snapshot_capture`,to:`browser_attach`,relation:`requires`,weight:.8},{from:`v8_object_inspect`,to:`v8_heap_snapshot_analyze`,relation:`precedes`,weight:.6}],workflowRule:{patterns:[/v8.*heap/i,/heap.*snapshot/i,/jit/i,/object.*address/i],priority:80,tools:[`v8_heap_snapshot_capture`,`v8_heap_snapshot_analyze`,`v8_object_inspect`,`v8_heap_stats`],hint:`Capture a heap snapshot, analyze it, then inspect interesting objects by address.`}};export{$ as V8InspectorHandlers,fe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./definitions-CT8ln6GQ.mjs";const r=`wasm`,i=`wasmHandlers`,a=t({domain:r,depKey:i,lookup:e(n),entries:[{tool:`wasm_capabilities`,method:`handleWasmCapabilities`},{tool:`wasm_dump`,method:`handleWasmDump`},{tool:`wasm_disassemble`,method:`handleWasmDisassemble`},{tool:`wasm_decompile`,method:`handleWasmDecompile`},{tool:`wasm_inspect_sections`,method:`handleWasmInspectSections`},{tool:`wasm_offline_run`,method:`handleWasmOfflineRun`},{tool:`wasm_optimize`,method:`handleWasmOptimize`},{tool:`wasm_vmp_trace`,method:`handleWasmVmpTrace`},{tool:`wasm_memory_inspect`,method:`handleWasmMemoryInspect`},{tool:`wasm_to_c`,method:`handleWasmToC`},{tool:`wasm_detect_obfuscation`,method:`handleWasmDetectObfuscation`},{tool:`wasm_instrument_trace`,method:`handleWasmInstrumentTrace`}]});async function o(e){let{CodeCollector:t}=await import(`./collector-Bpl6qy2L.mjs`),{WasmToolHandlers:n}=await import(`./wasm-CZ_HTfKR.mjs`);return e.collector||(e.collector=new t(e.config.puppeteer),e.registerCaches()),e.wasmHandlers||=new n(e.collector),e.wasmHandlers}const s={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`full`],ensure:o,registrations:a};export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./definitions-Cenu6mxo.mjs";const r=`antidebug`,i=`antidebugHandlers`,a=t({domain:r,depKey:i,lookup:e(n),entries:[{tool:`antidebug_bypass`,method:`handleAntidebugBypass`},{tool:`antidebug_detect_protections`,method:`handleAntiDebugDetectProtections`}]});async function o(e){let{CodeCollector:t}=await import(`./collector-Bpl6qy2L.mjs`),{AntiDebugToolHandlers:n}=await import(`./antidebug-7L3ygj_9.mjs`);return e.collector||(e.collector=new t(e.config.puppeteer),e.registerCaches()),e.antidebugHandlers||=new n(e.collector),e.antidebugHandlers}const s={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`full`],ensure:o,registrations:a};export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./definitions-Tls8c0A0.mjs";const r=`apk-packer`,i=`apkPackerHandlers`,a=t({domain:r,depKey:i,lookup:e(n),entries:[{tool:`apk_packer_detect`,method:`handleApkPackerDetect`},{tool:`apk_packer_list_signatures`,method:`handleApkPackerListSignatures`},{tool:`apk_signing_block_parse`,method:`handleApkSigningBlockParse`}]});async function o(e){let{ApkPackerHandlers:t}=await import(`./apk-packer-BqXcInnX.mjs`);return e.apkPackerHandlers||=new t,e.apkPackerHandlers}const s={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`full`],ensure:o,registrations:a};export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./ensure-browser-core-DxWC-NTp.mjs";import{t as r}from"./definitions-Ibci7e_L.mjs";const i=`workflow`,a=`workflowHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`page_script_register`,method:`handlePageScriptRegister`},{tool:`page_script_run`,method:`handlePageScriptRun`},{tool:`api_probe_batch`,method:`handleApiProbeBatch`},{tool:`js_bundle_search`,method:`handleJsBundleSearch`},{tool:`list_extension_workflows`,method:`handleListExtensionWorkflows`},{tool:`run_extension_workflow`,method:`handleRunExtensionWorkflow`}]});async function s(e){let{WorkflowHandlers:t}=await import(`./workflow-BdwQmARn.mjs`);await n(e);let r=e.handlerDeps.browserHandlers,i=e.handlerDeps.advancedHandlers;return e.workflowHandlers||=new t({browserHandlers:r,advancedHandlers:i,serverContext:e}),e.workflowHandlers}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`workflow`,`full`],ensure:s,workflowRule:{patterns:[/(workflow|extension|run)/i,/(工作流|扩展|运行)/i],priority:95,tools:[`run_extension_workflow`,`list_extension_workflows`],hint:`Extension workflow: list available workflows -> run the best matching workflow`},prerequisites:{page_script_run:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],api_probe_batch:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`},{condition:`Network monitoring must be enabled`,fix:`Call network_monitor(enable) first`}],js_bundle_search:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],run_extension_workflow:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}]},registrations:o};export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./definitions-CQd7yCQH.mjs";const r=`graphql`,i=`graphqlHandlers`,a=t({domain:r,depKey:i,lookup:e(n),entries:[{tool:`call_graph_analyze`,method:`handleCallGraphAnalyze`},{tool:`script_replace_persist`,method:`handleScriptReplacePersist`},{tool:`graphql_introspect`,method:`handleGraphqlIntrospect`},{tool:`graphql_extract_queries`,method:`handleGraphqlExtractQueries`},{tool:`graphql_replay`,method:`handleGraphqlReplay`},{tool:`graphql_enum_schema`,method:`handleGraphqlEnumSchema`}]});async function o(e){let{CodeCollector:t,ConsoleMonitor:n}=await import(`./collector-Bpl6qy2L.mjs`),{GraphQLToolHandlers:r}=await import(`./graphql-B2TiPEow.mjs`);return e.collector||(e.collector=new t(e.config.puppeteer),e.registerCaches()),e.consoleMonitor||=new n(e.collector),e.graphqlHandlers||=new r({collector:e.collector,consoleMonitor:e.consoleMonitor}),e.graphqlHandlers}const s={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`workflow`,`full`],ensure:o,registrations:a};export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./tool-builder-qif8M9-K.mjs";const r=[n(`extension_list_installed`,e=>e.desc(`List installed extensions from the local registry.`).query()),n(`extension_execute_in_context`,e=>e.desc(`Load an extension and execute a named exported context function.`).string(`pluginId`,`Plugin identifier`).string(`contextName`,`Exported function or context name`).prop(`args`,{type:`object`,description:`Arguments passed to the target context`,additionalProperties:!0}).requiredOpenWorld(`pluginId`,`contextName`)),n(`extension_reload`,e=>e.desc(`Reload an installed extension by unloading and loading it again.`).string(`pluginId`,`Plugin identifier`).requiredOpenWorld(`pluginId`)),n(`extension_uninstall`,e=>e.desc(`Uninstall an extension from the local registry.`).string(`pluginId`,`Plugin identifier`).required(`pluginId`).destructive()),n(`webhook`,e=>e.desc(`Manage webhook endpoints for external callbacks. Actions: create, list, delete, commands.`).enum(`action`,[`create`,`list`,`delete`,`commands`],`Webhook operation`).string(`name`,`Human-readable webhook name (action=create)`).string(`path`,`URL path for the webhook endpoint (action=create)`).string(`secret`,`Optional HMAC secret for webhook authentication (action=create)`).string(`url`,`Optional external callback URL for webhook forwarding (action=create)`).array(`events`,{type:`string`},`List of events to subscribe to (action=create)`).string(`endpointId`,`Webhook endpoint identifier (action=delete, commands)`).string(`status`,`Filter commands by status: pending, processing, completed, failed (action=commands)`).prop(`command`,{type:`object`,description:`Command to enqueue (action=commands, if provided adds to queue instead of listing)`,additionalProperties:!0}).required(`action`))],i=`extension-registry`,a=`extensionRegistryHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`extension_list_installed`,method:`handleListInstalled`},{tool:`extension_execute_in_context`,method:`handleExecuteInContext`},{tool:`extension_reload`,method:`handleReload`},{tool:`extension_uninstall`,method:`handleUninstall`},{tool:`webhook`,method:`handleWebhookDispatch`}]});async function s(e){let{ExtensionRegistryHandlers:t}=await import(`./handlers-BpDlVVVU.mjs`),n=e.getDomainInstance(a);if(n)return n;let r=new t;return e.setDomainInstance(a,r),r.startWebhookServer().catch(()=>void 0),r}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`full`],ensure:s,registrations:o,workflowRule:{patterns:[/\b(extension|plugin|addon|webhook|c2|bluetooth|ble|hid|serial|esp32|registry)\b/i,/(install|uninstall|reload).*(extension|plugin)/i],priority:70,tools:[`install_extension`,`extension_list_installed`,`webhook`],hint:`Plugin + webhook C2 + BLE HID + serial flashing pipeline.`},prerequisites:{webhook:[{condition:`Webhook listen port must be free`,fix:"Pick an unused port via the `port` argument or stop the conflicting service"}]},toolDependencies:[{from:`webhook`,to:`extension_list_installed`,relation:`suggests`,weight:.5}]};export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./registry-
|
|
1
|
+
import{t as e}from"./registry-DH4sc1dt.mjs";import{n as t}from"./bind-helpers-m2U8glkF.mjs";import{t as n}from"./definitions-BftdXgXI.mjs";import{resolve as r}from"node:path";const i=`shared-state-board`,a=`sharedStateBoardHandlers`,o=t({domain:i,depKey:a,lookup:e(n),entries:[{tool:`state_board`,method:`handleDispatch`},{tool:`state_board_watch`,method:`handleWatchDispatch`},{tool:`state_board_io`,method:`handleIODispatch`}]});async function s(e){let{SharedStateBoardHandlers:t}=await import(`./shared-state-board-BSjXLUV1.mjs`);e.sharedStateBoardHandlers||=new t;let n=e.getDomainInstance(`snapshotScheduler`),i=e.getDomainInstance(`snapshotStateDir`);return e.sharedStateBoardHandlers.setPersistNotifier(n?()=>n.notifyDirty():void 0),n&&i&&!e.getDomainInstance(`sharedStateBoardSnapshotRegistered`)&&(n.register(r(i,`state-board`,`current.json`),e.sharedStateBoardHandlers.getStore()),e.setDomainInstance(`sharedStateBoardSnapshotRegistered`,!0)),e.sharedStateBoardHandlers}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`workflow`,`full`],ensure:s,registrations:o};export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./EventBus-DL8iLA09.mjs";import{t}from"./tool-builder-qif8M9-K.mjs";import{t as n}from"./native-j8l473zn.mjs";const r=[`byte`,`int8`,`int16`,`uint16`,`int32`,`uint32`,`int64`,`uint64`,`float`,`double`,`string`,`hex`,`pointer`],i=[`exact`,`unknown_initial`,`changed`,`unchanged`,`increased`,`decreased`,`greater_than`,`less_than`,`between`,`not_equal`],a=[t(`memory_first_scan`,e=>e.desc(`Start a new memory scan session.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`value`,`Value to search for (as string, e.g. "100", "3.14", "48 65 6C 6C 6F")`).enum(`valueType`,[...r],`Data type of the value`).number(`alignment`,`Alignment in bytes (0=unaligned, 4=4-byte aligned). Default: natural alignment for the type.`).number(`maxResults`,`Maximum results to return (default: 1,000,000)`).prop(`regionFilter`,{type:`object`,properties:{writable:{type:`boolean`,description:`Only scan writable regions`},executable:{type:`boolean`,description:`Only scan executable regions`},moduleOnly:{type:`boolean`,description:`Only scan module-backed regions`}},description:`Filter which memory regions to scan`}).requiredOpenWorld(`value`,`valueType`)),t(`memory_next_scan`,e=>e.desc(`Narrow an existing scan session.`).string(`sessionId`,`Scan session ID`).enum(`mode`,[...i],`Comparison mode`).string(`value`,`Target value for exact/greater_than/less_than/between/not_equal modes`).string(`value2`,`Upper bound value for "between" mode`).requiredOpenWorld(`sessionId`,`mode`)),t(`memory_unknown_scan`,e=>e.desc(`Start an unknown initial value scan.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).enum(`valueType`,[...r],`Data type to capture`).number(`alignment`,`Alignment in bytes (default: natural for type)`).number(`maxResults`,`Maximum addresses to capture (default: 5,000,000)`).prop(`regionFilter`,{type:`object`,properties:{writable:{type:`boolean`},executable:{type:`boolean`},moduleOnly:{type:`boolean`}}}).requiredOpenWorld(`valueType`)),t(`memory_pointer_scan`,e=>e.desc(`Find pointers to a target address.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`targetAddress`,`Target address to find pointers to (hex, e.g. "0x7FF612340000")`).number(`maxResults`,`Maximum results (default: 10,000)`).boolean(`moduleOnly`,`Only scan module-backed regions`).required(`targetAddress`).query().openWorld()),t(`memory_group_scan`,e=>e.desc(`Search for multiple values at known offsets simultaneously.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).array(`pattern`,{type:`object`,properties:{offset:{type:`number`,description:`Byte offset from base`},value:{type:`string`,description:`Expected value at offset`},type:{type:`string`,enum:[...r],description:`Value type at offset`}},required:[`offset`,`value`,`type`]},`Array of {offset, value, type} patterns`).number(`alignment`,`Alignment for base address (default: 4)`).number(`maxResults`,`Maximum results (default: 1,000,000)`).required(`pattern`).query()),t(`memory_scan_session`,e=>e.desc(`Manage scan sessions. Actions: list (all sessions), delete (by sessionId), export (as JSON).`).enum(`action`,[`list`,`delete`,`export`],`Session management action`).string(`sessionId`,`Scan session ID (required for delete/export)`).required(`action`)),t(`memory_pointer_chain`,e=>e.desc(`Pointer chain operations: scan (find chains to target), validate, resolve, or export as JSON.`).enum(`action`,[`scan`,`validate`,`resolve`,`export`],`Chain operation`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`targetAddress`,`Target address hex (action=scan)`).number(`maxDepth`,`Max chain depth 1-6 (action=scan, default: 4)`).number(`maxOffset`,`Max offset per level in bytes (action=scan, default: 4096)`).boolean(`staticOnly`,`Only module-relative chains (action=scan, default: false)`).array(`modules`,{type:`string`},`Only scan specific modules (action=scan)`).number(`maxResults`,`Max chains to return (action=scan, default: 1000)`).string(`chains`,`JSON PointerChain[] (action=validate/export)`).string(`chain`,`JSON single PointerChain (action=resolve)`).required(`action`)),t(`memory_structure_analyze`,e=>e.desc(`Analyze memory at an address to infer data structure layout.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`address`,`Base address of the structure (hex)`).number(`size`,`Size to analyze in bytes (default: 256)`).array(`otherInstances`,{type:`string`},`Additional instance addresses for cross-comparison`).boolean(`parseRtti`,`Whether to attempt RTTI parsing (default: true)`).required(`address`).query()),t(`memory_vtable_parse`,e=>e.desc(`Parse a vtable to enumerate virtual function pointers and resolve them to module+offset. Also attempts RTTI parsing for class name and inheritance hierarchy.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`vtableAddress`,`Address of the vtable (hex)`).required(`vtableAddress`).query()),t(`memory_structure_export_c`,e=>e.desc(`Export an inferred structure as a C-style struct definition with offset comments and type annotations.`).string(`structure`,`JSON string of InferredStruct to export`).string(`name`,`Struct name (defaults to RTTI class name or "UnknownStruct")`).required(`structure`).query()),t(`memory_structure_compare`,e=>e.desc(`Compare two structure instances to identify which fields differ (dynamic values like health/position) vs which are constant (vtable, type flags). Useful for finding important fields.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`address1`,`First instance address (hex)`).string(`address2`,`Second instance address (hex)`).number(`size`,`Size to compare in bytes (default: 256)`).required(`address1`,`address2`).query()),t(`memory_breakpoint`,e=>e.desc(`Hardware breakpoint via x64 debug registers (DR0-DR3). Actions: set, remove, list, trace.`).enum(`action`,[`set`,`remove`,`list`,`trace`],`Breakpoint operation`).number(`pid`,`Target process ID (optional when a browser session is attached; action=set/trace)`).string(`address`,`Address hex (action=set/trace)`).enum(`access`,[`read`,`write`,`readwrite`,`execute`],`Access type (action=set/trace)`).number(`size`,`Watch size in bytes (action=set, default: 4)`).string(`breakpointId`,`Breakpoint ID (action=remove)`).number(`maxHits`,`Max hits to collect (action=trace, default: 50)`).number(`timeoutMs`,`Timeout ms (action=trace, default: 10000)`).required(`action`).destructive()),t(`memory_patch_bytes`,e=>e.desc(`Write bytes to target process at address. Saves original bytes for undo. Use for runtime code patching.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`address`,`Address to patch (hex)`).array(`bytes`,{type:`number`},`Byte values to write (e.g. [0x90, 0x90])`).required(`address`,`bytes`).destructive().openWorld()),t(`memory_patch_nop`,e=>e.desc(`NOP out instructions at address (replace with 0x90). Useful for disabling checks or jumps.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`address`,`Address to NOP (hex)`).number(`count`,`Number of bytes to NOP`).required(`address`,`count`).destructive()),t(`memory_patch_undo`,e=>e.desc(`Undo a previous patch by restoring the original bytes.`).string(`patchId`,`Patch ID to undo`).required(`patchId`).destructive()),t(`memory_code_caves`,e=>e.desc(`Find code caves (runs of 0x00 or 0xCC) in executable sections of loaded modules. Returns largest caves first.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).number(`minSize`,`Minimum cave size in bytes (default: 16)`).required().query()),t(`memory_write_value`,e=>e.desc(`Write a typed value to a memory address. Supports undo/redo via memory_write_history(action=undo|redo).`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`address`,`Address to write to (hex)`).string(`value`,`Value to write (as string)`).enum(`valueType`,[...r],`Data type of the value`).required(`address`,`value`,`valueType`).destructive()),t(`memory_freeze`,e=>e.desc(`Freeze or unfreeze a memory address. Freeze continuously writes a value to prevent changes; unfreeze stops it.`).enum(`action`,[`freeze`,`unfreeze`],`Freeze operation`).number(`pid`,`Target process ID (optional when a browser session is attached; action=freeze)`).string(`address`,`Address to freeze hex (action=freeze)`).string(`value`,`Value to maintain (action=freeze)`).enum(`valueType`,[...r],`Data type (action=freeze)`).number(`intervalMs`,`Write interval ms (action=freeze, default: 100)`).string(`freezeId`,`Freeze ID to remove (action=unfreeze)`).required(`action`).destructive()),t(`memory_dump`,e=>e.desc(`Dump memory region as hex with ASCII column. Outputs a formatted hex dump similar to xxd.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`address`,`Start address (hex)`).number(`size`,`Size to dump in bytes (default: 256)`).required(`address`).query()),t(`memory_speedhack`,e=>e.desc(`Hook time APIs to scale process time. Actions: apply (hook + set speed), set (adjust speed).`).enum(`action`,[`apply`,`set`],`Speedhack action`).number(`pid`,`Target process ID (optional when a browser session is attached)`).number(`speed`,`Speed multiplier`).required(`action`,`speed`).destructive()),t(`memory_write_history`,e=>e.desc(`Undo or redo the last memory write operation.`).enum(`action`,[`undo`,`redo`],`History action`).required(`action`).destructive().openWorld()),t(`memory_heap_enumerate`,e=>e.desc(`Enumerate all heaps and heap blocks in a process via Toolhelp32 snapshot. Returns heap list with block counts, sizes, and overall statistics.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).number(`maxBlocks`,`Maximum blocks to enumerate per heap (default: 10000)`).required().query()),t(`memory_heap_stats`,e=>e.desc(`Get detailed heap statistics with size distribution buckets (0-64B, 64B-1KB, 1-64KB, 64KB-1MB, >1MB), fragmentation ratio, and aggregate metrics.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).required().query()),t(`memory_heap_anomalies`,e=>e.desc(`Detect heap anomalies: heap spray patterns (many same-size blocks), possible use-after-free (non-zero free blocks), and suspicious block sizes (0 or >100MB).`).number(`pid`,`Target process ID (optional when a browser session is attached)`).required().query()),t(`memory_pe_headers`,e=>e.desc(`Parse PE headers (DOS, NT, File, Optional) from a module base address in process memory. Returns machine type, entry point, image base, section count, and data directory info.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`moduleBase`,`Module base address (hex, e.g. "0x7ff612340000")`).required(`moduleBase`).query()),t(`memory_pe_imports_exports`,e=>e.desc(`Parse import and/or export tables from a PE module in process memory. Returns DLL names, function names, ordinals, hints, and forwarded exports.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`moduleBase`,`Module base address (hex)`).enum(`table`,[`imports`,`exports`,`both`],`Which table to parse`,{default:`both`}).required(`moduleBase`).query()),t(`memory_inline_hook_detect`,e=>e.desc(`Detect inline hooks by comparing the first 16 bytes of each exported function on disk vs in memory. Identifies JMP rel32, JMP abs64, PUSH+RET hooks and decodes jump targets.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).string(`moduleName`,`Module name filter (optional — scans all modules if omitted)`).required().query()),t(`memory_anticheat_detect`,e=>e.desc(`Scan process imports for anti-debug/anti-cheat mechanisms: IsDebuggerPresent, NtQueryInformationProcess, timing checks (QPC, GetTickCount), thread hiding, heap flag checks, and DR register inspection. Each detection includes a bypass suggestion.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).required().query()),t(`memory_guard_pages`,e=>e.desc(`Find all memory regions with PAGE_GUARD protection in a process. Guard pages are often used as anti-tampering mechanisms or stack overflow detection.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).required().query()),t(`memory_integrity_check`,e=>e.desc(`Check executable memory regions against their corresponding on-disk PE files (.text sections) to detect modifications like inline hooks or code patches.`).number(`pid`,`Target process ID (optional when a browser session is attached)`).required().query())],o=`memory`,s=`memoryScanHandlers`,c=(process.env.JSHOOK_REGISTRY_PLATFORM===`win32`||process.env.JSHOOK_REGISTRY_PLATFORM===`linux`||process.env.JSHOOK_REGISTRY_PLATFORM===`darwin`?process.env.JSHOOK_REGISTRY_PLATFORM:process.platform)===`win32`;let l=null,u=null;async function d(e){let{MemoryScanHandlers:t}=await import(`./handlers.impl-D9Hh8Bgl.mjs`);l=e;let r=e;if(r[s])return r[s];let[i,a,o,d,f,p]=await Promise.all([import(`./MemoryScanner-g1_L1ub5.mjs`),import(`./MemoryScanSession-DG_F-PjE.mjs`),import(`./PointerChainEngine-BhCUkmxY.mjs`),import(`./StructureAnalyzer-C5lpuZkg.mjs`),import(`./CodeInjector-Cll_7bLJ.mjs`),import(`./MemoryController-X1XNSn1n.mjs`)]);if(u||=new n,c){let[n,c,l,m,h]=await Promise.all([import(`./HardwareBreakpoint-BUfPdp0f.mjs`),import(`./Speedhack-yseDPSZ9.mjs`),import(`./HeapAnalyzer-B_aqY8oj.mjs`),import(`./PEAnalyzer-yWQaGrcx.mjs`),import(`./AntiCheatDetector-B6d4Qe9D.mjs`)]);r[s]=new t(i.memoryScanner,a.scanSessionManager,o.pointerChainEngine,d.structureAnalyzer,n.hardwareBreakpointEngine,f.codeInjector,p.memoryController,c.speedhack,l.heapAnalyzer,m.peAnalyzer,h.antiCheatDetector,e.eventBus,u,e)}else r[s]=new t(i.memoryScanner,a.scanSessionManager,o.pointerChainEngine,d.structureAnalyzer,null,f.codeInjector,p.memoryController,null,null,null,null,e.eventBus,u,e);return r[s]}function f(t){return n=>{let r=n[s];return n=>{let i=n._meta,a;return i?.progressToken!==void 0&&l&&(a=e(l.eventBus,i.progressToken)),t(r,{...n,onProgress:a})}}}function p(e){let t=a.find(t=>t.name===e);if(!t)throw Error(`Memory tool not found: ${e}`);return t}const m=new Set([`memory_heap_enumerate`,`memory_heap_stats`,`memory_heap_anomalies`,`memory_pe_headers`,`memory_pe_imports_exports`,`memory_inline_hook_detect`,`memory_anticheat_detect`,`memory_guard_pages`,`memory_integrity_check`,`memory_breakpoint`,`memory_speedhack`]),h=[{tool:p(`memory_first_scan`),domain:o,bind:f((e,t)=>e.handleFirstScan(t))},{tool:p(`memory_next_scan`),domain:o,bind:f((e,t)=>e.handleNextScan(t))},{tool:p(`memory_unknown_scan`),domain:o,bind:f((e,t)=>e.handleUnknownScan(t))},{tool:p(`memory_pointer_scan`),domain:o,bind:f((e,t)=>e.handlePointerScan(t))},{tool:p(`memory_group_scan`),domain:o,bind:f((e,t)=>e.handleGroupScan(t))},{tool:p(`memory_scan_session`),domain:o,bind:f((e,t)=>e.handleScanSessionDispatch(t))},{tool:p(`memory_pointer_chain`),domain:o,bind:f((e,t)=>e.handlePointerChainDispatch(t))},{tool:p(`memory_structure_analyze`),domain:o,bind:f((e,t)=>e.handleStructureAnalyze(t))},{tool:p(`memory_vtable_parse`),domain:o,bind:f((e,t)=>e.handleVtableParse(t))},{tool:p(`memory_structure_export_c`),domain:o,bind:f((e,t)=>e.handleStructureExportC(t))},{tool:p(`memory_structure_compare`),domain:o,bind:f((e,t)=>e.handleStructureCompare(t))},{tool:p(`memory_breakpoint`),domain:o,bind:f((e,t)=>e.handleBreakpointDispatch(t))},{tool:p(`memory_patch_bytes`),domain:o,bind:f((e,t)=>e.handlePatchBytes(t))},{tool:p(`memory_patch_nop`),domain:o,bind:f((e,t)=>e.handlePatchNop(t))},{tool:p(`memory_patch_undo`),domain:o,bind:f((e,t)=>e.handlePatchUndo(t))},{tool:p(`memory_code_caves`),domain:o,bind:f((e,t)=>e.handleCodeCaves(t))},{tool:p(`memory_write_value`),domain:o,bind:f((e,t)=>e.handleWriteValue(t))},{tool:p(`memory_freeze`),domain:o,bind:f((e,t)=>e.handleFreezeDispatch(t))},{tool:p(`memory_dump`),domain:o,bind:f((e,t)=>e.handleDump(t))},{tool:p(`memory_speedhack`),domain:o,bind:f((e,t)=>e.handleSpeedhackDispatch(t))},{tool:p(`memory_write_history`),domain:o,bind:f((e,t)=>e.handleWriteHistoryDispatch(t))},{tool:p(`memory_heap_enumerate`),domain:o,bind:f((e,t)=>e.handleHeapEnumerate(t))},{tool:p(`memory_heap_stats`),domain:o,bind:f((e,t)=>e.handleHeapStats(t))},{tool:p(`memory_heap_anomalies`),domain:o,bind:f((e,t)=>e.handleHeapAnomalies(t))},{tool:p(`memory_pe_headers`),domain:o,bind:f((e,t)=>e.handlePEHeaders(t))},{tool:p(`memory_pe_imports_exports`),domain:o,bind:f((e,t)=>e.handlePEImportsExports(t))},{tool:p(`memory_inline_hook_detect`),domain:o,bind:f((e,t)=>e.handleInlineHookDetect(t))},{tool:p(`memory_anticheat_detect`),domain:o,bind:f((e,t)=>e.handleAntiCheatDetect(t))},{tool:p(`memory_guard_pages`),domain:o,bind:f((e,t)=>e.handleGuardPages(t))},{tool:p(`memory_integrity_check`),domain:o,bind:f((e,t)=>e.handleIntegrityCheck(t))}],g={kind:`domain-manifest`,version:1,domain:o,depKey:s,profiles:[`full`],ensure:d,registrations:c?h:h.filter(e=>!m.has(e.tool.name)),workflowRule:{patterns:[/memory\s*scan/i,/cheat\s*engine/i,/find\s*(value|address|variable|struct)/i,/scan\s*(for|memory)/i,/pointer\s*(chain|scan)/i,/struct(ure)?\s*(analy|infer|dissect)/i,/vtable|rtti/i,/breakpoint|watchpoint|hardware\s*bp/i,/patch\s*(byte|nop|code)/i,/code\s*cave/i,/freeze|unfreeze/i,/speedhack|time\s*(hack|scale)/i,/memory\s*(dump|hex)/i,/undo|redo/i,/heap|堆\s*(分析|枚举|异常)/i,/PE\s*(header|import|export)|inline.*hook/i,/anti.?cheat|anti.?debug|反作弊|反调试/i,/guard\s*page|integrity\s*check|代码完整性/i,/内存\s*(扫描|搜索|分析|结构|断点|注入|冻结|加速|堆|模块|反作弊)/i],priority:90,tools:[`memory_first_scan`,`memory_next_scan`,`memory_unknown_scan`,`memory_pointer_chain`,`memory_structure_analyze`,`memory_vtable_parse`,`memory_scan_session`,...c?[`memory_breakpoint`,`memory_speedhack`]:[],`memory_patch_bytes`,`memory_freeze`,`memory_dump`,...c?[`memory_speedhack`,`memory_heap_enumerate`,`memory_pe_headers`,`memory_anticheat_detect`]:[],`memory_write_history`],hint:c?`Memory domain: scan → narrow → pointer chain → structure | breakpoint trace → patch/NOP → freeze speedhack | heap analysis | PE introspection | anti-cheat detection`:`Memory domain: scan → narrow → pointer chain → structure | patch/NOP → freeze | dump`}};export{g as default};
|