@jshookmcp/jshook 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -661
- package/README.md +11 -3
- package/README.zh.md +11 -3
- package/dist/{AntiCheatDetector-CGVGNfy5.mjs → AntiCheatDetector-CUpZBh5O.mjs} +1 -1
- package/dist/BrowserSessionCoordinator-QIt3tetp.mjs +1 -0
- package/dist/CodeInjector-Btj9upnf.mjs +1 -0
- package/dist/ConsoleMonitor-DIjN5Afa.mjs +306 -0
- package/dist/{DarwinAPI-DC4HGGLl.mjs → DarwinAPI-BuMPGzHm.mjs} +1 -1
- package/dist/DetailedDataManager-Z77fDl9Z.mjs +5 -0
- package/dist/ExtensionManager.tools-CIGOWViz.mjs +1 -0
- package/dist/{FingerprintManager-N7BZqjxP.mjs → FingerprintManager-BkDSsjjP.mjs} +1 -1
- package/dist/{HardwareBreakpoint-OcJqNFVc.mjs → HardwareBreakpoint-DMAMcPyB.mjs} +1 -1
- package/dist/{HeapAnalyzer-CqAxZzeS.mjs → HeapAnalyzer-Yj348FYt.mjs} +1 -1
- package/dist/MCPServer.activation.ttl-CEGNBycZ.mjs +1 -0
- package/dist/MCPServer.search.helpers-Cs1JpKbu.mjs +1 -0
- package/dist/MCPServer.search.validation-DnifPCCv.mjs +1 -0
- package/dist/MemoryController-DjtgiING.mjs +2 -0
- package/dist/{MemoryScanSession-CaxAjZJf.mjs → MemoryScanSession-zfoVZJB0.mjs} +1 -1
- package/dist/MemoryScanner-Dxd657li.mjs +1 -0
- package/dist/{NativeMemoryManager.utils-DM4NC3FE.mjs → NativeMemoryManager.utils-Bu8srMEF.mjs} +1 -1
- package/dist/{PEAnalyzer-DJyaJTQJ.mjs → PEAnalyzer-CMu9Ua9T.mjs} +1 -1
- package/dist/PointerChainEngine-CaSC1Mry.mjs +1 -0
- package/dist/ProcessRegistry-D5y1yuP2.mjs +1 -0
- package/dist/{ResponseBuilder-B2lu4KEl.mjs → ResponseBuilder-nPXl_khE.mjs} +1 -1
- package/dist/{ReverseEvidenceGraph-B931HeoW.mjs → ReverseEvidenceGraph-BksOpsPs.mjs} +1 -1
- package/dist/RingBuffer-B6RTHmij.mjs +1 -0
- package/dist/ServerRuntimeState-CgqBBwfd.mjs +1 -0
- package/dist/{Speedhack-l6s8L2Qw.mjs → Speedhack-pwXTHxOY.mjs} +1 -1
- package/dist/{StructureAnalyzer-A-WamfYE.mjs → StructureAnalyzer-BseGzsSl.mjs} +2 -2
- package/dist/ToolCatalog-DgmQXdsm.mjs +1 -0
- package/dist/ToolHandlerMap-7HWoIgQO.mjs +1 -0
- package/dist/ToolProbe-DQiREmNp.mjs +1 -0
- package/dist/ToolRegistry-eMZEBiR1.mjs +1 -0
- package/dist/ToolRouter.policy-UKBlFlbh.mjs +4 -0
- package/dist/{TraceRecorder-Dd8jLXpi.mjs → TraceRecorder-B5ktv3nP.mjs} +2 -2
- package/dist/VersionDetector-CmPJmaJg.mjs +1 -0
- package/dist/{Win32API-Bhi5xFBe.mjs → Win32API-DoP3MMHS.mjs} +1 -1
- package/dist/{Win32Debug-CQteFL4F.mjs → Win32Debug-DwF8mQGm.mjs} +1 -1
- package/dist/{WorkflowEngine-CxEp2WXH.mjs → WorkflowEngine-CldHG5b4.mjs} +1 -1
- package/dist/analysis-C-ln0Brh.mjs +6 -0
- package/dist/antidebug-CsnpOR9z.mjs +1 -0
- package/dist/{artifactRetention-NBdncOEW.mjs → artifactRetention-DkYKLOvi.mjs} +1 -1
- package/dist/{artifacts-B5xQuEa_.mjs → artifacts-D-4pSS_N.mjs} +1 -1
- package/dist/betterSqlite3-Bdo_ifuJ.mjs +1 -0
- package/dist/binary-instrument-BeZ224mZ.mjs +9 -0
- package/dist/{boringssl-inspector-BST5vtKx.mjs → boringssl-inspector-ZOCkaipa.mjs} +2 -2
- package/dist/browser-BUaB25bk.mjs +11 -0
- package/dist/{handlers-pVNpaw4A.mjs → canvas-396ieNv5.mjs} +22 -22
- package/dist/collector-CB2syQEg.mjs +1 -0
- package/dist/constants-DMv3svps.mjs +2 -0
- package/dist/coordination-Dbohmj6D.mjs +1 -0
- package/dist/dart-inspector-LhEqRITQ.mjs +0 -0
- package/dist/debugger-CLzkObIO.mjs +1 -0
- package/dist/{definitions-CCP9gphV.mjs → definitions-0hxnrDU72.mjs} +1 -1
- package/dist/definitions-B3a9QC2t.mjs +1 -0
- package/dist/{definitions-DtE0XLrT.mjs → definitions-BOvju5t2.mjs} +1 -1
- package/dist/definitions-CXj_cEVt.mjs +1 -0
- package/dist/definitions-Co6AvTjH.mjs +1 -0
- package/dist/{definitions-Dds_zrWx.mjs → definitions-Cv5r8xwq.mjs} +1 -1
- package/dist/definitions-DBYSxChX.mjs +1 -0
- package/dist/{definitions-DI9YXsJk.mjs → definitions-D_dTDX9B.mjs} +1 -1
- package/dist/{definitions-Dgrg7f3D.mjs → definitions-Db9t2ddh.mjs} +1 -1
- package/dist/{definitions-DZ8uKusP.mjs → definitions-DbN2CjI2.mjs} +1 -1
- package/dist/{definitions-jXPaVy4P.mjs → definitions-DlmmHmZc.mjs} +1 -1
- package/dist/definitions-DnYpoGig.mjs +1 -0
- package/dist/{definitions-CYFbewnd.mjs → definitions-DtZ6Ktx2.mjs} +1 -1
- package/dist/{definitions-CuJRsJ6N.mjs → definitions-DuIPS8gq.mjs} +1 -1
- package/dist/{definitions-BbxOUiP-.mjs → definitions-DywfwPMb.mjs} +1 -1
- package/dist/definitions-EGmqr85H.mjs +1 -0
- package/dist/{definitions-LaYTuwQd.mjs → definitions-Fetw_Cge.mjs} +3 -3
- package/dist/{definitions-NoVp_9Pm.mjs → definitions-LdkeuOeA.mjs} +1 -1
- package/dist/{definitions-DJklW2sS.mjs → definitions-Ym8niHDb.mjs} +1 -1
- package/dist/{definitions-BGwNSkVm.mjs → definitions-aeRd5DAR.mjs} +1 -1
- package/dist/{definitions-CIO9O-Sw.mjs → definitions-cnG6tj17.mjs} +1 -1
- package/dist/{encoding-DGcr6Aj_.mjs → encoding-B4xZWErf.mjs} +2 -2
- package/dist/ensure-browser-core-JHwDo5ql.mjs +285 -0
- package/dist/{factory-Cx_1LorX.mjs → factory-BxNdBiZa.mjs} +1 -1
- package/dist/{graphql-HLf3MS8H.mjs → graphql-GBWsZ9xC.mjs} +4 -4
- package/dist/{handlers-DW5AbYs5.mjs → handlers-5nzR8B0a.mjs} +3 -3
- package/dist/handlers-6iNsXOVT.mjs +7 -0
- package/dist/{handlers-BZoPla6E.mjs → handlers-BZ8n6Hvf.mjs} +1 -1
- package/dist/{handlers-Dv_runVv.mjs → handlers-BbLxNbbT.mjs} +1 -1
- package/dist/{handlers-BP12ZsWc.mjs → handlers-BbS4hssc.mjs} +2 -2
- package/dist/{handlers-BggKiVx9.mjs → handlers-CIKOP4aI.mjs} +2 -2
- package/dist/handlers-CWKBBjai.mjs +1 -0
- package/dist/handlers-Cmb6SoRC.mjs +1 -0
- package/dist/handlers-CrJsKnEI.mjs +1 -0
- package/dist/{antidebug-BOTZH6-0.mjs → handlers-DB6xVVWq.mjs} +4 -4
- package/dist/{handlers-DmQzIc44.mjs → handlers-DOOCWUNR.mjs} +3 -3
- package/dist/{handlers-BLMa4X7l.mjs → handlers-Z_B5aVaU.mjs} +2 -2
- package/dist/handlers-gVscChvl.mjs +1 -0
- package/dist/handlers-xFvI9P_y.mjs +1 -0
- package/dist/handlers.impl-BsFTW6SD.mjs +1 -0
- package/dist/{hooks-DDKppogd.mjs → hooks-DPouiS7I.mjs} +9 -9
- package/dist/index.mjs +11 -15
- package/dist/macro-p8kuJVcm.mjs +2 -0
- package/dist/maintenance-DAqADb6Z.mjs +302 -0
- package/dist/manifest-4lmM6MZR.mjs +1 -0
- package/dist/{manifest-D610kxZr.mjs → manifest-AxaxRSt6.mjs} +2 -2
- package/dist/{manifest-CDeUZGUZ.mjs → manifest-BIqRE1Qz.mjs} +1 -1
- package/dist/{manifest-Dm0o3i2U.mjs → manifest-Box-jWfr.mjs} +1 -1
- package/dist/manifest-Bp33di0Q.mjs +1 -0
- package/dist/{manifest-CGq4NpqH2.mjs → manifest-BvRX4nRP.mjs} +1 -1
- package/dist/{manifest-yu2xiQqe.mjs → manifest-C6KoB1XE.mjs} +1 -1
- package/dist/manifest-C7TdXCWY.mjs +1 -0
- package/dist/manifest-CM-n64K0.mjs +1 -0
- package/dist/{manifest-DWUUWBz0.mjs → manifest-CUokxCUN.mjs} +1 -1
- package/dist/manifest-CWJS45iO.mjs +1 -0
- package/dist/{manifest-D44TaRJU.mjs → manifest-Cdxdgo-D.mjs} +1 -1
- package/dist/{manifest-DKUorv5M.mjs → manifest-Cf6SmamD.mjs} +1 -1
- package/dist/manifest-Cgxu2qdv.mjs +1 -0
- package/dist/manifest-CowGSURa2.mjs +1 -0
- package/dist/manifest-CsGIrh34.mjs +1 -0
- package/dist/manifest-CvDpVToN.mjs +1 -0
- package/dist/manifest-D8TL9RLE.mjs +1 -0
- package/dist/{manifest-C7qV1z7F.mjs → manifest-DIhtCBe6.mjs} +1 -1
- package/dist/{manifest-CeQmtQOY.mjs → manifest-DJbruNOg.mjs} +1 -1
- package/dist/manifest-DLGtZH-0.mjs +1 -0
- package/dist/manifest-DXHdPt2T.mjs +1 -0
- package/dist/{manifest-DMJlcsTR.mjs → manifest-Dg5ScOyW.mjs} +1 -1
- package/dist/{manifest-C1nZkTkO.mjs → manifest-DzGoTS0R.mjs} +1 -1
- package/dist/manifest-G2H52LKz.mjs +131 -0
- package/dist/manifest-P0Futrgb.mjs +1 -0
- package/dist/{manifest-CDiCtaQT.mjs → manifest-Qw7xgvjv.mjs} +1 -1
- package/dist/{manifest-Dgh0uDW-.mjs → manifest-W3qvVrP2.mjs} +1 -1
- package/dist/manifest-dG6MuR1U.mjs +1 -0
- package/dist/manifest-nWXtgq5Y2.mjs +1 -0
- package/dist/{manifest-BPuE6oH2.mjs → manifest-vp1upSSq.mjs} +1 -1
- package/dist/modules-DO3jXCgj.mjs +333 -0
- package/dist/{mojo-ipc-VGlv3Qyp.mjs → mojo-ipc-Be-ccWrc.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-g095qhpK.mjs +961 -0
- package/dist/network-Dvxm7eEI.mjs +7 -0
- package/dist/outputPaths-D2ddHrOJ.mjs +2 -0
- package/dist/{parse-args-Cuk7-xUt.mjs → parse-args-ngRrvF9e.mjs} +1 -1
- package/dist/platform-DjWbuiF8.mjs +93 -0
- package/dist/process-Dq5I-KZW.mjs +2 -0
- package/dist/proxy-DPNgM7TE.mjs +2 -0
- package/dist/{registry-DUHIPE-v.mjs → registry-xB8Wgmyj.mjs} +1 -1
- package/dist/renderer-pid-7jbTR8f5.mjs +1 -0
- package/dist/search-defaults-CJik67or.mjs +1 -0
- package/dist/server/plugin-api.d.mts +19 -36
- package/dist/server/plugin-api.mjs +1 -1
- package/dist/sourcemap-DqEW15Ao.mjs +1 -0
- package/dist/streaming-Dbk4eStJ.mjs +1 -0
- package/dist/transform-D-peM3aO.mjs +103 -0
- package/dist/wasm-CZajRaad.mjs +174 -0
- package/dist/{webcrack-CsLLJIs9.mjs → webcrack-phEfVt5y.mjs} +3 -3
- package/dist/{workflow-CYIXtrWD.mjs → workflow-wkXb3x-U.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/CodeInjector-BlgyqTOk.mjs +0 -1
- 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/MemoryScanner-BLYnMJy6.mjs +0 -1
- package/dist/NativeMemoryManager.impl-CI554XbY.mjs +0 -1
- package/dist/PageController-D9jVkH0i.mjs +0 -1
- package/dist/PointerChainEngine-5nF9eNlu.mjs +0 -1
- package/dist/PrerequisiteError-Bl3dK8XA.mjs +0 -1
- package/dist/ProcessRegistry-Hf12LlR9.mjs +0 -1
- package/dist/ScriptManager-fgqiALgj.mjs +0 -7
- 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/ToolRouter.policy-CFHoN_Lw.mjs +0 -4
- package/dist/VersionDetector-DMoUWyNm.mjs +0 -9
- package/dist/analysis-BuR-NgX8.mjs +0 -5
- package/dist/betterSqlite3-CGaxz4AX.mjs +0 -1
- package/dist/binary-instrument-Cf9qqLlM.mjs +0 -7
- package/dist/browser-C4Le3xqA.mjs +0 -11
- package/dist/collector-CKO8RPK8.mjs +0 -1
- package/dist/constants-Cp6hBrrx.mjs +0 -1
- package/dist/coordination-BbijHEHH.mjs +0 -1
- package/dist/debugger-CRJq_krh.mjs +0 -1
- package/dist/definitions-BGobEDQa.mjs +0 -1
- package/dist/definitions-CdWEuIkI.mjs +0 -1
- package/dist/definitions-CoQFbggH.mjs +0 -1
- package/dist/definitions-OvGsfxdt.mjs +0 -1
- package/dist/ensure-browser-core-Buls24LQ.mjs +0 -1
- package/dist/flat-target-session-CO5g78k3.mjs +0 -1
- package/dist/handlers-D3iev8g1.mjs +0 -1
- package/dist/handlers-D49r1-1P.mjs +0 -1
- package/dist/handlers-DCE45Ww8.mjs +0 -2
- package/dist/handlers-De5u62Ga2.mjs +0 -1
- package/dist/handlers-DnJRGp7t.mjs +0 -302
- 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-BFGxlDRh.mjs +0 -123
- package/dist/manifest-BXry5N09.mjs +0 -1
- package/dist/manifest-BeP_zJGb2.mjs +0 -1
- package/dist/manifest-C0g67k6U.mjs +0 -1
- package/dist/manifest-CFn0359q2.mjs +0 -1
- package/dist/manifest-CJMGt7Qy.mjs +0 -1
- package/dist/manifest-CRIJq4Hs.mjs +0 -1
- package/dist/manifest-C_hEIjSx.mjs +0 -1
- package/dist/manifest-Cq0j7GZt.mjs +0 -1
- package/dist/manifest-CtPmHAdn.mjs +0 -1
- package/dist/manifest-Cx2IVMUY.mjs +0 -1
- package/dist/manifest-D16xPXro.mjs +0 -1
- package/dist/manifest-DC-SMF6b.mjs +0 -1
- package/dist/manifest-DD3rtxvV.mjs +0 -1
- package/dist/manifest-De-6Wf2R.mjs +0 -1
- package/dist/manifest-DsVh7Y4U.mjs +0 -1
- package/dist/manifest-DtEFSRaq.mjs +0 -1
- package/dist/manifest-H-EpAyZQ.mjs +0 -1
- package/dist/manifest-ais9Afrw.mjs +0 -1
- package/dist/manifest-tmb54wmA.mjs +0 -1
- package/dist/manifest-zrbrpKCC.mjs +0 -1
- package/dist/matchesWildcardPattern-BGqLSmEs.mjs +0 -1
- package/dist/modules-p-PUNv9r.mjs +0 -332
- package/dist/network-BjZ1Y-GB.mjs +0 -7
- package/dist/outputPaths-BonGThuc.mjs +0 -2
- package/dist/platform-C446Lf97.mjs +0 -93
- package/dist/playwright-cdp-fallback-BwVR-_T3.mjs +0 -1
- package/dist/process-C9f2A5zk.mjs +0 -962
- package/dist/proxy-CvRepxgV.mjs +0 -1
- package/dist/search-defaults-D2bY-rzH.mjs +0 -1
- package/dist/shared-state-board-Cyg-xh_k.mjs +0 -1
- package/dist/sourcemap-D6Q1UuAp.mjs +0 -1
- package/dist/streaming-CTX58tbb.mjs +0 -1
- package/dist/transform-Cv9P2vVD.mjs +0 -103
- package/dist/types-DtThH00r.mjs +0 -1
- package/dist/wasm-DaJa8J0V.mjs +0 -174
- /package/dist/{CacheAdapters-CdAxBmVW.mjs → CacheAdapters-BlDrQg8f.mjs} +0 -0
- /package/dist/{EventBus-DgciURGg.mjs → EventBus-Cm-t-B65.mjs} +0 -0
- /package/dist/{EvidenceGraphBridge-BIfgB7HP.mjs → EvidenceGraphBridge-DBDc0wUA.mjs} +0 -0
- /package/dist/{HookGeneratorBuilders.core.generators.storage-Bf1fbrNK.mjs → HookGeneratorBuilders.core.generators.storage-CWaWpOHa.mjs} +0 -0
- /package/dist/{InstrumentationSession-DxXs0sCp.mjs → InstrumentationSession-c5qZyp7d.mjs} +0 -0
- /package/dist/{StealthVerifier-Dhbj4B4P.mjs → StealthVerifier-DMBrtkhN.mjs} +0 -0
- /package/dist/{ToolError-DWU_z7gp.mjs → ToolError-g3rjWzhx.mjs} +0 -0
- /package/dist/{authorization-schema-B40obG1A.mjs → authorization-schema-Jtikc5Yt.mjs} +0 -0
- /package/dist/{bind-helpers-BlAOQrFQ.mjs → bind-helpers-D0mGAOof.mjs} +0 -0
- /package/dist/{capabilities-DbYCv-HF.mjs → capabilities-L1ax5EHS.mjs} +0 -0
- /package/dist/{chunk-C_pMuVsO.mjs → chunk-88NL7fhV.mjs} +0 -0
- /package/dist/{concurrency-CcK46d0h.mjs → concurrency-Dehnw4JC.mjs} +0 -0
- /package/dist/{evidence-graph-bridge-B0yhGPcs.mjs → evidence-graph-bridge-eT9icP6a.mjs} +0 -0
- /package/dist/{formatAddress-C7j2fDlM.mjs → formatAddress-DAcw4Ckg.mjs} +0 -0
- /package/dist/{logger-sBC6IdRT.mjs → logger-CCikqqvj.mjs} +0 -0
- /package/dist/{response-C7rKQst4.mjs → response-B1RuVVfD.mjs} +0 -0
- /package/dist/{ssrf-policy-T96MR3r6.mjs → ssrf-policy-B72vdy23.mjs} +0 -0
- /package/dist/{tool-builder-CI9914Tf.mjs → tool-builder-CpLh-UQd.mjs} +0 -0
- /package/dist/{types-CuyefmGT.mjs → types-BzPBzmVB.mjs} +0 -0
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./VersionDetector-DMoUWyNm.mjs";import{a as t,r as n,t as r}from"./parse-args-Cuk7-xUt.mjs";import{t as i}from"./bind-helpers-BlAOQrFQ.mjs";import{t as a}from"./tool-builder-CI9914Tf.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
|
-
(() => {
|
|
3
|
-
const m = performance.memory;
|
|
4
|
-
return m
|
|
5
|
-
? {
|
|
6
|
-
jsHeapSizeUsed: m.usedJSHeapSize,
|
|
7
|
-
jsHeapSizeTotal: m.totalJSHeapSize,
|
|
8
|
-
jsHeapSizeLimit: m.jsHeapSizeLimit
|
|
9
|
-
}
|
|
10
|
-
: null;
|
|
11
|
-
})()
|
|
12
|
-
`,returnByValue:!0});t=f(t,u(n))}catch{}if(!t)throw Error(`V8InspectorClient: heap usage metrics unavailable`);return t}async dispose(){this.session&&=(await this.session.detach().catch(()=>void 0),null)}async createSession(){if(this.session)return this.session;if(!this.getPage)return null;try{let e=await this.getPage();if(!p(e))return null;let t=await e.createCDPSession();return m(t)?(this.session=t,t):null}catch{return null}}};const g=[a(`v8_heap_snapshot_capture`,e=>e.desc(`Capture a V8 heap snapshot for offline analysis.`).query()),a(`v8_heap_snapshot_analyze`,e=>e.desc(`Analyze a heap snapshot: retained size, constructor distribution, dominators.`).string(`snapshotId`,`Snapshot ID`).required(`snapshotId`).query()),a(`v8_heap_diff`,e=>e.desc(`Compare two heap snapshots to find allocation changes.`).string(`beforeSnapshotId`,`Baseline snapshot ID`).string(`afterSnapshotId`,`Updated snapshot ID`).required(`beforeSnapshotId`,`afterSnapshotId`).query()),a(`v8_object_inspect`,e=>e.desc(`Inspect a live JS object by objectId with property enumeration.`).string(`address`,`Runtime objectId or compatible heap object id`).required(`address`).query()),a(`v8_heap_stats`,e=>e.desc(`Report V8 heap statistics: used, total, external.`).query()),a(`v8_bytecode_extract`,e=>e.desc(`Extract V8 bytecode for a script by scriptId, with source fallback.`).string(`scriptId`,`CDP scriptId`).number(`functionOffset`,`Optional function byte offset`).boolean(`includeSourceFallback`,`Include source-derived fallback output`).required(`scriptId`).query()),a(`v8_version_detect`,e=>e.desc(`Detect V8 engine version, flags, and runtime capabilities.`).query()),a(`v8_jit_inspect`,e=>e.desc(`Report JIT compilation status and optimization tier for a script.`).string(`scriptId`,`CDP scriptId`).required(`scriptId`).query())],_=new Map;function te(){return _}function v(e){return _.set(e.id,e),e}function y(e){return _.get(e)}function b(e){return typeof e==`object`&&!!e}function x(e){return b(e)&&typeof e.createCDPSession==`function`}function S(e){return b(e)?`value`in e?S(e.value):`result`in e?S(e.result):e:e}async function C(e,t){let n=`snapshot_${Date.now().toString(36)}`,r=new Date().toISOString(),i=[];if(t.client)try{let e=v({id:n,chunks:i,capturedAt:r,sizeBytes:await t.client.takeHeapSnapshot(e=>{i.push(e)})});return t.setSnapshot(n),{success:!0,snapshotId:e.id,capturedAt:e.capturedAt,sizeBytes:e.sizeBytes,chunks:[],simulated:!1}}catch{}try{let e=await t.getPage();if(x(e)){let i=await e.createCDPSession(),a=(e,t)=>i.send(e,t),o=()=>i.detach();await a(`HeapProfiler.enable`);let s=await a(`Runtime.evaluate`,{expression:`
|
|
13
|
-
(() => {
|
|
14
|
-
const m = performance.memory;
|
|
15
|
-
return m
|
|
16
|
-
? {
|
|
17
|
-
jsHeapSizeUsed: m.usedJSHeapSize,
|
|
18
|
-
jsHeapSizeTotal: m.totalJSHeapSize,
|
|
19
|
-
jsHeapSizeLimit: m.jsHeapSizeLimit
|
|
20
|
-
}
|
|
21
|
-
: null;
|
|
22
|
-
})()
|
|
23
|
-
`,returnByValue:!0});await o().catch(()=>void 0);let c=S(s),l=typeof c==`string`?(()=>{try{return JSON.parse(c)}catch{return null}})():c,u=0;b(l)&&typeof l.jsHeapSizeUsed==`number`&&(u=l.jsHeapSizeUsed);let d=v({id:n,chunks:[`{"simulated":true,"sizeBytes":${u}}`],capturedAt:r,sizeBytes:u});return t.setSnapshot(n),{success:!0,snapshotId:d.id,capturedAt:d.capturedAt,sizeBytes:d.sizeBytes,chunks:[],simulated:!0}}}catch{}let a=v({id:n,chunks:[`{}`],capturedAt:r,sizeBytes:0});return t.setSnapshot(n),{success:!0,snapshotId:a.id,capturedAt:a.capturedAt,sizeBytes:a.sizeBytes,chunks:[],simulated:!0}}const w=`__JSHOOK_BYTECODE_STATUS__:`,T=`__jshookBytecodeTarget__`;function ne(e){return/^[A-Za-z_$][\w$]*$/u.test(e)}function re(e){let t=e.trim();return t.length===0||t===`anonymous`?T:ne(t)?t:T}function ie(e){let t=e.trim();return t.startsWith(`function`)||t.startsWith(`async function`)||t.startsWith(`class `)||t.startsWith(`(`)||t.includes(`=>`)?!1:/^(?:async\s+)?(?:get\s+|set\s+)?\*?\s*[A-Za-z_$][\w$]*\s*\(/u.test(t)}function E(e){let t=e.sourceSlice.trim(),n=e.functionName.trim();return`
|
|
24
|
-
let ${T};
|
|
25
|
-
${ie(t)?`
|
|
26
|
-
try {
|
|
27
|
-
const __jshookHolder = { ${t} };
|
|
28
|
-
const __jshookCandidate = __jshookHolder[${JSON.stringify(n)}];
|
|
29
|
-
if (typeof __jshookCandidate === 'function') {
|
|
30
|
-
${T} = __jshookCandidate;
|
|
31
|
-
}
|
|
32
|
-
} catch {}
|
|
33
|
-
`:`
|
|
34
|
-
try {
|
|
35
|
-
${T} = (${t});
|
|
36
|
-
} catch {}
|
|
37
|
-
`}
|
|
38
|
-
|
|
39
|
-
if (typeof ${T} !== 'function') {
|
|
40
|
-
console.log(${JSON.stringify(`${w}resolve-failed`)});
|
|
41
|
-
} else {
|
|
42
|
-
try {
|
|
43
|
-
const __jshookArity =
|
|
44
|
-
typeof ${T}.length === 'number' && ${T}.length > 0
|
|
45
|
-
? ${T}.length
|
|
46
|
-
: 0;
|
|
47
|
-
Reflect.apply(${T}, globalThis, Array.from({ length: __jshookArity }, () => undefined));
|
|
48
|
-
} catch (error) {
|
|
49
|
-
console.log(${JSON.stringify(`${w}invoke-error:`)} + String(error));
|
|
50
|
-
}
|
|
51
|
-
console.log(${JSON.stringify(`${w}done`)});
|
|
52
|
-
}
|
|
53
|
-
`}function D(e,t){let n=e.split(/\r?\n/u),r=new Set(t.filter(e=>e.length>0)),i=null,a=!1,o=[];for(let e of n){let t=/^\[generated bytecode for function: (.+?) \(/u.exec(e);if(t?.[1]){if(a&&o.length>0)break;i=r.has(t[1])?t[1]:null,a=i!==null,a&&(o.length=0,o.push(e));continue}if(a){if(e.startsWith(w))break;o.push(e)}}return o.length===0?{bytecode:null,matchedFunctionName:null}:{bytecode:o.join(`
|
|
54
|
-
`).trim(),matchedFunctionName:i}}function O(e){let t=e.split(/\r?\n/u).find(e=>e.startsWith(w)&&e.length>27);return t?t.slice(27):null}function k(e,t,n){let r=O(e);if(r===`resolve-failed`)return`Unable to reconstruct an executable function from the captured source slice`;if(typeof r==`string`&&r.startsWith(`invoke-error:`))return`Function compiled but raised during isolated invocation: ${r.slice(13)}`;let i=t.trim();return i.length>0?i:n}async function A(e,t,n){return await new Promise(r=>{let i=o(process.execPath,[`--print-bytecode`,`--print-bytecode-filter=${t}`,`-`],{stdio:[`pipe`,`pipe`,`pipe`]}),a=``,s=``,c=!1,l=e=>{c||(c=!0,clearTimeout(u),r({stdout:a,stderr:s,error:e}))},u=setTimeout(()=>{i.kill(),l(`Timed out after ${n}ms while waiting for isolated bytecode output`)},n);i.stdout.setEncoding(`utf8`),i.stderr.setEncoding(`utf8`),i.stdout.on(`data`,e=>{a+=e}),i.stderr.on(`data`,e=>{s+=e}),i.on(`error`,e=>{l(e instanceof Error?e.message:String(e))}),i.on(`close`,e=>{l(e===0?null:`Bytecode printer exited with code ${e}`)}),i.stdin.end(e)})}async function j(e,t=15e3){let n=re(e.functionName),r=Array.from(new Set([n,T])),i=E(e);for(let e of r){let{stdout:a,stderr:o,error:s}=await A(i,e,t),c=D(a,r);if(c.bytecode){let e=c.matchedFunctionName===T?n:c.matchedFunctionName;return{available:!0,bytecode:c.bytecode,format:`ignition-bytecode`,functionName:e??n,reason:`Ignition bytecode emitted by an isolated V8 process via --print-bytecode from the extracted source slice`,rawIgnitionBytecodeAvailable:!0}}if(s&&e===r.at(-1))return{available:!1,bytecode:null,format:null,functionName:n,reason:k(a,o,s),rawIgnitionBytecodeAvailable:!1}}return{available:!1,bytecode:null,format:null,functionName:n,reason:`Isolated V8 bytecode printer did not emit a matching function block`,rawIgnitionBytecodeAvailable:!1}}function M(e){return typeof e==`object`&&!!e}function N(e){return M(e)&&typeof e.createCDPSession==`function`}function P(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function F(e){return typeof e==`string`?e:null}function I(e){return Array.isArray(e)?e.filter(M):[]}function L(e){return e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}function R(e){let t=e.trim();if(t.startsWith(`function `))return{opcode:`FunctionDeclaration`,operands:[]};if(t.startsWith(`return `))return{opcode:`Return`,operands:[t.slice(7)]};if(t.includes(`=>`))return{opcode:`CreateClosure`,operands:[]};if(t.includes(`(`)&&t.includes(`)`)){let e=/^([A-Za-z_$][\w$]*)\(/u.exec(t);if(e?.[1])return{opcode:`Call`,operands:[e[1]]}}if(t.includes(`=`)){let e=t.split(`=`,2),n=e[0],r=e[1];if(n&&r)return{opcode:`Store`,operands:[n.trim(),r.trim()]}}return t.startsWith(`if `)?{opcode:`JumpIfTrue`,operands:[t]}:t.startsWith(`for `)||t.startsWith(`while `)?{opcode:`Loop`,operands:[t]}:t.startsWith(`{`)||t.startsWith(`const `)||t.startsWith(`let `)?{opcode:`LoadLiteral`,operands:[t]}:{opcode:`Evaluate`,operands:[t]}}function z(e){let t=[`; pseudo-bytecode synthesized from script source`],n=0;for(let r of e.split(/\r?\n/u)){let e=r.trim();if(e.length===0)continue;let{opcode:i,operands:a}=R(e),o=a.join(`, `);t.push(`${n} ${i}${o.length>0?` ${o}`:``}`),n+=1}return t.join(`
|
|
55
|
-
`)}function B(e,t){if(typeof t==`number`&&t>=0&&t<e.length){let n=Math.max(0,t-120),r=Math.min(e.length,t+120),i=e.slice(n,r),a=/function\s+([A-Za-z_$][\w$]*)/u.exec(i);if(a?.[1])return a[1];let o=/([A-Za-z_$][\w$]*)\s*=\s*(?:async\s*)?\(/u.exec(i);if(o?.[1])return o[1]}return/function\s+([A-Za-z_$][\w$]*)/u.exec(e)?.[1]??`anonymous`}function V(e){let t=e.matchAll(/\{([^{}]+:[^{}]+)\}/gu),n=[],r=0;for(let e of t){let t=e[1];if(!t)continue;let i=t.split(`,`).map(e=>e.trim()).map(e=>{let[t]=e.split(`:`,1);return t?.trim()??``}).filter(e=>e.length>0).filter((e,t,n)=>n.indexOf(e)===t);i.length!==0&&(n.push({address:`hidden-class-${r}`,properties:i,transitionMap:i.length>1?i.join(` -> `):void 0}),r+=1)}return n}function ae(e){let t=e.result;return M(t)&&t.value!==void 0?t.value:t}function H(e){let t=F(e.reason);if(t)return t;let n=F(e.disassemblyError);if(n)return n;let r=F(e.disassemblyType);return r?`Native disassembly returned ${r} instead of text`:`Runtime disassembly output is not exposed through the current browser/CDP path`}var U=class{getPage;versionDetector;constructor(t){this.getPage=t,this.versionDetector=new e(t)}async extractBytecode(e,t){let n=await this.resolveScriptFunctionContext(e,t);return n?{functionName:n.functionName,bytecode:z(n.sourceSlice),sourcePosition:n.sourcePosition}:null}async attemptNativeBytecodeExtraction(e,t){let n=await this.resolveScriptFunctionContext(e,t);if(!n)return null;if(!await this.versionDetector.supportsNativesSyntax())return{available:!1,bytecode:null,format:null,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:`V8 natives syntax is unavailable in the current browser target`,sourcePosition:n.sourcePosition,supportsNativesSyntax:!1};let r=await this.createSession();if(!r)return{available:!1,bytecode:null,format:null,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:`Browser/page CDP session is unavailable for native bytecode inspection`,sourcePosition:n.sourcePosition,supportsNativesSyntax:!0};try{let e=await r.send(`Runtime.evaluate`,{expression:this.buildNativeExtractionExpression(n.functionName),returnByValue:!0,awaitPromise:!1});if(!M(e))return{available:!1,bytecode:null,format:null,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:`Runtime.evaluate did not return structured data`,sourcePosition:n.sourcePosition,supportsNativesSyntax:!0};if(e.exceptionDetails)return{available:!1,bytecode:null,format:null,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:`Runtime.evaluate raised an exception while probing native bytecode`,sourcePosition:n.sourcePosition,supportsNativesSyntax:!0};let t=ae(e),i=M(t)?t:{},a=F(i.disassembly),o=P(i.nativeSourcePosition);if(a&&a.length>0)return{available:!0,bytecode:a,format:`v8-disassembly`,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:`Native V8 disassembly text returned via %DisassembleFunction`,sourcePosition:o??n.sourcePosition,supportsNativesSyntax:!0};let s=await j(n);return s.available&&s.bytecode?{available:!0,bytecode:s.bytecode,format:s.format,functionName:s.functionName,rawIgnitionBytecodeAvailable:s.rawIgnitionBytecodeAvailable,reason:s.reason,sourcePosition:o??n.sourcePosition,supportsNativesSyntax:!0}:{available:!1,bytecode:null,format:null,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:`${H(i)}; isolated printer: ${s.reason}`,sourcePosition:o??n.sourcePosition,supportsNativesSyntax:!0}}catch(e){return{available:!1,bytecode:null,format:null,functionName:n.functionName,rawIgnitionBytecodeAvailable:!1,reason:e instanceof Error?e.message:String(e),sourcePosition:n.sourcePosition,supportsNativesSyntax:!0}}finally{await r.detach().catch(()=>void 0)}}disassembleBytecode(e){let t=[];for(let n of e.split(/\r?\n/u)){let e=n.trim();if(e.length===0||e.startsWith(`;`))continue;let r=/^\d+\s+\w+>\s+[0-9A-Fa-f]+\s+@\s*(\d+)\s*:\s*(?:[0-9A-Fa-f]{2}(?:\s+[0-9A-Fa-f]{2})*\s+)?([A-Za-z_][\w.]*)\s*(.*)$/u.exec(e)??/^(\d+)\s*@\s*([A-Za-z_][\w.]*)\s*(.*)$/u.exec(e)??/^(?:0x[0-9a-fA-F]+\s+@)?\s*(\d+)\s*[: ]\s*([A-Za-z_][\w.]*)\s*(.*)$/u.exec(e)??/^(\d+)\s+([A-Za-z_][\w.]*)\s*(.*)$/u.exec(e);if(!r)continue;let i=Number(r[1]);Number.isFinite(i)&&t.push({offset:i,opcode:r[2]??`Unknown`,operands:L(r[3]??``)})}return t}async findHiddenClasses(e){let t=await this.getScriptSource(e);return t?V(t):[]}buildNativeExtractionExpression(e){return`
|
|
56
|
-
(() => {
|
|
57
|
-
const functionName = ${JSON.stringify(e)};
|
|
58
|
-
try {
|
|
59
|
-
const candidate = globalThis[functionName];
|
|
60
|
-
if (typeof candidate !== 'function') {
|
|
61
|
-
return {
|
|
62
|
-
functionName,
|
|
63
|
-
reason: 'Resolved function is not reachable via globalThis in the current target',
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const nativeSourcePosition = (() => {
|
|
68
|
-
try {
|
|
69
|
-
return %FunctionGetScriptSourcePosition(candidate);
|
|
70
|
-
} catch (error) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
})();
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
const disassembly = %DisassembleFunction(candidate);
|
|
77
|
-
return {
|
|
78
|
-
functionName,
|
|
79
|
-
disassembly: typeof disassembly === 'string' ? disassembly : null,
|
|
80
|
-
disassemblyType: typeof disassembly,
|
|
81
|
-
nativeSourcePosition:
|
|
82
|
-
typeof nativeSourcePosition === 'number' ? nativeSourcePosition : null,
|
|
83
|
-
};
|
|
84
|
-
} catch (error) {
|
|
85
|
-
return {
|
|
86
|
-
functionName,
|
|
87
|
-
disassemblyError: String(error),
|
|
88
|
-
nativeSourcePosition:
|
|
89
|
-
typeof nativeSourcePosition === 'number' ? nativeSourcePosition : null,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
} catch (error) {
|
|
93
|
-
return {
|
|
94
|
-
functionName,
|
|
95
|
-
reason: String(error),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
})()
|
|
99
|
-
`}async resolveScriptFunctionContext(e,t){let n=await this.getScriptSource(e);if(!n)return null;let r=await this.getCoverageFunctions(e),i=(typeof t==`number`?r.find(e=>t>=e.startOffset&&t<=e.endOffset):void 0)??r.find(e=>e.functionName.length>0&&e.functionName!==`anonymous`)??r[0],a=i?.functionName&&i.functionName.length>0&&i.functionName!==`anonymous`?i.functionName:B(n,t),o=i&&i.endOffset>i.startOffset?n.slice(i.startOffset,i.endOffset):n;return{functionName:a,sourcePosition:typeof t==`number`?t:i?i.startOffset:void 0,sourceSlice:o}}async getCoverageFunctions(e){let t=await this.createSession();if(!t)return[];try{await t.send(`Profiler.enable`),await t.send(`Profiler.startPreciseCoverage`,{callCount:!0,detailed:!0});let n=await t.send(`Profiler.takePreciseCoverage`),r=(M(n)?I(n.result):[]).find(t=>typeof t.scriptId==`string`&&t.scriptId===e);if(!r)return[];let i=I(r.functions),a=[];for(let e of i){let t=I(e.ranges)[0];if(!t)continue;let n=P(t.startOffset),r=P(t.endOffset);n===null||r===null||a.push({functionName:F(e.functionName)??`anonymous`,startOffset:n,endOffset:r})}return a}catch{return[]}finally{await t.send(`Profiler.stopPreciseCoverage`).catch(()=>void 0),await t.send(`Profiler.disable`).catch(()=>void 0),await t.detach().catch(()=>void 0)}}async getScriptSource(e){let t=await this.createSession();if(!t)return null;try{await t.send(`Debugger.enable`);let n=await t.send(`Debugger.getScriptSource`,{scriptId:e});if(!M(n))return null;let r=n.scriptSource;return typeof r==`string`?r:null}catch{return null}finally{await t.send(`Debugger.disable`).catch(()=>void 0),await t.detach().catch(()=>void 0)}}async createSession(){if(!this.getPage)return null;try{let e=await this.getPage();return N(e)?await e.createCDPSession():null}catch{return null}}};function W(e){return typeof e==`object`&&!!e}function G(e){return W(e)&&typeof e.createCDPSession==`function`}function K(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(W(e)&&typeof e.value==`number`){let t=e.value;return typeof t==`number`&&Number.isFinite(t)?t:null}return null}function q(e){return e===null?{optimized:!1,tier:`unknown`}:e&128?{optimized:!0,tier:`maglev`}:e&64?{optimized:!0,tier:`turbofan`}:e&16||e&32?{optimized:!0,tier:`optimized`}:{optimized:!1,tier:`interpreted`}}var J=class{getPage;bytecodeExtractor;versionDetector;optimizedFunctionsCache=[];constructor(t){this.getPage=t,this.bytecodeExtractor=new U(t),this.versionDetector=new e(t)}async inspectJIT(e){let t=await this.bytecodeExtractor.findHiddenClasses(e),n=await this.bytecodeExtractor.extractBytecode(e),r=new Set;n&&r.add(n.functionName);for(let e of t){let t=e.properties[0];t&&r.add(t)}r.size===0&&r.add(`anonymous`);let i=await this.versionDetector.supportsNativesSyntax(),a=[];for(let e of r){let{optimized:t,tier:n}=q(i?await this.getOptimizationStatus(e):null);a.push({functionName:e,optimized:t,tier:n})}return this.optimizedFunctionsCache=a,{functions:a,supportsNativesSyntax:i,inspectionMode:i?`native-status`:`heuristic`}}async forceDeoptimization(e){if(!await this.versionDetector.supportsNativesSyntax())return;let t=await this.createSession();if(t)try{await t.send(`Runtime.evaluate`,{expression:`
|
|
100
|
-
(() => {
|
|
101
|
-
try {
|
|
102
|
-
const candidate = eval(${JSON.stringify(e)});
|
|
103
|
-
if (typeof candidate === 'function') {
|
|
104
|
-
%DeoptimizeFunction(candidate);
|
|
105
|
-
}
|
|
106
|
-
} catch (error) {
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
return undefined;
|
|
110
|
-
})()
|
|
111
|
-
`,returnByValue:!0,awaitPromise:!1})}finally{await t.detach().catch(()=>void 0)}}async getOptimizedFunctions(){return[...this.optimizedFunctionsCache]}async getOptimizationStatus(e){let t=await this.createSession();if(!t)return null;try{let n=await t.send(`Runtime.evaluate`,{expression:`
|
|
112
|
-
(() => {
|
|
113
|
-
try {
|
|
114
|
-
const candidate = globalThis[${JSON.stringify(e)}];
|
|
115
|
-
if (typeof candidate !== 'function') {
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
return %GetOptimizationStatus(candidate);
|
|
119
|
-
} catch (error) {
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
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{success:!1,error:`PageController not available`};let{VersionDetector:t}=await import(`./VersionDetector-DMoUWyNm.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 le=g.map(e=>({tool:e,domain:`v8-inspector`,bind:i(`v8InspectorHandlers`,(t,n)=>t.handle(e.name,n))}));async function ue(e){if(!e.pageController)throw Error(`v8-inspector: PageController not available`);let t=new $({ctx:e,client:Z(e)});return e.v8InspectorHandlers=t,t}const de={kind:`domain-manifest`,version:1,domain:`v8-inspector`,depKey:`v8InspectorHandlers`,profiles:[`workflow`,`full`],registrations:le,ensure:ue,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,de as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./tool-builder-CI9914Tf.mjs";const r=[n(`adb_apk_analyze`,e=>e.desc(`Analyze an installed APK: package, permissions, activities, and security info.`).string(`serial`,`Required. Android device serial or emulator id.`).string(`packageName`,`Required. Android package name, for example com.example.app.`).requiredOpenWorld(`serial`,`packageName`)),n(`adb_webview_list`,e=>e.desc(`List debuggable WebView targets connected via ADB.`).string(`serial`,`Required. Android device serial or emulator id.`).number(`hostPort`,`Optional. Local port to use for forwarding.`,{default:9222}).requiredOpenWorld(`serial`)),n(`adb_webview_attach`,e=>e.desc(`Attach to a WebView via ADB; returns WebSocket debugger URL for CDP.`).string(`serial`,`Required. Android device serial or emulator id.`).string(`targetId`,`Required. WebView target id returned by adb_webview_list.`).number(`hostPort`,`Optional. Local port to use for forwarding.`,{default:9222}).requiredOpenWorld(`serial`,`targetId`))],i=`adb-bridge`,a=`adbBridgeHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`adb_apk_analyze`,method:`handleAnalyzeApk`},{tool:`adb_webview_list`,method:`handleWebViewList`},{tool:`adb_webview_attach`,method:`handleWebViewAttach`}]});async function s(e){let{ADBBridgeHandlers:t}=await import(`./handlers-S9Ws0IGy.mjs`),n=e.getDomainInstance(a);if(n)return n;let r=new t;return e.setDomainInstance(a,r),r}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`full`],registrations:o,ensure:s,workflowRule:{patterns:[/(android|adb|mobile|apk|device).*(list|shell|pull|analyze|dump)/i,/(adb|android).*(webview|chrome|debug|cdp|inspect)/i],priority:75,tools:[`adb_apk_analyze`,`adb_webview_list`,`adb_webview_attach`],hint:`Android/ADB: list devices → run shell commands → pull/analyze APK → debug WebViews via CDP`},prerequisites:{"*":[{condition:`ADB server binary must be in PATH`,fix:`Install Android Platform Tools: https://developer.android.com/studio/command-line/adb`}],adb_webview_list:[{condition:`App must have android:debuggable="true"`,fix:`Use a debug build of the Android app`}],adb_webview_attach:[{condition:`App must have android:debuggable="true"`,fix:`Use a debug build of the Android app`}]},toolDependencies:[{from:`browser`,to:`adb-bridge`,relation:`uses`,weight:.7}]};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{n as r,t as i}from"./definitions-CCP9gphV.mjs";const a=`hooks`,o=`aiHookHandlers`,s=e([...i,...r]),c=t({domain:a,depKey:o,lookup:s,entries:[{tool:`ai_hook`,method:`handleAIHook`}]}),l=t({domain:a,depKey:`hookPresetHandlers`,lookup:s,entries:[{tool:`hook_preset`,method:`handleHookPreset`}]});async function u(e){let{AIHookToolHandlers:t,HookPresetToolHandlers:r}=await import(`./hooks-DDKppogd.mjs`);return await n(e),(!e.aiHookHandlers||!e.hookPresetHandlers)&&(e.aiHookHandlers||=new t(e.pageController),e.hookPresetHandlers||=new r(e.pageController)),e.aiHookHandlers}const d={kind:`domain-manifest`,version:1,domain:a,depKey:o,secondaryDepKeys:[`hookPresetHandlers`],profiles:[`full`],ensure:u,registrations:[...c,...l]};export{d as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./definitions-BGobEDQa.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-Cyg-xh_k.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{i as n,n as r,r as i,t as a}from"./definitions-CdWEuIkI.mjs";const o=`maintenance`,s=`coreMaintenanceHandlers`,c=[...n,...r,...a],l=[...i],u=e([...c,...l]),d=t({domain:o,depKey:s,lookup:u,entries:[{tool:`get_token_budget_stats`,method:`handleGetTokenBudgetStats`,profiles:[`workflow`,`full`]},{tool:`manual_token_cleanup`,method:`handleManualTokenCleanup`},{tool:`reset_token_budget`,method:`handleResetTokenBudget`},{tool:`get_cache_stats`,method:`handleGetCacheStats`,profiles:[`workflow`,`full`]},{tool:`smart_cache_cleanup`,method:`handleSmartCacheCleanup`,mapArgs:e=>[e.targetSize]},{tool:`clear_all_caches`,method:`handleClearAllCaches`},{tool:`cleanup_artifacts`,method:`handleCleanupArtifacts`,mapArgs:e=>[{retentionDays:e.retentionDays,maxTotalBytes:e.maxTotalBytes,dryRun:e.dryRun}]},{tool:`doctor_environment`,method:`handleEnvironmentDoctor`,mapArgs:e=>[{includeBridgeHealth:e.includeBridgeHealth}]}]}),f=t({domain:o,depKey:`extensionManagementHandlers`,lookup:u,entries:[{tool:`list_extensions`,method:`handleListExtensions`,profiles:[`workflow`,`full`]},{tool:`reload_extensions`,method:`handleReloadExtensions`},{tool:`browse_extension_registry`,method:`handleBrowseExtensionRegistry`,profiles:[`workflow`,`full`],mapArgs:e=>[e.kind??`all`]},{tool:`install_extension`,method:`handleInstallExtension`,mapArgs:e=>[e.slug,e.targetDir]}]});async function p(e){let{CoreMaintenanceHandlers:t,ExtensionManagementHandlers:n}=await import(`./maintenance-CutEO84j.mjs`);return(!e.coreMaintenanceHandlers||!e.extensionManagementHandlers)&&(e.coreMaintenanceHandlers||=new t({tokenBudget:e.tokenBudget,unifiedCache:e.unifiedCache}),e.extensionManagementHandlers||=new n(e)),e.coreMaintenanceHandlers}const m={kind:`domain-manifest`,version:1,domain:o,depKey:s,secondaryDepKeys:[`extensionManagementHandlers`],profiles:[`workflow`,`full`],ensure:p,registrations:[...d,...f]};export{m as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./tool-builder-CI9914Tf.mjs";const r=[n(`run_macro`,e=>e.desc(`Execute a registered macro by ID with inline progress and atomic bailout.`).string(`macroId`,`Macro ID to execute`).prop(`inputOverrides`,{type:`object`,description:`Per-step input overrides keyed by step ID`,additionalProperties:{type:`object`,additionalProperties:!0}}).required(`macroId`)),n(`list_macros`,e=>e.desc(`List all available macros.`).query())],i=`macro`,a=`macroHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`run_macro`,method:`handleRunMacro`},{tool:`list_macros`,method:`handleListMacros`}]});async function s(e){let{MacroToolHandlers:t}=await import(`./handlers-DCE45Ww8.mjs`),n=e.getDomainInstance(a);if(n)return n;let r=new t(e);return e.setDomainInstance(a,r),r}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`full`],ensure:s,registrations:o};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./tool-builder-CI9914Tf.mjs";const r=[n(`execute_sandbox_script`,e=>e.desc(`Execute JavaScript in an isolated sandbox.`).string(`code`,`JavaScript source code to execute inside the sandbox`).string(`sessionId`,`Session ID for scratchpad persistence across executions`).number(`timeoutMs`,`Execution timeout in ms`,{default:1e3}).boolean(`autoCorrect`,`Retry failed scripts up to 2 times with error context`,{default:!1}).required(`code`))],i=`sandbox`,a=`sandboxHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`execute_sandbox_script`,method:`handleExecuteSandboxScript`}]});async function s(e){let{SandboxToolHandlers:t}=await import(`./handlers-DnJRGp7t.mjs`),n=e.getDomainInstance(a);if(n)return n;let r=new t(e);return e.setDomainInstance(a,r),r}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`full`],ensure:s,registrations:o};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{t as r}from"./definitions-DtE0XLrT.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-CYIXtrWD.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 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./definitions-OvGsfxdt.mjs";const r=`process`,i=`processHandlers`,a=e(n),o=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;async function s(e){let{ProcessToolHandlers:t}=await import(`./process-C9f2A5zk.mjs`);return e.processHandlers||=new t,e.processHandlers}const c=o===`win32`,l=new Set([`check_debug_port`]),u=t({domain:r,depKey:i,lookup:a,entries:[{tool:`electron_attach`,method:`handleElectronAttach`},{tool:`process_windows`,method:`handleProcessWindows`},{tool:`process_check_debug_port`,method:`handleProcessCheckDebugPort`},{tool:`process_launch_debug`,method:`handleProcessLaunchDebug`},{tool:`memory_read`,method:`handleMemoryRead`},{tool:`memory_write`,method:`handleMemoryWrite`},{tool:`memory_scan`,method:`handleMemoryScan`},{tool:`memory_check_protection`,method:`handleMemoryCheckProtection`},{tool:`memory_scan_filtered`,method:`handleMemoryScanFiltered`},{tool:`memory_batch_write`,method:`handleMemoryBatchWrite`},{tool:`memory_dump_region`,method:`handleMemoryDumpRegion`},{tool:`memory_list_regions`,method:`handleMemoryListRegions`},{tool:`memory_audit_export`,method:`handleMemoryAuditExport`},{tool:`inject_dll`,method:`handleInjectDll`},{tool:`inject_shellcode`,method:`handleInjectShellcode`},{tool:`check_debug_port`,method:`handleCheckDebugPort`},{tool:`enumerate_modules`,method:`handleEnumerateModules`}]}),d={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`full`],ensure:s,registrations:c?u:u.filter(e=>!l.has(e.tool.name))};export{d as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{t as r}from"./tool-builder-CI9914Tf.mjs";const i=[r(`canvas_engine_fingerprint`,e=>e.desc(`Detect Canvas/WebGL game engines in the page.`).query()),r(`canvas_scene_dump`,e=>e.desc(`Extract the full scene tree / display list from a detected canvas engine.`).string(`canvasId`,`Canvas element ID or index to target`).number(`maxDepth`,`Maximum tree traversal depth`,{default:20}).boolean(`onlyInteractive`,`Only include interactive (mouseEnabled) nodes`,{default:!1}).boolean(`onlyVisible`,`Only include visible nodes`,{default:!1}).query()),r(`canvas_pick_object_at_point`,e=>e.desc(`Pick / hit-test the topmost object at a given screen coordinate using the engine's hit-test system`).number(`x`,`Screen X coordinate`).number(`y`,`Screen Y coordinate`).string(`canvasId`,`Canvas element ID or index to target`).boolean(`highlight`,`Draw a highlight rectangle on the picked object`,{default:!1}).required(`x`,`y`).readOnly()),r(`canvas_trace_click_handler`,e=>e.desc(`Trace a click event from DOM to JS call stack.`).number(`x`,`Screen X coordinate to click`).number(`y`,`Screen Y coordinate to click`).string(`canvasId`,`Canvas element ID or index to target`).enum(`breakpointType`,[`click`,`mousedown`,`pointerdown`],`Event breakpoint type`,{default:`click`}).number(`maxFrames`,`Maximum call stack frames to capture`,{default:50}).requiredOpenWorld(`x`,`y`))],a=`canvas`,o=`canvasHandlers`,s=t({domain:a,depKey:o,lookup:e(i),entries:[{tool:`canvas_engine_fingerprint`,method:`handleFingerprint`},{tool:`canvas_scene_dump`,method:`handleSceneDump`},{tool:`canvas_pick_object_at_point`,method:`handlePick`},{tool:`canvas_trace_click_handler`,method:`handleTraceClick`}]});async function c(e){let{DebuggerManager:t}=await import(`./modules-p-PUNv9r.mjs`).then(e=>e.t),{TraceRecorder:r}=await import(`./TraceRecorder-Dd8jLXpi.mjs`),{ReverseEvidenceGraph:i}=await import(`./ReverseEvidenceGraph-B931HeoW.mjs`).then(e=>e.t),{CanvasToolHandlers:a}=await import(`./handlers-pVNpaw4A.mjs`);await n(e),e.debuggerManager||=new t(e.collector),e.traceRecorder||=new r;let o=e.getDomainInstance(`evidenceGraph`);return o||(o=new i,e.setDomainInstance(`evidenceGraph`,o)),e.canvasHandlers||=new a({pageController:e.pageController,debuggerManager:e.debuggerManager,traceRecorder:e.traceRecorder,evidenceStore:o}),e.canvasHandlers}const l={kind:`domain-manifest`,version:1,domain:a,depKey:o,profiles:[`full`],ensure:c,workflowRule:{patterns:[/(canvas|scene|engine|game).*(pick|dump|trace|reverse)/i,/(canvas|webgl|webgpu|scene).*(graph|tree|node)/i,/(laya|pixi|phaser|cocos|unity).*(reverse|scene|dump|hook)/i],priority:80,tools:[`canvas_engine_fingerprint`,`canvas_scene_dump`,`canvas_pick_object_at_point`,`canvas_trace_click_handler`],hint:`Canvas reverse: fingerprint engine → dump scene tree → pick object at point → trace click to handler`},prerequisites:{canvas_engine_fingerprint:[{condition:`Browser must be running`,fix:`Call browser_launch or browser_attach first`}],canvas_scene_dump:[{condition:`Browser must be running`,fix:`Call browser_launch or browser_attach first`}],canvas_pick_object_at_point:[{condition:`Browser must be running`,fix:`Call browser_launch or browser_attach first`}],canvas_trace_click_handler:[{condition:`Debugger must be enabled`,fix:`Call debugger_lifecycle({ action: 'enable' }) first`}]},registrations:s};export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{t as r}from"./definitions-LaYTuwQd.mjs";const i=`debugger`,a=`debuggerHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`debugger_lifecycle`,method:`handleDebuggerLifecycle`},{tool:`debugger_pause`,method:`handleDebuggerPause`},{tool:`debugger_resume`,method:`handleDebuggerResume`},{tool:`debugger_step`,method:`handleDebuggerStep`},{tool:`breakpoint`,method:`handleBreakpoint`},{tool:`get_call_stack`,method:`handleGetCallStack`},{tool:`debugger_evaluate`,method:`handleDebuggerEvaluateDispatch`},{tool:`debugger_wait_for_paused`,method:`handleDebuggerWaitForPaused`},{tool:`debugger_get_paused_state`,method:`handleDebuggerGetPausedState`},{tool:`get_object_properties`,method:`handleGetObjectProperties`},{tool:`get_scope_variables_enhanced`,method:`handleGetScopeVariablesEnhanced`},{tool:`debugger_session`,method:`handleDebuggerSession`},{tool:`watch`,method:`handleWatch`},{tool:`blackbox_add`,method:`handleBlackboxAdd`},{tool:`blackbox_add_common`,method:`handleBlackboxAddCommon`},{tool:`blackbox_list`,method:`handleBlackboxList`}]});async function s(e){let{DebuggerManager:t,RuntimeInspector:r}=await import(`./modules-p-PUNv9r.mjs`).then(e=>e.t),{DebuggerToolHandlers:i}=await import(`./debugger-CRJq_krh.mjs`);return await n(e),(!e.debuggerManager||!e.runtimeInspector||!e.debuggerHandlers)&&(e.debuggerManager||=new t(e.collector),e.runtimeInspector||=new r(e.collector,e.debuggerManager),e.debuggerHandlers||=new i(e.debuggerManager,e.runtimeInspector,e.eventBus)),e.debuggerHandlers}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`workflow`,`full`],ensure:s,prerequisites:{debugger_lifecycle:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],breakpoint:[{condition:`Browser must be launched`,fix:`Call browser_launch and debugger_lifecycle(enable) first`}]},registrations:o};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./definitions-BGwNSkVm.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-CKO8RPK8.mjs`),{AntiDebugToolHandlers:n}=await import(`./antidebug-BOTZH6-0.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{t as r}from"./definitions-NoVp_9Pm.mjs";const i=`encoding`,a=`encodingHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`binary_detect_format`,method:`handleBinaryDetectFormat`},{tool:`binary_decode`,method:`handleBinaryDecode`},{tool:`binary_encode`,method:`handleBinaryEncode`},{tool:`binary_entropy_analysis`,method:`handleBinaryEntropyAnalysis`},{tool:`protobuf_decode_raw`,method:`handleProtobufDecodeRaw`}]});async function s(e){let{EncodingToolHandlers:t}=await import(`./encoding-DGcr6Aj_.mjs`);return await n(e),e.encodingHandlers||=new t(e.collector,async t=>e.consoleMonitor?.getResponseBody(t)??null),e.encodingHandlers}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`workflow`,`full`],ensure:s,registrations:o};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./tool-builder-CI9914Tf.mjs";const r=[n(`binary_instrument_capabilities`,e=>e.desc(`Report binary instrumentation backend availability.`).query()),n(`frida_attach`,e=>e.desc(`Attach Frida to a local target and open a session.`).string(`target`,`Process name, PID, or binary path to attach to`).required(`target`)),n(`frida_enumerate_modules`,e=>e.desc(`List loaded modules in an attached Frida session.`).string(`sessionId`,`Session id returned by frida_attach`).required(`sessionId`).query()),n(`ghidra_analyze`,e=>e.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`)),n(`generate_hooks`,e=>e.desc(`Generate a Frida interceptor script for a list of symbols.`).array(`symbols`,{type:`string`},`Symbol names to hook`).object(`options`,{includeArgs:{type:`boolean`,description:`Emit argument logging on function entry`},includeRetAddr:{type:`boolean`,description:`Emit return-address logging on function entry`}},`Optional Frida hook generation flags`).required(`symbols`)),n(`unidbg_emulate`,e=>e.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`)),n(`frida_run_script`,e=>e.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`)),n(`frida_detach`,e=>e.desc(`Detach from a Frida session and clean up resources.`).string(`sessionId`,`Session id returned by frida_attach`).required(`sessionId`)),n(`frida_list_sessions`,e=>e.desc(`List all active Frida attach sessions with target info.`).query()),n(`frida_generate_script`,e=>e.desc(`Generate a Frida interceptor or hook script from built-in templates.`).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`)),n(`get_available_plugins`,e=>e.desc(`List installed binary analysis plugins.`).query()),n(`ghidra_decompile`,e=>e.desc(`Decompile a function using Ghidra.`).string(`binaryPath`,`Path to the binary file`).string(`functionName`,`Function name to decompile`).required(`binaryPath`,`functionName`)),n(`ida_decompile`,e=>e.desc(`Decompile a function using IDA Pro.`).string(`binaryPath`,`Path to the binary file`).string(`functionName`,`Function name to decompile`).required(`binaryPath`,`functionName`)),n(`jadx_decompile`,e=>e.desc(`Decompile an APK class or method using JADX.`).string(`apkPath`,`Path to the APK file`).string(`className`,`Fully qualified class name`).string(`methodName`,`Method name to decompile`).required(`apkPath`,`className`)),n(`unidbg_launch`,e=>e.desc(`Emulate a native shared library in Unidbg.`).string(`soPath`,`Path to the .so library file`).string(`arch`,`Architecture: arm or arm64`).required(`soPath`)),n(`unidbg_call`,e=>e.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`)),n(`unidbg_trace`,e=>e.desc(`Get execution trace from Unidbg session with configurable detail.`).string(`sessionId`,`Session id from unidbg_launch`).required(`sessionId`)),n(`export_hook_script`,e=>e.desc(`Export generated hook templates as a complete, runnable Frida script.`).string(`hookTemplates`,`JSON array of hook template objects`)),n(`frida_enumerate_functions`,e=>e.desc(`Enumerate exported functions for a specific module in a Frida session.`).string(`sessionId`,`Session id returned by frida_attach`).string(`moduleName`,`Module name to enumerate exports from`).required(`sessionId`,`moduleName`).query()),n(`frida_find_symbols`,e=>e.desc(`Search for symbols matching a pattern in a Frida session.`).string(`sessionId`,`Session id returned by frida_attach`).string(`pattern`,`Symbol search pattern (e.g. "exports:*libssl*SSL*")`).required(`sessionId`,`pattern`).query())],i=`binary-instrument`,a=`binaryInstrumentHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`binary_instrument_capabilities`,method:`handleBinaryInstrumentCapabilities`},{tool:`frida_attach`,method:`handleFridaAttach`},{tool:`frida_enumerate_modules`,method:`handleFridaEnumerateModules`},{tool:`ghidra_analyze`,method:`handleGhidraAnalyze`},{tool:`generate_hooks`,method:`handleGenerateHooks`},{tool:`unidbg_emulate`,method:`handleUnidbgEmulate`},{tool:`frida_run_script`,method:`handleFridaRunScript`},{tool:`frida_detach`,method:`handleFridaDetach`},{tool:`frida_list_sessions`,method:`handleFridaListSessions`},{tool:`frida_generate_script`,method:`handleFridaGenerateScript`},{tool:`get_available_plugins`,method:`handleGetAvailablePlugins`},{tool:`ghidra_decompile`,method:`handleGhidraDecompile`},{tool:`ida_decompile`,method:`handleIdaDecompile`},{tool:`jadx_decompile`,method:`handleJadxDecompile`},{tool:`unidbg_launch`,method:`handleUnidbgLaunch`},{tool:`unidbg_call`,method:`handleUnidbgCall`},{tool:`unidbg_trace`,method:`handleUnidbgTrace`},{tool:`export_hook_script`,method:`handleExportHookScript`},{tool:`frida_enumerate_functions`,method:`handleFridaEnumerateFunctions`},{tool:`frida_find_symbols`,method:`handleFridaFindSymbols`}]});async function s(e){let{BinaryInstrumentHandlers:t}=await import(`./handlers-D3iev8g1.mjs`),{GhidraAnalyzer:n,HookGenerator:r}=await import(`./binary-instrument-Cf9qqLlM.mjs`).then(e=>e.t),i=e.getDomainInstance(a);return i||(i=new t(e,new n,new r),e.setDomainInstance(a,i)),i}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`full`],ensure:s,registrations:o,workflowRule:{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],priority:88,tools:[`frida_attach`,`ghidra_analyze`,`generate_hooks`,`unidbg_launch`],hint:`Binary analysis pipeline: attach Frida → decompile (Ghidra/IDA/JADX) → generate hook scripts → emulatewith Unidbg.`},prerequisites:{frida_attach:[{condition:`plugin_frida_bridge must be installed and frida-server reachable`,fix:`Install @jshookmcpextension/plugin-frida-bridge; launch frida-server on the target`}],frida_run_script:[{condition:`A Frida session must be active`,fix:`Call frida_attach before running a script`}],ghidra_analyze:[{condition:`plugin_ghidra_bridge must be installed with Ghidra headless available`,fix:`Install @jshookmcpextension/plugin-ghidra-bridge and configure Ghidra path`}],ida_decompile:[{condition:`plugin_ida_bridge must be installed`,fix:`Install @jshookmcpextension/plugin-ida-bridge and provide IDA Pro license`}],jadx_decompile:[{condition:`plugin_jadx_bridge must be installed`,fix:`Install @jshookmcpextension/plugin-jadx-bridge`}],unidbg_launch:[{condition:`Java 17+ and unidbg JAR must be reachable`,fix:`Install JDK 17+ and download unidbg from its official release`}],generate_hooks:[{condition:`Ghidra analysis output required`,fix:`Run ghidra_analyze first and pass the output to generate_hooks`}]},toolDependencies:[{from:`process`,to:`binary-instrument`,relation:`uses`,weight:.6}]};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./tool-builder-CI9914Tf.mjs";import{resolve as r}from"node:path";const i=[n(`evidence_query`,e=>e.desc(`Query reverse evidence graph by URL, function name, or script ID to find associated nodes.`).enum(`by`,[`url`,`function`,`script`],`Query dimension`).string(`value`,`Search value: URL/fragment, function name, or script ID`).required(`by`,`value`).query()),n(`evidence_export`,e=>e.desc(`Export the reverse evidence graph as JSON snapshot or Markdown report.`).enum(`format`,[`json`,`markdown`],`Export format`).required(`format`).query()),n(`evidence_chain`,e=>e.desc(`Get full provenance chain from a node ID in specified direction.`).string(`nodeId`,`Evidence node ID to start from`).enum(`direction`,[`forward`,`backward`],`Traversal direction`,{default:`forward`}).required(`nodeId`).query())],a=`evidence`,o=`evidenceHandlers`,s=t({domain:a,depKey:o,lookup:e(i),entries:[{tool:`evidence_query`,method:`handleQueryDispatch`},{tool:`evidence_export`,method:`handleExportDispatch`},{tool:`evidence_chain`,method:`handleChain`}]});async function c(e){let{ReverseEvidenceGraph:t}=await import(`./ReverseEvidenceGraph-B931HeoW.mjs`).then(e=>e.t),{EvidenceGraphBridge:n}=await import(`./EvidenceGraphBridge-BIfgB7HP.mjs`),{EvidenceHandlers:i}=await import(`./handlers-Dv_runVv.mjs`),a=e.getDomainInstance(`evidenceGraph`);a||(a=new t,a.setEventBus(e.eventBus),e.setDomainInstance(`evidenceGraph`,a));let o=e.getDomainInstance(`evidenceGraphBridge`);o||(o=new n(a),e.setDomainInstance(`evidenceGraphBridge`,o)),e.getDomainInstance(`instrumentationSessionManager`)?.setEvidenceBridge(o),e.evidenceHandlers||=new i(a);let s=e.getDomainInstance(`snapshotScheduler`),c=e.getDomainInstance(`snapshotStateDir`);return a.setPersistNotifier(s?()=>s.notifyDirty():void 0),s&&c&&!e.getDomainInstance(`evidenceGraphSnapshotRegistered`)&&(s.register(r(c,`evidence-graph`,`current.json`),a),e.setDomainInstance(`evidenceGraphSnapshotRegistered`,!0)),e.evidenceHandlers}const l={kind:`domain-manifest`,version:1,domain:a,depKey:o,profiles:[`full`],ensure:c,workflowRule:{patterns:[/(evidence|provenance|chain).*(graph|query|export|report)/i,/(证据|溯源|链).*(图|查询|导出|报告)/i],priority:90,tools:[`evidence_query`,`evidence_export`],hint:`Evidence graph: query by URL/function/scriptId → get provenance chain → export as JSON or Markdown report`},registrations:s};export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./tool-builder-CI9914Tf.mjs";import{t as r}from"./authorization-schema-B40obG1A.mjs";const i=[`before-load-inject`,`runtime-hook`,`network-intercept`,`function-trace`],a=[n(`instrumentation_session`,e=>e.desc(`Start, stop, or query status of an instrumentation recording session.`).enum(`action`,[`create`,`list`,`destroy`,`status`],`Session operation`).string(`name`,`Optional session name for create`).string(`sessionId`,`Session ID (required for destroy/status)`).required(`action`)),n(`instrumentation_operation`,e=>e.desc(`Manage operations inside an instrumentation session.`).enum(`action`,[`register`,`list`],`Operation`).string(`sessionId`,`Session ID`).enum(`type`,i,`Instrumentation type (action=register)`).string(`target`,`Function name, URL pattern, or script target (action=register)`).object(`config`,{},`Operation-specific config (action=register)`).required(`action`,`sessionId`)),n(`instrumentation_artifact`,e=>e.desc(`Manage artifacts captured by instrumentation operations.`).enum(`action`,[`record`,`query`],`Artifact operation`).string(`sessionId`,`Session ID`).string(`operationId`,`Operation ID (action=record)`).object(`data`,{},`Captured artifact payload (action=record)`).enum(`type`,i,`Optional artifact type filter (action=query)`).number(`limit`,`Max artifacts to return (action=query, default: 50)`,{default:50}).required(`action`,`sessionId`)),n(`instrumentation_hook_preset`,e=>e.desc(`Apply hook presets inside an instrumentation session.`).string(`sessionId`,`Session ID`).string(`preset`,`Single preset id to inject`).array(`presets`,{type:`string`},`Multiple preset ids to inject in one call`).boolean(`captureStack`,`Whether injected presets should capture stack traces`,{default:!1}).boolean(`logToConsole`,`Whether injected presets should log to console`,{default:!0}).enum(`method`,[`evaluate`,`evaluateOnNewDocument`],`Injection method forwarded to hook_preset`,{default:`evaluate`}).prop(`customTemplate`,{type:`object`,additionalProperties:!0,description:`Optional inline custom preset definition`}).prop(`customTemplates`,{type:`array`,items:{type:`object`,additionalProperties:!0},description:`Optional inline custom preset definitions`}).requiredOpenWorld(`sessionId`)),n(`instrumentation_network_replay`,e=>e.desc(`Replay a captured network request inside an instrumentation session.`).string(`sessionId`,`Session ID`).string(`requestId`,`Captured request ID returned by network_get_requests`).object(`headerPatch`,{additionalProperties:{type:`string`}},`Optional request header overrides`).string(`bodyPatch`,`Optional raw request body override`).string(`methodOverride`,`Optional HTTP method override`).string(`urlOverride`,`Optional destination URL override`).object(`authorization`,r,`Optional request-scoped authorization for private-network or insecure-HTTP replay.`).string(`authorizationCapability`,`Optional base64url-encoded request-scoped authorization capability.`).number(`timeoutMs`,`Optional replay timeout in milliseconds`).boolean(`dryRun`,`Preview the replay without sending the request`,{default:!0}).requiredOpenWorld(`sessionId`,`requestId`))],o=`instrumentation`,s=`instrumentationHandlers`,c=t({domain:o,depKey:s,lookup:e(a),entries:[{tool:`instrumentation_session`,method:`handleSessionDispatch`},{tool:`instrumentation_operation`,method:`handleOperationDispatch`},{tool:`instrumentation_artifact`,method:`handleArtifactDispatch`},{tool:`instrumentation_hook_preset`,method:`handleHookPreset`},{tool:`instrumentation_network_replay`,method:`handleNetworkReplay`}]});async function l(e){let{ReverseEvidenceGraph:t}=await import(`./ReverseEvidenceGraph-B931HeoW.mjs`).then(e=>e.t),{InstrumentationSessionManager:n}=await import(`./InstrumentationSession-DxXs0sCp.mjs`),{EvidenceGraphBridge:r}=await import(`./EvidenceGraphBridge-BIfgB7HP.mjs`),{InstrumentationHandlers:i}=await import(`./handlers-De5u62Ga2.mjs`),a=e.handlerDeps.hookPresetHandlers,o=e.handlerDeps.advancedHandlers,s=e.getDomainInstance(`evidenceGraph`);s||(s=new t,e.setDomainInstance(`evidenceGraph`,s));let c=e.getDomainInstance(`instrumentationSessionManager`);c||(c=new n,e.setDomainInstance(`instrumentationSessionManager`,c));let l=e.getDomainInstance(`evidenceGraphBridge`);return l||(l=new r(s),e.setDomainInstance(`evidenceGraphBridge`,l)),c.setEvidenceBridge(l),e.instrumentationHandlers||=new i(c,{hookPresetHandlers:a,advancedHandlers:o}),e.instrumentationHandlers}const u={kind:`domain-manifest`,version:1,domain:o,depKey:s,profiles:[`full`],ensure:l,workflowRule:{patterns:[/(hook|intercept|trace|instrument).*(session|unified|manage|all)/i,/(session|统一|会话).*(hook|拦截|追踪|仪器化|instrument)/i],priority:95,tools:[`instrumentation_session`,`instrumentation_operation`,`instrumentation_artifact`,`instrumentation_hook_preset`,`instrumentation_network_replay`],hint:`Instrumentation session: create session → attach hook presets / network replay → record artifacts → query artifacts → destroy when done`},registrations:c};export{u as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./EventBus-DgciURGg.mjs";import{t}from"./tool-builder-CI9914Tf.mjs";const n=[`byte`,`int8`,`int16`,`uint16`,`int32`,`uint32`,`int64`,`uint64`,`float`,`double`,`string`,`hex`,`pointer`],r=[`exact`,`unknown_initial`,`changed`,`unchanged`,`increased`,`decreased`,`greater_than`,`less_than`,`between`,`not_equal`],i=[t(`memory_first_scan`,e=>e.desc(`Start a new memory scan session.`).number(`pid`,`Target process ID`).string(`value`,`Value to search for (as string, e.g. "100", "3.14", "48 65 6C 6C 6F")`).enum(`valueType`,[...n],`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(`pid`,`value`,`valueType`)),t(`memory_next_scan`,e=>e.desc(`Narrow an existing scan session.`).string(`sessionId`,`Scan session ID`).enum(`mode`,[...r],`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`).enum(`valueType`,[...n],`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(`pid`,`valueType`)),t(`memory_pointer_scan`,e=>e.desc(`Find pointers to a target address.`).number(`pid`,`Target process ID`).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(`pid`,`targetAddress`).query().openWorld()),t(`memory_group_scan`,e=>e.desc(`Search for multiple values at known offsets simultaneously.`).number(`pid`,`Target process ID`).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:[...n],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(`pid`,`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`).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`).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(`pid`,`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`).string(`vtableAddress`,`Address of the vtable (hex)`).required(`pid`,`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`).string(`address1`,`First instance address (hex)`).string(`address2`,`Second instance address (hex)`).number(`size`,`Size to compare in bytes (default: 256)`).required(`pid`,`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 (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`).string(`address`,`Address to patch (hex)`).array(`bytes`,{type:`number`},`Byte values to write (e.g. [0x90, 0x90])`).required(`pid`,`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`).string(`address`,`Address to NOP (hex)`).number(`count`,`Number of bytes to NOP`).required(`pid`,`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`).number(`minSize`,`Minimum cave size in bytes (default: 16)`).required(`pid`).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`).string(`address`,`Address to write to (hex)`).string(`value`,`Value to write (as string)`).enum(`valueType`,[...n],`Data type of the value`).required(`pid`,`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 (action=freeze)`).string(`address`,`Address to freeze hex (action=freeze)`).string(`value`,`Value to maintain (action=freeze)`).enum(`valueType`,[...n],`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`).string(`address`,`Start address (hex)`).number(`size`,`Size to dump in bytes (default: 256)`).required(`pid`,`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`).number(`speed`,`Speed multiplier`).required(`action`,`pid`,`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`).number(`maxBlocks`,`Maximum blocks to enumerate per heap (default: 10000)`).required(`pid`).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`).required(`pid`).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`).required(`pid`).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`).string(`moduleBase`,`Module base address (hex, e.g. "0x7ff612340000")`).required(`pid`,`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`).string(`moduleBase`,`Module base address (hex)`).enum(`table`,[`imports`,`exports`,`both`],`Which table to parse`,{default:`both`}).required(`pid`,`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`).string(`moduleName`,`Module name filter (optional — scans all modules if omitted)`).required(`pid`).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`).required(`pid`).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`).required(`pid`).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`).required(`pid`).query())],a=`memory`,o=`memoryScanHandlers`,s=(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 c=null;async function l(e){let{MemoryScanHandlers:t}=await import(`./handlers.impl-CD2_kOcC.mjs`);c=e;let n=e;if(n[o])return n[o];let[r,i,a,l,u,d]=await Promise.all([import(`./MemoryScanner-BLYnMJy6.mjs`),import(`./MemoryScanSession-CaxAjZJf.mjs`),import(`./PointerChainEngine-5nF9eNlu.mjs`),import(`./StructureAnalyzer-A-WamfYE.mjs`),import(`./CodeInjector-BlgyqTOk.mjs`),import(`./MemoryController-BaqstM5w.mjs`)]);if(s){let[s,c,f,p,m]=await Promise.all([import(`./HardwareBreakpoint-OcJqNFVc.mjs`),import(`./Speedhack-l6s8L2Qw.mjs`),import(`./HeapAnalyzer-CqAxZzeS.mjs`),import(`./PEAnalyzer-DJyaJTQJ.mjs`),import(`./AntiCheatDetector-CGVGNfy5.mjs`)]);n[o]=new t(r.memoryScanner,i.scanSessionManager,a.pointerChainEngine,l.structureAnalyzer,s.hardwareBreakpointEngine,u.codeInjector,d.memoryController,c.speedhack,f.heapAnalyzer,p.peAnalyzer,m.antiCheatDetector,e.eventBus)}else n[o]=new t(r.memoryScanner,i.scanSessionManager,a.pointerChainEngine,l.structureAnalyzer,null,u.codeInjector,d.memoryController,null,null,null,null,e.eventBus);return n[o]}function u(t){return n=>{let r=n[o];return n=>{let i=n._meta,a;return i?.progressToken!==void 0&&c&&(a=e(c.eventBus,i.progressToken)),t(r,{...n,onProgress:a})}}}function d(e){let t=i.find(t=>t.name===e);if(!t)throw Error(`Memory tool not found: ${e}`);return t}const f=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`]),p=[{tool:d(`memory_first_scan`),domain:a,bind:u((e,t)=>e.handleFirstScan(t))},{tool:d(`memory_next_scan`),domain:a,bind:u((e,t)=>e.handleNextScan(t))},{tool:d(`memory_unknown_scan`),domain:a,bind:u((e,t)=>e.handleUnknownScan(t))},{tool:d(`memory_pointer_scan`),domain:a,bind:u((e,t)=>e.handlePointerScan(t))},{tool:d(`memory_group_scan`),domain:a,bind:u((e,t)=>e.handleGroupScan(t))},{tool:d(`memory_scan_session`),domain:a,bind:u((e,t)=>e.handleScanSessionDispatch(t))},{tool:d(`memory_pointer_chain`),domain:a,bind:u((e,t)=>e.handlePointerChainDispatch(t))},{tool:d(`memory_structure_analyze`),domain:a,bind:u((e,t)=>e.handleStructureAnalyze(t))},{tool:d(`memory_vtable_parse`),domain:a,bind:u((e,t)=>e.handleVtableParse(t))},{tool:d(`memory_structure_export_c`),domain:a,bind:u((e,t)=>e.handleStructureExportC(t))},{tool:d(`memory_structure_compare`),domain:a,bind:u((e,t)=>e.handleStructureCompare(t))},{tool:d(`memory_breakpoint`),domain:a,bind:u((e,t)=>e.handleBreakpointDispatch(t))},{tool:d(`memory_patch_bytes`),domain:a,bind:u((e,t)=>e.handlePatchBytes(t))},{tool:d(`memory_patch_nop`),domain:a,bind:u((e,t)=>e.handlePatchNop(t))},{tool:d(`memory_patch_undo`),domain:a,bind:u((e,t)=>e.handlePatchUndo(t))},{tool:d(`memory_code_caves`),domain:a,bind:u((e,t)=>e.handleCodeCaves(t))},{tool:d(`memory_write_value`),domain:a,bind:u((e,t)=>e.handleWriteValue(t))},{tool:d(`memory_freeze`),domain:a,bind:u((e,t)=>e.handleFreezeDispatch(t))},{tool:d(`memory_dump`),domain:a,bind:u((e,t)=>e.handleDump(t))},{tool:d(`memory_speedhack`),domain:a,bind:u((e,t)=>e.handleSpeedhackDispatch(t))},{tool:d(`memory_write_history`),domain:a,bind:u((e,t)=>e.handleWriteHistoryDispatch(t))},{tool:d(`memory_heap_enumerate`),domain:a,bind:u((e,t)=>e.handleHeapEnumerate(t))},{tool:d(`memory_heap_stats`),domain:a,bind:u((e,t)=>e.handleHeapStats(t))},{tool:d(`memory_heap_anomalies`),domain:a,bind:u((e,t)=>e.handleHeapAnomalies(t))},{tool:d(`memory_pe_headers`),domain:a,bind:u((e,t)=>e.handlePEHeaders(t))},{tool:d(`memory_pe_imports_exports`),domain:a,bind:u((e,t)=>e.handlePEImportsExports(t))},{tool:d(`memory_inline_hook_detect`),domain:a,bind:u((e,t)=>e.handleInlineHookDetect(t))},{tool:d(`memory_anticheat_detect`),domain:a,bind:u((e,t)=>e.handleAntiCheatDetect(t))},{tool:d(`memory_guard_pages`),domain:a,bind:u((e,t)=>e.handleGuardPages(t))},{tool:d(`memory_integrity_check`),domain:a,bind:u((e,t)=>e.handleIntegrityCheck(t))}],m={kind:`domain-manifest`,version:1,domain:a,depKey:o,profiles:[`full`],ensure:l,registrations:s?p:p.filter(e=>!f.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`,...s?[`memory_breakpoint`,`memory_speedhack`]:[],`memory_patch_bytes`,`memory_freeze`,`memory_dump`,...s?[`memory_speedhack`,`memory_heap_enumerate`,`memory_pe_headers`,`memory_anticheat_detect`]:[],`memory_write_history`],hint:s?`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{m as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./response-C7rKQst4.mjs";import{t}from"./registry-DUHIPE-v.mjs";import{n}from"./bind-helpers-BlAOQrFQ.mjs";const r=[{name:`skia_detect_renderer`,description:`Detect the active Skia renderer backend from the current page context.`,inputSchema:{type:`object`,properties:{},required:[]}},{name:`skia_extract_scene`,description:`Extract a lightweight Skia scene tree from the selected canvas.`,inputSchema:{type:`object`,properties:{canvasId:{type:`string`}},required:[]}},{name:`skia_correlate_objects`,description:`Correlate requested Skia node identifiers with the extracted scene tree.`,inputSchema:{type:`object`,properties:{canvasId:{type:`string`,description:`Optional canvas element ID to target for correlation.`},skiaNodeIds:{type:`array`,items:{type:`string`},description:`Optional list of Skia node identifiers to correlate.`}},required:[]}}],i=`skia-capture`,a=`skiaCaptureHandlers`,o=[`workflow`,`full`],s=n({domain:i,depKey:a,lookup:t(r),wrapResult:e,entries:[{tool:`skia_detect_renderer`,method:`handleSkiaDetectRenderer`},{tool:`skia_extract_scene`,method:`handleSkiaExtractScene`},{tool:`skia_correlate_objects`,method:`handleSkiaCorrelateObjects`}]});async function c(e){let{SkiaCaptureHandlers:t}=await import(`./handlers-D49r1-1P.mjs`),n=e.getDomainInstance(a);if(n)return n;let r=new t({pageController:e.pageController??null,eventBus:e.eventBus});return e.setDomainInstance(a,r),r}const l={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:o,registrations:s,ensure:c,workflowRule:{patterns:[/\b(skia|gpu|render(er)?|scene\s?(tree|graph)|draw\s?call|raster|paint|layer)\b/i,/skia.*(render|detect|scene)/i,/canvas.*skia/i,/gpu.*backend/i],priority:78,tools:[`skia_detect_renderer`,`skia_extract_scene`,`skia_correlate_objects`],hint:`Skia pipeline analysis: detect GPU backend → dump scene tree → correlate with JS objects.`},prerequisites:{skia_detect_renderer:[{condition:`Browser must be running with CDP attached`,fix:`Call browser_launch or browser_attach first`}],skia_extract_scene:[{condition:`Browser must be running with CDP attached`,fix:`Call browser_launch or browser_attach first`}],skia_correlate_objects:[{condition:`V8 heap snapshot should be available for robust matching`,fix:`Run v8_heap_snapshot_capture before correlation`}]},toolDependencies:[{from:`canvas`,to:`skia-capture`,relation:`uses`,weight:.9},{from:`skia_correlate_objects`,to:`v8_heap_snapshot_capture`,relation:`precedes`,weight:.6}]};export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./definitions-jXPaVy4P.mjs";const r=`coordination`,i=`coordinationHandlers`,a=t({domain:r,depKey:i,lookup:e(n),entries:[{tool:`create_task_handoff`,method:`handleCreateTaskHandoff`},{tool:`complete_task_handoff`,method:`handleCompleteTaskHandoff`},{tool:`get_task_context`,method:`handleGetTaskContext`},{tool:`append_session_insight`,method:`handleAppendSessionInsight`},{tool:`save_page_snapshot`,method:`handleSavePageSnapshot`},{tool:`restore_page_snapshot`,method:`handleRestorePageSnapshot`},{tool:`list_page_snapshots`,method:`handleListPageSnapshots`}]});async function o(e){let{CoordinationHandlers:t}=await import(`./coordination-BbijHEHH.mjs`);return e.coordinationHandlers||=new t(e),e.coordinationHandlers}const s={kind:`domain-manifest`,version:1,domain:r,depKey:i,profiles:[`full`],ensure:o,registrations:a};export{s as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{t as r}from"./definitions-BbxOUiP-.mjs";const i=`streaming`,a=`streamingHandlers`,o=t({domain:i,depKey:a,lookup:e(r),entries:[{tool:`ws_monitor`,method:`handleWsMonitorDispatch`},{tool:`ws_get_frames`,method:`handleWsGetFrames`},{tool:`ws_get_connections`,method:`handleWsGetConnections`},{tool:`sse_monitor_enable`,method:`handleSseMonitorEnable`},{tool:`sse_get_events`,method:`handleSseGetEvents`}]});async function s(e){let{StreamingToolHandlers:t}=await import(`./streaming-CTX58tbb.mjs`);return await n(e),e.streamingHandlers||=new t(e.collector),e.streamingHandlers}const c={kind:`domain-manifest`,version:1,domain:i,depKey:a,profiles:[`workflow`,`full`],ensure:s,registrations:o};export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./registry-DUHIPE-v.mjs";import{n as t}from"./bind-helpers-BlAOQrFQ.mjs";import{t as n}from"./ensure-browser-core-Buls24LQ.mjs";import{n as r,t as i}from"./definitions-CoQFbggH.mjs";const a=`browser`,o=`browserHandlers`,s=t({domain:a,depKey:o,lookup:e([...i,...r]),entries:[{tool:`get_detailed_data`,method:`handleGetDetailedData`},{tool:`browser_attach`,method:`handleBrowserAttach`},{tool:`browser_list_tabs`,method:`handleBrowserListTabs`},{tool:`browser_list_cdp_targets`,method:`handleBrowserListCdpTargets`},{tool:`browser_select_tab`,method:`handleBrowserSelectTab`},{tool:`browser_attach_cdp_target`,method:`handleBrowserAttachCdpTarget`},{tool:`browser_detach_cdp_target`,method:`handleBrowserDetachCdpTarget`},{tool:`browser_evaluate_cdp_target`,method:`handleBrowserEvaluateCdpTarget`},{tool:`browser_launch`,method:`handleBrowserLaunch`},{tool:`browser_close`,method:`handleBrowserClose`},{tool:`browser_status`,method:`handleBrowserStatus`},{tool:`page_navigate`,method:`handlePageNavigate`},{tool:`page_reload`,method:`handlePageReload`},{tool:`page_back`,method:`handlePageBack`},{tool:`page_forward`,method:`handlePageForward`},{tool:`page_list_frames`,method:`handlePageListFrames`},{tool:`page_click`,method:`handlePageClick`},{tool:`page_type`,method:`handlePageType`},{tool:`page_upload_files`,method:`handlePageUploadFiles`},{tool:`page_select`,method:`handlePageSelect`},{tool:`page_hover`,method:`handlePageHover`},{tool:`page_scroll`,method:`handlePageScroll`},{tool:`page_wait_for_selector`,method:`handlePageWaitForSelector`},{tool:`page_evaluate`,method:`handlePageEvaluate`},{tool:`page_screenshot`,method:`handlePageScreenshot`},{tool:`get_all_scripts`,method:`handleGetAllScripts`},{tool:`get_script_source`,method:`handleGetScriptSource`},{tool:`console_monitor`,method:`handleConsoleMonitor`},{tool:`console_get_logs`,method:`handleConsoleGetLogs`},{tool:`console_execute`,method:`handleConsoleExecute`},{tool:`page_inject_script`,method:`handlePageInjectScript`},{tool:`page_cookies`,method:`handlePageCookiesDispatch`},{tool:`page_set_viewport`,method:`handlePageSetViewport`},{tool:`page_emulate_device`,method:`handlePageEmulateDevice`},{tool:`page_local_storage`,method:`handlePageLocalStorageDispatch`},{tool:`page_press_key`,method:`handlePagePressKey`},{tool:`captcha_detect`,method:`handleCaptchaDetect`},{tool:`captcha_wait`,method:`handleCaptchaWait`},{tool:`captcha_config`,method:`handleCaptchaConfig`},{tool:`stealth_inject`,method:`handleStealthInject`},{tool:`stealth_set_user_agent`,method:`handleStealthSetUserAgent`},{tool:`stealth_configure_jitter`,method:`handleStealthConfigureJitter`},{tool:`stealth_generate_fingerprint`,method:`handleStealthGenerateFingerprint`},{tool:`stealth_verify`,method:`handleStealthVerify`},{tool:`camoufox_geolocation`,method:`handleCamoufoxGeolocation`},{tool:`camoufox_server`,method:`handleCamoufoxServerDispatch`},{tool:`framework_state_extract`,method:`handleFrameworkStateExtract`},{tool:`indexeddb_dump`,method:`handleIndexedDBDump`},{tool:`js_heap_search`,method:`handleJSHeapSearch`},{tool:`tab_workflow`,method:`handleTabWorkflow`},{tool:`browser_codegen_start`,method:`handleBrowserCodegenStart`},{tool:`browser_codegen_stop`,method:`handleBrowserCodegenStop`},{tool:`human_mouse`,method:`handleHumanMouse`},{tool:`human_scroll`,method:`handleHumanScroll`},{tool:`human_typing`,method:`handleHumanTyping`},{tool:`captcha_solver_capabilities`,method:`handleCaptchaSolverCapabilities`},{tool:`captcha_vision_solve`,method:`handleCaptchaVisionSolve`},{tool:`widget_challenge_solve`,method:`handleWidgetChallengeSolve`},{tool:`browser_jsdom_parse`,method:`handleJsdomParse`},{tool:`browser_jsdom_query`,method:`handleJsdomQuery`},{tool:`browser_jsdom_execute`,method:`handleJsdomExecute`},{tool:`browser_jsdom_serialize`,method:`handleJsdomSerialize`},{tool:`browser_jsdom_cookies`,method:`handleJsdomCookies`}]});async function c(e){let{BrowserToolHandlers:t}=await import(`./browser-C4Le3xqA.mjs`);return await n(e),e.browserHandlers||=new t(e.collector,e.pageController,e.scriptManager,e.consoleMonitor,e.eventBus),e.browserHandlers}const l={kind:`domain-manifest`,version:1,domain:a,depKey:o,profiles:[`workflow`,`full`],ensure:c,workflowRule:{patterns:[/(browser|page|navigate|screenshot|click|type|scrape)/i,/(浏览器|页面|导航|截图|点击|输入|爬取)/i],priority:90,tools:[`page_navigate`,`page_evaluate`,`browser_jsdom_parse`,`console_get_logs`,`page_click`,`page_type`,`page_screenshot`],hint:`Browser automation workflow: bootstrap browser/page state -> inspect page state -> interact -> capture visual evidence only when needed`},prerequisites:{page_navigate:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_click:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_type:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_upload_files:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_screenshot:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_evaluate:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_hover:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_back:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_forward:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_reload:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}],page_scroll:[{condition:`Browser must be launched`,fix:`Call browser_launch or browser_attach first`}]},registrations:s};export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e,t){if(t.length===0)return!0;let n=t.split(`*`).filter(e=>e.length>0);if(n.length===0)return!0;let r=0;for(let t of n){let n=e.indexOf(t,r);if(n===-1)return!1;r=n+t.length}return!0}export{e as t};
|